[Gmsh] Creating physical surfaces from loops
cédric doucet
cedric.doucet at live.fr
Tue Oct 30 15:41:16 CET 2012
Hello,
I am currently trying to define a mesh from a grid defined by loops but something does not work.
Actually, there is no message error from gmsh but the output result is not correct: a physical surface does not seem to be taken into account in the resulting msh file.
Here is defined my geometry (grid):
---------------------------------------------------------------------------
Printf("DEBUG")>"toto.txt";
// parametres de la geometrie
nrow = 7; // nombre de lignes (matrice)
ncol = 7; // nombre de colonnes (matrice)
step = 1;
nhe = (nrow+1)*ncol; // nombre aretes horizontales
nve = nrow*(ncol+1); // nombre aretes verticales
noe = nrow*ncol; // nombre aretes obliques
he={};
ve={};
oe={};
// points de la grille
For i In {1:nrow+1}
For j In {1:ncol+1}
idx = j+(i-1)*(ncol+1);
Point (idx) = {j-ncol-1,i-1,0};
EndFor
EndFor
// arêtes horizontales de la grille
cpt=1;
For i In {1:nrow+1}
For j In {1:ncol}
idx = j+(i-1)*(ncol+1);
Line (cpt) = {idx,idx+1};
he[cpt] = cpt;
cpt+=1;
EndFor
EndFor
// arêtes verticales de la grille
k=1;
For i In {1:nrow}
For j In {1:ncol+1}
idx = j+(i-1)*(ncol+1);
Line (cpt) = {idx,idx+ncol+1};
ve[k] = cpt;
cpt+=1;
k+=1;
EndFor
EndFor
// arêtes obliques de la grille
k=1;
For i In {1:nrow}
For j In {1:ncol}
idx = j+(i-1)*(ncol+1);
Line (cpt) = {idx,idx+ncol+2};
oe[k] = cpt;
cpt+=1;
k+=1;
EndFor
EndFor
// carres
carres={};
For i In {1:nrow}
For j In {1:ncol}
idx = j+(i-1)*ncol;
Line Loop (cpt) = {-ve[idx+i-1],he[idx],ve[idx+i],-he[idx+ncol]};
Plane Surface (cpt+1) = {cpt};
// Physical Surface ( Sprintf ("C%g%g",i,j)) = {cpt+1};
Printf("cpt = %g",cpt)>>"toto.txt";
carres[idx] = cpt+1;
Printf("carres[idx] = %g",carres[idx])>>"toto.txt";
cpt+=2;
EndFor
EndFor
// definition du guide
Physical Surface ("GUIDE1") = carres[1];
Physical Surface ("GUIDE2") = {carres[1],carres[2]};
carres_guide={};
For j In{1:2}
carres_guide[j] = carres[j];
EndFor
Physical Surface ("GUIDE3") = carres_guide;
---------------------------------------------------------------------------------------------------
At the end of this file, I try to define 3 physical surfaces: GUIDE1, GUIDE2 and GUIDE3.
The last physical surface (GUIDE3) does not seem to be correctly defined since I obtain the following msh file:
---------------------------------------------------------------------------------------------------------
$MeshFormat
2.2 0 8
$EndMeshFormat
$PhysicalNames
3
2 1 "GUIDE1"
2 2 "GUIDE2"
2 3 "GUIDE3"
$EndPhysicalNames
$Nodes
8
1 -7 0 0
2 -6 0 0
3 -5 0 0
4 -7 1 0
5 -6 1 0
6 -5 1 0
7 -6.5 0.5 0
8 -5.5 0.5 0
$EndNodes
$Elements
12
1 2 2 1 163 1 7 4
2 2 2 2 163 1 7 4
3 2 2 1 163 1 2 7
4 2 2 2 163 1 2 7
5 2 2 1 163 4 7 5
6 2 2 2 163 4 7 5
7 2 2 1 163 2 5 7
8 2 2 2 163 2 5 7
9 2 2 2 165 3 6 8
10 2 2 2 165 5 8 6
11 2 2 2 165 2 8 5
12 2 2 2 165 2 3 8
$EndElements
---------------------------------------------------------------------------------------------------------
In other words, no element is linked with GUIDE3.
Does anybody know how to overcome this problem?
Thank you very much for your help!
Cédric Doucet
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.geuz.org/pipermail/gmsh/attachments/20121030/eb14550f/attachment.html>