Hi Christophe,

it would be indeed a valuable feature if there is a command to reorient 
surfaces of volumes
automatically in a way that the normal is pointing outwards, as it would help 
to set the natural
boundary conditions with the correct sign :-)

Have a nice weekend
Michael


From: gmsh [mailto:[email protected]] On Behalf Of 
Christophe Geuzaine
Sent: Thursday, May 17, 2018 5:35 PM
To: Anderson Gabriel Santiago
Cc: [email protected]
Subject: Re: [Gmsh] [GMSH] Surface mesh for 3D solids




On 17 May 2018, at 15:07, Anderson Gabriel Santiago 
<[email protected]<mailto:[email protected]>> wrote:

Thank you for your response. But that is quite unexpected, since the normal 
vectors define the volume.

No: each surface can be connected to two volumes - the "natural" orientation 
with respect to the first volume will be the opposite one for the other.


So my question is, how can I make all the normal vectors point outward the 
volume? I am working with boundary element method and the normal vector 
orientation is really important to the method.

You can use the "Reverse Surface" to get the mesh oriented the way you want. 
For your example:

SetFactory("OpenCASCADE");
Point(1) = {0, 0, 0, 1.0};
Point(2) = {1, 0, 0, 1.0};
Point(3) = {1, 1, 0, 1.0};
Point(4) = {0, 1, 0, 1.0};
Point(5) = {0, 0, 1, 1.0};
Point(6) = {1, 0, 1, 1.0};
Point(7) = {1, 1, 1, 1.0};
Point(8) = {0, 1, 1, 1.0};
Line(1) = {1, 2};
Line(2) = {2, 6};
Line(3) = {6, 5};
Line(4) = {5, 1};
Line(5) = {5, 8};
Line(6) = {8, 4};
Line(7) = {4, 1};
Line(8) = {8, 7};
Line(9) = {7, 3};
Line(10) = {3, 4};
Line(11) = {6, 7};
Line(12) = {3, 2};
Line Loop(1) = {4, -7, -6, -5};
Plane Surface(1) = {1};
Line Loop(2) = {2, 11, 9, 12};
Plane Surface(2) = {2};
Line Loop(3) = {3, 5, 8, -11};
Plane Surface(3) = {3};
Line Loop(4) = {10, 7, 1, -12};
Plane Surface(4) = {4};
Line Loop(5) = {9, 10, -6, 8};
Plane Surface(5) = {5};
Line Loop(6) = {3, 4, 1, 2};
Plane Surface(6) = {6};
Surface Loop(1) = {4, 5, 2, 6, 3, 1};
Volume(1) = {1};
Reverse Surface{1:4};
Physical Surface(1) = {6};
Physical Surface(2) = {4, 2, 3, 1};
Physical Surface(3) = {5};
Physical Volume(4) = {1};

There is currently no interface to reorient surfaces automatically. We will 
probably add this in the future, as we already use such a feature internally 
for some 3D mesh algorithms.

Christophe




Thanks in advance,

On Thu, May 17, 2018 at 3:54 AM, Christophe Geuzaine 
<[email protected]<mailto:[email protected]>> wrote:


> On 16 May 2018, at 00:28, Anderson Gabriel Santiago 
> <[email protected]<mailto:[email protected]>> wrote:
>
> Dear all,
>
> I am using GMSH to create a 3D surface mesh. For some unknown reason, some 
> normal vectors points inwards, not outwards,

The mesh is oriented according to the orientation of the geometrical surface - 
everything is correct in your file. You can check by visualizing both the 
geometry and the mesh normals (in Tools->Options->Geometry or 
Mesh->Visibility->Normals)

Christophe


> as I would expect, since I defined a solid limited by plane surfaces.
>
> Here is the GEO file I created using the GMSH GUI.
>
>
> // Gmsh project created on Tue May 15 19:19:43 2018
> SetFactory("OpenCASCADE");
> //+
> Point(1) = {0, 0, 0, 1.0};
> //+
> Point(2) = {1, 0, 0, 1.0};
> //+
> Point(3) = {1, 1, 0, 1.0};
> //+
> Point(4) = {0, 1, 0, 1.0};
> //+
> Point(5) = {0, 0, 1, 1.0};
> //+
> Point(6) = {1, 0, 1, 1.0};
> //+
> Point(7) = {1, 1, 1, 1.0};
> //+
> Point(8) = {0, 1, 1, 1.0};
> //+
> Line(1) = {1, 2};
> //+
> Line(2) = {2, 6};
> //+
> Line(3) = {6, 5};
> //+
> Line(4) = {5, 1};
> //+
> Line(5) = {5, 8};
> //+
> Line(6) = {8, 4};
> //+
> Line(7) = {4, 1};
> //+
> Line(8) = {8, 7};
> //+
> Line(9) = {7, 3};
> //+
> Line(10) = {3, 4};
> //+
> Line(11) = {6, 7};
> //+
> Line(12) = {3, 2};
> //+
> Line Loop(1) = {4, -7, -6, -5};
> //+
> Plane Surface(1) = {1};
> //+
> Line Loop(2) = {2, 11, 9, 12};
> //+
> Plane Surface(2) = {2};
> //+
> Line Loop(3) = {3, 5, 8, -11};
> //+
> Plane Surface(3) = {3};
> //+
> Line Loop(4) = {10, 7, 1, -12};
> //+
> Plane Surface(4) = {4};
> //+
> Line Loop(5) = {9, 10, -6, 8};
> //+
> Plane Surface(5) = {5};
> //+
> Line Loop(6) = {3, 4, 1, 2};
> //+
> Plane Surface(6) = {6};
> //+
> Surface Loop(1) = {4, 5, 2, 6, 3, 1};
> //+
> Volume(1) = {1};
> //+
> Physical Surface(1) = {6};
> //+
> Physical Surface(2) = {4, 2, 3, 1};
> //+
> Physical Surface(3) = {5};
> //+
> Physical Volume(4) = {1};
>
> Any help is appreciated.
>
> --
> Anderson Gabriel Santiago
>
>
> ~"If you are depressed,
>    you are living in the past.
>    If you are anxious,
>    you are living in the future.
>    If you are at peace,
>    you are living in the present."~   - Lao Tzu
> _______________________________________________
> gmsh mailing list
> [email protected]<mailto:[email protected]>
> http://onelab.info/mailman/listinfo/gmsh



--
Anderson Gabriel Santiago, Ph.D., E.E.
Adjunct Professor, Biomedical Engineering - UFABC
[email protected]<mailto:[email protected]>
Cel.: +55 11 99801-0881<tel:%2811%29%2099801-0881>

~"If you are depressed,
   you are living in the past.
   If you are anxious,
   you are living in the future.
   If you are at peace,
   you are living in the present."~   - Lao Tzu

_______________________________________________
gmsh mailing list
[email protected]
http://onelab.info/mailman/listinfo/gmsh

Reply via email to