Startpage >> Main >> GMSH3D

GMSH 3 D

Transfert des labels des surfaces entre GMSH et FreeFem.

Voila le message de Bernard...

Bonjour,
Je voudrais publier sur ton site un article sur le transfert des labels des surfaces entre GMSH et FreeFem,
car ce problème est mal documenté sur le net, et j’ai du chercher longtemps avant de trouver une solution.
En référence, il faut mettre les articles suivants :

Un TP  de l’université de Bordeaux : http://www.math.u-bordeaux1.fr/~durufle/teaching/Fortran/tp4/tp4.php
Et surtout, un tutorial d’OpenFoam : http://openfoamwiki.net/index.php/2D_Mesh_Tutorial_using_GMSH

Dont voici l’extrait principal :

Si GMSH ne contient que peu de Solveurs et n’est pas très adapté à la résolution de FEM, 
il est plus intuitif pour fabriquer une pièce.

De base : GMSH manipule des dessins 2D et très vite 3D, tandis que FreeFem manipule 
des objets définis par leurs coordonnées 2D puis les déplace en 3D. Faire un pont entre 
les deux logiciels faciliteraient la vie des utilisateurs car FreeFem n’est pas très bavard 
quand il se crash dans le meshage.....

Full info here pdf file

3D GMSH mesh
VelocityPressure

download example: essailectureGMSH.edp, download GMSH mesh essai.msh, or return to 3D examples

Thanks to Bernard Barrois bernard.barrois@mpsa.com

load "gmsh"
load "medit"
load "tetgen"
verbosity = 1;

// example gmsh
// 
// Read from different directory
//
//mesh3 Th1 = gmshload3("C:/User/P013144/FreeFem/3D/GMSH/toto/essai..msh");
// 
// Read from the same directory
//
mesh3 Th1 = gmshload3("essai.msh");

plot (Th1,cmm="Th mesh read from GMSH",wait=1);
// 
// Save mesh on different directory
//
//savemesh(Th1,"C:/User/P013144/FreeFem/3D/GMSH/toto/Th33.mesh");
// 
// Save mesh on same directory
//
savemesh(Th1,"Th33.mesh");
//
// Transform to FreeFem++ format
//  
mesh3 Th = tetg(Th1,switch="pqaAAYYQ");// discrétisation de la salle et des racks


fespace VVh(Th,[P2,P2,P2,P1]);

macro Grad(u) [dx(u),dy(u),dz(u)]// EOM
macro div(u1,u2,u3) (dx(u1)+dy(u2)+dz(u3)) //EOM

VVh [u1,u2,u3,p];
VVh [v1,v2,v3,q];

solve vStokes([u1,u2,u3,p],[v1,v2,v3,q]) =
                int3d(Th)( Grad(u1)'*Grad(v1) +  Grad(u2)'*Grad(v2) +  Grad(u3)'*Grad(v3) //)';
               - div(u1,u2,u3)*q - div(v1,v2,v3)*p + 1e-10*q*p )
                 +on (30,p=0)
/*
Physical Surface(29)  // top
Physical Surface(30)  // botton
Physical Surface(31)  // droite
Physical Surface(32)  // gauche
Physical Surface(33)  // derriere
Physical Surface(34)  // devant
*/
 + on (29 , u1 = 0,  u2 = 4,  u3 = 0)  	//u2=4  Physical Surface(29)  // top
 + on (30 , u1 = 0,  u2 = -2, u3 = 0) 	//u2=-2 Physical Surface(30)  // botton
 + on (31 , u1 = 0,  u2 = 0,  u3 = 6) 	//u3=6	Physical Surface(31)  // droite
 + on (32 , u1 = 0,  u2 = 0,  u3 = -1)	//u3=-1	Physical Surface(32)  // gauche
 + on (33 , u1 = 1,  u2 = 0,  u3 = 0) 	//u1=1	Physical Surface(33)  // derriere
 + on (34 , u1 = -1, u2 = 0,  u3 = 0)	//u1=-1	Physical Surface(34)  // devant
  + on(20,u1=0,u2=0,u3=0) // etanche
; // fin des conditions aux limites

medit("velocity",Th,[u1,u2,u3],order=1,wait=1);
medit("pressure",Th,p,order=1,wait=1);



return to 3D examples

Page last modified on April 02, 2014, at 10:30 PM