[Gmsh] Surface mesh for 3D solids

michael.asam at infineon.com michael.asam at infineon.com
Fri May 18 14:42:28 CEST 2018


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:gmsh-bounces at ace20.montefiore.ulg.ac.be] On Behalf Of Christophe Geuzaine
Sent: Thursday, May 17, 2018 5:35 PM
To: Anderson Gabriel Santiago
Cc: gmsh at onelab.info
Subject: Re: [Gmsh] [GMSH] Surface mesh for 3D solids




On 17 May 2018, at 15:07, Anderson Gabriel Santiago <agasantiago.usp at gmail.com<mailto:agasantiago.usp at gmail.com>> 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 <geuzaine at gmail.com<mailto:geuzaine at gmail.com>> wrote:


> On 16 May 2018, at 00:28, Anderson Gabriel Santiago <agasantiago.usp at gmail.com<mailto:agasantiago.usp at gmail.com>> 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
> gmsh at onelab.info<mailto:gmsh at onelab.info>
> http://onelab.info/mailman/listinfo/gmsh



--
Anderson Gabriel Santiago, Ph.D., E.E.
Adjunct Professor, Biomedical Engineering - UFABC
agasantiago.usp at gmail.com<mailto:santiago.eletrica at gmail.com>
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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://onelab.info/pipermail/gmsh/attachments/20180518/cd356d79/attachment-0001.html>


More information about the gmsh mailing list