Gelöste Aufgaben/UEBJ
Aufgabenstellung
Der Euler-Bernoulli-Balken AB wird durch seine Gewichtskraft belastet. Er ist in A fest eingespannt und hat eine konstante Breite b sowie eine zwischen A und B linear veränderliche Höhe h.
Für diese Aufgabe gibt es in UEBI eine analytische Lösung - hier schauen wir uns an, wie sich die Qualität der Näherungslösungen mit der Steigerung der Anzahl der Trial-Functions ändert.
Gesucht ist die Biegeline und Schnittkraftverläufe mit dem Ansatz von Ritz und mehreren Trial-Funktionen.
Gegeben sind für den Balken:
- Länge ℓ, Breite b,
- E-Modul E, Dichte ρ und
- die Höhe h0=b und h1 jeweils in A und B; dazwischen ist die Höhe linear veränderlich.
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.
Um die Lösung dimensionslos zu machen, nutzen wir die analytische Lösung des einseitig fest eingespannten Balkens mit konstanten I unter einer konstanten Streckenlast q0. Hier ist die maximale Auslenkung
- .
Damit können wir uns die Lösungen dieses Problems als Vielfaches der analytischen Lösung eines ähnlichen Problems denken.
Header
In diesem Problem werden wir Lösungen zu verschiedenen Ansatzfunktionen miteinander vergleichen.
Es geht also nicht nur um die Berechnung einer Lösung - sondern vieler. Damit können wir uns die Lösungen dieses Problems als Vielfaches der analytischen Lösung eines ähnlichen Problems denken.
/*******************************************************/
/* MAXIMA script */
/* version: wxMaxima 15.08.2 */
/* author: Andreas Baumgart */
/* last updated: 2019-08-30 */
/* ref: TMC */
/* description: Rayley-Ritz-Solution for EBB */
/* with I(x) */
/*******************************************************/
Declarations
Wir arbeiten mit den System-Parametern
Für die numerische Lösung verwenden wir - wie in UEBI -
- .
/************************************************************/
/* declare variational variables - see 6.3 Identifiers */
declare( "ℓ", alphabetic);
/* system parameters */
params: [q(xi) = A(xi)*rho*g,
A(xi) = b*h(xi),
I(xi) = b*h(xi)^3/12,
h(xi) = H[0]*(1-xi)+ H[1]*xi];
params: append(params,
solve((H[0]+H[1])/2*b*ℓ*rho=m, rho));
geometry : [alpha=1/2];
dimless: [x = xi*ℓ, H[0]=b, H[1]=alpha*b];
/* load analytic solutions as discrete tables from UEBI */
file_search_maxima: append(file_search_maxima, ["C:/Users/abs384/OneDrive/Confluence Sources/UEBJ/"]);
batch("analyticSolFromUEBI.data")$
/* make equations of motion dim'less with load case #1 from Gross e.a., same as UEBI */
reference : [W[ref] = q[ref]*ℓ^4/8/EI[ref], Phi[ref] = q[ref]*ℓ^3/6/EI[ref], M[ref] = m*g*ℓ/2, Q[ref] = m*g, q[ref] = m*g/ℓ, EI[ref]=E*b*((H[0]+H[1])/2)^3/12];
Rayleigh-Ritz Approach
Gesucht ist hier ein Ansatz mit polynomialen Trial Functions. Wir probieren verschiedene Ansätze aus, die wir mit "i" kennzeichnen, also
und den gesuchten Koeffizienten Wij. Die ϕj müssen dabei alle geometrischen Randbedingungen erfüllen, also:
- .
Die Funktionen müssen nicht die Randbedingungen für Schnittlasten in B erfüllen - schließlich suchen wir nach einer Näherungslösung!
Diese Funktionen ϕj zu konstruieren ist einfach: wir brauchen lediglich eine doppelte Nullstelle in . Das erreichen wir, indem wir nur Polynome ab einem Grad ≥ 2 (also jmin=2) zulassen:
- .
Damit ist
- .
Die freien Koeffizienten Wij sind nun die anteiligen Auslenkungen in B.
Für die Gleichgewichtsbedingungen setzten wir die Formänderungsenergie Π (aus dem Abschnitt Euler-Bernoulli-Balken)
und die Arbeitsfunktion der Gewichtskraft A
in U ein und schreiben die skalare Gleichung allgemein in Matrizenform an. Dabei müssen wir
berücksichtigen und erhalten
- .
In der Spaltenmatrix
stehen nun zwischen einer und I-1 Gewichtungsfaktoren Wij : die gesuchten Unbekannten.
Die Gleichgewichtsbedingungen
- ,
liefern uns die benötigte Anzahl von Gleichungen, z.B. für i=3:
- .
Hier - für i=3 - ist
- .
/************************************************************/
/* Rayleigh-Ritz */
/* try different degrees of polyomials */
fcts: [];
sols: [];
polyMax : 4;
for poly:2 thru polyMax do (
/* trial function */
trial: w[poly](xi) = sum(W[ref]*W[poly,j]*xi^(j),j,2,poly),
/* potential energies */
/* define potential energy of system */
PMPE : [U = Pi - A,
Pi = 1/2*ℓ*'integrate(E*I(xi)*'diff(w[i](xi),xi,2)^2/ℓ^4,xi,0,1),
A = ℓ*'integrate(q(xi)*w[i](xi),xi,0,1)],
PMPE: subst(dimless,subst(params,subst(trial,subst([i=poly],PMPE)))),
PMPE: subst(PMPE[3],subst(PMPE[2], PMPE[1])),
PMPE : ev(PMPE,nouns),
/* equilibreium condition */
X : makelist(W[poly,j],j,2,poly),
equilibrium : ratsimp(subst(dimless,subst(reference,
makelist(diff(subst(PMPE, U),W[poly,j]) = 0,j,2,poly)))),
/* solve */
sol: ratsimp(solve(equilibrium,X)),
sols: append(sols, sol),
/* post-processing */
fcts: append(fcts, [ratsimp(subst(geometry,subst(sol,subst(trial,w[poly](xi)/W[ref]))))]),
print("done: #",poly))$
Post-Processing
Für die verschiedenen Ansätze (Polynimial-Grade der Trial-Functions) erhaltem wir Lösungen, die die analytische Lösung aus UEBI unterschiedlich gut approximieren. Hier wählen wir als Ansätze die Polynome bis zum Grad 2, 3 und 4.
Und so berechnen wir die normierten Absenkungen des Balkens für die verschiedenen Ansätze: Für Moment- und Querkraftverläufe erhalten wir
/************************************************************/
/* post - processing */
/* cross-sectional bending moment */
M : subst(geometry,ratsimp(subst(dimless,subst(reference,subst(params,-E*I(xi)*W[ref]*diff(fcts,xi,2)/ℓ^2/(m*g*ℓ/2))))))$
/* cross-sectional shear force */
Q : subst(geometry,ratsimp(subst(dimless,subst(reference,subst(params,-E*I(xi)*W[ref]*diff(fcts,xi,3)/ℓ^3/(m*g))))))$
fcts :append([[discrete, WA]], fcts)$
plot2d(fcts,[xi,0,1],
[gnuplot_preamble, "set yrange [] reverse"],
[legend, "analytic", "2nd Ord", "3rd Ord", "4th Ord", "5th Ord", "6th Ord"],
[xlabel, "x/ℓ->"], [ylabel, "<-w/w_ref"],
[style, [lines,2], [lines,1], [lines,1], [lines,1], [lines,1], [lines,1]]);
M :append([[discrete, MA]], M)$
plot2d(M,[xi,0,1],
[legend, "analytic", "p02","p03","p04","p05","p06","p07","p08","p09","p10","p11","p12"],
[xlabel, "x/ℓ->"], [ylabel, "M/(mg ℓ->"],
[style, [lines,2], [lines,1], [lines,1], [lines,1], [lines,1], [lines,1]]);
Q :append([[discrete, QA]], Q)$
plot2d(Q,[xi,0,1],
[legend, "analytic", "p02","p03","p04","p05","p06","p07","p08","p09","p10","p11","p12"],
[xlabel, "x/ℓ->"], [ylabel, "Q/mg->"],
[style, [lines,2], [lines,1], [lines,1], [lines,1], [lines,1], [lines,1]]);
Links
Literature
- ...