Randwertprobleme/Methoden zur Lösung von Randwertproblemen/Finite Elemente Methode/FEM: Trial-Functions für kubische Ansatz-Polynome: Unterschied zwischen den Versionen
Zeile 103: | Zeile 103: | ||
Wir setzten also die Ansatzfunktionen von oben in dieses Integral ein und erhalten | Wir setzten also die Ansatzfunktionen von oben in dieses Integral ein und erhalten | ||
::<math> | ::<math>δ\Pi_i=\left({{{δW}}_{i-1}},{{{δΦ}}_{i-1}},{{{δW}}_{i}},{{{δΦ}}_{i}}\right)\cdot \displaystyle \frac{{E I}}{{{\ell}_{i}^{3}}} \cdot | ||
\begin{pmatrix} | \begin{pmatrix} | ||
12 & 6\cdot {{ | 12 & 6\cdot {{\ell}_{i}} & -12 & 6\cdot {{\ell}_{i}}\\ | ||
6\cdot {{ | 6\cdot {{\ell}_{i}} & 4\cdot {{\ell}_{i}^{2}} & -6\cdot {{\ell}_{i}} & 2\cdot {{\ell}_{i}^{2}}\\ | ||
-12 & -6\cdot {{ | -12 & -6\cdot {{\ell}_{i}} & 12 & -6\cdot {{\ell}_{i}}\\ | ||
6\cdot {{ | 6\cdot {{\ell}_{i}} & 2\cdot {{\ell}_{i}^{2}} & -6\cdot {{\ell}_{i}} & 4\cdot {{\ell}_{i}^{2}} | ||
\end{pmatrix}\cdot \begin{pmatrix} | \end{pmatrix}\cdot \begin{pmatrix} | ||
{{W}_{i-1}}\\ | {{W}_{i-1}}\\ |
Version vom 22. Februar 2021, 10:01 Uhr
Im Vergleich zu linearen Ansatzfunktionen brauchen wir oft Trial-Functions höherer Ordnung. So ist beim Euler-Bernoulli-Balken die virtuelle Formänderungsarbeit
.
weimaliges Ableiten der linearen Trial-Funktion von oben führt dazu, dass die virtuelle Formänderungsarbeit komplett verschwindet - diese Ansatzfunktionen passen dann also nicht.
Ein Polynom zweiten Grades würde passen - hat aber nur drei Koeffizienten. Und eine ungerade Anzahl von Koeffizienten kann man nicht auf zwei Knoten gleich verteilen! Wie brauchen ein Polynom mit vier Koeffizienten.
Arbeitsschritte
Wir gehen die Arbeitsschritte zum Finden der Trial-Functions wie beim vorangehenden Schema durch:
- A→B Diskretisierung: Wir teilen die Struktur in N Stücke ( = Finite Elemente ) der Länge lE. An jedem Ende eines Finiten Elements entsteht ein Knoten von insgesamt N+1 Knoten.
-
B→C Trial-Funktion je Element:Je Element wählen wir ein kubisches Polynom (ein Polynom 3.ten Grades mit vier Koeffizienten) als Trial-Funktion
-
C→D Anpassen der Trial-Funktion an Übergangsbedingungen: Die 4N Koeffizienten {ai,3, ai,2, a'i,1 ,ai,0} können wir wiederum nicht anschaulich interpretieren. Mit der Koordinatentransformation auf die lokale Element-Koordinate ξi ist:
Die Übergangsbedingungen sind also
Das heißt: neben den Gleichgewichtsbedingungen müssen wir nun auch 2∙(N-1) algebraische Nebenbedingungen zwischen den bi,3, bi,2, bi,1, bi,0 erfüllen, damit an den Knoten die geometrischen Übergangsbedingungen erfüllt sind. Wieder ersetzen wir die bij durch die Knoten-Verschiebungen und Kipp-Winkel Φ des Balkens in den Knoten:
Trial Functions ϕi
Durch Einsetzten unseres Polynoms in diese Randbedingungen können wir die vier generischen Koeffizienten bi,3, bi,2, bi,1, bi,0 gegen die Knoten-Koordinaten Wi-1, Φi-1, Wi, Φi tauschen und damit die Übergangsbedingungen implizit erfüllen! Wir finden
und damit
mit den 2(N+1) Koordinaten der Knoten-Verschiebungen Wn,Φn als gesuchten Größen.
/* Maxima */ w(xi) := b[i,3]*xi^3+b[i,2]*xi^2+b[i,1]*xi+b[i,0]; /* boundary conditions */ BC: [w(0)=W[i-1], subst(0,xi,diff(w(xi),xi))/l[i] = Phi[i-1], w(1)=W[i], subst(1,xi,diff(w(xi),xi))/l[i] = Phi[i]]; /* solve for polynom coeff. */ sol: solve(BC,[b[i,3],b[i,2],b[i,1],b[i,0]])[1]; print('w(xi),"=",subst(sol,w(xi)))$ /* new coordinates = nodal displacements */ Q : [W[i-1],Phi[i-1],W[i],Phi[i]]; print('w(xi),"=",facsum(subst(sol,w(xi)),Q))$ /* plot trial fcts */ trials : expand(subst(sol,w(xi))); trials: makelist(coeff(trials,Q[j]), j,1,4); plot2d(subst([l[i]=5],trials),[xi,0,1], [xlabel, "ξ→"], [legend, "ϕ1", "ϕ2", "ϕ3", "ϕ4"], [style, [lines,3]] );
-
D→E Einführung der Trial-Funktionen:Jetzt fehlt nur noch eine Kleinigkeit: wir sortieren die Gleichung für die Element-Verschiebung nach den Knoten-Variablen um und erhalten
- ,
Die virtuelle Formänderungs-Energie je Euler-Bernoulli-Element für kubische Ansatz-Polynome
Die gesamte Formänderungsenergie setzen wir jetzt aus aus den Formänderungsenergien je Element zusammen, also
also für einen Eul-Bernoulli-Balken
Virtual Strain Energy
Wir setzten also die Ansatzfunktionen von oben in dieses Integral ein und erhalten
- Fehler beim Parsen (Syntaxfehler): {\displaystyle δ\Pi_i=\left({{{δW}}_{i-1}},{{{δΦ}}_{i-1}},{{{δW}}_{i}},{{{δΦ}}_{i}}\right)\cdot \displaystyle \frac{{E I}}{{{\ell}_{i}^{3}}} \cdot \begin{pmatrix} 12 & 6\cdot {{\ell}_{i}} & -12 & 6\cdot {{\ell}_{i}}\\ 6\cdot {{\ell}_{i}} & 4\cdot {{\ell}_{i}^{2}} & -6\cdot {{\ell}_{i}} & 2\cdot {{\ell}_{i}^{2}}\\ -12 & -6\cdot {{\ell}_{i}} & 12 & -6\cdot {{\ell}_{i}}\\ 6\cdot {{\ell}_{i}} & 2\cdot {{\ell}_{i}^{2}} & -6\cdot {{\ell}_{i}} & 4\cdot {{\ell}_{i}^{2}} \end{pmatrix}\cdot \begin{pmatrix} {{W}_{i-1}}\\ {{\Phi}_{i-1}}\\ {{W}_{i}}\\ {{\Phi}_{i}} \end{pmatrix}}
Hier die Maxima-Kopiervorlage:
phi : [ 2*xi^3-3*xi^2+1, (xi^3-2*xi^2+xi)*l[i], 3*xi^2-2*xi^3, (xi^3-xi^2)*l[i]]; Q[i] : [ W[i-1], Phi[i-1], W[i],Phi[i]]; K[i] : EI[i]/l[i]^3 * matrix( [ 12, 6*l[i], -12, 6*l[i]], [6*l[i], 4*l[i]^2, -6*l[i], 2*l[i]^2], [ -12, -6*l[i], 12, -6*l[i]], [6*l[i], 2*l[i]^2, -6*l[i], 4*l[i]^2]);
/* Maxima ( continued) */ declare("δW", alphabetic); declare("δΠ", alphabetic); declare("δw", alphabetic); declare("δW", alphabetic); declare("δW", alphabetic); declare("δΦ", alphabetic); Q : [[ W[i-1], Phi[i-1], W[i],Phi[i]], [δW[i-1], δΦ[i-1],δW[i], δΦ[i]]]; trials: [w = Q[1].trials, δw = Q[2].trials]; PvV : δΠ[i] = 'integrate(EI*'diff(w,x[i],2)*'diff(δw,x[i],2),x[i],0,l[i]); PvV : subst([xi=x[i]/l[i]],subst(trials,PvV)); PvV : expand(ev(PvV,nouns)); K : funmake('matrix, makelist( makelist( coeff(coeff(rhs(PvV),Q[2][i]),Q[1][j]), i,1,4),j,1,4)); print(δΠ[i],"=", Q[2],"*",EI/l[i]^3,"*",K/(EI/l[i]^3),"*",transpose(Q[1]))$
Virtual Work of d'Alembert Forces
Hier die Maxima-Kopiervorlage: