Lo que he aprendido: subestructuras en Abaqus

Hace un tiempecillo compartí con vosotros un poco de código para leer matrices de subestructura de Abaqus en Matlab. Hoy voy a contar cómo se usan las subestructuras en Abaqus porque difícilmente vamos a poder importar una en Matlab si no la hemos creado antes. La teoría de lo que es una subestructura, para qué sirve y tal seguro que ya la sabéis, pero algún día igual me vengo arriba y os la repito 😉

Vamos al lío.


Usar subestructuras tiene dos partes diferenciadas: hacer el modelo de la subestructura y hacer el modelo completo donde se usará la subestructura. Esto tiene toda la lógica si pensáis en la teoría: en el modelo de subestructura condensaremos las matrices a los nodos que nos parezca y luego en el modelo completo importaremos las matrices reducidas.

Empecemos con el primer pasito:

Lo que es la subestructura en sí

Esto en sí es bastante fácil, el problema está en que reduzcamos como es debido, cosa que está más relacionada con nuestra capacidad de modelización que con el programa. Son cuatro pasos de nada:

1) Hacemos un modelo que solo contenga la subestructura

2) Creamos un Step de generación de subestructuras:

elegir

Tenemos que darle un número identificador y decirle qué modos y qué matrices necesitamos. Si no le decimos nada, solo calcula la matriz de rigidez porque supone que estamos haciendo una condensación estática, es muy listo él.

step

Yo voy a hacer una condesación dinámica porque me gusta que las cosas se muevan, pero la estática funciona parecido, es más fácil de hecho 🙂

3) Creamos una condición de contorno de nodos retenidos (Retained nodal dofs) y elegimos las superficies y grados de libertad a los que condensaremos las matrices1, las fronteras en jerga subestructuril.

4) Creamos y enviamos el Job.

Ese es el esquema general, pero debemos tener en cuenta lo siguiente:

  • Para que retenga modos tendremos que hacer un cálculo de modos antes de la
    creación de la subestructura

  • Para que aplique las cargas en la subestructura en el modelo completo será necesario que creemos un Load Case en el modelo de la subestructura. En el modelo completo tendremos que crear un Substructure Load donde se escalara la carga.

  • Todas las condiciones de contorno y cargas hay que aplicarlas en un Step
    previo al de la creación de la subestructura y liberarla en el Step de subestructura. Es algo que hay que tener especialmente en cuenta si somos fans de síntesis modal con fronteras fijas.

Para exportar las matrices de la subestructura tendremos que escribir lo siguiente en el step de generar la subestructura:

*SUBSTRUCTURE MATRIX OUTPUT, OUTPUT FILE=USER DEFINED, FILE
NAME=nombre, STIFFNESS=YES, MASS=YES

Generará un archivo .mtx por cada matriz que podremos leer con el código aquel de Matlab. Estos archivos de matriz tendrán una estructura diferente dependiendo de si la matriz es simétrica o asimétrica:

  • Si es simétrica exporta solamente media matriz, básicamente va escribiendo el triángulo y cuando se queda sin espacio en la línea salta:

symmetric

  • Si no es simétrica tiene que exportar la matriz completa:

asymmetric

La mayor parte de las veces las matrices serán simétricas, así que voy a quedarme con este caso. Si importamos la matriz de rigidez en Matlab nos encontraremos con algo como esto:

K

El primer triángulo representa los grados de libertad retenidos. Hacen un total de nodos_Retenidos*gdl_por_nodo. El resto es una matriz diagonal cuya dimension es igual al número de modos retenidos. Por ejemplo, en este caso he retenido 4 nodos con 3 gdl por nodo y 40 modos, por eso hay un triángulo de 4*3 = 12 filas y una parte diagonal de 40 filas, haciendo un total de 12+40 = 52 filas.

La matriz de masa es algo asi:

M

La explicación de una matriz tan raruna es hace Craig – Bampton2, es decir, parte las matrices de la siguiente manera:

Craig

Ahí también se ve claro por qué la matriz de rigidez tiene la pinta que tiene.

Ahora nos falta importar la subestructura en el modelo completo. Hagámoslo.

En el modelo completo

La subestructuras importan como si fueran partes normales en File > Import > Part y eligiendo el archivo .sim que hemos generado en los pasos anteriores, que tendrá un nombre del tipo nombreModelo_Z Identificador.sim. También se tratan como piezas normales, la única diferencia es que solo podremos interaccionar con los nodos retenidos.

En Part > Query podemos ver el número de grados de libertad retenidos y tal, para hacernos una idea de cómo es nuestro modelo:

query

statistics

Y ya está, señores. Podemos jugar todo lo que queramos con ello, ver qué modos necesitamos, cómo afecta usar fronteras fijas o libres, ver la calidad de los resultados… Horas de entretenimiento 😛


  1. Cuidado con lo que elegís, que me he puesto a hacer una prueba chorra y he creado sin querer un archivo de 8GB 
  2. Algún día os contaré más sobre este método, de momento podéis echarle un ojo aquí 
Anuncios

¡Opina sin miedo! (Puedes usar Markdown)

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s