[Gmsh] Periodic surfaces not working for second-order elements in gmsh4
Christophe Geuzaine
cgeuzaine at uliege.be
Sun Nov 25 09:09:44 CET 2018
> On 24 Nov 2018, at 16:56, Christophe Geuzaine <cgeuzaine at uliege.be> wrote:
>
>
>
>> On 23 Nov 2018, at 18:37, cgeuzaine at uliege.be wrote:
>>
>> Dear Martien,
>>
>> Indeed, the more advanced periodic meshing features introduced in Gmsh 4 currently require the transformation to be specified explicitly for high order meshes.
>>
>> @Koen - would it be possible to implement a fallback (that just assumes that the parametrizations are compatible, without checking) in your new algo, to restore Gmsh 3 compatibility for simple geometries?
>
> I have made the new optimization pass for high-order perdiodic meshes optional - using the same option that we already use for optimizing non-periodic high-order meshes. This should provide better backward compatibility with Gmsh 3.
>
There's now an independent option to control the correction of high-order periodic meshes (Mesh.HighOrderPeriodic). With this all our older test-cases behave the same by default with Gmsh 3 and Gmsh 4.
Christophe
> Can you test the latest snapshot and let us know?
>
> Christophe
>
>
>>
>> Christophe
>>
>>> On 23 Nov 2018, at 18:31, Hulsen, M.A. <M.A.Hulsen at tue.nl> wrote:
>>>
>>> Hi,
>>>
>>> The following geo file is not working correctly with gmsh -3 -order 2 (I am using 4.0.5) whereas it used to work in gmsh3.0.6.
>>>
>>> ox = 0.0;
>>> oy = 0.0;
>>> oz = 0.0;
>>> lx = 4.0;
>>> ly = 4.0;
>>> lz = 4.0;
>>> dx_box = 0.6;
>>> Point(1) = {ox, oy, oz, dx_box};
>>> Point(2) = {ox+lx, oy, oz, dx_box};
>>> Point(3) = {ox+lx, oy, oz+lz, dx_box};
>>> Point(4) = {ox, oy, oz+lz, dx_box};
>>> Point(5) = {ox, oy+ly, oz, dx_box};
>>> Point(6) = {ox+lx, oy+ly, oz, dx_box};
>>> Point(7) = {ox+lx, oy+ly, oz+lz, dx_box};
>>> Point(8) = {ox, oy+ly, oz+lz, dx_box};
>>> For i In {1:8}
>>> Physical Point(i) = i;
>>> EndFor
>>> Line(1) = {1, 2};
>>> Line(2) = {2, 3};
>>> Line(3) = {3, 4};
>>> Line(4) = {4, 1};
>>> Line(5) = {3, 7};
>>> Line(6) = {7, 6};
>>> Line(7) = {6, 2};
>>> Line(8) = {1, 5};
>>> Line(9) = {5, 8};
>>> Line(10) = {8, 4};
>>> Line(11) = {8, 7};
>>> Line(12) = {6, 5};
>>> Line Loop(1) = {1, 2, 3, 4};
>>> Line Loop(2) = {2, 5, 6, 7};
>>> Line Loop(3) = {12, 9, 11, 6};
>>> Line Loop(4) = {4, 8, 9, 10};
>>> Line Loop(5) = {3, -10, 11, -5};
>>> Line Loop(6) = {1, -7, 12, -8};
>>> For i In {1:6}
>>> Plane Surface(i) = {i};
>>> Physical Surface(i) = i;
>>> EndFor
>>> Periodic Surface 2{2,5,6,7} = 4{-4,-10,-9,-8};
>>> Periodic Surface 6{1,-7,12,-8} = 5{-3,5,-11,10};
>>> Periodic Surface 3{12,9,11,6}= 1{-1,-4,-3,-2};
>>> surf_loop[0] = newsl;
>>> Surface Loop(surf_loop[0]) = {1, 2, 3, 4, 5, 6};
>>> Volume(1) = {surf_loop[]} ;
>>> Physical Volume(1) = {1};
>>>
>>> Replacing the line loops with:
>>>
>>> Line Loop(1) = {-1,-4,-3,-2};
>>> Line Loop(2) = {2, 5, 6, 7};
>>> Line Loop(3) = {12, 9, 11, 6};
>>> Line Loop(4) = {-4,-10,-9,-8};
>>> Line Loop(5) = {-3,5,-11,10};
>>> Line Loop(6) = {1, -7, 12, -8};
>>>
>>> and the periodic surfaces with:
>>>
>>> Periodic Surface {2} = {4} Translate{lx,0,0};
>>> Periodic Surface {3} = {1} Translate{0,ly,0};
>>> Periodic Surface {5} = {6} Translate{0,0,lz};
>>>
>>> works both in gmsh3 and gmsh4. So I do have a workaround, but incompatibilities between 3 and 4 can lead to users avoiding the new version.
>>>
>>> Martien Hulsen
>>>
>>>
>>> _______________________________________________
>>> 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
>
> Free software: http://gmsh.info | http://getdp.info | http://onelab.info
—
Prof. Christophe Geuzaine
University of Liege, Electrical Engineering and Computer Science
http://www.montefiore.ulg.ac.be/~geuzaine
Free software: http://gmsh.info | http://getdp.info | http://onelab.info
More information about the gmsh
mailing list