+++ /dev/null
-#!/usr/bin/env python
-import sys
-import salome
-
-salome.salome_init()
-
-from os import path
-import tempfile
-import subprocess
-
-import GEOM, SMESH, SALOMEDS
-
-from salome.geom import geomBuilder
-from salome.smesh import smeshBuilder
-
-import math
-
-smesh = smeshBuilder.New()
-geompy = geomBuilder.New()
-
-import medcoupling as mc
-
-def create_param_file(param_file):
- """ Create a parameter file for runner """
- param = """1
-34.64
-0.14
-16
-0.15
-1.5
-0
-0
-1
-5
-1
-1
--1
-3
-3
-0.2
-2
-1
-0
-0
-2
-2
-0
-
-0
-0
-0"""
- with open(param_file, "w") as ffile:
- ffile.write(param)
-
-
-def test_netgen3d():
- """ Test netgen3d mesher """
- # Building geometry
- box = geompy.MakeBoxDXDYDZ(200, 200, 200)
-
- geompy.ExtractShapes(box, geompy.ShapeType["FACE"], True)
- groupe_1 = geompy.CreateGroup(box, geompy.ShapeType["FACE"])
- geompy.UnionIDs(groupe_1, [3, 13, 23, 27, 31, 33])
-
- [_, _, _, _, _, _, groupe_1] = geompy.GetExistingSubObjects(box, False)
-
- # Creating 2D mesh
- netgen_2d_parameters_1 = smesh.CreateHypothesisByAverageLength(
- 'NETGEN_Parameters_2D', 'NETGENEngine', 34.641, 0)
- mesh_2d = smesh.Mesh(groupe_1, 'Maillage_1')
- mesh_2d.AddHypothesis(groupe_1, netgen_2d_parameters_1)
- mesh_2d.Triangle(algo=smeshBuilder.NETGEN_1D2D)
- is_done = mesh_2d.Compute()
- assert is_done
- smesh.SetName(mesh_2d, 'Maillage_1')
-
- with tempfile.TemporaryDirectory() as tmp_dir:
- mesh_file = path.join(tmp_dir, "mesh.med")
- shape_file = path.join(tmp_dir, "shape.step")
- param_file = path.join(tmp_dir, "param.txt")
- output_mesh = path.join(tmp_dir, "mesh3D.med")
-
- print("Running in folder: ", tmp_dir)
- create_param_file(param_file)
-
- mesh_2d.ExportMED(mesh_file, 0, 41, 1, mesh_2d, 1, [], '', -1, 1)
- geompy.ExportSTEP(box, shape_file, GEOM.LU_METER)
-
- runner = path.join("${NETGENPLUGIN_ROOT_DIR}",
- "bin",
- "salome",
- "NETGENPlugin_Runner")
-
- if sys.platform == 'win32':
- runner += ".exe"
-
- cmd = "{runner} NETGEN3D {mesh_file} {shape_file} "\
- "{param_file} NONE NONE {output_mesh}"\
- .format(runner=runner,
- mesh_file=mesh_file,
- shape_file=shape_file,
- param_file=param_file,
- output_mesh=output_mesh)
- print(cmd)
- subprocess.check_call(cmd, shell=True)
-
- mesh_read = mc.ReadUMeshFromFile(output_mesh, "MESH", 0)
-
- nb_tetras = mesh_read.getNumberOfCellsWithType(mc.NORM_TETRA4)
- nb_points = mesh_read.getNumberOfNodes()
-
- mesh_read = mc.ReadUMeshFromFile(output_mesh, "MESH", -1)
- nb_triangles = mesh_read.getNumberOfCellsWithType(mc.NORM_TRI3)
-
- mesh_read = mc.ReadUMeshFromFile(output_mesh, "MESH", -2)
- nb_segments = mesh_read.getNumberOfCellsWithType(mc.NORM_SEG2)
-
- print("Nb Tetras:", nb_tetras)
- print("Nb Triangles:", nb_triangles)
- print("Nb Segments:", nb_segments)
- print("Nb Points:", nb_points)
-
- assert nb_points > 0
- assert nb_segments > 0
- assert nb_triangles > 0
- assert nb_tetras > 0
-
-if __name__ == "__main__":
- test_netgen3d()