Kihagyás

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

AI-assisted translation May contain errors Official docs Status