Gå til innhold

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

AI-assisted translation May contain errors Official docs Status