Está en la página 1de 6

Resolución del Deber 1.

1 Sistema de Resortes
GABRIEL ALEXANDER JAYA MALDONADO

Funciones asociadas

• SpringElementStiffness
• SpringAssemble
• SpringElementForces

Limpia la ventana de comandos

clear
clc
close all

PARTE 1
PREPROCESAMIENTO

1
Rigidez de los resortes

k1 = 4; % N/m
k2 = 2*k1;
k3 = k1;
k = [k1;k2;k3] % N/m

k = 3×1
4
8
4

Número de nodos

NumeroNodos = 4

NumeroNodos = 4

Grados de libertad

grado_libert_nodo = 1;
grado_libertad = NumeroNodos*grado_libert_nodo

grado_libertad = 4

Conectividad

conectividad = [[1,2];[2,3];[4,3]]

conectividad = 3×2
1 2
2 3
4 3

PROCESAMIENTO
Inicialización de variables

K_global = zeros(grado_libertad);
U_global = zeros(grado_libertad, 1);
F_global = zeros(grado_libertad, 1);

Ensamblaje de Matriz Global

[numero_elementos,~] = size(k)

2
numero_elementos = 3

for i =1:numero_elementos
matriz_k = SpringElementStiffness(k(i));
K_global = SpringAssemble(K_global,matriz_k,conectividad(i,:));
end
K_global % N/m

K_global = 4×4
4 -4 0 0
-4 12 -8 0
0 -8 12 -4
0 0 -4 4

Partición de la matriz de rigidez global

desplazamientos_incognitas = [2,3];
fuerzas_incognitas = [1,4];
K_u = K_global(desplazamientos_incognitas,desplazamientos_incognitas) % N/m

K_u = 2×2
12 -8
-8 12

K_f = K_global(fuerzas_incognitas,desplazamientos_incognitas) % N/m

K_f = 2×2
-4 0
0 -4

Definir vector de fuerzas conocidas (datos)

p = 2; % N
f2 = -p; % N
f3 = 4*p; % N
F_datos = [f2;f3] % Newton

F_datos = 2×1
-2
8

Resolver el sistema de ecuaciones para determinar los desplazamientos incógnitas

U_incog = K_u\F_datos % metros

U_incog = 2×1
0.5000
1.0000

Obtención de fuerzas incógnitas

F_incog = K_f*U_incog % Newton

F_incog = 2×1
-2.0000
-4.0000

3
POSTPROCESAMIENTO

Actualizar vector de desplazamientos globales

[~,numero_u_incog] = size(desplazamientos_incognitas);
for i=1:numero_u_incog
U_global(desplazamientos_incognitas(i)) = U_incog(i);
end
U_global % metros

U_global = 4×1
0
0.5000
1.0000
0

Actualizar vector de fuerzas globales


Método por for/end

[~,numero_f_incog] = size(fuerzas_incognitas);
for i=1:numero_f_incog
F_global(fuerzas_incognitas(i)) = F_incog(i);
end
[~,numero_u_incog] = size(desplazamientos_incognitas);
for i=1:numero_u_incog
F_global(desplazamientos_incognitas(i)) = F_datos(i);
end
F_global % Newton

F_global = 4×1
-2.0000
-2.0000
8.0000
-4.0000

Desplazamientos nodales de cada elemento del resorte


Celdas

u = cell(numero_elementos,1);
for i=1:numero_elementos
u{i} = U_global(conectividad(i,:));
end
u % metros

u = 3×1 cell
1

1 [0;0.5000]
2 [0.5000;1]
3 [0;1]

4
Fuerzas en los elementos de resorte
Celdas

f = cell(numero_elementos,1);
for i=1:numero_elementos
f{i} = SpringElementForces(k(i),u{i});
end
f % Newton

f = 3×1 cell
1

1 [-2;2]
2 [-4;4]
3 [-4;4]

PARTE 2
PROCESAMIENTO
Datos de Desplazamientos y fuerzas

U2 = -0.25/100 % metros

U2 = -0.0025

F3 = 8; % Newton

Ensamblaje de Matriz Global

K_global % la misma de la parte 1

K_global = 4×4
4 -4 0 0
-4 12 -8 0
0 -8 12 -4
0 0 -4 4

Cálculo de desplazamiento incógnita


U3 = F3/K_global(3,3) % metros

U3 = 0.6667

Actualizar vector de desplazamientos globales


U_parte_2 = [0 U2 U3 0]' % metros

U_parte_2 = 4×1
0
-0.0025

5
0.6667
0

POSTPROCESAMIENTO
Fuerzas globales

F_global_parte_2 = K_global*U_parte_2

F_global_parte_2 = 4×1
0.0100
-5.3633
8.0200
-2.6667

Desplazamientos nodales de cada elemento del resorte


Celdas

u2 = cell(numero_elementos,1);
for i=1:numero_elementos
u2{i} = U_parte_2(conectividad(i,:));
end
u2 % metros

u2 = 3×1 cell
1

1 [0;-0.0025]
2 [-0.0025;0....
3 [0;0.6667]

Fuerzas en los elementos de resorte


Celdas

f2 = cell(numero_elementos,1);
for i=1:numero_elementos
f2{i} = SpringElementForces(k(i),u2{i});
end
f2 % f en Newton

f2 = 3×1 cell
1

1 [0.0100;-0....
2 [-5.3533;5....
3 [-2.6667;2....

También podría gustarte