[Gmsh] Unexpected behavior with legacy file format

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


Dear Christophe,

The dev snapshot is working fine. Thank you,

Jozsef


On 25/06/2019 09:36, Christophe Geuzaine wrote:
> 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