Gå till innehållet

Elementnumreringssystem och formfunktionsbibliotek

Formfunktionen \(N_\alpha^e(\boldsymbol{r})\) som introducerades i Formfunktioner och finita element-approximation har en specifik form för varje elementtyp. Detta kapitel klassificerar elementgrupperna som FrontISTR tillhandahåller med tresiffriga elementtypsnummer och visar gränssnittet till formfunktionsbiblioteket för enhetlig hantering av varje element. De specifika naturliga koordinatsystemen och formfunktionerna för tredimensionella solida element samt omordningen av mellannoder för kvadratiska element behandlas i Formfunktioner för tredimensionella solida element, medan vägledning för val av elementtyp finns i Elementbibliotek (funktioner).

Elementklassificering och namngivningsregler

FrontISTR-elementtyper identifieras med tresiffriga nummer. Betydelsen av varje siffra är följande.

  • Första siffran (elementgrupp): 1 = linjeelement/fackverk, 2 = planelement, 3 = solitt element, 5 = gränssnittselement, 6 = balkelement, 7 = skalelement.
  • Andra siffran (grundform): skiljer mellan geometriska former inom elementgruppen (triangel, fyrhörning, tetraeder, prisma eller hexaeder).
  • Tredje siffran (interpolationsordning): 1 = första ordningen (endast hörnnoder), 2 = andra ordningen (inklusive mellannoder). Som undantag har det tvånodiga fackverkselementet nummer 301.

De tillhandahållna elementen listas per elementgrupp i tabellen nedan.

Elementgrupp Elementtyp Antal noder Beskrivning
Linjeelement 111 2 2-nodigt länkelement (inte tillgängligt för spänningsanalys)
112 3 3-nodigt länkelement (inte tillgängligt för spänningsanalys)
Planelement 231 3 3-nodigt linjärt triangulärt element
232 6 6-nodigt kvadratiskt triangulärt element
241 4 4-nodigt linjärt fyrhörningselement
242 8 8-nodigt kvadratiskt fyrhörningselement (Serendipity-familjen)
Solitt element 301 2 2-nodigt fackverkselement
341 4 4-nodigt linjärt tetraederelement
342 10 10-nodigt kvadratiskt tetraederelement
351 6 6-nodigt linjärt prismaelement
352 15 15-nodigt kvadratiskt prismaelement
361 8 8-nodigt linjärt hexaederelement
362 20 20-nodigt kvadratiskt hexaederelement (Serendipity-familjen)
Gränssnittselement 541 4×2 4-nodigt linjärt fyrhörningsytelement (inte tillgängligt för spänningsanalys)
542 8×2 8-nodigt kvadratiskt fyrhörningsytelement (inte tillgängligt för spänningsanalys)
Balkelement 611 2 2-nodigt Bernoulli-Euler-balkelement (6 frihetsgrader per nod)
641 2×2 2-nodigt Bernoulli-Euler-balkelement (3 frihetsgrader per nod, för blandade frihetsgrader)
Skalelement 731 3 MITC3 triangulärt skalelement (6 frihetsgrader per nod)
741 4 MITC4 fyrhörningsskalelement (6 frihetsgrader per nod)
743 9 MITC9 fyrhörningsskalelement (6 frihetsgrader per nod)
761 3×2 MITC3 triangulärt skalelement (3 frihetsgrader per nod, för blandade frihetsgrader)
781 4×2 MITC4 fyrhörningsskalelement (3 frihetsgrader per nod, för blandade frihetsgrader)

Det linjära hexaederelementet 361 har flera formuleringar (full integration, inkompatibelt mod, B-bar och F-bar), vilka väljs via analysstyrningen. Se Avancerade elementformuleringar för detaljer.

Balkelement 641 och skalelementen 761/781 är formuleringar för att ansluta strukturelement med 6 frihetsgrader till solida element med 3 frihetsgrader vid samma noder; en strukturell nod representeras av två noder med 3 frihetsgrader. Själva formuleringarna är identiska med motsvarande versioner med 6 frihetsgrader (611, 731 och 741).

Formfunktionsbibliotek

Rutiner för elementberäkning (konstruktion av styvhetsmatris och inre kraftvektor) har inte separata rutiner för varje elementtyp. I stället anropar de formfunktionsbiblioteket genom ett enhetligt gränssnitt som tar elementtypsnumret fetype som argument. Modulen elementInfo (fistr1/src/lib/element/element.f90) tillhandahåller följande funktioner.

  • NumOfQuadPoints(fetype): returnerar antalet integrationspunkter \(n_q\) för elementtypen.
  • getQuadPoint(fetype, np, pos): returnerar de naturliga koordinaterna \(\boldsymbol{r}_i\) för integrationspunkt \(i\).
  • getWeight(fetype, np): returnerar vikten \(w_i\) för integrationspunkt \(i\).
  • getShapeFunc(fetype, r, N): returnerar formfunktionsvärdena \(N_\alpha^e(\boldsymbol{r})\) vid de naturliga koordinaterna \(\boldsymbol{r}\).
  • getShapeDeriv(fetype, r, dN): returnerar formfunktionernas derivator med avseende på naturliga koordinater, \(\partial N_\alpha^e/\partial \boldsymbol{r}\).
  • getGlobalDeriv(fetype, n_e, r, X^e, J, dN_x): givet elementets nodkoordinater \(\boldsymbol{X}^e\) returneras derivatorna med avseende på de fysikaliska koordinaterna \(\partial N_\alpha^e/\partial \boldsymbol{x}\) och Jacobideterminanten \(J\).
  • getNumberOfSubface(fetype), getSubFace(fetype, k, ...): returnerar antalet begränsningsytor för elementet och nodnumren som utgör varje yta. De används för att konstruera ytlaster och kontaktytor.

Varje funktion förgrenar sig internt efter elementtypsnumret och anropar underrutinerna för formfunktion och formfunktionsderivata i de underliggande moduler som finns för respektive elementtyp (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). Numeriska tabeller över integrationspunkternas koordinater och vikter är samlade i quadrature.f90. För att lägga till en ny elementtyp implementeras motsvarande underliggande modul och förgreningar för den läggs till i varje funktion i elementInfo.

Omordning av mellannoder för kvadratiska triangulära element

För det kvadratiska triangulära elementet 232 skiljer sig ordningen för mellannoder mellan HEC-MW:s nätindataformat (där hörnnoderna ordnas runt elementet och därefter mellannoderna längs kanterna 1-2, 2-3, …) och FrontISTR:s interna format som formfunktionerna i elementbiblioteket förutsätter. Skillnaden mellan formaten löses omedelbart efter att nätet lästs in av hecmw2fstr_mesh_conv (fistr1/src/common/hecmw2fstr_mesh_conv.f90 och hecmw2fstr_connect_conv.c), som omordnar de sex noderna till \(\{1,2,3,6,4,5\}\) enligt konverteringstabellen Table232. Eftersom konverteringen görs direkt i den array som lagrar elementets konnektivitet använder alla efterföljande anrop till elementbiblioteket FrontISTR:s interna nodordning. Vid resultatutmatning återställer den inversa konverteringen fstr2hecmw_mesh_conv HEC-MW-formatet före skrivning, så användaren behöver endast känna till HEC-MW-formatet för både in- och utdata.

De kvadratiska tredimensionella solida elementen 342 (tetraeder) och 352 (prisma) har liknande automatiska konverteringar, medan 362 (kvadratisk hexaeder) inte har någon konvertering. Se Formfunktioner för tredimensionella solida element för behandlingen av dessa. För det kvadratiska plana fyrhörningselementet 242 och gränssnittselementet 542 görs ingen konvertering eftersom ordningen för mellannoder är densamma i HEC-MW:s indataformat och det interna formatet.

Relaterade ämnen

AI-assisted translation May contain errors Official docs Status