72 this =
this@models.beam.Beam(model, material, pointsidx(1:2));
73 this.
pc= pointsidx(3);
85 rhoJ = blkdiag(
c(7),
c(6),
c(6));
91 s = 0.5*L * [ (1-sqrt(3/5)), 1, (1+sqrt(3/5)) ];
93 w = 0.5*L * 1/9 * [5 8 5];
99 M = M + w(i) * (
c(5)*(N1
" *N1) + N2 "*rhoJ*N2 );
102 M = this.
TG * M * this.
TG^
t;
126 D = blkdiag(
c(3),
c(4),
c(4));
127 E = blkdiag(
c(2),
c(1),
c(1));
128 rhoJ = blkdiag(
c(7),
c(6),
c(6));
134 s = 0.5*L * [ (1-sqrt(3/5)), 1, (1+sqrt(3/5)) ];
136 w = 0.5*L * 1/9 * [5 8 5];
142 M = M + w(i) * (
c(5)*N1
" *N1 + N2 "*rhoJ*N2 );
146 B4 = this.
B(10:12,:);
148 K = L * (
B4" * E * B4 + B3 " * D *
B3);
150 K = this.
TG * K * this.
TG^
t;
175 s = 0.5*L * [(1-sqrt(3/5)), 1, (1+sqrt(3/5))];
177 w = 0.5*L * 1/9 * [5 8 5];
180 f = f + w(i) * N(1:3,:)
" *(this.Fren(s(i)/this.R) "*q_lok);
225 u_lok = this.
TG^
t * u;
228 D = blkdiag(
c(3),
c(4),
c(4));
229 E = blkdiag(
c(2),
c(1),
c(1));
233 num_gauss_points = 3;
234 switch (num_gauss_points)
241 s = 0.5*L * [ (1-sqrt(1/3)), (1+sqrt(1/3)) ];
245 s = 0.5*L * [ (1-sqrt(3/5)), 1, (1+sqrt(3/5)) ];
246 w = 0.5*L * 1/9 * [5 8 5];
249 s = 0.5*L * [ ( 1 - sqrt( 3/7 + 2/7*sqrt(6/5) ) ),
250 ( 1 - sqrt( 3/7 - 2/7*sqrt(6/5) ) ),
251 ( 1 + sqrt( 3/7 - 2/7*sqrt(6/5) ) ),
252 ( 1 + sqrt( 3/7 + 2/7*sqrt(6/5) ) )];
253 w = 0.5*L * 1/36 * [18-sqrt(30), 18+sqrt(30), 18+sqrt(30), 18-sqrt(30)];
256 s = 0.5*L * [ 1 - 1/3 * sqrt( 5 + 2*sqrt(10/7) ),
257 1 - 1/3 * sqrt( 5 - 2*sqrt(10/7) ),
259 1 + 1/3 * sqrt( 5 - 2*sqrt(10/7) ),
260 1 + 1/3 * sqrt( 5 + 2*sqrt(10/7) )];
261 w = 0.5*L * 1/900 * [322 - 13*sqrt(70), 322 + 13*sqrt(70), 512, 322 + 13*sqrt(70), 322 - 13*sqrt(70)];
264 s = 0.5*L * [ (1-sqrt(3/5)), 1, (1+sqrt(3/5)) ];
265 w = 0.5*L * 1/9 * [5 8 5];
270 S_e1 = [0 0 0; 0 0 -1; 0 1 0];
286 E_skw = E_lin - 2 * S_e1 * N2;
289 E_nl_1 = 0.125 * ( E_skw(2,:)
" * E_skw(2,:) + E_skw(3,:) " * E_skw(3,:) );
290 E_nl_2 = 0.5 * N2(1,:)^
t * E_skw(3,:);
291 E_nl_3 = 0.5 * N2(1,:)^
t * E_skw(2,:);
295 E_2 = E_nl_2 + E_nl_2^
t;
296 E_3 = E_nl_3 + E_nl_3^
t;
298 E_nonlin = [u_lok
" * E_nl_1; u_lok " * E_nl_2; u_lok^t * E_nl_3];
299 dE_nonlin = [u_lok
" * E_1; u_lok " * E_2; u_lok^t * E_3];
300 dE = (E_lin + dE_nonlin);
303 eps = (E_lin + E_nonlin) * u_lok;
314 U_pot = U_pot + w(i) * ( eps
" * F + kap " * M);
316 R = R + w(i) * ( dE
" * F + B4 " * M);
317 K = K + w(i) * ( dE
" * D * dE + B4 " * E *
B4 +
F(1)*E_1 +
F(2)*E_2 +
F(3)*E_3 );
322 K = this.
TG * K * this.
TG^
t;
357 RmRco = this.
R-this.
R*co;
358 R2mR2co = this.
R*RmRco;
360 RsmR2si = this.
R*s - this.
R^2*si;
362 co si 0 0 0 RmRco Rsi RmRco 0 0 0 RsmR2si;
363 -si co 0 0 0 Rsi -RmRco Rsi 0 0 0 R2mR2co;
364 0 0 1 RmRco -Rsi 0 0 0 s RsmR2si -R2mR2co 0;
365 0 0 0 co si 0 0 0 0 Rsi RmRco 0;
366 0 0 0 -si co 0 0 0 0 -RmRco Rsi 0;
367 0 0 0 0 0 1 0 0 0 0 0 s];
394 function
plot(p,u1,u2,col1,col2,plot_options) {
415 COR =
T * [xx
" ; yy "; zz^
t];
419 u_glob = zeros(6,N+2);
420 u_lok = zeros(6,N+2);
422 u_glob(:,1) = [T1 * u1(1:3); T1 * u1(4:6)];
423 u_glob(:,N+2) = [T2 * u2(1:3); T2 * u2(4:6)];
429 u_lok(:,i) = N_U * u_nodes;
430 T_i = T_Fren(x(i)/
R);
431 u_glob(:,i) = [
T * T_i * u_lok(1:3,i);
T * T_i * u_lok(4:6,i)];
435 col = round(x/L*col2 + (L-x)/L*col1);
438 if (plot_options.centerline)
444 plot3(
pc(1) + COR(1,[i i+1]) + u_glob(1,[i i+1]),
pc(2) + COR(2,[i i+1]) + u_glob(2,[i i+1]),
pc(3) + COR(3,[i i+1]) + u_glob(3,[i i+1]),
" LineWidth ", plot_options.centerline,
" Color ", 0.5 * (cmap(col(i),:)+cmap(col(i+1),:)) )
448 if (plot_options.endmarker)
450 plot3(
pc(1) + COR(1,1) + u_glob(1,1),
pc(2) + COR(2,1) + u_glob(2,1),
pc(3) + COR(3,1) + u_glob(3,1),
" + ",
" LineWidth ", plot_options.endmarker,
" Color ", cmap(col(1),:) )
451 plot3(
pc(1) + COR(1,N+2) + u_glob(1,N+2),
pc(2) + COR(2,N+2) + u_glob(2,N+2),
pc(3) + COR(3,N+2) + u_glob(3,N+2),
" + ",
" LineWidth ", plot_options.endmarker,
" Color ", cmap(col(N+2),:) )
455 if (plot_options.crosssection ~= 0)
458 split_angle = 0 : (2*pi/N_angle) : 2*pi;
460 xx = zeros(1, N_angle+1);
461 yy = R_cross * cos(split_angle);
462 zz = R_cross * sin(split_angle);
464 COR_lok = [xx; yy; zz];
470 rot_angle = norm([phi psi theta]);
471 S_rot = [0 -theta psi; theta 0 -phi; -psi phi 0];
473 if (plot_options.crosssection == 1)
475 ROT = eye(3) + S_rot;
476 elseif (plot_options.crosssection == 2)
478 ROT = eye(3) + S_rot + 0.5*S_rot*S_rot;
481 if (rot_angle > 1e-9)
482 ROT = eye(3) + sin(rot_angle)/rot_angle * S_rot + (1-cos(rot_angle))/rot_angle^2 * S_rot*S_rot;
488 COR_u =
T * T_Fren(x(i)/
R) * ROT*COR_lok;
490 col_act = cmap(col(i),:);
491 plot3(
pc(1) + COR(1,i) + u_glob(1,i) + COR_u(1,:),
pc(2) + COR(2,i) + u_glob(2,i)+ COR_u(2,:),
pc(3) + COR(3,i) + u_glob(3,i) + COR_u(3,:),
" Color ", col_act);
517 e_x = ( m.Points(this.
PointsIdx(1),:) - m.Points(this.
pc,:) )^
t;
520 e_y = (m.Points(this.
PointsIdx(2),:) - m.Points(this.
pc,:))^
t / this.
R;
523 this.
angle= acos(e_x^
t*e_y);
528 e_y = e_y - (e_x^
t*e_y) * e_x;
529 e_y = e_y / norm(e_y);
531 e_z = [e_x(2)*e_y(3) - e_x(3)*e_y(2);
532 e_x(3)*e_y(1) - e_x(1)*e_y(3);
533 e_x(1)*e_y(2) - e_x(2)*e_y(1)];
534 e_z = e_z / norm(e_z);
535 this.
T= [e_x e_y e_z];
538 this.
Fren= @(s) [-sin(s) -cos(s) 0; cos(s) -sin(s) 0; 0 0 1];
567 dm_tmp = m.d_a - m.s;
568 h_tmp = 4 * this.
R * m.s / dm_tmp^2;
569 flex_factor = 1.65 / ( h_tmp*(1 + 6*m.p/m.E*(0.5*dm_tmp/m.s)^2*(this.
R/m.s)^(1/3)) );
574 this.
c(1) = m.E * m.Iy / flex_factor;
576 this.
c(2) = m.G * m.It;
578 this.
c(3) = m.E * m.A;
580 this.
c(4) = m.k * m.G * m.A;
582 this.
c(5) = m.rho * m.A;
584 this.
c(6) = m.rho * m.Iy;
586 this.
c(7) = m.rho * m.It;
Model
The model that contains the structure element.
function plot(p, u1, u2, col1, col2, plot_options)
Zeichnet Timoshenko Kreisbogen Die Ansatzfunktionen werden dabei an N Zwischenstellen ausgewertet...
TG
c_theta = []; kappa = []; alphaA = []; The global transformation matrix (?)
function M = getLocalMassMatrix()
Berechnet lokale Steifigkeits- und Massenmatrix eines gekrümmten Timoshenko-Balkens (Viertelkreis) (nu...
CurvedBeam(models.BaseFullModel model, material, pointsidx)
The base class for any KerMor detailed model.
PointsIdx
Punkt-Index-Array.
function K = getLocalStiffnessMatrix()
Berechnet lokale Steifigkeits- und Massenmatrix eines gekrümmten Timoshenko-Balkens (Viertelkreis) (nu...
Length
Indizes (lokal pro Knoten) in die die lokalen Matrizen assembliert werden Konvention: Freiheitsgrade ...
c
Effektive Stoffkonstanten.
function N = circle_shape_functions(s, B)
Wertet die Basisfunktionen für ein Kreiselement aus: Auf dem Element werden konstante Strains angenomm...
function B = circle_connect_matrix()
function [ K , R , U_pot ] = getLocalTangentials(u)
split
Speichert den anteil des jeweiligen Elements an der Gesamtsystemlänge.
function f = getLocalForceMatrix()
Berechnet lokale Steifigkeits- und Massenmatrix eines gekrümmten Timoshenko-Balkens (Viertelkreis) (nu...
T
Transformationsmatrix für das lokale Koordinatensystem.