Elementnummereringssystem og bibliotek for formfunksjoner¶
Formfunksjonen \(N_\alpha^e(\boldsymbol{r})\) som ble introdusert i Formfunksjoner og endelig-element-approksimasjon, har en konkret form for hver elementtype. Dette kapitlet klassifiserer elementgruppene som FrontISTR tilbyr ved hjelp av tresifrede elementtypenumre, og viser grensesnittet til biblioteket for formfunksjoner som brukes for å håndtere hvert element på en enhetlig måte. De konkrete naturlige koordinatsystemene og formfunksjonene for tredimensjonale solidelementer, samt konvertering av rekkefølgen til midtsidenoder for andreordenselementer, beskrives i Formfunksjoner for tredimensjonale solidelementer, mens veiledning for valg av elementtype finnes i Elementbibliotek (funksjoner).
Elementklassifisering og navnekonvensjoner¶
Elementtypene i FrontISTR identifiseres med tresifrede numre. Betydningen av hvert siffer er som følger.
- Første siffer (elementgruppe): 1 = linjeelement/truss, 2 = planelement, 3 = solidelement, 5 = grensesnittelement, 6 = bjelkeelement, 7 = skallelement.
- Andre siffer (grunnform): skiller den geometriske formen innen elementgruppen (trekant, firkant, tetraeder, prisme eller heksaeder).
- Tredje siffer (interpolasjonsorden): 1 = første orden (bare hjørnenoder), 2 = andre orden (inkludert midtsidenoder). Som unntak har 2-noders trusselement nummer 301.
Elementene som tilbys, er oppført etter elementgruppe i tabellen nedenfor.
| Elementgruppe | Elementtype | Antall noder | Beskrivelse |
|---|---|---|---|
| Linjeelement | 111 | 2 | 2-noders koblingselement (kan ikke brukes til spenningsanalyse) |
| 112 | 3 | 3-noders koblingselement (kan ikke brukes til spenningsanalyse) | |
| Planelement | 231 | 3 | 3-noders lineært trekantelement |
| 232 | 6 | 6-noders kvadratisk trekantelement | |
| 241 | 4 | 4-noders lineært firkantelement | |
| 242 | 8 | 8-noders kvadratisk firkantelement (Serendipity-familien) | |
| Solidelement | 301 | 2 | 2-noders trusselement |
| 341 | 4 | 4-noders lineært tetraederelement | |
| 342 | 10 | 10-noders kvadratisk tetraederelement | |
| 351 | 6 | 6-noders lineært prismeelement | |
| 352 | 15 | 15-noders kvadratisk prismeelement | |
| 361 | 8 | 8-noders lineært heksaedrisk element | |
| 362 | 20 | 20-noders kvadratisk heksaedrisk element (Serendipity-familien) | |
| Grensesnittelement | 541 | 4×2 | 4-noders lineært firkantflateelement (kan ikke brukes til spenningsanalyse) |
| 542 | 8×2 | 8-noders kvadratisk firkantflateelement (kan ikke brukes til spenningsanalyse) | |
| Bjelkeelement | 611 | 2 | 2-noders Bernoulli-Euler-bjelkeelement (6 frihetsgrader per node) |
| 641 | 2×2 | 2-noders Bernoulli-Euler-bjelkeelement (3 frihetsgrader per node, for blandede frihetsgrader) | |
| Skallelement | 731 | 3 | MITC3 trekantet skallelement (6 frihetsgrader per node) |
| 741 | 4 | MITC4 firkantet skallelement (6 frihetsgrader per node) | |
| 743 | 9 | MITC9 firkantet skallelement (6 frihetsgrader per node) | |
| 761 | 3×2 | MITC3 trekantet skallelement (3 frihetsgrader per node, for blandede frihetsgrader) | |
| 781 | 4×2 | MITC4 firkantet skallelement (3 frihetsgrader per node, for blandede frihetsgrader) |
Det lineære heksaedriske elementet 361 har flere formuleringer (full integrasjon, inkompatibel modus, B-bar og F-bar), som velges via analysekontrollen. Se Avanserte elementformuleringer for detaljer.
Bjelkeelement 641 og skallelementene 761/781 er formuleringer for å koble strukturelementer med 6 frihetsgrader til solidelementer med 3 frihetsgrader i de samme nodene; én strukturnode representeres av to noder med 3 frihetsgrader. Selve formuleringene er identiske med de tilsvarende 6-frihetsgradsvariantene (611, 731 og 741).
Bibliotek for formfunksjoner¶
Elementberegningsrutinene (oppbygging av stivhetsmatrise og indre kraftvektor) har ikke separate rutiner for hver elementtype. I stedet kaller de biblioteket for formfunksjoner via et enhetlig grensesnitt som tar elementtypenummeret fetype som argument. Modulen elementInfo (fistr1/src/lib/element/element.f90) tilbyr følgende funksjoner.
NumOfQuadPoints(fetype): returnerer antall integrasjonspunkter \(n_q\) for elementtypen.getQuadPoint(fetype, np, pos): returnerer de naturlige koordinatene \(\boldsymbol{r}_i\) til integrasjonspunkt \(i\).getWeight(fetype, np): returnerer vekten \(w_i\) til integrasjonspunkt \(i\).getShapeFunc(fetype, r, N): returnerer formfunksjonsverdiene \(N_\alpha^e(\boldsymbol{r})\) ved de naturlige koordinatene \(\boldsymbol{r}\).getShapeDeriv(fetype, r, dN): returnerer derivatene med hensyn på naturlige koordinater \(\partial N_\alpha^e/\partial \boldsymbol{r}\) for formfunksjonene.getGlobalDeriv(fetype, n_e, r, X^e, J, dN_x): gitt elementets nodekoordinater \(\boldsymbol{X}^e\), returnerer derivatene med hensyn på fysiske koordinater \(\partial N_\alpha^e/\partial \boldsymbol{x}\) og Jacobi-determinanten \(J\).getNumberOfSubface(fetype),getSubFace(fetype, k, ...): returnerer antall grenseflater for elementet og nodenumrene som utgjør hver flate. De brukes til å konstruere flatebelastninger og kontaktflater.
Hver funksjon forgrener seg internt etter elementtypenummeret og kaller underrutinene for formfunksjoner og deres deriverte i lavnivåmodulene som finnes for hver elementtype (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). Numeriske tabeller over koordinater og vekter for integrasjonspunkter er samlet i quadrature.f90. For å legge til en ny elementtype implementeres den tilsvarende lavnivåmodulen, og det legges til forgreninger for den i hver funksjon i elementInfo.
Konvertering av rekkefølgen til midtsidenoder for kvadratiske trekantelementer¶
For kvadratisk trekantelement 232 er rekkefølgen på midtsidenodene forskjellig mellom HEC-MW-nettinndataformatet (der hjørnenodene ordnes rundt elementet og deretter midtsidenodene langs kantene 1-2, 2-3, …) og FrontISTRs interne format som forutsettes av formfunksjonene i elementbiblioteket. Forskjellen mellom de to formatene løses umiddelbart etter innlesing av nettet ved at hecmw2fstr_mesh_conv (fistr1/src/common/hecmw2fstr_mesh_conv.f90 og hecmw2fstr_connect_conv.c) omordner de seks nodene til \(\{1,2,3,6,4,5\}\) i henhold til konverteringstabellen Table232. Fordi konverteringen utføres direkte på matrisen som lagrer elementkonnektiviteten, bruker alle senere kall til elementbiblioteket FrontISTRs interne noderekkefølge. Ved resultatutdata gjenoppretter den inverse konverteringen fstr2hecmw_mesh_conv HEC-MW-formatet før skriving, slik at brukeren bare trenger å forholde seg til HEC-MW-formatet både for inn- og utdata.
Tredimensjonale kvadratiske solidelementer 342 (tetraeder) og 352 (prisme) har tilsvarende automatiske konverteringer, mens 362 (kvadratisk heksaeder) ikke har noen konvertering. Se Formfunksjoner for tredimensjonale solidelementer for behandlingen av dem. For det kvadratiske plane firkantelementet 242 og grensesnittelement 542 utføres ingen konvertering fordi rekkefølgen på midtsidenodene er den samme i HEC-MW-inndataformatet og det interne formatet.
Relaterte emner¶
- Formfunksjoner og endelig-element-approksimasjon — Matematisk definisjon av formfunksjoner
- Numerisk integrasjon — Integrasjonspunkter, vekter og approksimert form for elementintegrasjon
- Formfunksjoner for tredimensjonale solidelementer — Konkrete naturlige koordinater og formfunksjoner for kontinuum-solidelementer
- Avanserte elementformuleringer — B-bar / F-bar / inkompatibel modus / skall / bjelke
- Elementbibliotek (funksjoner) — Valg av elementtyper og veiledning for valg