Zum Inhalt

Elementnummernsystem und Formfunktionsbibliothek

Die in Formfunktionen und Finite-Elemente-Approximation eingeführte Formfunktion \(N_\alpha^e(\boldsymbol{r})\) besitzt für jeden Elementtyp eine andere konkrete Form. Dieses Kapitel klassifiziert die von FrontISTR bereitgestellten Elementgruppen anhand dreistelliger Elementtypnummern und beschreibt die Schnittstelle der Formfunktionsbibliothek, mit der die verschiedenen Elemente einheitlich behandelt werden. Die konkreten natürlichen Koordinatensysteme und Formfunktionen dreidimensionaler Volumenelemente sowie die Umordnung der Mittelknoten quadratischer Elemente werden in Formfunktionen dreidimensionaler Volumenelemente behandelt; Hinweise zur Auswahl von Elementtypen finden Sie unter Elementbibliothek (Funktionen).

Elementklassifikation und Benennungsregeln

Die Elementtypen von FrontISTR werden durch dreistellige Nummern gekennzeichnet. Die Bedeutung der einzelnen Stellen ist wie folgt.

  • 1. Stelle (Elementgruppe): 1 = Linienelement/Truss, 2 = Flächenelement, 3 = Volumenelement, 5 = Interface-Element, 6 = Balkenelement, 7 = Schalenelement.
  • 2. Stelle (Grundform): unterscheidet die geometrische Form innerhalb der Elementgruppe (Dreieck, Viereck, Tetraeder, Prisma oder Hexaeder).
  • 3. Stelle (Interpolationsordnung): 1 = 1. Ordnung (nur Eckknoten), 2 = 2. Ordnung (einschließlich Mittelknoten). Eine Ausnahme bildet das 2-Knoten-Trusselement mit der Nummer 301.

Die bereitgestellten Elemente sind nach Elementgruppen in der folgenden Tabelle aufgeführt.

Elementgruppe Elementtyp Anzahl Knoten Beschreibung
Linienelement 111 2 2-Knoten-Linkelement (nicht für Spannungsanalysen verwendbar)
112 3 3-Knoten-Linkelement (nicht für Spannungsanalysen verwendbar)
Flächenelement 231 3 Lineares 3-Knoten-Dreieckselement
232 6 Quadratisches 6-Knoten-Dreieckselement
241 4 Lineares 4-Knoten-Viereckselement
242 8 Quadratisches 8-Knoten-Viereckselement (Serendipity-Familie)
Volumenelement 301 2 2-Knoten-Trusselement
341 4 Lineares 4-Knoten-Tetraederelement
342 10 Quadratisches 10-Knoten-Tetraederelement
351 6 Lineares 6-Knoten-Prismenelement
352 15 Quadratisches 15-Knoten-Prismenelement
361 8 Lineares 8-Knoten-Hexaedrelement
362 20 Quadratisches 20-Knoten-Hexaedrelement (Serendipity-Familie)
Interface-Element 541 4×2 Lineares 4-Knoten-Vierecksflächenelement (nicht für Spannungsanalysen verwendbar)
542 8×2 Quadratisches 8-Knoten-Vierecksflächenelement (nicht für Spannungsanalysen verwendbar)
Balkenelement 611 2 2-Knoten-Bernoulli-Euler-Balkenelement (6 Freiheitsgrade pro Knoten)
641 2×2 2-Knoten-Bernoulli-Euler-Balkenelement (3 Freiheitsgrade pro Knoten, für gemischte Freiheitsgrade)
Schalenelement 731 3 MITC3-Dreiecksschalenelement (6 Freiheitsgrade pro Knoten)
741 4 MITC4-Vierecksschalenelement (6 Freiheitsgrade pro Knoten)
743 9 MITC9-Vierecksschalenelement (6 Freiheitsgrade pro Knoten)
761 3×2 MITC3-Dreiecksschalenelement (3 Freiheitsgrade pro Knoten, für gemischte Freiheitsgrade)
781 4×2 MITC4-Vierecksschalenelement (3 Freiheitsgrade pro Knoten, für gemischte Freiheitsgrade)

Für das lineare Hexaederelement 361 stehen mehrere Formulierungen zur Verfügung (Vollintegration, inkompatibler Modus, B-bar und F-bar), die über die Analysesteuerung ausgewählt werden. Einzelheiten finden Sie unter Erweiterte Elementformulierungen.

Das Balkenelement 641 und die Schalenelemente 761/781 sind Formulierungen, mit denen Strukturelemente mit 6 Freiheitsgraden an denselben Knoten mit Volumenelementen mit 3 Freiheitsgraden verbunden werden können; ein Strukturknoten wird dabei durch zwei 3-DOF-Knoten dargestellt. Die Formulierungen selbst sind identisch mit denen der entsprechenden 6-DOF-Versionen (611, 731 und 741).

Formfunktionsbibliothek

Die Elementberechnungsroutinen (Aufbau der Steifigkeitsmatrix und des inneren Kraftvektors) besitzen keine separaten Routinen für jeden Elementtyp. Stattdessen rufen sie die Formfunktionsbibliothek über eine einheitliche Schnittstelle auf, die die Elementtypnummer fetype als Argument erhält. Das Modul elementInfo (fistr1/src/lib/element/element.f90) stellt die folgenden Funktionen bereit.

  • NumOfQuadPoints(fetype): gibt die Anzahl der Integrationspunkte \(n_q\) für den Elementtyp zurück.
  • getQuadPoint(fetype, np, pos): gibt die natürlichen Koordinaten \(\boldsymbol{r}_i\) des Integrationspunkts \(i\) zurück.
  • getWeight(fetype, np): gibt das Gewicht \(w_i\) des Integrationspunkts \(i\) zurück.
  • getShapeFunc(fetype, r, N): gibt die Formfunktionswerte \(N_\alpha^e(\boldsymbol{r})\) an den natürlichen Koordinaten \(\boldsymbol{r}\) zurück.
  • getShapeDeriv(fetype, r, dN): gibt die Ableitungen der Formfunktionen nach den natürlichen Koordinaten \(\partial N_\alpha^e/\partial \boldsymbol{r}\) zurück.
  • getGlobalDeriv(fetype, n_e, r, X^e, J, dN_x): erhält die Elementknotenkoordinaten \(\boldsymbol{X}^e\) und gibt die Ableitungen nach den physikalischen Koordinaten \(\partial N_\alpha^e/\partial \boldsymbol{x}\) sowie die Jacobi-Determinante \(J\) zurück.
  • getNumberOfSubface(fetype), getSubFace(fetype, k, ...): geben die Anzahl der Elementrandflächen und die Knotennummern zurück, aus denen die jeweilige Fläche besteht. Sie werden zur Konstruktion von Flächenlasten und Kontaktflächen verwendet.

Jede Funktion verzweigt intern anhand der Elementtypnummer und ruft die Formfunktions- und Formfunktionsableitungs-Subroutinen der für die jeweiligen Elementtypen bereitgestellten untergeordneten Module (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) auf. Numerische Tabellen der Integrationspunktkoordinaten und Gewichte sind in quadrature.f90 zusammengefasst. Zum Hinzufügen eines neuen Elementtyps implementieren Sie das entsprechende untergeordnete Modul und ergänzen in jeder Funktion von elementInfo die entsprechenden Verzweigungen.

Umordnung der Mittelknoten bei quadratischen Dreieckselementen

Beim quadratischen Dreieckselement 232 unterscheidet sich die Reihenfolge der Mittelknoten zwischen dem HEC-MW-Netzeingabeformat (zunächst die Eckknoten umlaufend, anschließend die Mittelknoten entlang der Kanten 1-2, 2-3, …) und dem internen FrontISTR-Format, das von den Formfunktionen der Elementbibliothek vorausgesetzt wird. Der Unterschied zwischen beiden Formaten wird unmittelbar nach dem Einlesen des Netzes durch hecmw2fstr_mesh_conv (fistr1/src/common/hecmw2fstr_mesh_conv.f90 und hecmw2fstr_connect_conv.c) behoben. Dabei werden die sechs Knoten gemäß der Konvertierungstabelle Table232 in die Reihenfolge \(\{1,2,3,6,4,5\}\) gebracht. Da die Konvertierung direkt auf dem Array mit den Elementkonnektivitäten erfolgt, verwenden alle nachfolgenden Aufrufe der Elementbibliothek die interne FrontISTR-Knotenreihenfolge. Bei der Ergebnisausgabe wird durch die inverse Konvertierung fstr2hecmw_mesh_conv vor dem Schreiben wieder das HEC-MW-Format hergestellt. Benutzer müssen daher bei Ein- und Ausgabe nur das HEC-MW-Format berücksichtigen.

Für die quadratischen dreidimensionalen Volumenelemente 342 (Tetraeder) und 352 (Prisma) existieren ähnliche automatische Konvertierungen; für 362 (quadratisches Hexaeder) erfolgt keine Konvertierung. Einzelheiten finden Sie unter Formfunktionen dreidimensionaler Volumenelemente. Beim quadratischen ebenen Viereckselement 242 und beim Interface-Element 542 ist keine Konvertierung erforderlich, da die Reihenfolge der Mittelknoten im HEC-MW-Eingabeformat und im internen Format übereinstimmt.

Verwandte Themen