Gelöste Aufgaben/Kw99: Unterschied zwischen den Versionen

Aus numpedia
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 35: Zeile 35:
{{MyCodeBlock|title=Header
{{MyCodeBlock|title=Header
|text=
|text=
Diese Aufgabe mit der [[Randwertprobleme/Methoden zur Lösung von Randwertproblemen/Finite Elemente Methode|Methode der Finiten Elemente]] in [[Gelöste Aufgaben/Kw96|KW96]] gelöst.
Diese Aufgabe mit der [[Randwertprobleme/Methoden zur Lösung von Randwertproblemen/Finite Elemente Methode|Methode der Finiten Elemente]] in [[Gelöste Aufgaben/Kw96|KW96]] gelöst. Und im Vergleich zu [[Gelöste Aufgaben/Kw98|KW98]] wird hier die analytische Lösung mit dimensionslosen Koordinaten angeschreiben.
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
Zeile 43: Zeile 43:
/* author: Andreas Baumgart                            */
/* author: Andreas Baumgart                            */
/* last updated: 2017-09-06                            */
/* last updated: 2017-09-06                            */
/* ref: TM-C, Labor 1                                 */
/* ref: TM-C, Labor 1 - dimensionslos                  */
/* description                                         */
/* description: die Auslenkung w und die unabhängige  */
/*                                                     */
/*             Ortskoordinate werden dim'los gemacht  */
/*******************************************************/
/*******************************************************/
</syntaxhighlight>
</syntaxhighlight>
Zeile 53: Zeile 53:
{{MyCodeBlock|title=Declarations
{{MyCodeBlock|title=Declarations
|text=
|text=
Wir definieren die Parameter
Wir definieren die Formfunktionen für die Streckenlast
 
::<math>\begin{array}{l}{{\phi}_{0}}\left( \xi\right) :=1-\xi\\{{\phi}_{1}}\left( \xi\right) :=\xi\end{array} \text{ mit } \xi = \displaystyle\frac{x_1}{\ell_1}</math>.
::<math>\begin{array}{l}q_{A}=\frac{3\cdot kN}{m},\\l_{1}=\frac{7\cdot m}{10}, \\EI_{1}=33600\; N\; {{m}^{2}},\\{{l}_{2}}=\frac{21\; m}{40},\\EI_{2}=16800\; N\;{{m}^{2}},\\{{K}_{A}}=96\;kN\; m,\\{{k}_{C}}=\frac{22\;kN}{m},\\{{k}_{B}}=\frac{98\;kN}{m},\\{{q}_{B}}=\frac{12\; N}{mm},\\{{M}_{B}}=1470\; Nm\end{array}</math>.
 
und die Formfunktionen für die Streckenlast
 
::<math>\begin{array}{l}{{\phi}_{0}}\left( \xi\right) :=1-\xi\\{{\phi}_{1}}\left( \xi\right) :=\xi\end{array}</math>.
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
/* system parameter */
/* system parameter */
units  : [mm = m/1000, cm = m/100];
params: [EI[2]=EI[1]/2,
params : [q[A]=3*N/mm, l[1]=700*mm, EI[1] = 2.1*10^11*N/m^2 * 3*cm*(4*cm)^3/12];
        K[A]=EI[1]/l[1],
simple : [l[2] = 3/4*l[1], EI[2] = EI[1]/2,
        k[B]=0,
          K[A]=2*EI[1]/l[1], k[C] = 512/229*EI[1]/l[1]^3, k[B] = EI[1]/l[1]^3,  
        k[C] = EI[1]/l[1]^3,
          q[B] = 4*q[A], M[B] = q[A]*l[1]^2];
        q[B]=4*q[A],
 
        l[2]=l[1]/2,
params : append(params,makelist(lhs(simple[i])=subst(params,rhs(simple[i])),i,1,length(simple)));
        M[B] = 5*q[A]*l[1]^2];
params : subst(units,params);


/* form - functions  */
/* form - functions  */
Zeile 78: Zeile 72:
}}
}}


<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Formfunctions
|text=
In Bereich I und II gilt dieselbe Bewegungs-Differentialgleichung


::<math>E\; I_i w_i^{IV}(x_i) = q(x_i) ,\;\; i=\{1,2\} \text{ mit } q(x_i) = q_0\cdot\phi_0(\xi) + q_1\cdot\phi_1(\xi)</math>,


die wir durch Integration lösen und dann bereichsweise anpassen.
/* system parameter */
params: [EI[2]=EI[1]/2,
        K[A]=EI[1]/l[1],
        k[B]=0,
        k[C] = EI[1]/l[1]^3,
        q[B]=4*q[A],
        l[2]=l[1]/2,
        M[B] = 5*q[A]*l[1]^2];


So gilt für Bereich II: ''q<sub>0</sub> = 0'' und ''q<sub>1</sub> = 0''.
/* form - functions  */
phi[0](xi) := 1 - xi;
phi[1](xi) :=     xi;


Die allgemeine Lösung ist mit


::<math>\displaystyle \phi_i(x) = \frac{dw(x)}{dx}</math>
<!-------------------------------------------------------------------------------->
 
{{MyCodeBlock|title=Formfunctions
... für Bereich I:
|text=
 
Y
::<math>\begin{array}{l} {{w}_{1}}\left( x\right) :=\frac{120\cdot {{l}_{1}}\cdot {{C}_{1,0}}+120\cdot {{l}_{1}}\cdot {{C}_{1,1}}\cdot x+60\cdot {{l}_{1}}\cdot {{C}_{1,2}}\cdot {{x}^{2}}+20\cdot {{l}_{1}}\cdot {{C}_{1,3}}\cdot {{x}^{3}}+5\cdot {{l}_{1}}\cdot {{x}^{4}}\cdot {{q}_{A}}+{{x}^{5}}\cdot \left( {{q}_{B}}-{{q}_{A}}\right) }{120\cdot {{l}_{1}}\cdot {{\mathit{EI}}_{1}}}\\ {{\phi}_{1}}\left( x\right) :=\frac{120\cdot {{l}_{1}}\cdot {{C}_{1,1}}+120\cdot {{l}_{1}}\cdot {{C}_{1,2}}\cdot x+60\cdot {{l}_{1}}\cdot {{C}_{1,3}}\cdot {{x}^{2}}+20\cdot {{l}_{1}}\cdot {{x}^{3}}\cdot {{q}_{A}}+5\cdot {{x}^{4}}\cdot \left( {{q}_{B}}-{{q}_{A}}\right) }{120\cdot {{l}_{1}}\cdot {{\mathit{EI}}_{1}}}\\ {{M}_{1}}\left( x\right) :=-\frac{120\cdot {{l}_{1}}\cdot {{C}_{1,2}}+120\cdot {{l}_{1}}\cdot {{C}_{1,3}}\cdot x+60\cdot {{l}_{1}}\cdot {{x}^{2}}\cdot {{q}_{A}}+20\cdot {{x}^{3}}\cdot \left( {{q}_{B}}-{{q}_{A}}\right) }{120\cdot {{l}_{1}}}\\ {{Q}_{1}}\left( x\right) :=-\frac{120\cdot {{l}_{1}}\cdot {{C}_{1,3}}+120\cdot {{l}_{1}}\cdot x\cdot {{q}_{A}}+60\cdot {{x}^{2}}\cdot \left( {{q}_{B}}-{{q}_{A}}\right) }{120\cdot {{l}_{1}}} \end{array}</math>
 
... für Bereich II:
 
::<math>\begin{array}{l} {{w}_{2}}\left( x\right) :=\frac{120\cdot {{l}_{2}}\cdot {{C}_{2,0}}+120\cdot {{l}_{2}}\cdot {{C}_{2,1}}\cdot x+60\cdot {{l}_{2}}\cdot {{C}_{2,2}}\cdot {{x}^{2}}+20\cdot {{l}_{2}}\cdot {{C}_{2,3}}\cdot {{x}^{3}}}{120\cdot {{l}_{2}}\cdot {{\mathit{EI}}_{2}}}\\ {{\phi}_{2}}\left( x\right) :=\frac{120\cdot {{l}_{2}}\cdot {{C}_{2,1}}+120\cdot {{l}_{2}}\cdot {{C}_{2,2}}\cdot x+60\cdot {{l}_{2}}\cdot {{C}_{2,3}}\cdot {{x}^{2}}}{120\cdot {{l}_{2}}\cdot {{\mathit{EI}}_{2}}}\\ {{M}_{2}}\left( x\right) :=-\frac{120\cdot {{l}_{2}}\cdot {{C}_{2,2}}+120\cdot {{l}_{2}}\cdot {{C}_{2,3}}\cdot x}{120\cdot {{l}_{2}}}\\ {{Q}_{2}}\left( x\right) :=-{{C}_{2,3}} \end{array}</math>.
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
/* solve ....*/
Y</syntaxhighlight>
dgl : EI[i]*diff(w(x),x,4) = q[0]*phi[0](x/l[i]) + q[1]*phi[1](x/l[i]);
}}
/* generic solution */
displ : solve(integrate(integrate(integrate(integrate(dgl,x),x),x),x),w(x));
sections: [[i=1, %c4=C[1,0], %c3=C[1,1], %c2=C[1,2], %c1=C[1,3], q[0]=q[A], q[1]=q[B]],
          [i=2, %c4=C[2,0], %c3=C[2,1], %c2=C[2,2], %c1=C[2,3], q[0]= 0  , q[1]= 0  ]];
 
/* section I */
define(  w[1](x),  subst(sections[1],subst(displ,w(x))));
define(Phi[1](x),  diff(w[1](x),x  ));
define(  M[1](x), -EI[1]*diff(w[1](x),x,2));
define(  Q[1](x), -EI[1]*diff(w[1](x),x,3));


/* section II */
define(  w[2](x),  subst(sections[2],subst(displ,w(x))));
define(Phi[2](x),  diff(w[2](x),x  ));
define(  M[2](x), -EI[2]*diff(w[2](x),x,2));
define(  Q[2](x), -EI[2]*diff(w[2](x),x,3));
</syntaxhighlight>
}}


<!-------------------------------------------------------------------------------->
<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Boundary Conditions
|text=
Für die 2*4 = 8 Integrationskonstanten
Für die 2*4 = 8 Integrationskonstanten


Zeile 178: Zeile 151:


für die Integrationskonstanten.
für die Integrationskonstanten.
{{MyCodeBlock|title=Boundary Conditions
|text=
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>

Version vom 31. März 2021, 12:28 Uhr


Aufgabenstellung

Ein Stab ABC ist durch eine lineare veränderliche Streckenlast q mit den Eckwerten qA in A und qB in B sowie dem Moment MB in B belastet. Der Stab (E-Modul: E) besteht aus zwei Sektionen mit den Längen l1 bzw. l2 sowie den Flächenmomenten I1 bzw. I2. Der Stab ist in A durch ein gelenkiges Festlager, in C durch eine Schiebehülse gelagert, in B sind die beiden Sektionen fest miteinander verbunden. Die Feder in A ist eine Drehfester mit Steifigkeit KA, die Federn in B und C sind Translationsfedern mit den Steifigkeiten kB, kC.


Lageplan

Gesucht ist die analytische Lösung für den Euler-Bernoulli-Balken. Im Vergleich zu Kw98 wird hier eine Lösung mit normierten Koordinaten versucht.

Systemparameter

Ermitteln Sie für ein Euler-Bernoulli-Modell die analytischen Verläufe der Schnittgrößen und Verschiebungen im Balken für diese Parameter:

Lösung mit Maxima

Die Aufgabe ist ein klassisches Randwertproblem:

  1. zwei Gebiete, in denen ein Euler-Bernoulli-Balken in AB und BC durch eine Streckenlast q belastet ist (in Bereich II ist die Streckenlast allerdings Null) und somit durch die Differentialbeziehung

    berschrieben wird.
  2. Rand- und Übergangsbedingungen in den Punkten A, B, C

Wir verwenden xi und ξi als Koordinaten je Bereich, in der Übersicht sieht das Randwertproblem so aus:

Rand
A
Bereich IÜbergang
B
Bereich IIRand
C


Header

Diese Aufgabe mit der Methode der Finiten Elemente in KW96 gelöst. Und im Vergleich zu KW98 wird hier die analytische Lösung mit dimensionslosen Koordinaten angeschreiben.


/*******************************************************/
/* MAXIMA script                                       */
/* version: wxMaxima 15.08.2                           */
/* author: Andreas Baumgart                            */
/* last updated: 2017-09-06                            */
/* ref: TM-C, Labor 1 - dimensionslos                  */
/* description: die Auslenkung w und die unabhängige   */
/*              Ortskoordinate werden dim'los gemacht  */
/*******************************************************/




Declarations

Wir definieren die Formfunktionen für die Streckenlast

.

/* system parameter */
params: [EI[2]=EI[1]/2,
         K[A]=EI[1]/l[1],
         k[B]=0,
         k[C] = EI[1]/l[1]^3,
         q[B]=4*q[A],
         l[2]=l[1]/2,
         M[B] = 5*q[A]*l[1]^2];

/* form - functions  */
phi[0](xi) := 1 - xi;
phi[1](xi) :=     xi;





/* system parameter */ params: [EI[2]=EI[1]/2,

        K[A]=EI[1]/l[1],
        k[B]=0,
        k[C] = EI[1]/l[1]^3,
        q[B]=4*q[A],
        l[2]=l[1]/2,
        M[B] = 5*q[A]*l[1]^2];

/* form - functions */ phi[0](xi) := 1 - xi; phi[1](xi) := xi;


Formfunctions

Y


Y




Für die 2*4 = 8 Integrationskonstanten

suchen wir jetzt die passenden Gleichungen aus Rand- und Übergangsbedingungen.

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.

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

Und das liefert das Gleichungssystem aus 8 Gleichungen

für die Integrationskonstanten.



Boundary Conditions


1+1




Prepare for Solver

Das Gleichungssystem wollen wir als

schreiben, also

Fehler beim Parsen (Unbekannte Funktion „\begin{pmatrix}“): {\displaystyle \begin{pmatrix}\frac{1}{{{\mathit{EI}}_{1}}} & 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & \frac{{{K}_{A}}}{{{\mathit{EI}}_{1}}} & -1 & 0 & 0 & 0 & 0 & 0\\ \frac{1}{{{\mathit{EI}}_{1}}} & \frac{{{\ell}_{{MyCodeBlock|title=Prepare for Solver |text= Das Gleichungssystem wollen wir als ::<math>\underline{\underline{A}}\cdot\underline{x}= \underline{b}}

schreiben, also

Fehler beim Parsen (Unbekannte Funktion „\begin{pmatrix}“): {\displaystyle \begin{pmatrix}\frac{1}{{{\mathit{EI}}_{1}}} & 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & \frac{{{K}_{A}}}{{{\mathit{EI}}_{1}}} & -1 & 0 & 0 & 0 & 0 & 0\\ \frac{1}{{{\mathit{EI}}_{1}}} & \frac{{{\ell}_{{MyCodeBlock|title=Prepare for Solver |text= Das Gleichungssystem wollen wir als ::<math>\underline{\underline{A}}\cdot\underline{x}= \underline{b}}

schreiben, also

Die Matrix-Elemente sind für die Koeffizientenmatrix

und für die rechte Seite

.

/* augmented coeff matrix */
ACM: augcoefmatrix(BCs,ICs);
AA :   submatrix(ACM,9);
bb : - col(ACM,9);

for i: 1 thru 8 do
   print(simplode(["b[",i,"] = ", string(bb[i][1])]))$
for i: 1 thru 8 do
   for j: 1 thru 8 do
      if not AA[i][j] = 0 then
          print(simplode(["A[",i,",",j,"] = ", string(AA[i][j])]))$




Solving

Das Lösen des Gleichungssystems liefert

.

1+1




Post-Processing

Und die Ergebnisse können wir uns anschauen ...

... für w(x):

Biegelinie w(x)

... für Φ(x):

Kippung w'(x)

... für M(x):

Biegemoment M(x)

... für Q(x):

Querkraft 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

  • ...

Literature

  • ...