[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