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¶
- Kujufunktsioonid ja lõplike elementide lähendus — kujufunktsioonide matemaatiline määratlus
- Numbriline integreerimine — integreerimispunktid, kaalud ja elemendiintegraali lähenduskuju
- Kolmemõõtmeliste tahkiselementide kujufunktsioonid — kontiinumi tahkiselementide loomulikud koordinaadid ja kujufunktsioonid
- Täiustatud elemendiformulatsioonid — B-bar / F-bar / ühildumatu mood / koorik / tala
- Elementide teek (funktsioonid) — elemenditüüpide valikud ja valikujuhised