Gelöste Aufgaben/UEBH
Aufgabenstellung
Dies ist eine Näherungslösung für einen Standard-Lastfall des Euler-Bernoulli-Balkens. Hier geht es also darum, die Näherungslösung mit der analytisch richtigen Lösung zu vergleichen.
Der Euler-Bernoulli-Balken AB wird durch ein Moment M zwischen den beiden gelenkigen Lagern belastet.
Gesucht ist die Biegelinie mit dem Ansatz von Ritz und zwei Trial-Funktionen.
Lösung mit Maxima
Beim Verfahren von Ritz arbeiten wir mit
- dem Prinzip vom Minimum der Potentiellen Energie und
- Ansatzfunktionen über die gesamte Länge des Balkens.
Header
Wir berechnen die Potentielle Energie U des Systems in Abhängigkeit von den generalisierten Koordinaten Wi und erhalten aus
die Gleichung für den gesuchten Koeffizienten Wi der Trial-Funktionen.
/*******************************************************/
/* MAXIMA script */
/* version: wxMaxima 15.08.2 */
/* author: Andreas Baumgart */
/* last updated: 2018-02-16 */
/* ref: TMC, Labor 3 */
/* description: Ritz approach to EBB, load-case 5 */
/* */
/*******************************************************/
/* declare variables and functions */
declare("Π", alphabetic); /* strain energy */
assume(l>0);
Declarations
Um die Lösung dimensionslos zu machen, nutzen wir die analytische Lösung des Problems , hier die Beträge der maximalen Auslenkung des Balkens und der Verdrehung des Balkens am Momenten-Angriffspunkt hier für a = ℓ/2:
- .
Mit diesen Skalierungsfaktoren muss für α=1/2 die maximale Auslenkung und die maximale Verdrehung im Momenten-Angriffspunkt nahezu eins sein.
Dimensionslose Orts-Koordinaten sind
- .
/*anayltic solution */
analytic: w(xi) = M*l^2/(2*EI)*(xi^3/3+alpha^2*xi-2*alpha*xi+(2*xi)/3
/* foeppel-function */
- (if xi<alpha then 0 else xi-alpha)^2);
/* make dim'less with load case #5 */
dimless:[[W = M*l^2/(72*sqrt(3)*EI)*q[w],
Phi = M*l/(12*EI)*q[phi]],
[x=xi*l,
a=alpha*l]];
Formfunctions
Gesucht ist hier ein Ansatz mit zwei Trial Functions, also
und den gesuchten Koeffizienten W1 und W2. Die Formfunktionen ϕi(x) müssen dabei alle geometrischen Randbedingungen erfüllen, also:
Die Funktionen müssen nicht die Randbedingungen für Schnittmomente in A und B erfüllen - schließlich suchen wir nach einer Näherungslösung!
Um die Funktion ϕi(x) zu konstruieren, gibt es zwei Ansätze:
- Wir setzen die Funktionen anschaulich aus Nullstellen xN zusammen: dazu nehmen wir das Produkt aus (xN-x), hier mit mindestens einer Nullstelle in xN=0 und in xN=ℓ. In dimensionslosen Koordinaten ist dann
- .
- .
- ,
- .
- Dabei gehen wir von der - zunächst - allgemeinen Formulierung
- .
- .
Für x=a ist die Auslenkung w(a) = W und die Steigung w'(a) = Φ - die beiden Eigenschaften sind in den Trial-Functions vollständig entkoppelt. Und mit diesen etwas komplizierten ϕs arbeiten wir im folgenden. So sehen sie aus für α=7/10.
/* derive trial-function(s) */
trial: w(x) = sum(c[i]*x^i,i,0,3);
GBC: [subst([x=0], subst(trial,w(x)) )= 0,
subst([x=l], subst(trial,w(x)) )= 0,
subst([x=a], subst(trial,w(x)) )= W,
subst([x=a],diff(subst(trial,w(x)),x))= Phi];
C: makelist(c[i],i,0,3);
sol[1] : solve(GBC,C)[1];
trial: ratsimp(subst(sol[1],trial));
/* trial function printout .... */
trials : ratsimp(subst(dimless[2],[phi[1]=coeff(expand(subst(trial,w(x))),W),
phi[2]=coeff(expand(subst(trial,w(x))),Phi)]));
print(trials)$
preamble: "set yrange [] reverse";
plot2d(subst([alpha=7/10],subst(trials,[phi[1],phi[2]/l])),[xi,0,1],
[legend, "ϕ1","ϕ2/ℓ"],
[gnuplot_preamble, preamble],
[title, "trial-functions für α=7/10"],
[xlabel, "ξ →"],
[ylabel, "ϕ →"] );
Potential Energy
Für die Gleichgewichtsbedingungen setzten wir Π (aus Abschnitt Euler-Bernoulli-Balken) und A in U ein und schreiben die skalare Gleichung allgemein in Matrizenform an. Dabei müssen wir
berücksichtigen und erhalten mit
das Potential in Matrix-Schreibweise:
- .
In der Spaltenmatrix der unbekannten Koordinaten
stehen nun die zwei Unbekannten W und Φ. Einsetzen der Ansatzfunktion in die Formänderungsenergie und die Arbeitsfunktion liefern für A und b:
- ,
- .
✔ Arbeiten mit Matlab: |
In numerischen Anwendungen - zum Beispiel mit Matlab - kommen wir mit der parametrischen Darstellung in α nicht durch. Wir können auch nicht erst das Potential aufschreiben und durch Ableiten die Gleichgewichtsbedingungen anschreiben. Da hilft es, sich klar zu machen, dass die Koeffizienten der System-Matrix A aus
kommen. Einfach wird es, wenn die Trial-Functions Polynome sind (bei uns sind sie deshalb immer Polynome). Dann bieten die Matlab-Werkzeuge zur Polynom-Manipulation ein praktisches Instrumentarium, um
zu bestimmen. Dieser Ansatz liefert z.B.
|
/* define potential energy of system */
PMPE : [U = Π - A,
Π = 1/2*EI*'integrate('diff(w(x),x,2)^2,x,0,l),
A = M*Phi(a)];
PMPE: subst(Phi(a) = subst([x=a],diff(subst(trial,w(x)),x)),
subst(trial,
subst(PMPE[3],subst(PMPE[2], PMPE[1]))));
PMPE : expand(ev(PMPE,nouns));
/* print system matrices */
print("A = ", 2*ratsimp(subst(dimless[2],matrix([coeff(subst(PMPE,U),W,2),coeff(coeff(subst(PMPE,U),W),Phi)/2],
[coeff(coeff(subst(PMPE,U),W),Phi)/2,coeff(subst(PMPE,U),Phi,2)]))))$
print("b = ",- ratsimp(matrix([coeff(coeff(subst(PMPE,U),W,1),Phi,0)],[coeff(coeff(subst(PMPE,U),Phi,1),W,0)])))$
Equilibrium Conditions
Diese Gleichung erfüllt die Gleichgewichtsbedingungen
- ,
wenn
- .
/* equilibrium condition */
equcon: ['diff(U,W) = 0,'diff(U,Phi) = 0]$
equcon: subst(PMPE,equcon)$
equcon: ev(equcon,nouns)$
equcon: ratsimp(subst(dimless[2],equcon));
Solving
Auflösen der Gleichungen nach den unbekannten Koordinaten W und Φ liefert
- .
Noch einfacher wird das Ergebnis mit den dimensionslosen Koordinaten
zu
- .
/* solve */
sol[2] : ratsimp(solve(equcon,[W,Phi]))[1];
/* ... or in dimensionless coordinates */
sol[3] : ratsimp(solve(subst(dimless[1],equcon),[q[w],q[phi]]))[1];
/* approximated solution */
ritz : w(xi)=ratsimp(subst(sol[2],subst(dimless[2],rhs(trial))));
Post-Processing
Die gesuchten Koordinaten qW und qΦ sind dimensionslos. Wir können sie direkt für verschiedene Werte von α auftragen.
Dies ist nicht die Biegelinie des Balkens! Man sieht aber - mit etwas Übung - direkt aus dieser Darstellung die Charakteristika der Lösung:
- die Punkt-Symmetrie der Lösung für α=1/2,
- die schlechte Approximation der Lösung für α=1/2: qΦ sollte dort nahe "1" sein, um die analytische Lösung gut abzubilden.
Und so sieht die normierte Biegelinie des Balkens im vergleich von Ritz-Näherung zu analytischer Lösung für verschiedene Werte von a aus:
Die dicken Linien gehören zu Näherung nach dem Ritz-Ansatz, die dünnen zur analytischen Lösung. Besonders für α=1/2 liefert der Ritz-Ansatz kein überzeugendes Ergebnis. Hier müssten wir mehr Trial-Functions "spendieren".
✔ Schnittmomenten-Verlauf: |
Probieren Sie aus, wie gut der Ritz-Ansatz den Verlauf des Schnittmoments approximiert! |
/* post-processing */
/* plot solutions */
preamble: "set yrange [] reverse";
plot2d([subst(sol[3],q[w]),subst(sol[3],q[phi])],[alpha,0,1],
[legend, "q[w]", "q[Φ]"],
[gnuplot_preamble, preamble],
[xlabel, "α →"],
[ylabel, "q[w],q[Φ] →"] );
/* abbreviation for max. displacement */
wH : subst([q[w]=1],subst(dimless[1],W));
/* plot w(x) for different αs */
/* and compare analytic with Ritz-solution */
leg : append([legend], makelist(simplode (["α = ",i,"/10"]),i,1,9,2));
toPlot : [makelist(subst([alpha=i/10],ratsimp(subst(ritz,w(xi))/wH)), i,1,9,2),
makelist(subst([alpha=i/10],ratsimp(subst(analytic,w(xi))/wH)), i,1,9,2)];
plot2d(append(toPlot[1],toPlot[2]),[xi,0,1],
leg,
[color, green, blue, red, magenta, black],
[style, [lines,3], [lines,3], [lines,3], [lines,3], [lines,3], [lines,1], [lines,1], [lines,1], [lines,1], [lines,1]],
[gnuplot_preamble, preamble],
[xlabel, "x/l →"],
[ylabel, "w(x)/W →"] );
Links
- ...
Literature
- ...