[Gmsh] Conformal surfaces.

Zenker, Dr. Matthias Matthias.Zenker at erbe-med.com
Wed Oct 7 12:57:37 CEST 2015


Hi,

„conformal“ means that the mesh should be unique for interfaces between touching bodies.
In order to achieve that, you need to make sure that no interface between bodies is duplicated.
If you have a smaller surface on top of a larger one, you have to define the larger surface with the boundary line of the smaller one as a hole - that is what you did with surfaces 200 and 201.
Then just define your rectangular volume using both surfaces. You don’t need to make a compound or the like.

HTH,

Matthias

Von: I+D Magna Medic [mailto:ingenieria at magnamedic.com]
Gesendet: Dienstag, 6. Oktober 2015 12:23
An: gmsh at geuz.org
Betreff: [Gmsh] Conformal surfaces.


Dear gMeshers,

I want to build three volumes as input mesh for my solver software (ELMER).  In order to make the current flow I've been adviced to make the surfaces between them "conformal".

The structure is very simple: a rectangular parallelepiped (30cm x 30 cm x 20 cm height) and two cilinders touching that body on the top and bottom faces. The cilinders act as electrodes (3mm height , 22 cm diameter).

The only thing that I need to know is how to make the coincident surfaces "conformal". I think that this means that they should be exactly equal or maybe the same surface.

My geo file looks like this: (for simplicity I'll detail the bottom cilinder only)

R = 0.11;

Point(1) = {-0.15, -0.15, -0.1, 0.1}; //Bottom face for parallelepiped
Point(2) = {0.15, -0.15, -0.1, 0.1};
Point(3) = {0.15, 0.15, -0.1, 0.1};
Point(4) = {-0.15, 0.15, -0.1, 0.1};
Line(1) = {3, 4};
Line(2) = {4, 1};
Line(3) = {1, 2};
Line(4) = {2, 3};
Line Loop(100) = {1, 2, 3, 4};

Point(5) = { 0, 0, -0.10, 0.1}; //Center for the base of the cilinder
Point(6) = { R, 0, -0.10, 0.1};
Point(7) = { 0, -R, -0.10, 0.1};
Point(8) = {-R, 0, -0.10, 0.1};
Point(9) = { 0, R, -0.10, 0.1};
//Arcs
Circle(5) = {6, 5, 7};
Circle(6) = {7, 5, 8};
Circle(7) = {8, 5, 9};
Circle(8) = {9, 5, 6};
Line Loop(101)= {5, 6, 7, 8};

Now I tried several strategies without good results.

If I make a compound surface, the new one is different than the base of the cilinder, let me explain:

Plane Surface (200) = {100, 101};
Plane Surface (201) = {101};
Compound Surface (203) = {200, 201};

The mesh generated by the surface 203 is quite different from those generated by 200 or 201. Then I tried:

boundMaster[] = Boundary{Surface{203};};
boundSlave[] = Boundary{Surface{201};};
Periodic Surface 201 {boundSlave[]} = 203 {boundMaster[]};

But this throws an error because boundMaster is empty, this surprised me. And if I try to select boundaries by hand gMSH throws "Impossible to take boundaries of entity 203 (of type 307)".

My second trial was:

Plane Surface (200) = {100}; //Base of the parallelepiped
Plane Surface (201) = {101}; //Base of the cilinder

boundMaster[] = Boundary{Surface{200};};
boundSlave[] = Boundary{Surface{201};};
Periodic Surface 201 {boundSlave[]} = 200 {boundMaster[]};

This trows: (even if create circles "In Surface 200")

Error : parallel planes do not intersect
Error : parallel planes do not intersect
Error : Only rotations or translations can currently be computed automatically for periodic faces: face 201 not meshed.

What would you do?

Thanks in advance, this is halting my work and any help would be appreciated.




_____________________________________________________________________
ERBE Elektromedizin GmbH
Firmensitz: 72072 Tuebingen
Geschaeftsfuehrer: Christian O. Erbe, Reiner Thede
Registergericht: Stuttgart HRB 380137

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.geuz.org/pipermail/gmsh/attachments/20151007/5b7f8be0/attachment.html>