I wanted to create a triangular Transfinite Surface mesh , but was not able to 
control the position of the initial triangle created by gmsh (the corners 
always have only element, as in 1.png). 

After looking at the code I swapped the logic in Mesh/meshGFaceTransfinite.cpp
from 
                ((i % 2 == 0 && j % 2 == 1) ||
                 (i % 2 == 1 && j % 2 == 0)))){ 
to
                ((i % 2 == 0 && j % 2 == 0) ||
                  (i % 2 == 1 && j % 2 == 1)))){
and managed to obtain the result that I wanted (in 2.png).

Is there an easier way to achieve this? 

If there isn't, it would not be too complicated to include an additional 
option to Transfinite Surface, so that instead of "Left, Right and Alternate" 
we could opt between  "Left, Right AlternateLeft and AlternateRight", with 
Alternate still legal and equivalent to the current option.

I should be able to propose a patch (not now...), but before I start opinions 
are welcome.

Regards

ZP

PS: I also considered the idea of adding an additional option, which would 
create a mesh where both diagonals are always inserted, so that using 

Transfinite Line{1,2,3,4} = 2;
Transfinite Surface {6} = {1, 2, 3, 4} "OtherNewOption";

in the attached file, would result in 3.png.

I understand that an additional set of vertices is needed, and this is not so 
immediate. Would it be too complicated to include them in the code?
Point(1) = {0, 0, 0, 1};
Point(2) = {1, 0, 0, 1};
Point(3) = {1, 1, 0, 1};
Point(4) = {0, 1, 0, 1};
Line(1) = {1, 2};
Line(2) = {2, 3};
Line(3) = {3, 4};
Line(4) = {4, 1};
Line Loop(5) = {3, 4, 1, 2};
Plane Surface(6) = {5};

Transfinite Line{1,2,3,4} = 3;
Transfinite Surface {6} = {1, 2, 3, 4} Alternate;

<<attachment: 1.png>>

<<attachment: 2.png>>

<<attachment: 3.png>>

_______________________________________________
gmsh mailing list
[email protected]
http://www.geuz.org/mailman/listinfo/gmsh

Reply via email to