@@ -9,7 +9,7 @@ const UNSET = 0
9
9
# some cartesian-like grids can also have affine maps. You can force the creation of
10
10
# affine maps by setting has_affine_map=true.
11
11
12
- function GmshDiscreteModel (mshfile; renumber= true , has_affine_map= nothing )
12
+ function GmshDiscreteModel (mshfile; renumber= true , has_affine_map= nothing , positive = nothing )
13
13
@check_if_loaded
14
14
if ! isfile (mshfile)
15
15
error (" Msh file not found: $mshfile " )
@@ -22,18 +22,18 @@ function GmshDiscreteModel(mshfile; renumber=true, has_affine_map=nothing)
22
22
gmsh. open (mshfile)
23
23
renumber && gmsh. model. mesh. renumberNodes ()
24
24
renumber && gmsh. model. mesh. renumberElements ()
25
- model = GmshDiscreteModel (gmsh;has_affine_map)
25
+ model = GmshDiscreteModel (gmsh;has_affine_map,positive )
26
26
gmsh. finalize ()
27
27
model
28
28
end
29
29
30
- function GmshDiscreteModel (gmsh:: Module ; has_affine_map= nothing )
30
+ function GmshDiscreteModel (gmsh:: Module ; has_affine_map= nothing , positive = nothing )
31
31
Dc = _setup_cell_dim (gmsh)
32
32
Dp = _setup_point_dim (gmsh,Dc)
33
33
node_to_coords = _setup_node_coords (gmsh,Dp)
34
34
nnodes = length (node_to_coords)
35
35
vertex_to_node, node_to_vertex = _setup_nodes_and_vertices (gmsh,node_to_coords)
36
- grid, cell_to_entity = _setup_grid (gmsh,Dc,Dp,node_to_coords,node_to_vertex;has_affine_map)
36
+ grid, cell_to_entity = _setup_grid (gmsh,Dc,Dp,node_to_coords,node_to_vertex;has_affine_map,positive )
37
37
cell_to_vertices, vertex_to_node, node_to_vertex = _setup_cell_to_vertices (grid,vertex_to_node,node_to_vertex)
38
38
grid_topology = UnstructuredGridTopology (grid,cell_to_vertices,vertex_to_node)
39
39
labeling = _setup_labeling (gmsh,grid,grid_topology,cell_to_entity,vertex_to_node,node_to_vertex)
@@ -78,12 +78,14 @@ function _setup_nodes_and_vertices_periodic(gmsh,dimTags,nnodes)
78
78
vertex_to_node, node_to_vertex
79
79
end
80
80
81
- function _setup_grid (gmsh,Dc,Dp,node_to_coords,node_to_vertex;has_affine_map= nothing )
81
+ function _setup_grid (gmsh,Dc,Dp,node_to_coords,node_to_vertex;has_affine_map= nothing ,positive = nothing )
82
82
83
83
if ( Dp == 3 && Dc == 2 ) || ( Dp == 2 && Dc == 1 )
84
84
orient_if_simplex = false
85
- else
85
+ elseif isnothing (positive)
86
86
orient_if_simplex = true
87
+ else
88
+ orient_if_simplex = ! positive
87
89
end
88
90
89
91
cell_to_nodes, nminD = _setup_connectivity (gmsh,Dc,node_to_vertex,orient_if_simplex)
0 commit comments