[Gmsh] Unexpected behavior with legacy file format
Christophe Geuzaine
cgeuzaine at uliege.be
Tue Jun 25 09:36:45 CEST 2019
Dear Jozsef,
Can you try the latest development snapshot? I think this should be fixed.
Christophe
> On 25 Jun 2019, at 09:23, Kópházi József <j.kophazi at imperial.ac.uk> wrote:
>
> 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;
>
>
>
> _______________________________________________
> gmsh mailing list
> gmsh at onelab.info
> http://onelab.info/mailman/listinfo/gmsh
—
Prof. Christophe Geuzaine
University of Liege, Electrical Engineering and Computer Science
http://www.montefiore.ulg.ac.be/~geuzaine
More information about the gmsh
mailing list