Lo que he aprendido: extraer matrices globales de Abaqus

Seguimos con Abaqus, gente. Hoy os cuento cómo extraer las matrices globales y cómo leerlas después en Matlab. Un día no muy lejano todo esto que escribo aquí se unirá y creará una historia gigante. Paciencia, ese día llegará. De momento leamos matrices.


Abaqus nos permite exportar las matrices de dos maneras: como matrices elementales que luego deberemos ensamblar o las matrices globales. Yo soy vagancias y paso de ensamblar así que elegí la opción 2. El tema de para qué quiero yo las matrices globales os lo contaré en el futuro, el día que se alineen los astros.

Además, Abaqus puede exportar estas matrices en diferentes formatos. Nosotros vamos a quedarnos con el .mtx que es un fichero de texto plano y es fácil de leer. Una vez que sabemos esto, lo que tenemos que hacer es incluir este step en el .inp:

*STEP, name=exportmatrix
*MATRIX GENERATE, STIFFNESS, MASS, STRUCTURAL DAMPING
*MATRIX OUTPUT, STIFFNESS,MASS, STRUCTURAL DAMPING, FORMAT=MATRIX INPUT
*END STEP
**

Lógicamente, le llamáis como os apetezca, teniendo en cuenta que Abaqus bautizará los archivos que cree como nombreStep_STIF#.mtx, nombreStep_MASS#.mtx … donde # es el número del step. Y, lógicamente también, incluis solamente las matrices que queráis sacar, podéis elegir entre STIFFNESS, MASS, STRUCTURAL DAMPING, VISCOUS DAMPING y LOAD.

Ahora que ya hemos exportado, nos queda entender el archivo .mtx. Este archivo tiene 5 columnas que representan los valores no nulos de la matriz. Las columnas representan:

  1. El nodo al que corresponde la fila
  2. El grado de libertad del nodo de la fila
  3. El nodo al que corresponde la columna
  4. El grado de libertad del nodo de la columna
  5. El valor de la matriz para esa posición

Es decir: nodo1, gdl, nodo2, gdl, valor.

Esto lo podemos leer muy fácilmente en Matlab, aquí tenéis el código que yo he utilizado, que es una modificación para el caso tridimensional del código que hay aquí

Por último, algunas cosas a tener en cuenta para no liarla:

  • Si colocáis este step después de un step en el que se apliquen codiciones de contorno, exportará con las condiciones de contorno aplicadas. Cuidado con esto porque nos puede dar problemas por el condicionamiento de la matriz. Mejor exportar libre y aplicar las condiciones de contorno en Matlab, sobre todo si estáis calculando frecuencias naturales.

  • No carrula bien para los elementos de modos incompatibles, exporta cosas raras delante1. Esto nos la lía a todos los que tenemos problemas de flexión y nos obliga o a mallar ultrafino o a usar elementos cuadráticos.

  • Si vais a aplicar las condiciones de contorno en Matlab os recomiendo activar “Do not use part and assembly” en los atributos del modelo y os ahorráis el lío de que llame diferente a los nodos en el Part y en el Assembly.

Y hasta aquí hemos llegado, chavalería. Ya podemos usar Abaqus para que nos cree matrices y luego usarlas nosotros para fines perversos. Os quejaréis.


  1. Estas cosas raras son, supongo, cómo aplica Abaqus la condición de cortante cero en caso de flexión pura y tal, pero no me hagáis mucho caso, aun no sé interpretarlo. 
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