43 this =
this@models.beam.Beam(model, material, pointsidx);
53 M_u_block =
c(12) * [2 1; 1 2];
54 M_phi_block =
c(15) * [2 1; 1 2];
56 d1 = 12*(1680*
c(2) + 294*
c(7) + 13*
c(6));
57 d2 = 4*
l^2*(126*
c(2) + 21*
c(7) +
c(6));
58 n1 = 2*
l*(1260*
c(2) + 231*
c(7) + 11*
c(6));
59 n2 =
l*(2520*
c(2) + 378*
c(7) + 13*
c(6));
60 b1 = 18*(560*
c(2) + 84*
c(7) + 3*
c(6));
61 b2 = 3*
l^2*(168*
c(2) + 28*
c(7) +
c(6));
63 factor1 =
c(9)*
l / (420 * (12*
c(1) +
c(5))^2 );
78 d2 = 4*(360*
c(2) + 15*
c(7) +
c(6));
79 n1 = 3*
c(3)*(-60*
c(1) +
c(5));
80 b2 = 720*
c(2) - 60*
c(7) -
c(6);
81 factor2 =
c(11)*
l / (30 * (12*
c(1) +
c(5))^2 );
94 M = [M_u_block zeros(2,2) zeros(2,4) zeros(2,4);
95 zeros(2,2) M_phi_block zeros(2,4) zeros(2,4);
96 zeros(4,2) zeros(4,2) M_v+M_theta zeros(4,4);
97 zeros(4,2) zeros(4,2) zeros(4,4) M_w+M_psi];
99 M = this.
TG * M * this.
TG^
t;
102 index_lok = [1 5 9 3 10 6 2 7 11 4 12 8];
103 M = M(index_lok,index_lok);
132 K_u_block =
c(13) * [1 -1; -1 1];
134 K_phi_block =
c(14)* [1 -1; -1 1];
138 d2 = 4*
c(1)*(3*
c(1) +
c(5));
140 b2 = 2*
c(1)*(
c(5) - 6*
c(1));
141 factor3 = 1 / (
l * (12*
c(1) +
c(5)) );
143 K_v_block = factor3 * [
149 K_w_block = factor3 * [
155 K = [K_u_block zeros(2,2) zeros(2,4) zeros(2,4);
156 zeros(2,2) K_phi_block zeros(2,4) zeros(2,4);
157 zeros(4,2) zeros(4,2) K_v_block zeros(4,4);
158 zeros(4,2) zeros(4,2) zeros(4,4) K_w_block];
160 K = this.
TG * K * this.
TG^
t;
163 index_lok = [1 5 9 3 10 6 2 7 11 4 12 8];
164 K = K(index_lok,index_lok);
199 f_u = 0.5 *
l * [1; 1; 0; 0];
200 f_v =
l/12 * [6;
l; 6; -
l];
201 f_w =
l/12 * [6; -
l; 6;
l];
203 f = this.
TG * (blkdiag(f_u, f_v, f_w) * q_lok);
206 index_lok = [1 5 9 3 10 6 2 7 11 4 12 8];
240 u_lok = this.
TG^
t * u;
243 D = diag([
c(13)*L,
c(3)/L,
c(3)/L]);
244 E = diag([
c(14)*L,
c(1),
c(1)]);
248 num_gauss_points = 3;
249 switch (num_gauss_points)
256 s = 0.5*L * [ (1-sqrt(1/3)), (1+sqrt(1/3)) ];
260 s = 0.5*L * [ (1-sqrt(3/5)), 1, (1+sqrt(3/5)) ];
261 w = 0.5*L * 1/9 * [5 8 5];
264 s = 0.5*L * [ ( 1 - sqrt( 3/7 + 2/7*sqrt(6/5) ) ),
265 ( 1 - sqrt( 3/7 - 2/7*sqrt(6/5) ) ),
266 ( 1 + sqrt( 3/7 - 2/7*sqrt(6/5) ) ),
267 ( 1 + sqrt( 3/7 + 2/7*sqrt(6/5) ) )];
268 w = 0.5*L * 1/36 * [18-sqrt(30), 18+sqrt(30), 18+sqrt(30), 18-sqrt(30)];
271 s = 0.5*L * [ 1 - 1/3 * sqrt( 5 + 2*sqrt(10/7) ),
272 1 - 1/3 * sqrt( 5 - 2*sqrt(10/7) ),
274 1 + 1/3 * sqrt( 5 - 2*sqrt(10/7) ),
275 1 + 1/3 * sqrt( 5 + 2*sqrt(10/7) )];
276 w = 0.5*L * 1/900 * [322 - 13*sqrt(70), 322 + 13*sqrt(70), 512, 322 + 13*sqrt(70), 322 - 13*sqrt(70)];
279 s = 0.5*L * [ (1-sqrt(3/5)), 1, (1+sqrt(3/5)) ];
280 w = 0.5*L * 1/9 * [5 8 5];
285 S_e1 = [0 0 0; 0 0 -1; 0 1 0];
289 N = models.beam.StraightBeam.beam_shape_functions(s(i), L,
c);
294 N1_prime = N_prime(1:3,:);
295 N2_prime = N_prime(4:6,:);
298 E_lin = N1_prime + S_e1 * N2;
299 E_skw = N1_prime - S_e1 * N2;
301 E_nl_1 = 0.125 * ( E_skw(2,:)
" * E_skw(2,:) + E_skw(3,:) " * E_skw(3,:) );
302 E_nl_2 = 0.5 * N2(1,:)^
t * E_skw(3,:);
303 E_nl_3 = 0.5 * N2(1,:)^
t * E_skw(2,:);
307 E_2 = E_nl_2 + E_nl_2^
t;
308 E_3 = E_nl_3 + E_nl_3^
t;
310 E_nonlin = [u_lok
" * E_nl_1; u_lok " * E_nl_2; u_lok^t * E_nl_3];
311 dE_nonlin = [u_lok
" * E_1; u_lok " * E_2; u_lok^t * E_3];
312 dE = (E_lin + dE_nonlin);
315 eps = (E_lin + E_nonlin) * u_lok;
318 kap = N2_prime * u_lok;
326 U_pot = U_pot + w(i) * ( eps
" * F + kap " * M);
328 R = R + w(i) * ( dE
" * F + N2_prime " * M);
330 K = K + w(i) * ( dE
" * D * dE + N2_prime " * E * N2_prime +
F(1)*E_1 +
F(2)*E_2 +
F(3)*E_3 );
334 K = this.
TG * K * this.
TG^
t;
356 N_u = [-1/L 0 0 0 0 0 1/L 0 0 0 0 0];
357 N_phi = [0 0 0 -1/L 0 0 0 0 0 1/L 0 0];
359 nenner_y = 1/(L * (12*EIy + GAsLL));
360 nenner_z = 1/(L * (12*EIz + GAsLL));
361 nenner2_y = 1/(12*EIy + GAsLL);
362 nenner2_z = 1/(12*EIz + GAsLL);
364 V_v1 = nenner_y * (6*GAs * s^2 - 6*GAsL * s - 12*EIy);
365 V_theta1 = nenner_y * (3*GAsL * s^2 - 4*s*(3*EIy + GAsLL) + L*(6*EIy + GAsLL));
366 V_v2 = -nenner_y * (6*GAs * s^2 - 6*GAsL * s - 12*EIy);
367 V_theta2 = nenner_y * (3*GAsL * s^2 + 2*s*(6*EIy - GAsLL) - 6*EIy*L);
369 N_v = [0 V_v1 0 0 0 V_theta1 0 V_v2 0 0 0 V_theta2];
372 W_w1 = nenner_z * (6*GAs * s^2 - 6*GAsL * s - 12*EIz);
373 W_psi1 = -nenner_z * (3*GAsL * s^2 - 4*s*(3*EIz+GAsLL) + L*(6*EIz + GAsLL));
374 W_w2 = -nenner_z * (6*GAs * s^2 - 6*GAsL * s - 12*EIz);
375 W_psi2 = -nenner_z * (3*GAsL * s^2 + 2*s*(6*EIz - GAsLL) - 6*EIz*L);
377 N_w = [0 0 W_w1 0 W_psi1 0 0 0 W_w2 0 W_psi2 0];
379 Psi_w1 = nenner_z *6*GAs * (L - 2*s);
380 Psi_psi1 = nenner2_z * 6*GAs * s - nenner_z * 4*(3*EIz + GAsLL);
381 Psi_w2 = nenner_z * 6*GAs * (2*s - L);
382 Psi_psi2 = nenner2_z * 6*GAs * s + nenner_z * 2*(6*EIz - GAsLL);
384 N_psi = [0 0 Psi_w1 0 Psi_psi1 0 0 0 Psi_w2 0 Psi_psi2 0];
386 Theta_v1 = nenner_y * 6*GAs * (2*s - L);
387 Theta_theta1 = nenner2_y * 6*GAs * s - nenner_y * 4*(3*EIy + GAsLL);
388 Theta_v2 = nenner_y * 6*GAs * (L - 2*s);
389 Theta_theta2 = nenner2_y * 6*GAs * s + nenner_y * 2*(6*EIy - GAsLL);
391 N_theta = [0 Theta_v1 0 0 0 Theta_theta1 0 Theta_v2 0 0 0 Theta_theta2];
393 N = [N_u; N_v; N_w; N_phi; N_psi; N_theta];
418 function
plot(p,u1,u2,col1,col2,plot_options) {
433 p = x/L*p2 + (L-x)/L*p1;
434 col = round(x/L*col2 + (L-x)/L*col1);
440 u_lok = zeros(6,
split+2);
442 u_lok(:,
split+2) = u2;
445 N_U = models.beam.StraightBeam.beam_shape_functions(x(i), L,
c);
446 u_lok(:,i) = N_U * u_nodes;
449 u_glob = [
T * u_lok(1:3,:);
T * u_lok(4:6,:)];
455 if (plot_options.centerline)
460 plot3(p([i i+1],1) + u_glob(1,[i i+1])^
t, ...
461 p([i i+1],2) + u_glob(2,[i i+1])^
t, ...
462 p([i i+1],3) + u_glob(3,[i i+1])^
t, ...
463 " LineWidth ", plot_options.centerline, ...
464 " Color ", 0.5 * (cmap(col(i),:)+cmap(col(i+1),:)) );
468 if (plot_options.endmarker)
470 plot3(p(1,1) + u_glob(1,1)
" , p(1,2) + u_glob(2,1) ", ...
471 p(1,3) + u_glob(3,1)
" , "+^
t, ...
472 " LineWidth ", plot_options.endmarker,
" Color ", cmap(col(1),:) );
476 " LineWidth ", plot_options.endmarker,
" Color ", cmap(col(
split+2),:) );
480 if (plot_options.crosssection ~= 0)
484 angle = 0 : (2*pi/N_angle) : 2*pi;
486 xx = zeros(1, N_angle+1);
487 yy = R_cross * cos(angle);
488 zz = R_cross * sin(angle);
490 COR_lok = [xx; yy; zz];
496 rot_angle = norm([phi psi theta]);
497 S_rot = [0 -theta psi; theta 0 -phi; -psi phi 0];
500 if (plot_options.crosssection == 1)
501 ROT = eye(3) + S_rot;
502 elseif (plot_options.crosssection == 2)
504 ROT = eye(3) + S_rot + 0.5*S_rot*S_rot;
507 if (rot_angle > 1e-9)
508 ROT = eye(3) + sin(rot_angle)/rot_angle * S_rot + (1-cos(rot_angle))/rot_angle^2 * S_rot*S_rot;
514 COR_u =
T * ROT*COR_lok;
515 col_act = cmap(col(i),:);
516 plot3(p(i,1) + u_glob(1,i) + COR_u(1,:), p(i,2) + u_glob(2,i)+ COR_u(2,:), p(i,3) + u_glob(3,i) + COR_u(3,:),
" Color ", col_act);
543 dx = (m.Points(pi(2), 1) - m.Points(pi(1), 1));
544 dy = (m.Points(pi(2), 2) - m.Points(pi(1), 2));
545 dz = (m.Points(pi(2), 3) - m.Points(pi(1), 3));
546 l = sqrt( dx^2 + dy^2 + dz^2 );
550 e_x = [dx /
l; dy /
l; dz /
l];
551 e_y = [-e_x(2) e_x(1) 0]^
t;
553 e_y = [0 e_x(3) -e_x(2)]^
t;
555 e_z = [e_x(2)*e_y(3) - e_x(3)*e_y(2);
556 e_x(3)*e_y(1) - e_x(1)*e_y(3);
557 e_x(1)*e_y(2) - e_x(2)*e_y(1)];
558 e_y = e_y / norm(e_y);
559 e_z = e_z / norm(e_z);
560 this.
T= [e_x e_y e_z];
563 T([1 5 9], [1 5 9]) = this.
T;
565 T([2 7 11], [2 7 11]) = this.
T;
567 T([3 10 6], [3 10 6]) = this.
T;
569 T([4 12 8], [4 12 8]) = this.
T;
579 c(3) = m.k*m.G*m.A*
l;
589 c(8) =
c(1) * m.k*m.G*m.A;
595 c(11) = m.rho * m.Iy;
597 c(12) =
c(9) *
l / 6;
599 c(13) = m.E * m.A /
l;
601 c(14) = m.G*m.It /
l;
603 c(15) = m.rho*m.It*
l / 6;
624 N_u = [1-xsi 0 0 0 0 0 xsi 0 0 0 0 0];
625 N_phi = [0 0 0 1-xsi 0 0 0 0 0 xsi 0 0];
627 nenner_y = 1/(L * (12*EIy + GAsLL));
628 nenner_z = 1/(L * (12*EIz + GAsLL));
629 nenner2_y = 1/(12*EIy + GAsLL);
630 nenner2_z = 1/(12*EIz + GAsLL);
632 V_v1 = nenner_y * (2*GAs * s^3 - 3*GAsL * s^2 - 12*EIy * s) + 1;
633 V_theta1 = nenner_y * s * (GAsL * s^2 - 2*s*(3*EIy + GAsLL) + L*(6*EIy + GAsLL));
634 V_v2 = -nenner_y * s * (2*GAs * s^2 - 3*GAsL * s - 12*EIy);
635 V_theta2 = nenner_y * s * (GAsL * s^2 + s*(6*EIy - GAsLL) - 6*EIy*L);
637 N_v = [0 V_v1 0 0 0 V_theta1 0 V_v2 0 0 0 V_theta2];
640 W_w1 = nenner_z * (2*GAs * s^3 - 3*GAsL * s^2 - 12*EIz * s) + 1;
641 W_psi1 = -nenner_z * s * (GAsL * s^2 - 2*s*(3*EIz+GAsLL) + L*(6*EIz + GAsLL));
642 W_w2 = -nenner_z * s * (2*GAs * s^2 - 3*GAsL * s - 12*EIz);
643 W_psi2 = -nenner_z * s *(GAsL * s^2 + s*(6*EIz - GAsLL) - 6*EIz*L);
645 N_w = [0 0 W_w1 0 W_psi1 0 0 0 W_w2 0 W_psi2 0];
647 Psi_w1 = nenner_z *6*GAs * (L*s - s^2);
648 Psi_psi1 = nenner2_z * 3*GAs * s^2 - nenner_z * 4*(3*EIz + GAsLL) * s + 1;
649 Psi_w2 = nenner_z * 6*GAs * (s^2 - L*s);
650 Psi_psi2 = nenner2_z * 3*GAs * s^2 + nenner_z * 2*(6*EIz - GAsLL) * s;
652 N_psi = [0 0 Psi_w1 0 Psi_psi1 0 0 0 Psi_w2 0 Psi_psi2 0];
654 Theta_v1 = nenner_y * 6*GAs * (s^2 - L*s);
655 Theta_theta1 = nenner2_y * 3*GAs * s^2 - nenner_y * 4*(3*EIy + GAsLL) * s + 1;
656 Theta_v2 = nenner_y * 6*GAs * (L*s - s^2);
657 Theta_theta2 = nenner2_y * 3*GAs * s^2 + nenner_y * 2*(6*EIy - GAsLL) * s;
659 N_theta = [0 Theta_v1 0 0 0 Theta_theta1 0 Theta_v2 0 0 0 Theta_theta2];
661 N = [N_u; N_v; N_w; N_phi; N_psi; N_theta];
Model
The model that contains the structure element.
TG
c_theta = []; kappa = []; alphaA = []; The global transformation matrix (?)
The base class for any KerMor detailed model.
PointsIdx
Punkt-Index-Array.
function [ K , R , U_pot ] = getLocalTangentials(u)
Wertet tangentielle Steifigkeitsmatrix, "Residuumsvektor" (= Vektor der virtuellen internen Energie) ...
function initialize()
Initializes the straight beam element.
function M = getLocalMassMatrix()
Berechnet lokale Steifigkeits- und Massenmatrix eines Timoshenko-Balkens c kodiert Stoffparameter: c1...
Length
Indizes (lokal pro Knoten) in die die lokalen Matrizen assembliert werden Konvention: Freiheitsgrade ...
c
Effektive Stoffkonstanten.
function K = getLocalStiffnessMatrix()
Berechnet lokale Steifigkeitsmatrix eines Timoshenko-Balkens.
split
Speichert den anteil des jeweiligen Elements an der Gesamtsystemlänge.
function f = getLocalForceMatrix()
StraightBeam(models.BaseFullModel model, material, pointsidx)
static function N = beam_shape_functions(s, L, c)
Wertet (analytische) Basisfunktion für einen geraden Balken der Länge L und den Stoffkonstanten c an de...
function plot(p, u1, u2, col1, col2, plot_options)
Zeichnet Timoshenko Balken mit analytischen Ansatzfunktionen mit Stoffparametern c Die Ansatzfunktion...
function N = beam_shape_functions_derivative(s)
Wertet (analytische) Basisfunktion für einen geraden Balken der Länge L und den Stoffkonstanten c an de...
T
Transformationsmatrix für das lokale Koordinatensystem.