From 6bf64fbece8085b2999f5082223e3d40b64f4505 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@uliege.be>
Date: Thu, 12 May 2022 21:16:44 +0200
Subject: [PATCH] keep track of orientation

---
 examples/api/mirror_mesh.py | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/examples/api/mirror_mesh.py b/examples/api/mirror_mesh.py
index 9677425226..a3c9dcc376 100644
--- a/examples/api/mirror_mesh.py
+++ b/examples/api/mirror_mesh.py
@@ -4,15 +4,17 @@
 
 import gmsh
 import sys
+import math
 
 gmsh.initialize()
 
 # create a simple non-uniform mesh of a rectangle
 gmsh.model.occ.addRectangle(0,0,0, 1,0.5)
+#gmsh.model.occ.addBox(0,0,0, 1,0.5,0.5)
 gmsh.model.occ.synchronize()
 gmsh.model.mesh.setSize(gmsh.model.getEntities(0), 0.1)
 gmsh.model.mesh.setSize([(0, 2)], 0.01)
-gmsh.model.mesh.generate(2)
+gmsh.model.mesh.generate(3)
 
 # get the mesh data
 m = {}
@@ -25,8 +27,9 @@ for e in gmsh.model.getEntities():
 # transform the mesh and create new discrete entities to store it
 def transform(m, offset_entity, offset_node, offset_element, tx, ty, tz):
     for e in sorted(m):
-        gmsh.model.addDiscreteEntity(e[0], e[1] + offset_entity,
-                                     [abs(b[1]) + offset_entity for b in m[e][0]])
+        gmsh.model.addDiscreteEntity(
+            e[0], e[1] + offset_entity,
+            [(abs(b[1]) + offset_entity) * math.copysign(1, b[1]) for b in m[e][0]])
         coord = []
         for i in range(0, len(m[e][1][1]), 3):
             x = m[e][1][1][i] * tx
-- 
GitLab