ESCUELA POLITECNICA NACIONAL
FACULTAD DE INGENIERÍA CIVIL Y AMBIENTAL
ANÁLISIS MATRICIAL
TAREA GRUPAL
PROGRAMA DE ANÁLISIS MATRICIAL DE PÓRTICOS
Integrantes:
Angulo Bryan.
Bohórquez Nicolás.
Caizalitı́n Diego.
Guamán Leidy.
Salcedo Fernando.
Vaca David.
Fecha de entrega: 18/02/2021
Perı́odo 2020-B
1. RESUMEN
El presente proyecto de curso abarcó el análisis estructural de una estructura del tipo aporticada
(genérica) que puede estar en 1, 2 y 3 dimensiones respectivamente, esto se realizó a través de
una implementación computacional en el entorno de programación de MATLAB a partir de la
generación de algoritmos y funciones para el cálculo de cada uno de los subprocesos y/o subrutina
que competen al mismo, inicialmente se construyó el código general para luego realizar la entrada
de datos mediante un modelo de GUIDE lo cual facilitó el ingreso de datos de una manera más
amigable para el entorno del usuario.
2. METODOLOGÍA
El análisis estructural en pórticos es de vital importancia ya que permite analizar las acciones
del tipo Axial, Flexión, Corte y Torsión, a las cuales cada uno de los elementos van a estar sujetos,
el proyecto se lo realizó con la finalidad de aplicar la metodologı́a y el modelamiento con FEM
mediante el uso del método de rigidez directo en cuyo caso permite realizar asunciones en cuanto a
la rigidez, tipo de material del elemento destacando la importancia del modelamiento a través de
sus diferentes etapas que se abarcan para el mismo, los cuales de manera general son Discretización,
Ensamble, solución y finalmente Pos-procesamiento.
El modelamiento computacional se lo realizó con la finalidad de obtener los desplazamientos nodales
de la estructura reticular (pórticos 1D, 2D y 3D) ası́ como también las acciones internas por elemento
(Fuerzas y Momentos), de tal manera que cuando sea necesario su implementación en campo se
permita conocer las condiciones y/o reacciones que se generan cuando la estructura sea sometida
a distintos patrones de carga y finalmente, como se comporta la estructura.
3. CÓDIGO
La entrada de datos para la programación se la realizará mediante el uso de una interfaz
gráfica (GUIDE) la cual mediante tablas, botones y dibujo facilitará la entrada de los mismos,
este script se llama datos gui.m y a partir de este se ejecutará el programa principal con la
implementación computacional de la estructura tipo Pórtico (genérica) se crearon varios archi-
vos los cuales estaban contenidos en el Main code denominado programa Solucion Porticos.m,
además contiene dimensionadas algunas de las matrices a utilizar en la programación, denominados
dimension arreglos.m, se crearon archivos para la obtención y el ensamble de las matrices de
rigidez denominado matriz nf GDL globales.m, ası́ como también archivos para la solución del
sistema de ecuaciones y la obtención de las acciones internas de cada elemento, en los archivos solu-
cion sistema de ecuaciones.m y Pos Procesamiento.m respectivamente. Se crearon además
funciones especı́ficas para el dibujo de la estructura tipo pórtico tanto en 1D, 2D como 3D. Se debe
considerar que en el archivo de ingreso de datos las cargas van en los GDL y cualquier variación de
carga debe considerar esta condición y calcularse como cargas y momentos puntuales en los GDL.
4. ALGORITMO
1 % ESCUELA POLITECNICA NACIONAL
2 % ANALISIS MATRICIAL
3 %PROGRAMA PORTICOS
4 % Integrantes :
5 % =Angulo Bryan
6 % =Bohorquez N i c o l a s
7 % = C a i z a l i t i n Diego
8 % =Guaman Leidy
9 % = S a l c e d o Fernando
1
10 % =Vaca David
11
12 % Programa MADRE p o r t i c o s
13 clc ;
14 clear all ;
15 portico ingreso datos
16 dimension arreglos
17 matriz nf GDL globales
18 solucion sistema de ecuaciones
19
20 Pos Procesamiento
A continuación, se detalla la estructura que compone cada sub-archivo en cuestión.
Dimensión arreglos.m
En este archivo se dimensiona el resto de matrices que serán utilizadas posteriormente para la
evaluación de cada uno de las rutinas.
1 %% Tamaños de a r r e g l o s
2 %Depende de l a s d i m e n s i o n e s , nodof=#GDL por nodo
3 i f ndim==1
4 nodof =2;
5 nprops =1; %f l e x i o n ( EI )
6 end
7 i f ndim==2
8 nodof =3;
9 nprops =2; %a x i a l , f l e x i o n (EA, EI )
10 else
11 nodof =6;
12 nprops =4; %(EA, EIy , EIZ , Gj )
13 end
14
15 ndof=nod * nodof ; %g r a d o s de l i b e r t a d por e l e m e n t o
16 n f=o n e s ( nodof , nn ) ; % m a t r i z de g r a d o s de l i b e r t a d a c t i v o s
17 km=z e r o s ( ndof , ndof ) ; % m a t r i z de r i g i d e z por e l e m e n t o s
18 c o o r d=z e r o s ( nod , ndim ) ; % c o o r d e n a d a s n o d a l e s por e l e m e n t o
19 e l d=z e r o s ( ndof ) ; % v e c t o r de d e s p l a z a m i e n t o de e l e m e n t o
20 a c t i o n=z e r o s ( ndof ) ; % v e c t o r de a c c i o n e s n o d a l e s de e l e m e n t o
21 g=z e r o s ( ndof , 1 ) ; % g : v e c t o r de c o n e c t t i v i d a d por elemento , 1
columna
22 g g=z e r o s ( ndof , n e l s ) ; % g g : m a t r i z de c o n e c t t i v i d a d de l a
estructura
23 % gamma=z e r o s ( 1 , n e l s ) ; OJO
Matriz nf GDL globales.m
Para la obtención de la matriz de grados de libertad por elemento (nf) considerando los nodos
restringidos, se realiza el siguiente código.
1 % Matriz n f g r a d o s de l i b e r t a d g l o b a l e s
2
2 % Matriz de Grados de L i b e r t a d por nodos 0 y 1
3 f o r i =1: s i z e ( k , 1 )
4 n f ( : , k ( i ) )=k ( i , ( 2 : end ) ) ;
5 end
Este subproceso se lo realiza con la finalidad de obtener la matriz (nf) la misma que indica
los grados de libertad acumulados por elemento.
1 %% Matriz DE NODAL FREEDOM ( n f )
2 m=0;
3 f o r j =1: s i z e ( nf , 2 )
4 f o r i =1: s i z e ( nf , 1 )
5 i f ( n f ( i , j ) ˜=0)
6 m=m+1;
7 n f ( i , j )=m;
8 end
9 end
10 end
En este apartado se calcula el número de ecuaciones efectivos del sistema, considerando el
valor máximo de la matriz (nf).
1 % C a l c u l o de numero de e c u a c i o n e s d e l s i s t e m a en f u n c i o n d e l
maximo
2 % v a l o r d e l grado de l i b e r t a d en n f ( nodof , nn )
3 neq=max(max( n f ) ) ;
A continuación, se calculan los vectores de conectividad por elemento (g) para su posterior
almacenamiento en la matriz de conectividad global (g g) además se realiza el cálculo del
ancho de banda.
1 %% C a l c u l o Matriz g g %m a t r i z de c o n e c t i v i d a d por e l e m e n t o
por GDL
2 anchodebanda=z e r o s ( n e l s , 1 ) ; % dimensionando e l v e c t o r ancho
de banda
3 f o r i e l =1: n e l s
4 num=g num ( : , i e l ) ; % num s e almacena como v e c t o r v e r t i c a l
5 f o r i =1: nod
6 k2=i * nodof ;
7 g ( k2=nodof +1: k2 )=n f ( : , num( i ) ) ;
8 g ( g==0)=NaN ; % l o s v a l o r e s i g u a l e s a c e r o no s e
toman en c u e n t a en l a o p e r a c i o n
9 anchodebanda ( i e l , 1 )=max( g )=min ( g ) ;
10 g ( i s n a n ( g ) ) =0; % Funcion retoma l o s v a l o r e s de NaN
y l o s devuelve a cero
11 end
12 g g ( : , i e l )=g ;
13 end
14 %Ancho de banda
15 nband=max( anchodebanda ) +1;
Posteriormente se dimensiona la matriz de rigidez global con el ancho de banda obtenido.
3
1 %% Ensamble de l a Matriz de R i g i d e z G l o b a l de l a E s t r u c t u r a
2 kv=z e r o s ( neq * ( nband ) , 1 ) ; % d i m e n s i o n a m i e n t o de kv
3 l o a d s=z e r o s ( ( neq ) , 1 ) ; % Para t r a b a j a r con Gauss y o p t i m i z a r
e l ancho de banda
4 f o r i e l =1: n e l s
5 num=g num ( : , i e l ) ;
6 c o o r d =( g c o o r d (num , : ) ) ; % Debido a que num e s un v e c t o r
de 1 c o l
Se crea la subrutina rigidjointed la cual arroja las matrices de rigidez de tipo global elemental.
1 %% SUBRUTINA RIGIDJOINTED
2 prop=props ’ ;
3 [ km]= r i g i d j o i n t e d ( prop , i e l , coord , ndim , gamma , etype , nodof
);
Subrutina RIGIDJOINTED
1 f u n c t i o n [ km]= r i g i d j o i n t e d ( prop , i e l , coord , ndim , gamma , etype ,
nodof )
2
3 s w i t c h ndim
4
5 case 1 % 1 dimension
6 e i=prop ( 1 , e t y p e ( i e l ) ) ; e l l =c o o r d ( 2 , 1 )= c o o r d ( 1 , 1 ) ;
7 km( 1 , 1 ) =12* e i / ( e l l * e l l * e l l ) ; km( 3 , 3 )=km( 1 , 1 ) ;
8 km( 1 , 2 ) =6* e i / ( e l l * e l l ) ; km( 2 , 1 )=km( 1 , 2 ) ; km( 1 , 4 )=km
(1 ,2) ;
9 km( 4 , 1 )=km( 1 , 4 ) ; km( 1 , 3 )==km( 1 , 1 ) ; km( 3 , 1 )=km( 1 , 3 ) ; km
( 3 , 4 )==km( 1 , 2 ) ;
10 km( 4 , 3 )=km( 3 , 4 ) ; km( 2 , 3 )=km( 3 , 4 ) ; km( 3 , 2 )=km( 2 , 3 ) ; km
( 2 , 2 ) =4* e i / e l l ;
11 km( 4 , 4 )=km( 2 , 2 ) ; km( 2 , 4 ) =2* e i / e l l ; km( 4 , 2 )=km( 2 , 4 ) ;
12
13 case 2 % 2 dimensiones
14 ea=prop ( 1 , e t y p e ( i e l ) ) ; e i=prop ( 2 , e t y p e ( i e l ) ) ;
15 x1=c o o r d ( 1 , 1 ) ; y1=c o o r d ( 1 , 2 ) ; x2=c o o r d ( 2 , 1 ) ; y2=c o o r d
(2 ,2) ;
16 e l l =s q r t ( ( y2=y1 ) ˆ2+(x2=x1 ) ˆ 2 ) ;
17 c=(x2=x1 ) / e l l ; s =(y2=y1 ) / e l l ;
18 e1=ea / e l l ; e2 =12* e i / ( e l l * e l l * e l l ) ; e3=e i / e l l ; e4=6*
e i /( e l l * e l l ) ;
19 km( 1 , 1 )=c * c * e1+s * s * e2 ; km( 4 , 4 )=km( 1 , 1 ) ; km( 1 , 2 )=s * c
* ( e1 =e2 ) ;
20 km( 2 , 1 )=km( 1 , 2 ) ; km( 4 , 5 )=km( 1 , 2 ) ; km( 5 , 4 )=km( 4 , 5 ) ;
km( 1 , 3 )==s * e4 ;
21 km( 3 , 1 )=km( 1 , 3 ) ; km( 1 , 6 )=km( 1 , 3 ) ; km( 6 , 1 )=km( 1 , 6 ) ;
km( 3 , 4 )=s * e4 ;
22 km( 4 , 3 )=km( 3 , 4 ) ; km( 4 , 6 )=km( 3 , 4 ) ; km( 6 , 4 )=km( 4 , 6 ) ;
km( 1 , 4 )==km( 1 , 1 ) ;
23 km( 4 , 1 )=km( 1 , 4 ) ; km( 1 , 5 )=s * c *( = e1+e2 ) ; km( 5 , 1 )=km
( 1 , 5 ) ; km( 2 , 4 )=km( 1 , 5 ) ;
4
24 km( 4 , 2 )=km( 2 , 4 ) ; km( 2 , 2 )=s * s * e1+c * c * e2 ; km( 5 , 5 )=km
( 2 , 2 ) ; km( 2 , 5 )==km( 2 , 2 ) ;
25 km( 5 , 2 )=km( 2 , 5 ) ; km( 2 , 3 )=c * e4 ; km( 3 , 2 )=km( 2 , 3 ) ; km
( 2 , 6 )=km( 2 , 3 ) ;
26 km( 6 , 2 )=km( 2 , 6 ) ; km( 3 , 3 ) =4* e3 ; km( 6 , 6 )=km( 3 , 3 ) ; km
( 3 , 5 )==c * e4 ;
27 km( 5 , 3 )=km( 3 , 5 ) ; km( 5 , 6 )=km( 3 , 5 ) ; km( 6 , 5 )=km( 5 , 6 ) ;
km( 3 , 6 ) =2* e3 ;
28 km( 6 , 3 )=km( 3 , 6 ) ;
29
30 case 3 % 3 dimensiones
31 ea=prop ( 1 , e t y p e ( i e l ) ) ; e i y=prop ( 2 , e t y p e ( i e l ) ) ;
32 e i z=prop ( 3 , e t y p e ( i e l ) ) ; g j=prop ( 4 , e t y p e ( i e l ) ) ;
33 x1=c o o r d ( 1 , 1 ) ; y1=c o o r d ( 1 , 2 ) ; z1=c o o r d ( 1 , 3 ) ;
34 x2=c o o r d ( 2 , 1 ) ; y2=c o o r d ( 2 , 2 ) ; z2=c o o r d ( 2 , 3 ) ;
35
36 x1=x2=x1 ;
37 y1=y2=y1 ;
38 z1=z2 =z1 ;
39
40 e l l =s q r t ( x1 * x1+y1 * y1+z1 * z1 ) ;
41
42 km=z e r o s ( nodof ) ;
43 t =0;
44 t t =0;
45
46 a1=ea / e l l ;
47 a2=12* e i z / ( e l l * e l l * e l l ) ;
48 a3=12* e i y / ( e l l * e l l * e l l ) ;
49 a4=6* e i z / ( e l l * e l l ) ;
50 a5=6* e i y / ( e l l * e l l ) ;
51 a6=4* e i z / ( e l l ) ;
52 a7=4* e i y / ( e l l ) ;
53 a8=g j / ( e l l ) ;
54
55 km( 1 , 1 )=a1 ; km( 7 , 7 )=a1 ; km( 1 , 7 )==a1 ; km( 7 , 1 )==a1 ;
56 km( 2 , 2 )=a2 ; km( 8 , 8 )=a2 ; km( 2 , 8 )==a2 ; km( 8 , 2 )==a2 ;
57 km( 3 , 3 )=a3 ; km( 9 , 9 )=a3 ; km( 3 , 9 )==a3 ; km( 9 , 3 )==a3 ;
58 km( 4 , 4 )=a8 ; km( 1 0 , 1 0 )=a8 ; km( 4 , 1 0 )==a8 ; km( 1 0 , 4 )==a8
;
59 km( 5 , 5 )=a7 ; km( 1 1 , 1 1 )=a7 ; km( 5 , 1 1 ) =0.5 * a7 ;
60 km( 1 1 , 5 ) =0.5 * a7 ; km( 6 , 6 )=a6 ; km( 1 2 , 1 2 )=a6 ;
61 km( 6 , 1 2 ) =0.5 * a6 ; km( 1 2 , 6 ) =0.5 * a6 ; km( 2 , 6 )=a4 ;
62 km( 6 , 2 )=a4 ; km( 2 , 1 2 )=a4 ; km( 1 2 , 2 )=a4 ;
63 km( 6 , 8 )==a4 ; km( 8 , 6 )==a4 ; km( 8 , 1 2 )==a4 ;
64 km( 1 2 , 8 )==a4 ; km( 5 , 9 )=a5 ; km( 9 , 5 )=a5 ;
65 km( 9 , 1 1 )=a5 ; km( 1 1 , 9 )=a5 ; km( 3 , 5 )==a5 ;
66 km( 5 , 3 )==a5 ; km( 3 , 1 1 )==a5 ; km( 1 1 , 3 )==a5 ;
67
68 gamrad=gamma( i e l ) * p i / 1 8 0 ; cg=c o s ( gamrad ) ; s g=s i n (
gamrad ) ;
69 den= e l l * s q r t ( x1 * x1+z1 * z1 ) ;
5
70
71 i f den˜=0
72 r 0 ( 1 , 1 )= x1 / e l l ;
73 r 0 ( 1 , 2 )= y1 / e l l ;
74 r 0 ( 1 , 3 )= z1 / e l l ;
75 r 0 ( 2 , 1 )= (= x1 * y1 * cg = e l l * z1 * s g ) / den ;
76 r 0 ( 2 , 2 )= den * cg / ( e l l * e l l ) ;
77 r 0 ( 2 , 3 )= (= y1 * z1 * cg+ e l l * x1 * s g ) / den ;
78 r 0 ( 3 , 1 )= ( x1 * y1 * sg = e l l * z1 * cg ) / den ;
79 r 0 ( 3 , 2 )= =den * s g / ( e l l * e l l ) ;
80 r 0 ( 3 , 3 )= ( y1 * z1 * s g+ e l l * x1 * cg ) / den ;
81 else
82 r 0 ( 1 , 1 )= 0;
83 r 0 ( 1 , 2 )= 1;
84 r 0 ( 1 , 3 )= 0;
85 r 0 ( 2 , 1 )= =cg ;
86 r 0 ( 2 , 2 )= 0;
87 r 0 ( 2 , 3 )= sg ;
88 r 0 ( 3 , 1 )= sg ;
89 r 0 ( 3 , 2 )= 0;
90 r 0 ( 3 , 3 )= cg ;
91 end
92
93 f o r i =1:3
94 f o r j =1:3
95 x=r 0 ( i , j ) ;
96 f o r k =0:3:9
97 t ( i+k , j+k )=x ;
98 t t ( j+k , i+k )=x ;
99 end
100 end
101 end
102
103 f o r i =1:12
104 f o r j =1:12
105 sum=0;
106 f o r k =1:12
107 sum=sum+km( i , k ) * t ( k , j ) ;
108 end
109 c c ( i , j )=sum ;
110 end
111 end
112 f o r i =1:12
113 f o r j =1:12
114 sum=0;
115 f o r k =1:12
116 sum=sum+t t ( i , k ) * c c ( k , j ) ;
117 end
118 km( i , j )=sum ;
119 end
120 end
121 end
6
122 end
Mediante esta subrutina se agrupará las matrices elementales globales en un solo vector
denominado Kv.
1 % SUBRUTINA FORM KV
2 g=g g ( : , i e l ) ;
3 i d o f=s i z e (km, 1 ) ;
4 f o r i =1: i d o f
5 i f g ( i ) ˜=0
6 f o r j =1: i d o f
7 i f g ( j ) ˜=0
8 i c d=g ( j )=g ( i ) +1;
9 i f ( i c d =1>=0)
10 i v a l=neq * ( i c d = 1)+g ( i ) ;
11 kv ( i v a l )=kv ( i v a l )+km( i , j ) ;
12 end
13 end
14 end
15 end
16 end
17 end
Aquı́ se asignan las cargas externas en el vector loads.
1 %% L e c t u r a de c a r g a s
2 f o r i =1: s i z e ( cargasE , 1 )
3 f o r j =1: nodof
4 i f n f ( j , cargasE ( i , 1 ) ) ˜=0
5 l o a d s ( ( n f ( j , cargasE ( i , 1 ) ) ) )=cargasE ( i , j +1) ;
6 end
7 end
8 end
Solucion sistema de ecuaciones.m
Se usa una subrutina denominada BANRED para la eliminación por Gauss de el vector Kv.
1 %% S u b r u t i n a banred
2 n=neq ;
3 iw=( s i z e ( kv , 1 ) / ( n ) =1) ;
4 f o r i =2:n %aumento para h a c e r g a u s s
5 i l 1=i = 1;
6 kb1=i l 1+iw +1;
7 i f ( kb1=n )>0
8 kb1=n ;
9 end
10
11 f o r j=i : kb1
12 i j =( j = i ) * n+i ;
13 sum=kv ( i j ) ;
7
14 nkb=j =iw ;
15 i f ( nkb<=0)
16 nkb =1;
17 end
18 i f ( ( nkb= i l 1 )<=0)
19 f o r m=nkb : i l 1
20 n i =( i =m) * n+m;
21 n j =( j =m) * n+m;
22 sum=sum=kv ( n i ) * kv ( n j ) /kv (m) ;
23 end
24 end
25 kv ( i j )=sum ;
26 end
27 end
Se usa una subrutina denominada BACSUB para la eliminación de Gauss para el vector Loads
el cual entregará los desplazamientos.
1 %% S u b r u t i n a bacsub
2 n=s i z e ( l o a d s , 1 ) ;
3 iw=s i z e ( kv , 1 ) / ( n ) = 1;
4 l o a d s ( 1 )=l o a d s ( 1 ) /kv ( 1 ) ;
5 f o r i =2:n
6 sum=l o a d s ( i ) ;
7 i 1=i = 1;
8 nkb=i =iw ;
9 i f ( nkb<=0)
10 nkb =1;
11 end
12 f o r k=nkb : i 1
13 j n =( i =k ) * n+k ;
14 sum=sum=kv ( j n ) * l o a d s ( k ) ;
15 end
16 l o a d s ( i )=sum/kv ( i ) ;
17 end
18
19 f o r j j =2:n
20 i=n= j j +1;
21 %i= j j +1;
22 sum=0;
23 i 1=i +1;
24 nkb=i+iw ;
25 i f ( nkb=n )>0
26 nkb=n ;
27 end
28 f o r k=i 1 : nkb
29 j n =(k= i ) * n+i ;
30 sum=sum+kv ( j n ) * l o a d s ( k ) ;
31 end
32 l o a d s ( i )=l o a d s ( i )=sum/kv ( i ) ;
33 end
8
Pos Procesamiento.m
En esta sección se lleva a cabo el proceso para determinar las acciones internas por cada ele-
mento.
1 % C a l c u l o de a c c i o n e s
2 %c a r g a s f=z e r o s ( n e l s , 1 ) ;
3 f o r i e l =1: n e l s
4 e l d=z e r o s ( i d o f , 1 ) ;
5 num=g num ( : , i e l ) ;
6 c o o r d =( g c o o r d (num , : ) ) ; % Debido a que num e s un v e c t o r
de 1 c o l
7 %SUBRUTINA RIGIDJOINTED
8 %ea2=ea ( e t y p e ( i e l ) ) ;
9 [ km]= r i g i d j o i n t e d ( prop , i e l , coord , ndim , gamma , etype , nodof
);
10
11 g=g g ( : , i e l ) ;
12 f o r i =1: l e n g t h ( g )
13 i f g ( i )>0
14 e l d ( i )=l o a d s ( g ( i ) ) ;
15 end
16 end
17 %a c t i o n ( : , i e l )=km* e l d ;
18 a c t i o n=km* e l d ;
19 a c t i o n 2 ( : , i e l )=a c t i o n ;
20
21 s w i t c h ndim
22 case 1
23 e l l =c o o r d ( 2 , 1 )= c o o r d ( 1 , 1 ) ;
24 e a o l=e i / e l l ;
25 case 2
26 x1=c o o r d ( 1 , 1 ) ;
27 x2=c o o r d ( 2 , 1 ) ;
28 y1=c o o r d ( 1 , 2 ) ;
29 y2=c o o r d ( 2 , 2 ) ;
30 e l l =s q r t ( ( y2=y1 ) ˆ2+(x2=x1 ) ˆ 2 ) ;
31 c s =(x2=x1 ) / e l l ;
32 sn=(y2=y1 ) / e l l ;
33
34 % a x i a l=c s * a c t i o n ( 3 , i e l )+sn * a c t i o n ( 4 , i e l ) ; %
cambia
35
36 case 3
37 x1=c o o r d ( 1 , 1 ) ;
38 y1=c o o r d ( 1 , 2 ) ;
39 z1=c o o r d ( 1 , 3 ) ;
40 x2=c o o r d ( 2 , 1 ) ;
41 y2=c o o r d ( 2 , 2 ) ;
42 z2=c o o r d ( 2 , 3 ) ;
43 e l l =s q r t ( ( y2=y1 ) ˆ2+(x2=x1 ) ˆ2+( z2 =z1 ) ˆ 2 ) ;
44 cx=(x2=x1 ) / e l l ;
9
45 cy=(y2=y1 ) / e l l ;
46 c z =(z2 =z1 ) / e l l ;
47 %a x i a l=cx * a c t i o n ( 1 , i e l )+cy * a c t i o n ( 2 , i e l )+c z *
action (3 , i e l ) ;
48 end
49 %c a r g a s f ( i e l , 1 )=a x i a l ;
50 % Para s a c a r l a s a c c i o n e s por e l e m e n t o
51 end
5. EJEMPLO
A manera de ejemplo se realizará el modelamiento y análisis del siguiente pórtico.
10
6. RESULTADOS
Los desplazamientos por grados de libertad y las cargas axiales por elementos se muestran a
continuación.
11
7. Gráficos
Mediante funciones de dibujo se grafican las acciones respectivas sobre cada uno de los elementos
que conforman el pórtico.
12
13
8. CONCLUSIONES
El método para implementar el análisis de pórticos requiere de más variables que el código
empleado para celosı́as, ya que aquı́ se consideran más rigideces, ası́ como también el ángulo
gamma utilizado para orientar la sección, sin embargo, la estructura y las sub-rutinas son
muy similares a lo programado anteriormente en celosı́as.
El procedimiento NBAND permite optimizar el ancho de banda, lo que tiene una incidencia
en el costo computacional ya que permite únicamente trabajar con un vector que contiene
los valores de la matriz bandeada y ası́ se puede optimizar y agilizar la resolución de varias
ecuaciones en el caso de que se tenga una estructura con demasiados elementos.
La implementación y desarrollo secuencial de este código permite conocer como es el fun-
cionamiento de los softwares comerciales de análisis estructural tales como SAP, ETABS,
14
MILDAS, etc, los cuales conllevan el desarrollo de una gran variedad de lı́neas de código las
cuales incluyen subrutinas y algoritmos en base al principio del modelamiento con FEM.
A partir del método de rigidez directo cuyo principio es la operación con elementos finitos se
puede simplificar en gran parte la resolución de celosı́as considerando el análisis y Discretiza-
ción de la estructura en partes más pequeñas para luego ensamblarlas y operarlas como un
todo, computacionalmente agilita el proceso y evita los posibles errores que podrı́an surgir
cuando se realiza una solución manual.
9. RECOMENDACIONES
Es importante considerar que cuando se tiene cargas uniformemente distribuidas sobre los
vanos, se debe considerar los efectos de las acciones de empotramiento perfecto adicionando
estas a las acciones obtenidas previamente.
Se recomienda mantener una misma nomenclatura respecto a las variables de entrada y en
las variables generadas en proceso, además mantener los archivos en un orden secuencial y de
igual forma las funciones que se requieran en la programación.
Todos los archivos que sean necesarios para la implementación en el algoritmo tanto para la
GUIDE como para el Main Code, deben estar nombrados y guardados en una misma carpeta.
15