Gelöste Aufgaben/Kw50
Aufgabenstellung
Eine Brücke ABC der Masse mB und homogener Biegesteifigkeit EI ist in C gelenkig gelagert und in A sowie B mit einem Seil verbunden. Das undehnbare Seil wird dabei über eine kleine Rolle (Radius r ≪ ℓ) in D haftungsfrei geführt. In Punkt C ist die Brücke über eine Drehfeder der Steifigkeit KC mit dem Lager verbunden. In A steht eine Person der Masse mA.
Geben Sie die analytische Lösung für ein Euler-Bernoulli-Modell der Brücke in dimensiuonslosen Koordinaten an.
Ermitteln Sie für dabei die Verläufe der Schnittgrößen und Verschiebungen im Balken für diese Parameter:
Lösung mit Maxima
Die Aufgabe ist ein klassisches Randwertproblem mit
- zwei Gebieten, in denen ein Euler-Bernoulli-Balken in AB und BC durch eine Streckenlast q0 belastet ist und somit durch die Differentialbeziehung
- beschrieben wird;
- Rand- und Übergangsbedingungen in den Punkten A, B, C.
Die Biegesteifigkeit des Balkens ist konstant (nicht von "x" abhängig), wir können als den Index "i" beim Flächenmoment also weglassen.
Wir verwenden ein x bzw. ξ als Koordinaten in beiden Gebieten, in der Übersicht sieht das Randwertproblem also so aus:
Rand A | Bereich I | Übergang B | Bereich II | Rand C |
---|---|---|---|---|
Zusätzlich zum "klassischen" Randwertproblem haben wir hier eine geometrische Zwangsbedingung: Durch die Umlenkrolle ist die vertikale Bewegung in den Punkten A und B gekoppelt!
Wie? Das machen wir uns an einem Bild klar:
In linearer Näherung ist der Zusammenhang zwischen der Seil-Abwicklung ΔsA und der vertial-Verschibung WA in Punkt A
- .
Analog gilt für Punkt B
- .
Da das Seil undehnbar ist, gilt außerdem
Diese zusätzliche Bedingung ist das entscheidende Element dieser Aufgabe.
Header
In dieser Lösung arbeiten wir mit dimensionslosen Koordinaten für die unabhängige Koordinate x und die abhängige Koordinate w(x).
/*******************************************************/
/* MAXIMA script */
/* version: wxMaxima 18.10.1 */
/* author: Andreas Baumgart */
/* last updated: 2019-02-12 */
/* ref: TM-C, Labor 1, dimensionless representation */
/* description: finds the analytic solution for */
/* lab problem #1 */
/*******************************************************/
Declarations
Die Streckenlast auf den Balken ist natürlich seine Gewichtskraft, also
- .Geometrische Zusammenhänge müssen wir auch anschreiben, so für
mit
- .
Und wir wählen noch eine Bezugslänge ℓBez zu
aus der tabellierten Lösung für einen Kragbalken der Länge ℓ und einer Endlast mB g. Das erscheint nicht sonderlich schlau - es gibt Standard -Lastfälle die besser passen würden. Aber dann schleppen wir die ganze Zeit Koeffizienten wie z.B. 5/384 mit durch die Rechnungen - das macht die Arbeit unübersichtlich.
/* declare variational variables - see 6.3 Identifiers */
declare("Δs", alphabetic);
declare( "ϕ", alphabetic);
declare( "ℓ", alphabetic);
/* system parameters */
params: [K[C] = kappa*EI/ℓ[0],
q[0] = m[B]*g/ℓ[0],
m[A] = theta*m[B],
theta = 1/5,
kappa = 5];
geometry: [alpha[A] = 30*%pi/180,
alpha[B] = 60*%pi/180,
ℓ[1] = ℓ[0]-ℓ[2],
Δs[A] = W[A]*cos(%pi/2-alpha[A]),
Δs[B] = W[B]*cos(%pi/2-alpha[B]),
tan(alpha[B]) = H/ℓ[2],
tan(alpha[A]) = H/ℓ[0],
xi[1] = ℓ[1]/ℓ[0],
xi[2] = ℓ[2]/ℓ[0]];
geometry: ratsimp(solve(geometry,[alpha[A],alpha[B],ℓ[1],ℓ[2],Δs[A],Δs[B],H,xi[1],xi[2]])[1]);
/* reference length selected: */
dimless : ℓ[Bez] = 1/3*m[B]*g*ℓ[0]^3/(EI); /*cantilevered*/
Integration Of Differential Equation
In Bereich I und II gilt dieselbe Bewegungs-Differentialgleichung
- ,
die wir durch Integration lösen und dann bereichsweise an Rand- und Übergangsbedingungen anpassen. Diese Aufgabe wird etwas übersichtlicher, wenn wir die Auslenkung w und die Ortskoordinate x dimensionslos machen. So wählen wir:
und setzten für die Bezugslänge die Auslenkung eines Kragbalkens unter konstanter Streckenlast (hier qA) an.
Zusätzlich wählen wir eine unabhängige, dimensionslose Ortskoordinaten für die Bereich I und II, die ihren Ursprung in den Punkt A hat:
Mit den weiteren Gleichungen für
finden wir für Bereich i:
- .
/******************************************************/
/* Boundary Value Problem Formulation */
/* part I: field */
dgl : EI*ℓ[Bez]*diff(w(xi),xi,4)/ℓ[0]^4 = q[0];
dgl: subst(dimless,dgl);
/* generic solution */
displ : solve(integrate(integrate(integrate(integrate(dgl,xi),xi),xi),xi),w(xi));
sections: [[i=1, %c4=C[1,0], %c3=C[1,1], %c2=C[1,2], %c1=C[1,3]],
[i=2, %c4=C[2,0], %c3=C[2,1], %c2=C[2,2], %c1=C[2,3]]];
/* section I */
define( w[1](xi), ratsimp(subst(sections[1],subst(displ,ℓ[Bez]*w(xi)))));
define(Phi[1](xi), diff(w[1](xi),xi )/ℓ[0]^1);
define( M[1](xi), -EI*diff(w[1](xi),xi,2)/ℓ[0]^2);
define( Q[1](xi), -EI*diff(w[1](xi),xi,3)/ℓ[0]^3);
/* section II */
define( w[2](xi), ratsimp(subst(sections[2],subst(displ,ℓ[Bez]*w(xi)))));
define(Phi[2](xi), diff(w[2](xi),xi )/ℓ[0]);
define( M[2](xi), -EI*diff(w[2](xi),xi,2)/ℓ[0]^2);
define( Q[2](xi), -EI*diff(w[2](xi),xi,3)/ℓ[0]^3);
Boundary Conditions
Für die 2*4 = 8 Integrationskonstanten
suchen wir jetzt die passenden Gleichungen aus Rand- und Übergangsbedingungen. Und zusätzlich - und das ist hier besonders - brauchen wir noch eine Gleichung für die Seilkraft S.
Zur besseren Übersicht nennen wir die Schnitt-Momente und -Kräfte nach den jeweiligen Knotenpunkten A, B, C und fügen als Index ein + / - hinzu, um die Seite (+: rechts vom Knoten, -: links vom Knoten) zu kennzeichnen.
Die Normalkräfte N brauchen wir dabei nicht auszuwerten.
Aus Rand "A"
Geometrische Randbedingungen
Kraft- und Momenten-Randbedingungen |
Aus Übergang "B"
Geometrische Randbedingungen
Kraft- und Momenten-Randbedingungen |
Aus Rand "C"
Geometrische Randbedingungen
Kraft- und Momenten-Randbedingungen |
Aus Rand "D" (Umlenkrolle für das Seil)
Kinematische Verträglichkeit für das Abwickeln des Seils
|
Ein bisschen exotisch ist, dass wir nun neun Unbekannte haben, nämlich
Aber mit den Randbedingungen oben steht uns nun ein vollständiges Gleichungssystem für neun Unbekannte - die Integrationskonstanten und S - zur Verfügung.
/******************************************************/
/* Boundary Value Problem Formulation */
/* part II: boundary conditions */
node[A]: [ Q[1](0)+m[A]*g-S*sin(alpha[A]) = 0,
M[1](0) = 0];
node[B]: [ w[1](ℓ[1]/ℓ[0]) = w[2](ℓ[1]/ℓ[0]),
Phi[1](ℓ[1]/ℓ[0]) = Phi[2](ℓ[1]/ℓ[0]),
-Q[1](ℓ[1]/ℓ[0]) - S*sin(alpha[B]) +Q[2](ℓ[1]/ℓ[0]) = 0,
-M[1](ℓ[1]/ℓ[0]) + M[2](ℓ[1]/ℓ[0]) = 0];
node[C]: [ w[2](1) = 0,
-M[2](1) + K[C]*Phi[2](1) = 0];
node[D]: subst([W[A]=w[1](0), W[B]=w[1](ℓ[1]/ℓ[0])] ,subst(geometry,[Δs[A]+Δs[B] = 0]));
BCs : subst(dimless,append(node[A],node[B],node[C],node[D]));
scale: [1/ℓ[0], -1/ℓ[0]^2, EI/ℓ[0]^4, EI/ℓ[0]^3,
1, 1/ℓ[0]^2, EI/ℓ[0]^4, 1/ℓ[0]^2,
EI/ℓ[0]^4];
BCs : subst(geometry,subst(params,expand(scale*BCs)));
Prepare for Solver
Das Gleichungssystem wollen wir als
schreiben, also - hier nach Einsetzen der System-Parameter:
- .
/* integration constants = unknowns */
ICs : [C[1,0],C[1,1],C[1,2],C[1,3],C[2,0],C[2,1],C[2,2],C[2,3]];
ACM: augcoefmatrix(BCs,ICs);
/* system matrix and rhs */
AA : submatrix(ACM,9);
bb : - col(ACM,9);
/* print OLE */
print(subst(params,AA),"*",x,"=",subst(params,bb));
Solving
Das Lösen des Gleichungssystems liefert dann
- .
/* solving */
D : ratsimp(determinant(AA))$
[ P, L, U] : ratsimp(get_lu_factors(lu_factor(AA)))$
cc : ratsimp(linsolve_by_lu(AA,bb)[1])$
sol : makelist(ICs[i] = cc[i][1],i,1,8)$
Post-Processing
Und die Ergebnisse können wir uns anschauen ...
... für w(x):
... für Φ(x):
... für M(x):
... für Q(x):
... für die Lager-Reaktionskräfte
/* bearing forces and moments */
reactForces: [A[z] = Q[1](0),
M[A] = K[A]*Phi[1](0),
B[z] = k[B]*w[2](0),
C[z] = k[C]*w[2](1),
M[C] = M[2](1)];
expand(subst(dimless,subst(params,subst(sol, reactForces))));
/* plot displacements */
fcts: [[ w [1](xi), w [2](xi)],
[Phi[1](xi),Phi[2](xi)],
[ M [1](xi), M [2](xi)],
[ Q [1](xi), Q [2](xi)]];
facts: [1/l[Bez], l[1]/l[Bez], 1/(q[A]*l[1]^2), 1/(q[A]*l[1])];
textlabels : ["w(x)/(M[B]*l^2/EI[1])→", "w'(x)/(M[B]*l/EI[1])→", "M(x)/M[B]→", "Q(x)/(M[B]/l[1]→"];
for i: 1 thru 4 do(
f : expand(subst(dimless,subst(params,facts[i]*[subst(sol, fcts[i][1]),
subst(sol, fcts[i][2])]))),
r : subst(params,l[2]/l[1]),
preamble: if i<=2 then "set yrange [] reverse" else "set yrange []",
plot2d([[parametric, t, subst(t,xi,f[1]), [t,0,1]],
[parametric, 1+r*t, subst(t,xi,f[2]), [t,0,1]]],
[legend, "sec. I", "sec. II"],
[gnuplot_preamble, preamble],
[xlabel, "x/l[1] ->"],
[ylabel, textlabels[i]]))$
Links
- Aufgabe Kw51 (Lösung dieser Aufgabe mit dem Ansatz der Finiten Elemente)
- Aufgabe Kw52 (Lösung dieser Aufgabe mit dem Ansatz von Rayleigh-Ritz und Lagrange-Multiplikator)
- Aufgabe Kw53 (Lösung dieser Aufgabe mit dem Ansatz von Rayleigh-Ritz)
Literature
- ...