Elemszámozási rendszer és alakfüggvény-könyvtár¶
Az Alakfüggvények és végeselemes közelítés részben bevezetett \(N_\alpha^e(\boldsymbol{r})\) alakfüggvény minden elemtípushoz sajátos alakú. Ez a fejezet a FrontISTR által biztosított elemcsoportokat háromjegyű elemtípus-számok segítségével osztályozza, és bemutatja az alakfüggvény-könyvtár interfészét, amely az egyes elemek egységes kezelését teszi lehetővé. A háromdimenziós tömör elemek konkrét természetes koordináta-rendszereit és alakfüggvényeit, valamint a másodrendű elemek oldalközépi csomópontjainak sorrendkonverzióját a Háromdimenziós tömör elemek alakfüggvényei rész tárgyalja, az elemtípusok kiválasztásához pedig az Elemtár (funkciók) ad útmutatást.
Elemosztályozás és elnevezési szabályok¶
A FrontISTR elemtípusait háromjegyű számok azonosítják. Az egyes számjegyek jelentése a következő.
- Első számjegy (elemcsoport): 1 = vonalelem/rúdelem, 2 = síkelem, 3 = tömör elem, 5 = interfészelem, 6 = gerendaelem, 7 = héjelem.
- Második számjegy (alapalak): az elemcsoporton belüli geometriai alakot különbözteti meg (háromszög, négyszög, tetraéder, prizma vagy hexaéder).
- Harmadik számjegy (interpolációs rend): 1 = elsőrendű (csak sarokcsomópontok), 2 = másodrendű (oldalközépi csomópontokkal). Kivételként a kétcsomópontos rúdelem száma 301.
A rendelkezésre álló elemek elemcsoportonként az alábbi táblázatban szerepelnek.
| Elemcsoport | Elemtípus | Csomópontok száma | Leírás |
|---|---|---|---|
| Vonalelem | 111 | 2 | 2 csomópontos kapcsolóelem (feszültséganalízishez nem használható) |
| 112 | 3 | 3 csomópontos kapcsolóelem (feszültséganalízishez nem használható) | |
| Síkelem | 231 | 3 | 3 csomópontos lineáris háromszögelem |
| 232 | 6 | 6 csomópontos másodrendű háromszögelem | |
| 241 | 4 | 4 csomópontos lineáris négyszögelem | |
| 242 | 8 | 8 csomópontos másodrendű négyszögelem (Serendipity-család) | |
| Tömör elem | 301 | 2 | 2 csomópontos rúdelem |
| 341 | 4 | 4 csomópontos lineáris tetraéderelem | |
| 342 | 10 | 10 csomópontos másodrendű tetraéderelem | |
| 351 | 6 | 6 csomópontos lineáris prizmaelem | |
| 352 | 15 | 15 csomópontos másodrendű prizmaelem | |
| 361 | 8 | 8 csomópontos lineáris hexaéderelem | |
| 362 | 20 | 20 csomópontos másodrendű hexaéderelem (Serendipity-család) | |
| Interfészelem | 541 | 4×2 | 4 csomópontos lineáris négyszögfelületi elem (feszültséganalízishez nem használható) |
| 542 | 8×2 | 8 csomópontos másodrendű négyszögfelületi elem (feszültséganalízishez nem használható) | |
| Gerendaelem | 611 | 2 | 2 csomópontos Bernoulli–Euler-gerendaelem (csomópontonként 6 szabadságfok) |
| 641 | 2×2 | 2 csomópontos Bernoulli–Euler-gerendaelem (csomópontonként 3 szabadságfok, vegyes szabadságfokokhoz) | |
| Héjelem | 731 | 3 | MITC3 háromszög-héjelem (csomópontonként 6 szabadságfok) |
| 741 | 4 | MITC4 négyszög-héjelem (csomópontonként 6 szabadságfok) | |
| 743 | 9 | MITC9 négyszög-héjelem (csomópontonként 6 szabadságfok) | |
| 761 | 3×2 | MITC3 háromszög-héjelem (csomópontonként 3 szabadságfok, vegyes szabadságfokokhoz) | |
| 781 | 4×2 | MITC4 négyszög-héjelem (csomópontonként 3 szabadságfok, vegyes szabadságfokokhoz) |
A 361-es lineáris hexaéderelem több megfogalmazással rendelkezik (teljes integráció, inkompatibilis módus, B-bar és F-bar), amelyek az analízisvezérlésben választhatók ki. Részletekért lásd a Fejlett elemmegfogalmazások részt.
A 641-es gerendaelem és a 761/781-es héjelemek olyan megfogalmazások, amelyek azonos csomópontoknál 6 szabadságfokú szerkezeti elemeket kapcsolnak 3 szabadságfokú tömör elemekhez; egy szerkezeti csomópontot két 3 szabadságfokú csomópont képvisel. Maguk a megfogalmazások azonosak a megfelelő 6 szabadságfokú változatokkal (611, 731 és 741).
Alakfüggvény-könyvtár¶
Az elemszámítási rutinok (a merevségi mátrix és a belsőerő-vektor összeállítása) nem rendelkeznek külön rutinnal minden elemtípushoz. Ehelyett az alakfüggvény-könyvtárat egy egységes interfészen keresztül hívják, amely argumentumként az elemtípus fetype számát kapja. Az elementInfo modul (fistr1/src/lib/element/element.f90) a következő függvényeket biztosítja.
NumOfQuadPoints(fetype): visszaadja az elemtípus \(n_q\) integrációs pontjainak számát.getQuadPoint(fetype, np, pos): visszaadja az \(i\). integrációs pont \(\boldsymbol{r}_i\) természetes koordinátáit.getWeight(fetype, np): visszaadja az \(i\). integrációs pont \(w_i\) súlyát.getShapeFunc(fetype, r, N): visszaadja az \(N_\alpha^e(\boldsymbol{r})\) alakfüggvény-értékeket a \(\boldsymbol{r}\) természetes koordinátáknál.getShapeDeriv(fetype, r, dN): visszaadja az alakfüggvények természetes koordináták szerinti \(\partial N_\alpha^e/\partial \boldsymbol{r}\) deriváltjait.getGlobalDeriv(fetype, n_e, r, X^e, J, dN_x): az elem \(\boldsymbol{X}^e\) csomóponti koordinátáiból visszaadja a fizikai koordináták szerinti \(\partial N_\alpha^e/\partial \boldsymbol{x}\) deriváltakat és a \(J\) Jacobi-determinánst.getNumberOfSubface(fetype),getSubFace(fetype, k, ...): visszaadja az elem határfelületeinek számát és az egyes felületeket alkotó csomópontok sorszámait. Felületi terhelések és érintkezési felületek létrehozására használatosak.
Minden függvény belsőleg az elemtípus száma szerint ágazik el, és az egyes elemtípusokhoz biztosított alacsonyabb szintű modulok (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) alakfüggvény- és alakfüggvény-derivált alprogramjait hívja. Az integrációs pontok koordinátáinak és súlyainak numerikus táblázatai a quadrature.f90 fájlban vannak összefogva. Új elemtípus hozzáadásához valósítsa meg a megfelelő alacsonyabb szintű modult, és adja hozzá az ahhoz tartozó elágazásokat az elementInfo minden függvényéhez.
Oldalközépi csomópontok sorrendjének konverziója másodrendű háromszögelemeknél¶
A 232-es másodrendű háromszögelem esetén az oldalközépi csomópontok sorrendje eltér a HEC-MW hálóbemeneti formátum (amely előbb az elem körüli sarokcsomópontokat, majd az 1-2, 2-3, … élek menti oldalközépi csomópontokat rendezi) és a FrontISTR belső formátuma között, amelyet az elemtár alakfüggvényei feltételeznek. A két formátum közötti eltérést a háló betöltése után közvetlenül a hecmw2fstr_mesh_conv (fistr1/src/common/hecmw2fstr_mesh_conv.f90 és hecmw2fstr_connect_conv.c) oldja fel: a Table232 konverziós táblázat szerint a hat csomópontot \(\{1,2,3,6,4,5\}\) sorrendbe rendezi át. Mivel a konverzió közvetlenül az elemkapcsolatokat tároló tömbön történik, az elemtár minden későbbi hívása a FrontISTR belső csomópontsorrendjét használja. Az eredmények kiírásakor az inverz fstr2hecmw_mesh_conv konverzió visszaállítja a HEC-MW formátumot az írás előtt, így a felhasználónak mind bemenetnél, mind kimenetnél csak a HEC-MW formátumot kell ismernie.
A 342-es (tetraéder) és 352-es (prizma) másodrendű háromdimenziós tömör elemeknél hasonló automatikus konverziók vannak, míg a 362-es (másodrendű hexaéder) esetén nincs konverzió. Kezelésüket lásd a Háromdimenziós tömör elemek alakfüggvényei részben. A 242-es másodrendű síkbeli négyszögelemnél és az 542-es interfészelemnél nincs konverzió, mert az oldalközépi csomópontok sorrendje a HEC-MW bemeneti és a belső formátumban azonos.
Kapcsolódó témák¶
- Alakfüggvények és végeselemes közelítés — Az alakfüggvények matematikai definíciója
- Numerikus integráció — Integrációs pontok, súlyok és az elemintegrálás közelítő alakja
- Háromdimenziós tömör elemek alakfüggvényei — Kontinuum tömör elemek konkrét természetes koordinátái és alakfüggvényei
- Fejlett elemmegfogalmazások — B-bar / F-bar / inkompatibilis módus / héj / gerenda
- Elemtár (funkciók) — Elemtípus-lehetőségek és kiválasztási útmutató