Вы находитесь на странице: 1из 146

Universidad Politecnica de Madrid

Escuela Tecnica Superior de Ingenieros de Caminos,


Canales y Puertos

Un entorno de desarrollo para


la dinamica no lineal de
mecanismos flexibles

Trabajo de investigacion

Daniel Iglesias Ibanez


Ingeniero Industrial

Madrid, Septiembre 2005


Indice general

1. Introduccion 1
1.1. Desarrollo historico . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Motivacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3. Alcance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4. Estado de la tecnica . . . . . . . . . . . . . . . . . . . . . . . 5
1.4.1. Formulaciones de piezas flexibles . . . . . . . . . . . . 6
1.5. Objetivos de la investigacion . . . . . . . . . . . . . . . . . . . 7
1.6. Hipotesis de la investigacion . . . . . . . . . . . . . . . . . . . 8

2. Formulacion dinamica no lineal de mecanismos flexibles 9


2.1. Formulacion continua de solidos flexibles . . . . . . . . . . . . 9
2.1.1. Medidas de deformacion . . . . . . . . . . . . . . . . . 9
2.1.2. Medidas de tensiones . . . . . . . . . . . . . . . . . . . 10
2.1.3. Ecuaciones de balance mecanico: Formulacion fuerte . . 11
2.1.4. Ecuaciones constitutivas de materiales solidos elasticos 17
2.1.5. Principios variacionales: Formulacion debil . . . . . . . 19
2.2. Formulacion discreta de la dinamica de solidos flexibles . . . . 20
2.2.1. Discretizacion por elementos finitos . . . . . . . . . . . 20
2.2.2. Sntesis modal de componentes . . . . . . . . . . . . . 21
2.3. Formulacion de la dinamica de solidos rgidos . . . . . . . . . 27
2.3.1. Parametrizaciones de sistemas de solidos rgidos . . . . 28
2.4. Formulacion de restricciones . . . . . . . . . . . . . . . . . . . 33
2.4.1. Metodo de los multiplicadores de Lagrange . . . . . . . 34
2.4.2. Metodo de la penalizacion . . . . . . . . . . . . . . . . 35
2.4.3. Metodo del lagrangiano aumentado . . . . . . . . . . . 35
2.5. Formulacion de sistemas de solidos rgidos y flexibles . . . . . 36
2.6. Contactos e impactos . . . . . . . . . . . . . . . . . . . . . . . 37

3. Resolucion numerica de las ecuaciones de la dinamica 39


3.1. Integradores temporales . . . . . . . . . . . . . . . . . . . . . 44
3.1.1. Conceptos previos . . . . . . . . . . . . . . . . . . . . . 44
3.1.2. Clasificacion de integradores . . . . . . . . . . . . . . . 46
3.1.3. Integradores multipaso lineales . . . . . . . . . . . . . . 48
3.1.4. Metodos Runge-kutta . . . . . . . . . . . . . . . . . . . 50
3.1.5. Esquemas predictor-corrector . . . . . . . . . . . . . . 52

3
3.1.6. Familia -Newmark . . . . . . . . . . . . . . . . . . . . 53
3.1.7. Metodo de Hilber-Hughes-Taylor (HHT) . . . . . . . . 54
3.1.8. Metodo de Energa-Momento . . . . . . . . . . . . . . 54
3.2. Metodos de solucion de sistemas algebraicos no lineales . . . . 55
3.2.1. Metodo de Newton . . . . . . . . . . . . . . . . . . . . 55
3.2.2. Metodo de Newton modificado . . . . . . . . . . . . . . 56
3.2.3. Metodos cuasi-Newton . . . . . . . . . . . . . . . . . . 56
3.3. Metodos de solucion de sistemas algebraicos lineales . . . . . . 58
3.3.1. Metodos directos . . . . . . . . . . . . . . . . . . . . . 58
3.3.2. Metodos iterativos . . . . . . . . . . . . . . . . . . . . 59

4. Entornos de desarrollo. Estado del arte 63


4.1. Herramientas comerciales de simulacion mecanica . . . . . . . 63
4.1.1. Codigos multicuerpo . . . . . . . . . . . . . . . . . . . 64
4.1.2. Codigos MEF . . . . . . . . . . . . . . . . . . . . . . . 66
4.1.3. Entornos matematicos . . . . . . . . . . . . . . . . . . 67
4.2. Herramientas de investigacion para la simulacion mecanica . . 68
4.2.1. Aplicaciones de simulacion multicuerpo . . . . . . . . . 69
4.2.2. Libreras de calculo . . . . . . . . . . . . . . . . . . . . 69
4.3. Lenguajes de programacion . . . . . . . . . . . . . . . . . . . 70
4.3.1. Lenguajes de programacion estructurada . . . . . . . . 71
4.3.2. Lenguajes de programacion orientada a objetos . . . . 71
4.3.3. Lenguajes de programacion cientfca . . . . . . . . . . 72
4.4. Entornos integrados de desarrollo . . . . . . . . . . . . . . . . 73

5. Especificaciones para un entorno de desarrollo 75


5.1. Definicion del problema: Preproceso . . . . . . . . . . . . . . . 75
5.1.1. Lenguaje de definicion del problema . . . . . . . . . . . 76
5.1.2. Herramientas visuales de mallado . . . . . . . . . . . . 77
5.2. Resolucion del problema: Solucion . . . . . . . . . . . . . . . . 78
5.2.1. Caractersticas matematicas . . . . . . . . . . . . . . . 78
5.2.2. Caractersticas informaticas . . . . . . . . . . . . . . . 80
5.3. Analisis de resultados: Postproceso . . . . . . . . . . . . . . . 82

6. Diseno e implementacion del entorno 85


6.1. Estructura del entorno . . . . . . . . . . . . . . . . . . . . . . 85
6.1.1. Estructura del modulo de solucion . . . . . . . . . . . . 87
6.2. Librera matricial . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2.1. Matrices: clase Matrix . . . . . . . . . . . . . . . . . . 88
6.2.2. Vectores: clase Vector . . . . . . . . . . . . . . . . . . 91
6.2.3. Estructuras de datos: clase Data mat . . . . . . . . . . 94
6.2.4. Sistemas lineales: clase Linear system . . . . . . . . . 96
6.2.5. Seleccion de tipo de estructura matricial y metodo de
solucion . . . . . . . . . . . . . . . . . . . . . . . . . . 97
6.2.6. Dependencia entre componentes de la librera . . . . . 98
6.3. Librera de metodos de solucion no lineales . . . . . . . . . . . 99
6.3.1. Seleccion de metodo de solucion de ecuaciones no lineales100
6.4. Librera de sistemas de ecuaciones diferenciales . . . . . . . . . 100
6.4.1. Tipos de problema . . . . . . . . . . . . . . . . . . . . 101
6.4.2. Sistemas diferenciales . . . . . . . . . . . . . . . . . . . 103
6.4.3. Integradores temporales . . . . . . . . . . . . . . . . . 104
6.4.4. Ejemplo de utilizacion de la librera . . . . . . . . . . . 107

7. Aplicaciones del entorno 111


7.1. PACE: Programa Academico de Calculo de Estructuras . . . . 111
7.1.1. Caractersticas del programa . . . . . . . . . . . . . . . 112
7.1.2. Estructura del codigo . . . . . . . . . . . . . . . . . . . 112
7.1.3. Estructura del archivo de entrada . . . . . . . . . . . . 114
7.2. Aplicacion de simulacion dinamica de mecanismos flexibles . . 116
7.2.1. Objetivos de la aplicacion . . . . . . . . . . . . . . . . 116
7.2.2. Esquema basico de la aplicacion . . . . . . . . . . . . . 117
7.2.3. Esquema de clases para el modelo de mecanismo . . . . 118

8. Conclusiones y futuras lneas de trabajo 125


8.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
8.2. Futuras lneas de investigacion . . . . . . . . . . . . . . . . . . 125

A. Informe de salida de PACE 127


A.1. Datos de partida del problema: . . . . . . . . . . . . . . . . . 127
A.2. Calculo de la matriz de rigidez de la estructura. . . . . . . . . 128
A.2.1. Matrices de rigidez de las barras. . . . . . . . . . . . . 128
A.2.2. Matriz de rigidez de la estructura: . . . . . . . . . . . . 130
A.3. Calculo de los desplazamientos de la estructura. . . . . . . . . 130
A.3.1. Posiciones libres y restringidas. . . . . . . . . . . . . . 130
A.3.2. Vector de fuerzas de la estructura. . . . . . . . . . . . . 130
A.3.3. Vector de desplazamientos restringidos de la estructura. 130
A.3.4. Vector de desplazamientos libres calculados para la es-
tructura. . . . . . . . . . . . . . . . . . . . . . . . . . . 131
A.4. Calculo de las reacciones de la estructura. . . . . . . . . . . . 131

Bibliografa 133
Captulo 1

Introduccion

1.1. Desarrollo historico


La busqueda del razonamiento y prediccion del estado y el movimiento
de los cuerpos solidos, tradicionalmente denominados cuerpos materiales, ha
sido una de las disciplinas de la Ciencia que ha avanzado de forma paralela
al desarrollo de las disciplinas matematicas.
Junto con los trabajos de Johannes Kepler y Rene Descartes, las ex-
periencias y teoras de Galileo Galilei con sus leyes de transformacion
sentaron las bases para que Isaac Newton desarrollara la Teora Mecanica
Clasica en sus Philosophiae naturalis principia mathematica, donde enuncia
las tres leyes fundamentales del movimiento. Gracias al desarrollo del calculo
infinitesimal por parte del propio Newton y de Gottfried Leibniz, la mecani-
ca clasica fue avanzando constantemente, impulsada por aportaciones entre
las que cabe destacar las del prolfico Leonhard Euler en los apartados de la
mecanica vectorial, los conceptos de partcula y masa puntual y la mecanica
del solido rgido.
Con el tratado Mecanique Analytique, Joseph Louis Lagrange reformula
la mecanica clasica a partir del calculo de variaciones consiguiendo una ge-
neralidad inedita en la formulacion de las leyes de movimiento. Las claves de
su trabajo fueron la extension de la ley de trabajos virtuales que empleaba
como principio fundamental y el metodo de las coordenadas generalizadas.
Su trabajo fue tan elegante que Willian Rowan Hamilton lo describio como
un poema cientfico. Incluso el propio Lagrange se jactaba de no haber te-
nido que incluir ni una sola ilustracion en el tratado de mecanica citado. Se
ha de mencionar que incluso fue Lagrange el que dio la forma variacional
a la expresion conocida ahora como principio de dAlembert, quizas un re-
conocimiento excesivo para este ultimo cuando lo maximo que se le puede
reconocer es el establecimiento de la nulidad de la suma de las fuerzas de
restriccion. Por ultimo, se desea recordar la gran aportacion de Hamilton, no
solo por el desarrollo de sus famosos cuaterniones, sino principalmente por
su formulacion de la mecanica que ha permitido una mayor profundizacion

1
2 1.1. Desarrollo historico

teorica de la misma.
Aparte de la mecanica de los sistemas de solidos rgidos, la mecanica
del medio continuo (MMC) estudia el comportamiento de cada uno de los
puntos de un medio, considerando como punto una porcion del volumen in-
fintamente pequena (lmite infinitesimal). La mecanica del solido continuo
rama especializada en los cuerpos materiales de la MMC es tambien
conocida como Teora de la Elasticidad. El primer cientfico que estudio en
profundidad el comportamiento elastico de los materiales fue el ingles Robert
Hooke, quien descubrio la relacion lineal entre fuerza y extension, estable-
ciendo el equilibrio fuerza-desplazamiento para el caso unidimensional. Mas
de cien siglos despues, Thomas Young observo que distintos materiales se de-
formaban con angulos distintos al aplicar la misma fuerza, estableciendo que
la rigidez de los materiales se poda expresar a traves de una constante que
ahora conocemos con su nombre. La generalizacion a las tres dimensiones de
estas teoras las llevaron a cabo Augustin Louis Cauchy a traves de su teora
de la tension y Simeon Denis Poisson con sus contribuciones al estudio de la
compatibilidad de las deformaciones.
El estudio de la Resistencia de los Materiales a traves del analisis de la
capacidad de carga de vigas comenzo probablemente con las observaciones
de Galileo y sus intentos de formular analticamente ese comportamiento. Sin
embargo, su suposicion de una distribucion de tensiones constante a lo largo
de las secciones trasversales se considera un error lo suficientemente grave
para que su nombre no aparezca en la primera teora de flexion de vigas.
La teora de Euler-Bernoulli se fundamenta en la hipotesis de Bernoulli que
supone que las secciones transversales de una viga permanecen planas cuan-
do esta flexa. Gracias al descubrimiento en la Bibliteca Nacional del Codex
Madrid I sabemos que no fue Daniel Bernoulli el primero que formulo di-
cha hipotesis sino Leonardo Da Vinci, aunque con las matematicas de que
dispona no tuvo oportunidad de intuir las consecuencias de la misma. A
pesar de eso, Da Vinci supuso (y acerto) que las tensiones seran iguales en
ambas caras externas de la viga y, por tanto, habra una fibra neutra sin
tension e incluso argumenta la distribucion lineal de tensiones en la seccion.
Timoshenko, a quien se le denomina padre de la ingeniera mecanica moder-
na, desarrollo nuevas teoras para las vigas y placas que incluan los efectos
de la deformacion angular y estudio los efectos de la torsion y vibraciones.
A partir de los trabajos pioneros realizados por los anteriores autores, las
disciplinas de la mecanica de solido rgido y contnuo sin duda han tenido
grandes avances pero sus teoras, ya sea por su sencillez o por su precision y
elegancia siguen formando parte de la educacion y la practica profesional e
investigadora.
Con esta breve introduccion se ha realizado un rapido repaso a los gigantes
sobre los que descansa nuestro aprendizaje y aunque nunca son suficientes los
citados, un estudio mas profundo sera excesivo para la vision que se pretende
dar.
Captulo 1. Introduccion 3

1.2. Motivacion
La aparicion de los ordenadores revoluciono la forma de abordar los pro-
blemas de la mecanica. Si tradicionalmente, los metodos analticos fueron los
empleados en la resolucion de estos problemas, actualmente son los meto-
dos numericos los que permiten resolver los problemas mas complejos con la
precision necesaria. Este cambio de enfoque ha provocado un renacimiento
de multiples herramientas cuyo desarrollo se encontraba estancado al ser su
aplicacion inviable por el numero de calculos que implicaban.
En concreto, la mecanica de medios continuos ha visto en las tecnicas de
discretizacion del continuo una salida para la resolucion de las ecuaciones
en derivadas parciales que resultan de su formulacion. Entre todas ellas, el
metodo de elementos finitos ha alcanzado una mayor difusion y desarrollo.
Desde que se comenzo a aplicar en la decada de 1960 para la resolucion de
analisis estructurales lineales en la industria aeroespacial, tanto la cantidad
de problemas que emplean este metodo para su resolucion como la cantidad
de industrias y campos a los que se aplica se ha ampliado enormemente.
El estudio de la dinamica de los mecanismos compuestos por solidos rgi-
dos tambien se ha beneficiado de la nueva capacidad de calculo que nos
ofrecen los ordenadores. Las tecnicas empleadas para la simulacion dinamica
de mecanismos, llamadas multicuerpo o multibody, permiten en la actuali-
dad calculos en tiempo real para sistemas con un numero considerable de
grados de libertad. Ademas, al aumentar la precision de los modelos simula-
dos, se requiere introducir en ellos efectos que hasta ahora eran despreciables
en la mayor parte de los casos, siendo la flexibilidad de los cuerpos el mas
importante de ellos.
Los dos tipos de formulaciones anteriores a pesar de partir de puntos dis-
tantes casi han convergido al llegar a un mismo nivel de complejidad en el que
el objetivo es la simulacion de la interactuacion de multiples cuerpos flexi-
bles, ligados o no entre s, en un escenario en el que tambien pueden aparecer
otros cuerpos rgidos, fludos o fuerzas con un origen no inercial (electromag-
netismo, reacciones qumicas, etc.). Este tipo de problemas con acoplamiento
entre distintas disciplinas de la fsica (multifsica) quedan fuera del ambito
del presente proyecto, que se centra exclusivamente en la interaccion entre
sistemas mecanicos compuestos por cuerpos solidos y flexibles.
Las aplicaciones informaticas de ambas tecnicas de simulacion han es-
tado claramente diferenciadas ya que aquellas especializadas en las tecnicas
multicuerpo consiguen una velocidad de calculo muy alta aplicando ciertas
simplificaciones y algoritmos especficos de sistemas de solidos rgidos frente
a las aplicaciones tradicionales de simulacion que aplican el metodo de los
elementos finitos a una formulacion mas general. Sin embargo, el aumento de
la velocidad de calculo y la necesidad de aumentar el numero de problemas
a resolver por parte de este ultimo tipo de aplicaciones estan produciendo
una convergencia en cuanto a a la capacidad de simulacion de ambos tipos
de programas.
4 1.3. Alcance

Esta evolucion tanto de las formulaciones como de las aplicaciones per-


mite realizar simulaciones de sistemas mecanicos que involucran grandes de-
formaciones y grandes desplazamientos que hasta hace poco se abordaban
de una forma simplificada con una falta de precision no siempre aceptable.
El aumento de la precision de estas simulaciones permite estudiar fenomenos
tan utiles para el desarrollo social como aquellos que involucran contactos,
impactos, plasticidad, etc, en el seno de un sistema mecanico complejo.
Para avanzar en esta direccion se hace necesario estudiar la integracion
de procedimientos desarrollados para tecnicas multicuerpo en la formulacion
general de la mecanica de medios continuos que se emplea en las simulacio-
nes que aplican en metodo de elementos finitos en su discretizacion. Tambien
resulta interesante disponer de nuevas herramientas que implementen y com-
paren entre s los metodos matematicos que se desarrollan para mejorar la
discretizacion del continuo y la integracion de las ecuaciones de la dinamica.

1.3. Alcance
Este trabajo se enmarca en la mecanica de medios continuos aplicada
a sistemas de cuerpos flexibles. As por lo tanto, no se contemplan medios
fludos ni efectos distintos de los de origen mecanico. Sin embargo, es difcil
establecer una definicion de mecanismo flexible que no de lugar a ambigue-
dades ni contradicciones con la utilidad de las distintas formulaciones que se
emplean en simulacion.
Tradicionalmente, se establece la diferencia entre estructura y mecanismo
analizando las ecuaciones de equilibrio de solido rgido, es decir las ecuaciones
de equilibrio que obvian los efectos elasticos. As, en caso de que el numero de
ecuaciones de equilibrio sea menor que el numero de incognitas que definen el
movimiento de solido rgido, se estara hablando de libertades de movimiento
del mecanismo. Por el contrario, si existe igual o mayor numero de ecuacio-
nes que de incognitas, se hablara de isoestaticidad o hiperestaticidad de la
estructura, respectivamente.
La clasificacion anterior es util para el aprendizaje de las tecnicas ha-
bituales de estudio y simulacion ya que intuitivamente es facil de entender
la diferencia entre ambos conceptos mediante algun razonamiento similar al
siguiente: mientras un mecanismo posee capacidad de desplazamiento, el
movimiento de los puntos de una estructura depende exclusivamente de las
deformaciones. De esta manera se establece una clasificacion exclusiva en-
tendiendo por esta la clara distincion entre tipos estructurales y mecanismos.
Al clasificar las tecnicas de simulacion, en general, sigue siendo valida
la clasificion anterior puesto que las herramientas de simulacion de unas no
valen para las otras. As, distinguimos entre analisis estaticos y dinamicos
basados en extraccion y superposicion de modos cuando se estudian tipos
estructurales y tecnicas multicuerpo (MBS, multibody systems) cuando se
estudian mecanismos. Mientras las primeras adoptan normalmente formula-
Captulo 1. Introduccion 5

ciones geometricamente lineales, las MBS corresponden a formulaciones no


lineales aplicadas asociadas a los grandes desplazamientos de los elementos
rgidos o, en el caso de que se considere cierta deformacion, flexibles con
una aproximacion de pequenas deformaciones con respecto a un sistema de
referencia movil y solidario con el movimiento de solido rgido del cuerpo.
Sin embargo, cuando se adoptan formulaciones para simular la flexibili-
dad de los solidos que tienen en cuenta las no linealidades geometricas, la
diferencia principal entre una estructura y un mecanismo resulta tan ambi-
gua como que mientras el mecanismo se compone de de varios cuerpos unidos
entre s mediante algun tipo de union que permite cierto desplazamiento re-
lativo, la estructura se puede estudiar como un solo cuerpo. De esta forma, la
clasificacion resulta inclusiva ya que bien se podra considerar una estructura
como un mecanismo de un solo cuerpo.
As pues resulta necesario delimitar el campo de estudio de este trabajo
considerando como mecanismo flexible cualquier solido o conjunto de solidos
rgidos o deformables conectados mediante uniones.

1.4. Estado de la tecnica


La cinematica y dinamica de sistemas multicuerpo nacen como aplicacio-
nes de las teoras de la mecanica clasica a conjuntos de dos o mas solidos
conectados entre s, tal y como se describe en Huston [1990], Rahnejat
[1998], Garcia de Jalon y Bayo [1994] y Shabana [1998]. La impor-
tancia de estas tecnicas se acentua al aumentar la capacidad de calculo de los
ordenadores personales ya que pone al alcance de multitud de usuarios una
capacidad de simulacion hasta hace relativamente poco imposible de ima-
ginar. De esta forma van cambiando (y suavizandose) las dificultades que
afectan a la simulacion de estos sistemas, permitiendo el empleo de tecnicas
conocidas aunque no suficientemente adaptadas a estas simulaciones por no
ser rentables hasta el momento.
Por todo esto, en un principio se consideraba exclusivamente la simulacion
de solidos rgidos. Avances en la velocidad de calculo de las computadoras
introdujeron la posibilidad de, por un lado, realizar simulaciones en tiempo
real y, por el otro, aumentar la complejidad de los sistemas analizados, in-
cluyendo partes flexibles. Estas partes se implementaron primero mediante
tecnicas de Resistencia de Materiales, de las que resultan elementos discretos
basados en la formulacion fuerte del campo elastico. El siguiente paso fue la
generalizacion de la flexibilidad para cualquier tipo de solido, modelado me-
diante elementos finitos pero siempre en regimen elastico y aproximado por
pequenas deformaciones.
Los ultimos avances en algoritmos y tecnicas de computacion as como los
desarrollos teoricos de la Mecanica de Medios Continuos estan permitiendo la
simulacion de sistemas multicuerpo en los que aparecen nuevas prestaciones
como la implementacion de formulaciones exactas en vigas o la aparicion de
6 1.4. Estado de la tecnica

contactos entre cuerpos. Estos avances introducen una enorme complejidad


tanto conceptual como, mas importante, de resolucion de las ecuaciones que
se plantean.
Las distintas aproximaciones empleadas para incluir la flexibilidad de las
partes que componen un sistema se pueden dividir en dos grandes grupos:
aproximaciones lineales y no lineales. Ambas se apoyan en discretizaciones
realizadas mediante el metodo de los elementos finitos, que permite transfor-
mar un solido de infinitos grados de libertad en una serie finita de nodos y
elementos.

1.4.1. Formulaciones de piezas flexibles


Los inicios de esta tecnica corresponden a la aplicacion de tecnicas con-
densacion estatica de los movimientos de los nodos intermedios en los grados
de libertad maestros reduccion de Guyan. Debido a la falta de precision
y dificultad para poner en practica esta tecnica, se busco otro camino para
tener en cuenta la flexibilidad pero de un modo mas preciso. De esta forma
se desarrollan las tecnicas de superposicion modal de solidos flexibles (Song
y Haug [1980]), ya aplicadas en dinamica lineal de estructuras, logrando
resultados aceptables aunque a costa de calculos lentos y costosos.
Un importante avance, introducido por Shabana y Wehage (ver Shabana
y Wehage [1983]), aprovecha la popular tecnica de subestructuracion lla-
mada sntesis modal de componentes (Hurty [1965]) para reducir el numero
de incognitas y, por ende, el numero de ecuaciones a resolver. De todos los
desarrollos de esta sntes modal, probablemente, el metodo mas general es
el metodo de Craig-Bampton (desarrollado en Craig y Bampton [1968]),
que permite elegir los grados de libertad no susceptibles a la superposicion
modal, sino a las reacciones y desplazamientos comunes a alguna junta.
En simulaciones que implican solidos contnuos, la no linealidad del sis-
tema de ecuaciones a resolver puede tener los siguientes orgenes:

Geometrico: debido a la aparicion de grandes desplazamientos y/o grandes


deformaciones, la posicion de los solidos se vuelve muy diferente de la
que tenan en su definicion (posicion de referencia). Tener en cuenta
los efectos de estos cambios de posicion implica desechar las aproxi-
maciones que validan las teoras lineales produciendo la aparicion de
terminos no lineales.

Modelo de comportamiento del material: Cuando el rango de tensio-


nes producido por las solicitaciones

Las tecnicas que son capaces de abordar con exito el problema de las
no linealidades geometricas, mas recientes que las anteriormente descritas,
fueron introducidas primero en Simo y Vu-Quoc [1986], y estan basadas en
la teora de grandes rotaciones. Aun empleadas para pequenas deformaciones,
tienen la ventaja frente a las anteriores de que capturan las deformaciones de
Captulo 1. Introduccion 7

segundo orden, necesarias para tener en cuenta el endurecimiento rotacional


por efectos geometricos.
A pesar de ello, la formulacion habitualmente empleada para modelar
ciertos elementos simplificados, como las vigas y placas, aun siendo no lineal,
corresponde a las teoras clasicas de Euler-Bernoulli y de Timoshenko (en el
caso de las primeras). Estas teoras realizan simplificaciones cuyos efectos no
siempre son despreciables.
Es por esto que, empleando la conocida como viga de Simo-Reissner, se
pueden abarcar problemas mas generales que los permitidos por las vigas
clasicas (Antman [1972], Simo y Vu-Quoc [1986], Antman [1992]).
A pesar de ser de compleja formulacion, los resultados obtenidos en las si-
mulaciones son exactamente los que predice la ley de comportamiento del
material por lo que se prefieren para problemas en donde existan grandes de-
formaciones, ecuaciones constitutivas no lineales, fenomenos de inestabilidad,
etc.
Lo expuesto anteriormente para el caso de las vigas tambien resulta valido
para el caso de las placas y laminas, para las que existen otros elementos
de equivalentes prestaciones, como son los llamados de Reisner-Midlin (Wu
[2004]).
Para los modelos geometricamente exactos como los comentados, el de-
sarrollo de la estructura hamiltoniana de su formulacion ayuda en el estudio
de la dinamica de sistemas para la simulacion de la estabilidad no lineal, la
teora de la bifurcacion, las soluciones caoticas o de estructuras rotatorias
(Simo et al. [1988]).

1.5. Objetivos de la investigacion


Los aspectos ya comentados anteriormente han motivado la eleccion co-
mo tema de investigacion del estudio e implementacion de un entorno de
desarrollo que disponga de las herramientas necesarias para que la imple-
mentacion de las aplicaciones de simulacion de la dinamica de mecanismos
flexibles sea rapida y eficiente. La busqueda de este objetivo se apoya en dos
lneas de trabajo:

1. La inclusion de las tareas comunes a las aplicaciones de simulacion en


las herramientas del entorno.

2. La generacion de una estructura de libreras de calculo que haga sencillo


la inclusion de nuevos metodos y permita comparar el rendimiento de
los mismos.

Para intentar maximizar las espectativas de consecucion del objetivo prin-


cipal de la investigacion se ha realizado un gran esfuerzo de estudio y com-
pilacion de las teoras mecanicas que afectan a los problemas que se desean
abordar.
8 1.6. Hipotesis de la investigacion

Se han considerado y expuesto en sus captulos correspondientes tanto las


teoras de la mecanica clasica de Newton como, especialmente, la mecanica
lagrangiana para la descripcion de la dinamica de mecanismos. Tambien se
estudian los efectos de la flexibilidad de los cuerpos, formulando las ecua-
ciones mediante la mecanica de medios continuos e implementando tecnicas
de resolucion de las ecuaciones que incluyen el metodo de los elementos fi-
nitos para realizar las discretizaciones de los cuerpos y tecnicas numericas
tradicionales y recientes para la resolucion de los sistemas diferenciales
ordinarios que se derivan de aquella discretizacion.
Ademas de la teora, el caracter eminentemente aplicado de esta investi-
gacion obliga a mantener la atencion puesta tanto en los trabajos de otros
investigadores como en otras fuentes de conocimiento que se podran consi-
derar auxiliares a las materias principales pero sin su dominio no se podran
desarrollar las tecnicas anteriores con toda su potencia y precision. Se trata
principalmente de las tecnicas matematicas, de componente principalmente
numerica, y de cuestiones relativas a la programacion y estructura de ordena-
dores. El trabajo necesario para su estudio y aplicacion se cree que supone un
complemento imprescidible para que el resultado de esta investigacion sea lo
mas completo, util y homogeneo posible, una vez asumidas las restricciones
logicas de tiempo y conocimiento con las que se parte.

1.6. Hipotesis de la investigacion


Como en cualquier desarrollo basado en las leyes de la mecanica tradi-
cional, se ha de asumir como propios los principios fsicos que rigen el movi-
miento y las deformaciones de los solidos a velocidades terrestres. As pues,
las hipotesis basicas de partida seran las que se exponen a continuacion:

Se desprecian los efectos de la Teora de la Relatividad, ya que las


velocidades que se suponen son bajas con respecto a la velocidad de la
luz.

Se asume la conservacion de la masa, despreciando por tanto transfor-


maciones qumicas y nucleares que pudieran hacerla variar considera-
blemente.

Se aplicara para el planteamiento de las ecuaciones de equilibrio el


principio de conservacion de energa que, expresado en su forma ma-
tematica, define un potencial como un invariante.

Se desprecian los efectos microscopicos de los materiales, atendiendo


nada mas a los fenomenos inerciales de ndole macroscopica.
Captulo 2

Formulacion dinamica no lineal


de mecanismos flexibles

2.1. Formulacion continua de solidos flexibles


Para el estudio de la flexibilidad de un medio solido, la Mecanica de Me-
dios Continuos define el movimiento como un cambio en la configuracion (B)
de un medio. El estudio los efectos producidos al pasar un medio de una con-
figuracion inicial (material), B0 , a una configuracion deformada (espacial),
Bt , se puede hacer con respecto a ambas configuraciones.
Sea B0 la configuracion del solido en t = 0 y sea Bt su configuracion en
un instante t posterior, se asume que existe una aplicacion de movimiento:
: B [0, t) R3 que describe el movimiento del solido.
Para el estudio de los cuerpos solidos (materiales) mediante la mecanica
de medios continuos se suele emplear la llamada formulacion lagrangiana. En
ella se busca describir el comportamiento del medio siguiendocada uno de
los puntos del solido a lo largo de la deformacion.
En una formulacion lagrangiana, si los efectos de la deformacion se descri-
ben en la configuracion de referencia, se estara hablando de una descripcion
material o una formulacion lagrangiana total.
Por el contrario, si se realiza una descripcion en la configuracion defor-
mada, se trata de una descripcion espacial o una formulacion lagrangiana
actualizada.

2.1.1. Medidas de deformacion


A partir de la aplicacion de desplazamiento , se define el tensor de
segundo orden gradiente de deformacion, F como:

def (X, t) x
F (X, t) = (2.1)
X X
Resulta util definir tambien las siguientes medidas de deformacion:

9
10 2.1. Formulacion continua de solidos flexibles

def
Cauchy-Green por la derecha: C = F T F
def
Cauchy-Green por la izquierda: b = F F T

def 1
Green-Lagrange: E = (C 1)
2
def1
Almansi-Euler: e = (1 b1 )
2
" T #
def 1 u u
Lineal de Euler: = +
2 x x
donde u es el desplazamiento definido por u = x X

2.1.2. Medidas de tensiones


Siguiendo el postulado de Cauchy, segun el cual el vector tension, t, de-
pende no solo del punto en estudio, x, sino tambien de la superficie a la que
esta asociada, cuya normal es n; se define el tensor de segundo orden de ten-
siones de Cauchy en dicho punto, (x), como aquel que verifica la siguiente
condicion:

t(x, n) = (x) n (2.2)


Este tensor se puede dividir en dos componentes a traves del concepto de
compresion volumetrica o presion, p(x), cuyo valor en un punto se calcula
como:

1
p(x) = tr (x) (2.3)
3
As, el tensor de tension esferica, V , se calcula como:
def
V (x) = p(x) I (2.4)
Y, el tensor de tension desviadora, D , toma la expresion:
def
D (x) = (x) + p(x) I = (x) V (x) (2.5)
Otras medidas utiles de tension se definen de la siguiente forma:

def
Primer tensor de Piola-Kirchoff: P = det(F )F T
def
Segundo tensor de Piola-Kirchoff: S = F 1 P = det(F )F 1 F T
def
Tensor de Kirchoff: = det(F )
Captulo 2. Formulacion dinamica no lineal de mecanismos flexibles 11

Trabajo virtual de deformacion

Las distintas medidas de tension y deformacion definidas anteriormente


se pueden emplear para el calculo del trabajo virtual, , esto es, el trabajo
interno que producira una deformacion virtual del dominio.
El trabajo virtual, expresado mediante una formulacion lagrangiana total,
puede tomar las siguientes expresiones equivalentes:
Z Z Z
= : = P : F = S : E (2.6)
B0 B0 B0

Por otro lado, respecto a la configuracion deformada, la formulacion la-


grangiana actualizada del trabajo virtual se puede poner como sigue:
Z Z
= : = : e (2.7)
Bt Bt

2.1.3. Ecuaciones de balance mecanico: Formulacion


fuerte
Se denomina formulacion fuerte a aquella que describe las relaciones
mecanicas que se han de cumplir en cualquier punto de un solido. Se presen-
tan a continuacion las distintas expresiones que relacionan fuerzas, tensiones
y deformaciones obtenidas a partir de las leyes de la mecanica aplicadas a
volumenes infinitesimales del solido (Gonzalez y Stuart [1995]).

Formulacion lagrangiana: Ecuaciones de balance

Considerando la configuracion inicial del cuerpo, B0 , en t = 0 y otra


configuracion posterior, Bt , se pueden plantear las siguientes ecuaciones de
balance mecanico.

Conservacion de la masa
Las propiedades de masa de un cuerpo continuo en una configuracion
Bt R3 , se describen mediante un campo de densidad de masa, t =
(, t) : Bt R, de tal manera que la masa del dominio Bt se puede
calcular mediante

Z
masa [Bt ] = (x, t) dVx (2.8)
Bt

Realizada la anterior definicion, se establecera como principio la con-


servacion de la masa total del dominio Bt . As pues, en la mecanica de
12 2.1. Formulacion continua de solidos flexibles

medios continuos, no se consideran los efectos de reacciones quimico-


nucleares que impliquen modificacion de la masa, as como tampoco los
derivados de la Teora de la Relatividad. Matematicamente,

d
masa [Bt ] = 0 (2.9)
dt
Leyes de inercia
Se considera ahora un cuerpo con movimiento y deformacion continuos
en el tiempo y espacio R3 . Sea v t = v (, t) : Bt V el campo de
velocidades. Se define la cantidad de movimiento como
Z
l [Bt ] = (x, t) v (x, t) dVx (2.10)
Bt

De la misma manera que una fuerza se puede asociar a un momento con


respecto de un punto, se puede definir el momento cineticoalrededor de
un punto como la cantidad de movimiento por la distancia perpendicu-
lar al punto z. Matematicamente se expresa
Z
j [Bt ]z = (x z) (x, t) v (x, t) dVx (2.11)
Bt

Se supone que el cuerpo se encuentra sometido a una distribucion su-


perficial de carga que describiremos como un campo de traccion tt = t
(, t) : Bt V, y tambien sometido a fuerzas volumetricas exteriores
que se describiran mediante un campo de fuerzas por unidad de masa
bt = b (, t) : Bt V.
La fuerza resultante en el dominio Bt debida a ambos campos resulta:

Z Z
r [Bt ] = r s [Bt ] + r b [Bt ] = t (x, t) dAx + (x, t) b (x, t) dVx
Bt Bt
(2.12)
Y, el par (momento) resultante alrededor de un punto z es

[Bt ] = s [Bt ] + b [Bt ]


Z Z
= (x z) t (x, t) dAx + (x z) (x, t) b (x, t) dVx
Bt Bt

Las Leyes de Inercia se pueden expresar de la siguiente manera:


Con respecto a un triedro de referencia, la magnitud de la variacion de
la cantidad de movimiento de un cuerpo material es igual a la fuerza
Captulo 2. Formulacion dinamica no lineal de mecanismos flexibles 13

resultante aplicada, y la magnitud de la variacion del momento cineti-


co con respecto de cualquier punto fijo es igual al par resultante con
respecto del mismo punto. Matematicamente

d
l [Bt ] = r [Bt ] (2.13)
dt

d
j [Bt ]z = [Bt ]z (2.14)
dt

Descripciones locales de la formulacion lagrangiana


En esta seccion se describen las mismas leyes anteriormente enunciadas,
de modo generico, aplicadas a un cuerpo que se mueve y deforma a lo largo del
tiempo y del que se conoce su forma en un instante inicial. En este instante
inicial (t = 0), cada punto del cuerpo se define mediante la posicion que
ocupa en R3 a traves de unas coordenadas unicas. Si en un instante posterior
se quiere referir un punto determinado del cuerpo, se podra identificar de dos
maneras distintas.
Si en un instante t, se identifica un punto mediante la posicion que ocupa
en el espacio en ese preciso instante t, entonces las coordenadas que lo de-
finen se denominan coordenadas espaciales, x. A esta manera de definir los
puntos se la denomina descripcion espacial o euleriana, aunque es preferible
la primera denominacion ya que la segunda da lugar a confusiones con la
formulacion euleriana.
Si en ese mismo instante t, para hacer referencia al mismo punto se em-
plean las coordenadas que lo definan en t = 0, entonces se denominan coorde-
nadas materiales, X, y al tipo de definicion de punto se la llama descripcion
material o lagrangiana. Al igual que sucede en el caso anterior hablar de
formulacion lagrangiana con descripcion lagrangiana resulta redundante y
confuso, debiendose evitar. Un esquema de lo descrito se puede consultar en
la figura 2.1.

Descripcion material

Lagrangiana

Formulacion Descripcion espacial

Euleriana

Figura 2.1: Nomenclatura de formulaciones y sus descripciones


14 2.1. Formulacion continua de solidos flexibles

Descripcion espacial de la formulacion lagrangiana


Las descripciones locales de las ecuaciones de balance se obtienen a ba-
se de imponer las definiciones anteriores a cada subdominio Bt del medio
continuo en su configuracion Bt .

Conservacion de la masa
Retomando la ecuacion (2.9) y aplicandola al estado inicial y a otro
deformado,

masa (B0 ) = masa (Bt ) (2.15)

Empleando las relaciones entre distintos estados de deformacion, se


llega finalmente a la siguiente ley de conservacion de la masa:


+ x (v) = 0 (2.16)
t
donde:
= (x, t), es la densidad en una posicion x,
v = v (x, t), es la velocidad de un punto de posicion x, y

x = , por lo que x () es el operador divergencia que al
x
aplicarlo sobre un campo vectorial da un escalar: x v = vi,i .
Variacion de la cantidad de movimiento
El equilibrio entre fuerzas en cualquier sistema mecanico requiere que
las fuerzas aplicadas se igualen con las fuerzas de inercia generadas al
variar la cantidad de movimiento del cuerpo. En medios continuos for-
mulados de forma lagrangiana, con descripcion espacial, este equilibrio
adquiere la siguiente forma:

x +b = v (2.17)

que, en componentes empleando notacion indicial resulta:

ij,j + bi = vi (2.18)

donde:
, es el tensor de tensiones de Cauchy,
b, es la fuerza espacial por unidad de masa, y

= indica la derivada con respecto a la variable indepen-
t
diente.
Captulo 2. Formulacion dinamica no lineal de mecanismos flexibles 15

Variacion del momento cinetico


Tanto en ausencia de efectos inerciales como cuando estos se presentan,
la condicion de suma de momentos nula implica la simetra del tensor
de tensiones de Cauchy. Matematicamente,

= T (2.19)

Y, en componentes:

ij = ji (2.20)

Conservacion de energa mecanica


Cuando nada mas existen efectos mecanicos en un medio continuo, se
puede obtener una consecuencia de las dos anteriores leyes. La conser-
vacion de energa mecanica se puede expresar en descripcion espacial
de la siguiente forma:
Z
d
K [Bt ] + : L dVx = P [Bt ] (2.21)
dt Bt

donde:
R
K [Bt ] = Bt v v dVx , es la energa cinetica total en el dominio
del cuerpo, Bt ,
, es el tensor de tensiones de Cauchy,
L = x v, es el campo tensorial dado por el gradiente de la velo-
cidad, tambien llamado tasa de deformacion, y
R R
P [Bt ] = t Bt v t dAx + Bt b v dVx , es la potencia de las fuerzas
exteriores actuando en Bt , siendo
t = n el campo de traccion en la superficie de normal n.

Descripcion material de la formulacion lagrangiana


Las descripciones materiales de las ecuaciones de balance se obtinen a base
de imponer a las expresiones anteriores la transformacion de coordenadas que
indica la funcion de deformacion x = (X, t).

Conservacion de la masa
Sea el campo densidad espacial, (x, t), que tiene el valor en la con-
figuracion de referencia, o (X). La descripcion material de la ley de
conservacion de masa se corresponde con la siguiente igualdad:

m (X, t) det (F (X, t)) = o (X) (2.22)


16 2.1. Formulacion continua de solidos flexibles

donde la descripcion material de la densidad, m (X, t) = ((X, t), t).

Variacion de la cantidad de movimiento


La descripcion material adquiere una forma parecida a la espacial,

2
X P +o bm = o (2.23)
t2

Donde,
P = P (X, t) = det F (X, t) ( (X, t) , t) F (X, t)T ,
es el primer tensor de Piola-Kirchhoff,
bm = b( (X, t) , t).
es la fuerza por unidad de masa en descripcion material,

Variacion del momento cinetico


El resultado obtenido al imponer las condiciones correspondientes a
esta ley no convierten el tensor P en un tensor simetrico, sin embargo,
el producto siguiente s lo es,

P FT = F PT (2.24)

De manera que si se define un nuevo tensor como tal producto, dicho


tensor s sera simetrico. As:

S = ST (2.25)

siendo S el segundo tensor de Piola-Kirchhoff.

Conservacion de energa mecanica


Empleando las definiciones de potencia, P , y energa cinetica total, K ,
descritas de forma material, se puede expresar esta ley conservativa en
su descripcion material como:

Z
d
K [Bt ] + P : F dVX = P [Bt ] (2.26)
dt Bt

donde:
La derivada del tensor deformacion es:
F = F (X, t) = X (X, t).
Captulo 2. Formulacion dinamica no lineal de mecanismos flexibles 17

2.1.4. Ecuaciones constitutivas de materiales solidos


elasticos
Las relaciones entre las medidas de tension y deformacion para cada ins-
tante vienen definidas por el comportamiento del material a traves de sus
ecuaciones constitutivas.
Se considera en lo que sigue el estudio de los materiales deformandose
en su rango elastico en el que la deformacion es funcion exclusivamente del
estado tensional.

Elasticidad lineal
Si existe una relacion lineal entre las tensiones y deformaciones, se puede
expresar en funcion del tensor de Cauchy y la deformacion lineal, tal como
sigue:

=C: (2.27)
O, en componentes:

ij = Cijkl ij (2.28)
Donde el tensor de cuarto orden C se denomina tensor de modulos elasti-
cos cuyas simetras menores (Cijkl = Cjikl y Cijkl = Cijlk ) y mayor (Cijkl =
Cklij ) reducen el numero de parametros independientes desde los 81 elemen-
tos del tensor a solo 21.
Para materiales reales con algun tipo de simetra de comportamiento, se
pueden reducir aun mas el numero de parametros necesarios para definir C:

Simetra ortotropa: El comportamiento depende de la direccion estudia-


da, aunque existen tres direcciones ortogonales en las cuales no existe
interaccion entre las tensiones normales y las deformaciones angula-
res. En este caso, el numero de parametros independientes se reduce a
nueve.

Isotropa: Se dice que un material tiene comportamiento isotropo cuan-


do la relacion esfuerzos-deformaciones no depende de la direccion estu-
diada. En este caso, solo existiran dos parametros independientes.
Sean y las constantes de Lame, para un material isotropo, el tensor
de modulos elasticos queda definido por:

C = (1 1) + 2I (2.29)

O, en componentes:

Cijkl = ij kl + 2ik jl (2.30)


18 2.1. Formulacion continua de solidos flexibles

donde:
1 es el tensor unitario de segundo orden,
I es el tensor unitario de cuarto orden, y
ij es la funcion Delta de Kronecker definida como:

1 si i = j
ij = (2.31)
0 si i 6= j

Sustituyendo en 2.27 se obtiene la relacion lineal tension-deformacion:

= tr()1 + 2 ; ij = kk ij + 2ij (2.32)

Densidad de energa de deformacion. Hiperelasticidad


Un material hiperelastico es aquel cuya tension, por ejemplo, medida a
traves del primer tensor de Piola-Kirchoff, deriva de un campo escalar al que
llamaremos densidad de energa de deformacion, W (F , X), particularizado
en cada punto material:

W (F , X)
P = (2.33)
F (X)
As mismo, se pueden emplear los pares de tension y deformacion definidos
en 2.6 para la configuracion inicial o los indicados en 2.7 para la configuracion
deformada.
De esta forma, el trabajo de las tensiones a lo largo de una deformacion es
independiente de la trayectoria seguida, siendo solo funcion del punto inicial
y del final:
Z 1 Z t1
dW = P : F dt = W01 (F , X) (2.34)
0 t0

A continuacion se enumeran las leyes de comportamiento de los materiales


hiperelasticos mas usados que, ademas, son isotropos y homogeneos:

Saint-Venant Kirchoff : corresponde al modelo de comportamiento elasti-


co lineal en la configuracion material.


W (E) = [tr(E)]2 + E : E (2.35)
2

S(E) = tr(E)1 + 2E (2.36)

C = (1 1) + 2I (2.37)
Captulo 2. Formulacion dinamica no lineal de mecanismos flexibles 19

Neo-Hookeano extendido:
2 1 1
W (C) = (J 1) ( + 2) ln J + tr(C 3) (2.38)
4 2 2

1
S(C) = (J 2 1)C 1 + (1 C 1 ) (2.39)
2
donde:
J = det F (X)

Mooney-Rivlin:

W (C) = a1 (tr(C) 3)2 + b1 (C : C 3)2 (2.40)

donde:
a1 , b1 son constantes del material estimadas empricamente.

Hay que resaltar que, las anteriores ecuaciones dependen de los invariantes
tensoriales de los tensores deformacion; por ejemplo para el tensor de Cauchy-
Green por la derecha, C:

I1C = tr(C) ; I2C = C : C ; I3C = det(C) (2.41)

Observacion 1 Si el tercer invariante resulta igual a la unidad, I3C = 1,


entonces no se produce variacion volumetrica por lo que los modelos de ma-
teriales en los que no aparece este invariante corresponderan a solidos in-
compresibles.

2.1.5. Principios variacionales: Formulacion debil


La ecuacion de balance de cantidad de movimiento, tanto en su descrip-
cion espacial de 2.17 como en la material dada en 2.23, corresponde a una
relacion que se ha de cumplir para cada punto.
En cambio, aplicando el principio de conservacion de la energa total, cual-
quier trabajo producido por unas variaciones (o desplazamientos virtuales),
x, debe ser nulo:

= 0 (2.42)

Observacion 2 Una forma mas correcta de enunciar este principio, desde


el punto de vista estrictamente matematico, parte de plantear unas funciones
de prueba, : B Rm | (x) = 0 en el contorno del dominio sobre el
que se plantean las condiciones esenciales. Al ponderar la formulacion fuerte
con estas funciones, integrar en todo el dominio y despues de cierta elabo-
racion, se obtiene un resultado equivalente al que se enuncia a continuacion
20 2.2. Formulacion discreta de la dinamica de solidos flexibles

(consultar Belytschko et al. [2000] y Bonet y Wood [1997] para un


desarrollo con desplazamientos y velocidades virtuales, respectivamente).
En todo caso, el significado fsico tan evidente de las funciones de prueba
hace mas intuitiva la utilizacion de la notacion vista para los desplazamientos
virtuales en vez de emplear una funcion de prueba sin sentido geometrico.

Descomponiendo las posibles contribuciones al trabajo virtual en funcion


del origen de la fuerza que lo produce, se puede expandir en los siguientes
terminos:

= 0 = inercia interno externo (2.43)


Cada una de las contribuciones anteriores se puede poner como sigue:
Z
inercia = x x dV (2.44)
Z B

interno = (F S) F dV (2.45)
B0
Z Z
externo = b x dV + t x dS (2.46)
B B

donde b y t son funciones de fuerza distribuida por unidad de volumen y


superficie respectivamente.

Observacion 3 La ecuacion 2.45 se puede poner en funcion de los pares


conjugados para el trabajo virtual interno dados en 2.6 para la descripcion
lagrangiana y en 2.7 para la euleriana aunque se suele escribir de esta forma
por motivos relativos al desarrollo del metodo de elementos finitos descrito
en la siguiente seccion.

2.2. Formulacion discreta de la dinamica de


solidos flexibles
2.2.1. Discretizacion por elementos finitos
Para resolver las ecuaciones de la formulacion debil expuesta anteriormen-
te, se suele recurrir a una semidiscretizacion del medio continuo en elementos
finitos, de dominio e , de manera que la union de todos ellos forma el do-
S elem
minio del medio continuo en estudio (B = ni=1 e ). Las coordenadas de
los puntos interiores de cada elemento se aproximan mediante la siguiente
forma:
nnodos
X
h
x(X, t) ' x (X, t) = Na (X)xa (t) = N q e (2.47)
a=1
Captulo 2. Formulacion dinamica no lineal de mecanismos flexibles 21

donde las funciones Na se denominan funciones de forma mientras que


q e se llaman coordenadas generalizadas del cuerpo elastico.
Si las funciones de desplazamientos, u, se aproximan mediante las funcio-
nes de forma, entonces el elemento recibe el nombre de isoparametrico y los
desplazamientos virtuales, x, se pueden poner tambien en funcion de estas
y de la variacion de las coordenadas generalizadas; resultando:

u = N q e ; x = N q e (2.48)
Por otro lado, al no depender las funciones de forma del tiempo, la deri-
vada n-esima de las posiciones se calcula como:

dn dn
x = N n qe (2.49)
dtn dt
Sustituyendo la discretizacion 2.48 en las ecuaciones del trabajo virtual
inercial 2.44, interno 2.45 y externo 2.46, y teniendo en cuenta 2.49 se llega a
las siguientes expresiones para las contribuciones de cada elemento al trabajo
virtual (un desarrollo mas detallado se puede ver en Garca Orden [1999]):

Z
T
einercia = q Te N N dV q e = q Te M e q e (2.50)
e
einterno = q Te f eint (2.51)

eexterno = q Te Qe = q Te DVe (q e ) + QN
e
C
(2.52)

donde:

M e es la matriz de masa del elemento,

f eint es el vector de fuerzas internas del elemento, y

Qe es el vector de fuerzas externas en el elemento, que se descompone en


un termino que deriva de un potencial estacionario, Ve (q e ) y en otro
termino que engloba las fuerzas no conservativas, QN C
e .

Sustituyendo las ecuaciones 2.50, 2.51 y 2.52 en 2.43 se llega al sistema


simplificado
q Te M e q e f int,e Qe = 0 (2.53)

2.2.2. Sntesis modal de componentes


El metodo de sntesis modal de componentes realiza una descripcion del
movimiento del solido como suma del movimiento de solido rgido, ur , de su
marco de referencia con el producido por las deformaciones lineales, up , con
respecto de este marco (u = ur + up ). El estudio de estos desplazamientos
se realiza basicamente mediante una extraccion modal-espectral, estudiando
la aportacion de los modos elegidos al desplazamiento nodal mediante las
22 2.2. Formulacion discreta de la dinamica de solidos flexibles

coordenadas modales. A la parametrizacion necesaria para implementar la


tecnica de sntesis modal de componentes se le denomina referencia flotante.
La clave del metodo reside en el planteamiento del calculo de la matriz
de masas y la de rigidez, para lo cual se dividen los modos en dos grupos en
funcion de que los GDL maestros permanezcan fijos o no (Craig y Bamp-
ton [1968]). Estos modos maestros se definen en la generacion del modelo
de elementos finitos y son aquellos en los que se aplicaran las uniones con
el resto del mecanismo por lo que tambien se llaman GDL de contorno, de
union o de interfaz.
Se diferencia entre los siguientes tipos de modos de vibracion:
Modos de interfaz. Cada uno de estos modos se obtiene de aplicar a un
solo GDL maestro un desplazamiento unitario, quedando el resto de
GDL restringidos.

Figura 2.2: Ejemplo de modos de interfaz. Se muestran los modos co-


rrespondientes a los GDL maestros definidos en el extremo izquierdo
de la viga

Modos de contorno fijo. Responden a los modos calculados mediante


una extraccion modal del modelo en el que se restringen los GDL maes-
tros. Habra tantos como GDLs internos y sobre estos se podra aplicar
truncacion modal para reducir el numero de coordenadas modales.

Figura 2.3: Ejemplo de modos de contorno fijo. Los GDL maestros son
todos los que definen el desplazamiento de los extremos de la viga.

Los modos de interfaz y de contorno fijo tambien se denominan estaticos


y dinamicos en algunas referencias (Gutierrez Fernandez [2003]) aun-
que se prefiere la nomenclatura adoptada por su significado intuitivo en el
contexto de mecanismo.
Los desplazamientos fsicos se obtienen a partir de los modales a traves
de la siguiente ecuacion:

uM 1 0 wI
up = = (2.54)
uN N I N F wF
donde
Captulo 2. Formulacion dinamica no lineal de mecanismos flexibles 23

uM , uN son los desplazamientos fsicos de los GDL maetros (M ) y no


maestros (N ).

1, 0 son las matrices identidad y nula, respectivamente.

N I , N F son las matrices modales que relacionan los desplazamientos


de los nodos no maestros (N) con los modos de interfaz (I) y de contorno
fijo (F).

wI , wF son los desplazamientos modales de los modos de interfaz (I) y


de contorno fijo (F).

Para la descripcion de los desplazamientos en esta base modal, las matri-


ces de masa y rigidez del solido flexible requieren la siguiente transformacion,
denominandose matrices de masa y rigidez generalizadas:
T
T 1 0 KM M KM N 1 0
K = K =
N I N F K M N K N N N I N F

KII 0
= (2.55)
0 KF F

T
T 1 0 MM M MM N 1 0
M = M =
N I N F MM N MN N N I N F

MII MIF
= (2.56)
MF I MF F

donde

Los subndices indican relaciones con los desplazamientos de los nodos


maestros (M ) o no maestros(N ) y con los modos de interfaz (I) o de
contorno fijo (F ).

KF F y MF F son diagonales puesto que estan asociadas a los autovec-


tores modales.

Como KII no es diagonal, la matriz de rigidez generalizada, K, no es


diagonal en general pero las submatrices nulas en los bloque fuera de la
diagonal indican que no hay acoplamiento de rigidez entre los distintos
modos, cuyas inercias s que estaran acopladas.

La base modal anterior no es ortogonal ya que las matrices K y M no


son diagonales. A traves del problema de autovalores

Kw = Mw (2.57)
24 2.2. Formulacion discreta de la dinamica de solidos flexibles

X 0p up

xo

Figura 2.4: Posicion de un punto mediante referencia flotante

se obtiene una nueva transformacion a traves de la matriz N formada por


los autovectores del sistema que produce la buscada ortogonalizacion. Las
nuevas coordenadas modales w cumplen la condicion

Nw = w (2.58)

por lo que los desplazamientos fsicos se calculan ahora como

up = w = Nw = w (2.59)

La posicion en un instante, t, de un punto, p, en un solido flexible se


puede descomponer como se muestra en la figura 2.4 en la suma

xp = x0 + X 0p + up (2.60)

donde:
x0 es la posicion del sistema de referencia flotante.
X 0p es la posicion del punto p en (t = 0) en el sistema de referencia
flotante.
up es el desplazamiento del punto p con respecto al sistema de referencia
flotante.
suponiendo, en general, que la orientacion del sistema de referencia flo-
tante (0) no sera la misma que la del sistema inercial de referencia (G), se
define un tensor de giro entre ambos A tal que la posicion de un punto i se
puede expresar en ambos sistemas con la siguiente equivalencia (cambio de
base):
xGp = A xp
0
(2.61)
Captulo 2. Formulacion dinamica no lineal de mecanismos flexibles 25

Teniendo en cuenta que, en la ecuacion 2.60 los vectores con respecto al


sistema de referencia flotante se conocen proyectados en el sistema coordena-
do de este, sustituyendo la transformacion de coordenadas anterior, se puede
reescribir de la siguiente manera:
0
xG G 0
p = x0 + A (X 0p + up ) (2.62)

La anterior ecuacion permite conocer la posicion del punto p con respecto


al sistema G una vez definido el vector xG0 = x0 (t), el tensor A = A() y el
0
vector up = p w (t).
El tensor A se define mediante algun conjunto de parametros de giro
= (t) como los angulos de Euler o similar.
El vector u0p se calcula en la base modal definida por los m-modos p a
traves de las coordenadas modales w (t) = wi (t), (i = 1 . . . m).
De esta manera, las coordenadas generalizadas de un solido flexible for-
mulado mediante referencia flotante se pueden escribir como
G
x0
qf = (2.63)

w

Derivando la expresion 2.62 se obtiene la velocidad del punto en el sistema


global
G 0 0
vG 0
p = x0 + A(X 0p + up ) + Aup (2.64)
El segundo termino de la ecuacion anterior se puede expresar en funcion
de la velocidad angular del sistema de referencia con respecto del global, G
0,
como

A(X 00p + u0p ) = Ax00p


= A( G 0
0 x0p )
= A(x00p G
0)
= Ax00p G
0
= Ax00p B (2.65)

donde G0 se relaciona con la derivada de los parametros de giro a traves


del tensor B en la forma G 0 = B y la tilde () representa el tensor hemi-
1
simetrico asociado al producto vectorial

0 x3 x2
x = x3 0 x1 = x (2.66)
x2 x1 0

1
Un tensor hemisimetrico, W, es aquel cuyos elementos cumplen Wij = Wji .
26 2.2. Formulacion discreta de la dinamica de solidos flexibles

La ecuacion 2.64 se puede rescribir entonces como

vG G ^0 0
p = x0 A(X 0p + up )B + Ap w (2.67)

que, en forma matricial, la velocidad en funcion de las coordenadas gene-


ralizadas resulta

h i xG0
vG
p = I A(X^ 0 0
0p + up )B Ap w


= Cp q f (2.68)
w

A partir de la expresion anterior se puede plantear el calculo de la matriz


de masa para los elementos finitos en referencia flotante a partir de la energa
cinetica. La expresion general para esta energa es
Z
1
T = v T vdV (2.69)
2 V
Introduciendo una discretizacion por elementos finitos en la que la posi-
cion de cada punto queda definida a partir de la de los nodos del elemento y
de sus funciones de forma segun (2.47), la velocidad de cada punto se calcula
tambien a partir de la nodal segun la ecuacion (2.49) para n = 1 quedando
d d
v= x = N q e = N q e (2.70)
dt dt
por lo que la energa cinetica se calcula como la suma de la energa de
cada uno de los n-elementos
nelem Z
1 X
T = v T vdV (2.71)
2 V
nelem Z
1 X
= q Te N T N q e dV (2.72)
2 V
1 T
= q MM EF q e (2.73)
2 e
(2.74)

Teniendo en cuenta la relacion (2.68) que describe la velocidad para un


punto del solido flexible, para los p-nodos de la malla se tendra, teniendo en
cuenta que las coordenadas {xG 0 , } son las mismas para todos ellos



^
0 0

q 1 I A(X 01 + u1 )B A1 w xG 0
.. .. .. ..
.= . . .
(2.75)
q w
p I A(X^ 0 0
0p + up )B Ap w

q e = Cq f (2.76)
Captulo 2. Formulacion dinamica no lineal de mecanismos flexibles 27

Por lo que la energa cinetica se puede calcular a traves de los parametros


de referencia flotante como
1
T = q Tf CT MM EF Cq f (2.77)
2
De manera que se llama matriz de masas del cuerpo flexible en referencia
flotante, Mf , al producto

Mf = CT MM EF C (2.78)

donde la matriz C esta definida en (2.75).


La contribucion al trabajo virtual de las fuerzas de inercia del solido
flexible en referencia flotante queda
"Z #
finercia = q Tf N T N dV q f = q Tf M f q f (2.79)
f

Por su parte, la contribucion al trabajo interno se calcula a traves de


las fuerzas elasticas aproximadas linealmente por la matriz de rigidez y los
desplazamientos con respecto a la referencia flotante

einterno = q Tf f int,f = q Tf Kf q f (2.80)

donde las fuerzas son solo funcion de las coordenadas modales, por lo tanto
la matriz de rigidez sera:

0 0 0 xG0
K f = 0 0 0 (2.81)

0 0 Kww w

2.3. Formulacion de la dinamica de solidos


rgidos
Un solido rgido es aquel cuyos puntos permanencen a la misma distancia
relativa, o lo que es lo mismo, el cuerpo que no se deforma a lo largo del
tiempo. No tiene sentido pues hablar de tensiones en este tipo de cuerpos
aunque s que se pueden extrapolar las ecuaciones de balance vistas en 2.1.3
teniendo en cuenta que el gradiente de deformacion es nulo. Tambien debido
a esto, el movimiento se puede expresar a traves de un numero finito de
parametros de manera exacta.
Obviando los detalles de la parametrizacion de coordenadas que se veran
en el siguiente apartado, un cuerpo solido rgido se puede considerar como
un sistema de partculas y distribuciones de masa contnuas con la unica con-
dicion de que todos sus puntos se encuentran situados en la misma posicion
con respecto a una referencia local.
28 2.3. Formulacion de la dinamica de solidos rgidos

Empleando el subndice p para las partculas y d para las masas distri-


budas en el espacio, cada una de ellas puede estar sometida a unas fuerzas
puntuales (f ) y distribudas (b) en el caso de las segundas. El principio de
equilibrio de DAlambert implica entonces:

Np Nd
"Z # Nf Nb Z
X X X X
mi xi xi + xxdV f k xk bl xdV = 0 (2.82)
i=1 j=1 Bj k=1 l=1 Bl

A traves de cualquiera de las parametrizaciones de solidos (ver 2.3.1) se


discretiza el desplazamiento de las masas continuas de forma que el conjunto
de parametros de masas puntuales y continuas se representa por q R que son
las coordenadas generalizadas del cuerpo rgido.
Teniendo en cuenta que la posicion de cualquier punto se podra poner en
funcion de las coordenadas generalizadas mediante
x = x(q R ) (2.83)
la variacion de desplazamientos se transforma en
x
x = q (2.84)
q R R
Sustituyendo las anteriores discretizaciones en la ecuacion 2.82, se llega
a la ecuacion de equilibrio
q TR (MR q R QR ) = 0 (2.85)
donde
MR es la matriz de masa, con componentes
NP Nd
"Z #
X xk xk X x x
MRij = mk + l dV (2.86)
k=1
q Ri qRj
l=1 Bj
q Ri qRj

y QR es el vector de fuerzas aplicadas en solidos rgidos, cuyos com-


ponentes son
Nf
X Nb Z
xk X x
QRi = fk + bl dV (2.87)
k=1
qRi l=1 Bl qRi

2.3.1. Parametrizaciones de sistemas de solidos rgidos


Para implementar las ecuaciones de movimiento para sistemas compuestos
por solidos rgidos es necesario describir las coordenadas de ciertos puntos
con respecto a algun sistema de referencia.
La eleccion de que puntos describiran la configuracion del sistema y la
referencia de esta descripcion definen el tipo de parametrizacion empleada.
A continuacion se exponen los tipos de parametrizaciones empleados nor-
malmente, indicando sus ventajas e inconvenientes.
Captulo 2. Formulacion dinamica no lineal de mecanismos flexibles 29

Grados de libertad de un sistema de solidos rgidos


El movimiento de un solido rgido en un espacio eucldeo de dimension
n, En , se puede describir de manera unvoca por la posicion espacial de un
mnimo de n puntos de dicho solido. Teniendo en cuenta que el total de
parametros necesarios para definir la posicion de n puntos es n2 (incognitas)
y que la restriccion de distancia constante entre n puntos implica la impo-
sicion de n condiciones (ecuaciones) para cada punto adicional, el numero
de incognitas independientes en el problema de parametrizacion de un solido
rgido o, simplemente, los grados de libertad de un solido rgido (GDL) son
n
X
2
GDL = n (i 1) (2.88)
i=1

que, para un sistema de r-solidos rgidos, con una serie de enlaces o uniones
que aplican s-restricciones de desplazamiento relativo, se convierte en
" n
#
X
GDL sistema mecanico = r n2 (i 1) s (2.89)
i=1

Coordenadas independientes
Si el numero de parametros empleado en la formulacion de la dinamica
del sistema coincide con el numero de parametros grados de libertad del sis-
tema, entonces se denominan coordenadas independientes. Su uso es escaso,
primero, porque es difcil sistematizar el proceso de eleccion de las coordena-
das y, segundo, porque se puede demostrar que la configuracion de algunos
mecanismos no queda definida de manera unica al usar este tipo de coorde-
nadas.
Pongamos el ejemplo clasico de un mecanismo cuadrilatero articulado
bidimensional como el mostrado en la figura 2.5. Si se parametriza mediante
coordenadas independientes, es necesario usar solo un parametro al tener un
grado de libertad. Eligiendo el angulo entre las barras 1 y 4, la configuracion
del sistema podra ser tambien la mostrada en la figura 2.6.
As pues, aunque conociendo las condiciones iniciales es posible plantear
la simulacion a traves de coordenadas independientes, problemas como el
anterior se acrecentaran cuando se alcancen los posibles puntos de bloqueo
del mecanismo.

Coordenadas relativas
Este tipo de parametrizacion se apoya en las libertades relativas de mo-
vimiento entre los cuerpos de un sistema para definir la configuracion del
mismo. As, cada uno de los parametros define la magnitud de un grado de
libertad de una junta cinematica.
30 2.3. Formulacion de la dinamica de solidos rgidos

barra 2

barra 1
barra 3
1 (t)

barra 4

Figura 2.5: Cuadrilatero articulado

barra 1 barra 2

1 (t)

barra 4 barra 3

Figura 2.6: Cuadrilatero articulado


Captulo 2. Formulacion dinamica no lineal de mecanismos flexibles 31

barra 2

2 (t)
barra 1 3 (t) barra 3

1 (t)

Figura 2.7: Coordenadas relativas. Sistema de cadena abierta

Las coordenadas relativas representan el numero mnimo de coordenadas


para describir de forma unvoca la configuracion del sistema. En el caso de
sistemas de cadena abierta (figura 2.7), el numero de coordenadas relativas
coincide con los grados de libertad del sistema y, por lo tanto, no seran
necesarias ecuaciones de restriccion adicionales.
barra 2

2 (t)
barra 1 3 (t) barra 3

1 (t) 4 (t)

Figura 2.8: Coordenadas relativas. Sistema de cadena cerrada

En el caso de sistemas de cadena cerrada como el de la figura 2.8 son


necesarias tantas ecuaciones de restriccion adicionales como numero de bucles
cerrados haya, multiplicado por los grados de libertad considerados para el
sistema.
Este tipo de parametrizacion resulta interesante cuando se aplica sobre
sistemas con pocos o ningun bucle cerrado ya que, de otra manera, es necesa-
rio un preproceso para analizar que bucles han de ser partidos para simplificar
la formulacion.

Coordenadas punto de referencia


Esta parametrizacion describe la configuracion del sistema a traves de la
definicion de la posicion de cada uno de los solidos que lo componen (figura
2.9). Esta definicion se realiza mediante las coordenadas cartesianas de alguno
32 2.3. Formulacion de la dinamica de solidos rgidos

de sus puntos (normalmente, el centro de gravedad) y mediante un parametro


de giro con respecto al sistema inercial de referencia global.

(x2 , y2 )
2 (t)
barra 2
1 (t) 3 (t)
(x1 , y1 )
(x3 , y3 )

barra 1
barra 3

Figura 2.9: Coordenadas punto de referencia

Las principales ventajas frente a la anterior parametrizacion correspon-


den a una mayor generalizacion de la formulacion, al poder implementar las
restricciones en coordenadas locales de cada solido, y tambien a un mejor
analisis del movimiento de cada cuerpo ya que las incognitas del problema
describen totalmente el movimiento de todos los cuerpos que componen el
sistema.
Por contra, el numero de incognitas aumenta y, por tanto, tambien lo
hace el numero de ecuaciones de restriccion.
(x2 , y2 )
(x3 , y3 )
barra 2

barra 1
barra 3

(x1 , y1 ) (x4 , y4 )

Figura 2.10: Coordenadas naturales

Coordenadas naturales
Si en vez de seleccionar un punto cualquiera de un solido, como en la
parametrizacion con coordenadas punto de referencia, se eligen puntos en los
que se unen varios cuerpos, siendo como mnimo dos el numero de puntos
pertenecientes a cada cuerpo, no es necesario emplear parametros de giro que
en el caso tridimensional dificultan la formulacion. En este caso, cada punto
Captulo 2. Formulacion dinamica no lineal de mecanismos flexibles 33

se describe segun sus coordenadas cartesianas y cada cuerpo se define por


la posicion de varios puntos y, posiblemente, tambien por unos vectores de
orientacion.
En la figura 2.10 se muestra el ejemplo anterior con este tipo de coorde-
nadas. Se comprueba como el numero de parametros necesario para definir el
problema es menor que mediante la parametrizacion con coordenadas punto
de referencia.

2.4. Formulacion de restricciones


Cuando se analizan sistemas formados por varios cuerpos solidos, estos
se encuentran conectados mediante uniones cinematicas que restringen el
desplazamiento relativo entre los cuerpos que unen.
Se recuerdan primero las coordenadas generalizadas como el conjunto de
parametros, q i , (i = 1 . . . n-cuerpos), con los que se define la configuracion
del sistema (para una descripcion de los tipos de parametros, consultar el
apartado 2.3.1):
q = {q 1 , q 2 , . . . , q n }T (2.90)
En funcion de que la restriccion de movimiento dependa o no de las deri-
vadas de los desplazamientos, se puede establecer una primera clasificacion de
uniones. Cuando las restricciones, , dependen exclusivamente de las coor-
denadas generalizadas, q, se dice que son restricciones de tipo holonomo:

hol = (q) (2.91)


Mientras que, por el contrario, si dependen de las derivadas de las coor-
denadas con respecto del tiempo, se denominan restricciones no holonomas:

nohol = (q, q) (2.92)


Recordemos tambien, que la dinamica de un sistema se puede expresar
mediante la siguiente expresion, independiente de la parametrizacion:

q T {M q Q} = 0 (2.93)

donde:

q es una variacion de las coordenadas generalizadas,

M es la matriz de masa del mecanismo,

q R es la aceleracion generalizada,

Q = Q(q, q, t) es una funcion que incluye las fuerzas externas y las


fuerzas internas de los solidos flexibles.
34 2.4. Formulacion de restricciones

De la ecuacion 2.93, no se puede afirmar que el termino entre llaves sea


nulo ya que si se emplean coordenadas dependientes en la formulacion hara
falta incluir el efecto de las restricciones con las que son compatibles los
desplazamientos virtuales.
A continuacion se exponen los tres principales metodos de imposicion de
restricciones.

2.4.1. Metodo de los multiplicadores de Lagrange


A partir de la ecuacion general es necesario imponer las restricciones para
poder resolver el comportamiento del sistema. El metodo de los multiplica-
dores consiste en anadir un termino sumando en la ecuacion general 2.93, de
la forma:
q T {M q Q} + (T ) = 0
Quedando el sistema:

q T {M q + (Tq ) Q} + T = 0

La ecuacion anterior se cumple para cualquier variacion q, por lo que


cada sumando es nulo. Si se descompone en dos sistemas que imponen la nu-
lidad de los terminos que multiplican a cada variacion, se obtiene finalmente
el sistema de ecuaciones algebraico-diferenciales siguiente:

M q + (Tq ) Q = 0 (2.94)
= 0 (2.95)

El sistema anterior consta de n ecuaciones diferenciales de segundo orden


y p ecuaciones algebraicas. Este tipo de sistemas algebraico diferenciales
se suelen denominar sistemas DAE (differential algebraic equation). Para
facilitar la resolucion los sistemas DAE, se pueden imponer las derivadas
nulas de las restricciones. Derivando la expresion = 0 dos veces:

= 0 q q + t = 0 (2.96)
dq dt
= 0 q q + q + =0 (2.97)
dt dt
Sustituyendo por su segunda derivada y agrupando los miembros segn
la ecuacion 2.94, se llega a la siguiente expresion para el sistema conjunto:

M Tq q Q
= (2.98)
q 0 g
donde:
dq dt
g= q
dt dt
Captulo 2. Formulacion dinamica no lineal de mecanismos flexibles 35

2.4.2. Metodo de la penalizacion


Se basa en la aproximacion, en la ecuacion 2.94, del vector de multiplica-
dores por un producto entre las ecuaciones de restriccion y una matriz de
constantes, que se denomina matriz de penalizacion, = ii , tal que

' (2.99)

As, se obtiene directamente un sistema ODE de segundo orden en q sin


incognitas adicionales:

M q + q T ( ) Q = 0 (2.100)

Se puede demostrar que al aumentar indefinidamente los parametros de


penalizacion, ii , las restricciones tienden a imponerse de forma exacta
lo que implica que ( ) .

2.4.3. Metodo del lagrangiano aumentado


Se puede considerar una mezcla de los dos anteriores. Si en la ecuacion
2.94 se realiza la siguiente sustitucion:

= + (2.101)

el sistema se convierte en el siguiente ODE

M q + q T ( ) + Tq Q = 0 (2.102)

En el que el vector se puede considerar una correccion a la penalizacion


mediante multiplicadores langrangianos.
En la ecuacion (2.102) es evidente que q T () 0 s y solo si .
Por lo tanto, si se recurre a un metodo iterativo en que converja hacia ,
se las restricciones en el sistema convergeran hacia las exactas.
Retomando la idea del metodo de la penalizacion, para el que la restriccion
se impone con mayor precision cuanto mayor sea , se puede afirmar que,
como la restriccion exacta corresponde a la impuesta por los multiplicadores
de Lagrange, la siguiente sucesion es monotona, creciente y converge a :

i+1 = i + i+1 (2.103)

Si i+1 = (q i ) se calcula con la solucion en desplazamientos dados por


la iteracion en 2.102

M qi + (q T )i ( i ) + (Tq )i i Qi = 0 (2.104)
36 2.5. Formulacion de sistemas de solidos rgidos y flexibles

2.5. Formulacion de sistemas de solidos rgi-


dos y flexibles
Mediante las distintas parametrizaciones expuestas para representar la
dinamica de cada uno de los solidos formulados y teniendo en cuenta que
la aplicacion de la formulacion debil a un sistema compuesto por solidos
rgidos y flexibles solo necesita anadir a la formulacion individual los terminos
de fuerza de restriccion cruzada (Garca Orden [1999]), la formulacion
dinamica discreta tendra la siguiente expresion:

q TR (MR q R ) + q TE (ME q E ) q TE fint q TR QR q TE QE


+q TR [fR fRE ] + q TE [fE fER ] = 0 (2.105)

donde

se denota con subndice R los solidos rgidos y con E los elasticos,

se indican las derivadas con respecto de q R como DR y con respecto de


q E como DE , y

los terminos fRE y fER son las fuerzas de restriccion acopladas entre
solidos rgidos y elasticos.

Si se aplica el metodo de los multiplicadores de Lagrange para la imposi-


cion de las restricciones, se han de anadir las ecuaciones de restriccion en la
forma conocida:
=0 (2.106)
La ecuacion 2.105 se puede poner en la forma matricial agrupando los
parametros incognita en el mismo vector,

M q = f + fint + Q (2.107)

En el caso de emplear el metodo de la penalizacion o el del lagrangiano


aumentado para imponer las restricciones, se tendra un vector incognita:

qR
q= (2.108)
qE

mientras que si se aplica el metodo de los multiplicadores de Lagrange, se


aumentara el numero de incognitas con tantas adicionales como ecuaciones
de restriccion, quedando:
qR
q= q (2.109)
E

Captulo 2. Formulacion dinamica no lineal de mecanismos flexibles 37

2.6. Contactos e impactos


En las simulaciones realizadas mediante tecnicas de sistemas multicuerpo,
es habitual que el problema a analizar implique fuerzas internas producidas
por el contacto entre una o varias partes de dicho sistema.
Cuando este contacto se produce a una cierta velocidad se habla en termi-
nos de impacto. Aun cuando la velocidad de un impacto es reducida, la repro-
duccion mecanica del mismo en una simulacion de sistemas multicuerpo es
tremendamente compleja cuando se desean analizar los fenomenos elasticos
que aparecen en los cuerpos implicados. A medida que la velocidad aumenta,
se producen otros fenomenos tales como la aparicion de ondas de tension u
ondas de choque cuyo estudio en una simulacion requiere una potencia de
calculo altsima, no solo por incluir no linealidades de los materiales por plas-
tificacion, sino principalmente por la alta velocidad de propagacion de estos
fenomenos.
El impacto es un fenomeno que implica un comportamiento no lineal muy
acusado, por lo que las tecnicas de integracion directa en el tiempo son com-
pletamente imprescindibles. Si existe intercambio termico, resulta entonces
necesario tener en cuenta la ecuacion del balance de energa correspondiente
al primer principio de la termodinamica:

u = : d + h + r (2.110)

donde:
u es la energa interna por
unidad de masa,
d = 12 v + ( v)T , es la velocidad de deformacion,
h es el vector de flujo calorfico, y
r es la densidad de fuentes de calor.
En funcion de la velocidad relativa de los cuerpos en los que se se pro-
duce el impacto, se puede realizar la siguiente clasificacion (propuesta por
Goicolea [2000]):

Baja velocidad (v < 50 m/s): los materiales aun trabajan en su rango


elastico, quizas con alguna plastificacion local.

Velocidad media (50 < v < 500 m/s): se produce una plastificacion
generalizada en los cuerpos que impactan en toda la zona en la que se
produce este impacto.

Velocidad alta (500 < v < 2000 m/s): en este tramo todava es impor-
tante la resistencia viscosa del material.

Velocidad alta (v 2000 m/s): el material pierde su resistencia y se


comporta ya como fludo hidrodinamico.
Captulo 3

Resolucion numerica de las


ecuaciones de la dinamica

En el captulo anterior se han expuesto las bases que permiten formular la


dinamica de sistemas de solidos continuos reales. Ademas, esta formulacion
se ha adaptado a su implementacion numerica mediante una semidiscretiza-
cion espacio-temporal que permite pasar de una formulacion continua a otra
discreta en el espacio pero continua tambien en el tiempo: de los infinitos
grados de libertad de un medio continuo, se pasa a n grados de libertad que
permiten definir un sistema de, como mnimo, n ecuaciones a lo largo del
tiempo.
En la busqueda del sistema de ecuaciones lineal, al que se ha de reducir
cualquier problema para poder implementar una resolucion computacional,
se pueden diferenciar las siguientes estrategias empleadas en los tipos de
problemas mas usuales:

Los problemas de elementos finitos lineales permiten alcanzar un siste-


ma de ecuaciones lineal, normalmente indicado como M u + K u = f ,
con M y K constantes, aprovechando las simplificaciones en la for-
mulacion de los problemas mas sencillos comportamiento lineal del
material, hipotesis de pequenas deformaciones y pequenos desplaza-
mientos.
El problema mas sencillo (figura 3.1) es aquel que plantea un estudio
estatico del sistema (u = 0).
Para problemas lineales dinamicos, el problema formulado en el dominio
del tiempo se resuelve a traves del integrador temporal. Existen dos
estrategias de integradores para los problemas lineales. El primer grupo
discretiza la variable independiente (el tiempo, t = ti ) aplicando reglas
de integracion de las variables geometricas. Un segundo grupo, llamados
integradores modales, trasladan el problema al dominio de la frecuencia,
desacoplando las ecuaciones de solucion y resolviendolas una a una. Por
lo tanto, este tipo de integradores transforman un problema descrito por

39
40

Mecanica de medios continuos


Sistemas de ecuaciones diferenciales en derivadas parciales PDEs

Discretizacion del espacio y formulacion de Galerkin

Modelo de Elementos Finitos


Sistemas de ecuaciones diferenciales ordinarias ODEs

Comportamiento lineal de material


Pequenas deformaciones y desplazamientos
Caso estatico

MEF Lineal (Kx = f )


Sistema de ecuaciones algebricas AEs

Metodo de
solucion lineal

SOLUCION x

Figura 3.1: Esquema de resolucion estatico aplicando el MEF lineal


Captulo 3. Resolucion numerica de las ecuaciones de la dinamica 41

n-ecuaciones diferenciales acopladas a n-problemas descrito cada uno


por una ecuacion diferencial; integran cada uno de ellos y trasladan la
solucion de nuevo al dominio del tiempo.

Cuando se han de resolver problemas donde se tienen en cuenta no


linealidades de algun tipo, aparece un nuevo elemento en el esquema
de solucion (figura 3.2):
El segundo elemento nuevo es el metodo de solucion no lineal (sol-
verno lineal ), que realiza un procedimiento iterativo (indicado en el
esquema con el subndice n) para resolver las variables geometricas para
cada paso de tiempo.

Mecanica de medios continuos


Sistemas de ecuaciones diferenciales en derivadas parciales PDEs

Discretizacion del espacio y formulacion de Galerkin

Modelo de Elementos Finitos


Sistemas de ecuaciones diferenciales ordinarias ODEs

Estatico Integrador Integrador


finercia = 0 implcito explcito

Paso de tiempo ti
Sistema de ecuaciones algebraicas no lineal R(x) = 0

Metodo tipo Newton (n-iteraciones)

Metodo cuasi-Newton (n-iteraciones)

Paso de solucion (ti )n


Sistema de ecuaciones algebricas lineales Ax = b
Metodo de Matriz A diagonal
solucion lineal x = A1 b

SOLUCION x

Figura 3.2: Esquema de resolucion aplicando el MEF no lineal

Finalmente, para los problemas tradicionales de simulacion multicuerpo


de solidos rgidos se aplica el esquema de solucion indicado en 3.3 en
el cual, en funcion del metodo de aplicion de restricciones empleado,
42

se ha de recurrir a un tipo u otro de integrador. Cabe indicar, como se


vio en el captulo anterior, que no siempre se llega a un sistema DAE
cuando se aplica el metodo de multiplicadores de Lagrange ya que se
pueden imponer las restricciones sobre las derivadas de las coordenadas
generalizadas.

Sistemas de solidos rgidos


Sistema de ecuaciones diferenciales ordinarias ODEs

Imposicion de restricciones:
Multipl. de Lagrange Metodo de penalizacion
Lagrangiano aumentado

Reduccion de ndice
Sistema de ecuaciones y posible estabilizacion
algebraico-diferenciales DAEs
Sistema de ecuaciones
Integrador diferenciales ordinarias ODEs
implcito
especfico
DAE Integrador
implcito

Paso de tiempo ti
Sistema de ecuaciones algebraicas no lineal R(x) = 0

Metodo tipo Newton (n-iteraciones)

Metodo cuasi-Newton (n-iteraciones)

Paso de solucion (ti )n


Sistema de ecuaciones algebricas lineales Ax = b
Metodo de
solucion lineal

SOLUCION x

Figura 3.3: Esquema de resolucion aplicando tecnicas multicuerpo

En este trabajo se propone un esquema de solucion como el indicado el


la figura 3.4, en el que se mezclan los
En este captulo se exponen los elementos propios del calculo numerico en
las variantes mas interesantes para la simulacion de la dinamica de sistemas
Captulo 3. Resolucion numerica de las ecuaciones de la dinamica 43

Sistema de solidos rgidos libres Sistema de solidos flexibles


Sist. de ecs. dif. ordinarias ODEs Sistema de ecs. dif. parciales PDEs

Discretizacion espacial
+ Formulacion de Galerkin

Sistemas de solidos rgidos y flexibles


Sistema de ecuaciones diferenciales ordinarias ODEs

Imposicion de restricciones:
Multipl. de Lagrange Metodo de penalizacion
Lagrangiano aumentado

Reduccion de ndice
Sistema de ecuaciones y posible estabilizacion
algebraico-diferenciales DAEs
Sistema de ecuaciones
Integrador diferenciales ordinarias ODEs
implcito
especfico
DAE Integrador Integrador
implcito explcito

Paso de tiempo ti
Sistema de ecuaciones algebraicas no lineal R(x) = 0

Metodo tipo Newton (n-iteraciones)

Metodo cuasi-Newton (n-iteraciones)

Paso de solucion (ti )n


Sistema de ecuaciones algebricas lineales Ax = b
Metodo de Matriz A diagonal
solucion lineal x = A1 b

SOLUCION x

Figura 3.4: Esquema propuesto para la resolucion de sistemas flexibles


44 3.1. Integradores temporales

flexibles. El orden de exposicion elegido coincide con el orden en que aparecen


invocados en la resolucion de un problema de este tipo: integrador, solverno
lineal y solverlineal.

3.1. Integradores temporales


Para la resolucion de un sistema ecuaciones diferenciales ordinarias (ODE)
o algebraico-diferenciales (DAE) a lo largo de la variable independiente (tiem-
po, t) se emplean metodos numericos con distintas caractersticas.

3.1.1. Conceptos previos


Antes de realizar una exposicion de los distintos tipos de algoritmos de
integracion, se enumeran una serie de conceptos importantes (Butcher
[2003], Teschl [2004]).

Forma estandar de un sistema ODE: Una ecuacion diferencial ordina-


ria de orden superior (a uno) o un sistema de orden superior, pongamos
de orden n, se puede reducir a un sistema ODE de primer orden me-
diante la multiplicacion por n de las variables.
En sistemas mecanicos, el orden de las ecuaciones normalmente es de
dos, por lo que un sistema generico de este orden

q = Q(q, q, t) (3.1)

Se puede poner en la forma estandar

E = y F (y, t) = 0 (3.2)

realizando el particionamiento

q
y= (3.3)
q

queda, finalmente:

d q q
=0 (3.4)
dt q Q(q, q, t)

E
Hay que notar que para el sistema descrito en 3.2, se cumple que =I
y
y que esta relacion nunca es singular.
Captulo 3. Resolucion numerica de las ecuaciones de la dinamica 45

Forma estandar de un sistema DAE : Ademas de realizar un desarrollo


similar al de los sistemas ODE de orden superior, la forma estandar de
un sistema DAE incluye las ecuaciones algebraicas que en dinamica de
mecanismos corresponden a la imposicion de restricciones. Los sistemas
DAE aparecidos normalmente en la dinamica de mecanismos tienen la
siguiente estructura funcional:

Mq + Tq Q(q, q, t) = 0 (3.5)
(q, t) = 0 (3.6)

Empleando la particion
q
y= q (3.7)

Se puede tambien escribir el sistema anterior de manera similar a 3.2


quedando un sistema diferencial

E = F(y, y, t) = 0 (3.8)

La forma descrita en 3.8 permite definir un sistema DAE como aquel


E
cuya matriz es singular.
y

Indice de un sistema DAE : es un numero que corresponde a la cantidad


de derivaciones que es necesario realizar para convertir un sistema DAE
en un ODE en la forma (3.2)
Para reducir el ndice del sistema DAE, la forma mas sencilla consiste
en derivar el sistema 3.6. Un problema asociado a esta derivacion reside
en que se pasa de imponer las restricciones en q a imponerlas en sus
derivadas, por lo que, debido a errores numericos, la restriccion se acaba
violando.
Para resolver este problema se han propuesto metodos de estabilizacion
de formulaciones de ndice reducido, que logran un buen compromiso
entre el aumento de precision y el aumento de tiempo de calculo que
producen. El metodo clasico de estabilizacion de DAEs es el metodo de
Baumgarte (Baumgarte [1972]), muy difundido debido a su sencillez.

Ecuaciones rgidas: los sistemas ODE se dice que son rgidos o stiff si,
en general, el cociente entre la mayor y la menor frecuencia de oscila-
cion (con bajo amortiguamiento) es muy alto (se suele establecer un
valor entre 20 y 200). Para sistemas ODE lineales, las frecuencias se
calculan como la parte real de los autovalores del sistema pero para los
46 3.1. Integradores temporales

sistemas no lineales, es necesario linealizar en el entorno de un instante


t para estudiar su comportamiento. Por tanto, un sistema ODE no li-
neal puede pasar de ser rgido a no serlo en funcion del instante y, por
tanto, tambien de las condiciones iniciales del mismo.
La importancia de este concepto reside en que, mientras los integra-
dores habituales en codigos de elementos finitos son muy eficientes en
sistemas no rgidos, se vuelven inestables al tratar sistemas rgidos. Los
sistemas rgidos de ecuaciones aparecen asociados a sistemas fsicos en
los que aparecen oscilaciones en los desplazamientos muy rapidas (vi-
braciones) solapadas a movimientos suaves (de baja frecuencia). Este
tipo de comportamiento es muy habitual en la simulacion de sistemas
flexibles de varios cuerpos.

3.1.2. Clasificacion de integradores


Los metodos de integracion de sistemas de ecuaciones diferenciales varan
en funcion del tipo de este:

Sistemas DAE : Su integracion a lo largo del tiempo requiere unos inte-


gradores especficos (Brenan et al. [1996], Hairer et al. [1989]),
aunque tambien es posible de hecho, es mas habitual reducir el
sistema algebraico diferencial a uno exclusivamente diferencial (ODE)
empleando tecnicas de estabilizacion como las comentadas en el apar-
tado anterior.

Sistemas ODE : Los integradores habituales estan disenados normal-


mente para este tipo de sistemas en forma estandar. Sin embargo,
existen algunos metodos, como los Newmark que se formulan es-
pecficamente para sistemas de segundo orden de origen mecanico.

Se van a considerar en la siguiente clasificacion los metodos lineales em-


pleados para resolver sistemas ODE en la forma estandar (ec. 3.2) con la
siguiente estructura
k
" k #
X X
aki xni = h bki xni (3.9)
i=0 i=0

aunque muchas de las caractersticas que se establecen a continuacion se


pueden estudiar de manera similar para el resto de metodos.
El algoritmo anterior general describe un metodo lineal multipaso, ya
que para estimar el valor de la variable xn se emplean los valores de la variable
y/o de su derivada en los k-pasos anteriores.
Ademas, se puede definir un algoritmo como explcito si el termino bk =
0. Por el contrario, si bk 6= 0, el metodo se dice implcito porque contiene
a xn en ambos lados de la igualdad, siendo teniendo la suma definida en el
Captulo 3. Resolucion numerica de las ecuaciones de la dinamica 47

lado derecho una dependencia implcita con xn (concretamente, en el termino


ponderado por bk ).
La precision de un integrador esta definida por el orden del algoritmo
empleado. En un metodo que deriva de una funcion expresada en serie de
Taylor el orden indica cuantos terminos se estan teniendo en cuenta. As,
para un metodo que tenga un orden de cuatro, se esperara un error de orden
O(h5 ).
Para el calculo del orden del integrador, considerese el funcional lineal
asociado al metodo multipaso de la ecuacion 3.9, donde por simplificar se
supone k = n
k
X
Lx = [ai x(ih) hbi x(ih)] (3.10)
i=0

donde
h = t es el paso de tiempo.
Si x esta representada por su serie de Taylor para t = 0, el funcional se
puede expresar como

Lx = d0 x(0) + d1 hx(0) + d2 h2 x(0) + (3.11)

Si se expanden en serie de Taylor tanto x como x y se sustituyen en 3.10,


se obtiene un polinomio en h en donde se identifican los coeficientes dj , que
en general toman la forma siguiente:

k j
X
i ij1
dj = ai bi (3.12)
i=0
j! (j 1)!

Para cualquier metodo multipaso existe un entero m, llamado orden del


metodo multipaso, para el que se cumple la siguiente condicion:

d0 = d1 = = dm = 0 6= dm+1 (3.13)

A igualdad de condiciones, entre dos metodos distintos, suele preferirse


el metodo de orden mayor.
Desde el punto de la estabilidad, en Dahlquist [1956] se demuestra que
un metodo de k pasos estable como el mostrado en la ecuacion 3.9 no puede
tener un orden mayor que k + 2 (o que k + 1 si k es impar) lo que se conoce
como primera barrera de Dahlquist.
se exponen a continuacion los distintos algoritmos de integracion que se
emplean en la simulacion dinamica, agrupados en familias con caractersticas
comunes.
48 3.1. Integradores temporales

3.1.3. Integradores multipaso lineales


A partir de los polinomios caractersticos del metodo de k pasos
k
X
p(z) = ai z i (3.14)
i=1
Xk
q(z) = bi z i (3.15)
i=1

Se establece la siguiente clasificacion:

Familia Adams: poseen un primer polinomio de la forma p(z) = z k z k1


ya que surgen de integrar el problema de valor inicial

x = f (x, t)
(3.16)
x(t0 ) = x0

entre tn1 y tn sobre el eje t. Se llega a una solucion para la variable


dependiente Z t
x(tn ) = x(tn1 ) + f (x(t))dt (3.17)
t1

en la que la integral se puede aproximar mediante un esquema de cua-


dratura numerica utilizando un polinomio de intepolacion
Z t
x(tn ) ' x(tn1 ) + P (t)dt (3.18)
t1

En caso de que, para el segundo polinomio, bk = 0, entonces el metodo


es explcito y se basa en la formula de Adams-Bashforth
k
X
x(tn ) = x(tn1 ) + h bi f ni dt (3.19)
i=1

El algoritmo mas empleado es el basado en la formula de Adams-


Bashforth de orden 5 siguiente:
h
xn = xn1 + 1901f n1 2774f n2 + 2616f n3 1274f n4 + 251f n5
720
(3.20)
Los metodos Adams implcitos (bk 6= 0) estan basados en la formula de
Adams-Moulton
k1
X
x(tn ) = x(tn1 ) + h bi f ni dt (3.21)
i=0
Captulo 3. Resolucion numerica de las ecuaciones de la dinamica 49

que para el metodo de orden 5, es


h
xn = xn1 + 250f n + 646f n1 264f n2 + 106f n3 19f n4
720
(3.22)
Los metodos de primer orden respectivos se conocen como metodo de
Euler para la formula de Adams-Bashford con k = 1

xn = xn1 + hf n1 (3.23)

con su correspondiente equivalente explcito (Adams-Moulton), llama-


do metodo de Euler implcito

xn = xn1 + hf n (3.24)

y, finalmente, el metodo Adams-Moulton de segundo orden que coin-


cide con la suma de los dos anteriores, define la regla trapezoidal
h
xn = xn1 + f n + f n1 (3.25)
2

Familia BDF: (Backward Differentiation Formulae) tambien llamados meto-


dos de Gear (Gear [1971a] y Gear [1971b]), quien popularizo estas
tecnicas. Tienen un segundo polinomio caracterstico q(z) = bk z k y se
basan en la diferenciacion del polinomio P (t) que interpola x(t) en los
metodos de Adams.
La forma general de los metodos BDF es
k
X
ai xni = hbf n (3.26)
i=0

Destacar de estos metodos que resultan mucho mas estables ante sis-
temas de ecuaciones rgidos que los metodos de Adams Moulton del
mismo orden.
El metodo BDF mas simple surge de considerar P (t) una recta entre los
dos ultimos puntos conocidos xn , xn1 . La derivada de este polinomio,
es la pendiente de la recta entre los puntos, por lo que el algoritmo
toma la forma:
xn xn1
= fn (3.27)
h
con lo que se vuelve a obtener el metodo de Euler implcito. Por su-
puesto, para interpolaciones de mayor orden, el algoritmo BDF no se
parecera al Adams Moulton del mismo orden. Por ejemplo, compara-
do con la regla trapezoidal, el algoritmo BDF de segundo orden (y de
50 3.1. Integradores temporales

k b a0 a1 a2 a3 a4
1 1 1
2 4
2 3 3
13
6 18 9 2
3 11 11
11 11
12 48
4 25 25
36
25
16
25
253

60 300
5 137 137
300
137
200
137
75
137 12
137

Cuadro 3.1: Coeficientes para los metodos BDF de paso constante

paso constante) evalua solo una funcion f pero emplea el valor de tres
incognitas previas (hasta xn2 ). Este algoritmo viene dado por
4 1 2
xn = xn1 xn2 + h f n (3.28)
3 3 3
Las implementaciones de los metodos BDF suelen tener pasos de tiempo
casi constantes y orden variable. Variantes del metodo, como las im-
plementadas en los paquetes de resolucion de ODEs y DAEs (e.g. VO-
DE, http://www.netlib.org/ode/vode.f descrito en Brown et al.
[1989]) utilizan la informacion del paso n para variar el orden de in-
tegracion y el tamano del paso h, tanto para el siguiente paso como
para el actual.
En el cuadro 3.1 se indican los coeficientes para los metodos BDF de
hasta orden 5.

3.1.4. Metodos Runge-kutta


Estos metodos, en contraposicion a los anteriores, son de un solo paso y
aproximan las derivadas parciales la serie de Taylor para x(t + h)
h
x(t + h) = x(t) + hx(t) + x(t) + (3.29)
2!
donde
x = f (x(t))
x = f t + f x f
x(3) = f tt + f tx f + (f t + f x f )f x + (f xt + f xx f )f
x(4) = . . .
mediante el resarrollo en serie de Taylor de funciones de dos variables
f (t + h, x + hf ) = f + h(f t + f x f ) + + O(hk+1 ) (3.30)
La forma general de los metodos Runge-Kutta de s-etapas es un mapeado

(t, x) (t + h, x + hb1 k1 + + hbs ks ) (3.31)


Captulo 3. Resolucion numerica de las ecuaciones de la dinamica 51

en el que el termino en el paso n se calcula con el esquema


s
X
xn = xn1 + h bi k i (3.32)
i=1

con !
s
X
ki = f tn1 + ci h, xn1 + h aij kj (3.33)
j=1

La matriz de Butcher permite escribir los coeficientes de manera compac-


ta (Butcher [1987]) mediante la particion
!
c A
(3.34)
bT

donde c = {c1 , . . . , cs }T , b = {b1 , . . . , bs }T y A = Aij . En caso de que la


matriz cuadrada A sea triangular inferior (si (j i) Aij = 0), el metodo
es explcito, mientras que si tiene algun termino no nulo en la diagonal o por
encima de ella, para (j i) algun termino ki = f (kj , . . . ) 6= 0 y, por tanto,
el metodo es implcito.
Para el metodo Runge-Kutta clasico (de cuarto orden), la matriz de But-
cher es
0 0 0 0 0
1 1
2 2 0 0 0

1 0 1 0 0 (3.35)
2 2

1 0 0 1 0
0 16 13 13 16

Metodo Runge-Kutta Adaptativo


En un intento por conseguir un metodo Runge-Kutta que ajustara el
tamano de cada paso automaticamente, se desarrollo un metodo (consultar
el informe Felhberg [1969] o el artculo original Fehlberg [1969]) que,
mediante el empleo de dos metodos a la vez, uno de cuarto orden con cinco
evaluaciones de la funcion y otro de quinto orden con seis evaluaciones, se
consigue una estimacion del error que permite adaptar el tamano de paso en
cada iteracion para hacerlo lo mayor posible para un error maximo dado.
Este metodo se conoce como Runge-Kutta-Fehlberg y es de orden 5, aun-
que utiliza una formula de orden 4 y otra de orden 5, con las evaluaciones de
los mismos puntos. El esquema es el siguiente:
6
X
xn = xn1 + bi ki (3.36)
i=1
X6
xn = xn1 + bi ki (3.37)
i=1
52 3.1. Integradores temporales

con
donde, la ecuacion 3.36 se utiliza para el valor de salida ya que tiene
mayor orden, mientras que la ecuacion 3.37 es de orden 4 y por lo tanto
b6 = 0 (aunque se necesita definirlo para calcular el error). La diferencia
entre ambas se puede interpretar como una estimacion del error global, en ,
cometido en el paso n

6
X
en = xn xn = (bi bi )ki (3.38)
i=1

A continuacion se presentan, en la matriz de Butcher, los coeficientes para


el metodo RKF-45 que, aunque se han desarrollado otros posteriormente,
suele ser el que muestra un mejor compromiso entre velocidad y precision.
La matriz para la ecuacion 3.36 (de orden 5) es

0 0 0 0 0 0 0
1
4 1
0 0 0 0 0
4
3 3 9
0 0 0 0
8 32 32
12 1932 7200 7296
13 2197 0 0 0 (3.39)
2197 2197
1 429 8 3680 845
4104 0 0
216 513
1 8
2 27
2 3680
513
845
4104 11
40
0
16 6656 28561 9 2
0 135 0 12825 56430
50 55

mientras que, tanto para la ecuacion 3.37 como para el calculo del error,
es preferible definir los coeficientes b = bi indirectamente, a traves de

1 128 2197 1 2
b b = , 0, , , , (3.40)
360 4275 75240 50 55

3.1.5. Esquemas predictor-corrector


Las formulas presentadas anteriormente, no suelen emplearse por sepa-
rado sino que se agrupan en esquemas en los que primero se realiza una
prediccion para el valor xn mediante un algoritmo explcito, se evalua la fun-
cion f (xn ) y se corrige un numero de veces para, normalmente, terminar
evaluando el valor de la funcion para el valor ultimo corregido de xn .
El esquema anterior suele denotarse con las siglas P (EC)m o P (EC)E
en funcion de que se evalue finalmente o no f (xn ). Si m se fija de antemano,
el metodo globalmente es explcito; pero si se establece una condicion de
convergencia, se tendra un metodo genuinamente implcito.
Los metodos que habitualmente se emplean en esquemas P-C son el
ABAM (o ABM) [Adams Bashford]-[Adams Moulton] y los metodos BDF
en los que se realizan predicciones mediante extrapolacion de polinomios.
Captulo 3. Resolucion numerica de las ecuaciones de la dinamica 53

3.1.6. Familia -Newmark


Ampliamente aplicada a la resolucion de ecuaciones de la dinamica es-
tructural. Su formulacion general, que depende de los parametros y , se
suele escribir para posiciones y velocidades como

1
xn = xn1 + xn1 + h2 xn1 + h2 xn (3.41)
2
xn = xn1 + (1 ) hxn1 + xn (3.42)
Para sistemas de ODE en forma estandar, se puede reescribir como
xn = E1 xn1 + J2 f n + J1 f n1 (3.43)
donde

I hI 0 h2 I 0 h2 ( 12 )I
E1 = J1 = J2 =
0 I 0 hI 0 h(1 )I
siendo I y 0 las matrices cuadradas identidad y nula, respectivamente, de
dimension igual a la del problema.
En funcion de los valores de y se pueden distinguir los metodos mas
populares siguientes:
(
=0
-Newmark explcito:
=0
(
= 12
Diferencias centrales:
=0
(
= 21
Fox & Goodwin: 1
= 12
(
= 12
Aceleracion lineal :
= 16
(
= 12
Regla trapezoidal o metodo de aceleracion constante:
= 14
(
= 12 +
Aceleracion constante modificada: 2
= (1+)
4
Las caractersticas mas importantes de los metodos de esta familia son
las siguientes:
El metodo es de segundo orden s y solo si = 21 .
Si 12 , el metodo es incondicionalmente estable.
1
En caso de que > 2
se produce disipacion (amortiguamiento) en altas
frecuencias.
54 3.1. Integradores temporales

3.1.7. Metodo de Hilber-Hughes-Taylor (HHT)


Debido a la caracterstica formula del algoritmo, tambien es llamado
metodo alpha o HHT-. Propuesto en Hilber et al. [1977], se basa en
la introduccion de amortiguamiento numerico de las frecuencias mas eleva-
das para evitar la desestabilizacion del algoritmo pero manteniendo el orden
dos de integracion.
Suponiendo que la ecuacion dinamica se formula mediante
Mq Q(q, q, t) = 0 (3.44)
y que la funcion Q se puede descomponer en una suma de una funcion
del tiempo y otra funcion de las coordenadas y sus derivadas primeras
Q(q, q, t) = Qt (t) + Qq (q, q) (3.45)
la expresion general del metodo toma la forma
[Mq]n (1 h )Qqn + h Qqn1 = Qtn+h (3.46)
donde la notacion tn +h indica la clasica suma n1 + (1 )n , es
decir, una evaluacion en t = tn + h h.

3.1.8. Metodo de Energa-Momento


Se puede interpretar como una modificacion de la regla del punto medio,
para la cual se impone la conservacion exacta de la energa (Simo y Tarnow
[1992]).
Suponiendo como anteriormente que la formulacion del problema dinami-
co es
Mq = Q(q, q, t) (3.47)
se puede poner como

d q q
= 1 (3.48)
dt q M Q(q, q, t)
El metodo se puede expresar mediante la formula modificada de la regla
del punto medio, que se caracteriza por la ecuacion siguiente
xn = xn1 + hfn 1 (3.49)
2

que, sustituyendo la particion 3.48 y modificando la ecuacion del calculo


de velocidades queda
qn = qn1 + hM1 Qn 1 (3.50)
2
1
qn = qn1 + h(qn qn1 ) (3.51)
2
donde el coeficiente se elige adecuadamente para que la energa total
E = T + V se conserve
E = En En1 = Tn + Vn Tn1 Vn1 = 0 (3.52)
Captulo 3. Resolucion numerica de las ecuaciones de la dinamica 55

3.2. Metodos de solucion de sistemas alge-


braicos no lineales
Para un sistema de ecuaciones algebraico expresado en forma residual, se
plantea el problema de calcular las races del residuo

R(q) = 0 (3.53)

Los metodos que se exponen a continuacion se basan en un esquema


iterativo en el que, en cada paso, se resuelve una aproximacion lineal del
residuo R (Luenberger [1989], Crisfield [1991]).

3.2.1. Metodo de Newton


Este metodo se basa en una aproximacion del valor de la funcion residuo
en el entorno de un punto conocido q mediante la serie de Taylor truncada
de la siguiente forma:

R(q + h) ' R(q) + R0 (q)h + O(h2 ) (3.54)

lo que en el paso k + 1, en el que se conocen los valores en k se traduce


en la igualdad
0 = R(qk+1 ) ' R(qk ) + R0 (qk )hk (3.55)
donde R0 (q) es el jacobiano del residuo. La anterior ecuacion se puede
plantear como un sistema lineal en hk , con lo que, al resolverla mediante un
metodo lineal (ver siguiente apartado)

R
hk = Rk (3.56)
q k
se pueden calcular las coordenadas generalizadas del paso k + 1 como

qk+1 = qk + hk (3.57)

Hay que destacar que el metodo de Newton muestra una convergencia


cuadratica, de forma que el error de cada iteracion i = x xi se reduce
proporcionalmente a su cuadrado
R00 (x)
i+1 ' 2i (3.58)
2R0 (x)
aunque el coste computacional es alto ya que se ha de calcular la tangente al
residuo en cada iteracion.
Para intentar reducir la exigencia de calculo que implica esta ultima ob-
servacion, se plantean numerosas variantes entre las que se destancan los
metodos modificados y cuasi-Newton que se exponen en los dos siguientes
apartados.
56 3.2. Metodos de solucion de sistemas algebraicos no lineales

3.2.2. Metodo de Newton modificado


Si en vez de calcular el jacobiano del residuo en cada iteracion,

R
Jk = (3.59)
q k

se utiliza la misma estimacion del jacobiano cada m-iteraciones,



R
Jk = J(nm)+i = (3.60)
q m

donde:
i = {1, 2, . . . , m}
n = {1, 2, . . . }
k = {1, . . . , m, . . . , (n m) + i, . . . }
Se divide por m el numero de veces que hace falta calcular el jacobiano,
aunque se pierde la propiedad de convergencia cuadratica.

3.2.3. Metodos cuasi-Newton


El principal metodo, llamado metodo de la secante se basa en una aproxi-
macion del jacobiano (tangente al residuo), Jk ' Kk , de forma que se cumpla
la condicion de secante dada por

Rk+1 Rk = Kk+1 (qk+1 qk ) (3.61)

De forma mas compacta, la ecuacion 3.61 se puede poner como

yk = Kk+1 dk (3.62)

donde
yk = Rk+1 Rk
dk = qk+1 qk
Las matrices Kk+1 que satisfacen estas ecuaciones proporcionan la so-
lucion exacta en el caso de que R(q) derive de un funcional cuadratico y
casi exacta si ese funcional no es cuadratico pero es estrictamente convexo
(Geradin et al. [1983]).

Observacion 4 Si R(q) deriva de un funcional cuadratico, entonces el pro-


blema se puede enunciar como un problema de minimizacion del funcional
F = F(q) = 12 qT QqbT q sin restricciones, donde Q es simetrica y definida
positiva, como ahora se vera. En este caso, las condiciones de minimizacion
necesarias son

F(q) = 0 R(q) = Q q b = 0 (3.63)


2 F(q) > 0 K(q) = Q > 0 (3.64)
Captulo 3. Resolucion numerica de las ecuaciones de la dinamica 57

Una forma sencilla de calcular Kk+1 es mediante una descripcion recursiva


que, a partir del valor en la iteracion precedente, realiza una correccion de
primer orden como la siguiente:

(yk Kk dk )uTk
Kk+1 = Kk + (3.65)
uTk dk

donde uk es un vector que cumple uTk dk 6= 0 (condicion de no ortogona-


lidad).
En la practica, la implementacion del metodo requiere del calculo de la
inversa de Kk+1 , Gk+1 = K1 k+1 que cumple

dk = Gk+1 yk (3.66)

Recurriendo a la formula de Sherman-Morrison para el calculo de inversas


de una matriz descompuesta de la siguiente forma:

A1 abT A1
(A + abT )1 = A1 (3.67)
1 + bT A1 a
La actualizacion de la inversa, a partir de 3.65 se puede poner como

(dk Gk yk )vkT
Gk+1 = Gk + (3.68)
vkT yk

donde, al igual que con uk en 3.65, en este caso vk son vectores arbitrarios
con la condicion de que no son ortogonales a yk , tal que vkT yk 6= 0.
La primera version de este algoritmo, Broyden [1965], simplemente
impona vk = GTk dk , con lo que Gk+1 se aproximaba mediante

(dk Gk yk )dTk Gk
Gk+1 = Gk + (3.69)
dTk Gk yk

La version de Davidon conserva la posible simetra de Gk haciendo vk =


dk Gk yk , consiguiendo:

(dk Gk yk )(dk Gk yk )T
Gk+1 = Gk + (3.70)
(dk Gk yk )T yk

Para evitar el mal condicionamiento de la matriz Gk+1 cuando k aumenta,


se han desarrollado formulas de correccion de segundo orden, que consiguen
que la matriz siga siendo definida positiva.
Si se desea mantener Hk+1 definida positiva, su inversa se puede calcular
segun la formula de Davidon-Fletcher-Powell (DFP)

dk dTk Gk yk ykT Gk
Gk+1 = Gk + (3.71)
dTk yk ykT Gk yk
58 3.3. Metodos de solucion de sistemas algebraicos lineales

Sin embargo, si se quiere mantener Gk+1 definida positiva, entonces re-


sulta util la formula de Broyden-Fletcher-Goldfarb-Shanno (BFGS)

dk ykT yk dTk dk dT
Gk+1 = I T Gk I T + T k (3.72)
yk dk y k dk y k dk

volviendo al calculo de Hk+1 , para cada metodo anterior se pueden realizar


las siguientes sustituciones

dk y k G H (3.73)

y se obtiene la matriz buscada permutando el metodo para el que estan


definidas en Hk+1 , es decir, 3.71 correspondera a la formulacion BFGS mien-
tras que 3.72 correspondera a la formulacion DFP.
A partir de las formulas DFP y BFGS se puede definir la siguiente familia
de metodos de actualizacion, conocida por familia de Broyden (Luenberger
[1989]), definida por

H = (1 )HDF P + HBF GS (3.74)

3.3. Metodos de solucion de sistemas alge-


braicos lineales
Para la resolucion de sistemas de ecuaciones del tipo

Ax = b (3.75)

es necesario aplicar tecnicas que sean sistematicas y que minimicen los


errores de truncacion numerica en el calculo debidos al empleo de precisiones
finitas de coma flotante.
A continuacion se exponen las tecnicas mas empleadas separandolas en
dos grandes grupos: de calculo directo e iterativos. En funcion de la dimension
del sistema de ecuaciones a resolver, sera mas conveniente emplear unas u
otras (Kincaid y Cheney [1994]).

3.3.1. Metodos directos


Los metodos directos consisten en algoritmos que operan la matriz con
una cierta estrategia tal que encuentran una solucion para el sistema en un
numero finito de pasos y sin mas errores que los de redondeo (Shampine
et al. [1997]).
El Metodo de Gauss con sus variantes, constituye la base de los metodos
de resolucion directa de sistemas de ecuaciones lineales.
La aplicacion sistematica del metodo de Gauss implica la formacion de
la matriz triangular superior (U) en la fase de avance (factorizacion) o de
Captulo 3. Resolucion numerica de las ecuaciones de la dinamica 59

eliminacion hacia delante y la eliminacion hacia atras o fase de remonte


(solucion) del sistema triangularizado.
Si existe algun elemento nulo en la diagonal principal de la matriz A, el
metodo general falla y es necesario realizar una permutacion previa.
La descomposicion LU de matrices, permite descomponer cualquier ma-
triz en un producto de una matriz U triangular superior (y con elementos en
la diagonal iguales a la unidad) y otra L triangular inferior.
Para minimizar los errores numericos, los pivotes deben ser los elementos
mayores de la diagonal. La operacion de reordenacion de filas y columnas se
denomina permutacion y se asocia a una matriz P.
Realmente, la descomposicion LU se aplica conjuntamente con el metodo
de Gauss para resolver los sistemas lineales. Suponiendo que se efectua per-
mutacion y teniendo en cuenta que, tras la fase de avance queda un sistema:

PAx = LUx = Pb (3.76)


donde LU se obtiene de un algoritmo modificado de eliminacion gaussia-
na; la fase de solucion comprende la resolucion de dos ecuaciones:

Lz = Pb (3.77)
Ux = z (3.78)

La primera se conoce como sustitucion hacia delante y la segunda como


sustitucion hacia atras.
Se conoce como factorizacion de Cholesky a aquella aplicable unicamente
a matrices reales, simetricas, y definidas positivas de la forma

A = LLT (3.79)

donde L es una matriz triangular inferior con diagonal positiva.


Los elementos de la diagonal de la matriz L = lkk se calculan mediante
la formula
k1
! 21
X
2
lkk = akk lks (3.80)
s=1

Y, una vez calculado para la columna k, el resto de elementos de la co-


lumna lik , i > k se calculan mediante
k1
!
1 X
lik = aik (lis lks ) (3.81)
lkk s=1

3.3.2. Metodos iterativos


En contraste con los metodos directos, los iterativos consisten en algo-
ritmos que dan una serie de vectores que convergen hacia la solucion del
sistema. Su importancia radica en su capacidad para encontrar soluciones
60 3.3. Metodos de solucion de sistemas algebraicos lineales

con un nivel razonable de precision en un numero no muy elevado de opera-


ciones. Por este motivo, se prefieren para la resolucion de sistemas grandes
(miles de ecuaciones) frente a los metodos directos.
Los metodos mas sencillos son los siguientes:

metodo de Richardson para el que la formula iterativa en k es


n
X
(k) (k1) (k1)
xi = xi + bi aij xj (3.82)
j=1

metodo de Jacobi con formula


n
!
(k) 1 X (k1)
xi = bi aij xj con j 6= i (3.83)
aii j=1

Metodo de Gauss-Seidel
i1 n
!
(k) 1 X (k)
X (k1)
xi = bi aij xj aij xj (3.84)
aii j=1 j=i+1

Cuando A es una matriz simetrica y definida positiva, esto es

AT = A, xT Ax > 0 para x 6= 0 (3.85)

entonces el problema a resolver Ax = b es equivalente al de minimizar la


forma cuadratica
q(x) = xT Ax 2xT b (3.86)
y se pueden emplear unos metodos iterativos especiales, que se exponen a
continuacion.
El metodo del descenso mas rapido se deduce de emplear un vector v para
el avance de la solucion que apunte en la direccion del residuo r(k) = bAr (k) .
Formalmente, cada iteracion se calcula mediante

(k) (k1) (v (k) )T v (k)
x =x + v (k) (3.87)
(v (k) )T Av (k)

Por ultimo, el metodo del gradiente conjugado se basa en elegir unas


direcciones de busqueda v (i) tal que formen un sistema A-ortonormal, en el
que se cumple
(v (i) )T Av (j) = 0 (3.88)
siempre que i 6= j.
Para este tipo de sistemas, Hestenes y Stiefel [1952] forman un
sistema A-ortogonal a partir de imponer que los residuos r(k) = b Ar (k)
formen un sistema ortogonal, es decir, (r(i) )T r(j) = 0 para i 6= j.
Captulo 3. Resolucion numerica de las ecuaciones de la dinamica 61

Con estas condiciones, se establece un metodo iterativo que converge en


un numero finito de pasos a la solucion exacta mediante las ecuaciones:

k k1 (rk1 )T rk1
x = x + k1 T k1
v k1 (3.89)
(v ) Av

k k1 (rk1 )T rk1
r = r + Av k1 (3.90)
(v k1 )T Av k1

k k (rk )T rk
v = r + v k1 (3.91)
(rk1 )T rk1

con r (0) = v(0) = b Ax(0)


En sistemas mal condicionados se aplica una variante llamada metodo
del gradiente conjugado precondicionado. Es practicamente el unico que se
emplea en la practica por lo que, debido a su importancia, se han desarrollado
multitud de implementaciones distintas. Aunque no se van a abordar los
detalles del mismo, se puede consultar una extensa revision en Barrett
et al. [1993].
Captulo 4

Entornos de desarrollo. Estado


del arte

Con el objetivo de conocer las herramientas de que se dispone para rea-


lizar simulaciones como las descritas en anteriores captulos, se ha realizado
una busqueda intensiva que incluye algunas pruebas y experiencias de las
aplicaciones expuestas.
Como resultado de este estudio, a continuacion se presenta una intro-
duccion a las aplicaciones de simulacion con una sucinta descripcion de las
diferencias principales entre las herramientas comerciales y las de investiga-
cion. Con el fin de sentar las bases para la programacion informatica que
se describira posteriormente, se realiza tambien un analisis de los distintos
lenguajes de programacion que se suelen emplear para aplicaciones de simu-
lacion. Finalmente, se realizan algunos comentarios acerca de herramientas
de asistencia a la programacion y de entornos que integran multitud de ellas,
lo que produce una simbiosis realmente productiva.

4.1. Herramientas comerciales de simulacion


mecanica
Las herramientas informaticas comerciales capaces de realizar simulacio-
nes de sistemas de solidos se pueden dividir en tres grandes grupos: codigos
multicuerpo, codigos MEF y entornos matematicos.
Aunque lentamente se va produciendo una convergencia entre las capaci-
dades de analisis que poseen tanto los codigos multicuerpo como los MEF,
existen algunas diferencias notables que hacen que se puedan clasificar de
forma independiente.
Los codigos multicuerpo representan unas herramientas altamente espe-
cializadas en el tratamiento de sistemas de solidos normalmente la especia-
lizacion se concreta en sistemas de solidos rgidos. Como contrapunto, el
desarrollo en la ultima decada de los codigos MEF ha tendido hacia la genera-
cion de herramientas de uso general donde la multifsica representa el estado

63
64 4.1. Herramientas comerciales de simulacion mecanica

del arte en simulacion. Debido al campo tan amplio que abarcan estas he-
rramientas, no se muestran tan eficientes en el analisis de sistemas de solidos
aunque en muchos casos es mas un problema de diseno de la entrada/salida
que de capacidad de calculo de los modulos de solucion.
Los entornos matematicos de simulacion tambien se caracterizan por per-
mitir analisis muy diversos ya que se corresponden con herramientas de alge-
bra y calculo computacional. La popularidad en el uso de estas herramientas
ha permitido su crecimiento y evolucion hacia entornos que ofrecen asistencia
al usuario en la generacion de las ecuaciones que rigen el problema que desea
estudiar. A pesar de la alta flexibilidad que ofrecen, la dificultad del modela-
do de sistemas mecanicos y del analisis de resultados hacen muy complicado
su aplicacion en problemas de una mnima complejidad.
A pesar de lo anterior, el empleo de los entornos matematicos como len-
guaje de programacion de alto nivel cada vez mas eficiente numericamente
permite la generacion de pequenas aplicaciones adaptadas a necesidades con-
cretas.
Hay que resaltar la tendencia no muy exitosa de incorporar capacidad
de simulacion multicuerpo a los paquetes CAD/CAM/CAE como las crea-
das por Dassault Systemes (Catia [2005]) o por PTC (Pro/ENGINEER
[2005]). Los principales motivos para que estas herramientas no hayan teni-
do mejor acogida son una menor flexibilidad en la simulacion debido a su
orientacion al usuario tradicional de CAD/CAM, as como la existencia de
formatos neutros de intercambio de datos de solidos como y el estandar ISO
10303 (STEP [2005], ver ISO [1994]), que permiten aprovechar la capaci-
dad de generacion de geometras complejas en un entorno CAD y trasladarla
a un entorno multicuerpo sin perdida de detalle ni operaciones costosas.

4.1.1. Codigos multicuerpo


Representan las herramientas tradicionales en el estudio y simulacion de
sistemas compuestos por varios cuerpos solidos con uniones. A continuacion
se listan los principales programas con distinto grado de especializacion, junto
con una breve descripcion de los mismos.

MSC.ADAMS (Automatic Dynamic Analysis of Mechanical Systems,


ADAMS [2005]): es una completa coleccion de modulos de simula-
cion que automatizan procesos de diseno y validacion de modelos para
diversos campos de la mecanica. El nucleo es el modulo de solucion
(ADAMS/Solver) cuyas caractersticas principales se orientan hacia la
estabilidad y rapidez del proceso de calculo. la parametrizacion de los
distintos elementos del sistema mecanico.

CarSim/TruckSim/BikeSim (CarSim [2005]): Familia de progra-


mas enfocados a la simulacion de la dinamica vehcular de automoviles,
camiones y motocicletas que emplea modelos multicuerpo de hasta 600
Captulo 4. Entornos de desarrollo. Estado del arte 65

parametros. Para ciertos modelos, la velocidad de calculo es mayor que


el tiempo simulado por lo que permite simulacion en tiempo real incluso
con conexiones a equipos de control electronico reales como centralitas
(ECU) de ABS (control de frenada), TCS (control de traccion), etc.

TNO MADYMO (MADYMO [2005]): Programa especializado en


el analisis de la seguridad de ocupantes de vehculos. Integra la simula-
cion multicuerpo de la biomecanica del cuerpo humano con el analisis
de los elementos estructurales deformables mediante modelos MEF y
simulacion explcita. Los modelos multicuerpo son capaces de incluir
los efectos de la flexibilidad para el analisis de lesiones a traves de
subsistemas de elementos finitos descritos segun referencia flotante.

RecurDyn (RecurDyn [2005]: coleccion de modulos de simulacion


multicuerpo con capacidades para simular solidos tanto rgidos como
flexibles (basados en formulaciones MEF lineal y no lineal). En fun-
cion del modulo, se pueden realizar analisis estaticos, de sensibilidad,
de vibracion, con sistemas de control. As mismo, permite el trabajo
con subsistemas de solidos. Su caracterstica principal es la velocidad
de simulacion, gracias a la formulacion recursiva mediante coordena-
das relativas, integradores stiff (DASSL y BDF) y empleo de jacobiano
analtico. Con respecto a la capacidad de simular solidos flexibles, per-
mite tanto una formulacion lineal modal (en dominio de la frecuencia)
como formulacion no lineal relativa. Ademas, posee un tipo de elemento
para simular el comportamiento flexible de placas, correciones dinami-
cas y analisis de contactos.

SIMPACK (SIMPACK [2005]): Probablemente, el codigo multi-


cuerpo que mejores caractersticas tiene en el tratamiento de solidos
flexibles, para los que incluye tecnicas como integracion paralela en el
dominio de la frecuencia(Dietz et al. [2003]), inclusion de efectos no
lineales en vigas (Wallrapp [2002]) y de endurecimiento geometrico
(Wallrapp y Schwertassek [1991]), y analisis de contactos entre
solidos flexibles. Tambien posee modulos especficos para el tratamiento
de sistemas y subsistemas en automocion, aeronautica, etc. Esta escri-
to en un lenguaje orientado a objetos (C++) y emplea las libreras de
Trolltech (Qt [2005]) para la interfaz grafica de usuario, lo que permite
su uso en una gran variedad de plataformas.

Universal Mechanism (Universal Mechanism [2005]): Sorpren-


dente programa desarrollado en Rusia por el Prof. Dmitry Pogorelov de
la Universidad Tecnica de Bryansk State. De uso general en la dinami-
ca de sistemas, tambien posee modulos especializados de analisis lineal
(vibraciones), ferrocarriles, optimizacion, subsistemas, automocion y
solidos flexibles (referencia flotante). Los metodos de integracion im-
plementados incluyen un esquema PEC explcito basado en BDF de
66 4.1. Herramientas comerciales de simulacion mecanica

orden y paso variables (hasta orden 5), PECE-ABAM explcito de pa-


so y orden variables (hasta orden 11) y, finalmente, un metodo para
sistemas ODE y DAE stiff (rgidos) de orden fijo (orden 2) y paso
variable (Uni [2002]).

LMS Virtual.Lab Motion (Virtual.Lab Motion [2005]): evolu-


cion del conocido entorno DADS (Dynamic Analysis and Design Sys-
tem), es muy similar a ADAMS en cuanto a la capacidad de simulacion
ya que incluye posibilidad para simular contactos, variables parametri-
cas, flexibilidad mediante referencia flotante, etc. as como un numeroso
catalogo de modulos de pre y post-proceso para aplicaciones especficas
(vehculos terrestres y aeronauticos, motores, etc.).

4.1.2. Codigos MEF


En esta seccion se han agrupado aquellos programas cuya finalidad prin-
cipal es la aplicacion de discretizacion mediante elementos finitos para la
resolucion de las ecuaciones en derivadas parciales fruto de formulaciones
de la fsica. La caracterstica comun de los grandes conjuntos de programas
que existen actualmente es que nacieron como pequenas aplicaciones para la
resolucion de problemas concretos. Segun han ido creciendo, el numero de
problemas que eran capaces de resolver se ha ido ampliando hasta conver-
tirse en herramientas flexibles y realmente capaces de abordar problemas de
multifsica.
Aun cuando el numero de programas de este tipo es mucho mayor que el
de los codigos multicuerpo, tambien las diferencias entre ellos son menores.
Por tanto, solo se citan algunos de los mas usados a modo de ejemplo en
cuanto a sus posibilidades de simulacion.

ANSYS (ANSYS [2005]): Se trata de una suite de simulacion en el


campo de la multifsica, que permite el estudio de fenomenos mecani-
cos, termicos, electromagneticos, etc. Tambien admite la simulacion de
problemas acoplados, siendo la ultima version la primera que permite
el estudio acoplado fludo-estructura mediante mallas ALE (arbitrary
lagrangian eulerian).
Con respecto a la capacidad de simulacion multicuerpo, es posible ge-
nerar modelos de solidos rgidos y flexibles, aunque no dispone de las
herramientas de ayuda al modelado de sistemas concretos, toma de
datos, optimizacion de parametros o enlaces con sistemas de control
que s que ofrecen los codigos multicuerpo. No obstante, parece que se
intenta mejorar la capacidad de simulacion multicuerpo ya que, en la
ultima version, se ha modificado la formulacion de solidos rgidos y se
ha pasado de imponer la rigidez mediante multiplicadores de Lagrange
a realizar una eliminacion de parametros que, sin duda, aumentara la
velocidad de simulacion en sistemas de varios cuerpos.
Captulo 4. Entornos de desarrollo. Estado del arte 67

Programas similares a este son Abaqus (Abaqus [2005]), Nastran/Patran


ahora integrados en MSC.SimOffice (SimOffice [2005]), Master
Fem (anteriormente I-DEAS, NX Master Fem [2005]), etc. Hasta
118 referencias comerciales se pueden encontrar en IFER [2005].

LS-Dyna (LS-Dyna [2005]): heredero de los antiguos Dyna2D y Dy-


na3D, es el mejor exponente de los programas especializados en si-
mulacion de fenomenos altamente no lineales, simulados a traves de
analisis explcitos. Al igual que los mencionados anteriormente, ha ido
perdiendo su caracter especializado y se ha convertido en un codigo de
uso general, permitiendo ahora numerosos analisis que incluyen desde
solidos rgidos a metodos libres de malla (meshfree methods).

Samcef Mecano (Samcef Mecano [2005]): forma parte de un con-


junto de herramientas de simulacion mediante MEF, donde se destaca
una herramienta de simulacion multicuerpo (Mecano Motion) que, des-
de el punto de vista de interfaz, se parece mas por su funcionalidad a los
codigos del grupo anterior. Sin embargo, al estar basada en un codigo
MEF, las simulaciones de elementos flexibles emplean realmente una
formulacion no lineal y no aproximaciones lineales modales o a traves
de referencias flotantes.

4.1.3. Entornos matematicos


Los programas que se han englobado en esta categora tienen una carac-
terstica comun: se centran en ofrecer al usuario asistencia en la resolucion de
ecuaciones matematicas. De hecho, era precisamente esta su unica funcion
cuando se comenzaron a comercializar. Destacan su gran flexibilidad para
resolver numerosos tipos de problemas pero tambien la necesidad de imple-
mentar en ellos las ecuaciones que rigen el fenomeno que se desea estudiar.
Debido a la flexibilidad que ofrecen, funcionan (casi) como un lenguaje
de programacion de nivel superior de hecho, algunos ya lo son (MatLab
[2005]) y gracias a esta caracterstica, su crecimiento se ha producido a
traves de modulos. Estos no son sino programas creados en el propio len-
guaje e implementan funcionalidades para agilizar el proceso de simulacion
mediante la generacion automatica de las ecuaciones.
Los paquetes mas empleados y conocidos son el citado anteriormente
MatLab, Macsyma (Macsyma [2005]), Mathematica (Mathemati-
ca [2005]), Maple (Maple [2005]) y LabVIEW (LabVIEW [2005]);
aunque sin duda el de mayor interes y que ha servido de ejemplo para este
trabajo es el entorno de desarrollo para la solucion de ecuaciones en derivadas
parciales Diffpack (Diffpack [2005]).
68 4.2. Herramientas de investigacion para la simulacion mecanica

4.2. Herramientas de investigacion para la si-


mulacion mecanica

Las necesidades de calculo y simulacion de la industria no coincide, como


es previsible, con las que tienen los centros de desarrollo de conocimiento tales
como universidades y centros de investigacion. Por ello, frente a las aplicacio-
nes comerciales, que tratan de cubrir las necesidades de la industria, se han
desarrollado numerosas aplicaciones con un enfoque distinto, que permiten
implementar las nuevas teoras y metodos que surgen de la investigacion y
conocimiento cientfico.
Las diferencias fundamentales entre las herramientas comerciales y las
de investigacion surgen ya desde que se comienza a planear el proyecto de
programacion. Y es que, mientras que las primeras suelen ser planeadas con
mayor detalle ya que son el objetivo principal del trabajo de la organi-
zacion que las desarrolla, las segundas suelen empezar a generarse como
herramienta secundaria en el marco de una investigacion. Por tanto, aunque
no es el caso de todas las aplicaciones de investigacion, al estar enfocadas a
la resolucion de problemas particulares, es difcil reciclarlas para su uso en
otro problema.
Hay una tendencia a cambiar la situacion descrita anteriormente que tiene
su origen en dos conceptos fundamentales, no solo para la simulacion mecani-
ca, sino para todo el campo cientfico e incluso tambien comercial. Se trata,
por un lado, de las tecnicas de programacion orientada a objetos (POO) y,
por otro, del desarrollo del llamado software libre. La POO es casi una fi-
losofa de programacion cuyo pilar fundamental es la division del codigo y
que permite simplificar la programacion y aumentar el reciclaje de codigo
existente, entre otras cosas. El software libre consiste en la publicacion (o
liberacion), no solo de los programas, sino del codigo realizado para permitir
su difusion, uso y modificacion a la comunidad.
La colaboracion en el desarrollo de herramientas esta permitiendo la ge-
neracion de aplicaciones cada vez mejor adaptadas al uso externo al pro-
gramador y que, a la vez, ayudan a la realizacion de otras investigaciones.
Estas aplicaciones muchas veces estan basadas en libreras de calculo, que
no son otra cosa que colecciones de clases, funciones y procedimientos que
implementan rutinas comunes en el campo al que se refieren.
A continuacion se enumeran algunas de las herramientas de investigacion
que estan en fase de desarrollo actualmente como ejemplo de otros muchos
proyectos de programacion que estan en marcha en el campo de la simulacion
mecanica (consultar McPhee [2005] para una referencia de algunos otros).
Tambien, en un apartado posterior, por su importancia para el desarrollo
de se han querido citar algunas de las libreras de calculo orientadas a la
simulacion de mecanismos.
Captulo 4. Entornos de desarrollo. Estado del arte 69

4.2.1. Aplicaciones de simulacion multicuerpo


En general, los programas plenamente funcionales suelen adolecer de una
gran dificultad en su uso, principalmente porque la entrada de datos se realiza
en modo texto y no existe homogeneidad entre la forma de cada aplicacion.
Por contra, una vez aprendida se consigue gran rapidez en la realizacion de
una simulacion y una salida de datos que, en funcion del programa, puede
tener formato exclusivamente numerico o se realiza a traves de alguna facili-
dad para el postproceso. Los siguientes programas se destacan principalmente
porque su desarrollo todava esta activo y, por tanto, incorporan algunos de
los ultimos avances en programacion y simulacion o los incorporaran en el
futuro.
MBSoft (Logiciel de simulation et danalyse de systemes mecaniques
articules, MBSoft [2005]): es un completo programa de simulacion de
sistemas de solidos rgidos, cuyo objetivo es la posibilidad de realizacion
de estudios cinematicos y dinamicos de sistemas mecanicos articulados
aunque permite numerosos tipos de uniones. Su punto fuerte es la gene-
racion de las ecuaciones que rigen el movimiento del sistema en formato
simbolico automaticamente. A partir de ellas, permite la realizacion de
simulaciones cinematicas, dinamicas (directas e inversas), de equilibrio,
modales y sensibilidad. Permite la medicion directa de las fuerzas, po-
siciones, velocidades y aceleraciones en cualquier punto. Gracias a la
posibilidad de definir subsistemas, se puede trabajar con bibliotecas
que agilizan la creacion de modelos de entidad superior.
MBDyn (Multibody Dynamics Software, MBDyn [2005]): Se trata de
un programa libre, distribuido bajo licencia publica general del proyec-
to GNU (GNU GPL [2005]). Probablemente, uno de los proyectos de
programacion libre mas completos ya que permite la simulacion de sis-
temas mecanicos multifsicos, teniendo en cuenta la mecanica no lineal
de solidos rgidos y flexibles con uniones, materiales inteligentes, redes
electricas, sistemas de control activo, redes hidraulicas y aerodinami-
cas de rotores y alas fijas. Ademas, al permitir enlaces dinamicos de
modulos creados por los usuarios, la librera de elementos disponibles
es cada vez mayor.

4.2.2. Libreras de calculo


Son colecciones de archivos que permiten ejecutar rutinas como cajas
negras, es decir, solo hay que saber los parametros de entrada y saber el tipo
de salida esperado y el la librera se encarga del resto. Para la simulacion
multicuerpo, las mas extendidas son las dos siguientes:
ABDULA (Articulated Body Dynamics Using Low-complexity Algo-
rithms, Abdula [1999]): es una librera escrita en C++ para la simu-
lacion de sistemas de solidos rgidos que puede hacerse funcionar como
70 4.3. Lenguajes de programacion

un programa independiente o como parte de un programa mayor. Sus


caractersticas mas interesantes son la capacidad de simular gran can-
tidad de contactos a la vez (hasta varias decenas de miles) mediante
la jerarqua de superficies de contacto y la posibilidad de emplear va-
rios esquemas de integracion, algoritmos de solucion de sistemas de
ecuaciones lineales y tecnicas de estabilizacion de la imposicion de las
restricciones de movimiento. Por contra, no tiene posibilidad de simu-
lar partculas o solidos deformables, contactos entre superficies comple-
jas ni fuerzas de rozamiento en el contacto. Parece que su desarrollo
esta parado desde 1999.

DynaMechs (Dynamics of Mechanisms, DynaMechs [2001]): De-


sarrollado desde 1991 para cubrir las necesidades de simular sistemas
mecanicos e hidrodinamicos en tiempo real. Esta implementado en C++
y permite la compilacion para varias plataformas, permite la simulacion
de sistemas definidos en serie, en arbol o con bucles cerrados. Ademas,
posee varios integradores temporales y es facilmente extensible gracias
a su esquema de clases. La ultima version (4.0pre1) data de Julio de
2001, por lo que se desconoce si su desarrollo sigue activo. Tambien hay
disponible una interfaz de usuario que facilita la generacion de modelos
y estudio de resultados (RobotBuilder [2003]).

4.3. Lenguajes de programacion

Desde que crearon los ordenadores, se han desarrollado muchos tipos de


lenguajes que permiten comunicar los procedimientos que se desea que se
ejecuten en la maquina. Desde que, en los anos 50 y 60, se viera la necesidad
de extender la programacion a profesionales y cientficos no necesariamen-
te especialistas en el codigo ensamblador que se usaba hasta entonces, han
aparecido los llamados lenguajes de programacion de medio y alto nivel.
Los distintos lenguajes se pueden clasificar en funcion del paradigma de
programacion en el que se basen, es decir, de la forma de representar y ma-
nipular el conocimiento. Los paradigmas mas habituales son el imperativo,
funcional y el orientados a objetos. A pesar de poder realizar una clasifi-
cacion segun el paradigma en que se basen, se van a comentar brevemente
los lenguajes mas habituales clasificados segun la programacion se realice de
manera estructurada u orientada a objetos. Tambien se ha credo conveniente
realizar un apartado para comentar algunos de los lenguajes especficamente
creados para la programacion cientfica, por la aplicacion directa al tema en
estudio.
Captulo 4. Entornos de desarrollo. Estado del arte 71

4.3.1. Lenguajes de programacion estructurada


Suelen denominarse tambien lenguajes sin GOTO, aunque permitan
este tipo de instruccion (se suele desaconsejar su uso), ya que su programa-
cion se basa solo en un bloque secuencial de instrucciones, una instruccion
condicional (IF-THEN-ELSE) y un bucle condicional (WHILE-DO).
Los principales lenguajes empleados en programacion cientfica son los
siguientes:

C : Creado en 1969 por Ken Thompson y Dennis M. Ritchie, siendo un len-


guaje destinado a la programacion de sistemas operativos como UNIX
y sus variantes. Estandarizado en 1986 a traves del ANSI C, permite la
creacion de un codigo muy eficiente aunque muchas veces poco legible,
reutilizable y portable.

FORTRAN (FORMula TRANslation): utilizado principalmente en progra-


macion cientfica y numerica, ha pasado por varias versiones, siendo
FORTRAN 77 y FORTRAN 90 las que se siguen empleando en la
programacion. La ultima version incluye elementos de la programa-
cion orientada a objetos (POO, ver siguiente apartado). Destaca por
las numerosas libreras de manipulacion simbolica y calculo numerico
existentes, as como por su eficiencia en operaciones comunes en ma-
tematicas.

Pascal : creado por Niklaus Wirth, consiste en un lenguaje destinado a la


ensenanza principalmente ya que resulta muy legible. Su uso fue muy
extendido a lo largo de la decada de 1980 y principios de los 90, cuando
paso a convertirse en un lenguaje orientado a objetos (Turbo Pascal 5)
y sento las bases del lenguaje Delphi. Las primeras versiones de este
lenguaje fueron muy criticadas por producir un codigo poco eficiente.

4.3.2. Lenguajes de programacion orientada a objetos


Las caractersticas que debe cumplir para que un lenguaje se pueda cla-
sificar totalmente dentro de la programacion orientada a objetos (POO) son
las siguientes:

Abstraccion: cada objeto forma parte de una clase que es una entidad
abstracta en la que se definen las caractersticas de este tipo de obje-
tos, que quedan ocultos al resto de los componentes. As mismo, los
procesos, funciones o metodos pueden ser tambien abstrados.

Encapsulacion: Se llama tambien ocultacion de la informacion y es


necesaria para que los objetos no puedan modificar los datos de otros
objetos si no estan autorizados a emplear una interfaz especfica que lo
haga.
72 4.3. Lenguajes de programacion

Polimorfismo: los objetos pueden controlar o trabajar con objetos de


distinto tipo ya sea en tiempo de ejecucion, mediante asignaciones
dinamicas o en tiempo de compilacion, a traves de plantillas y sobre-
carga de operadores en el caso de C++.
Herencia: Permite la definicion de tipos de objetos que deriven de otros
previamente definidos, heredando parte de sus caractersticas y por tan-
to reciclando el codigo generado anteriormente. Normalmente, se agru-
pan los objetos en clases, creando esquemas asociativos de clases en las
que se puede incluso producir herencia multiple.
Los lenguajes de POO mas importantes en la programacion cientfica son
los siguientes:
C++ : Disenado a mediados de los ochenta por Bjarne Stroustrup, consiste
en una extension de C (ver seccion 4.3.1) para adaptarlo a la POO.
Junto con la librera estandar (STL [2005]) constituye un lenguaje
completo y potente ya que permite trabajar en bajo y medio nivel,
como C, pero tambien como lenguaje de alto nivel a traves de los au-
tomatismos de esta librera y de otras muchas mas especficas.
C# : derivado de C/C++ y desarrollado por Microsoft, esta estandarizado
desde 2001 y su caracterstica basica es la de permitir generar codigo
mas rapido que en C++. Aunque de momento solo resulta valido para
la plataforma .NET, existen proyectos para que este sea independiente
como el dotGNU Portable.NET o el Mono desarrollado por Ximian.
Java : desarrollado por SUN Micro., es muy similar a C++ pero tiene la ven-
taja de que el codigo compilado se puede ejecutar en cualquier maquina,
independientemente del sistema operativo en que trabaje. Esto lo hace
muy indicado para programacion de aplicaciones que trabajen en redes,
pero tiene el inconveniente de ser mas lento ya que para poderse ejecu-
tar en cualquier maquina, se ha de compilar en un lenguaje intermedio
llamado Bytecode y necesita un interprete en tiempo de ejecucion, que
es la llamada maquina virtual (JVM). Actualmente, compiladores li-
bres como el de GNU (GNU GCC [2005]) son capaces de compilar
Java en codigo maquina, logrando una notable mejora de la velocidad
de calculo.

4.3.3. Lenguajes de programacion cientfca


Se han clasificado como tales aquellos lenguajes cuyo diseno se ha en-
focado a la programacion de problemas cientficos y, por lo tanto, poseen
herramientas utiles para la modelizacion de los fenomenos fsicos, qumicos,
etc. Al contrario que los entornos matematicos (MatLab [2005], Macsyma
[2005], Mathematica [2005] o Maple [2005]) son capaces de generar pro-
gramas que, compilados en el propio lenguaje, se ejecutan de forma aislada.
Captulo 4. Entornos de desarrollo. Estado del arte 73

Sin embargo, comparten con estos entornos la facilidad para generar codigo
eficiente de forma rapida e intuitiva.
Aunque existe un cierto numero de lenguajes de este tipo, cada uno de
ellos se orientan a un campo concreto siendo el lenguaje Modelica (Mo-
delica [2005], descrito en Elmqvist et al. [1998]) el mas util para la
simulacion de sistemas de solidos, a parte de otros campos.
Modelica es un lenguaje orientado a objetos que permite el desarrollo de
aplicaciones orientadas a componentes que representan sistemas fsicos com-
plejos. Posee una librera estandar y numerosas libreras libres especializadas
en la simulacion de vehculos o sistemas.

4.4. Entornos integrados de desarrollo


Estos entornos de desarrollo (IDE) asisten al programador en las tareas
habituales de gestion del codigo y documentacion. Los mas completos in-
cluyen herramientas para la creacion de interfaz graficas (GUI), creacion de
documentacion interna y externa, implementacion de varias lenguas, etc.
Normalmente, los IDE estan asociados tanto a un lenguaje como a una
plataforma determinada aunque muchos de ellos no solo permiten programar
en varios lenguajes sino que, ademas, los permite combinar en un mismo
proyecto.
Los IDE mas extendidos son, en funcion de la plataforma:

KDevelop (KDevelop [2005]): bajo licencia GPL (GNU GPL [2005])


surgio en 1998 y esta disenado especficamente para el gestor de X-
window KDE. Soporta hasta doce lenguajes de programacion, aunque
Java y C/C++ son los que mas funcionalidades tienen implementadas.
Ademas de las tpicas funcionalidades de los IDE, tambien integra otras
aplicaciones como el debugger de GNU (GNU GDB [2005]), gene-
rador automatico de documentacion (Doxygen [2005]), herramien-
tas de compilado automatico de la FSF Free Software Foundation
(GNU Autoconf [2005], GNU Automake [2005] y GNU Lib-
tool [2005]), etc.

Anjuta DevStudio (DevStudio [2005]): menos desarrollado que el an-


terior ya que comenzo a desarrollarse a finales de 2003, es un entorno
completamente configurable disenado para el gestor de ventanas GNO-
ME. Esta orientado a su uso con el lenguaje C/C++ pero tambien
soporta otros lenguajes como Perl, Java, Pascal, etc., aunque, para
estos no dispone de un gestor de proyectos.

Existen otros muchos entornos y editores que asisten la programacion.


Una lista muy exhaustiva se pueden encontrar en Free Editors [2005].
Captulo 5

Especificaciones para un
entorno de desarrollo

En este captulo se realiza una exposicion de las necesidades de progra-


macion para aplicaciones de simulacion dinamica. A partir del estudio de las
herramientas comentadas en el anterior captulo, se pretende dar una vision
general de cuales son las opciones consideradas para cubrir las necesidades
propias de las aplicaciones de simulacion de mecanismos flexibles.
La estructura del captulo corresponde a la misma que se suele dar a las
aplicaciones de simulacion, en las que estan separadas las funciones corres-
pondientes a la entrada de datos, el calculo de las variables principales y la
salida de resultados. Ademas, en correspondencia con lo visto en el captulo
anterior, se escogen finalmente las herramientas de programacion que se creen
mas adecuadas para crear no solo el entorno de programacion sino tambien
para que las aplicaciones que deriven de el que compartan el mayor numero
de funcionalidades.

5.1. Definicion del problema: Preproceso


Las aplicaciones de simulacion no comerciales suelen requerir para definir
la simulacion un fichero de texto en un formato especfico, definido por el
programador de la aplicacion, que luego se ejecuta en modo batch (lote de
instrucciones). Desde un punto de vista de facilidad de uso y de las posibi-
lidades de simulacion que ofrece, este tipo de entrada y ejecucion puede no
ser muy recomendable y solo se justifica a traves de un principio economico
de centrar todos los esfuerzos de programacion en el modulo de calculo. El
caso descrito es el tpico de las herramientas que han sido creadas para la
investigacion ya que normalmente se usan por el mismo equipo que las ha
programado.
La entrada de datos, ademas de mantener la agilidad del modo texto,
debe ser posible a traves de funciones de definicion en un entorno amigable.
Teniendo en cuenta que se emplean discretizaciones de elementos finitos,

75
76 5.1. Definicion del problema: Preproceso

tambien es util anadir herramientas de mallado automatico para generar la


discretizacion en cuerpos de geometra compleja.

5.1.1. Lenguaje de definicion del problema


Si se quiere plantear un proyecto de programacion de una aplicacion de
uso general o, por lo menos, no tan restringido como el caso comentado,
sera deseable que la entrada de datos tuviera un formato estandar. Si a
esta entrada estandar se le anadiera una interfaz grafica, la flexibilidad sera
maxima.
En este trabajo se propone un esquema de preproceso para el entorno de
simulacion que permita al programador adoptar un tipo de entrada con for-
mato prefijado para su aplicacion. Este formato tendra que ser comun para
todas las aplicaciones generadas dentro del entorno pero no sera obligatorio
emplearlo para acceder a otras funcionalidades del entorno. Ademas, sera
util construir una interfaz grafica que facilitara la definicion de los paramtros
que definen la simulacion con la que ademas se podra implementar un fun-
cionamiento interactivo.
Hay que resaltar que, gracias al caracter modular que se quiere dar al
entorno, se facilita la generacion de aplicaciones con distintos niveles de com-
plejidad. En lo que se refiere a la entrada de datos, esta puede ser totalmente
independiente del entorno lo que permite generar aplicaciones sencillas y
aprovechar la entrada estandar del entorno a la hora de generar aplicaciones
mas complejas o para las que se desee una difusion mas alla del grupo de
programacion.
En cualquier caso, la entrada habra de estar abierta a las futuras nece-
sidades de los programadores, lo que plantea el problema de gestionar las
peticiones y la implementacion de las mismas. Una solucion sencilla y que
coincide con la filosofa del software libre es el poner el codigo fuente a dispo-
sicion de la comunidad para que cada equipo de programacion pueda anadir
las funcionalidades que requiera. Las modificaciones que realicen estos equi-
pos deben llegar a quien este encargado de la programacion del entorno para
decidir si se incluyen en la entrada estandar o no y, en caso negativo, ad-
vertir del porque a quien realizo la modificacion para, por ejemplo, evitar
duplicidad en los formatos.
Dentro de las multiples posibilidades que existen a la hora de elegir un len-
guaje para los datos de entrada, los mas adecuados para simulacion dinamica
(consultar Gonzalez Castro [2005]) son el definido por la norma ISO
10303 (estandar para la reproduccion e intecambio de datos de producto,
STEP [2005]) y el lenguaje extensible de marcado, desarrollado por la W3C
(consorcio de la www, XML [2005]).
Los lenguajes STEP y XML tienen su ventaja en la flexibilidad que ofre-
cen ya que realmente son metalenguajes, esto es, necesitan que se hayan
definido previamente las reglas esquematicas que se permiten en su uso. Es-
tas reglas, junto al XML, definen los vocablos con los que se pueden definir
Captulo 5. Especificaciones para un entorno de desarrollo 77

los modelos. Para el lenguaje XML existen varios lenguajes para la definicion
de reglas esquematicas, siendo el mas importante el XML Schema. En STEP,
el lenguaje formal para definir dichas reglas es el EXPRESS, con variantes
de representacion en texto y en modo grafico.
Mientras que el lenguaje XML representa un estandar que no esta asocia-
do a ninguna especialidad informatica, el STEP se identifica unvocamente
con las aplicaciones CAD/CAM/CAE/PDM. Sin embargo, iniciativas co-
mo el MechXML (Vidal y Garca de Jalon [2005]) o del MbsML
(Gonzalez Castro [2005]) representan un ejemplo de la capacidad y
flexibilidad del XML.
En cuanto a la disponibilidad de herramientas para la generacion de codi-
go, mientras que para el XML existen multitud de herramientas de codigo
abierto, las pocas aplicaciones que ayudan en la generacion de codigo STEP
junto a su elevado precio lo hacen una opcion poco recomendable.
Finalmente, en el caso de XML, si se emplea para definir las reglas el len-
guaje XML Schema se consigue que tanto los archivos de definicion de reglas
como los archivos de datos tengan una estructura similar, lo que permite el
uso de los mismos procedimientos para la generacion de codigo del esquema
de reglas y para los archivos de datos.
Por todo esto, aunque no se defina especficamente el formato de entrada,
se puede ya recomendar que este se base en el metalenguaje XML, con las
reglas programadas en XML Schema.

5.1.2. Herramientas visuales de mallado


Cuando se realizan simulaciones reales, la geometra de los cuerpos nor-
malmente es compleja, entendiendo esta como una combinacion de muchos
cuerpos primitivos (esferas, paraleleppedos, conos, etc.) o por generacion
a partir de superficies. Ademas, estas geometras simulan el detalle de los
cuerpos reales modificando la geometra bruta, por ejemplo, suavizando las
aristas mediante redondeo (radio de acuerdo).
Al trabajar con solidos de geometra compleja, la discretizacion de ele-
mentos finitos no es evidente y es raro que se pueda definir manualmente.
Si a este factor se suma el hecho de que el numero de elementos con el que
se suele trabajar es muy elevado, se hace completamente imprescindible el
empleo de alguna automatizacion en la tarea de mallado.
Debido a su importancia, la creacion de herramientas de mallado au-
tomatico ha proliferado hasta el punto que resulta complicado realizar una
evaluacion de las mismas. Una completa recopilacion donde se pueden en-
contrar hasta 93 herramientas de codigo abierto y 64 comerciales se puede
consultar en Schneiders [2005].
Existe una herramienta creada por el CIMNE (GID [2005]) que dispone
de gran difusion debido a la facilidad de uso y de adaptacion a distintas apli-
caciones de calculo. GID es un pre/postprocesador orientado a la simulacion
mediante el metodo de elementos finitos con un comodo metodo de mallado
78 5.2. Resolucion del problema: Solucion

automatico. Ademas de ser completamente configurable, es posible generar


los modelos y acceder a los resultados interactivamente mediante ventanas y
con vistas tridimensionales. Pese a no ser de codigo abierto, puede ser una
herramienta a tener en cuenta a la hora de plantear un preprocesador para
el entorno.
Una de las mas destacadas herramientas de codigo libre (licencia GPL)
es Gmsh, que es un generador de malla con funcionalidades tipo CAD y que
ademas incluye un postprocesador con multiples tipos de visualizaciones y
facilidad para ser ampliado (Gmsh [2005]).

5.2. Resolucion del problema: Solucion


Los modulos de calculo o procesadores son realmente la base de las apli-
caciones y, en el caso de las herramientas de investigacion, estas carecen de
funcionalidades accesorias y suelen constar unicamente del modulo de calcu-
lo, por lo menos hasta un cierto grado de complejidad.
Las necesidades comunes de cualquier aplicacion de simulacion dinamica
tienen dos orgenes distintos, el calculo matematico (numerico) y el almace-
namiento. En los apartados siguientes se enumeran los requisitos funcionales
que debera tener un entorno flexible que cubra las necesidades de programa-
cion usuales, clasificandolas en funcion de su origen. Tambien se especifica la
solucion que se preve para el entorno que se proyecta.

5.2.1. Caractersticas matematicas


Para solucionar los problemas considerados de simulacion de sistemas de
solidos rgidos y flexibles, es necesario emplear un numero amplio de tecni-
cas, tales como multicuerpo o discretizaciones por elementos finitos. La im-
plementacion de dichas tecnicas implica el trabajo con tecnicas matematicas
y numericas que, esencialmente, se basan en el uso de matrices.
Las necesidades matematicas se pueden dividir en los siguientes grupos:

Operaciones de algebra de matrices: representan desde operaciones sen-


cillas de suma, resta o multiplicacion, hasta operaciones especializadas
como inversion, determinante, traza.
Sobre estas operaciones se asientan todos los metodos matematicos
que son necesarios para las simulaciones que se contemplan, desde la
resolucion de ecuaciones hasta las transformaciones geometricas.

Resolucion de sistemas de ecuaciones lineales: se basan en el algebra


de matrices y corresponden a procedimientos especficos para el calculo
de las incognitas de un problema matricial estandar. Como se estudion
en el captulo 3, existe un numero amplio de maneras de abordar el
problema.
Captulo 5. Especificaciones para un entorno de desarrollo 79

Calculo de autovalores y autovectores: son problemas de calculo del


problema Au = u, donde u es el vector propio o autovector de A y
es el autovalor asociado a u. Esta transformacion aparece frecuen-
temente en problemas de simulacion dinamica, dado que implica una
transformacion en la que se dan una serie de relaciones geometricas.

Resolucion de sistemas de ecuaciones no lineales: tambien tratados en


el captulo 3, corresponden tradicionalmente a tecnicas de linealizacion
y resolucion de sistemas lineales que se aplican iterativamente hasta la
convergencia de la solucion.

Resolucion de ODEs y DAEs: para resolver las ecuaciones de la dinami-


ca, formadas por la aplicacion de simulacion, es necesario integrar a
lo largo del tiempo dichas ecuaciones para lo que se emplean multi-
ples procedimientos explcitos o implcitos. Estos ultimos recurren a los
metodos de resolucion de sistemas no lineales para cada paso.

Para proveer soluciones a estas necesidades existen numerosas libreras


de calculo que resuelven de distintas formas cada uno de los problemas enu-
merados. Una gran recopilacion se puede encontrar en Dongarra [2005],
en donde se ha realizado la clasificacion habitual en los siguientes grupos:

Rutinas de soporte: ATLAS, BLAS, FLAME, LINALG, MTL, NEW-


MAT, NIST S-BLAS, PSBLAS, SparseLib++, uBLAS.

Metodos directos de solucion con almacenamiento denso: LAPACK,


LAPACK95, NAPACK, PLAPACK, PRISM, ScaLAPACK.

Metodos directos de solucion con almacenamiento comprimido: DSC-


PACK, HSL, MFACT, MUMPS, PSPASES, SPARSE, SPOOLES, Su-
perLU, TAUCS, UMFPACK, Y 12M.

Precondicionadores: BPKIT, PARPRE, SPAI.

Metodos iterativos de solucion con almacenamiento comprimido: BI-


LUM, BlockSolve95, CERFACS, GMM++, HYPRE, IML++, ITL,
ITPACK, LASPack, LSQR, pARMS, PETSc, PIM, P-SparsLIB, QMR-
PACK, SLAP, SPLIB, SYMMLQ, Trilinos, Template.

Metodos de calculo de autovalores/autovectores con almacenamiento


comprimido: LZPACK, LASO, PARPACK, PLANSO, SLEPc, SPAM,
TRLAN.

La gran variedad existente de metodos se justifica en general al tener


cada uno ventajas frente a los demas, de forma que resulta difcil cual sera el
que se adapte mejor al problema que se desee abordar.
Se ha de intentar tener a disposicion varios metodos de resolucion para que
se pueda comparar el rendimiento de cada uno en cada caso y tambien para
80 5.2. Resolucion del problema: Solucion

poder elegir el deseado en cada momento. Para que esta funcionalidad sea
comoda de usar, a la vez que util, se ha de poder usar cada librera de metodos
mediante la ejecucion del mismo codigo. Este problema se abordara en el
siguiente captulo.

5.2.2. Caractersticas informaticas


Una vez especificadas las necesidades matematicas del entorno, es hora
de definir cuales son las caractersticas informaticas que habra que tener en
cuenta para realizar la implementacion de las anteriores. Se han engloba-
do en esta seccion todas aquellas funcionalidades que tienen su origen en
la implementacion de las aplicaciones, desde el propio lenguaje en que se
implementan hasta la forma de almacenar e intercambiar los datos.

Lenguaje de programacion
Para elegir el lenguaje en que es mejor realizar la programacion de aplica-
ciones que resuelvan problemas de simulacion dinamica se han de considerar
varios factores.
La eficiencia de computacion, en general se asocia a lenguajes de progra-
macion estructurada, como C o FORTRAN. Por otro lado, los lenguajes de
programacion orientada a objetos (POO) ofrecen otras ventajas que proceden
de su capacidad de de concebir, analizar, modelar, disenar e implementar los
conceptos de manera fiel a como se presentan en los razonamientos cientficos.
De esta forma, este tipo de lenguajes permiten una implementacion intuitiva
y rapida, produciendo codigo facil de complementar y de mantener.
Sin querer entrar en mas detalles acerca de las diferencias entre unos y
otros, se ha elegido el lenguaje C++ como el mejor para la implementacion
del codigo del entorno ya que tiene todas las ventajas de la POO pero, a la
vez, permite la compilacion de codigo C de bajo nivel para aquellas rutinas
que requieran una especial eficiencia o, simplemente, para poder emplear
naturalmente las libreras generadas en lenguajes tanto C++ como C.
Se quiere hacer notar que la importancia de la eficiencia numerica no
resulta prioritaria en el caso planteado ya que se prefiere un entorno enfocado
a la flexibilidad de programacion. A pesar de esto, no se quiere dejar de
lado esta cualidad, considerandola deseable aunque no imprescindible en una
primera fase de desarrollo.

Almacenamiento numerico
La manera en que las matrices son almacenadas en la memoria del orde-
nador define dos principales metodos: almacenamiento denso y comprimido.
El almacenamiento denso guarda todos y cada uno de los elementos de la
matriz. Resulta util para matrices que contienen pocos ceros o para aquellas
que no tienen una dimension elevada.
Captulo 5. Especificaciones para un entorno de desarrollo 81

Cuando el tamano de la matriz aumenta y ademas el numero de ceros en


la matriz es considerable resulta muy eficiente realizar un almacenamiento
comprimido cuyo fin es el de reducir la memoria ocupada por los elementos
de la matriz, aun a costa de un ligero aumento del numero de operaciones
necesarias para escribir o leer elementos de la misma. Las caractersticas de
la matriz influyen en la efectividad de este tipo de almacenamientos, as si
la matriz es simetrica y tiene un ancho de banda reducido, las ventajas de la
compresion aumentan. Existen varios metodos de almacenamiento compri-
mido, como la compresion por columnas (CSC) o por filas (CSR) el almace-
namiento de bandas enteras. En funcion de las caractersticas esperadas de
la matriz es preferible uno u otro.
Ademas, hay que tener en cuenta que los vectores pueden considerarse
como matrices de una columna o como estructuras distintas y, asmismo,
tambien se les puede aplicar o no compresion. Esto multiplica las opciones
en la concepcion de una aplicacion para la que es necesario elegir de antemano
el tipo de matrices y vectores a emplear.
Las libreras mencionadas para los metodos matematicos los implementan
para uno o varios tipos de matrices, ya sean densas o comprimidas. Por las
mismas razones que aparecan a la hora de seleccionar una librera de metodos
de solucion, no es posible elegir un formato de almacenamiento que se adapte
de manera optima a cualquier aplicacion. Ni siquiera sera optimo para varias
simulaciones realizadas por la misma aplicacion.
Por lo tanto, resultara muy util el disponer de una forma de emplear
varios tipos de matrices para implementar una aplicacion e incluso poder
cambiar el tipo de matriz empleado entre varias ejecuciones de un mismo
codigo para evaluar las diferencias.

Parsers
La funcionalidad del lenguaje propuesto para el preproceso en el entorno,
XML, depende de la capacidad que se tenga para gestionar los archivos de
datos. Los programas que se emplean para gestionar estos archivos se denomi-
nan parsers. Un parser, tambien llamado procesador o analizador sintactico,
lee el documento XML y verifica que es XML bien formado, algunos tambien
comprueban que el codigo XML sea valido.
En XML hay dos modelos de parsers: DOM (Document Object Modeler ) y
SAX (Simple API for XML). El primero es un modelo de objetos estructurado
a modo de arbol de relaciones que permite un acceso aleatorio a los objetos y
el segundo simplemente recorre secuencialmente el archivo XML, generando
eventos cada vez que se abre o cierra un elemento de XML. As, mientras
SAX es mas rapido que DOM, tambien es mas complejo de usar y requiere
una mayor cantidad de codigo para ejecutarse.
Debido a la relacion entre los objetos fsicos que componen un sistema
mecanico, resulta mas recomendable emplear un parser basado en DOM. Un
parser muy difundido de este tipo que maneja codigo C++ es el creado por
82 5.3. Analisis de resultados: Postproceso

la fundacion Apache (Xerces-C++ [2005]).

5.3. Analisis de resultados: Postproceso


No hay duda de que, por muy bueno que sea el calculo de la simulacion,
es el analisis de los resultados lo que permite nuestra interpretacion de esta
simulacion.
Los requerimientos usuales de postprocesado son los siguienes:

Calculo de variables auxiliares: A partir de las variables basicas del


problema, que son los parametros habituales de posicion, velocidad,
aceleracion y a veces tambien presion y temperatura, se han de poder
calcular otros valores utiles como el trabajo y energas, proyecciones,
estimaciones del error cometido en el calculo, etc. Ademas, cuando
se trata con cuerpos flexibles, es necesario y para nada trivial el
calculo y alisado de tensiones y otras medidas internas del solido.

Representacion grafica de variables: ya sea frente al tiempo o frente


a otras variables e incluso incluyendolas en expresiones algebraicas, la
representacion grafica resulta imprescindible para el analisis.

Animacion: No solo por su caracter atractivo, la animacion del movi-


miento del modelo en el espacio constituye una herramienta tambien
muy util de estudio de su comportamiento y posible mejora. Si ademas
se incluyen en ella la representacion de fuerzas a traves de vectores, ten-
siones o deformaciones a traves de isolneas o superficies isocromaticas
y otras funcionalidades, la animacion supone la mejor forma de analizar
un gran numero de variables de una sola vez.

Para lograr todos estos requisitos se puede trabajar de tres formas dis-
tintas.
Una primera consiste en buscar y emplear la aplicacion externa que mejor
se adapte a cada requisito. Por ejemplo, para el trabajo de representacion
grafica se podra plantear el uso de Gnuplot que, a pesar de su nombre, no
forma parte de la FSF ni del proyecto GNU (ver Gnuplot [2005]) y para
la animacion, herramientas tambien libres como Geomview, que es una apli-
cacion de animacion interactiva con posibilidad de guardar las animaciones
e imagenes generadas (Geomview [2005]).
Una segunda opcion, consistira en buscar una aplicacion que resolviera
todas las necesidades de una vez. A pesar de no ser de libre distribucion
GiD comentada en el apartado de preproceso cumplira, en principio,
con estas necesidades. Al estar principalmente enfocada al analisis mediante
elementos finitos, faltara comprobar que su capacidad para la simulacion
multicuerpo satisface las necesidades. Por otro lado se puede plantear el uso
de la herramienta Gmsh, tambien comentada en la seccion de mallado. Frente
Captulo 5. Especificaciones para un entorno de desarrollo 83

a GiD, tiene la gran ventaja de ser libre. Sin embargo, al estar enfocada a
un entorno academico, sus prestaciones podran ser insuficientes en algunos
estudios.
Y, por ultimo, una opcion nada desdenable corresponde a la creacion
de una aplicacion de postproceso mediante la integracion de herramientas
y libreras de libre distribucion como las comentadas en la primera opcion
considerada. En este caso se aprovechara el trabajo realizado por grupos de
desarrollo pero se realizara un diseno expreso de la interfaz. Las libreras
mas importantes para la gestion grafica necesaria para una aplicacion de
postproceso son OpenGL (OpenGL [2005]) y The Visualization Toolkit
(VTK [2005]), mientras que para la integracion de las herramientas en la
aplicacion se pueden contemplar las libreras Qt (Qt [2005]), principalmente
por su gran portabilidad, o las GTK+ (GIMP Toolkit, GTK+ [2005]) que
tambien es multiplataforma aunque con mas limitaciones.
No se contempla la posibilidad de realizar una aplicacion completa de
postproceso partiendo de cero por el gran trabajo que conlleva. Aunque sera
practicamente obligatorio para la realizacion comercial, la filosofa adoptada
de codigo abierto permite el adaptar los codigos existentes y modificarlos
en caso de que sea necesario, lo que se considera mas que suficiente para
disponer de un entorno de postproceso que cumpla con las especificaciones.
Captulo 6

Diseno e implementacion del


entorno

6.1. Estructura del entorno


Primando la flexibilidad, se busca generar un conjunto de herramientas
homogeneas que asistan al programador en la generacion de aplicaciones de
simulacion de mecanismos. Para ello es necesario que no se imponga una
determinada forma de realizar los procedimientos sino que se ofrezca un aba-
nico de soluciones para que cada cual escoja la que mejor se adapte a sus
necesidades.
La decision tomada implica un diseno modular, por lo que el entorno
debera estar formado por distintos modulos que funcionen como cajas ne-
gras para que el programador solo se preocupe por mandar la informacion
requerida y preparse para recibir el resultado esperado.
Un primer nivel estructural se define mediante la clasificacion realizada en
el captulo anterior. Los tres niveles funcionales del entorno se corresponden
con la estructura normal de una aplicacion completa de simulacion:

Preprocesador - Calculo de solucion - Postprocesador

En lo que sigue, se ha desarrollado el diseno del modulo de calculo de


solucion ya que, una vez este implementado, permitira el desarrollo de apli-
caciones sencillas mediante cuya programacion se podran analizar todas las
cualidades necesarias del pre y postprocesador. Hasta ese momento y tambien
por economa, se ha decidido postponer las decisiones basicas que implican
el diseno de ambos modulos dejandolos en la especificacion basica dada en el
captulo anterior.
As pues, el captulo se centra en el diseno estructural del modulo de
calculo. Aunque se halla llamado con ese nombre, se quiere destacar que no
es propiamente un modulo sino una coleccion de herramientas que realizan
funciones que habitualmente estan en ese modulo.

85
86 6.1. Estructura del entorno

Entorno de desarrollo

Preprocesador

Herramienta de modelado

Definiciones XML Schema


Archivo XML

Modulo de calculo

Parser
LMX
Metodos matriciales
Solvers lineales Aplicacion
de
Solvers no lineales Simulacion

Sistemas diferenciales
Formato de salida

Postprocesador
Datos simulacion
Calculos auxiliares

Generador de graficas

Animaciones

Figura 6.1: Esquema propuesto para el entorno


Captulo 6. Diseno e implementacion del entorno 87

El modulo de calculo se conformara a partir de componentes con una


cierta relacion entre s, de tal forma que cada componente responde a un
tipo de necesidad de las enumeradas en el captulo de especificaciones.
En la figura 6.1 se muestra el esquema propuesto para el diseno del entorno
y su relacion con las aplicaciones externas y sus archivos de datos. Para la
programacion de la aplicacion externa se habra de definir las comunicaciones
entre esta y el modulo de calculo, no siendo obligatorio que la misma se
comunique con el pre o postprocesador. Sin embargo, se deja la posibilidad
de redefinir los elementos de las definiciones del archivo de entrada (Schema
XML) de la manera que se comento en el captulo de especificaciones.

6.1.1. Estructura del modulo de solucion


Segun las especificaciones, el modulo de solucion del entorno debera
poder tratar con varios tipos de almacenamientos de matrices y vectores,
ademas de poder operar con los mismos de las maneras expuestas en el
captulo anterior.
Se van a definir los componentes del entorno que se han de implementar
para cumplir con las especificaciones en funcion del tipo de operaciones que se
realizan. Para cada componente se aborda el diseno de cada uno as como, en
caso necesario, las relaciones que impiden que se repita una misma funcion.
Debido a la gran cantidad de metodos matriciales que se necesitan para
implementar los metodos de solucion lineales, se ha decidido implementarlos
conjuntamente en el mismo componente. Una justificacion mas detallada se
puede encontrar en el siguiente apartado.
Por otra parte, tanto los metodos de solucion (solvers) no lineales co-
mo los sistemas diferenciales, que incluyen los integradores temporales, son
componentes independientes pero cuyas funciones haran uso de los metodos
generales y lineales.

6.2. Librera matricial


La librera matricial disenada e implementada, de nombre LMX (Linked
MatriX methods), responde a las necesidades basicas de manipulacion matri-
cial y resolucion de sistemas de ecuaciones. A pesar de la apariencia desde el
punto de vista del usuario de ser una librera normal, tiene una caractersti-
ca principal que la define. Esta es su capacidad para hacer de puente entre
cualquier librera existente y una unica forma de escribir el codigo para usar
las rutinas. En funcion del valor de una serie de parametros seleccionados, el
codigo ejecutara unas matrices y metodos definidos por una librera u otros.
Por tanto, se trata mas bien de una metalibrera, que utiliza los metodos
implementados en libreras externas simplificando el codigo y permitiendo
cambiar entre una y otra.
88 6.2. Librera matricial

El diseno de la librera se ha realizado teniendo en cuenta que se deban


alcanzar las siguientes prestaciones:

El codigo necesario para acceder a las funcionalidades de la librera


tena que ser lo mas natural e intuitivo posible.

Se deban poder emplear varios tipos de datos numericos, como los


enteros, reales, de doble precision, complejos, etc.

Deba permitir, para una aplicacion que empleara el codigo de la li-


brera, el cambio entre los tipos de matrices, vectores y metodos de
solucion sin realizar ninguna modificacion en el codigo.

El cambio entre tipos de matrices y de metodos se deba poder realizar


en tiempo de compilacion y tambien de ejecucion.

Los enlaces necesarios para que la metalibrera sea capaz de usar las
funcionalidades de otra librera distinta de las implementadas, ha de
requerir solamente un conocimiento mnimo de la estructura de LMX.

Empleando un lenguaje orientado a objetos como C++ es posible sinte-


tizar el problema en un conjunto de clases y funciones (miembro o amigas)
de cada una. La diferencia entre una funcion miembro y una amiga es que
la primera pertenece al objeto y, por tanto, tiene acceso a todos los elemen-
tos definidos del mismo de forma implcita, la funcion amiga es una funcion
externa para la cual la clase de la que es amiga define un cierto numero de
parametros a los que puede acceder.
El uso de clases patron, llamadas templates, permite poder crear un objeto
indicando el tipo de dato con el que trabajara (que a su vez tambien es una
clase).
Para que se pueda entender el trabajo realizado, se expondra a conti-
nuacion la informacion mnima de la estructura y funciones de la librera
y, posteriormente, se expondran algunos ejemplos de implementacion. No se
desea entrar en detalle acerca de la implementacion concreta en el lenguaje
elegido, aunque s que se emplearan los terminos habituales de la POO.
El diseno de la jerarqua de las clases se realiza identificando primero los
objetos que el usuario debera crear. Estos objetos junto con las funciones de
cada uno, se enumeran a continuacion para la librera generada.

6.2.1. Matrices: clase Matrix


Los objetos de tipo matriz se crean instanciando la clase Matrix. El tipo
de dato numerico se puede elegir a la hora de crear cada uno de los objetos1
Los datos guardados en cada objeto o atributos de la clase, son:
1
Por ejemplo, en sintaxis de C++, lmx::Matrix<double> mi matriz creara un objeto
de clase Matrix con reales de doble precision, de nombre mi matriz.
Captulo 6. Diseno e implementacion del entorno 89

lmx::Matrix< T >

lmx::Vector< T >

Figura 6.2: Esquema de herencia para la clase Matrix

mrows, almacena el numero de filas de la matriz.


ncols, almacena el numero de columnas de la matriz.
type matrix, apunta a una estructura que almacena el contenido de la
matriz. Esta estructura es un objeto separado, que pertenece a la clase
Data mat.
Las formas de crear un nuevo objeto de la clase matrix se implementan
a traves de los constructores que son un tipo especial de funcion miembro.
Los existentes para la clase Matrix son los siguientes:
Matrix() (constructor vaco): crea un objeto con los atributos por
defecto, en este caso filas y columnas iguales a cero y con una estructura
de datos vaca.
Matrix(filas, columnas): crea un objeto con el tamano especificado
y todos los elementos nulos.
Matrix("nombre archivo"): lee el archivo y guarda la matriz que con-
tenga en un nuevo objeto.
Matrix(identificador, dimension): crea una matriz especial, cua-
drada de dimension especificada. Matrices especiales posibles son la
identidad, aleatoria, etc. Cada una se asocia a un dgito identificador.
Matrix(otra matriz) (constructor copia): copia todos los atributos de
la matriz llamada otra matriz en un nuevo objeto.
Ademas de los constructores anteriores, al emplear tecnicas de almace-
namiento dinamico de memoria, es necesario el uso de una funcion llamada
destructor que destruye los objetos cuando es necesario, liberando la memoria
de todos sus atributos. Esta funcion toma la forma Matrix().
Las otras funciones miembro se pueden dividir en dos grupos. El primero
incluira a aquellas que redefinen los smbolos de operacion (sobrecarga de
operadores) y se definen por la palabra clave operator, y el segundo co-
rrespondera a funciones miembro clasicas. El conjunto de todas ellas es el
siguiente:
operator () (fila, columna): extrae el elemento dado por la posi-
cion de los parametros de entrada y devuelve una referencia al mismo.
90 6.2. Librera matricial

operator = (otra matriz): Copia los atributos de otra matriz en el


objeto. Los datos numericos del elemento otra matriz pueden o no ser
del mismo tipo que los del objeto para el que se aplica la funcion. En
caso de que sean distintos se aplica una conversion que puede implicar
perdida de precision e incluso de informacion.

operator += (otra matriz): Suma elemento a elemento los terminos


de las dos matrices y guarda el resultado de nuevo en la matriz sobre
la que se invoca la funcion.

operator -= (otra matriz): igual que el operador += pero restando


en vez de sumando.

data (): Devuelve una referencia a la estructura de datos de la matriz.


Responde a necesidades de programacion de los metodos de solucion
lineal.

clean (factor): Iguala a cero los elementos cuyo valor sea menor que
el definido por el parametro factor. Resulta util para eliminar los
errores de redondeo y truncacion antes de realizar un almacenamiento
comprimido.

resize (filas, columnas): redimensiona la matriz al tamano nuevo.


Si este es mayor que el anterior, los nuevos elementos seran nulos. Si es
menor, se pierden los elementos con ndices de posicion mayores a las
nuevas dimensiones.

Las funciones amigas a las que la clase matriz permite acceso a sus atri-
butos son las siguientes:

operator (stream de salida, nombre matriz): Sobrecarga el ope-


rador de stream que actua direccionando nombre matriz hacia stream de salida.

operator (archivo de salida, nombre matriz): Sobrecarga el ope-


rador de stream que actua direccionando nombre matriz hacia el archi-
vo en modo de escritura (llamado ofstream) con nombre stream de salida.

operator + (matriz A, matriz B): Suma ambas matrices y devuelve


el resultado como una nueva matriz. Al ser la suma elemento a elemen-
to, es posible que las matrices tengan distintas dimensiones.

operator - (matriz A, matriz B): Igual que el anterior pero restan-


do en vez de sumando. El orden de los operandos es siempre A - B.

operator * (matriz A, matriz B): Operacion de multiplicacion de


matrices, para la que estas matrices deben tener las dimensiones ade-
cuadas.
Captulo 6. Diseno e implementacion del entorno 91

operator * (factor, matriz A): Operacion de escalado. Multiplica


cada uno de los elementos de la matriz por el valor de factor.

rows (nombre matriz): Devuelve el numero de filas de la matriz nombre matriz.

columns (nombre matriz): Devuelve el numero de columnas de la ma-


triz nombre matriz.

read element (nombre matriz, fila, columna): Acceso seguro de


solo lectura. Devuelve una copia del elemento en la posicion especificada
por lo que no permite su modificacion.

traspose (nombre matriz): Trasposicion sin modificacion de la ma-


triz original. Devuelve la traspuesta de la matriz como una matriz nue-
va.

latex print (archivo de salida, nombre, matriz A, precision):


Salida en formato LATEX de la matriz matriz A con la precision dada
para cada elemento. El parametro nombre puede contener comandos de
LATEX.
Por ejemplo, si el valor de la variable nombre es \mathbf{\overline{B}},
la salida tendra el siguiente formato, una vez compilado:

A(0, 0) A(0, 1) A(0, m)
A(1, 0) A(1, 1) A(1, m)

B= .. .. . . ..
. . . .
A(n, 0) A(n, 1) A(n, m)

donde los elementos A(i, j) seran los valores numericos de los elementos
de la matriz A.

6.2.2. Vectores: clase Vector

lmx::Matrix< T >

lmx::Vector< T >

Figura 6.3: Esquema de herencia para la clase Vector

El uso de vectores mediante la definicion de matrices con numero de


filas o columnas igual a la unidad no es eficiente, ni desde el punto de vista
computacional, ni desde el de almacenamiento. Por ello es necesario definir
un nuevo tipo de objeto para el que los metodos estan optimizados al tener
en cuenta su caracterstica unidimensional.
92 6.2. Librera matricial

Sin embargo, gracias a la estructura dada a la clase Matrix, en la que la


estructura es un objeto externo a la que la esta apunta, es posible aprovechar
las posibilidades de herencia de la POO.
La clase Vector es una clase heredada de la clase Matrix para la que
se redefinen algunas de sus funciones pero cuya estructura de datos (a la
que apunta el atributo type matrix) es completamente distinta (para mas
detalles acerca de esta estructura, ver la descripcion de la clase Data mat en
la seccion 6.2.3).
Se han redefinido los siguientes constructores:

Vector() (constructor vaco): crea un objeto con los atributos por


defecto, en este caso numero filas igual a cero, una columna y estructura
de datos vaca.

Vector(filas): crea un objeto con las filas especificadas y todos los


elementos nulos.

Vector("nombre archivo"): lee el archivo y guarda el vector que con-


tenga en un nuevo objeto.

Vector(identificador, filas): crea un vector especial, con el nume-


ro de filas especificado. Vectores especiales posibles son el identidad y
aleatorio. Cada uno se asocia a un dgito identificador.

Vector(otro vector) (constructor copia): copia todos los atributos


del vector con nombre otro vector en un nuevo objeto.

Al igual que la matriz, se implementa un destructor especfico llamado


Vector().
Las funciones miembro redefinidas para la clase son las siguientes:

operator () (fila): extrae el elemento que se encuentra en la fila


dada y devuelve una referencia al mismo.

operator = (una matriz): Copia el atributo nrows numero de filas


de una matriz en el objeto vector y tambien copia la primera columna
de la matriz en la estructura del vector. Al igual que para la copia
de matrices y vectores por separado, los datos numericos del elemento
una matriz pueden o no ser del mismo tipo que los del objeto para el
que se aplica la funcion.

resize (filas): redimensiona el vector al tamano nuevo. Si este es


mayor que el anterior, los nuevos elementos seran nulos. Si es menor,
se pierden los elementos situados en las ultimas filas.

Por ultimo se describen las funciones amigas definidas por la clase:


Captulo 6. Diseno e implementacion del entorno 93

norm1 (nombre vector): calcula y devuelve el valor de la norma pri-


mera del vector, calculada mediante
nrows1
X
| ai |
i=0

donde ai son los elementos del vector.

norm2 (nombre vector): calcula y devuelve el valor de la norma se-


gunda del vector (norma eucldea), calculada mediante
nrows1
X
(ai )2
i=0

donde ai son los elementos del vector.

operator (stream de salida, nombre vector): Similar a la sobre-


carga del operador de stream para matrices pero con alguna ligera
diferencia de formato.

operator (archivo de salida, nombre vector): Similar a la so-


brecarga del operador de salida a archivos pero tambien con diferencias
de formato.

operator + (vector x, vector y): Suma ambos vectores y devuelve


el resultado como un nuevo vector. Al ser la suma elemento a elemento,
es posible que los vectores tengan distinta dimension.

operator - (vector x, vector y): Igual que el anterior pero restan-


do en vez de sumando. El orden de los operandos es siempre A - B.

operator * (vector x, vector y): Operacion de multiplicacion es-


calar de vectores, para la que estos vectores deben tener las misma
dimension.

operator * (matriz A, vector x): Operacion de multiplicacion de


matriz por vector, para la que la matriz y vector deben tener las di-
mensiones adecuadas. El resultado se guarda en un nuevo vector.

operator * (factor, vector x): Operacion de escalado. Multiplica


cada uno de los elementos del vector por el valor de factor. Al igual
que en el caso anterior, el resultado se guarda en un nuevo vector.

latex print (archivo de salida, nombre, vector x, precision):


Salida en formato LATEX del vector vector x con la precision dada pa-
ra cada elemento. El parametro nombre puede contener comandos de
LATEX. La diferencia con la funcion implementada para matrices es uni-
camente que los delimitadores se cambian de parentesis a llaves.
94 6.2. Librera matricial

Por ejemplo, si el valor de la variable nombre es \boldsymbol{\ddot{x}},


la salida tendra el siguiente formato, una vez compilado:


x(0)


x(1)
x = ..

.


x(n)

donde los elementos x(i) seran los valores numericos de los elementos
del vector x.

6.2.3. Estructuras de datos: clase Data mat


La clase Data mat es lo que se conoce como clase abstracta, es decir, que
no tiene implementadas sus funciones sino que solo estan declaradas y se
definen en las clases heredadas de esta.
La funcion que cumple este tipo de clases es la de servir de interfaz entre
cualquier objeto que pertenezca a una clase heredada de la virtual y una
variable de tipo puntero.
Desde el punto de vista de un usuario de la librera (o del entorno de
programacion) no es necesario ni siquiera conocer la existencia de estas clases
y funciones. Aun as y buscando la completud en el documento que expone
el trabajo de investigacion, se ha querido realizar una exposicion breve de su
implementacion.
Las funciones virtuales puras declaradas en Data mat se han de definir
en cualquier clase que herede de ella para poder instanciar esta (la clase
heredada). Estas funciones son las siguientes:
resize (filas, columnas): redimensiona la estructura al nuevo ta-
mano definido por los parametros.
extract (filas, columnas): devuelve una referencia al elemento que
ocupa la posicion dada por los parametros.
contents rows (): devuelve el numero de filas de la estructura.
contents columns (): devuelve el numero de columnas de la estruc-
tura.
equals (otra estructura): iguala elemento a elemento la estructura
del objeto a la de otra estructura. No se modifican las dimensiones
y por el momento es necesario que los tipos de estructuras sean los
mismos.
add (otra estructura): suma elemento a elemento la estructura del
objeto y la de otra estructura, guardando el resultado en el objeto.
Equivalente al operador aritmetico +=, es decir a la operacion: objeto
+= otra estructura.
Captulo 6. Diseno e implementacion del entorno 95

substract (otra estructura): igual que add pero restando. Equivale


a la operacion: objeto -= otra estructura.
multiply (estructura A, estructura B): multiplica matricialmen-
te ambas estructuras, que deben tener el tamano adecuado, y guarda el
resultado en el objeto. Orden de operacion: objeto = estructura A
estructura B.
multiply scalar (factor): Multiplica todos los elementos de la es-
tructura matricial por el factor y los guarda en la propia estructura.
Los datos antiguos se pierden.
trn (): Traspone los elementos del objeto y guarda el resultado en el
propio objeto. La estructura sin trasponer no se guarda.
clean below (factor): Iguala a cero todos los elementos con valor
menor que el especificado por el factor.
read data file (nombre archivo): Lee el archivo de datos en forma-
to estandar y guarda en el objeto estructura la matriz o vector definido
en ese archivo. Si es necesario se redimensiona el objeto para que su
estructura tenga la dimension adecuada.

lmx::Data_mat< T >

lmx::Type_gmm< T > lmx::Type_gmm_sparse< T > lmx::Type_gmmVector_sparse1< T > lmx::Type_hb< T > lmx::Type_stdVector< T >

Figura 6.4: Esquema de herencia para la clase Data mat

A continuacion se enumeran las clases heredadas de Data mat (figura 6.4)


junto con una breve descripcion del tipo de estructura que proporcionan.
Type gmm: Implementa una clase que permite crear estructuras de ma-
trices densas. Para ello se ha adaptado la clase gmm::dense matrix de
la librera GMM++ (Renard y Pommier [2005]).
Type stdVector: Permite crear estructuras de vectores densos. Se em-
plea la clase de uso general std::vector de la librera estandar STL
(Silicon Graphics [2005]) y las funciones definidas en la librera
GMM++.
Type gmm sparse2 : Esta clase permite crear estructuras de matrices
comprimidas de tipo CSC (compressed sparse column). Se usa la clase
gmm::csc matrix de la librera GMM++.
Type gmmVector sparse12 : Permite crear estructuras de vectores com-
primidos. Se usa la clase gmm::wsvector de la librera GMM++, que
es un vector sparse optimizado para escritura.
96 6.2. Librera matricial

Type hb2 : Tambien permite crear estructuras de matrices comprimi-


das de tipo CSC, equivalente al almacenamiento Harwell-Boeing. En
este caso se implementan todas las funciones sin apoyarse en ninguna
librera.

6.2.4. Sistemas lineales: clase Linear system


Para facilitar el trabajo de manipulacion y resolucion de sistemas lineales,
as como para crear herramientas que ayuden en el control de dichos proce-
dimientos, se ha credo util crear esta nueva clase que simplemente gestiona
un sistema estandar
Ax = b
Cabe destacar que el tipo de dato numerico del sistema lineal no tiene
porque coincidir con el de la matriz y el vector que definen el problema. As,
por ejemplo, se pueden tener sendos A y b con elementos de precision normal
(float) y trabajar con un sistema de precision doble (double) para, finalmente,
guardar la solucion en el formato original. De esta forma se pueden reducir
los errores de redondeo cuando el coste computacional no sea muy elevado.
Los atributos de dicha clase son, como cabe esperar, los correspondientes
a la matriz y vectores que forman el sistema.

A, es un puntero a una matriz.

x, es un vector.

b, es un puntero a un vector.

Por el momento, se han implementado las funciones mnimas para poder


asegurarse de que la estructura de la clase funciona correctamente. Son las
siguientes:

Linear system(matriz A, vector b) (constructor ): La unica forma


de crear un objeto Linear system es a partir de una matriz y un vector
existentes. Por supuesto, han de tener dimensiones compatibles (mismo
numero de filas).

Linear system() (destructor ): Realiza operaciones de gestion de la


memoria que ocupan los elementos del objeto que se ha de destruir.

solve yourself(): Funcion que aplica el metodo de solucion corres-


pondiente para resolver el sistema. Devuelve una referencia al vector
que contiene esa solucion, x.

solution(): Si se ha calculado la solucion del sistema, devuelve una


referencia al vector que la contiene, x.
2
Actualmente en desarrollo.
Captulo 6. Diseno e implementacion del entorno 97

6.2.5. Seleccion de tipo de estructura matricial y meto-


do de solucion
Hasta ahora se han expuesto las diferentes estructuras que es posible
emplear para trabajar con matrices, vectores y sistemas lineales. Se va a
explicar de que forma se puede cambiar la estructura de matrices y vectores
con la que se desea trabajar, as como el tipo de metodo de solucion de
sistemas lineales.

Seleccion de estructuras de matrices y vectores


El espacio de nombres (namespace) de esta librera ("lmx::") posee un
parametro de un tipo especial llamado static. Por motivos de acceso, este se
encuentra definido en el archivo donde se declara la clase Matrix.
El valor de este parametro, de tipo entero (int) y nombre matrix type,
define el tipo de matrices y vectores que se empleara en la ejecucion del
codigo. En funcion del valor que se asigne a este parametro las matrices y
vectores que se generen tendran los valores dados por la tabla 6.1.

Valor de Estructura Estructura


matrix type de matriz de vector
0 type gmm type stdVector
1 type gmm sparse type gmmVector sparse
Cuadro 6.1: Valores para el coeficiente matrix type

Se proponen dos formas de modificar este parametro, segun se prefiera a


la hora de generar el codigo correspondiente, ambas se realizan invocando a
la funcion select matrix type(nuevo tipo):

Seleccion en tiempo de compilacion, mediante el cambio de inicializa-


cion por defecto del parametro en el archivo "matrix.h". Tambien es
posible invocar la funcion select matrix type(nuevo tipo) desde el
codigo de la aplicacion que se este programando.

Seleccion en tiempo de ejecucion, se ha de invocar directa o indirecta-


mente la funcion select matrix type(nuevo tipo) desde la entrada
de datos de la aplicacion, para lo que se ha de preveer tambien el codigo
de la aplicacion.

Seleccion de metodos de solucion de sistemas lineales


Mediante una forma equivalente a la anterior, se puede elegir entre va-
rios tipos de metodos de solucion o solvers lineales. Eligiendo distintos va-
lores para la variable solver type, lo cual se realiza mediante la funcion
select solver type(nuevo tipo).
98 6.2. Librera matricial

Hasta la fecha nada mas es posible emplear el metodo basado en la des-


composicion LU que facilita la librera GMM++, lo que corresponde a un
valor de solver type = 0.

6.2.6. Dependencia entre componentes de la librera


Los distintos componentes que forman la librera LMX, se agrupan en ar-
chivos. En los archivos de cabecera (con extension ".h") se declaran las clases,
variables y funciones mientras que en los archivos con extension ".cpp" (o
".cxx") es donde se define todo lo declarado en los archivos de cabecera.
Como excepcion, la definicion de las clases y funciones patron (template) es
necesario realizarla en los archivos de cabecera.
El diagrama de dependencias entre los archicos de cabecera de la librera
implementada se muestra en la figura 6.5. Los archivos con marco gris co-
rresponden a enlaces externos a la librera, mientras que el resto de archivos
se corresponden con las clases expuestas anteriormente excepto dos. Tanto
"lmx.h" como "linear solvers.h" son archivos de enlace entre las clases.
De hecho, el archivo de cabecera "lmx.h" es el archivo basico de la librera
y el unico que es necesario enlazar desde una aplicacion externa.

gmm.h

data_mat.h

iostream type_hb.h type_gmm.h cstdlib fstream

matrix.h type_stdvector.h

vector.h

linear_system.h

linear_solvers.h

lmx.h

Figura 6.5: Relaciones entre ficheros en la librera LMX


Captulo 6. Diseno e implementacion del entorno 99

6.3. Librera de metodos de solucion no linea-


les
Para resolver un sistema de ecuaciones no lineales expresado en forma no
lineal
R(q) = 0 (6.1)
se puede aplicar cualquiera de los metodos expuestos en el captulo 3.
En el entorno proyectado, se ha creado una librera de metodos de solu-
cion no lineal que bascula alrededor de una clase que representa el sistema no
lineal, Nl system. En principio, se ha decidido definir un espacio de nombres
especfico para esta librera, de prefijo "nls::". A pesar de ser una librera
aparte de LMX (la librera matricial descrita en el apartado anterior), necesi-
ta a esta para su funcionamiento ya que se utilizas las clases en ella definidas
para crear, manipular y resolver las matrices, vectores y sistemas lineales que
aparecen en la resolucion de los sistemas no lineales.
El diseno basico de la clase Nl system que se encuentra actualmente
implementado consta de las siguientes funciones miembro que realizan las
tareas basicas:

Nl system() (constructor vaco): crea un objeto inicializando algunos


parametros de gestion dinamica de memoria.

Nl system(vector q o) (constructor ): crea un objeto con el vector de


entrada como coordenadas iniciales de arranque del metodo de solucion.
Ademas de para tener un punto de arranque, este vector es necesario
para conocer la dimension del problema, a partir de la cual se iniciali-
zan el vector de almacenamiento del residuo en cada iteracion y, si es
necesario, la matriz jacobiana (tangente).

Nl_system() (destructor ): destruye el objeto realizando operaciones


de liberacion de memoria.

solve yourself(objeto*, max iteraciones): Funcion que resuelve


el sistema no lineal a traves de las funciones definidas en el objeto*
que deben tener el siguiente nombre y la siguiente funcion:

residue(vector q): Ha de devolver el valor del residuo R(q).


convergence(vector q): Ha de devolver un valor booleano ver-
dadero si se cumple el criterio de convergencia que se aplique a
partir de las coordenadas dadas y falso si no se cumple.
jacobian(vector q): (Solo para el metodo de Newton) Ha de de-
volver el valor de la matriz tangente o jacobiana del problema:
R
Dq (R(q)) = (6.2)
q
100 6.4. Librera de sistemas de ecuaciones diferenciales

6.3.1. Seleccion de metodo de solucion de ecuaciones


no lineales
Los metodos de resolucion implementados se escogen de manera muy
similar a como se seleccionan los metodos en la librera matricial. As, existe
un parametro de la biblioteca (nl solver type) que, en funcion del valor
que posea, se selecciona un metodo u otro a la hora de lanzar la funcion de
resolucion (solve yourself).
Este parametro se selecciona mediante una funcion tambien perteneciente
a la biblioteca llamada select nl solver type(tipo). Aunque de momen-
to solo se encuentra implementado el metodo de Newton, los valores de este
parametro indicados en la tabla 6.2 restan previstos para su proxima imple-
mentacion.

Valor de Metodo de solucion de


nl solver type ecuaciones no lineales
0 Metodo de Newton
1 Metodo de Newton modificado
2 Metodo de la secante DFP
3 Metodo de la secante BFGS
Cuadro 6.2: Valores para el parametro nl solver type

6.4. Librera de sistemas de ecuaciones dife-


renciales
Con el objetivo de aumentar la cantidad de problemas que se pueden
resolver con las herramientas que poseen las libreras anteriores, se ha desa-
rrollado esta nueva librera que permite definir y resolver mediante distintas
tecnicas numerosos tipos de problemas definidos a traves de un sistema de
ecuaciones diferenciales de tipo ODE o DAE.
La librera tiene tres tipos de componentes matematicos distintos:

Sistemas de ecuaciones diferenciales: definen la relacion entre la deri-


vada ordinaria de orden p y funciones del resto de derivadas (de orden
hasta p 1) y la variable independiente. Para cada tipo de sistema se
disena e implementa una clase distinta.

Tipos de problema: Se especifican desde problemas de valor inicial, para


los que se especifican las p1 condiciones iniciales para el instante t = t0
hasta problemas de contorno, para los que se conocen los valores de las
incognitas o de alguna de sus derivadas espaciales en todo el contorno.
Captulo 6. Diseno e implementacion del entorno 101

Integradores temporales: calculan el valor de las incognitas y sus deri-


vadas temporales hasta de orden p 1 a partir de la derivada de orden
p.

Tipos de problema
Init val problem , Bound val problem , . . .

Sistemas diferenciales Integradores temporales


Mec ode M q = Q(q, q) + Q(t) Integrator ab: Adams-Bashford
Std ode y = F(y, t) Integrator am: Adams-Moulton

y = F(y, t) Integrator abam:
Std dae
(y) = 0 Adams-Moulton-Adams-Bashford
... ...

Figura 6.6: Esquema de la librera de sistemas diferenciales

Una estructura muy simplificada de esta librera se muestra en la figura


6.6. Cada uno de los componentes matematicos se puede representar median-
te distintas clases de objetos. A su vez, cada una de estas clases tiene tanto
caractersticas propias como comunes al tipo de componente que representa.
As, se pueden destacar para cada una de los grupos de clases ciertas fun-
ciones que es necesario implementar en cada una para atender a peticiones
externas.
Todas las clases se encuentran definidas en un espacio de nombres comun
que corresponde al prefijo "dif::". Se van a describir a continuacion las
distintas funcionalidades de cada uno de los grupos de clases de esta librera,
distinguiendo entre las que son comunes y especficas de cada clase.

6.4.1. Tipos de problema


La categora de tipo de problema es la menos uniforme en cuanto al diseno
de las clases. Por ello, no existe un modelo que se establezca los requisitos
mnimos de la estructura de cada clase de objetos que se implementa en este
grupo.
102 6.4. Librera de sistemas de ecuaciones diferenciales

La caracterstica comun de los tipos de problema es que cada objeto que


derive de cualquier clase de este grupo ha de tener especificado dos objetos
concretos: un sistema de ecuaciones diferenciales y un metodo de solucion
de momento solo hay disponibles integradores temporales. Esta asociacion
se realiza a traves del constructor o de funciones especficas.
En cuanto a las diferencias entre las clases de problemas, al haber realiza-
do unicamente la implementacion de una clase de objetos, solo se puede ade-
lantar que existiran las propias que derivan de las necesidades de resolucion
y control de la solucion de cada tipo de problema. Para el tipo implementado
se van a describir en mayor detalle los atributos y funciones miembro que
posee.

Problema de valor inicial: clase Init val problem


Corresponde con un problema definido por un sistema diferencial cuya
variable independiente es el tiempo, t. En un instante, t0 , se conoce la confi-
guracion del sistema diferencial (de orden p) y la de sus (p 1) derivadas.
Para poder resolver el problema de valor inicial se han de especificar el
sistema diferencial, sus condiciones iniciales y el integrador a usar. Todos
ellos deben ser objetos externos al problema y, por tanto, se han de definir
en una funcion que controle todo el proceso de creacion y solucion.
Los atributos de la clase son los siguientes:

diff system, puntero al sistema de ecuaciones diferenciales que puede


ser de cualquier clase de las definidas en dicho grupo.

integrator, puntero al integrador que, al igual que el sistema, puede


ser de cualquier clase.

q init, puntero a un vector STL de dimension igual al orden del sis-


tema diferencial (p) que contiene la configuracion inicial del sistema
(p1)
desde q0 en q init[0] hasta q0 en q init[p-1].

Y las funciones miembro junto con los constructores y destructores:

Init val problem() (constructor vaco): crea un objeto inicializando


los punteros a 0.

Init val problem(system in, q init in) (constructor estandar sin


integrador ): crea un objeto a partir de un sistema diferencial system in
con las condiciones iniciales especificadas por q init in. Este cons-
tructor esta pensado para poder definir un integrador estandar aunque
todava esta por decidir la forma en que este se especifica.

Init val problem(system in, integrator in, q init in) (construc-


tor estandar con integrador ): igual que el anterior pero se especifica el
objeto integrador a usar mediante el parametro integrator in.
Captulo 6. Diseno e implementacion del entorno 103

Init val problem() (destructor ): destruye el objeto.

set integrator(integrator in): define el integrador a usar para un


objeto existente mediante el objeto integrator in que se pasa como
argumento de la funcion.

solve yourself(to, tf, h): funcion que resuelve el problema de va-


lor inicial desde la configuracion inicial en to hasta el tiempo tf con
un paso de tiempo definido por h. Para ello se invoca a la funcion
integrate del integrador.

6.4.2. Sistemas diferenciales


Este grupo de clases definen un sistema de ecuaciones diferenciales total,
ya sea ODE o DAE (por total se entiende que no existen derivadas parciales).
Al cumplir todos ellos realmente la misma funcion, que es la de implementar
un sistema diferencial, las funciones a las que deben responder tienen la
misma forma.
Para que se puedan invocar las funciones de cualquier clase de sistema
de una forma homogenea se ha definido una clase abstracta, que no es mas
que un interfaz que ademas funciona como plantilla de todas las clases de
sistemas diferenciales. Se va a explicar el contenido de esta interfaz como
muestra de la funcionalidad de las clases que concretan cada tipo de sistema
sin entrar en detalle de como se realiza la implementacion en cada uno.

Clase abstracta total diff


En esta clase se declaran las siguientes funciones, que son las de definicion
obligatoria en cada una de las clases de este grupo.

order(): devuelve el orden del sistema diferencial implementado en la


clase.

residue(q, time n): calcula (y devuelve) el residuo del sistema dife-


rencial para la configuracion indicada en el contenedor q en el instante
dado por time n.

jacobian qddot(q, partial qdot, partial q): calcula la tangente


al residuo (jacobiano del sistema) con respecto a la segunda derivada
de las variables dependientes cuando el sistema tiene la configuracion
indicada en el contenedor q en el instante dado por time n.

evaluate(q, time n): calcula el valor de la derivada p-esima del sis-


tema diferencial de orden p cuando el sistema tiene la configuracion
indicada en el contenedor q en el instante dado por time n.
104 6.4. Librera de sistemas de ecuaciones diferenciales

evaluate(q, qdot, time n): calcula el valor de la aceleracion del sis-


tema diferencial de segundo orden cuando el sistema tiene la configu-
racion indicada en el contenedor q en el instante dado por time n.

convergence(q, time n): devuelve verdadero o falso en funcion de


que se cumpla o no el criterio de convergencia para el residuo cuando el
sistema tiene la configuracion indicada en el contenedor q en el instante
dado por time n.

6.4.3. Integradores temporales


La coleccion de integradores temporales tiene una estructura similar a la
de los sistemas diferenciales. Como base de todas las clases existe una clase
abstracta llamada Integrator base que sirve de interfaz para las llamadas
a la integracion del sistema que realizan los objetos pertenecientes a los tipos
de problemas. As, la unica funcion definida en esta clase abstracta es:

integrate(to, tf, h, *system in, q init): que realiza la labor de


integrar el sistema diferencial al que apunta *system in a partir de las
condiciones iniciales dadas en el contenedor q init en el instante to.
La integracion se realiza con el paso maximo h hasta el tiempo tf.

Hasta el momento se han implementado dos familias de integradores tem-


porales: aquellos basados en la formula de Adams-Bashford, de tipo explci-
to y los de tipo Adams-Moulton, de tipo implcito. La implementacion de
cada tipo incluye numerosas funciones ademas de la impuesta por la clase
Integrator base, por ello se ha credo util explicar su estructura interna.
Ademas, la implementacion de ambos sirve de base para futuras implemen-
taciones de otros integradores tanto explcitos como implcitos.

Familia Adams-Bashford de integradores: clase Integrator ab


Los integradores de tipo explcito como los de esta familia solo necesitan
resolver sistemas lineales. Incluso en caso de los sistemas mecanicos en los que
se modela la masa a traves de una matriz diagonal (lumped ), no es necesario
ni siquiera resolver ningun sistema.
Debido a la simplicidad de estos esquemas de integracion, no es necesario
implementar muchas funciones para conseguir una separacion de tareas que
produzca un codigo facil de mantener.
Para la implementacion de esta clase se han definido los siguientes atri-
butos:

order define el orden de integracion que se empleara al aplicar el meto-


do.

time almacena el valor de la variable tiempo para cada paso.


Captulo 6. Diseno e implementacion del entorno 105

h valor del paso de tiempo h = (tn tn1 ).

q contenedor de los vectores de incognitas basicas y sus p-derivadas del


problema que se integra, donde el sistema diferencial es de orden-p.

Por otra parte, las funciones miembro son las siguientes:

Integrator ab() (constructor vaco): crea un objeto vaco.

Integrator ab(order) (constructor estandar ): crea un objeto integra-


dor del orden especificado.

Integrator ab() (destructor ): destruye el objeto.

initialize(q init, to, h in): inicializa el metodo de integracion


creando el contenedor (q) de las dimensiones adecuadas, asignando las
condiciones iniciales dadas por q init para el instante to y un paso
dado por h in.

advance(): realiza el avance (tn+1 = tn + h) actualizando el contenedor


de incognitas al nuevo valor dado por el metodo.

integrate(to, tf, h, *system, q init): equivalente al definido en


la clase interfaz Integrator base.

Familia Adams-Moulton de integradores: clase Integrator am


Esta clase implementa una familia de integradores implcitos que, a di-
ferencia de los anteriores, aplican en cada paso de tiempo un metodo de
solucion no lineal para resolver un sistema residual.
Esta pequena diferencia hace mas compleja la implementacion del metodo
y mucho mas costoso el calculo de cada paso de tiempo.
Los atributos de esta clase de objetos se enumeran a continuacion:

order define el orden de integracion.

size guarda el tamano de los vectores de incognitas. Corresponde a


una variable auxiliar que hace mas legible el codigo.

*system puntero al sistema diferencial que al que se aplica la integra-


cion.

time almacena el tiempo en cada paso.

h valor del paso de tiempo.

step numero de pasos realizados.

b[5][5] matriz de coeficientes del metodo. Hasta el momento se dis-


pone de hasta el metodo de orden 5.
106 6.4. Librera de sistemas de ecuaciones diferenciales

q contenedor de los vectores de incognitas y derivadas hasta de orden-p


(el orden del sistema diferencial).

*iteration puntero al sistema no lineal que se ha de resolver en cada


paso.

temp variable auxiliar que permite un avance eficiente de la solucion.

Ademas de los atributos anteriores, se dispone tambien de la siguiente


coleccion de funciones miembros:

Integrator am() (constructor vaco): crea un objeto vaco.

Integrator am(order) (constructor estandar ): crea un objeto integra-


dor del orden especificado.

Integrator am() (destructor ): destruye el objeto.

initialize(q init, to, h in): inicializa el metodo de integracion


creando el contenedor (q) de las dimensiones adecuadas, asignando las
condiciones iniciales dadas por q init para el instante to y un paso
dado por h in.

advance(): realiza el avance (tn+1 = tn + h) moviendo las incognitas


del contenedor de manera eficiente.

actualize(qddot in): actualiza el valor de las p-variables diferenciales


dependientes de la elegida para resolver cada paso de integracion. En el
metodo implementado se ha elegido la derivada de mayor orden como
la incognita a resolver en cada iteracion.

residue(qddot in): devuelve el residuo para el valor dado de las incogni-


tas elegidas para las iteraciones. Realmente llama a la funcion actuali-
zacion y luego pide al sistema diferencial que calcule el residuo para el
valor de las incognitas y todas sus derivadas.

jacobian(qddot in): devuelve el jacobiando del residuo para el valor


dado de las incognitas elegidas para las iteraciones. Al igual que la
anterior, actualiza (si es necesario) y posteriormente llama a la funcion
equivalente del sistema diferencial.

convergence(qddot in): llama a la funcion correspondiente del siste-


ma diferencial para comprobar si existe convergencia.

integrate(to, tf, h, *system, q init): equivalente al definido en


la clase interfaz Integrator base.

Las tres funciones residue, jacobian y convergence son necesarias para


poder crear un objeto Nl system a partir del propio objeto integrador.
Captulo 6. Diseno e implementacion del entorno 107

6.4.4. Ejemplo de utilizacion de la librera


Se plantea la resolucion de un problema de valor inicial definido por los
siguientes elementos:
El sistema diferencial tiene la forma

Mq = Q1 (q, q) + Q2 (t)

donde

la matriz de masa es
20 0
M=
10 30
y las funciones Q(q, q) y Q(t) se encuentran implementadas pre-
viamente mediante las funciones
q q(qin, qdotin) Q(q, q) = Q11 (q) + Q12 (q)
q t(time) Q(t)

Las condiciones iniciales, para t = t0 = 5, son las siguientes:



2,4 0,0
q(t0 ) = q(t0 ) =
1,0 0,5

Se ha de integrar hasta un instante final t = tf = 10 mediante un


integrador implcito Adams-Moulton de orden 2 (regla trapezoidal ). El
paso de tiempo ha de ser de h = 0, 1
Las iteraciones en cada paso se resolveran mediante el metodo de New-
ton, para lo que se conocen tambien las funciones tangentes a las fuerzas
(jacobianos):
jacq q(qin) q Q11 (q)
jacq qdot(qdotin) q Q12 (q)

Para resolver este problema mediante la librera implementada se ha de


programar un codigo como el siguiente:
// creacion de la matriz de masa de 2x2:
lmx::Matrix<double> masa(2,2);

// creacion de los vectores de posiciones iniciales:


lmx::Vector<double> pos_inicial(2);
lmx::Vector<double> vel_inicial(2);

// definicion del contenedor de condiciones iniciales:


std::vector< lmx::Vector<double>* > q_init;
108 6.4. Librera de sistemas de ecuaciones diferenciales

// Definicion de coeficientes:
masa(0,0) = 10.; masa(0,1) = 0.;
masa(1,0) = 20.; masa(1,1) = 30.;

pos_inicial(0) = 2.4;
pos_inicial(1) = 1.;

vel_inicial(0) = 0.;
vel_inicial(0) = 0.5;

// Llenado del contenedor de condiciones iniciales:


q_init.push_back(&pos_inicial); // = q_init[0]
q_init.push_back(&vel_inicial); // = q_init[1]

// Seleccion del metodo de Newton para el solver:


nls::select_nl_solver_type(0);

// Definicion del sistema diferencial:


dif::Mec_ode<double> mecanismo(masa, q_q, q_t, jacq_q,
jacq_qdot);

// Definicion del integrador de orden dos:


dif::Integrator_am<double> integrador(2);

// Definicion del problema de valor inicial:


dif::Init_val_problem<double> problema(mecanismo, integrador,
q_init);

// Lanzamiento del calculo de solucion en el


// intervalo t=(5,10) con un paso de tiempo de h=0.1:
problema.solve_yourself(5. , 10. , 0.1);

La estructura interna que se genera en la librera con el codigo anterior


es la mostrada en la figura 6.7.
El objeto problema se crea una vez se han definido el mecanismo y el
integrador. Esto ha de ser as para que se generen los enlaces (punteros)
necesarios entre ellos a traves de sus respectivas interfaz que corresponden a
las clases Total diff e Integrator base.
Cuando el integrador llama a alguna funcion del sistema diferencial, el
interfaz que implementa la clase Total diff permite que el integrador en-
cuentre el sistema al que desea hacer referencia, de la clase Mec ode. Lo mismo
se puede decir con respecto a la relacion entre el problema y el integrador, al
que encuentra mediante el enlace dinamico que crea la interfaz (en este caso,
Captulo 6. Diseno e implementacion del entorno 109

Total diff Init val problem Integrator base

Mec ode Integrator am

Nl system

Leyenda:

Relacion explcita

Relacion estructural mediante punteros

Relacion estructural mediante herencia

Figura 6.7: Ejemplo de esquema de uso de la librera

la clase Integrator base).


La seleccion del metodo de solucion para la ecuacion no lineal se realiza
mediante la llamada a la funcion select nl solver type con el argumento
correspondiente al metodo de Newton (0). Realmente no sera necesaria esta
llamada ya que este metodo es el asignado por defecto.
El objeto de la clase Nl system no se crea explcitamente sino que se
instancia a traves de la funcion solve yourself del objeto problema. Al
crearse el objeto que implementa el metodo de solucion no lineal se crea
tambien un enlace (puntero) para que este pueda acceder a las funciones
definidas en el integrador para el calculo del residuo, jacobiano y criterio
de convergencia.
Captulo 7

Aplicaciones del entorno

Una vez expuestas las capacidades del entorno para la resolucion de pro-
blemas numericos, se desea comentar las aplicaciones que se han contemplado
para un primer uso de las libreras desarrolladas.
El desarrollo de estas aplicaciones tiene un doble fin: por un lado cu-
bren una necesidad de calculo determinada. Por otro lado, el ejercicio de su
implementacion resulta util y hasta didactico ya que durante el mismo apa-
recen nuevas necesidades que ayudan a concretar las capacidades futuras del
entorno de simulacion.
Para que se cumplan los fines anteriores las aplicaciones desarrolladas no
deben ser muy complejas y, por tanto, es preferible comenzar disenando y
programando codigos sencillos que realicen una funcion concreta y avanzar
en la complejidad y generalidad de los codigos segun se concreta el entorno
de simulacion. Por ello, para empezar, se ha optado por no ser ambicioso
en los requisitos funcionales y se comienza describiendo una aplicacion muy
basica enfocada al calculo estructural lineal.
La experiencia de la programacion de la aplicacion de calculo estructu-
ral permite abordar el planteamiento de un proyecto mas complejo como es
el de una aplicacion mas general de calculo dinamico. A pesar de que se
concibe como un proyecto a largo plazo, el diseno de la misma se plantea
modularmente, permitiendo una implementacion paso a paso en la que los
hitos intermedios se relacionan con el tipo de problemas que sera capaz de
resolver.

7.1. PACE: Programa Academico de Calculo


de Estructuras
PACE es un programa disenado para la generacion automatica de ejerci-
cios que apoyen el aprendizaje de los metodos matriciales empleados para la
resolucion de estructuras de barras y vigas a traves del metodo de la rigidez
basado en la formulacion fuerte.

111
112 7.1. PACE: Programa Academico de Calculo de Estructuras

7.1.1. Caractersticas del programa


Ademas de la necesidad de realizar una prueba de la biblioteca LMX de
algebra de matrices y metodos lineales de solucion, la aplicacion cumple una
funcion concreta. Previamente el diseno e implementacion de la misma se
definieron los siguientes requisitos que deba cumplir desde el punto de vista
funcional:

Resolucion de analisis estaticos de estructuras planas con capacidad


para ampliar la resolucion a estructuras tridimensionales en un futuro,
as como la implementacion de otros tipos de problemas: modos de
pandeo y calculo dinamico mediante extraccion modal.

Trabajo con distintos materiales con posibilidad de definir una librera


de materiales.

Aplicacion de distintas secciones a los elementos con posibilidad de


definir una librera de secciones.

Implementacion de uniones rgidas y articuladas. Otro tipo de uniones


se ha de poder anadir sin una modificacion sustancial del codigo.

Aplicacion de cargas puntuales en nudos y distribudas en elementos


contemplando una futura ampliacion a casos mas generales.

Aplicacion de condiciones de contorno eseciales en nudos, en principio,


concordantes con las direcciones marcadas por el sistema global.

Salida de resultados en archivos de texto plano y salida de informes en


archivos formateados en codigo LATEX.

7.1.2. Estructura del codigo


Hasta el momento el codigo generado cumple con los requisitos mnimos
especificados anteriormente pudiendo realizar analisis estaticos lineales de es-
tructuras planas compuestas por barras o compuestas por vigas de Bernoulli.
La flexibilidad que se especifica en los requisitos hace imprescindible el
uso de clases y la separacion de tareas en funciones miembro para cada clase
de objetos. El esquema disenado crea una clase de objetos para cada uno de
los elementos logicos que componen una estructura, a pesar de que muchos
de ellos de momento podran definirse como simples estructuras de datos.
La estructura de clases de la aplicacion esta compuesta por los siguientes
elementos:

Structure: Clase que representa al modelo de la estructura. Contiene


como atributos el ttulo y la dimension del problema, numero total
de elementos y de nodos, contenedores de nodos, materiales, secciones,
Captulo 7. Aplicaciones del entorno 113

elementos, restricciones y fuerzas. Ademas, almacena datos de calculo


como los desplazamientos o reacciones entre otros.
Aparte de los constructores y destructor, es posible realizar tareas pro-
pias a traves de las funciones miembro que se indican a continuacion:

read input("nombre archivo"), leer una entrada de archivo,


form Kest(), ensamblaje de la matriz de rigidez,
form LR, identificacion de GDLs libres y restringidos,
separate Kest(), separacion del sistema de ecuaciones,
form ur(), form f() y form(), formacion de los vectores y del
sistema de ecuaciones,
solve(), resolucion del sistema de ecuaciones y, finalmente,
latex out(), salida del informe de resolucion.

Node: Representa a los nodos o nudos (en lenguaje tradicional) de la


estructura. Los parametros almacenan informacion del numero de nodo
(i), y sus posiciones en el espacio (x, y, z) aunque de momento solo
se pueden posicionar en el plano (z = 0). De momento esta clase no
dispone de funciones miembro mas que las necesarias para su creacion,
destruccion y acceso a datos en modo solo lectura.

Material: Realiza la funcion de simular el comportamiento del ma-


terial. De momento, al poseer unicamente la capacidad de analisis li-
neal, se pueden implementar solo los parametros que definen el com-
portamiento lineal (Modulos de Young y de Poisson) a traves de los
parametros young y poisson. El numero de material se almacena en el
parametro n_mat. No se trabaja de momento con el peso calculado a
traves de la densidad por lo que no existe un parametro que la defina.

Section: Almacena los datos de la seccion, como la inercia (en inertia)


y el area (en area) y el numero de seccion (en n_sec).

Element: Simula cada uno de las barras y vigas de la estructura, al-


macenando su numeracion global, dimension (grados de libertad de sus
nudos), as como unos punteros hacia su nudo inicial y final, seccion y
material.
Mediante los parametros anteriores es capaz de calcular sus matri-
ces de rigidez en coordenadas locales (compute_Klocal) y globales
(compute_Kglobal), matriz de giro (compute_L) y ensamblarse (me-
diante assemble_yourself(Kest, nodes_in)) en la matriz de rigidez
de la estructura.

Restriction: Permite restringir el movimiento de los nodos en la di-


reccion especificada (de momento, solo direcciones globales). Almacena
114 7.1. PACE: Programa Academico de Calculo de Estructuras

el numero de nodo (node) al que afecta y unos parametros que, en caso


de ser no nulos, hacen que se aplique la restriccion en las direcciones x,
y, z (rx, ry, rz).

Force: Representa una fuerza con componentes (x, y) y componente de


momento alrededor del eje-z (fx, fy y mz, respectivamente), aplicada
en el nodo indicado por el parametro node.
La funcion principal (main()) que gua el proceso de resolucion del pro-
blema tiene la siguiente forma:

int main(int argc, char *argv[])


{
// Seleccion del tipo de matriz y solver lineal de LMX:
lmx::select_matrix_type(0);
lmx::select_solver_type(0);

// Creacion de objeto de clase Structure leyendo archivo:


Structure estruc("input.est");

// Formacion del sistema de ecuaciones:


estruc.form();

// Resolucion del sistema de ecuaciones:


estruc.solve();

// Creacion del informe de salida en formato LaT eX:


estruc.latex_out();

// Si todo ha ido bien...


return EXIT_SUCCESS;
}

7.1.3. Estructura del archivo de entrada


Como se puede comprobar mediante el codigo anterior, la forma elegida
para crear un modelo y resolverlo es mediante un archivo de datos (de ex-
tension .est). A continuacion se muestra un ejemplo comentado de dicho
archivo para un ejemplo sencillo.
El informe de salida que genera la aplicacion a partir de este ejemplo se
presenta en el apendice A.

// Archivo de plantilla para la introduccion de datos en PACE:


// Esto es un comentario, igual que cualquier otra cosa que
// empiece por " // " (separado con espacios).
Captulo 7. Aplicaciones del entorno 115

TITLE Estructura // Ttulo del problema. Solo una palabra y,


// ademas, sin espacios ni guiones bajos.

DIMENSION 2 // GDL de cada nodo: 2 -> Estructura articulada ;


// 3 -> Estr. de nudos rigidos (portico plano).

MATERIAL 1 // Numero total de materiales del problema, a partir


// de aqui empieza su definicion:
1 2.1E3 0.3 // Numero de material = 1, Modulo de Young = 2.1E9,
//Modulo de Poisson = 0.3

SECTION 1 // Numero total de materiales del problema, a partir


// de aqui empieza su definicion:
1 0.2 4E-3 // Numero de la seccion = 1, Area = 0.2,
// Inercia = 4E-3

NODE 3 // Numero total de nodos del problema, a partir de aqui


// empieza su definicion:
1 0.0 0.0 // Numero de nodo = 1, coordenada x = 0.0,
// coordenada y = 0.0
2 0.0 3.4 // Numero de nodo = 2, coordenada x = 0.0,
// coordenada y = 3.4
3 2.3 3.4 // Numero de nodo = 3, coordenada x = 2.3,
// coordenada y = 3.4

ELEMENT 3 // Numero total de barras del problema, a partir de


// aqui empieza su definicion:
1 1 2 1 1 // Numero de barra = 1, nodo inicial = 1, nodo
// final = 2, tipo de seccion = 1, Material = 1
2 3 2 1 1 // Numero de barra = 2, nodo inicial = 1, nodo
// final = 2, tipo de seccion = 1, Material = 1
3 3 1 1 1 // Numero de barra = 2, nodo inicial = 1, nodo
// final = 2, tipo de seccion = 1, Material = 1

FORCE 3 -100.0 0.0 10.0 // Fuerza puntual aplicada en el nudo


// 3, direccion x-global = -100.0,
// direccion y-global = 0.0, momento
// z-global = 10.0

RESTRICTION 2 // Numero total de apoyos en la estructura, a


// partir de aqui empieza su definicion:
1 0 1 0 // Apoyo en nodo = 1, restriccion segun eje-x = 0 (no se
// aplica), restriccion segun eje-y = 1 (se aplica) y
116 7.2. Aplicacion de simulacion dinamica de mecanismos flexibles

// empotramiento en eje-z = 0 (no se aplica)


2 1 1 0 // Apoyo en nodo = 3, restriccion segun eje-x = 1 (se
// aplica), restriccion segun eje-y = 1 (se aplica)

7.2. Aplicacion de simulacion dinamica de me-


canismos flexibles
La realizacion de una aplicacion de estas caractersticas requiere un estu-
dio en profundidad del diseno de la jerarqua de clases y funciones.
El diseno que se presenta en esta seccion es el resultado tanto del co-
nocimiento de la formulacion empleada en este tipo de simulaciones como
de la experiencia de diseno y programacion del entorno de simulacion y de
algunas aplicaciones mas sencillas como la comentada en la seccion anterior.
No obstante, no deja de ser un diseno de fase inicial, que ha de ser sometido
a revisiones fruto de las experiencias que se den durante la implementacion
y utilizacion de la propia aplicacion.

7.2.1. Objetivos de la aplicacion


El rasgo distintivo de esta aplicacion es su capacidad para analizar la
dinamica de mecanismos flexibles. Sin embargo, es necesario extraer y con-
cretar los aspectos fundamentales de la anterior definicion de manera que se
puedan dar unas especificaciones de partida que permitan abordar un diseno
concreto de la aplicacion que cumpla con las restricciones que se marquen.
La concrecion de la variedad de analisis, mecanismos y metodos de im-
plementar la flexibilidad, as como las relaciones entre los cuerpos y otras
cualidades forman un conjunto de caractersticas de las cuales, las mas basi-
cas que debe tener la aplicacion se pueden resumir en los siguientes puntos:
Se han de poder realizar analisis estaticos, dinamicos y modales. Ademas,
estos analisis se deben poder encadenar a lo largo del tiempo.
Los tipos de solidos a implementar seran partculas, solidos rgidos y
flexibles.
La flexibilidad de los solidos se debe poder simular mediante el metodo
de elementos finitos en coordenadas absolutas o referencia flotante.
Las restricciones se podran poder aplicar mediante los tres metodos
explicados en el captulo 2: multiplicadores de Lagrange, penalizacion
y lagrangiano aumentado.
Se debe poder implementar modelos tridimensionales pero tambien mo-
delos planos que aprovechen la reduccion de grados de libertad para
agilizar los calculos.
Captulo 7. Aplicaciones del entorno 117

Se implementaran las funcionalidades necesarias para permitir una ge-


neracion logica de los mecanismos a base de distintos niveles de siste-
mas.

La ejecucion podra ser interactiva o por lotes.

7.2.2. Esquema basico de la aplicacion


Las funciones basicas que debe realizar la aplicacion para resolver un
problema de simulacion se pueden clasificar en la siguiente lista ordenada:

1. Lectura de los datos entrada.

2. Generacion del modelo de mecanismo.

3. Definicion y resolucion de los analisis requeridos.

4. Salida de resultados.

A partir de como se ejecute la aplicacion se distinguiran dos modos de


funcionamiento:

Ejecucion por lotes (batch processing): las funciones se ejecutan en el


orden establecido anteriormente y, finalizado el proceso, se termina la
ejecucion.

Ejecucion interactiva: el usuario decide en que momento se realiza cada


funcion, para lo que ha de conocer las precedencias entre una y otra.

Como se puede suponer, es mucho mas sencillo programar una ejecucion


por lotes que una interactiva, por lo que resulta conveniente dejar la progra-
macion de la interactividad para una segunda fase de desarrollo.
Una primera version de esta aplicacion con un contenido mnimo se puede
realizar implementando los procedimientos anteriores. La dificultad de esta
implementacion radica principalmente en la definicion del modelo y la resolu-
cion de las ecuaciones. El modelo de mecanismo propuesto se presenta en la
siguiente seccion y en el se establece un objeto, el ensamblador que controla
la formacion de las ecuaciones en su forma ODE o DAE.
Haciendo uso de las herramientas del entorno de desarrollo para simula-
cion que se describio en el captulo anterior, es posible generar rapidamente
un analisis estatico o dinamico simplemente enlazando el objeto que repre-
senta el sistema de ecuaciones diferenciales (Total diff) con el objeto en-
samblador (Assembler, ver siguiente seccion) que le facilite el calculo de los
vectores y matrices del sistema en cada instante.
En la figura 7.1 se muestra el esquema relacional para la resolucion de
analisis en una primera version de la aplicacion.
118 7.2. Aplicacion de simulacion dinamica de mecanismos flexibles

Analysis

Problem type

Assembler Total diff Integrator base

Figura 7.1: Relacion entre clases del entorno y aplicacion

7.2.3. Esquema de clases para el modelo de mecanismo


Cualquier aplicacion de simulacion nace por su modulo de calculo (pro-
ceso) que es, precisamente, el que se desea describir en esta seccion.
Segun lo expuesto en el captulo 2 de formulacion, la dinamica de cualquier
conjunto de mecanismos de solidos flexibles se puede representar mediante
la siguiente ecuacion en funcion de las coordenadas generalizadas:

Mq + Q(q, q, t) = 0 (7.1)
= 0 (7.2)

donde la ecuacion (7.2) desaparece al aplicar el metodo de penalizacion


o de lagrangiano aumentado para la imposicion de restricciones.
Desde el punto de vista de la generacion de la ecuacion anterior, se puede
realizar la siguiente reordenacion de terminos:

finercia + f + fint = fext (7.3)

donde:
f son las fuerzas de las restricciones.
fint son las fuerzas internas de los elementos.
fext son las fuerzas aplicadas externamente.
Sin querer entrar en mayor detalle, mediante las anteriores ecuaciones se
quiere hacer notar que la formulacion de las anteriores ecuaciones requiere
de un proceso de ensamblaje en cada instante que recolecte los terminos de
fuerza que aporta cada uno de los objetos reales: cuerpos (solidos y flexibles),
restricciones y fuerzas exteriores.
Tanto los cuerpos como las restricciones se pueden ver como instancias
concretas de una clase de objetos mas general, que se llamara componente.
Desde el punto de vista de la topologa real de los mecanismos, se pueden
realizar asociaciones funcionales de objetos en forma de subsistemas que, por
un lado cumplen en su conjunto una funcion concreta por lo que pueden
aparecer repetidos en un mismo sistema y por otro suelen encontrarse agru-
pados en el espacio con una superficie exterior para el subsistema menor que
la suma de las superficies de cada uno de sus elementos. Esto ultimo hace
Captulo 7. Aplicaciones del entorno 119

que este tipo de agrupaciones sea deseable para establecer una busqueda de
contactos entre superficies, que aunque no se plantea como una prestacion
de la aplicacion en este momento, s que se intenta prever.
Por todo lo anterior, el esquema de clases propuesto contiene un objeto
sistema que agrupa a otros objetos. La clase sistema agrupa a objetos de
tipo componente y su diseno responde a una solucion recursiva en la que,
ademas, cada sistema puede contener a su vez otros sistemas. Esta recursi-
vidad permite generar una jerarqua de tantos niveles de sistemas como se
desee y tambien hace posible definir para cualquier mecanismo un sistema
global que contendra directa o indirectamente todos los objetos. Un ejemplo
de esta jerarqua se encuentra indicado en la figura 7.2, en la que cada objeto
system podra contener objetos a su vez componente y fuerza.

Global system

05

04

01 02 03

Figura 7.2: Esquema de relaciones entre clases system.

Sistemas: clase System


Segun lo introducido anteriormente, esta clase de objetos debera contener
una serie de objetos cuyo numero se desconoce. Ademas, no se quiere eliminar
la posibilidad de que exista algun objeto que pertenezca a dos sistemas a la
vez, por lo que mas que funcionar como contenedores, los sistemas deberan
funcionar como clasificadores. As, en vez de guardar a los objetos en s,
almacenaran referencias a esos objetos.
En el lenguaje C++ es relativamente sencillo implementar este tipo de
esquemas haciendo uso de dos herramientas: los punteros y los contenedores
de la librera estandar (con prefijo std::, consultar STL [2005]). De esta
forma, una declaracion basica de la clase System podra ser la siguiente:

class System{
std::vector<Body*> bodies;
std::vector<Constrain*> constrains;
std::vector<System*> systems;
120 7.2. Aplicacion de simulacion dinamica de mecanismos flexibles

...
}

Para cada sistema, incluso el global, se establece la topologa interna con


forma recursiva que interrelaciona las clases segun la manera mostrada en la
figura 7.3.

System

Body Constrain

Figura 7.3: Relacion entre clases determinada por punteros

Componentes: clase Component


La clase componente se puede imaginar como una interfaz de las clases
que representan a los cuerpos y las restricciones que derivaran de ella here-
dando su estructura (figura 7.4). El fin de esta interfaz es el de simplificar
la implementacion del proceso de ensamblaje que, segun se explico anterior-
mente, no es necesario que haga distincion entre cuerpos y restricciones.
La funcionalidad basica de la interfaz es la de realizar la contribucion al
vector de fuerzas y a la matriz de masas. Ademas, para poder aplicar el meto-
do de Newton sera necesario formar el sistema jacobiano, por lo que tambien
se preve una funcion que devuelva la contribucion a la matriz tangente.
En C++, este tipo de interfaz se implementa a traves de clases abstractas,
que son aquellas con alguna funcion virtual pura. Obviando los detalles, el
esquema de la clase Component sera el siguiente:

class Component{
...
virtual Matrix mass_contrib(...) = 0;
virtual Vector force_contrib(...) = 0;
virtual Vector tang_contrib(...) = 0;
...
}

Componente cuerpo: clase Body


Todas las clases de cuerpos solidos tienen en comun desde el punto de
vista geometrico que ocupan un lugar finito del espacio. Con respecto a la
Captulo 7. Aplicaciones del entorno 121

System Component

Body Constrain

Leyenda:

Relacion estructural mediante punteros

Relacion estructural mediante herencia

Figura 7.4: Relacion entre clases

formulacion, todos ellos aportan contribuciones a la matriz de masas a pesar


de que no se calculen igual, y pueden o no contribuir al resto de vectores de
fuerzas.
Ademas de estructurar mejor la jerarqua de clases, la clase Body permite
crear un interfaz para las funciones que comparten los cuerpos solidos. Esto
permite, por ejemplo, que una funcion de busqueda de contacto no tenga que
distinguir entre las distintas clases de cuerpos sino que invoque a una funcion
generica y sean estas ultimas las que implementen su codigo particular.
El esquema de herencia se ilustra en la figura 7.5.

Component

Body

Rigid body MEF body

Figura 7.5: Herencia entre clases de solidos

Componente union: clase Constrain

Al igual que sucede con los solidos, las uniones entre los distintos ob-
jetos del sistema pueden ser del mismo tipo pero todas comparten ciertas
caractersticas tanto geometricas como de formulacion.
Para aprovechar estas similitudes, se ha realizado una agrupacion que
cuelga de la clase abstracta Constrain a partir de la cual se generaran las
distintas clases de uniones, tal y como se muestra en la figura 7.6.
122 7.2. Aplicacion de simulacion dinamica de mecanismos flexibles

Component

Constrain

Distance cons Plane cons

Figura 7.6: Herencia entre clases de uniones

Nodos: clase Node


Los nodos situan puntos de los componentes en el espacio y contienen la
informacion de las coordenadas generalizadas (grados de libertad, principal-
mente) de los componentes a los que pertenecen. Por tanto el objeto nodo
ha de tener los parametros suficientes para definir su posicion en el espacio.
Para permitir la implementacion de elementos placa y viga, sera necesario
que ademas de la posicion, los objetos nodo definan tambien una orientacion,
funcionando as como un triedro de referencia local.
Al poder pertenecer a distintos objetos, la relacion entre el objeto nodo
y el objeto que lo contiene se implementa a traves de punteros, tal y como
indica la figura 7.7.

body1 constrain1 body2

node1 node2 node3 node4

Figura 7.7: Relacion entre componentes y nodos mediante punteros

Ensamblador: clase Assembler


En el esquema propuesto, la clase ensamblador implementa los objetos
(normalmente suele haber solo uno) encargados de guardar la numeracion de
cada uno de los nodos y elementos, lo que les permite recolectar las contribu-
ciones de cada objeto a las fuerzas y matrices de los sistemas de ecuaciones.
La doble estructura de relaciones mostrada en la figura 7.4 permite que
el proceso de busqueda de componentes se realice mediante la estructura de
sistemas (clase System) y la llamada a funciones se implemente a traves de
punteros genericos a la clase Component de la cual derivan. Para implementar
este esquema hacen falta las relaciones a base de punteros entre la clase
ensamblador y las respectivas de los sistemas y componentes, tal y como se
indica en la figura 7.8.
Hay que hacer notar que la busqueda puede implementarse simplemente
Captulo 7. Aplicaciones del entorno 123

Assembler

System Component

Body Constrain

Leyenda:

Relacion estructural mediante punteros

Relacion estructural mediante herencia

Figura 7.8: Relacion entre objetos a partir del ensamblador

conociendo la direccion que tiene el sistema global ya que a partir de este se


pueden buscar el resto de sistemas.
Captulo 8

Conclusiones y futuras lneas


de trabajo

8.1. Conclusiones
8.2. Futuras lneas de investigacion

125
Apendice A

Informe de salida de PACE

El siguiente informe es el resultado de ejecutar en PACE el ejemplo de


archivo de entrada expuesto en el captulo 7 una vez compilado con LATEX,
sin ninguna modificacion.

A.1. Datos de partida del problema:


Ttulo: Estructura.

Grados de libertad de cada nodo de la estructura: 2.

Numero de materiales empleados: 1.

Material numero 1:
Modulo de Young: 2100.
Modulo de Poisson: 0.3.

Numero de tipos de seccion empleados: 1.

Seccion numero 1:
Area: 0.2.
Inercia: 0.004.

Numero de nodos de la estructura: 3.

Nodo numero 1: posicion (0, 0).


Nodo numero 2: posicion (0, 3.4).
Nodo numero 3: posicion (2.3, 3.4).

Numero de barras de la estructura: 3.

Tabla de conectividad de la estructura: .

127
128 A.2. Calculo de la matriz de rigidez de la estructura.

Barra NI NF material seccion


1 1 2 1 1
2 3 2 1 1
3 3 1 1 1

Numero de apoyos de la estructura: 2.


En el nodo 1 existe un apoyo articulado movil en direccion del eje-y.
En el nodo 2 existe un apoyo articulado fijo.
Fuerzas aplicadas en los nodos de la estructura: 1
En el nodo 3 se aplica una fuerza puntual con componente segun el
eje-x: Fx = 100 y con componente segun el eje-y: Fy = 0.

A.2. Calculo de la matriz de rigidez de la es-


tructura.
A.2.1. Matrices de rigidez de las barras.
Para el tipo de estructura estudiado, la matriz de rigidez en coordenadas
locales de las barras toma la siguiente forma:
EA EA

L
0 L
0
0 0 0 0

Klocal = EA
L 0 EA
0
L
0 0 0 0
La matriz de giro de coordenadas locales a coordenadas globales de las barras
se calcula de la siguiente manera:

cos sin 0 0
sin cos 0 0
Lbarra =


0 0 cos sin
0 0 sin cos

Barra numero 1:

124 0 124 0
0 0 0 0
Klocal =
124

0 124 0
0 0 0 0

0 1 0 0
1 0 0 0
L= 0 0

0 1
0 0 1 0
Apendice A. Informe de salida de PACE 129


0 0 0 0
0 124 0 124
Kglobal =
0

0 0 0
0 124 0 124
Simbolicamente:
K11,1 K11,2
Kglobal =
K12,1 K12,2

Barra numero 2:


183 0 183 0
0 0 0 0
Klocal =
183

0 183 0
0 0 0 0

1 0 0 0
0 1 0 0
L= 0

0 1 0
0 0 0 1

183 0 183 0
0 0 0 0
Kglobal =
183

0 183 0
0 0 0 0
Simbolicamente:
K23,3 K23,2
Kglobal =
K22,3 K22,2

Barra numero 3:


102 0 102 0
0 0 0 0
Klocal =
102

0 102 0
0 0 0 0

0,56 0,828 0 0
0,828 0,56 0 0
L=

0 0 0,56 0,828
0 0 0,828 0,56

32,1 47,5 32,1 47,5
47,5 70,2 47,5 70,2
Kglobal =
32,1 47,5 32,1

47,5
47,5 70,2 47,5 70,2
130 A.3. Calculo de los desplazamientos de la estructura.

Simbolicamente:
K33,3 K33,1
Kglobal =
K31,3 K31,1

A.2.2. Matriz de rigidez de la estructura:


32,1 47,5 0 0 32,1 47,5
47,5 194 0 124 47,5 70,2

0 0 183 0 183 0
Kest =


0 124 0 124 0 0
32,1 47,5 183 0 215 47,5
47,5 70,2 0 0 47,5 70,2

A.3. Calculo de los desplazamientos de la es-


tructura.
A.3.1. Posiciones libres y restringidas.
Posiciones de los grados de libertad libres (sin restricciones):

L = {1, 5, 6}

Posiciones de los grados de libertad restringidos:

R = {2, 3, 4}

A.3.2. Vector de fuerzas de la estructura.


0

fL = 100

0

A.3.3. Vector de desplazamientos restringidos de la es-


tructura.


0
uR = 0

0
Apendice A. Informe de salida de PACE 131

A.3.4. Vector de desplazamientos libres calculados pa-


ra la estructura.

0,52
uL = 0,548

0,0188

A.4. Calculo de las reacciones de la estructu-


ra.

1,31e 15
(fR )reacciones = 100

0
Bibliografa

[2002]. Universal Mechanism Users Manual . Universal Mechanism Software


Lab.
Abaqus. Abaqus, inc. http://www.abaqus.com [2005].
Abdula. Francois faure.
http://www.cg.tuwien.ac.at/ francois/Public/PAVR/doc/abdula.html
[1999].
ADAMS. MSC.
http://www.mscsoftware.com/products/products detail.cfm?PI=413
[2005].
ANSYS. ANSYS, inc. http://www.ansys.com [2005].
S. S. Antman [1972]. The theory of rods VIa/2 of Handbuch der Physik.
Springer-Verlag, Flugge, S and Truesdell, C. editors.
S. S. Antman [1992]. Nonlinear problems of elasticity. Springer-Verlag.
R. Barrett, M. Berry, T. Chan, J. Demmel, J. Donato, J. Don-
garra, V. Eijkhout, R. Pozo, C. Romine y H. van der Vorst
[1993]. Templates for the Solution of Linear Systems: Building Blocks
for Iterative Methods. SIAM.
J. Baumgarte [1972]. Stabilization of constraints and integrals of motion
in dynamical systems. Comp. Meth. in Appl. Mech. and Eng. 1: 116.
T. Belytschko, W. K. Liu y B. Moran [2000]. Nonlinear finite elements
for continua and structures. J. Wiley & Sons.
J. Bonet y R. D. Wood [1997]. Nonlinear Continuum Mechanics for
Finite Element Analysis. Cambridge University Press.
K. E. Brenan, S. L. Campbell y L. R. Petzold [1996]. Numerical
Solution of Initial Value Problems in Differential-Algebraic Equations.
SIAM.
P.N. Brown, G. D. Byrne y A. C. Hindmarsh [1989]. Vode: a variable-
coefficient ode solver. SIAM J. Sci. Stat. Comput. 10, no 5: 10381051.

133
134 Bibliografa

C. G. Broyden [1965]. A class of methods for solving nonlinear simulta-


neous equations. Mathematics of Computation 19: 577593.

J. C. Butcher [1987]. The numerical analysis of ordinary differential equa-


tions: Runge-Kutta and general linear methods.

J. C. Butcher [2003]. Numerical methods for ordinary differential equa-


tions. John Wiley & Sons, West Sussex, England.

CarSim. Mechanical simulation corporation. http://www.carsim.com


[2005].

Catia. Dassault systemes. http://www.3ds.com/products-solutions/plm-


solutions/catia [2005].

R. R. Craig y M. C. C. Bampton [1968]. Coupling of substructures for


dynamics analyses. AIAA Journal 6: 13131319.

M. A. Crisfield [1991]. Non-linear Finite Element Analysis of Solids and


Structures I, Essentials. John Wiley & Sons.

G. Dahlquist [1956]. Convergence and stability in the numerical inte-


gration of ordinary differential equations. Mathematica Scandinavica
4: 3335.

A. DevStudio. http://anjuta.sourceforge.net [2005].

S. Dietz, O. Wallrapp y S. Wiedemann. Nodal vs. modal representation


in flexible multibody system dynamics. En J. A. C. Ambrosio, ed.,
Multibody Dynamics. [2003].

Diffpack. inutech gmbh. http://www.diffpack.com/ [2005].

J. Dongarra. CIMNE.
http://www.netlib.org/utk/people/JackDongarra/la-sw.html [2005].

Doxygen. Dimitri van heesch. http://www.stack.nl/ dimitri/doxygen/


[2005].

DynaMechs. Scott mcmillan. http://dynamechs.sourceforge.net/ [2001].

H. Elmqvist, S. Mattsson y M. Otter. Modelica: The new object-


oriented modeling language. [1998].

E. Fehlberg [1969]. Klassische runge-kutta-formeln funfter und siebenter


ordnung mit schrittweiten-kontrolle. j-Computing 4: 93106.

E. Felhberg. Low order classical runge-kutta formulae with stepsize control


and their application to some heat transfer problems. Inf. Tec. R-315
[1969].
Bibliografa 135

Free Editors. The free country.


http://www.thefreecountry.com/programming/editors.shtml [2005].
J. Garcia de Jalon y E. Bayo [1994]. Kinematic and Dynamic Simula-
tion of Multibody Systems. The Real Time Challenge.. Springer-Verlag.
J. C. Garca Orden. Dinamica no lineal de sistemas multicuerpo fle-
xibles mediante algoritmos conservativos. Tesis Doctoral Universidad
Politecnica de Madrid ETSICCP [1999].
C. W. Gear [1971a]. The automatic integration of ordinary differential
equations. Commun. ACM 14, no 3: 176179.
C. W. Gear [1971b]. Numerical Initial Value Problems is Ordinary Diffe-
rential Equations. Edgewood Cliffs.
Geomview. http://www.geomview.org [2005].
M. Geradin, M. Hogge y S. Idelsohn. Implicit finite element met-
hods. En T. Belytschko y T. Hughes, eds., Computational Methods for
Transient Analysis cap. 4, 417471. North-Holland [1983].
GID. CIMNE. http://gid.cimne.upc.es/ [2005].
Gmsh. Christophe geuzaine and jean-francois remacle.
http://www.geuz.org/gmsh/ [2005].
GNU Autoconf. Free software foundation.
http://www.gnu.org/software/autoconf/ [2005].
GNU Automake. Free software foundation.
http://www.gnu.org/software/automake/ [2005].
GNU GCC. Free software foundation. http://gcc.gnu.org [2005].
GNU GDB. Free software foundation.
http://www.gnu.org/software/gdb/ [2005].
GNU GPL. Free software foundation.
http://www.gnu.org/licenses/gpl.html [2005].
GNU Libtool. Free software foundation.
http://www.gnu.org/software/libtool/ [2005].
Gnuplot. http://www.gnuplot.info [2005].
J. M. Goicolea [2000]. Estructuras sometidas a impacto. EAD, CIMNE,
UPM.
O. Gonzalez y A. M. Stuart. Introduction to continuum mechanics.
[1995].
136 Bibliografa

M. J. Gonzalez Castro. A Collaborative Environment for Flexible De-


velopment of MBS Software. Tesis Doctoral University of A Coruna
[2005].

GTK+. The gtk+ team. http://www.gtk.org/ [2005].

R. Gutierrez Fernandez. Calculo de tensiones en componentes de siste-


mas moviles mediante dinamica de sistemas multicuerpo flexibles. Tesis
Doctoral Universidad de La Coruna EPS [2003].

E. Hairer, C. Lubich y M. Roche [1989]. The Numerical Solution of


Differential-Algebraic Systems By Runge-Kutta Methods. Springer.

M. R. Hestenes y E. Stiefel [1952]. Methods of conjugate gradients for


solving linear systems.

H. Hilber, T. Hughes y R. Taylor [1977]. Improved numerical dissipa-


tion for time integration algorithms in structural dynamics. Earthquake
Engin. and Struct. Dynamics 5: 283292.

W. C. Hurty [1965]. Dynamic analysis of structural systems using compo-


nent modes. AIAA Journal 3: 678685.

R. L. Huston [1990]. Multibody dynamics. Butterworth-Heinemann.

IFER. Internet finite element resources.


http://www.engr.usask.ca/ macphed/finite/fe resources/fe resources.html
[2005].

ISO [1994]. ISO 10303-11:1994: Industrial automation systems and integra-


tion Product data representation and exchange Part 11: Descrip-
tion methods: The EXPRESS language reference manual . International
Organization for Standardization, Geneva, Switzerland.

KDevelop. http://www.kdevelop.org [2005].

D. Kincaid y W. Cheney [1994]. Analisis numerico: las matematicas del


calculo cientfico. Addison-Wesley Iberoamericana.

LabVIEW. National instruments corporation.


http://www.ni.com/labview/ [2005].

LS-Dyna. Livermore software technology corp. http://www.lstc.com [2005].

D. E. Luenberger [1989]. Programacion lineal y no lineal . Addison Wesley


Longman.

Macsyma. Scientek.
http://www.scientek.com/macsyma/main.htm [2005].
Bibliografa 137

MADYMO. TNO automotive.


http://www.automotive.tno.nl/smartsite.dws?id=1530 [2005].

Maple. Maplesoft, waterloo maple inc. http://www.maplesoft.com/ [2005].

Mathematica. Wolfram research, inc. http://www.wolfram.com [2005].

MatLab. MathWorks. http://www.mathworks.com [2005].

MBDyn. Dipartimento di ingegneria aerospaziale, politecnico di milano.


http://www.aero.polimi.it/ mbdyn [2005].

MBSoft. Universite catholique de louvain. faculte des sciences appliquees


production mecanique et machines.
http://www.prm.ucl.ac.be/recherche/projets/mbsoft/index.html
[2005].

J. McPhee. Multibody system dynamics: Research activities.


http://real.uwaterloo.ca/ mbody/ [2005].

Modelica. Modelica association. http://www.modelica.org [2005].

NX Master Fem. UGS.


http://www.ugs.com/products/nx/simulation/advanced/master fem/index.shtml
[2005].

OpenGL. Silicon graphics, inc. http://www.opengl.org/ [2005].

Pro/ENGINEER. PTC.
http://www.ptc.com/appserver/mkt/products/home.jsp?k=403 [2005].

Qt. Trolltech AS.


http://www.trolltech.com/products/qt/index.html [2005].

H. Rahnejat [1998]. Multi-body dynamics. Vehicles, machines and mecha-


nisms. Professional Engineering Publishing.

RecurDyn. FunctionBay, inc. http://www.functionbay.co.kr [2005].

Y. Renard y J. Pommier [2005]. GMM++. Short User Documentation.


http://www-gmm.insa-toulouse.fr/getfem/gmm intro.

RobotBuilder. Steven rodenbaugh and david e. orin.


http://www.ece.osu.edu/ orin/RobotBuilder/RobotBuilder.html [2003].

Samcef Mecano. Samtech s.a. http://www.samcef.com [2005].

R. Schneiders. Mesh generation software.


http://www-users.informatik.rwth-aachen.de/ %7Eroberts/software.html
[2005].
138 Bibliografa

A. A. Shabana [1998]. Dynamics of multibody systems. Cambridge Uni-


versity Press.

A. A. Shabana y R. A. Wehage [1983]. A coordinate reduction tech-


nique for transient analysis of spatial substructures with large angular
rotations. Journal of Structural Mechanics 11: 401431.

L. F. Shampine, R. C. Allen y S. Pruess [1997]. Fundamentals of


Numerical Computing. John Wiley & Sons.

Silicon Graphics [2005]. Standard Template Library Programmers Guide.


http://www.sgi.com/tech/stl/.

J. C. Simo, J. E. Marsden y P. S. Krishnaprasad [1988]. The ha-


miltonian structure of nonlinear elasticity: The material and convective
representations of solids, rods, and plates. Arch. Rational Mech. Anal.
104: 125183.

J. C. Simo y N. Tarnow [1992]. The discrete energy-momentum method.


conserving algorithms for nonlinear elastodynamics. Z. Angew. Math.
Phys. 43: 757793.

J. C. Simo y L. Vu-Quoc [1986]. On the dynamics of flexible beams under


large overall motions the planar case: Part I. ASME Journal of Applied
Mechanics 53: 849854.

SimOffice. MSC.
http://www.mscsoftware.com/products/products detail.cfm?PI=633
[2005].

SIMPACK. INTEC GmbH. http://www.sympack.de [2005].

J. O. Song y E. J. Haug [1980]. Dynamic analysis of planar flexible


mechanisms. Computer Methods in Applied Mechanics and Engineering
24: 359381.

STEP. ISO. http://www.tc184-sc4.org [2005].

STL. Silicon graphics, inc. http://www.sgi.com/tech/stl/ [2005].

G. Teschl. Ordinary differential equations and dynamical systems.


http://www.mat.univie.ac.at/ gerald/ Universitat Wien [2004].

Universal Mechanism. Universal mechanism software lab.


http://umlab.ru [2005].

J. Vidal y J. Garca de Jalon. Mechxml: A languaje for the simula-


tion of complex multibody systems including control. En J. Goicolea,
J. Cuadrado y J. C. Garca Orden, eds., Multibody Dynamics. [2005].
Bibliografa 139

Virtual.Lab Motion. LMS. http://www.lmsintl.com [2005].

VTK. Kitware inc. http://public.kitware.com/VTK/ [2005].

O. Wallrapp. Nonlinear beam theory in flexible multibody dynamics -


theory of simbeam. Inf. tec. Intec GmbH [2002].

O. Wallrapp y R. Schwertassek [1991]. Representation of geometric


stiffening in multibody system simulation. Int. Journal for Numerical
Methods in Engineering 32: 18331850.

S. R. Wu [2004]. Reissner-mindlin plate theory for elastodynamics. Journal


of Applied Mathematics 3: 179189.

Xerces-C++. The apache xml project. http://xml.apache.org/xerces-c/


[2005].

XML. World wide web consortium, W3C. http://www.w3.org/XML/ [2005].

Вам также может понравиться