2 Ejercicio resistencias.nb

Estas variables son los datos de entrada del sistema. Para el problema que se ... El valor numérico de la condición de contorno se almacena en otro vector.
110KB Größe 6 Downloads 82 vistas
Circuito de resistencias Curso de Geomecánica Computacional Dr. Alejo O. Sfriso

Módulos Matriz de rigidez elemental La matriz de rigidez elemental es In[34]:=

Clear  RigidezElemento  RigidezElemento [ R_ ] :=

1 R

* 

1 -1  -1 1

Ensamblador de matriz de rigidez global Esta rutina forma la matriz de rigidez global a partir de la matriz de rigidez elemental y la matriz de conectividad In[36]:=

Clear [ Ensamblador ] Ensamblador Conectividad_ , nodos_ , elementos_ , R_  :=Module   i , j , k , ini , fin , Res , RigidezGlobal  , RigidezGlobal = Table  0 ,  j , nodos  , { k , nodos }  ; i = 1 ; While  i ≤ elementos , ini = Conectividad   i , 1   ; fin = Conectividad   i , 2   ; Res = R   i   ; RigidezGlobal   ini , ini   = RigidezElemento [ Res ] [ [ 1 , 1 ] ] + RigidezGlobal RigidezGlobal   ini , fin   = RigidezElemento [ Res ] [ [ 1 , 2 ] ] + RigidezGlobal RigidezGlobal   fin , ini   = RigidezElemento [ Res ] [ [ 2 , 1 ] ] + RigidezGlobal RigidezGlobal   fin , fin   = RigidezElemento [ Res ] [ [ 2 , 2 ] ] + RigidezGlobal i = i + 1 ;  ; Return  RigidezGlobal  

Condensación de la matriz de rigidez global y del vector de cargas La condensación de la matriz de rigidez implica la eliminación de filas y columnas, mediante la utilización de las condiciones de contorno. La información almacenada en estas filas y columnas pasa al término de carga, que también es condensado.

2

2 Ejercicio resistencias.nb

In[38]:=

Clear [ Condensador ] Condensador  CondicionContorno_ , ValorContorno_ , RigidezGlobal_ , nodos_  := Module  i , j , iRC , jRC , RigidezCondensada , Cargas , gdl  , gdl = nodos - Sum  CondicionContorno   i   ,  i , nodos   ; RigidezCondensada = Table  0 ,  i , gdl  ,  j , gdl   ; Cargas = Table  0 ,  i , gdl   ; i = 1 ; iRC = 1 ; While  i≤ nodos , j = 1 ; jRC = 1 ; If  CondicionContorno   i   ⩵ 0 , Cargas   iRC   = ValorContorno   i   + Cargas   iRC   ; While  j ≤ nodos , If  CondicionContorno   j   ⩵ 0 , RigidezCondensada   iRC , jRC   = RigidezGlobal   i , j   j = j + 1 ; jRC = jRC + 1 ; , Cargas   iRC   = Cargas   iRC   - RigidezGlobal   i , j j = j + 1 ;  ; i = i + 1 ; iRC = iRC + 1 ; , i = i + 1 ;  ; Return   RigidezCondensada , Cargas   

Expansión del vector de tensiones El vector de tensiones debe ser expandido, para que cada posición corresponda a la numeración global de nodos

2 Ejercicio resistencias.nb

In[40]:=

3

Clear  Expansion  Expansion  nodos_ , CondicionContorno_ , ValorContorno_ , TensionCondensada_  := Module  TensionExpandida , i , iT  , TensionExpandida = Table  0 ,  i , nodos   ; i = 1 ; iT = 1 ; While  i ≤ nodos , If  CondicionContorno   i   ⩵ 0 , TensionExpandida   i   = TensionCondensada   iT   ; iT = iT + 1 ; i = i + 1 ; , TensionExpandida   i   = ValorContorno   i   ; i = i + 1 ;   ; Return  TensionExpandida  

Ejercicio del ejemplo Datos de entrada La geometría del problema está definida por: - la cantidad de nodos y elementos - las características de cada uno de los elementos - la conexión entre ellos - las condiciones de contorno, tanto esenciales (CCE) como naturales (CCN) Estas variables son los datos de entrada del sistema. Para el problema que se plantea como ejemplo, In[42]:=

Clear [ nodos , elementos ] nodos = 6 ; elementos = 8 ;

La resistencia de cada uno de los elementos se almacena en el vector de resistencias elementales. Para el problema del ejemplo es In[45]:=

Clear [ R , R1 , R2 , R3 , R4 , R5 , R6 , R7 , R8 ] R = { R1 , R2 , R3 , R4 , R5 , R6 , R7 , R8 } ;

La conectividad entre los diferentes elementos se establece en la matriz de conectividad, que contiene en la fila iésima, columna 1, el nodo de partida del elemento iésimo. En la columna 2 está el correspondiente nodo de llegada.

4

2 Ejercicio resistencias.nb

In[47]:=

Clear  Conectividad 

Conectividad =

1 2 3 4 5 3 2 1

2 3 4 5 6 5 5 6

;

Finalmente, las condiciones de contorno se almacenan en un vector que tiene un 1 si existe una CCE y un 0 si existe una CCN. El valor numérico de la condición de contorno se almacena en otro vector. Los valores numéricos nulos de las CCN no necesitan ser definidos, puesto que 0 es el valor de inicialización de la variable. In[49]:=

Clear  CondicionContorno , ValorContorno  ValorContorno = CondicionContorno = Table  0 ,  i , nodos   ; CondicionContorno [ [ 6 ] ] = 1 ; ValorContorno [ [ 2 ] ] = 0.1 ; ValorContorno [ [ 6 ] ] = 12 ;

Matriz de rigidez global In[54]:=

RigidezGlobal = Ensamblador  Conectividad , nodos , elementos , R  ; RigidezGlobal // MatrixForm

Out[55]//MatrixForm=

1 R1

+

1 R8

1 - R1

1 - R1 1 R1

0

1 1 + R7 R2 1 - R2

+

0

0

0

-

1 - R8

1 R7

0

1 R2

0

0

0

1 - R8

1 - R2

0

1 - R7

0

1 R6 1 R4

0

1 1 + R3 + R6 1 - R3 1 - R6

1 R3

-

0

1 R3

+

-

1 R4

1 R4

1 R4

+

1 R5

+

1 R6

0 +

1 R7

1 - R5

0

1 - R5 1 R5

+

1 R8

Condensación de matriz de rigidez In[56]:=

 RigidezCondensada , Cargas  = Condensador  CondicionContorno , ValorContorno , RigidezGlobal RigidezCondensada // MatrixForm

Out[57]//MatrixForm=

1 R1

-

+

1 R8

1 R1

0

1 - R1 1 R1

1 1 + R2 + R7 1 - R2

0

0

0

1 - R7

0

0

0

1 - R2 1 1 1 + R3 + R6 R2 1 - R3 1 - R6

0

1 - R7

1 - R3

1 - R6

1 R3

+

1 R4

1 - R4

1 - R4 1 R4

+

1 R5

+

1 R6

+

1 R7

2 Ejercicio resistencias.nb

In[58]:=

5

R1 = 10. ; R2 = 3. ; R3 = 2. ; R4 = 7. ; R5 = 12. ; R6 = 5. ; R7 = 4. ; R8 = 9. ;  RigidezCondensada // MatrixForm , Cargas // MatrixForm 

Out[59]=

0.211111 - 0.1 0 0 0 - 0.1 0.683333 - 0.333333 0 - 0.25  , 0 - 0.333333 1.03333 - 0.5 - 0.2 0 0 - 0.5 0.642857 - 0.142857 0 - 0.25 - 0.2 - 0.142857 0.67619

1.33333 0.1  0 0 1.

Solución del sistema de ecuaciones La solución del sistema lineal de ecuaciones no es parte del ejercicio, por lo que Mathematica se encarga. In[60]:=

Clear  RigidezInvertida , TensionCondensada  RigidezInvertida := Inverse  RigidezCondensada  ; TensionCondensada := RigidezInvertida . Cargas ;

Con este procedimiento, se obtienen las tensiones e intensidades en todos los nodos y elementos de la malla In[63]:=

ClearTension , Intensidad  Tension = Expansion  nodos , CondicionContorno , ValorContorno , TensionCondensada  ; Intensidad = RigidezGlobal . Tension ; Print   MatrixForm  Tension  , MatrixForm  Intensidad    12.3885 12.8202 12.7535  , 12.7376 12.6819 12

0. 0.1 4.44089 × 10-16 - 1.9984 × 10-15 8.88178 × 10-16 - 0.1