[Gmsh] Creating physical surfaces from loops
Christophe Geuzaine
cgeuzaine at ulg.ac.be
Thu Jan 31 18:17:30 CET 2013
Hi Cédric - did you find the problem?
Christophe
On 30 Oct 2012, at 15:41, cédric doucet <cedric.doucet at live.fr> wrote:
> 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
>
>
> _______________________________________________
> gmsh mailing list
> gmsh at geuz.org
> http://www.geuz.org/mailman/listinfo/gmsh
--
Prof. Christophe Geuzaine
University of Liege, Electrical Engineering and Computer Science
http://www.montefiore.ulg.ac.be/~geuzaine