Lo que he aprendido: crear archivos unv de modos en Matlab

Si recordáis, hace poco puse por aquí como generar un unv de geometría en Matlab. Hoy traigo el más difícil todavía: la generación de modos. También incluyo un bonus para tratar de explicar cómo se llega del fantástico archivo de definición de los unv a un código para escribir uno. Pongámonos a ello.


El formato universal

La última vez que hablé de los archivos unv o uff dije que eran archivos universales, pero no detallé en qué consistían. Así soy. Hoy ya no me puedo librar. Veamos, los unv son simples archivos de texto que están organizados de una manera concreta1.

Sus características son:

  • Tienen una cabecera de 80 caracteres de longitud
  • Cada bloque de información empieza con una línea que contiene un -1 en los primeros 6 espacios y acaba con una línea exactamente igual
  • La línea siguiente al -1 tiene un número en los primeros 6 espacios que indica el tipo de dato que habrá a continuación, por ejemplo, el 55 indica un archivo de modos y el 15 un archivo de geometría.
  • Entre los delimitadores estarán los datos correspondientes con un formato concreto. De esto hablaré más adelante.

Algo así, en definitiva:

unv

El problema que tenemos es que si vamos al archivo de definición de estos archivos para ver cuál debe ser el formato de los datos a la hora de escribirlos, nos encontramos que pone fantásticas cosas como I10, 80A1 y mi favorita 3E13.5. Después de un rato de locura y desesperación, viene (como siempre) Stackoverflow al rescate y nos informa de que esos chirimbolos tan elegantes se llaman formato Fortran e indican el tipo de dato y cuántos datos se esperan. Muy genial todo.

El formato Fortran

Tal y como decía al principio, aquí viene el bonus. En este blog se da lo que se promete. Como ya sabréis, Fortran es un lenguaje de programación del año de la pera pero que se sigue usando alegremente hoy en día2. Pues resulta que Fortran usa expresiones como las anteriores a la hora de pintar los datos en la pantalla, lo que vendría a ser el muy mítico %6.3f. Aquí está perfectamente explicado, pero para lo que nos interesa nos sirve con saber lo siguiente:

datos

Y que E hace referencia a notación exponencial, I a un número entero y A a un carácter alfanumérico. Para que nos entendamos:

80A1 --> %80s
I10 --> %10i
3E13.5 --> '%13.5f %13.5f %13.5f'

Ahora ya tenemos todas las herramientas para crear un archivo universal de lo que nos apetezca.

Cómo escribir modos

Pues sin más dilación os enseño el código para escribir modos3 que he escrito en Matlab. Lo tenéis también en mi repo en GitHub con sus ejemplillos y tal.

Nada más por hoy, sigan currando para dominar el mundo 😉


  1. Aquí lo tenéis explicado también 
  2. Es especialmente querido por los ingenieros mecánicos (o de la piedra y el palo como nos autodenomino) no me digáis por qué. 
  3. Son modos complejos en este caso, pero tenéis el archivo de definición y entendéis el formato Fortran así que podéis escribir cualquier cosa 
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