Demo entry 6349876

Estructura Articulada 2D

   

Submitted by Marc on Mar 01, 2017 at 12:24
Language: Matlab. Code size: 4.2 kB.

 clc 
 clear
 %% Datos
 
 Nel = 22; % número de elementos
 Nnod = 2; % número de nodos en un elemento
 Nig = 2; % grados de libertad por nodos
 Nd = 2; % dimensiones del problema
 B = 0.750; % m
 H = 1; % m
 E = 7.5e9; % Pa
 Dext = 0.050; % m
 Dint = 0.025; % m
 A = pi * (Dext / 2)^2 - pi * (Dint / 2)^2; % m^2
 ro = 325; % kg/m^3
 g = 9.81; % m/s^2
 P = 1500; % N
 pi = 3.14159; 
 sigmae = 300e6; %sigma límite elástico
 
 %% Matrices de conectividades
 
 x = [0 0 B B 2*B 2*B 3*B 3*B 4*B 4*B 5*B 5*B; 0 H 0 H 0 H 0 H 0 H 0 H]; % coordenadas nodos
 T1 = [1 2 2 2 3 4 4 4 5 6 6 5 6 7 8 7 8 9 10 9 10 12; 
     3 1 3 4 5 3 5 6 7 5 7 8 8 9 7 10 10 11 9 12 12 11]; % matriz conectividades nodos
 T2 = [1 3 3 3 5 7 7 7 9 11 11 9 11 13 15 13 15 17 19 17 19 23;
     2 4 4 4 6 8 8 8 10 12 12 10 12 14 16 14 16 18 20 18 20 24;
     5 1 5 7 9 5 9 11 13 9 13 15 15 17 13 19 19 21 17 23 23 21;
     6 2 6 8 10 6 10 12 14 10 14 16 16 18 14 20 20 22 18 24 24 22]; % matriz conectividades grados de libertad
 
 %% Matriz de Rigidez
 
 Kel = zeros(4, 4, 22);
 for e = 1:Nel % matriz de elementos
     [x1, y1, x2, y2, l] = locales(e, T1, x); % función locales
     s = (y2 - y1) / l;
     c = (x2 - x1) / l;
     K = (A * E / l) * [c^2 c*s -c^2 -c*s; c*s s^2 -c*s -s^2; -c^2 -c*s c^2 c*s; -c*s -s^2 c*s s^2]; 
     for r = 1:(Nnod * Nig) % proceso de almacenamiento
         for s = 1:(Nnod * Nig)
             Kel(r, s, e) = K(r, s);
         end
         
     end
 end
 
%% Matriz Global

KG = zeros(24);
for e = 1:Nel
    for i = 1:(Nnod * Nig)
        I = T2(i, e);
        for j = 1:(Nnod * Nig)
            J = T2(j, e);
            KG(I, J) = KG(I, J) + Kel (i, j, e);
        end
    end
end

%% Cálculo del peso de la estructura

Pb = (A * B * ro) * g; % peso barra horizontal
Ph = (A * H * ro) * g; % peso barra vertical
Pd = (A * sqrt(H^2 + B^2) * ro) * g; % peso barra diagonal
Pt = Pb*10 + Ph*6 + Pd*6; % peso total de la estructura

%% Cálculo de fuerza q

q = (4*Pt + 2*P) / 6; % sumatorio de fuerzas totales

%% Sistema de Ecuaciones Globales

vL = [4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24]; % vector grados de libertad libres
vR = [1 2 3]; % vector grados de libertad restringidos
KLL = KG(vL, vL);
KLR = KG(vL, vR);
KRL = KG(vR, vL);
KRR = KG(vR, vR);
uR = [0; 0; 0]; % vector desplazamientos restringidos
FL = [ -(Pb/2 + Ph/2 + Pd/2); 0 ; q - (Pb + Pd/2 + Ph/2); 0 ; -(Pb + Pd/2 + Ph/2);...
     0; q - (P + Pb + Pd + Ph/2); 0; -(Pb + Ph/2 + Pd/2); 0; q - (Pb + Pd + Ph/2 + P); 0;...
    -(Pb + Ph/2 + Pd/2); 0; q - (Pb + Pd/2 + Ph/2); 0; -(Pb + Ph/2 + Pd/2); 0;...
    q - (Pb/2 + Ph/2); 0; -(Pb/2 + Ph/2 + Pd/2)];
uL = KLL \ (FL - KLR*uR); % cálculo de desplazamientos libres
R = KRR*uR + KRL*uL; % cálculo de reacciones
u = [uR; uL];

%% Cálculo de tensiones y deformaciones

epsilon = zeros(1, Nel);
sigma = zeros(1, Nel);
d = zeros(4, 1);
for e = 1:Nel
     [x1, y1, x2, y2, l] = locales(e, T1, x); % función locales
     s = (y2 - y1) / l;
     c = (x2 - x1) / l; 
    for r = 1:(Nnod * Nd) % grados de libertad locales
        p = T2(r, e); % grados de libertad globales
        d(r, e) = u(p); % desplazamientos en globales
    end
    R = [c s 0 0; -s c 0 0; 0 0 c s; 0 0 -s c];
    dl = R * d; % desplazamientos en locales
    epsilon(e) = (dl(3, e) - dl(1, e)) / l; % deformaciones
    sigma(e) = E * epsilon(e); % tensiones
end

 %% Función máximos y mínimos de las tensiones

sigma_max = max(sigma);
sigma_min = min(sigma);

%%  Riesgo de pandeo

Izy = (pi / 4) * ((Dext/2)^4 - (Dint/2)^4); % momento de inercia de la corona circular
Pcrit = zeros(Nel, 1);
Pandeo = zeros(Nel, 1);
for e = 1:Nel
     [x1, y1, x2, y2, l] = locales(e, T1, x); % función locales
     Pcrit(e) = (pi^2)*E*Izy / (l^2*A); % Pa
     if sigma(e) < 0
         if (norm(sigma(e))/Pcrit(e)) >= 1
         Pandeo(e) = 1; % hay pandeo
        else
         Pandeo(e) = 0; % no hay pandeo
         end
     end
end

%% Factor de seguridad

f = sigmae / sigma_max; % sigma_max porque es el valor más restrictivo

This snippet took 0.01 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).