Keri sisuni

Elementide nummerdamisskeem ja kujufunktsioonide teek

Jaotises Kujufunktsioonid ja lõplike elementide lähendus toodud kujufunktsioonil \(N_\alpha^e(\boldsymbol{r})\) on iga elemenditüübi jaoks konkreetne kuju. Selles peatükis klassifitseeritakse FrontISTR-i elemendirühmad kolmekohaliste elemenditüübi numbrite abil ja esitatakse kujufunktsioonide teegi liides, mis võimaldab kõiki elemente ühtmoodi käsitleda. Kolmemõõtmeliste tahkiselementide loomulikke koordinaadistikke ja kujufunktsioone ning ruutinterpolatsiooniga elementide külgede kesksõlmede järjestuse teisendust käsitletakse jaotises Kolmemõõtmeliste tahkiselementide kujufunktsioonid; elemenditüübi valimise juhiseid vt Elementide teegist (funktsioonid).

Elementide klassifikatsioon ja nummerdamisreeglid

FrontISTR-i elemenditüübid tähistatakse kolmekohaliste numbritega. Iga numbri tähendus on järgmine.

  • Esimene number (elemendirühm): 1 = joonelement/sõrestik, 2 = tasandelement, 3 = tahkiselement, 5 = liideseelement, 6 = talaelement, 7 = koorikelement.
  • Teine number (põhikuju): eristab elemendirühma geomeetrilist kuju (kolmnurk, nelinurk, tetraeeder, prisma või heksaeeder).
  • Kolmas number (interpolatsiooni järk): 1 = esimene järk (ainult nurgasõlmed), 2 = teine järk (sh külgede kesksõlmed). Erandina on kahesõlmelise sõrestikelemendi number 301.

Saadaolevad elemendid on elemendirühmade kaupa toodud järgmises tabelis.

Elemendirühm Elemenditüüp Sõlmede arv Kirjeldus
Joonelement 111 2 2-sõlmeline ühenduselement (pingeanalüüsis pole saadaval)
112 3 3-sõlmeline ühenduselement (pingeanalüüsis pole saadaval)
Tasandelement 231 3 3-sõlmeline lineaarne kolmnurkelement
232 6 6-sõlmeline ruutinterpolatsiooniga kolmnurkelement
241 4 4-sõlmeline lineaarne nelinurkelement
242 8 8-sõlmeline ruutinterpolatsiooniga nelinurkelement (Serendipity perekond)
Tahkiselement 301 2 2-sõlmeline sõrestikelement
341 4 4-sõlmeline lineaarne tetraeedriline element
342 10 10-sõlmeline ruutinterpolatsiooniga tetraeedriline element
351 6 6-sõlmeline lineaarne prismaelement
352 15 15-sõlmeline ruutinterpolatsiooniga prismaelement
361 8 8-sõlmeline lineaarne heksaeedriline element
362 20 20-sõlmeline ruutinterpolatsiooniga heksaeedriline element (Serendipity perekond)
Liideseelement 541 4×2 4-sõlmeline lineaarne nelinurkse tahuga element (pingeanalüüsis pole saadaval)
542 8×2 8-sõlmeline ruutinterpolatsiooniga nelinurkse tahuga element (pingeanalüüsis pole saadaval)
Talaelement 611 2 2-sõlmeline Bernoulli-Euleri talaelement (6 vabadusastet sõlme kohta)
641 2×2 2-sõlmeline Bernoulli-Euleri talaelement (3 vabadusastet sõlme kohta, segavabadusastmete jaoks)
Koorikelement 731 3 MITC3 kolmnurkne koorikelement (6 vabadusastet sõlme kohta)
741 4 MITC4 nelinurkne koorikelement (6 vabadusastet sõlme kohta)
743 9 MITC9 nelinurkne koorikelement (6 vabadusastet sõlme kohta)
761 3×2 MITC3 kolmnurkne koorikelement (3 vabadusastet sõlme kohta, segavabadusastmete jaoks)
781 4×2 MITC4 nelinurkne koorikelement (3 vabadusastet sõlme kohta, segavabadusastmete jaoks)

Lineaarsel heksaeedrilisel elemendil 361 on mitu formulatsiooni (täielik integreerimine, ühildumatu mood, B-bar ja F-bar), mis valitakse analüüsi juhtandmetes. Üksikasju vt Täiustatud elemendiformulatsioonid.

Talaelement 641 ja koorikelemendid 761/781 on formulatsioonid, millega ühendatakse 6 vabadusastmega struktuurielemendid samades sõlmedes 3 vabadusastmega tahkiselementidega; üks struktuurisõlm esitatakse kahe 3-vabadusastmelise sõlmena. Formulatsioonid ise on identsed vastavate 6-vabadusastmeliste versioonidega (611, 731 ja 741).

Kujufunktsioonide teek

Elemendiarvutuse protseduuridel (jäikusmaatriksi ja sisejõuvektori koostamine) ei ole iga elemenditüübi jaoks eraldi protseduuri. Selle asemel kutsutakse kujufunktsioonide teeki ühtse liidese kaudu, mille argumendiks on elemenditüübi number fetype. Moodul elementInfo (fistr1/src/lib/element/element.f90) pakub järgmisi funktsioone.

  • NumOfQuadPoints(fetype): tagastab elemenditüübi integreerimispunktide arvu \(n_q\).
  • getQuadPoint(fetype, np, pos): tagastab integreerimispunkti \(i\) loomulikud koordinaadid \(\boldsymbol{r}_i\).
  • getWeight(fetype, np): tagastab integreerimispunkti \(i\) kaalu \(w_i\).
  • getShapeFunc(fetype, r, N): tagastab kujufunktsioonide väärtused \(N_\alpha^e(\boldsymbol{r})\) loomulikes koordinaatides \(\boldsymbol{r}\).
  • getShapeDeriv(fetype, r, dN): tagastab kujufunktsioonide loomulike koordinaatide tuletised \(\partial N_\alpha^e/\partial \boldsymbol{r}\).
  • getGlobalDeriv(fetype, n_e, r, X^e, J, dN_x): elemendi sõlmekoordinaatide \(\boldsymbol{X}^e\) põhjal tagastab füüsiliste koordinaatide tuletised \(\partial N_\alpha^e/\partial \boldsymbol{x}\) ja Jacobi determinandi \(J\).
  • getNumberOfSubface(fetype), getSubFace(fetype, k, ...): tagastavad elemendi piirtahkude arvu ja iga tahu moodustavate sõlmede numbrid. Neid kasutatakse pinnakoormuste ja kontaktpindade koostamiseks.

Iga funktsioon hargneb sisemiselt elemenditüübi numbri järgi ja kutsub vastava elemenditüübi madalama taseme moodulis olevaid kujufunktsiooni ning selle tuletise alamprogramme (tet4n.f90, tet10n.f90, prism6n.f90, prism15n.f90, hex8n.f90, hex20n.f90, tri3n.f90, tri6n.f90, quad4n.f90, quad8n.f90, quad9n.f90, line2n.f90, line3n.f90). Integreerimispunktide koordinaatide ja kaalude arvutabelid on koondatud faili quadrature.f90. Uue elemenditüübi lisamiseks tuleb teostada vastav madalama taseme moodul ja lisada selle harud igasse elementInfo funktsiooni.

Külgede kesksõlmede järjestuse teisendus ruutinterpolatsiooniga kolmnurkelementidel

Ruutinterpolatsiooniga kolmnurkelemendi 232 külgede kesksõlmede järjestus erineb HEC-MW võrgu sisendvormingus (nurgasõlmed järjestatakse ümber elemendi ja seejärel kesksõlmed mööda servi 1-2, 2-3, …) FrontISTR-i sisemisest vormingust, mida eeldavad elemenditeegi kujufunktsioonid. Kahe vormingu erinevus lahendatakse kohe pärast võrgu laadimist funktsiooniga hecmw2fstr_mesh_conv (fistr1/src/common/hecmw2fstr_mesh_conv.f90 ja hecmw2fstr_connect_conv.c), mis järjestab kuus sõlme teisendustabeli Table232 järgi kujule \(\{1,2,3,6,4,5\}\). Kuna teisendus tehakse otse elemendi ühenduvust salvestavas massiivis, kasutavad kõik hilisemad elemenditeegi kutsed FrontISTR-i sisemist sõlmejärjestust. Tulemuste väljastamisel taastab pöördteisendus fstr2hecmw_mesh_conv enne kirjutamist HEC-MW vormingu, seega peab kasutaja nii sisendis kui väljundis teadma ainult HEC-MW vormingut.

Ruutinterpolatsiooniga kolmemõõtmelistel tahkiselementidel 342 (tetraeeder) ja 352 (prisma) on sarnased automaatsed teisendused, elemendil 362 (ruutinterpolatsiooniga heksaeeder) teisendust ei ole. Nende käsitlust vt Kolmemõõtmeliste tahkiselementide kujufunktsioonidest. Ruutinterpolatsiooniga tasandilisel nelinurkelemendil 242 ja liideseelemendil 542 teisendust ei tehta, sest külgede kesksõlmede järjestus on HEC-MW sisendvormingus ja sisemises vormingus sama.

Seotud teemad

AI-assisted translation May contain errors Official docs Status