[Gmsh] Unexpected behavior with legacy file format

Kópházi József j.kophazi at imperial.ac.uk
Tue Jun 25 09:23:33 CEST 2019


Dear Gmsh users,

I created a simple extruded model in gmsh and the mesh was written into 
a legacy format file (2.2). Then I'm trying to load the very same mesh 
into the same version of gmsh and it keeps complaining about missing 
periodic features.

Typical error messages:

Info    : Could not find periodic slave entity 5 of dimension 0
Info    : Could not find periodic master entity 2 of dimension 0
... several more like these ...
Info    : Could not find periodic slave entity 30 of dimension 1
Info    : Could not find periodic master entity 6 of dimension 1
Info    : Could not find copy of vertex 6 in face 26, looking in entity 
17 of dimension 2
Error   : Could not find copy of vertex 6 in 26 nor in 17

The problem occurs with gmsh 4.2.2 and 4.3.0 as well. If I use file 
format 4.1 or revert to an older version of gmsh (3.0.1) the problem 
disappears.

I never tried or wanted to produce any periodic information in the mesh 
file. Is there any way to disable emission of periodic information?

Thank you,

J


Input file:

// Set the defaults
If ( !Exists( divisions ) )
     divisions = 5;
EndIf
If( !Exists( base_structured ) )
     base_structured=0;
EndIf
If( !Exists( steel_hex ) )
     steel_hex=1;
EndIf
If( !Exists( lead_hex ) )
     lead_hex=1;
EndIf

// Points
internal_point = newp;    Point( internal_point)     = {  0.00 ,   
0.00,   0.00, 1.0};
middle_point = newp;    Point( middle_point)     = {  2.00     , 0.00,   
0.00, 1.0};
external_point = newp;    Point( external_point)     = { 12.06 ,   
0.00,   0.00, 1.0};


// Lines
steel_line = newl;        Line( steel_line) = {internal_point, 
middle_point};
lead_line = newl;        Line( lead_line) = {middle_point, external_point};

// Extrude the whole thing to form the disk we need
If( base_structured == 1 )

     If( steel_hex == 1 )
         sout[] = Extrude{ { 0.0, 0.0, 1.0 }, { 0.0, 0.0, 0.0 }, Pi/2 }
         {    Line { steel_line };
             Layers{ 5*divisions };
             Recombine;    };
     Else
         sout[] = Extrude{ { 0.0, 0.0, 1.0 }, { 0.0, 0.0, 0.0 }, Pi/2 }
         {    Line { steel_line };
             Layers{ 5*divisions };    };
     EndIf

     If( lead_hex == 1 )
         lout[] = Extrude{ { 0.0, 0.0, 1.0 }, { 0.0, 0.0, 0.0 }, Pi/2 }
         {    Line { lead_line };
             Layers{ 5*divisions };
             Recombine;    };
     Else
         lout[] = Extrude{ { 0.0, 0.0, 1.0 }, { 0.0, 0.0, 0.0 }, Pi/2 }
         {    Line { lead_line };
             Layers{ 5*divisions };    };
     EndIf

Else

     sout[] = Extrude{ { 0.0, 0.0, 1.0 }, { 0.0, 0.0, 0.0 }, Pi/2 }
     {    Line { steel_line };    };
     If( steel_hex == 1 )
         Recombine Surface{sout[1]};
     EndIf

     lout[] = Extrude{ { 0.0, 0.0, 1.0 }, { 0.0, 0.0, 0.0 }, Pi/2 }
     {    Line { lead_line };    };
     If( lead_hex == 1 )
         Recombine Surface{lout[1]};
     EndIf

EndIf

Coherence;

// Pick up new entities
//Printf( "%f %f %f %f", sout[0], sout[1], sout[2], sout[3] );
steel_otherside_line = sout[0];
steel_surface = sout[1];

//Printf( "%f %f %f %f", lout[0], lout[1], lout[2], lout[3] );
lead_otherside_line = lout[0];
lead_surface = lout[1];

middle_line = sout[2];
external_line = lout[2];

// Transfinite settings
Transfinite Line { steel_line}                = 1*divisions +1 Using 
Progression 1.;
Transfinite Line { lead_line}                = 5*divisions +1 Using 
Progression 1.;

Transfinite Line { steel_otherside_line}    = 1*divisions +1 Using 
Progression 1.;
Transfinite Line { lead_otherside_line}        = 5*divisions +1 Using 
Progression 1.;

If( !(base_structured == 1) )
     Transfinite Line { middle_line}        = 1.5*1*divisions +1 Using 
Progression 1.;
     Transfinite Line { external_line}    = 1.5*5*divisions +1 Using 
Progression 1.;
EndIf


// Extrude everything vertically
vout = Extrude{ 0.0, 0.0, 2.0 }
             {    Surface{ steel_surface, lead_surface };
                 Layers{ divisions };
                 Recombine; };

// Pick up new surfaces and volumes
steel_top_surface = vout[0];
steel_volume = vout[1];
steel_left_surface = vout[2];
middle_surface = vout[3];
steel_back_surface = vout[4];

lead_top_surface = vout[5];
lead_volume = vout[6];
lead_left_surface = vout[7];
external_surface = vout[8];
lead_back_surface = vout[9];


// Physical domains
Physical Surface("ExternalSurface") = {external_surface};
Physical Surface("MiddleSurface") = {middle_surface};

Physical Surface("SteelLeftSurface") = {steel_left_surface};
Physical Surface("LeadLeftSurface") = {lead_left_surface};
Physical Surface("SteelOtherSurface") = {steel_back_surface};
Physical Surface("LeadOtherSurface") = {lead_back_surface};

Physical Surface("SteelBottomSurface") = {steel_surface};
Physical Surface("SteelTopSurface") = {steel_top_surface};

Physical Surface("LeadlBottomSurface") = {lead_surface};
Physical Surface("LeadTopSurface") = {lead_top_surface};

Physical Volume("SteelVolume") = {steel_volume};
Physical Volume("LeadVolume") = {lead_volume};



// Save it in old format
Mesh.MshFileVersion = 2.2;





More information about the gmsh mailing list