Sei sulla pagina 1di 19

La herramienta de mallado GMSH

20 de junio de 2010

ndice
1. Introduccin

2. Instalacin

3. Funcionalidades de GMSH

4. GMSH y Femsii

5. Modulo geomtrico
5.1. Definir geometra con ficheros de texto . . . . . . . . . . . . . . .
5.2. Archivos de otros programas . . . . . . . . . . . . . . . . . . . . .

3
4
7

6. Mdulo de mallado
6.1. La triangulacin Delaunay . . . . . . . . . . . . . . . . . . . . . .
6.2. Meshadapt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3. Archivo de mallado *.msh . . . . . . . . . . . . . . . . . . . . . .

7
10
11
11

7. Mdulo de pro-procesado
7.1. Rotacional (Curl) . . . . . . . . . . .
7.2. Combinar distribuciones de vectores
7.3. HarmonicToTime . . . . . . . . . . .
7.4. CutParametric . . . . . . . . . . . .

13
13
13
16
17

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

8. Guiones GMSH (scripts)

17

9. Conclusin

19

1.

Introduccin

GMSH es un software para generar el mallado de figuras bidimensionales y


tridimensionales automticamente.
Christophe Geuzaine y Jean-Francis son los creadores de este software.
GMSH fue concebido como un software acadmico para resolver problemas

acadmicos. Sin embargo a lo largo de los aos se ha mejorado lo suficiente


para ser utilizado fuera de entornos universitarios.
Actualmente GMSH incluye mdulos de pre-procesado (incluido diseo CAD),
procesado (llamadas a resolutores externos, y pos-procesado (visualizacin de
resultados, operaciones vectoriales, etc). Para el presente proyecto se utilizan
principalmente los mdulos de diseo, mallado, visualizacin y herramientas de
calculo vectorial, diferencial y complejo.
En el presente documento nos concentraremos en las propiedades de mallado
de GMSH, fundamental para obtener buenos resultados con el mtodo de los
elementos finitos. Posteriormente veremos algunas capacidades en el apartado
de pos-procesado.

2.

Instalacin

Desde la web oficial de GMSH http://geuz.org/gmsh/ se ofrecen ejecutables binarios para Windows, Mac y Linux (32 bit). Descargarlos y instalarlos
directamente en la manera ms sencilla de hacer funcionar GMSH en un equipo.
Alternativamente existe la posibilidad de compilar el cdigo, que es ofrecido
tambin desde la pgina oficial http://geuz.org/gmsh/#Download. Para poder
compilarlo existen unas dependencias, los archivo de desarrollo de las bibliotecas
gsl, fltk, jpeg, y el programa cmake.
En Linux basta configurar las opciones de compilacin e instalacin con
cmake (las opciones se pueden alterar atendiendo a los escrito en los archivos
README e INSTALL presente en el cdigo fuente), para luego ejecutar make
y por ltimo make install.
Sealar que GMSH hace uso de las capacidades de aceleracin de las tarjetas grficas 3D, lo cual es conveniente tener instalados controladores que nos
permitan haces uso de estas capacidades, sobre todo en el caso de que se traten
de visualizar figuras con gran nmero de elementos.

3.

Funcionalidades de GMSH

Como se ha dicho, GMSH es un software que ha ido creciendo con el paso


de los aos. Aunque ha sido conocido principalmente por sus capacidades de
diseo y mallado, muchas otras funcionalidades han sido incorporadas.
Por una parte existe el modulo de diseo para definir geometra, que nos
permite dibujar visualmente una figura. Resulta intuitivo pero tiene capacidades
limitadas. De hecho el modulo de geometra subyacente es muy extenso, y es
posible crear archivos script (archivos de texto con lenguaje propio GMSH)
donde definir paramtricamente figuras.
El mdulo de mallado se apoya en las definiciones geomtricas (incluidas la
longitudes caractersticas) para crear mallados. Es posible hacer mallados en
una, dos y tres dimensiones, creado elementos con formas varias (lneas, tringulos, tetraedros, prismas, hexaedros y pirmides). Adems es posible definir

que tipo de algoritmo de mallado queremos.


El mdulo de resolucin solver implica la llamada a ciertos sistemas externos con los que interactuar. No se ha incluido ninguna herramienta de esta tipo
internamente, pero en la documentacin de GMSH se dan algunas instrucciones
para programar un resolutor con el que interactuar.
El mdulo de pos-procesado (ligado a la visualizacin) incluye gran nmero
de operaciones diferenciales, vectoriales, herramientas para trabajar con nmeros
complejos y funcionalidades para extraer datos de las distribuciones de datos de
entrada.

4.

GMSH y Femsii

Femsii est pensado para utilizar Gmsh principalmente como mallador y


como visualizador de resultados. Como mallador para crear archivos .msh que
son los que acepta de entrada Femsii; como visualizador para representar los
resultados, pues Femsii genera un archivo de campo de vectores que puede leer
GMSH.
Aunque no es necesario, es posible realizar el diseo de las figuras en GMSH
(tiene algunas limitaciones), con lo que crear el archivo de definicin geomtrica
.geo . En cualquier caso este paso tambin es posible realizarlo directamente en
un archivo de texto ASCII.
Por otra parte GMSH tambin ofrece extensiones con los que hacer clculos
vectoriales. El programa Femsii en s trabaja con la magnitud potencial vector
magntico, por lo que para obtener el flujo magntico es necesario aplicarle la
operacin rotacional. Este paso se puede hacer con una extensin de GMSH.
Por ltimo mencionar que Femsii solo trabaja con modelos de simetra plana
en dos dimensiones, por lo que por ahora los volmenes quedan fuera de esta
introduccin a GMSH.

5.

Modulo geomtrico

El mdulo geomtrico permite dibujar puntos, lneas, superficies y volmenes.


Adems permite seleccionar qu elementos estn fsicamente presentes en las figuras, puesto que en ocasiones es necesario definir elementos auxiliares sin sentido
fsico.
A partir de la definicin de puntos en el espacio es posible ir construyendo
lneas, crculos y eclipses. Y con estos elemento se pueden ir definiendo las
superficies que constituyen la figura que buscamos. Una vez conseguida es muy
recomendable definir los puntos, lneas y superficies que tienen sentido fsico con
Fisical Groups, pues as indicaremos al mallador qu partes discretizar.
En la web oficial se incluyen algunos vdeo-tutoriales con los que familiarizarse en el uso de la aplicacin grfica.

Figura 1: Mdulo geomtrico de GMSH

5.1.

Definir geometra con ficheros de texto

La manera ms potente de crear geometras en GMSH es crear archivos de


texto. Utilizando un lenguaje propio en ASCII se pueden crear figuras parametrizadas,
o incluso incluir bucles.
Las funciones de GMSH son muchas y pueden ser encontradas todas en el
manual oficial de GMSH. En esta seccin nosotros vamos a mostrar un ejemplo.
Valga un ejemplo. Se va a mostrar ahora un cable coaxial definido en un
archivo de ASCII parametrizado. Los radios r1, r2 y r3 que definen los limites
de los conductores y el dielctrico que los separa:
1
2
3
4
5
6
7
8
9
10
11
12
13

// D i b u j o GMSH de un c a b l e c o a x i a l .
// S i s t e m a formado por : c o n d u c t o r i n t e r i o r ,
d i e l e c t r i c o , conductor e x t e r i o r y aire .
// c e n t r o d e l d i b u j o , punto a u x i l i a r no f i s i c o
Po in t ( 1 ) = { 0 , 0 , 0 } ;
// p a r a m e t r i z a n d o
r 1 =1; // c o n t o r n o e x t e r i o r d e l primer c o n d u c t o r
r 2=r 1 2 ; // c o n t o r n o e x t e r i o r d e l d i e l e c t r i c o
r 3=r 1 3 ; // c o n t o r n o e x t e r i o r d e l segundo
conductor
r_dominio=r 3 6 ; // c o n t o r n o e x t e r i o r ( l i m i t e ) d e l
dominio
l c 1 = 0 . 4 ; // l o n g i t u d c a r e c t e r i s t i c a d e l m a l l a d o
de l o s p u n t o s de l a f i g u r a
l c 2=l c 1 1 0 ; // l o n g i t u d c a r e c t e r i s t i c a d e l m a l l a d o
de l o s p u n t o s d e l l i m i t e de c o n t o r n o

14
15
4

Figura 2: Geometra de un cable coaxial visualizada en GMSH

16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57

// d e f i n i e n d o c i r c u n f e r e n c i a e n t r e c o n d u c t o r
interno y d i e l e c t r i c o
P oi n t ( 2 ) = { r1 , 0 , 0 } ;
P oi n t ( 3 ) = { 0 , r1 , 0 } ;
P oi n t ( 4 ) = {r1 , 0 , 0 } ;
P oi n t ( 5 ) = { 0 , r1 , 0 } ;
C i r c l e (1) = {5 , 1 , 2};
C i r c l e (2) = {2 , 1 , 3};
C i r c l e (3) = {3 , 1 , 4};
C i r c l e (4) = {4 , 1 , 5};
// d e f i n i e n d o c i r c u n f e r e n c i a e n t r e d i e l e c t r i c o y
conductor externo
P oi n t ( 6 ) = { r2 , 0 , 0 } ;
P oi n t ( 7 ) = { 0 , r2 , 0 } ;
P oi n t ( 8 ) = {r2 , 0 , 0 } ;
P oi n t ( 9 ) = { 0 , r2 , 0 } ;
C i r c l e (5) = {9 , 1 , 6};
C i r c l e (6) = {6 , 1 , 7};
C i r c l e (7) = {7 , 1 , 8};
C i r c l e (8) = {8 , 1 , 9};
// d e f i n i e n d o c i r c u n f e r e n c i a e n t r e c o n d u c t o r
externo y aire
P oi n t ( 1 0 ) = { r3 , 0 , 0 } ;
P oi n t ( 1 1 ) = { 0 , r3 , 0 } ;
P oi n t ( 1 2 ) = {r3 , 0 , 0 } ;
P oi n t ( 1 3 ) = { 0 , r3 , 0 } ;
C i r c l e (9) = {13 , 1 , 10};
C i r c l e (10) = {10 , 1 , 11};
C i r c l e (11) = {11 , 1 , 12};
C i r c l e (12) = {12 , 1 , 13};
// d e f i n i e n d o c i r c u n f e r e n c i a d e l c o n t o r n o
dirichlet
P oi n t ( 1 4 ) = { r_dominio , 0 , 0 } ;
P oi n t ( 1 5 ) = { 0 , r_dominio , 0 } ;
P oi n t ( 1 6 ) = {r_dominio , 0 , 0 } ;
P oi n t ( 1 7 ) = { 0 , r_dominio , 0 } ;
C i r c l e (13) = {17 , 1 , 14};
C i r c l e (14) = {14 , 1 , 15};
C i r c l e (15) = {15 , 1 , 16};
C i r c l e (16) = {16 , 1 , 17};
// d e f i e n d o a r e a s
L in e Loop ( 1 7 ) = { 2 , 3 , 4 , 1 } ;
6

58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75

Plane S u r f a c e ( 1 8 ) = { 1 7 } ; // c o n d u c t o r i n t e r n o
L in e Loop ( 1 9 ) = { 6 , 7 , 8 , 5 } ;
Plane S u r f a c e ( 2 0 ) = { 1 7 , 1 9 } ; // d i e l e c t r i c o
L in e Loop ( 2 1 ) = { 1 0 , 1 1 , 1 2 , 9 } ;
Plane S u r f a c e ( 2 2 ) = { 1 9 , 2 1 } ; // c o n d u c t o r
externo
L in e Loop ( 2 3 ) = { 1 4 , 1 5 , 1 6 , 1 3 } ;
Plane S u r f a c e ( 2 4 ) = { 2 1 , 2 3 } ; // a i r e
// d e f i n i e n d o r e g i o n e s de c o h e r e n c i a f i s i c a
Physical Surface (25) = {18};
Physical Surface (26) = {20};
Physical Surface (27) = {22};
Physical Surface (28) = {24};
P h y s i c a l Li ne ( 2 9 ) = { 1 5 , 1 6 , 1 3 , 1 4 } ;
// a s i g n a n d o p r e c i s i o n d e l m a l l a d o segun p u n t o s
C h a r a c t e r i s t i c Length { 1 1 , 7 , 3 , 5 , 9 , 1 3 , 1 2 , 8 ,
4 , 2 , 6 , 10} = l c 1 ;
C h a r a c t e r i s t i c Length { 1 4 , 1 5 , 1 6 , 17} = l c 2 ;

Las longitudes caractersticas de la densidad de mallado tambin se pueden


parametrizar, como se hace en el ejemplo para tener varias distintas para cada
zona, pero todas relacionadas por una relacin de multiplicidad.
En un archivo como el que se ha mostrado, realizar una figura variado el
tamao de algn elementos no requiere modificar todos los puntos, solo sera
necesario cambiar los valores de los parmetros.

5.2.

Archivos de otros programas

GMSH permite utilizar definiciones de geometra procedentes de otros programas, concretamente archivos con formato IGES, Step y BRep.
Tambin es posible importar (mediante una herramienta externa) archivos
dxf, pero en tal caso solo se asumirn puntos y lneas, as que ser necesario
definir superficies y elementos fsicos dentro del propio GMSH.

6.

Mdulo de mallado

GMSH crea mallados pensados para poder trabajar con elementos finitos,
con elementos punto, lnea y tringulo (hay otros, pero estos son los que utiliza
Femsii), por lo que en nuestro caso aplicaremos el mallado 2D a nuestras figuras.
En GMSH es posible modificar multitud de parmetros a la hora de crear un
mallado. En la ventana de opciones, seccin Mesh las encontraremos. Desde
modificar el algoritmo de mallado hasta tratar de eliminar los nodos asociados
a pocos elementos.

Figura 3: Mdulo mallado de GMSH

Figura 4: Opciones de mallado en GMSH

Figura 5: Triangulacin Delaunay: Se puede ver que al comprobar las circunferencias circunscritas de todos los tringulos, stas solo incluyen los nodos de
propio elemento. Por tanto se dice que es una triangulacin Delaunay.
En lo referente a los tipo de algoritmos de mallado, tradicionalmente GMSH
ha utilizado el mtodo Delaunay, aunque se ha ido aadiendo alguno ms.
Todas las opciones de mallado de GMSH permiten el mallado adaptativo,
lo quiere decir que es posible sealar zonas con mayor precisin de mallado, y
zonas con elementos ms grandes.

6.1.

La triangulacin Delaunay

El mallado principal que lleva a cabo el software GMSH utiliza el mtodo


postulado por el matemtico ruso Boris Nikolaevich Delone, la triangulacin
Delaunay (1934). Tal mtodo estipula que la circunferencia circunscrita de cada
tringulo del mallado no debe contener ningn vrtice de otro tringulo.
El triangulacin Delaunay es un mallado no estructurado, est formado por
10

Figura 6: Diagrama bsico de funcionamiento esquematizado por el desarrollador


de Meshadapt.
tringulos o tetraedros y, en cualquier caso, no tiene un orden matricial. Este
tipo de mallado es sencillo de ajustar a formas complejas, aunque es costoso de
calcular.
La definicin original de la triangulacin Delaunay se postul para dos dimensiones, aunque es posible aplicarla a espacios tridimensionales, utilizando
tetraedros en tal caso.
Tras realizar una triangulacin Delaunay obtendremos un mallado que maximiza los ngulos interiores de los tringulos que lo conforman, es decir, maximiza la extensin del ngulo ms pequeo de la red. Por tanto, el ngulo mnimo
dentro de todos los tringulos esta maximizado.

6.2.

Meshadapt

GMSH se apoya tambin en el software de mallado Meshadapt, desarrollado en el instituto politcnico de Rensselaer, Nueva York. Este software acepta
archivos de mallado, geometra y precisin de discretizacin para conseguir un
nuevo mallado mejor adaptado.
El mtodo consiste en aceptar un archivo de geometra donde se conocern
las lneas que definen una figura, un mallado inicial bsico de esa figura (requiere
un pre-mallado de baja calidad), y un mapa de tamao de mallado segn zonas.
Esto ltimo elemento consiste en una descripcin de la precisin del mallado
segn zonas (normalmente ms precisin en las zonas donde las variables en
estudio tienen mayor tendencia a variar).

6.3.

Archivo de mallado *.msh

Cuando se ha creado un mallado con GMSH, ste se guarda como archivo


de tipo *.msh . Un archivo de texto tipo ASCII en que se enumeran los puntos
y elementos de la discretizacin.
En el archivo se definir primeramente la versin del programa, para luego
comenzar a enumerar los nodos. Tras ello se enumeran los elementos, primero los
elementos punto, luego los elementos lnea y por ltimo los elementos tringulo.

11

Figura 7: Mallado creado con GMSH.

12

Este tipo de archivo es el que asume directamente Femsii para crear el sistema
de ecuaciones (una ecuacin por nodo).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

7.

$MeshFormat
2.1 0 8
$EndMeshFormat
$Nodes
448
1 1 0 0
2 0 1 0
...
447 0 . 9 9 4 7 3 1 0 1 7 2 6 8 2 0 5 2 3.376678531900242 0
448 0.9947310172682052 3 . 3 7 6 6 7 8 5 3 1 9 0 0 2 4 2 0
$EndNodes
$Elements
894
1 1 3 29 13 0 16 89
2 1 3 29 13 0 89 90
...
29 2 3 25 18 0 3 115 22
30 2 3 25 18 0 19 20 114
...
893 2 3 28 24 0 244 228 352
894 2 3 28 24 0 352 438 244
$EndElements

Mdulo de pro-procesado

El mdulo de pos-procesado de GMSH est asociado a los archivos de visualizacin, de hecho solo nos dar opciones en caso de tener abierto alguno.
Mencionar tres funciones de pos-procesado tiles en el contexto de Femsii.

7.1.

Rotacional (Curl)

El rotacional est incluido como extensin de GMSH (plugin), muy til pues
transforma nuestro campo vectorial de vector potencial magntico en un campo
vectorial de flujo magntico. GMSH realiza esta operacin internamente con
cada elemento, que contiene tres valores (uno por nodo) de potencial vector
magntico.

7.2.

Combinar distribuciones de vectores

Es posible combinar dos campos de vectores en uno solo, internamente para


GMSH sern dos campos en la misma vista. Esto es muy til en la caso de

13

Figura 8: Se va a aplicar a este campo de vectores la operacin rotacional.

14

Figura 9: Dos archivos de visualizacin abiertos simultneamente. A continuacin se van a combinar.

15

Figura 10: Aplicando HarmonicToTime a una campo de flujo magntico complejo.


que queramos trabajar con nmero complejos, una distribucin vectorial para
la parte real, y otra para la parte imaginaria.
Cada vez que se aplique otra funcin de pos-procesado, se aplicarn a todos
los campos de una misma vista.

7.3.

HarmonicToTime

HamonicToTime convierte un par de distribuciones de vectores (asimilados


como armnicos con sus partes reales e imaginarias) al dominio del tiempo
mediante la funcin:
tn = (parteReal) cos (parteImaginaria) sen
Donde
= 2 n/nT otal
Para
n = 0 n = nT otal
Donde nTotal es el numero total de pasos que se van a crear.
16

Figura 11: Tras aplicar CutPArametric.


Una vez creada la nueva vista, se crearn tantas distribuciones de vectores como pasos totales se hayan creado. Podemos visualizar el movimiento completo
pulsando en el botn avanzar de la parte baja de la ventana de GMSH.

7.4.

CutParametric

CutParametric corta la vista actual por una funcin dada y representa los
valores del campo de vectores en esa seccin. Esta funcin debe definirse como
dejando la variable u en funcin de: (X(u), Y(u), Z(u)). En el caso por ejemplo
de querer simplemente una lnea que corte una figura 2D por el origen se podra
especificar Y(u)=0, Z(u)=0, X(u)=u.

8.

Guiones GMSH (scripts)

El lenguaje ASCII propio de GMSH permite una gran versatilidad. Con el


mismo cdigo con el que se pueden crear figuras parametrizadas, tambin es

17

posible incluir bucles, que son muy tiles en el caso de querer dibujar objetos
de estructura cclica.
Es posible adems incluir a otros archivos GMSH en cualquier punto, con lo
que el cdigo puede ser fragmentado para aumentar la simpleza de cada parte
o para facilitar la reutilizacin de los proyectos ya desarrollados.
Adems de poder incluir funciones tpicas de diseo de figuras los guiones
GMSH pueden ser utilizados para definir una serie de rdenes a funciones propias
del programa. Entre las opciones en esta campo est la posibilidad de cargar
archivos, redimensionar la escala de la visualizacin, hacer ejecutar una extensin concreta o incluso realizar una captura de la imagen mostrada en la ventana
de GMSH.
Se muestran algunas de las opciones en el siguiente trozo de cdigo GMSH:
1
2
3
4
5
6
7
8
9
10
11

I n c l u d e "mesh . geo " ;


I n c l u d e " mshPotReal . veg " ;
P l u g i n ( Curl ) . Run ;
D e l e t e View [ 0 ] ;
G e n e r a l . GraphicsWidth = 4 0 0 ;
General . GraphicsHeight = 600;
G e n e r a l . ScaleX = 3 . 6 ;
G e n e r a l . ScaleY = 3 . 6 ;
General . ScaleZ = 3 . 6 ;
Print S p r i n t f ( " render . jpg " ) ;
Exit ;

Donde se incluyen las instrucciones:


Include

Importa un archivo GMSH.

Plugin()

Llama a un plugin concreto.

Delete

Borra un elemento.

General.GraphicsWidth Escala la ventana a una altura dada.


General.GraphicsHeight Escala la ventana a una anchura dada.
General.ScaleX Escalar la figura en el eje X.
General.ScaleY Escalar la figura en el eje Y.
General.ScaleZ Escalar la figura en el eje Z.
Print

Lanza la vista actual a un archivo.

Exit

Cierra GMSH.

El cdigo anterior capta una geometra y un mapa de vectores. Les aplica el


rotacional y borra la vista original. Escala ventana, escala la figura y hace un
captura de la vista que se muestra. Finaliza GMSH con Exist.
18

9.

Conclusin

Aunque son muchas las opciones de GMSH, en esta introduccin nos hemos
quedado en las ms importantes para Femsii. El manual oficial http://geuz.org/gmsh/doc/texinfo/gmsh.html
muestra el resto de opciones.
En cualquier caso GMSH formaba parte de los inicios del proyecto Femsii, y su visin generalista del mallado y la representacin sern muy tiles en
evoluciones de Femsii y otros programas relacionados con los elementos finitos.

Referencias
[1] http://www.scorec.rpi.edu/xli/MeshAdapt.html
[2] C. Geuzaine and J.-F. Remacle, Gmsh: a three-dimensional finite element
mesh generator with built-in pre- and post-processing facilities. International
Journal for Numerical Methods in Engineering, Volume 79, Issue 11, pages
1309-1331, 2009
[3] http://www.ifor.math.ethz.ch/fukuda/polyfaq/node30.html
[4] http://en.wikipedia.org/wiki/Delaunay_triangulation

19

Potrebbero piacerti anche