add plane test

This commit is contained in:
Christopher Lackner 2019-10-07 13:41:15 +02:00
parent b0f13a1f20
commit f9c462e94e
3 changed files with 15745 additions and 8 deletions

File diff suppressed because it is too large Load Diff

View File

@ -978,6 +978,50 @@
"total_badness": 84181.20294 "total_badness": 84181.20294
} }
], ],
"plane.stl": [
{
"ne1d": 890,
"ne2d": 2646,
"ne3d": 8528,
"quality_histogram": "[4, 14, 27, 37, 43, 46, 41, 91, 102, 180, 331, 464, 679, 978, 1233, 1340, 1240, 987, 555, 136]",
"total_badness": 12856.87891
},
{
"ne1d": 572,
"ne2d": 1228,
"ne3d": 1901,
"quality_histogram": "[2, 18, 45, 48, 51, 66, 60, 92, 128, 133, 165, 191, 187, 197, 168, 128, 114, 65, 39, 4]",
"total_badness": 4320.0075948
},
{
"ne1d": 724,
"ne2d": 1754,
"ne3d": 3285,
"quality_histogram": "[4, 20, 30, 41, 36, 43, 44, 68, 96, 154, 170, 280, 339, 436, 436, 406, 340, 206, 107, 29]",
"total_badness": 5959.5331564
},
{
"ne1d": 956,
"ne2d": 2886,
"ne3d": 8682,
"quality_histogram": "[3, 11, 23, 48, 51, 47, 53, 55, 92, 133, 207, 340, 555, 905, 1236, 1446, 1418, 1197, 665, 197]",
"total_badness": 12703.577343
},
{
"ne1d": 1554,
"ne2d": 6466,
"ne3d": 31866,
"quality_histogram": "[4, 7, 10, 5, 21, 54, 53, 79, 111, 204, 328, 684, 1327, 2460, 3983, 5375, 6122, 5827, 4106, 1106]",
"total_badness": 41304.661508
},
{
"ne1d": 2992,
"ne2d": 23396,
"ne3d": 276949,
"quality_histogram": "[5, 10, 11, 13, 8, 23, 34, 93, 171, 459, 1121, 2702, 6581, 15040, 28425, 44154, 58179, 60855, 45197, 13868]",
"total_badness": 341180.22628
}
],
"revolution.geo": [ "revolution.geo": [
{ {
"ne1d": 320, "ne1d": 320,

View File

@ -31,11 +31,16 @@ def checkData(mesh, mp, ref):
assert ref['quality_histogram'] == data['quality_histogram'] assert ref['quality_histogram'] == data['quality_histogram']
assert ref['total_badness'] == pytest.approx(data['total_badness'], rel=1e-5) assert ref['total_badness'] == pytest.approx(data['total_badness'], rel=1e-5)
# get tutorials
def getFiles(fileEnding): def getFiles(fileEnding):
r, d, files = next(os.walk(os.path.join("..","..","tutorials"))) r, d, files = next(os.walk(os.path.join("..","..","tutorials")))
return (f for f in files if f.endswith(fileEnding)) return (f for f in files if f.endswith(fileEnding))
# get additional tests
def getAdditionalFiles(fileEnding):
r, d, files = next(os.walk("geofiles"))
return (f for f in files if f.endswith(fileEnding))
@pytest.fixture @pytest.fixture
def refdata(): def refdata():
return json.load(open('results.json','r')) return json.load(open('results.json','r'))
@ -59,25 +64,30 @@ _geofiles = [f for f in getFiles(".geo")] + [f for f in getFiles(".stl")]
if has_occ: if has_occ:
_geofiles += [f for f in getFiles(".step")] _geofiles += [f for f in getFiles(".step")]
_geofiles.sort() _geofiles.sort()
_additional_testfiles = [f for f in getAdditionalFiles(".stl")]
if has_occ:
_additional_testfiles += [f for f in getAdditionalFiles(".step")]
_additional_testfiles.sort()
def generateMesh(filename, mp): def generateMesh(filename, mp):
folder = os.path.join("..","..","tutorials") if filename in _geofiles else "geofiles"
if filename.endswith(".geo"): if filename.endswith(".geo"):
geo = csg.CSGeometry(os.path.join("..","..","tutorials", filename)) geo = csg.CSGeometry(os.path.join(folder, filename))
elif filename.endswith(".stl"): elif filename.endswith(".stl"):
geo = stl.STLGeometry(os.path.join("..","..","tutorials", filename)) geo = stl.STLGeometry(os.path.join(folder, filename))
elif filename.endswith(".step"): elif filename.endswith(".step"):
geo = occ.OCCGeometry(os.path.join("..","..","tutorials", filename)) geo = occ.OCCGeometry(os.path.join(folder, filename))
return geo.GenerateMesh(mp) return geo.GenerateMesh(mp)
def isSlowTest(filename): def isSlowTest(filename):
return filename in ["cubemcyl.geo", "frame.step", "revolution.geo", "manyholes.geo", "torus.geo", return filename in ["cubemcyl.geo", "frame.step", "revolution.geo", "manyholes.geo", "torus.geo",
"cubemsphere.geo", "manyholes2.geo", "matrix.geo", "trafo.geo", "ellipticcone.geo", "cubemsphere.geo", "manyholes2.geo", "matrix.geo", "trafo.geo", "ellipticcone.geo",
"period.geo", "shaft.geo", "cubeandring.geo", "ellipticcyl.geo", "period.geo", "shaft.geo", "cubeandring.geo", "ellipticcyl.geo",
"ellipsoid.geo", "cone.geo"] "ellipsoid.geo", "cone.geo", "plane.stl"]
def getParameters(): def getParameters():
res = [] res = []
for f in _geofiles: for f in _geofiles + _additional_testfiles:
for i,mp in enumerate(getMeshingparameters(f)): for i,mp in enumerate(getMeshingparameters(f)):
if isSlowTest(f): if isSlowTest(f):
res.append( pytest.param(f, mp, i, marks=pytest.mark.slow ) ) res.append( pytest.param(f, mp, i, marks=pytest.mark.slow ) )
@ -105,7 +115,7 @@ def generateResultFile():
import re, time import re, time
data = {} data = {}
with TaskManager(): with TaskManager():
for _file in _geofiles: for _file in _geofiles + _additional_testfiles:
print("generate "+_file) print("generate "+_file)
start = time.time() start = time.time()
mps = getMeshingparameters(_file) mps = getMeshingparameters(_file)
@ -116,10 +126,11 @@ def generateResultFile():
mesh = generateMesh(_file, mp) mesh = generateMesh(_file, mp)
meshdata.append( getData(mesh, mp) ) meshdata.append( getData(mesh, mp) )
data[_file] = meshdata data[_file] = meshdata
print("needed", time.time() - start, "seconds") print("needed", time.time() - start, "seconds")
s = json.dumps(data, sort_keys=True, indent=4) s = json.dumps(data, sort_keys=True, indent=4)
open("results.json", "w").write(s) open("results.json", "w").write(s)
print("done")
if __name__ == "__main__": if __name__ == "__main__":
generateResultFile() generateResultFile()