Elementnummeringssysteem en bibliotheek met vormfuncties¶
De vormfunctie \(N_\alpha^e(\boldsymbol{r})\) die is geïntroduceerd in Vormfuncties en eindige-elementenbenadering heeft voor elk elementtype een specifieke vorm. Dit hoofdstuk classificeert de door FrontISTR aangeboden elementgroepen aan de hand van driecijferige elementtypenummers en beschrijft de interface van de vormfunctiebibliotheek waarmee elk element uniform kan worden behandeld. De specifieke natuurlijke coördinatenstelsels en vormfuncties van driedimensionale solide elementen, evenals de omzetting van de volgorde van middenknooppunten voor kwadratische elementen, worden behandeld in Vormfuncties voor 3D-solide elementen; richtlijnen voor de keuze van elementtypen staan in Elementbibliotheek (functies).
Elementclassificatie en naamgevingsregels¶
FrontISTR-elementtypen worden aangeduid met driecijferige nummers. De betekenis van elk cijfer is als volgt.
- Eerste cijfer (elementgroep): 1 = lijnelement/vakwerk, 2 = vlak element, 3 = solide element, 5 = interface-element, 6 = balkelement, 7 = schaalelement.
- Tweede cijfer (basisvorm): onderscheidt de geometrische vorm binnen de elementgroep (driehoek, vierhoek, tetraëder, prisma of hexaëder).
- Derde cijfer (interpolatieorde): 1 = eerste orde (alleen hoekknooppunten), 2 = tweede orde (inclusief middenknooppunten). Als uitzondering heeft het tweeknooppunts vakwerkelement nummer 301.
De beschikbare elementen worden per elementgroep in de onderstaande tabel weergegeven.
| Elementgroep | Elementtype | Aantal knooppunten | Beschrijving |
|---|---|---|---|
| Lijnelement | 111 | 2 | 2-knooppunts verbindingselement (niet beschikbaar voor spanningsanalyse) |
| 112 | 3 | 3-knooppunts verbindingselement (niet beschikbaar voor spanningsanalyse) | |
| Vlak element | 231 | 3 | 3-knooppunts lineair driehoekselement |
| 232 | 6 | 6-knooppunts kwadratisch driehoekselement | |
| 241 | 4 | 4-knooppunts lineair vierhoekselement | |
| 242 | 8 | 8-knooppunts kwadratisch vierhoekselement (Serendipity-familie) | |
| Solide element | 301 | 2 | 2-knooppunts vakwerkelement |
| 341 | 4 | 4-knooppunts lineair tetraëderelement | |
| 342 | 10 | 10-knooppunts kwadratisch tetraëderelement | |
| 351 | 6 | 6-knooppunts lineair prisma-element | |
| 352 | 15 | 15-knooppunts kwadratisch prisma-element | |
| 361 | 8 | 8-knooppunts lineair hexaëderelement | |
| 362 | 20 | 20-knooppunts kwadratisch hexaëderelement (Serendipity-familie) | |
| Interface-element | 541 | 4×2 | 4-knooppunts lineair vierhoekig vlakelement (niet beschikbaar voor spanningsanalyse) |
| 542 | 8×2 | 8-knooppunts kwadratisch vierhoekig vlakelement (niet beschikbaar voor spanningsanalyse) | |
| Balkelement | 611 | 2 | 2-knooppunts Bernoulli-Euler-balkelement (6 vrijheidsgraden per knooppunt) |
| 641 | 2×2 | 2-knooppunts Bernoulli-Euler-balkelement (3 vrijheidsgraden per knooppunt, voor gemengde vrijheidsgraden) | |
| Schaalelement | 731 | 3 | MITC3-driehoekig schaalelement (6 vrijheidsgraden per knooppunt) |
| 741 | 4 | MITC4-vierhoekig schaalelement (6 vrijheidsgraden per knooppunt) | |
| 743 | 9 | MITC9-vierhoekig schaalelement (6 vrijheidsgraden per knooppunt) | |
| 761 | 3×2 | MITC3-driehoekig schaalelement (3 vrijheidsgraden per knooppunt, voor gemengde vrijheidsgraden) | |
| 781 | 4×2 | MITC4-vierhoekig schaalelement (3 vrijheidsgraden per knooppunt, voor gemengde vrijheidsgraden) |
Het lineaire hexaëderelement 361 heeft meerdere formuleringen (volledige integratie, incompatibele modus, B-bar en F-bar), die via de analysebesturing worden geselecteerd. Zie Geavanceerde elementformuleringen voor details.
Balkelement 641 en schaalelementen 761/781 zijn formuleringen om structurele elementen met 6 vrijheidsgraden op dezelfde knooppunten te verbinden met solide elementen met 3 vrijheidsgraden; één structureel knooppunt wordt weergegeven door twee 3-DOF-knooppunten. De formuleringen zelf zijn identiek aan de overeenkomstige versies met 6 vrijheidsgraden (611, 731 en 741).
Vormfunctiebibliotheek¶
Elementberekeningsroutines (opbouw van de stijfheidsmatrix en de interne-krachtvector) hebben geen afzonderlijke routines voor elk elementtype. In plaats daarvan roepen ze de vormfunctiebibliotheek aan via een uniforme interface die het elementtypenummer fetype als argument ontvangt. De module elementInfo (fistr1/src/lib/element/element.f90) biedt de volgende functies.
NumOfQuadPoints(fetype): retourneert het aantal integratiepunten \(n_q\) voor het elementtype.getQuadPoint(fetype, np, pos): retourneert voor integratiepunt \(i\) de natuurlijke coördinaten \(\boldsymbol{r}_i\).getWeight(fetype, np): retourneert voor integratiepunt \(i\) het gewicht \(w_i\).getShapeFunc(fetype, r, N): retourneert bij natuurlijke coördinaten \(\boldsymbol{r}\) de waarden van de vormfunctie \(N_\alpha^e(\boldsymbol{r})\).getShapeDeriv(fetype, r, dN): retourneert de afgeleiden naar de natuurlijke coördinaten \(\partial N_\alpha^e/\partial \boldsymbol{r}\) van de vormfuncties.getGlobalDeriv(fetype, n_e, r, X^e, J, dN_x): retourneert, gegeven de elementknooppuntcoördinaten \(\boldsymbol{X}^e\), de afgeleiden naar de fysieke coördinaten \(\partial N_\alpha^e/\partial \boldsymbol{x}\) en de Jacobiaandeterminant \(J\).getNumberOfSubface(fetype),getSubFace(fetype, k, ...): retourneren het aantal begrenzingsvlakken van het element en de knooppuntnummers waaruit elk vlak bestaat. Ze worden gebruikt om oppervlaktebelastingen en contactoppervlakken op te bouwen.
Elke functie vertakt intern op basis van het elementtypenummer en roept de subroutines voor vormfuncties en afgeleiden daarvan aan in modules op lager niveau die voor elk elementtype beschikbaar zijn (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). Numerieke tabellen met coördinaten en gewichten van integratiepunten zijn samengebracht in quadrature.f90. Om een nieuw elementtype toe te voegen, implementeert u de overeenkomstige module op lager niveau en voegt u vertakkingen voor dit type toe aan elke functie in elementInfo.
Omzetting van de volgorde van middenknooppunten voor kwadratische driehoekselementen¶
Voor kwadratisch driehoekselement 232 verschilt de volgorde van de middenknooppunten tussen het HEC-MW-meshinvoerformaat (waarbij eerst de hoekknooppunten rondom het element worden geordend en daarna de middenknooppunten langs de randen 1-2, 2-3, …) en het interne FrontISTR-formaat dat door de vormfuncties in de elementbibliotheek wordt aangenomen. Het verschil tussen de twee formaten wordt direct na het laden van de mesh opgelost door hecmw2fstr_mesh_conv (fistr1/src/common/hecmw2fstr_mesh_conv.f90 en hecmw2fstr_connect_conv.c), dat de zes knooppunten volgens omzettingstabel Table232 herschikt naar \(\{1,2,3,6,4,5\}\). Omdat de omzetting rechtstreeks wordt uitgevoerd op de array waarin de elementconnectiviteit is opgeslagen, gebruiken alle daaropvolgende aanroepen van de elementbibliotheek de interne knooppuntvolgorde van FrontISTR. Bij de uitvoer van resultaten herstelt de inverse omzetting fstr2hecmw_mesh_conv vóór het schrijven het HEC-MW-formaat, zodat gebruikers voor zowel invoer als uitvoer alleen rekening hoeven te houden met het HEC-MW-formaat.
Kwadratische driedimensionale solide elementen 342 (tetraëder) en 352 (prisma) hebben vergelijkbare automatische omzettingen, terwijl 362 (kwadratische hexaëder) geen omzetting heeft. Zie Vormfuncties voor 3D-solide elementen voor de behandeling daarvan. Voor het kwadratische vlakke vierhoekselement 242 en interface-element 542 wordt geen omzetting uitgevoerd, omdat de volgorde van de middenknooppunten in het HEC-MW-invoerformaat en het interne formaat hetzelfde is.
Gerelateerde onderwerpen¶
- Vormfuncties en eindige-elementenbenadering — Wiskundige definitie van vormfuncties
- Numerieke integratie — Integratiepunten, gewichten en de benaderde vorm van elementintegratie
- Vormfuncties voor 3D-solide elementen — Specifieke natuurlijke coördinaten en vormfuncties voor continuüm-solide-elementen
- Geavanceerde elementformuleringen — B-bar / F-bar / incompatibele modus / schaal / balk
- Elementbibliotheek (functies) — Opties voor elementtypen en selectierichtlijnen