Gelöste Aufgaben/UEBH

Aus numpedia
Zur Navigation springen Zur Suche springen


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. 

Lageplan

Gesucht ist die Biegelinie mit dem Ansatz von Ritz und zwei Trial-Funktionen.


Lösung mit Maxima

Beim Verfahren von Ritz arbeiten wir mit

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:

  1. 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
    .
    Die zweite Funktion gewinnen wir, indem wir dieser Funktion eine weitere Nullstelle - z.B. im Kraft-Angriffspunkt - hinzufügen, also mit  (α-ξ) multiplizieren:
    .
    Die geforderten Nullstellen für die Erfüllung der geometrischen Randbedingungen bleiben so erhalten und wir haben eine weitere, linear von ϕ1(x) unabhängige Ansatzfunktion. Mit dieser Formulierung könnten wir nun arbeiten. Die gesuchten Koeffizienten W1 und 'W2'  ergeben sich dann aus der Gleichgewichtsbedingung des Prinzip vom Minimum der Potentiellen Energie. Allerdings machen diese Koeffizienten keinen "Sinn" - wir können ihnen im Problem keine anschauliche Bedeutung zumessen. Damit wir die Koeffizienten aber auch anschaulich deuten können, skalieren wir die ϕi(x) so, dass
    ,
    also
    .
    Das ist schon brauchbar: bei dieser Variante der Formulierung denken wir uns die Näherungslösung als Linearkombination einer jeweils - bzgl. x = ℓ/2 - punkt-symmetrischen und achsen-symmetrischen Trial-Function zusammengesetzt. Diesen Ansatz verfolgen wir in UEBO weiter. Wir können einen Schritt weiter zur Formulierung von anschaulich "denkbaren" Ansatzfunktionen gehen - hier im zweiten Weg:
  2. Dabei gehen wir von der  - zunächst - allgemeinen Formulierung
    mit den unbekannten ai aus. Von diesen vier verbrauchen wir zwei für die geometrischen Randbedingungen und zwei bleiben frei für die Wahl von anschaulichen Koordinaten der Verformung. Dazu wählen wir  
    .
    Trial-Functions ϕ(x)
    Hier ergibt sich
    .

    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

  • Ableitungen (polyder),
  • Produkte (conv),
  • Integrale (polyint) und
  • Funktionswerte (polyval)

zu bestimmen. Dieser Ansatz liefert z.B.

.
Und mit dieser Überlegung ist auch sofort klar, warum die System-Matrizen für diese Näherungslösungen immer symmetrisch sein müssen! (Ist es?)

/* 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

Parameterstudie: qW und qϕ über α

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/2qΦ 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:

Parameterstudie Biegelinie

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

  • ...