OBS.: Los ficheros del tipo [*.F] o [*.DAT] son ficheros del tipo ASCII. Para bajarlos: “Guardar destino como…” y cambiar la extensión ZIP a F o DAT, dependiendo si se trata de una subrutina o un fichero de datos.

Configuración del Developer Studio

config.pdf

 

Tiempo de execución

cputim.f

SUBROUTINE CPUTIM(RTIME)

Esta subrutina proporciona el tiempo de ejecución del programa en segundos.

 

Post_Proceso – GID

Problem Type

Problem_type_solid2.gid.rar

Problem_type_vigas.gid.rar (basado en Problem_type_solid2)

OBS.: Los ficheros del tipo [*.F] o [*.DAT] son ficheros del tipo ASCII. Para bajarlos: “Guardar destino como…” y cambiar la extensión ZIP a F o DAT, dependiendo si se trata de una subrutina o un fichero de datos.

Operaciones con Vectores

 

vecasi.f

SUBROUTINE VECASI(N,V1,V2)

 (Real*8)

 

lvecas.f

SUBROUTINE LVECAS(N,V1,V2)

 (Integer)

 

vecuni.f

SUBROUTINE VECUNI(N,V,MODUL)

Obtiene el versor según la dirección de .

, donde  es el módulo del vector 

 

vecdot.f

SUBROUTINE VECDOT(V1,V2,N,VDOT)

Producto escalar entre los vectores  y 

 

vecpro.f

SUBROUTINE VECPRO(V1,V2,V3)

Producto vectorial entre los vectores  y almacena en 

 

vecsca.f

SUBROUTINE VECSCA(N,A,V1,V2)

, donde  es una constante real.

 

vecadd.f

SUBROUTINE VECADD(N,V1,V2,V3)

  (Real*8)

 

lvecad.f

SUBROUTINE LVECAD(N,V1,V2,V3)

 (Integer)

 

vecupd.f

SUBROUTINE VECUPD(N,A,V1,V2)

, donde  es una constante real.

 

vecdif.f

SUBROUTINE VECDIF(N,V1,V2,V3)

Resta entre los vectores 

veccom.f

SUBROUTINE VECCOM(N,A,B,V1,V2,V3)

, donde ,   son constantes reales

 

vecbas.f

SUBROUTINE VECBAS(V1,V2,V3)

Dado un vector , esta subrutina obtiene una base ortonormal:

con  

Operaciones con Matrices

 

matasi.f

SUBROUTINE MATASI(N1,V1,N2,V2)

transp.f

SUBROUTINE TRANSP(FMATX,NDIME)

Obtiene la transpuesta de : 

 

proma1.f

SUBROUTINE PROMA1(A,B,C,N1,N2,N3)

matmb.f

SUBROUTINE MATMB(A,B,V,NX)

Esta subrutina obtiene la siguiente operación entre matrices:

Datos de entrada A,B,NX

Salida: A

 

proma2.f

SUBROUTINE PROMA2(A,B,C,N1,N2,N3)

 

proma3.f

SUBROUTINE PROMA3(A,B,C,N1,N2,N3)

 

btab3.f

SUBROUTINE BTAB3(A,B,V,NX)

Esta subrutina obtiene la siguiente operación entre matrices:

Datos de entrada A,B,NX

Salida: A

Determinantes de Matrices

determ.f

SUBROUTINE DETERM(A,DETER,N)

, donde 

 

 

Herramientas Auxiliares

 

veczer.f

SUBROUTINE VECZER(N,V)

,  Real*8

 

lvecze.f

SUBROUTINE LVECZE(N,V)

 Integer

OBS.: Los ficheros del tipo [*.F] o [*.DAT] son ficheros del tipo ASCII. Para bajarlos: “Guardar destino como…” y cambiar la extensión ZIP a F o DAT, dependiendo si se trata de una subrutina o un fichero de datos.


Autovalor y Autovector

vecval.f

SUBROUTINE VECVAL(A,B,H,V,ERR,NX)

Proporciona los autovalores y autovectores del siguiente sistema de ecuaciones:

. y  es el error utilizado en la subrutina de JACOB.

Variables de entrada A,B,ERR,NX. Valores auxiliares H,V

Salida: Autovalores están en la diagonal principal de la matriz A. Autovectores están en la matriz B.

En el caso clásico de autovalor  la matriz  es la matriz identidad.

Depende de las siguiente subrutinas: DECOG, INVCH, BTAB3, JACOB, MATMB

Salida: Autovalores  (autovalores en la diagonal principal), Autovectores  .


Ejemplo


Consideremos el siguiente sistema de ecuaciones:

Podemos reestructurar las expresiones anteriores en forma matricial como:

  ; 

La solución analítica (exacta) sigue a continuación, para ello reestructuramos la expresión anterior como:

Este sistema de ecuaciones homogéneo solo tiene solución no trivial si y solo si:

Desarrollando el determinante obtenemos que:

Transformación de Base

trans6.f

SUBROUTINE TRANS6(B,T,IFLA1,IFLA2)

Esta subrutina construye la matriz de transformación para un tensor de segundo orden cuando éste esté en la notación de Voigt.


Matriz de transformación de base:

Notación de Voight que se considera:

Ley de transformación de base de un tensor de segundo orden en notación de Voigt:

donde

Para el caso:

Tenemos que:

Siendo válido que:

OBS.: Los ficheros del tipo [*.F] o [*.DAT] son ficheros del tipo ASCII. Para bajarlos: “Guardar destino como…” y cambiar la extensión ZIP a F o DAT, dependiendo si se trata de una subrutina o un fichero de datos.

areatr3D.f

SUBROUTINE AREATR3D (X,Y,Z,VEC,AREA)

Cálculo de área de un triángulo, utilizando la definición del producto vectorial:

Input: Coordenadas nodales X(3),Y(3),Z(3)

Output: AREA (Área del elemento triangular; VEC(3) (versor normal al elemento de área)


areatr2D.f

SUBROUTINE AREATR2D(X,Y,AREA)

Input: Coordenadas nodales X(3),Y(3)

Output: AREA (Área del elemento triangular)

 

longb.f

SUBROUTINE LONGB (X,Y,Z,LONG,L,M,N)

Esta subrutina retorna la longitud entre dos puntos.

Input: Coordenadas X(2),Y(2),Z(2)

Output: LONG (Longitud), L,M,N (cosenos directores)

Resolución del Sistema Almacenado en Banda

solverband.f

SUBROUTINE SOLVERBAND (N,LBAND,RB,U)

Esta subrutina resuleve el sistema .

Entrada: N, LBAND, RB, y 

Salida: 

En esta subrutina  está almacenada en banda tal y como se indica en la figura abajo:

Definición de 

donde  es el número de grados de libertad por nodo,  es la diferencia máxima de la numeración nodal de los elementos.

Ejemplo:

Subroutina para calcular el ancho de banda

LONGBAND.F

Resolución del Sistema (Matriz no necesariamente simétrica)

solver1.f

SUBROUTINE SOLVER1 (NV,R,U)

Esta subrutina resuelve el sistema 

Entrada: NV, 

Salida: 

Soy un bloque de texto. Haz clic en el botón Editar para cambiar este texto. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

A continuación se presenta la estructura de un diagrama de flujo de un programa basado en el método de los elementos finitos para un problema elástico lineal.


FLUJO

 

Práctica – Construcción del la Matriz de Rigidez Global

Contribución de la matriz de rigidez del elemento  en la matriz de rigidez global 

Práctica: Hacer un procedimiento para la construcción de la matriz de rigidez. Utilizar alocación dinámica para definir las variables relacionadas con el elemento, e.g. KE(NGLE,NGLE), P_MAT(NPAR), XC(NNE,NDIME), etc.

 

 

 

Práctica – Construcción del Vector Auxiliar VET


Práctica
Construir un vector VET genérico tal que relacione la numeración local con la numeración global, donde hay que tener en cuenta los siguientes datos de entrada:
 

INPUT (todas variables tipo INTEGER):
NNE – Número de nodos del elemento
NGLN – Número de grados de libertad del nodo
ELE(NELEM,NNE) – Conectividad del elemento
NELEM – Número de elementos
IELEM – Número del elemento para la obtención de VET
 

OUTPUT(todas variables tipo INTEGER):
VET(NNE*NGLN)

A continuación se muestran unos ejemplos y el formato que presenta el vector VET.


Ej. 1


Ej. 2


Ej. 3


Ej. 4


Ej. 5


SOLUCIÓN

Procedimiento para la construcción del vector VET:

 

Implementar el procedimiento y verificar si se cumple para los siguientes casos particulares:

Ejemplo 1

Ejemplo 2

Ejemplo 3

Ejemplo 4

Elasticidad Lineal

CST-Triángulo con Deformación Constante                                 LST-Triángulo con Deformación Lineal                                     Cuadrilatero

CST-Triángulo con Deformación Constante

Subrutinas para la obtención de la matriz de rigidez y del vector de fuerzas del elemento CST. El vector de desplazamientos nodales viene almacenado como:

 

 

 

 

 

 

 


SUBRUTINAS AUXILIARES

OBS.: Los ficheros del tipo [*.F] o [*.DAT] son ficheros del tipo ASCII. Para bajarlos: “Guardar destino como…” y cambiar la extensión ZIP a F o DAT, dependiendo si se trata de una subrutina o un fichero de datos.

LISTEN.F – LECTURA DE DATOS

GID_POST.F – POST-PROCESO


MATRIZ DE RIGIDEZ

stifcst.f

SUBROUTINE STIFCST(XC,E,POI,T,EST,KE)

Esta subrutina obtiene la matriz de rigidez explícita del elemento finito CST.

Input: EST=1 – Estado de Tensión Plana, EST=2 – Estado de Deformación Plana, T-espesor; E- Módulo de Young, POI-Poisson, XC(3,2) – Coordenadas de los nodos del elemento

Output: Ke(6,6) – Matriz de rigidez 

Subrutinas Auxiliares: MATD_2D.F  AREATR2D.F

OTRA FORMA PARA LA OBTENCIÓN DEL CST

stifcst_N.f

SUBROUTINE STIFCST_N(XC,E,POI,T,EST,KE)

Esta subrutina obtiene la matriz de rigidez numéricamente del elemento finito CST.

Input: EST=1 – Estado de Tensión Plana, EST=2 – Estado de Deformación Plana, T-espesor; E- Módulo de Young, POI-Poisson, XC(3,2) – Coordenadas de los nodos del elemento

Output: Ke(6,6) – Matriz de rigidez 

Subrutinas Auxiliares: MATD_2D.F  AREATR2D.FMATB_CST.FBDBCO1.F


VECTOR DE FUERZAS NODALES – CST

Fuerzas Nodales debido a Deformaciones Iniciales (Variación de Temperatura)

TEMCST.F

SUBROUTINE TEMCST(EST,XC,T,YOUNG,POI,ALFA,DT,FE_THE)

Esta subrutina obtiene el vector de fuerzas nodales debido a deformaciones iniciales producidas por la variación de temperatura .

Input: Propiedades geométricas: t-espesor;

Propiedades mecánica: -módulo de Young, – coeficiente de Poisson

Propiedades térmicas: -coeficiente de dilatación térmica, – variación de la temperatura.

Output: FE_THE(6) – 

Si Estado de Tensión Plana:

Si Estado de Deformación Plana

OBS.: Errata, página 209, ecuación 5.69


Fuerzas Nodales debido a Fuerzas de superficies

SURCST.F

SUBROUTINE SURCST(XC,T,P_FOR,FE_SUP)

Esta subrutina obtiene el vector de fuerzas nodales debido a la fuerza de superficie aplicada en la cara del elemento.

donde


 

Fuerzas Nodales debido a Fuerzas Másicas (Ver pg. 207)

MASCST.F

SUBROUTINE MASCST(XC,T,DENSI,NX,NY,GRAVITY,FE_MAS)

El vector  tiene por unidad en el SI: .

 

 

 

 

 

Subrutinas Auxiliares: AREATR2D.F

 

 




LST-Triángulo con Deformación Lineal

 

Las subrutinas a continuación son válidas para elemento triangular de 6 nodos (con los lados rectos. El vector de desplazamientos del elemento tiene el formato:


SUBRUTINAS AUXILIARES

OBS.: Los ficheros del tipo [*.F] o [*.DAT] son ficheros del tipo ASCII. Para bajarlos: “Guardar destino como…” y cambiar la extensión ZIP a F o DAT, dependiendo si se trata de una subrutina o un fichero de datos.

LISTEN.F – LECTURA DE DATOS

GID_POST.F – POST-PROCESO


MATRIZ DE RIGIDEZ -LST

STIFLST.F

SUBROUTINE STIFLST (XC,E,POI,T,EST,KE)

Esta subrutina obtiene la matriz de rigidez explícita para el elemento finito LST.

Input: XC(6,2)- Coordenadas de los nodos, E-módulo de Young, POI-coeficiente de Poisson, T-espesor, EST=1- Estado de Tensión Plana; EST=2-Estado de Deformación Plana.

Output: Ke(12,12) – Matriz de rigidez 

Subrutinas Auxiliares: AREATR2D.F

OTRAS FORMAS PARA LA OBTENCIÓN DEL ELEMENTO LST

STIFLST2.F

SUBROUTINE STIFLST2 (XC,E,POI,T,EST,KE)

Subrutinas auxiliares: AREATR2D.FMATD_2D.F

NUMÉRICAMENTE

STIFLST3.F

SUBROUTINE STIFLST3 (XC,E,POI,T,EST,KE)

Subrutinas Auxiliares: MATD_2D.F  AREATR2D.FMATBLST.FBDBCO1.F


EJEMPLO

MATRIZ DE RIGIDEZ


VECTOR DE FUERZAS NODALES -LST

FUERZAS MÁSICAS

MASLST.F

FUERZAS DE SUPERFICIE

Pre-proceso:

Conectividad del elemento: i-j-k-l-m-n

Conectividad de la cara : i-j-l

Conectividad de la cara : j-k-m

Conectividad de la cara : k-i-n

 

 


FUERZAS NODALES DEBIDO A LA VARIACIÓN DE TEMPERATURA

TEMLST.F

Tensión Plana Deformación Plana

 

 

 

 

 





Cuadriláteros

 

SUBRUTINAS AUXILIARES

OBS.: Los ficheros del tipo [*.F] o [*.DAT] son ficheros del tipo ASCII. Para bajarlos: “Guardar destino como…” y cambiar la extensión ZIP a F o DAT, dependiendo si se trata de una subrutina o un fichero de datos.

LISTEN.F – LECTURA DE DATOS

GID_POST.F – POST-PROCESO


MATRIZ DE RIGIDEZ – CUADRILÁTEROS 4-NODOS

CUADRILÁTERO REGULAR

stifcs4.f

SUBROUTINE STIFCS4(EST,T,E,POI,X,Y,KE)

Esta subrutina obtiene la matriz de rigidez del elemento finito rectangular de 4 nodos.

Input: EST=1- Estado de Tensión Plana; EST=2-Estado de Deformación Plana, T-espesor, E-módulo de Young, POI-coeficiente de Poisson, X(4),Y(4)- Coordenadas de los nodos.

Output: Ke(8,8) – Matriz de rigidez 

Subrutina auxiliar: MATD_2D.F


MATRIZ DE RIGIDEZ DEL CUADRILÁTERO 4 NODOS

Integración Numérica

stifcs4N.f

SUBROUTINE STIFCS4N(EST,T,E,POI,X,Y,KE)

Subrutinas auxiliares: MATD_2D.FMATBCS4.fBDBCO1.f


VECTOR DE FUERZAS NODALES

 

Ejercicio de Elasticidad Plana-CST


Ejemplo Ilustrativo 5.1 (pg.215)

Fichero de entrada: EJE51.DAT

Formato de los ficheros del post-proceso (GID)

EJE51.POST.MSH

EJE51.POST.RES


Ejemplo Ilustrativo (fuerza de superficie)

Mismo ejemplo que el anterior, pero cambiando las cargas y condiciones de contorno.

Vector de fuerzas nodales:

Fichero de entrada: EJE_TRACTION.DAT

Formato de los ficheros del post-proceso (GID)

EJE_TRACTION.POST.MSH

EJE_TRACTION.POST.RES


Ejemplo Ilustrativo (Variación de Temperatura) – Tensiones Iniciales

Vector de fuerzas nodales:

Fichero de entrada: EJE_TEPERATURE.DAT

Formato de los ficheros del post-proceso (GID)

EJE_TEMPERATURE.POST.MSH

EJE_TEMPERATURE.POST.RES


Ejemplo PLACA AGUJEREADA (pg.240)

Fichero de entrada: PLACA_AGUJ.DAT

 


Ejemplo VIGA (pg.240)

Fichero de entrada: VIGA1.DAT

Ejemplo con Variación de Temperatura

Ejemplo 1: Sin tensión, con deformación

Fichero de datos: Termico2.dat

Ejemplo 2: Sin deformación, con tensión

Fichero de datos: Termico3.dat

Soy un bloque de texto. Haz clic en el botón Editar para cambiar este texto. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

Ejercicio de Elasticidad Plana – LST


Ejemplo Académico – Fuerza de superficie


Fichero de entrada: SURFACE6N.DAT

Estado de tensión plana

Vector de Fuerzas Nodales

Formato de los ficheros del post-proceso (GID)

SURFACE6N.POST.MSH

SURFACE6N.POST.RES


Ejemplo Académico – Variación de Temperatura


Misma geometría y condiciones de contorno que el ejemplo anterior, cambiando solamente la acción. Ahora el material está sometido a un cambio de temperatura de . Considerando un Estado de Deformación Plana.

Fichero de entrada: TEMPERATURA_6N.DAT

Formato de los ficheros del post-proceso (GID)

TEMPERATURA_6N.POST.MSH

TEMPERATURA_6N.POST.RES


Ejemplo Académico 2 – Peso propio


Estado de tensión plana.

 

Para el punto  el estado tensional queda:  (compresión)

Discretización de elementos finitos

Campo de Tensiones – Componente

Fichero de entrada: PESO_PROPIO4.DAT

Formato de los ficheros del post-proceso (GID)

PESO_PROPIO4.POST.MSH

PESO_PROPIO4.POST.RES


Ejercicio 1


Hacer el mismo ejemplo académico 2 utilizando el elemento CST y utilizar distintas mallas de elementos finitos (con distintos grados de refinamiento) y verificar convergencia.

Ejercicio 2

Hacer el mismo ejemplo académico 2 cambiando las condiciones de contorno para que tenga en cuenta que el terreno esté confinado.

Ejercicio de Elasticidad Bidimensional – 2D

OBS.: Los ficheros del tipo [*.F] o [*.DAT] son ficheros del tipo ASCII. Para bajarlos: “Guardar destino como…” y cambiar la extensión ZIP a F o DAT, dependiendo si se trata de una subrutina o un fichero de datos.

Ejemplo de Sensibilidad de la Malla

CONSIDERANDO LA HIPÓTESIS DE TEORÍA DE VIGAS

Deflexión de la línea neutra en el centro (ver ejemplo de Vigas):

Momento de Inercia:

Diagrama de Cortante

 

Diagrama de Flector (positivo si tracciona fibra inferior)

 

MÉTODO DE LOS ELEMENTOS FINITOS

Condiciones de apoyo

Mallas

(LST) viga00_L.dat

(CST) viga1_C.dat – (LST) viga1_L.dat

(CST) viga2_C.dat – (LST) viga2_L.dat

(CST) viga3_C.dat – (LST) viga3_L.dat

Cuadriláteros

viga0_Q.dat

viga2_Q.dat

viga3_Q.dat

Análisis de la sección A-A (Caso Viga3_L.dat) (LST)

Desplazamiento X

Como podemos ver, según la gráfica abajo, la sección A-A que era plana antes de la deformada, tras la deformada sigue siendo plana.

Tensión  en la sección A-A

Podemos aproximar la curva anterior a una parábola cuya área es

Luego el cortante actuante en la sección A-A es .

Según la teoría de vigas, el cortante en esta sección es igual a .

ANÁLISIS DE LA SECCIÓN B-B

Luego el momento en la sección es:

VIGA DE GRAN CANTO

Vamos considerar una viga de gran canto. Para ello consideramos el ejemplo anterior y solo cambiando el ancho de la viga que en lugar de 0,5m será igual a 6m.

Tras la deformada vemos que la sección A-A que era plana deja de ser plana. Violando así la hipótesis fundamental para considerar una viga a través de la teoría de vigas.

Deformada

Estructuras

ELEMENTO BARRA

OBS.: Los ficheros del tipo [*.F] o [*.DAT] son ficheros del tipo ASCII. Para bajarlos: “Guardar destino como…” y cambiar la extensión ZIP a F o DAT, dependiendo si se trata de una subrutina o un fichero de datos.

MATRIZ DE RIGIDEZ

stifbar1D.f

SUBROUTINE STIFBAR1D (E,A,LONG,KE)

Esta subrutina obtiene la matriz de rigidez de un elemento barra (1D) de sección constante.

 

Input: LONG-longitud de la barra. E-módulo de Young, A – Área de la sección transversal de la barra

Output: KE-matriz de rigidez –

 

stifbar2D.f

SUBROUTINE STIFBAR2D (L,M,E,A,LONG,KE)

Esta subrutina obtiene la matriz de rigidez (en el sistema de coordenadas globales X-Y) de un elemento barra cuya configuración está en el espacio bidimensional (2D). El elemento de barra presenta sección constante.

 

Input: L, M: cosenos directores, LONG-longitud de la barra. E-módulo de Young, A – Área de la sección de la barra

Output: KE-matriz de rigidez –

 

stifbar3D.f

SUBROUTINE STIFBAR3D (L,M,N,E,A,LONG,KE)

Esta subrutina obtiene la matriz de rigidez (en el sistema de coordenadas globales X-Y-Z) de un elemento barra cuya configuración está en el espacio tridimensional (3D). El elemento de barra presenta sección constante.

 

Input: L, M, N: cosenos directores, LONG-longitud de la barra. E-módulo de Young, A – Área de la sección transversal de la barra

Output: KE-matriz de rigidez –

 

stifbar.f

SUBROUTINE STIFBAR (NDIME,L,M,N,E,A,LONG,KE)

Esta subrutina obtiene la matriz de rigidez de un elemento barra de sección transversal constante.

Input: NDIME (dimensión); L, M, N: cosenos directores, LONG-longitud de la barra. E-módulo de Young, A – Área de la sección de la barra.

Output: KE(2*NDIME,2*NDIME)-matriz de rigidez –

donde

NDIME=1 – caso 1D; NDIME=2 – caso 2D; NDIME=3 – caso 3D

CÁLCULO DE LA TENSIÓN EN EL ELEMENTO BARRA

tensbar.f

SUBROUTINE TENSBAR (NDIME,L,M,N,E,LONG,UE,TENSX)

Esta subrutina obtiene la tensión en el elemento barra de sección transversal constante.

 

Input: NDIME: dimensión; L,M,N: cosenos directores; E: módulo de Young; LONG: longitud de la barra (sección constante), UE(2*NDIME): vector desplazamientos nodales del elemento (coordenadas globales)

Output: TENSX

CÁLCULO DE LOS ESFUERZOS EN EL ELEMENTO BARRA

esfbar.f

SUBROUTINE ESFBAR (NDIME,KE,UE,FE)

Esta subrutina obtiene los esfuerzos en el elemento barra en las coordenadas globales.

 

Input: NDIME: dimensión; KE(2*NDIME,2*NDIME): matriz de rigidez del elemento barra (coordenadas globales); UE(2*NDIME): vector desplazamientos nodales del elemento (coordenadas globales).

Output: FE(2*NDIME)

POST-PROCESO – GID

gid_post.f

SUBROUTINE GID_POST (NDIME, NGLN, NNE, NNODE, NELEM, NPROP, COR, ELE, PROPI, DESPL, FI_LOC)

Esta subrutina genera los ficheros para el post-proceso en GID

donde graban los resultados en los ficheros:

OPEN (10,FILE=ARQ(1:INDEX(ARQ,’.’,BACK=.TRUE.)-1)//’.POST.MSH’,STATUS=’UNKNOWN’)

OPEN (11,FILE=ARQ(1:INDEX(ARQ,’.’,BACK=.TRUE.)-1)//’.POST.RES’,STATUS=’UNKNOWN’)

ARQ=[nombre.dat]