From 8855bc8652f211e55cd0560a64b9171219e24225 Mon Sep 17 00:00:00 2001 From: Christopher Lackner Date: Mon, 19 Aug 2019 20:33:49 +0200 Subject: [PATCH 1/2] test occ tutorials and test with python default parameters --- tests/pytest/results.py | 68 +++++++++++++++++----------------- tests/pytest/test_tutorials.py | 23 ++++++++---- 2 files changed, 50 insertions(+), 41 deletions(-) diff --git a/tests/pytest/results.py b/tests/pytest/results.py index 39f82c79..125fe417 100644 --- a/tests/pytest/results.py +++ b/tests/pytest/results.py @@ -1,34 +1,36 @@ number_elements = {} -number_elements['cylsphere.geo'] = (243,508,706,2665,16573) -number_elements['cubeandspheres.geo'] = (100,98,98,366,1078) -number_elements['ellipsoid.geo'] = (624,596,1255,5384,35591) -number_elements['manyholes2.geo'] = (126463,291489) -number_elements['sculpture.geo'] = (140,260,477,1316,6395) -number_elements['ortho.geo'] = (6,6,6,28,180) -number_elements['ellipticcone.geo'] = (574,1750,4635,12578,67070) -number_elements['cube.geo'] = (6,6,6,28,178) -number_elements['twobricks.geo'] = (22,22,42,177,587) -number_elements['revolution.geo'] = (1237,3779,7958,31475,192314) -number_elements['circle_on_cube.geo'] = (39,173,586,1860,11364) -number_elements['sphereincube.geo'] = (178,328,508,1584,12778) -number_elements['twocubes.geo'] = (22,22,42,177,587) -number_elements['boundarycondition.geo'] = (22,22,39,165,507) -number_elements['ellipticcyl.geo'] = (325,1090,2113,7594,52464) -number_elements['trafo.geo'] = (1358,2384,5081,16891,110333) -number_elements['boxcyl.geo'] = (146,370,820,3427,17236) -number_elements['sphere.geo'] = (56,80,126,347,2303) -number_elements['torus.geo'] = (2518,2715,5286,24144,169082) -number_elements['shaft.geo'] = (863,1743,2589,10855,59980) -number_elements['cone.geo'] = (441,706,1173,4298,25551) -number_elements['cubeandring.geo'] = (226,568,1942,7083,35417) -number_elements['manyholes.geo'] = (28638,69054) -number_elements['period.geo'] = (587,1362,3136,10876,64321) -number_elements['lshape3d.geo'] = (12,12,18,83,317) -number_elements['cubemsphere.geo'] = (737,1414,4090,16091,105619) -number_elements['twocyl.geo'] = (151,418,578,1838,12863) -number_elements['cubemcyl.geo'] = (3102,7714,17803,81423,491425) -number_elements['matrix.geo'] = (1936,2765,5005,15244,93613) -number_elements['fichera.geo'] = (18,18,35,211,477) -number_elements['cylinder.geo'] = (84,272,397,1152,7696) -number_elements['part1.stl'] = (328,501,1739,4054,76653) -number_elements['hinge.stl'] = (789,1130,2588,6595,125874) +number_elements['fichera.geo'] = (35,18,18,35,209,496) +number_elements['shaft.geo'] = (2609,874,1775,2609,11282,64486) +number_elements['revolution.geo'] = (9143,1252,3868,9143,33305,206010) +number_elements['twocubes.geo'] = (42,22,22,42,177,595) +number_elements['boxcyl.geo'] = (843,146,366,843,3739,18882) +number_elements['ellipticcyl.geo'] = (2202,324,1106,2202,8311,55941) +number_elements['trafo.geo'] = (5154,1358,2389,5154,17998,85820) +number_elements['cubeandspheres.geo'] = (98,100,98,98,366,1078) +number_elements['manyholes2.geo'] = (128420) +number_elements['cubeandring.geo'] = (2014,231,613,2014,7838,38997) +number_elements['period.geo'] = (3262,616,1380,3262,11758,69618) +number_elements['sphereincube.geo'] = (505,178,329,505,1665,14230) +number_elements['cube.geo'] = (6,6,6,6,43,177) +number_elements['sphere.geo'] = (126,56,80,126,347,2357) +number_elements['cylsphere.geo'] = (706,241,520,706,2826,17819) +number_elements['ellipticcone.geo'] = (4973,574,1774,4973,13530,71573) +number_elements['ortho.geo'] = (6,6,6,6,43,179) +number_elements['cylinder.geo'] = (404,101,282,404,1169,8164) +number_elements['twocyl.geo'] = (578,158,419,578,1899,13712) +number_elements['manyholes.geo'] = (176503,28935,70662) +number_elements['twobricks.geo'] = (42,22,22,42,177,595) +number_elements['lshape3d.geo'] = (18,12,12,18,93,324) +number_elements['sculpture.geo'] = (477,140,260,477,1331,6816) +number_elements['ellipsoid.geo'] = (1271,661,596,1271,5572,38616) +number_elements['matrix.geo'] = (5209,1946,2817,5209,16398,102850) +number_elements['cone.geo'] = (1215,501,698,1215,4437,27682) +number_elements['cubemcyl.geo'] = (19712,3255,8345,19712,90496,536232) +number_elements['boundarycondition.geo'] = (39,22,22,39,165,508) +number_elements['torus.geo'] = (5522,2530,2740,5522,25614,180197) +number_elements['circle_on_cube.geo'] = (636,39,189,636,2056,12409) +number_elements['cubemsphere.geo'] = (4737,776,1498,4737,17815,115493) +number_elements['part1.stl'] = (1228,347,520,1804,4317,84101) +number_elements['hinge.stl'] = (1995,789,1130,2612,6945,136803) +number_elements['frame.step'] = (112262,43857,59126) +number_elements['screw.step'] = (798,1521,7252) diff --git a/tests/pytest/test_tutorials.py b/tests/pytest/test_tutorials.py index cde78728..e34bfd0c 100644 --- a/tests/pytest/test_tutorials.py +++ b/tests/pytest/test_tutorials.py @@ -1,12 +1,14 @@ import os, pytest -from netgen.meshing import meshsize +from netgen.meshing import meshsize, MeshingParameters, SetMessageImportance import netgen.gui import netgen.csg as csg import netgen.stl as stl -import netgen.csg as csg +import netgen.occ as occ from results import * +SetMessageImportance(0) + def getFiles(fileEnding): r, d, files = next(os.walk(os.path.join("..","..","tutorials"))) return (f for f in files if f.endswith(fileEnding)) @@ -27,17 +29,22 @@ def getResultFunc(filename): return resultFunc def getMeshingparameters(filename): - standard = (meshsize.very_coarse, meshsize.coarse, meshsize.moderate, meshsize.fine, meshsize.very_fine) + standard = [{}] + [{ "mp" : ms } for ms in (meshsize.very_coarse, meshsize.coarse, meshsize.moderate, meshsize.fine, meshsize.very_fine)] if filename == "shell.geo": return [] # do not test this example cause it needs so long... if filename == "extrusion.geo": return [] # this segfaults right now - if filename == "manyholes2.geo" or filename == "manyholes.geo": - return standard[:2] # this gets too big for finer meshsizes + if filename == "manyholes2.geo": + return [standard[1]] # this gets too big for finer meshsizes + if filename in ("manyholes.geo", "frame.step"): + return standard[:3] # this gets too big for finer meshsizes + if filename == "screw.step": + return standard[3:] # coarser meshes don't work here return standard -# don't test step files as they do not respect all meshing parameters correctly yet. -_geofiles = [f for f in getFiles(".geo")] + [f for f in getFiles(".stl")] # + [f for f in getFiles(".step")] +# TODO: step files do not respect gui meshsizes yet. +_geofiles = [f for f in getFiles(".geo")] + [f for f in getFiles(".stl")] + [f for f in getFiles(".step")] + def generateMesh(filename, mp): if filename.endswith(".geo"): @@ -46,7 +53,7 @@ def generateMesh(filename, mp): geo = stl.STLGeometry(os.path.join("..","..","tutorials", filename)) elif filename.endswith(".step"): geo = occ.OCCGeometry(os.path.join("..","..","tutorials", filename)) - return geo.GenerateMesh(mp) + return geo.GenerateMesh(**mp) @pytest.mark.parametrize("filename, checkFunc", [(f, getCheckFunc(f)) for f in _geofiles]) def test_geoFiles(filename, checkFunc): From 80aabd411095e442b253d8d7b272039f05f740eb Mon Sep 17 00:00:00 2001 From: Christopher Lackner Date: Wed, 21 Aug 2019 17:28:09 +0200 Subject: [PATCH 2/2] test occ files only when compiled with support --- tests/pytest/test_tutorials.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/pytest/test_tutorials.py b/tests/pytest/test_tutorials.py index e34bfd0c..a5e1bd84 100644 --- a/tests/pytest/test_tutorials.py +++ b/tests/pytest/test_tutorials.py @@ -4,7 +4,11 @@ from netgen.meshing import meshsize, MeshingParameters, SetMessageImportance import netgen.gui import netgen.csg as csg import netgen.stl as stl -import netgen.occ as occ +try: + import netgen.occ as occ + has_occ = True +except ImportError: + has_occ = False from results import * SetMessageImportance(0) @@ -43,7 +47,9 @@ def getMeshingparameters(filename): return standard # TODO: step files do not respect gui meshsizes yet. -_geofiles = [f for f in getFiles(".geo")] + [f for f in getFiles(".stl")] + [f for f in getFiles(".step")] +_geofiles = [f for f in getFiles(".geo")] + [f for f in getFiles(".stl")] +if has_occ: + _geofiles += [f for f in getFiles(".step")] def generateMesh(filename, mp):