Elementnummereringssystem og formfunktionsbibliotek¶
Formfunktionen \(N_\alpha^e(\boldsymbol{r})\), som introduceres i Formfunktioner og finite element-approksimation, har en bestemt form for hver elementtype. Dette kapitel klassificerer de elementgrupper, som FrontISTR stiller til rådighed, ved hjælp af trecifrede elementtypenumre og præsenterer formfunktionsbibliotekets interface til ensartet håndtering af hvert element. De specifikke naturlige koordinatsystemer og formfunktioner for tredimensionale solid-elementer samt konverteringen af rækkefølgen af midtsideknuder for kvadratiske elementer behandles i Formfunktioner for tredimensionale solid-elementer, mens vejledning i valg af elementtyper findes i Elementbibliotek (funktioner).
Elementklassifikation og navngivningsregler¶
FrontISTR-elementtyper identificeres med trecifrede numre. Betydningen af hvert ciffer er følgende.
- Første ciffer (elementgruppe): 1 = linjeelement/fagværk, 2 = planelement, 3 = solid-element, 5 = interface-element, 6 = bjælkeelement, 7 = shell-element.
- Andet ciffer (grundform): skelner den geometriske form inden for elementgruppen (trekant, firkant, tetraeder, prisme eller heksaeder).
- Tredje ciffer (interpolationsorden): 1 = første orden (kun hjørneknuder), 2 = anden orden (inklusive midtsideknuder). Som undtagelse har fagværkselementet med to knuder nummer 301.
De tilgængelige elementer er opført efter elementgruppe i tabellen nedenfor.
| Elementgruppe | Elementtype | Antal knuder | Beskrivelse |
|---|---|---|---|
| Linjeelement | 111 | 2 | 2-knuders link-element (ikke tilgængeligt til spændingsanalyse) |
| 112 | 3 | 3-knuders link-element (ikke tilgængeligt til spændingsanalyse) | |
| Planelement | 231 | 3 | 3-knuders lineært trekantelement |
| 232 | 6 | 6-knuders kvadratisk trekantelement | |
| 241 | 4 | 4-knuders lineært firkantelement | |
| 242 | 8 | 8-knuders kvadratisk firkantelement (Serendipity-familien) | |
| Solid-element | 301 | 2 | 2-knuders fagværkselement |
| 341 | 4 | 4-knuders lineært tetraederelement | |
| 342 | 10 | 10-knuders kvadratisk tetraederelement | |
| 351 | 6 | 6-knuders lineært prismeelement | |
| 352 | 15 | 15-knuders kvadratisk prismeelement | |
| 361 | 8 | 8-knuders lineært heksaederelement | |
| 362 | 20 | 20-knuders kvadratisk heksaederelement (Serendipity-familien) | |
| Interface-element | 541 | 4×2 | 4-knuders lineært firkantfladeelement (ikke tilgængeligt til spændingsanalyse) |
| 542 | 8×2 | 8-knuders kvadratisk firkantfladeelement (ikke tilgængeligt til spændingsanalyse) | |
| Bjælkeelement | 611 | 2 | 2-knuders Bernoulli-Euler-bjælkeelement (6 frihedsgrader pr. knude) |
| 641 | 2×2 | 2-knuders Bernoulli-Euler-bjælkeelement (3 frihedsgrader pr. knude, til blandede frihedsgrader) | |
| Shell-element | 731 | 3 | MITC3 trekantet shell-element (6 frihedsgrader pr. knude) |
| 741 | 4 | MITC4 firkantet shell-element (6 frihedsgrader pr. knude) | |
| 743 | 9 | MITC9 firkantet shell-element (6 frihedsgrader pr. knude) | |
| 761 | 3×2 | MITC3 trekantet shell-element (3 frihedsgrader pr. knude, til blandede frihedsgrader) | |
| 781 | 4×2 | MITC4 firkantet shell-element (3 frihedsgrader pr. knude, til blandede frihedsgrader) |
Det lineære heksaederelement 361 har flere formuleringer (fuld integration, inkompatibel mode, B-bar og F-bar), som vælges gennem analysestyringen. Se Avancerede elementformuleringer for detaljer.
Bjælkeelement 641 og shell-elementerne 761/781 er formuleringer til at forbinde strukturelementer med 6 frihedsgrader til solid-elementer med 3 frihedsgrader ved de samme knuder; én strukturknude repræsenteres af to knuder med 3 frihedsgrader. Selve formuleringerne er identiske med de tilsvarende versioner med 6 frihedsgrader (611, 731 og 741).
Formfunktionsbibliotek¶
Elementberegningsrutiner (konstruktion af stivhedsmatricen og den indre kraftvektor) har ikke separate rutiner for hver elementtype. I stedet kalder de formfunktionsbiblioteket gennem et samlet interface, der tager elementtypenummeret fetype som argument. Modulet elementInfo (fistr1/src/lib/element/element.f90) stiller følgende funktioner til rådighed.
NumOfQuadPoints(fetype): returnerer antallet af integrationspunkter \(n_q\) for elementtypen.getQuadPoint(fetype, np, pos): returnerer de naturlige koordinater \(\boldsymbol{r}_i\) for integrationspunkt \(i\).getWeight(fetype, np): returnerer vægten \(w_i\) for integrationspunkt \(i\).getShapeFunc(fetype, r, N): returnerer formfunktionsværdierne \(N_\alpha^e(\boldsymbol{r})\) ved de naturlige koordinater \(\boldsymbol{r}\).getShapeDeriv(fetype, r, dN): returnerer formfunktionernes afledte med hensyn til de naturlige koordinater \(\partial N_\alpha^e/\partial \boldsymbol{r}\).getGlobalDeriv(fetype, n_e, r, X^e, J, dN_x): givet elementets knudekoordinater \(\boldsymbol{X}^e\) returneres de afledte med hensyn til de fysiske koordinater \(\partial N_\alpha^e/\partial \boldsymbol{x}\) og Jacobi-determinanten \(J\).getNumberOfSubface(fetype),getSubFace(fetype, k, ...): returnerer antallet af elementrandflader og knudenumrene, der udgør hver flade. De bruges til at konstruere fladelaster og kontaktflader.
Hver funktion forgrener sig internt efter elementtypenummeret og kalder subrutinerne for formfunktioner og deres afledte i de underliggende moduler, der er til rådighed 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 integrationspunkternes koordinater og vægte er samlet i quadrature.f90. For at tilføje en ny elementtype implementeres det tilsvarende underliggende modul, og der tilføjes grene for den i hver funktion i elementInfo.
Konvertering af midtsideknudernes rækkefølge for kvadratiske trekantelementer¶
For det kvadratiske trekantelement 232 er rækkefølgen af midtsideknuder forskellig mellem HEC-MW-meshinputformatet (som ordner hjørneknuderne rundt om elementet og derefter midtsideknuderne langs kanterne 1-2, 2-3, …) og FrontISTRs interne format, som formfunktionerne i elementbiblioteket forudsætter. Forskellen mellem de to formater håndteres umiddelbart efter indlæsning af meshet af hecmw2fstr_mesh_conv (fistr1/src/common/hecmw2fstr_mesh_conv.f90 og hecmw2fstr_connect_conv.c), som omordner de seks knuder til \(\{1,2,3,6,4,5\}\) i henhold til konverteringstabellen Table232. Da konverteringen udføres direkte på det array, der lagrer elementconnectivity, bruger alle efterfølgende kald til elementbiblioteket FrontISTRs interne knuderækkefølge. Ved resultatoutput gendanner den inverse konvertering fstr2hecmw_mesh_conv HEC-MW-formatet før skrivning, så brugerne kun behøver at forholde sig til HEC-MW-formatet for både input og output.
De kvadratiske tredimensionale solid-elementer 342 (tetraeder) og 352 (prisme) har tilsvarende automatiske konverteringer, mens 362 (kvadratisk heksaeder) ikke har nogen konvertering. Se Formfunktioner for tredimensionale solid-elementer for deres behandling. For det kvadratiske plane firkantelement 242 og interface-element 542 udføres ingen konvertering, fordi rækkefølgen af midtsideknuder er den samme i HEC-MW-inputformatet og det interne format.
Relaterede emner¶
- Formfunktioner og finite element-approksimation — Matematisk definition af formfunktioner
- Numerisk integration — Integrationspunkter, vægte og den approksimative form for elementintegration
- Formfunktioner for tredimensionale solid-elementer — Specifikke naturlige koordinater og formfunktioner for kontinuum-solid-elementer
- Avancerede elementformuleringer — B-bar / F-bar / inkompatibel mode / shell / bjælke
- Elementbibliotek (funktioner) — Muligheder for elementtyper og vejledning i valg