Randwertprobleme/Methoden zur Lösung von Randwertproblemen/Finite Elemente Methode: Unterschied zwischen den Versionen
Zeile 94: | Zeile 94: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
{{Vorlage:MyCodeBlock|title=System Parameter|text= | |||
::<math>\begin{array}{llcc}N_1 =& [&0,&0]\\N_2 =& [&a,&a]\\N_3 =& [&a,&0]\end{array}</math> | |||
::<math>\begin{array}{llcc}R_1 =& [&1,&2]\\R_2 =& [&1,&3]\\R_3 =& [&2,&3]\end{array}</math> | |||
::<math>\begin{array}{ll}\ldots\text{ für Element 1:}&\displaystyle [\xi_x,\xi_y] = [\frac{1}{\sqrt{2}},\frac{1}{\sqrt{2}}]\\\ldots\text{ für Element 2:}&\displaystyle [\xi_x,\xi_y] = [1,0]\\\ldots\text{ für Element 3:}&\displaystyle [\xi_x,\xi_y] = [0,-1]\end{array}</math> | |||
|code= | |||
<syntaxhighlight lang="notmuch" line='line' style="border:1px solid blue"> | |||
/* parameters */ | |||
assume(a>0); | |||
/* nodal coordinates */ | |||
N : [[0, 0], | |||
[a, a], | |||
[a, 0]]; | |||
/* rod-connectivity */ | |||
R : [[1,2], | |||
[1,3], | |||
[2,3]]; | |||
dims: [length(N),length(R)]; | |||
/* compute elements of Element-Stiffness Matrix */ | |||
/* Δx / Δy */ | |||
d : makelist(N[R[i][2]]-N[R[i][1]],i,1,length(R)); | |||
/* reference-lengths */ | |||
l : makelist(sqrt(d[i].d[i]),i,1,length(d)); | |||
/* normalized Δx / Δy ( xi )*/ | |||
xi : makelist((N[R[i][2]]-N[R[i][1]])/l[i], | |||
i,1,length(R)); | |||
</syntaxhighlight> | |||
}} | |||
Version vom 21. Februar 2021, 17:56 Uhr
Die Methode der Finiten Elemente ist deshalb so erfolgreich, weil Sie ideal mit der Implementierung im Computer harmoniert.
Auf zwei Ansätzen basiert dieser Erfolg:
Einführungsbeispiel
Wie das geht, zeige ich Ihnen - zuerst ohne Theorie - für ein Beispiel:
Ein Stabwerk aus drei elastischen Stäben und einer Feder wird durch eine Einzelkraft F belastet. Alle Stäbe haben die Dehnsteifigkeit EA, die Federsteifigkeit ist k. |
Gegeben sind a, EA, k, F, gesucht sind die Verschiebungen der Knotenpunkte.
Die Lösung mit der Methode der Finiten Elemente zeige ich Ihnen aus drei Perspektiven:
- das Prozess-Schema
- die Lehrbuch-Sichweise und
- die Implementierung in einem Algorithmus (hier Maxima).
Das Modell für ein lineares Modell mit Finiten Elemente ist ein System linearer Gleichungen. In jeder Spalte steht die Gleichgewichtsbedingung für eine Koordinate Qi, in den Spalten stehen die Koeffizienten der Koordinaten Qj. Das Gleichungssystem sieht immer so aus:
Wir benennen Stäbe und Knoten, ein Koordinatensystem brauchen wir auch:
Das Stabwerk besteht aus vier elastischen Bauteilen:
- den Stäben 1,2 und 3 sowie
- der Feder.
Und jedes dieser elastischen Bauteil hinterlässt eine Spur in der Steifigkeitsmatrix K.
Die Verformung der Stäbe erfassen wir durch die Verschiebung der Endpunkte - der Knoten - des Stabwerks. Wie das geht und wir wir daraus eine Element-Steifigkeitsmatrix für einen Dehnstab bekommen, steht in T312. Die Knoten-Verschiebungen schreiben wir in Q hinein, hier für drei Knoten die Verschiebungen jeweils u in x- und v in y-Richtung
A. Das Prozess-Schema
Das Gesamt-Gleichungssystem komponieren wir, indem die Element-Steifigkeitsmatrizen je Bauteil nach einem festen Schema in K hineinkopiert werden:
Es bleibt noch, die Randbedingungen in das System einzuarbeiten: das machen wir durch Streichen der Zeilen und Spalten des Gleichungssystems, die zu Koordinaten gehören, die aufgrund der Lagerung des Systems behindert sind:
Wie dieser Prozess in einem "Lehrbuch" der Mechanik / Mathematik und in einer Implementierung im Computer aussieht folgt hier in der linken bzw. rechten Spalte:
B: Die Lehrbuch-Sichtweise |
C: Die Implementierung in MAXIMA |
Header
Für diese Aufgabe nutzen wir Ergenisse aus T312.
In diesem Beispiel sind die gesuchten Größen die Verschiebungen der drei Knoten in x- und y-Richtung, also:
/*******************************************************/
/* MAXIMA script */
/* version: wxMaxima 15.08.2 */
/* author: Andreas Baumgart */
/* last updated: 2018-05-30 */
/* ref: FEM */
/* description: Berechnung der Knoten-Verscheibungen */
/* eines elastischen Stabwerks */
/* - gehört zu Aufgabe T312 */
/*******************************************************/
/* coordiates in K*Q=P */
Q: transpose(matrix(flatten(makelist([u[i],v[i]],i,1,length(N)))));
System Parameter
/* parameters */
assume(a>0);
/* nodal coordinates */
N : [[0, 0],
[a, a],
[a, 0]];
/* rod-connectivity */
R : [[1,2],
[1,3],
[2,3]];
dims: [length(N),length(R)];
/* compute elements of Element-Stiffness Matrix */
/* Δx / Δy */
d : makelist(N[R[i][2]]-N[R[i][1]],i,1,length(R));
/* reference-lengths */
l : makelist(sqrt(d[i].d[i]),i,1,length(d));
/* normalized Δx / Δy ( xi )*/
xi : makelist((N[R[i][2]]-N[R[i][1]])/l[i],
i,1,length(R));
Untergeornete Seiten