diff --git a/libsrc/meshing/improve2.cpp b/libsrc/meshing/improve2.cpp index 759fc09a..8e1c9576 100644 --- a/libsrc/meshing/improve2.cpp +++ b/libsrc/meshing/improve2.cpp @@ -354,28 +354,225 @@ namespace netgen - - - - - void MeshOptimize2d :: CombineImprove (Mesh & mesh) + double CombineImproveEdge( Mesh & mesh, + const Table & elementsonnode, + Array, PointIndex> & normals, + Array & fixed, + PointIndex pi1, PointIndex pi2, + bool check_only = true) { - if (!faceindex) + Vec<3> nv; + ArrayMem hasonepi, hasbothpi; + + if (!pi1.IsValid() || !pi2.IsValid()) + return 0.0; + + bool debugflag = 0; + + if (debugflag) { - SplitImprove(mesh); - PrintMessage (3, "Combine improve"); - - for (faceindex = 1; faceindex <= mesh.GetNFD(); faceindex++) - { - CombineImprove (mesh); - - if (multithread.terminate) - throw NgException ("Meshing stopped"); - } - faceindex = 0; - return; + (*testout) << "Combineimprove " + << "pi1 = " << pi1 << " pi2 = " << pi2 << endl; } + /* + // save version: + if (fixed.Get(pi1) || fixed.Get(pi2)) + return 0.0; + if (pi2 < pi1) swap (pi1, pi2); + */ + + // more general + if (fixed[pi2]) + Swap (pi1, pi2); + + if (fixed[pi2]) + return 0.0; + + double loch = mesh.GetH (mesh[pi1]); + + for (SurfaceElementIndex sei2 : elementsonnode[pi1]) + { + const Element2d & el2 = mesh[sei2]; + + if (el2.IsDeleted()) continue; + + if (el2[0] == pi2 || el2[1] == pi2 || el2[2] == pi2) + { + hasbothpi.Append (sei2); + nv = Cross (Vec3d (mesh[el2[0]], mesh[el2[1]]), + Vec3d (mesh[el2[0]], mesh[el2[2]])); + } + else + { + hasonepi.Append (sei2); + } + } + + if(hasbothpi.Size()==0) + return 0.0; + + + nv = normals[pi1]; + + + for (SurfaceElementIndex sei2 : elementsonnode[pi2]) + { + const Element2d & el2 = mesh[sei2]; + if (el2.IsDeleted()) continue; + if (!el2.PNums<3>().Contains (pi1)) + hasonepi.Append (sei2); + } + + double bad1 = 0; + int illegal1 = 0, illegal2 = 0; + /* + for (SurfaceElementIndex sei : hasonepi) + { + const Element2d & el = mesh[sei]; + bad1 += CalcTriangleBadness (mesh[el[0]], mesh[el[1]], mesh[el[2]], + nv, -1, loch); + illegal1 += 1-mesh.LegalTrig(el); + } + */ + for (const Element2d & el : mesh.SurfaceElements()[hasonepi]) + { + bad1 += CalcTriangleBadness (mesh[el[0]], mesh[el[1]], mesh[el[2]], + nv, -1, loch); + illegal1 += 1-mesh.LegalTrig(el); + } + + for (int k = 0; k < hasbothpi.Size(); k++) + { + const Element2d & el = mesh[hasbothpi[k]]; + bad1 += CalcTriangleBadness (mesh[el[0]], mesh[el[1]], mesh[el[2]], + nv, -1, loch); + illegal1 += 1-mesh.LegalTrig(el); + } + bad1 /= (hasonepi.Size()+hasbothpi.Size()); + + double bad2 = 0; + for (int k = 0; k < hasonepi.Size(); k++) + { + Element2d el = mesh[hasonepi[k]]; + for (auto i : Range(3)) + if(el[i]==pi2) + el[i] = pi1; + + double err = + CalcTriangleBadness (mesh[el[0]], mesh[el[1]], mesh[el[2]], + nv, -1, loch); + bad2 += err; + + Vec<3> hnv = Cross (Vec3d (mesh[el[0]], + mesh[el[1]]), + Vec3d (mesh[el[0]], + mesh[el[2]])); + if (hnv * nv < 0) + bad2 += 1e10; + + for (int l = 0; l < 3; l++) + { + if ( (normals[el[l]] * nv) < 0.5) + bad2 += 1e10; + } + + illegal2 += 1-mesh.LegalTrig(el); + } + bad2 /= hasonepi.Size(); + + if (debugflag) + { + (*testout) << "bad1 = " << bad1 << ", bad2 = " << bad2 << endl; + } + + bool should = (illegal2<=illegal1 && bad2 < bad1 && bad2 < 1e4); + if(illegal2 < illegal1) + { + should = true; + bad1 += 1e4; + } + + double d_badness = should * (bad2-bad1); + + if(check_only) + return d_badness; + + if (should) + { + /* + (*testout) << "combine !" << endl; + (*testout) << "bad1 = " << bad1 << ", bad2 = " << bad2 << endl; + (*testout) << "illegal1 = " << illegal1 << ", illegal2 = " << illegal2 << endl; + (*testout) << "loch = " << loch << endl; + */ + + PointGeomInfo gi; + // bool gi_set(false); + + /* + Element2d *el1p(NULL); + int l = 0; + while(mesh[elementsonnode[pi1][l]].IsDeleted() && lGetNP(); l++) + if ((*el1p)[l] == pi1) + { + gi = el1p->GeomInfoPi (l+1); + // gi_set = true; + } + */ + for (SurfaceElementIndex sei : elementsonnode[pi1]) + { + const Element2d & el1p = mesh[sei]; + if (el1p.IsDeleted()) continue; + + for (int l = 0; l < el1p.GetNP(); l++) + if (el1p[l] == pi1) + // gi = el1p.GeomInfoPi (l+1); + gi = el1p.GeomInfo()[l]; + break; + } + + + // (*testout) << "Connect point " << pi2 << " to " << pi1 << "\n"; + // for (int k = 0; k < elementsonnode[pi2].Size(); k++) + for (SurfaceElementIndex sei2 : elementsonnode[pi2]) + { + Element2d & el = mesh[sei2]; + if (el.IsDeleted()) continue; + if (el.PNums().Contains(pi1)) continue; + + for (auto l : Range(el.GetNP())) + { + if (el[l] == pi2) + { + el[l] = pi1; + el.GeomInfo()[l] = gi; + } + + fixed[el[l]] = true; + } + } + + for (auto sei : hasbothpi) + mesh[sei].Delete(); + + } + return d_badness; + } + + void MeshOptimize2d :: CombineImprove (Mesh & mesh) + { + SplitImprove(mesh); + PrintMessage (3, "Combine improve"); + + if (multithread.terminate) + throw NgException ("Meshing stopped"); static Timer timer ("Combineimprove 2D"); RegionTimer reg (timer); @@ -389,334 +586,96 @@ namespace netgen Array seia; - mesh.GetSurfaceElementsOfFace (faceindex, seia); + if(faceindex) + mesh.GetSurfaceElementsOfFace (faceindex, seia); + else + { + seia.SetSize(mesh.GetNSE()); + ParallelFor( IntRange(mesh.GetNSE()), [&seia] (auto i) NETGEN_LAMBDA_INLINE + { seia[i] = i; }); + } - for (SurfaceElementIndex sei : seia) - if (mesh[sei].GetNP() != 3) - return; + bool mixed = false; + ParallelFor( Range(seia), [&] (auto i) NETGEN_LAMBDA_INLINE + { + if (mesh[seia[i]].GetNP() != 3) + mixed = true; + }); - - int surfnr = 0; - if (faceindex) - surfnr = mesh.GetFaceDescriptor (faceindex).SurfNr(); - - - Vec<3> nv; + if(mixed) + return; int np = mesh.GetNP(); - TABLE elementsonnode(np); - Array hasonepi, hasbothpi; + auto elementsonnode = mesh.CreatePoint2SurfaceElementTable(faceindex); - for (SurfaceElementIndex sei : seia) - for (PointIndex pi : mesh[sei].PNums<3>()) - elementsonnode.Add (pi, sei); + int ntasks = ngcore::TaskManager::GetMaxThreads(); + Array> edges; + + BuildEdgeList( mesh, elementsonnode, edges ); Array fixed(np); - fixed = false; + ParallelFor( fixed.Range(), [&fixed] (auto i) NETGEN_LAMBDA_INLINE + { fixed[i] = false; }); + + ParallelFor( edges.Range(), [&] (auto i) NETGEN_LAMBDA_INLINE + { + auto [pi0, pi1] = edges[i]; + if (mesh.IsSegment (pi0, pi1)) + { + fixed[pi0] = true; + fixed[pi1] = true; + } + }); timerstart1.Stop(); - /* - for (SegmentIndex si = 0; si < mesh.GetNSeg(); si++) - { - INDEX_2 i2(mesh[si][0], mesh[si][1]); - fixed[i2.I1()] = true; - fixed[i2.I2()] = true; - } - */ - - for (SurfaceElementIndex sei : seia) - { - Element2d & sel = mesh[sei]; - for (int j = 0; j < sel.GetNP(); j++) - { - PointIndex pi1 = sel.PNumMod(j+2); - PointIndex pi2 = sel.PNumMod(j+3); - if (mesh.IsSegment (pi1, pi2)) - { - fixed[pi1] = true; - fixed[pi2] = true; - } - } - } - - - /* - for(int i = 0; i < mesh.LockedPoints().Size(); i++) - fixed[mesh.LockedPoints()[i]] = true; - */ - for (PointIndex pi : mesh.LockedPoints()) - fixed[pi] = true; + ParallelFor( mesh.LockedPoints().Range(), [&] (auto i) NETGEN_LAMBDA_INLINE + { + fixed[mesh.LockedPoints()[i]] = true; + }); Array,PointIndex> normals(np); - // for (PointIndex pi = mesh.Points().Begin(); pi < mesh.Points().End(); pi++) - for (PointIndex pi : mesh.Points().Range()) - { - if (elementsonnode[pi].Size()) - { - Element2d & hel = mesh[elementsonnode[pi][0]]; - for (int k = 0; k < 3; k++) - if (hel[k] == pi) - { - GetNormalVector (surfnr, mesh[pi], hel.GeomInfoPi(k+1), normals[pi]); - break; - } - } - } + ParallelFor( mesh.Points().Range(), [&] (auto pi) NETGEN_LAMBDA_INLINE + { + if (elementsonnode[pi].Size()) + { + Element2d & hel = mesh[elementsonnode[pi][0]]; + for (int k = 0; k < 3; k++) + if (hel[k] == pi) + { + const int faceindex = hel.GetIndex(); + const int surfnr = mesh.GetFaceDescriptor (faceindex).SurfNr(); + GetNormalVector (surfnr, mesh[pi], hel.GeomInfoPi(k+1), normals[pi]); + break; + } + } + }, TasksPerThread(4)); timerstart.Stop(); - for (int i = 0; i < seia.Size(); i++) + // Find edges with improvement + Array> candidate_edges(edges.Size()); + std::atomic improvement_counter(0); + + ParallelFor( Range(edges), [&] (auto i) NETGEN_LAMBDA_INLINE { - SurfaceElementIndex sei = seia[i]; - Element2d & elem = mesh[sei]; + auto [pi1, pi2] = edges[i]; + double d_badness = CombineImproveEdge(mesh, elementsonnode, normals, fixed, pi1, pi2, true); + if(d_badness < 0.0) + candidate_edges[improvement_counter++] = make_tuple(d_badness, i); + }, TasksPerThread(4)); - for (int j = 0; j < 3; j++) - { - if (elem.IsDeleted()) continue; - PointIndex pi1 = elem[j]; - PointIndex pi2 = elem[(j+1) % 3]; + auto edges_with_improvement = candidate_edges.Part(0, improvement_counter.load()); + QuickSort(edges_with_improvement); - /* - if (pi1 < PointIndex::BASE || - pi2 < PointIndex::BASE) - continue; - */ - if (!pi1.IsValid() || !pi2.IsValid()) - continue; - /* - INDEX_2 i2(pi1, pi2); - i2.Sort(); - if (segmentht.Used(i2)) - continue; - */ - - bool debugflag = 0; - - if (debugflag) - { - (*testout) << "Combineimprove, face = " << faceindex - << "pi1 = " << pi1 << " pi2 = " << pi2 << endl; - } - - /* - // save version: - if (fixed.Get(pi1) || fixed.Get(pi2)) - continue; - if (pi2 < pi1) swap (pi1, pi2); - */ - - // more general - if (fixed[pi2]) - Swap (pi1, pi2); - - if (fixed[pi2]) - continue; - - double loch = mesh.GetH (mesh[pi1]); - - // INDEX_2 si2 (pi1, pi2); - // si2.Sort(); - - /* - if (edgetested.Used (si2)) - continue; - edgetested.Set (si2, 1); - */ - - hasonepi.SetSize(0); - hasbothpi.SetSize(0); - - // for (int k = 0; k < elementsonnode[pi1].Size(); k++) - for (SurfaceElementIndex sei2 : elementsonnode[pi1]) - { - const Element2d & el2 = mesh[sei2]; - - if (el2.IsDeleted()) continue; - - if (el2[0] == pi2 || el2[1] == pi2 || el2[2] == pi2) - { - hasbothpi.Append (sei2); - nv = Cross (Vec3d (mesh[el2[0]], mesh[el2[1]]), - Vec3d (mesh[el2[0]], mesh[el2[2]])); - } - else - { - hasonepi.Append (sei2); - } - } - - - Element2d & hel = mesh[hasbothpi[0]]; - for (int k = 0; k < 3; k++) - if (hel[k] == pi1) - { - GetNormalVector (surfnr, mesh[pi1], hel.GeomInfoPi(k+1), nv); - break; - } - - // nv = normals.Get(pi1); - - - for (SurfaceElementIndex sei2 : elementsonnode[pi2]) - { - const Element2d & el2 = mesh[sei2]; - if (el2.IsDeleted()) continue; - if (!el2.PNums<3>().Contains (pi1)) - hasonepi.Append (sei2); - } - - double bad1 = 0; - int illegal1 = 0, illegal2 = 0; - /* - for (SurfaceElementIndex sei : hasonepi) - { - const Element2d & el = mesh[sei]; - bad1 += CalcTriangleBadness (mesh[el[0]], mesh[el[1]], mesh[el[2]], - nv, -1, loch); - illegal1 += 1-mesh.LegalTrig(el); - } - */ - for (const Element2d & el : mesh.SurfaceElements()[hasonepi]) - { - bad1 += CalcTriangleBadness (mesh[el[0]], mesh[el[1]], mesh[el[2]], - nv, -1, loch); - illegal1 += 1-mesh.LegalTrig(el); - } - - for (int k = 0; k < hasbothpi.Size(); k++) - { - const Element2d & el = mesh[hasbothpi[k]]; - bad1 += CalcTriangleBadness (mesh[el[0]], mesh[el[1]], mesh[el[2]], - nv, -1, loch); - illegal1 += 1-mesh.LegalTrig(el); - } - bad1 /= (hasonepi.Size()+hasbothpi.Size()); - - MeshPoint p1 = mesh[pi1]; - MeshPoint p2 = mesh[pi2]; - - MeshPoint pnew = p1; - mesh[pi1] = pnew; - mesh[pi2] = pnew; - - double bad2 = 0; - for (int k = 0; k < hasonepi.Size(); k++) - { - Element2d & el = mesh[hasonepi[k]]; - double err = - CalcTriangleBadness (mesh[el[0]], mesh[el[1]], mesh[el[2]], - nv, -1, loch); - bad2 += err; - - Vec<3> hnv = Cross (Vec3d (mesh[el[0]], - mesh[el[1]]), - Vec3d (mesh[el[0]], - mesh[el[2]])); - if (hnv * nv < 0) - bad2 += 1e10; - - for (int l = 0; l < 3; l++) - if ( (normals[el[l]] * nv) < 0.5) - bad2 += 1e10; - - Element2d el1 = el; - for (auto i : Range(3)) - if(el1[i]==pi2) - el1[i] = pi1; - illegal2 += 1-mesh.LegalTrig(el1); - } - bad2 /= hasonepi.Size(); - - mesh[pi1] = p1; - mesh[pi2] = p2; - - if (debugflag) - { - (*testout) << "bad1 = " << bad1 << ", bad2 = " << bad2 << endl; - } - - bool should = (bad2 < bad1 && bad2 < 1e4); - if (bad2 < 1e4) - { - if (illegal1 > illegal2) should = true; - if (illegal2 > illegal1) should = false; - } - - - if (should) - { - /* - (*testout) << "combine !" << endl; - (*testout) << "bad1 = " << bad1 << ", bad2 = " << bad2 << endl; - (*testout) << "illegal1 = " << illegal1 << ", illegal2 = " << illegal2 << endl; - (*testout) << "loch = " << loch << endl; - */ - - mesh[pi1] = pnew; - PointGeomInfo gi; - // bool gi_set(false); - - /* - Element2d *el1p(NULL); - int l = 0; - while(mesh[elementsonnode[pi1][l]].IsDeleted() && lGetNP(); l++) - if ((*el1p)[l] == pi1) - { - gi = el1p->GeomInfoPi (l+1); - // gi_set = true; - } - */ - for (SurfaceElementIndex sei : elementsonnode[pi1]) - { - const Element2d & el1p = mesh[sei]; - if (el1p.IsDeleted()) continue; - - for (int l = 0; l < el1p.GetNP(); l++) - if (el1p[l] == pi1) - // gi = el1p.GeomInfoPi (l+1); - gi = el1p.GeomInfo()[l]; - break; - } - - - - // (*testout) << "Connect point " << pi2 << " to " << pi1 << "\n"; - // for (int k = 0; k < elementsonnode[pi2].Size(); k++) - for (SurfaceElementIndex sei2 : elementsonnode[pi2]) - { - Element2d & el = mesh[sei2]; - if (el.IsDeleted()) continue; - if (el.PNums().Contains(pi1)) continue; - - elementsonnode.Add (pi1, sei2); - - for (auto l : Range(el.GetNP())) - { - if (el[l] == pi2) - { - el[l] = pi1; - el.GeomInfo()[l] = gi; - } - - fixed[el[l]] = true; - } - } - - for (auto sei : hasbothpi) - mesh[sei].Delete(); - } - } + for(auto [d_badness, ei] : edges_with_improvement) + { + auto [pi1, pi2] = edges[ei]; + CombineImproveEdge(mesh, elementsonnode, normals, fixed, pi1, pi2, false); } // mesh.Compress(); diff --git a/libsrc/meshing/improve2.hpp b/libsrc/meshing/improve2.hpp index 03ff5559..bc4ad00d 100644 --- a/libsrc/meshing/improve2.hpp +++ b/libsrc/meshing/improve2.hpp @@ -1,6 +1,61 @@ #ifndef FILE_IMPROVE2 #define FILE_IMPROVE2 +template +void BuildEdgeList( const Mesh & mesh, const Table & elementsonnode, Array> & edges ) +{ + static Timer tbuild_edges("Build edges"); RegionTimer reg(tbuild_edges); + + static constexpr int tetedges[6][2] = + { { 0, 1 }, { 0, 2 }, { 0, 3 }, + { 1, 2 }, { 1, 3 }, { 2, 3 } }; + + int ntasks = 2*ngcore::TaskManager::GetMaxThreads(); + Array>> task_edges(ntasks); + + ParallelFor(IntRange(ntasks), [&] (int ti) + { + auto myrange = mesh.Points().Range().Split(ti, ntasks); + ArrayMem, 100> local_edges; + for (auto pi : myrange) + { + local_edges.SetSize(0); + + for(auto ei : elementsonnode[pi]) + { + const auto & elem = mesh[ei]; + if (elem.IsDeleted()) continue; + + for (int j = 0; j < 6; j++) + { + PointIndex pi0 = elem[tetedges[j][0]]; + PointIndex pi1 = elem[tetedges[j][1]]; + if (pi1 < pi0) Swap(pi0, pi1); + if(pi0==pi) + local_edges.Append(std::make_tuple(pi0, pi1)); + } + } + QuickSort(local_edges); + + auto edge_prev = std::make_tuple(-1,-1); + + for(auto edge : local_edges) + if(edge != edge_prev) + { + task_edges[ti].Append(edge); + edge_prev = edge; + } + } + }, ntasks); + + int num_edges = 0; + for (auto & edg : task_edges) + num_edges += edg.Size(); + edges.SetAllocSize(num_edges); + for (auto & edg : task_edges) + edges.Append(edg); +} + class Neighbour { diff --git a/libsrc/meshing/improve3.cpp b/libsrc/meshing/improve3.cpp index e5ee4e03..8400e541 100644 --- a/libsrc/meshing/improve3.cpp +++ b/libsrc/meshing/improve3.cpp @@ -409,60 +409,6 @@ void MeshOptimize3d :: CombineImproveSequential (Mesh & mesh, multithread.task = savetask; } -void MeshOptimize3d :: BuildEdgeList( const Mesh & mesh, const Table & elementsonnode, Array> & edges ) -{ - static Timer tbuild_edges("Build edges"); RegionTimer reg(tbuild_edges); - - static constexpr int tetedges[6][2] = - { { 0, 1 }, { 0, 2 }, { 0, 3 }, - { 1, 2 }, { 1, 3 }, { 2, 3 } }; - - int ntasks = 2*ngcore::TaskManager::GetMaxThreads(); - Array>> task_edges(ntasks); - - ParallelFor(IntRange(ntasks), [&] (int ti) - { - auto myrange = mesh.Points().Range().Split(ti, ntasks); - ArrayMem, 100> local_edges; - for (auto pi : myrange) - { - local_edges.SetSize(0); - - for(auto ei : elementsonnode[pi]) - { - const Element & elem = mesh[ei]; - if (elem.IsDeleted()) continue; - - for (int j = 0; j < 6; j++) - { - PointIndex pi0 = elem[tetedges[j][0]]; - PointIndex pi1 = elem[tetedges[j][1]]; - if (pi1 < pi0) Swap(pi0, pi1); - if(pi0==pi) - local_edges.Append(std::make_tuple(pi0, pi1)); - } - } - QuickSort(local_edges); - - auto edge_prev = std::make_tuple(-1,-1); - - for(auto edge : local_edges) - if(edge != edge_prev) - { - task_edges[ti].Append(edge); - edge_prev = edge; - } - } - }, ntasks); - - int num_edges = 0; - for (auto & edg : task_edges) - num_edges += edg.Size(); - edges.SetAllocSize(num_edges); - for (auto & edg : task_edges) - edges.Append(edg); -} - void MeshOptimize3d :: CombineImprove (Mesh & mesh, OPTIMIZEGOAL goal) { diff --git a/libsrc/meshing/improve3.hpp b/libsrc/meshing/improve3.hpp index 7507b64a..21fdcce6 100644 --- a/libsrc/meshing/improve3.hpp +++ b/libsrc/meshing/improve3.hpp @@ -12,8 +12,6 @@ class MeshOptimize3d { const MeshingParameters & mp; - void BuildEdgeList( const Mesh & mesh, const Table & elementsonnode, Array> & edges ); - public: MeshOptimize3d (const MeshingParameters & amp) : mp(amp) { ; } diff --git a/tests/pytest/results.json b/tests/pytest/results.json index 840d9c09..da57b936 100644 --- a/tests/pytest/results.json +++ b/tests/pytest/results.json @@ -37,10 +37,10 @@ }, { "ne1d": 181, - "ne2d": 323, - "ne3d": 506, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 13, 38, 53, 70, 87, 82, 85, 53, 16]", - "total_badness": 658.05677789 + "ne2d": 325, + "ne3d": 528, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6, 19, 38, 53, 74, 80, 99, 85, 63, 9]", + "total_badness": 687.31675405 } ], "boxcyl.geo": [ @@ -54,9 +54,9 @@ { "ne1d": 94, "ne2d": 114, - "ne3d": 158, - "quality_histogram": "[0, 0, 0, 0, 0, 1, 1, 7, 10, 16, 5, 8, 15, 13, 17, 13, 9, 25, 7, 11]", - "total_badness": 247.68310347 + "ne3d": 157, + "quality_histogram": "[0, 0, 0, 0, 0, 1, 3, 8, 13, 13, 15, 7, 12, 11, 19, 14, 12, 21, 5, 3]", + "total_badness": 260.17372209 }, { "ne1d": 136, @@ -82,18 +82,18 @@ { "ne1d": 456, "ne2d": 2496, - "ne3d": 18676, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 2, 14, 43, 121, 339, 829, 1665, 2855, 4035, 4403, 3226, 1144]", - "total_badness": 22663.154052 + "ne3d": 18713, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 1, 10, 39, 127, 338, 795, 1684, 2888, 4053, 4409, 3223, 1146]", + "total_badness": 22695.778021 } ], "circle_on_cube.geo": [ { "ne1d": 94, - "ne2d": 172, - "ne3d": 611, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 1, 3, 5, 8, 15, 20, 67, 69, 87, 106, 85, 91, 47, 7]", - "total_badness": 833.76226351 + "ne2d": 170, + "ne3d": 637, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 1, 0, 4, 5, 18, 38, 54, 74, 84, 109, 110, 73, 55, 12]", + "total_badness": 863.74076861 }, { "ne1d": 40, @@ -104,31 +104,31 @@ }, { "ne1d": 62, - "ne2d": 94, - "ne3d": 185, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 7, 12, 31, 26, 37, 27, 19, 13, 9, 0]", - "total_badness": 264.61885227 + "ne2d": 96, + "ne3d": 196, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 2, 6, 8, 8, 27, 34, 42, 33, 20, 9, 6, 1]", + "total_badness": 282.75693303 }, { "ne1d": 94, - "ne2d": 172, - "ne3d": 594, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 9, 23, 46, 62, 85, 95, 102, 110, 47, 11]", - "total_badness": 781.40870801 + "ne2d": 170, + "ne3d": 622, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 12, 26, 39, 80, 70, 113, 112, 93, 62, 10]", + "total_badness": 821.68699443 }, { "ne1d": 138, "ne2d": 384, - "ne3d": 2055, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 2, 5, 13, 28, 89, 146, 234, 357, 406, 415, 285, 75]", - "total_badness": 2580.6652097 + "ne3d": 2028, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 28, 67, 157, 250, 347, 419, 398, 261, 88]", + "total_badness": 2540.7133216 }, { "ne1d": 224, - "ne2d": 942, - "ne3d": 12027, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 15, 81, 205, 552, 1148, 1969, 2490, 2768, 2175, 617]", - "total_badness": 14618.673513 + "ne2d": 944, + "ne3d": 11860, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 29, 85, 211, 518, 1135, 1851, 2527, 2686, 2118, 688]", + "total_badness": 14411.259826 } ], "cone.geo": [ @@ -250,17 +250,17 @@ }, { "ne1d": 378, - "ne2d": 1410, - "ne3d": 7638, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 41, 105, 277, 549, 947, 1322, 1539, 1544, 998, 307]", - "total_badness": 9567.7509778 + "ne2d": 1412, + "ne3d": 7741, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 1, 11, 17, 64, 139, 294, 516, 862, 1328, 1545, 1486, 1147, 331]", + "total_badness": 9711.521562 }, { "ne1d": 624, "ne2d": 3944, - "ne3d": 38297, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 2, 18, 41, 131, 332, 847, 2080, 3865, 5988, 7892, 8533, 6475, 2093]", - "total_badness": 46909.566762 + "ne3d": 38347, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 2, 18, 40, 131, 351, 853, 2070, 3906, 6037, 7925, 8484, 6438, 2092]", + "total_badness": 47000.212862 } ], "cubeandspheres.geo": [ @@ -268,131 +268,131 @@ "ne1d": 144, "ne2d": 148, "ne3d": 98, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 3, 4, 16, 18, 14, 20, 4, 8, 2, 0]", - "total_badness": 145.06570733 + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 3, 4, 18, 19, 13, 20, 2, 9, 1, 0]", + "total_badness": 145.83375079 }, { "ne1d": 144, "ne2d": 150, "ne3d": 100, "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 7, 10, 16, 18, 15, 17, 6, 5, 4, 0]", - "total_badness": 146.64421411 + "total_badness": 146.6468601 }, { "ne1d": 144, "ne2d": 148, "ne3d": 98, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 6, 6, 17, 20, 14, 18, 5, 6, 3, 0]", - "total_badness": 144.34810179 + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 6, 6, 19, 21, 12, 18, 5, 4, 4, 0]", + "total_badness": 145.14580879 }, { "ne1d": 144, "ne2d": 148, "ne3d": 98, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 3, 4, 16, 18, 14, 20, 4, 8, 2, 0]", - "total_badness": 145.06570733 + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 3, 4, 18, 19, 13, 20, 2, 9, 1, 0]", + "total_badness": 145.83375079 }, { "ne1d": 264, - "ne2d": 388, - "ne3d": 366, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 1, 2, 4, 21, 28, 39, 47, 52, 37, 58, 40, 25, 10, 2]", - "total_badness": 550.50109911 + "ne2d": 390, + "ne3d": 369, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 4, 5, 19, 26, 42, 46, 49, 41, 53, 45, 27, 10, 2]", + "total_badness": 554.2809713 }, { "ne1d": 428, "ne2d": 926, - "ne3d": 1075, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 2, 24, 51, 36, 104, 145, 96, 119, 157, 156, 70, 62, 31, 22]", - "total_badness": 1676.1706223 + "ne3d": 1074, + "quality_histogram": "[0, 0, 0, 0, 0, 1, 2, 23, 50, 36, 109, 137, 96, 117, 160, 162, 67, 60, 32, 22]", + "total_badness": 1675.8711911 } ], "cubemcyl.geo": [ { "ne1d": 142, "ne2d": 2488, - "ne3d": 20762, - "quality_histogram": "[0, 0, 0, 0, 0, 2, 29, 90, 197, 401, 710, 1179, 1822, 2485, 3183, 3202, 3161, 2520, 1421, 360]", - "total_badness": 28767.588956 + "ne3d": 20783, + "quality_histogram": "[0, 0, 0, 0, 0, 2, 26, 94, 208, 408, 708, 1158, 1848, 2485, 3200, 3251, 3127, 2474, 1418, 376]", + "total_badness": 28813.276387 }, { "ne1d": 64, - "ne2d": 644, - "ne3d": 3315, - "quality_histogram": "[0, 0, 0, 0, 0, 3, 7, 15, 36, 73, 135, 230, 355, 463, 549, 546, 429, 268, 165, 41]", - "total_badness": 4730.5709115 + "ne2d": 642, + "ne3d": 3214, + "quality_histogram": "[0, 0, 0, 0, 0, 2, 7, 13, 34, 74, 140, 230, 351, 455, 533, 531, 378, 284, 151, 31]", + "total_badness": 4592.7629352 }, { "ne1d": 102, - "ne2d": 1400, - "ne3d": 8334, - "quality_histogram": "[0, 0, 0, 0, 0, 3, 6, 22, 85, 144, 337, 565, 905, 1167, 1322, 1295, 1095, 769, 485, 134]", - "total_badness": 11752.339923 + "ne2d": 1402, + "ne3d": 8234, + "quality_histogram": "[0, 0, 0, 0, 0, 2, 12, 30, 67, 143, 309, 586, 856, 1050, 1271, 1291, 1179, 825, 462, 151]", + "total_badness": 11552.618825 }, { "ne1d": 142, "ne2d": 2488, - "ne3d": 19379, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 6, 32, 92, 230, 494, 1181, 1947, 2801, 3461, 3525, 3130, 1945, 535]", - "total_badness": 25177.816848 + "ne3d": 19499, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 5, 27, 106, 226, 529, 1209, 2008, 2862, 3440, 3576, 3083, 1921, 507]", + "total_badness": 25390.546576 }, { "ne1d": 210, - "ne2d": 5506, - "ne3d": 88647, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 1, 27, 112, 355, 1028, 2468, 5697, 9855, 14883, 18353, 18556, 13360, 3952]", - "total_badness": 109878.73629 + "ne2d": 5508, + "ne3d": 88767, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 2, 26, 120, 352, 982, 2386, 5436, 9851, 14528, 18286, 19003, 13703, 4092]", + "total_badness": 109764.47526 }, { "ne1d": 362, - "ne2d": 15120, - "ne3d": 524047, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 6, 31, 117, 380, 1130, 3298, 9108, 23604, 49533, 81227, 111104, 122316, 92954, 29239]", - "total_badness": 636472.03769 + "ne2d": 15122, + "ne3d": 524413, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 3, 23, 86, 347, 1131, 3167, 9094, 23844, 49271, 81498, 111440, 122044, 93488, 28977]", + "total_badness": 636787.56071 } ], "cubemsphere.geo": [ { "ne1d": 90, - "ne2d": 698, - "ne3d": 4934, - "quality_histogram": "[0, 0, 0, 0, 0, 2, 11, 37, 72, 119, 189, 298, 467, 659, 707, 703, 683, 557, 330, 100]", - "total_badness": 6958.9504342 + "ne2d": 702, + "ne3d": 4867, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 5, 17, 43, 80, 172, 274, 422, 600, 765, 725, 748, 588, 317, 111]", + "total_badness": 6717.4363413 }, { "ne1d": 44, - "ne2d": 272, - "ne3d": 745, - "quality_histogram": "[0, 0, 0, 0, 1, 4, 5, 17, 29, 49, 77, 86, 100, 93, 92, 70, 54, 42, 21, 5]", - "total_badness": 1204.1731602 + "ne2d": 274, + "ne3d": 768, + "quality_histogram": "[0, 0, 0, 0, 1, 5, 9, 11, 26, 62, 72, 78, 114, 95, 91, 78, 74, 24, 22, 6]", + "total_badness": 1237.8358347 }, { "ne1d": 68, - "ne2d": 398, - "ne3d": 1558, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 3, 13, 20, 51, 111, 165, 255, 254, 221, 231, 150, 64, 20]", - "total_badness": 2188.2669021 + "ne2d": 402, + "ne3d": 1600, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 1, 1, 4, 26, 61, 119, 170, 232, 277, 269, 214, 148, 71, 7]", + "total_badness": 2248.6479915 }, { "ne1d": 90, - "ne2d": 698, - "ne3d": 4640, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 1, 8, 38, 72, 173, 303, 491, 698, 805, 844, 667, 412, 128]", - "total_badness": 6111.5995998 + "ne2d": 702, + "ne3d": 4618, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 2, 4, 24, 53, 140, 293, 465, 706, 805, 841, 747, 418, 120]", + "total_badness": 6022.3952178 }, { "ne1d": 146, "ne2d": 1492, - "ne3d": 17798, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 1, 1, 9, 24, 86, 209, 525, 1104, 1919, 2993, 3722, 3811, 2645, 749]", - "total_badness": 22077.875433 + "ne3d": 17800, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 1, 1, 7, 23, 89, 208, 524, 1085, 1942, 2969, 3729, 3811, 2675, 736]", + "total_badness": 22074.204803 }, { "ne1d": 248, "ne2d": 4354, - "ne3d": 112882, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 1, 10, 27, 96, 290, 762, 2154, 5475, 10965, 17752, 23939, 26158, 19408, 5845]", - "total_badness": 137612.85905 + "ne3d": 113716, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 5, 12, 43, 136, 381, 909, 2353, 5720, 11280, 18112, 23886, 25957, 19090, 5832]", + "total_badness": 139103.15382 } ], "cylinder.geo": [ @@ -449,17 +449,10 @@ }, { "ne1d": 48, - "ne2d": 136, - "ne3d": 225, - "quality_histogram": "[0, 0, 0, 6, 16, 26, 21, 19, 17, 7, 1, 10, 6, 10, 21, 27, 23, 8, 5, 2]", - "total_badness": 525.88368721 - }, - { - "ne1d": 72, - "ne2d": 320, - "ne3d": 629, - "quality_histogram": "[0, 0, 13, 7, 17, 28, 39, 55, 44, 70, 41, 52, 60, 54, 36, 31, 48, 20, 7, 7]", - "total_badness": 1373.2243293 + "ne2d": 142, + "ne3d": 242, + "quality_histogram": "[0, 0, 0, 16, 20, 29, 22, 22, 6, 8, 6, 14, 5, 13, 14, 25, 18, 13, 11, 0]", + "total_badness": 604.89450225 }, { "ne1d": 104, @@ -530,10 +523,10 @@ "ellipticcone.geo": [ { "ne1d": 174, - "ne2d": 1554, - "ne3d": 5154, - "quality_histogram": "[0, 0, 0, 0, 0, 1, 2, 13, 29, 51, 122, 215, 389, 552, 753, 867, 887, 708, 434, 131]", - "total_badness": 6912.1657887 + "ne2d": 1562, + "ne3d": 5180, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 3, 18, 65, 115, 211, 361, 589, 766, 881, 904, 732, 405, 130]", + "total_badness": 6920.4601657 }, { "ne1d": 86, @@ -551,33 +544,33 @@ }, { "ne1d": 174, - "ne2d": 1554, - "ne3d": 4935, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 7, 18, 52, 127, 277, 397, 675, 900, 963, 833, 511, 175]", - "total_badness": 6345.7383858 + "ne2d": 1562, + "ne3d": 4943, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 1, 4, 15, 49, 116, 255, 456, 635, 917, 1005, 806, 517, 167]", + "total_badness": 6347.4280983 }, { "ne1d": 258, - "ne2d": 3462, - "ne3d": 13486, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 1, 10, 31, 108, 209, 375, 670, 1146, 1676, 2318, 2432, 2372, 1636, 502]", - "total_badness": 17385.364148 + "ne2d": 3468, + "ne3d": 13314, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 1, 4, 33, 103, 197, 351, 652, 1077, 1619, 2280, 2518, 2361, 1583, 535]", + "total_badness": 17113.967555 }, { "ne1d": 432, - "ne2d": 9534, - "ne3d": 70093, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 2, 9, 41, 126, 322, 870, 1902, 4034, 7717, 11685, 14333, 14864, 10903, 3285]", - "total_badness": 86746.571015 + "ne2d": 9544, + "ne3d": 69891, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 1, 9, 37, 119, 313, 839, 1927, 4086, 7715, 11454, 14338, 14977, 10816, 3260]", + "total_badness": 86472.194086 } ], "ellipticcyl.geo": [ { "ne1d": 156, "ne2d": 996, - "ne3d": 2293, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 1, 12, 16, 55, 86, 118, 233, 260, 367, 368, 354, 242, 149, 32]", - "total_badness": 3192.9620295 + "ne3d": 2299, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 12, 15, 55, 86, 117, 235, 272, 372, 360, 358, 240, 144, 33]", + "total_badness": 3202.1380209 }, { "ne1d": 76, @@ -596,23 +589,23 @@ { "ne1d": 156, "ne2d": 996, - "ne3d": 2218, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 1, 1, 5, 38, 50, 93, 181, 255, 331, 354, 386, 285, 196, 42]", - "total_badness": 2980.3373467 + "ne3d": 2214, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 1, 1, 4, 40, 47, 89, 182, 262, 324, 362, 381, 279, 196, 46]", + "total_badness": 2974.3073079 }, { "ne1d": 232, - "ne2d": 2206, - "ne3d": 8329, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 1, 4, 8, 38, 120, 269, 606, 986, 1422, 1778, 1636, 1142, 319]", - "total_badness": 10417.08851 + "ne2d": 2212, + "ne3d": 8313, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 4, 15, 37, 113, 263, 626, 1005, 1387, 1743, 1660, 1133, 327]", + "total_badness": 10392.004794 }, { "ne1d": 388, - "ne2d": 6128, - "ne3d": 54910, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 2, 13, 28, 124, 330, 933, 2421, 5072, 8328, 11652, 13004, 9765, 3238]", - "total_badness": 66567.884044 + "ne2d": 6142, + "ne3d": 54975, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 2, 12, 45, 127, 329, 844, 2554, 5100, 8469, 11479, 12855, 9876, 3283]", + "total_badness": 66669.096677 } ], "fichera.geo": [ @@ -646,10 +639,10 @@ }, { "ne1d": 96, - "ne2d": 118, - "ne3d": 208, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 6, 10, 16, 23, 37, 29, 47, 28, 6]", - "total_badness": 266.18044371 + "ne2d": 120, + "ne3d": 211, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 6, 14, 22, 26, 38, 37, 41, 14, 9]", + "total_badness": 273.06134659 }, { "ne1d": 144, @@ -662,68 +655,68 @@ "frame.step": [ { "ne1d": 12694, - "ne2d": 40418, - "ne3d": 221338, - "quality_histogram": "[3, 8, 6, 9, 9, 49, 278, 724, 1782, 3522, 6397, 10742, 17468, 25554, 32460, 35629, 35018, 28948, 18116, 4616]", - "total_badness": 302031.17747 + "ne2d": 40530, + "ne3d": 221097, + "quality_histogram": "[3, 7, 7, 7, 8, 40, 245, 708, 1672, 3552, 6310, 10581, 17667, 25348, 32001, 36224, 35008, 29057, 18076, 4576]", + "total_badness": 301373.46714 }, { "ne1d": 6026, - "ne2d": 11302, - "ne3d": 30643, - "quality_histogram": "[4, 5, 3, 11, 21, 51, 105, 281, 690, 1063, 1703, 2717, 3365, 4271, 4573, 4231, 3360, 2466, 1371, 352]", - "total_badness": 45609.34772 + "ne2d": 11334, + "ne3d": 30593, + "quality_histogram": "[4, 5, 3, 10, 18, 39, 99, 258, 685, 1029, 1688, 2632, 3417, 4292, 4551, 4273, 3404, 2499, 1366, 321]", + "total_badness": 45414.634083 }, { "ne1d": 9704, - "ne2d": 24306, - "ne3d": 85235, - "quality_histogram": "[3, 3, 7, 8, 7, 30, 77, 145, 446, 1107, 2404, 4694, 7830, 10947, 13348, 14070, 12971, 10099, 5613, 1426]", - "total_badness": 117163.65166 + "ne2d": 24442, + "ne3d": 85741, + "quality_histogram": "[1, 6, 6, 9, 8, 30, 83, 164, 483, 1017, 2377, 4530, 7838, 10925, 13440, 14326, 13095, 10227, 5737, 1439]", + "total_badness": 117664.34461 } ], "hinge.stl": [ { "ne1d": 456, - "ne2d": 1214, - "ne3d": 2022, - "quality_histogram": "[0, 0, 0, 0, 1, 5, 9, 12, 26, 49, 65, 132, 182, 254, 300, 282, 275, 231, 156, 43]", - "total_badness": 2854.7168701 + "ne2d": 1218, + "ne3d": 2007, + "quality_histogram": "[0, 0, 0, 0, 0, 2, 7, 22, 35, 43, 69, 124, 175, 266, 301, 273, 272, 226, 144, 48]", + "total_badness": 2839.693559 }, { "ne1d": 298, - "ne2d": 596, - "ne3d": 772, - "quality_histogram": "[0, 0, 1, 10, 8, 6, 20, 17, 36, 50, 54, 105, 90, 108, 78, 77, 50, 38, 22, 2]", - "total_badness": 1342.107284 + "ne2d": 606, + "ne3d": 782, + "quality_histogram": "[0, 0, 1, 9, 6, 5, 18, 17, 33, 53, 60, 95, 99, 112, 83, 73, 47, 49, 20, 2]", + "total_badness": 1342.4305041 }, { "ne1d": 370, - "ne2d": 844, - "ne3d": 1118, - "quality_histogram": "[0, 0, 0, 0, 0, 10, 16, 22, 30, 44, 66, 106, 150, 128, 177, 157, 95, 56, 51, 10]", - "total_badness": 1741.03544 + "ne2d": 854, + "ne3d": 1136, + "quality_histogram": "[0, 0, 0, 1, 3, 9, 21, 24, 34, 44, 70, 113, 151, 137, 158, 154, 97, 68, 43, 9]", + "total_badness": 1798.68351 }, { "ne1d": 516, - "ne2d": 1566, - "ne3d": 2527, - "quality_histogram": "[0, 0, 0, 0, 0, 2, 3, 16, 24, 60, 103, 147, 246, 311, 364, 374, 321, 318, 190, 48]", - "total_badness": 3538.9062774 + "ne2d": 1574, + "ne3d": 2551, + "quality_histogram": "[0, 0, 0, 0, 0, 2, 4, 9, 22, 56, 91, 150, 262, 288, 378, 368, 350, 304, 214, 53]", + "total_badness": 3546.3587224 }, { "ne1d": 722, - "ne2d": 2870, - "ne3d": 6642, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 2, 3, 19, 29, 82, 162, 367, 691, 888, 1056, 1147, 1124, 840, 232]", - "total_badness": 8573.8370647 + "ne2d": 2872, + "ne3d": 6679, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 1, 4, 22, 38, 58, 158, 368, 659, 826, 1064, 1147, 1157, 900, 277]", + "total_badness": 8576.0981512 }, { "ne1d": 1862, - "ne2d": 19488, - "ne3d": 137072, - "quality_histogram": "[0, 0, 0, 0, 0, 1, 0, 1, 26, 122, 396, 1121, 2973, 7117, 13598, 21861, 28813, 30393, 23234, 7416]", - "total_badness": 167613.01917 + "ne2d": 19494, + "ne3d": 137231, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 1, 7, 48, 161, 424, 1135, 2966, 6918, 13385, 21373, 28847, 31139, 23298, 7529]", + "total_badness": 167698.91174 } ], "lshape3d.geo": [ @@ -766,70 +759,70 @@ "ne1d": 122, "ne2d": 204, "ne3d": 326, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 11, 17, 43, 51, 53, 56, 50, 33, 6]", - "total_badness": 427.73359314 + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 11, 17, 43, 51, 53, 55, 51, 33, 6]", + "total_badness": 427.73309234 } ], "manyholes.geo": [ { "ne1d": 5886, - "ne2d": 48036, - "ne3d": 179484, - "quality_histogram": "[0, 0, 0, 1, 6, 26, 49, 181, 507, 1429, 3406, 7751, 12589, 20420, 27392, 30012, 29988, 24886, 16884, 3957]", - "total_badness": 238828.86994 + "ne2d": 48052, + "ne3d": 179262, + "quality_histogram": "[0, 0, 0, 0, 7, 34, 52, 190, 559, 1394, 3332, 7622, 12534, 20021, 27619, 30066, 29961, 25045, 16810, 4016]", + "total_badness": 238415.32571 }, { "ne1d": 2746, - "ne2d": 13834, - "ne3d": 29329, - "quality_histogram": "[0, 0, 0, 0, 14, 21, 41, 146, 393, 827, 1501, 2289, 3318, 4412, 4217, 3705, 3185, 2627, 1888, 745]", - "total_badness": 42243.35733 + "ne2d": 13866, + "ne3d": 29255, + "quality_histogram": "[0, 0, 0, 0, 12, 22, 36, 163, 382, 903, 1510, 2377, 3268, 4375, 4191, 3761, 3120, 2567, 1846, 722]", + "total_badness": 42256.964101 }, { "ne1d": 4106, - "ne2d": 27932, - "ne3d": 70698, - "quality_histogram": "[0, 0, 0, 1, 26, 69, 183, 393, 852, 1684, 2955, 4447, 7082, 9552, 10277, 10366, 9322, 7190, 4617, 1682]", - "total_badness": 100123.46548 + "ne2d": 27994, + "ne3d": 70558, + "quality_histogram": "[0, 0, 0, 2, 32, 84, 194, 406, 841, 1669, 2783, 4416, 6997, 9372, 10151, 10346, 9564, 7474, 4487, 1740]", + "total_badness": 99764.452235 } ], "manyholes2.geo": [ { "ne1d": 10202, - "ne2d": 55308, - "ne3d": 127648, - "quality_histogram": "[0, 0, 0, 0, 6, 34, 104, 281, 811, 2064, 4591, 7937, 11909, 17760, 18525, 18083, 16916, 14536, 10497, 3594]", - "total_badness": 176351.56445 + "ne2d": 55380, + "ne3d": 127866, + "quality_histogram": "[0, 0, 0, 0, 5, 32, 101, 306, 842, 2081, 4519, 7983, 11838, 17786, 18634, 18254, 16922, 14537, 10444, 3582]", + "total_badness": 176665.61274 } ], "matrix.geo": [ { "ne1d": 174, "ne2d": 1198, - "ne3d": 5261, - "quality_histogram": "[0, 0, 43, 122, 130, 86, 136, 184, 149, 241, 322, 397, 535, 609, 604, 571, 460, 398, 221, 53]", - "total_badness": 9604.8609332 + "ne3d": 5246, + "quality_histogram": "[0, 0, 39, 136, 119, 93, 134, 174, 148, 224, 329, 399, 532, 581, 603, 563, 474, 398, 241, 59]", + "total_badness": 9567.4544817 }, { "ne1d": 106, - "ne2d": 600, - "ne3d": 1968, - "quality_histogram": "[0, 5, 28, 76, 118, 178, 153, 174, 160, 166, 194, 193, 159, 120, 80, 52, 39, 39, 25, 9]", - "total_badness": 4972.5229136 + "ne2d": 610, + "ne3d": 1936, + "quality_histogram": "[0, 1, 11, 66, 104, 143, 140, 142, 192, 179, 201, 199, 161, 135, 74, 57, 51, 46, 29, 5]", + "total_badness": 4606.0709672 }, { "ne1d": 132, - "ne2d": 828, - "ne3d": 2719, - "quality_histogram": "[0, 0, 10, 46, 80, 124, 136, 129, 211, 269, 319, 290, 267, 230, 195, 148, 117, 83, 49, 16]", - "total_badness": 5612.3348522 + "ne2d": 830, + "ne3d": 2751, + "quality_histogram": "[0, 0, 4, 57, 63, 116, 124, 163, 226, 230, 333, 307, 270, 240, 206, 164, 105, 82, 43, 18]", + "total_badness": 5616.8677502 }, { "ne1d": 174, "ne2d": 1198, - "ne3d": 5159, - "quality_histogram": "[0, 0, 28, 111, 114, 67, 108, 152, 144, 215, 289, 348, 498, 587, 574, 620, 517, 450, 264, 73]", - "total_badness": 9030.3079258 + "ne3d": 5176, + "quality_histogram": "[0, 0, 31, 113, 115, 69, 111, 172, 123, 209, 285, 339, 485, 597, 595, 628, 503, 468, 254, 79]", + "total_badness": 9086.4626755 }, { "ne1d": 248, @@ -893,193 +886,193 @@ "part1.stl": [ { "ne1d": 170, - "ne2d": 434, - "ne3d": 1224, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 2, 6, 12, 36, 57, 70, 113, 150, 189, 175, 158, 135, 94, 27]", - "total_badness": 1720.8230602 + "ne2d": 448, + "ne3d": 1242, + "quality_histogram": "[0, 0, 0, 0, 0, 2, 3, 9, 14, 27, 62, 80, 118, 165, 171, 191, 160, 126, 91, 23]", + "total_badness": 1762.3248217 }, { "ne1d": 134, - "ne2d": 276, - "ne3d": 504, - "quality_histogram": "[0, 0, 0, 1, 4, 0, 7, 6, 20, 26, 31, 44, 59, 68, 74, 61, 43, 39, 18, 3]", - "total_badness": 791.5174304 + "ne2d": 288, + "ne3d": 521, + "quality_histogram": "[0, 0, 1, 2, 5, 7, 6, 10, 18, 23, 40, 41, 47, 59, 72, 76, 56, 37, 18, 3]", + "total_badness": 839.17126404 }, { "ne1d": 194, - "ne2d": 590, - "ne3d": 1688, - "quality_histogram": "[0, 0, 0, 0, 0, 1, 0, 2, 4, 15, 35, 70, 127, 179, 237, 295, 293, 240, 156, 34]", - "total_badness": 2247.145727 + "ne2d": 594, + "ne3d": 1666, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 2, 5, 16, 23, 59, 118, 160, 264, 288, 282, 255, 167, 27]", + "total_badness": 2197.5763632 }, { "ne1d": 266, "ne2d": 986, - "ne3d": 4152, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 1, 1, 3, 8, 35, 64, 166, 338, 594, 745, 788, 798, 460, 151]", - "total_badness": 5270.5642613 + "ne3d": 4090, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 1, 0, 2, 11, 35, 59, 152, 324, 579, 738, 770, 768, 506, 145]", + "total_badness": 5178.06234 }, { "ne1d": 674, - "ne2d": 6854, - "ne3d": 82708, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 4, 28, 74, 229, 687, 1629, 4225, 8150, 12870, 17332, 18973, 14189, 4318]", - "total_badness": 101005.97859 + "ne2d": 6856, + "ne3d": 82761, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 1, 3, 10, 84, 220, 616, 1785, 4044, 8183, 13189, 17574, 18506, 14181, 4365]", + "total_badness": 101090.57562 } ], "period.geo": [ { "ne1d": 344, - "ne2d": 1134, - "ne3d": 3267, - "quality_histogram": "[0, 0, 0, 0, 0, 5, 19, 28, 65, 121, 198, 292, 368, 446, 463, 423, 367, 278, 161, 33]", - "total_badness": 4843.6173488 + "ne2d": 1136, + "ne3d": 3291, + "quality_histogram": "[0, 0, 0, 0, 1, 6, 24, 38, 73, 142, 237, 280, 363, 430, 473, 394, 337, 293, 163, 37]", + "total_badness": 4941.6426523 }, { "ne1d": 160, "ne2d": 286, - "ne3d": 680, - "quality_histogram": "[0, 0, 7, 11, 17, 20, 26, 41, 48, 64, 63, 61, 71, 48, 51, 50, 39, 41, 18, 4]", - "total_badness": 1363.8803171 + "ne3d": 642, + "quality_histogram": "[0, 0, 4, 7, 11, 22, 28, 28, 40, 61, 66, 58, 59, 55, 53, 53, 40, 36, 16, 5]", + "total_badness": 1235.2259283 }, { "ne1d": 232, - "ne2d": 600, - "ne3d": 1620, - "quality_histogram": "[0, 20, 26, 46, 42, 60, 70, 81, 105, 126, 134, 136, 139, 134, 144, 123, 111, 72, 43, 8]", - "total_badness": 3623.0833569 + "ne2d": 598, + "ne3d": 1654, + "quality_histogram": "[5, 18, 43, 57, 47, 59, 62, 79, 117, 120, 126, 148, 134, 159, 134, 113, 117, 66, 39, 11]", + "total_badness": 3928.2006441 }, { "ne1d": 344, - "ne2d": 1134, - "ne3d": 3217, - "quality_histogram": "[0, 0, 0, 0, 0, 4, 19, 22, 57, 93, 174, 264, 337, 423, 484, 443, 399, 282, 178, 38]", - "total_badness": 4690.0482354 + "ne2d": 1136, + "ne3d": 3221, + "quality_histogram": "[0, 0, 0, 0, 0, 3, 20, 24, 54, 111, 178, 268, 317, 453, 436, 450, 365, 311, 187, 44]", + "total_badness": 4704.9518805 }, { "ne1d": 480, "ne2d": 2256, - "ne3d": 11676, - "quality_histogram": "[0, 0, 0, 0, 0, 1, 2, 6, 24, 53, 120, 289, 525, 957, 1453, 1943, 2287, 2081, 1526, 409]", - "total_badness": 14907.26587 + "ne3d": 11709, + "quality_histogram": "[0, 0, 0, 0, 0, 1, 2, 9, 15, 51, 115, 243, 547, 966, 1489, 2032, 2273, 2081, 1459, 426]", + "total_badness": 14941.96653 }, { "ne1d": 820, - "ne2d": 6222, - "ne3d": 67973, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 2, 3, 15, 85, 268, 617, 1614, 3718, 7158, 11216, 14102, 14686, 10957, 3532]", - "total_badness": 83568.07739 + "ne2d": 6226, + "ne3d": 68532, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 1, 4, 18, 76, 261, 684, 1675, 3888, 7222, 11072, 14234, 14852, 11076, 3469]", + "total_badness": 84325.408672 } ], "plane.stl": [ { "ne1d": 890, - "ne2d": 2600, - "ne3d": 8161, - "quality_histogram": "[5, 12, 33, 28, 52, 46, 32, 56, 128, 206, 309, 453, 685, 923, 1193, 1252, 1147, 929, 538, 134]", - "total_badness": 12460.391484 + "ne2d": 2620, + "ne3d": 8323, + "quality_histogram": "[5, 21, 28, 32, 53, 48, 47, 80, 151, 239, 321, 490, 681, 901, 1189, 1198, 1208, 892, 597, 142]", + "total_badness": 12887.967725 }, { "ne1d": 572, - "ne2d": 1152, - "ne3d": 1651, - "quality_histogram": "[4, 28, 36, 49, 61, 74, 97, 126, 147, 171, 148, 134, 113, 127, 124, 77, 71, 31, 25, 8]", - "total_badness": 4245.4288615 + "ne2d": 1196, + "ne3d": 1793, + "quality_histogram": "[11, 31, 38, 55, 69, 104, 109, 132, 143, 150, 154, 158, 135, 136, 121, 82, 79, 51, 30, 5]", + "total_badness": 4800.1708991 }, { "ne1d": 724, - "ne2d": 1692, - "ne3d": 3214, - "quality_histogram": "[5, 17, 33, 37, 43, 43, 52, 72, 118, 157, 197, 295, 340, 423, 382, 381, 287, 205, 104, 23]", - "total_badness": 5942.4739465 + "ne2d": 1726, + "ne3d": 3259, + "quality_histogram": "[5, 19, 38, 39, 48, 38, 53, 68, 126, 153, 210, 276, 357, 394, 388, 356, 323, 218, 123, 27]", + "total_badness": 6069.660571 }, { "ne1d": 956, - "ne2d": 2810, - "ne3d": 8675, - "quality_histogram": "[3, 12, 28, 50, 46, 52, 62, 61, 80, 138, 227, 401, 598, 907, 1121, 1410, 1387, 1197, 705, 190]", - "total_badness": 12797.407898 + "ne2d": 2820, + "ne3d": 8391, + "quality_histogram": "[3, 12, 32, 49, 46, 54, 59, 63, 86, 144, 250, 389, 575, 816, 1238, 1375, 1331, 1047, 665, 157]", + "total_badness": 12510.073302 }, { "ne1d": 1554, - "ne2d": 6382, - "ne3d": 31570, - "quality_histogram": "[4, 7, 11, 7, 21, 52, 57, 70, 111, 204, 355, 730, 1411, 2560, 3940, 5357, 6035, 5675, 3874, 1089]", - "total_badness": 41102.73883 + "ne2d": 6388, + "ne3d": 31455, + "quality_histogram": "[3, 7, 11, 8, 27, 51, 59, 79, 108, 196, 350, 697, 1388, 2535, 4050, 5292, 6175, 5518, 3822, 1079]", + "total_badness": 40980.318629 }, { "ne1d": 2992, - "ne2d": 23314, - "ne3d": 280243, - "quality_histogram": "[5, 10, 11, 13, 7, 26, 32, 92, 238, 487, 1175, 2837, 6695, 15338, 29029, 45204, 58707, 61066, 45296, 13975]", - "total_badness": 345632.07897 + "ne2d": 23328, + "ne3d": 276363, + "quality_histogram": "[4, 10, 12, 10, 7, 20, 37, 80, 203, 470, 1122, 2731, 6675, 14971, 28708, 44685, 57676, 60478, 45018, 13446]", + "total_badness": 340678.17837 } ], "revolution.geo": [ { "ne1d": 320, - "ne2d": 3096, - "ne3d": 8458, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 7, 38, 154, 314, 541, 711, 982, 1073, 1192, 1158, 976, 740, 452, 120]", - "total_badness": 12348.89105 + "ne2d": 3110, + "ne3d": 8443, + "quality_histogram": "[0, 0, 0, 0, 0, 1, 12, 45, 144, 318, 519, 804, 967, 1078, 1145, 1112, 987, 738, 454, 119]", + "total_badness": 12356.528396 }, { "ne1d": 160, - "ne2d": 818, - "ne3d": 1293, - "quality_histogram": "[0, 0, 0, 0, 1, 9, 45, 85, 91, 122, 139, 162, 156, 139, 91, 88, 65, 60, 30, 10]", - "total_badness": 2298.7537248 + "ne2d": 822, + "ne3d": 1279, + "quality_histogram": "[0, 0, 0, 0, 2, 14, 52, 81, 100, 116, 148, 146, 167, 114, 92, 74, 92, 44, 25, 12]", + "total_badness": 2305.3064983 }, { "ne1d": 240, - "ne2d": 1816, - "ne3d": 4027, - "quality_histogram": "[0, 0, 1, 7, 19, 34, 47, 57, 122, 235, 374, 450, 506, 500, 463, 421, 355, 235, 153, 48]", - "total_badness": 6472.3221213 + "ne2d": 1830, + "ne3d": 3870, + "quality_histogram": "[0, 0, 0, 0, 0, 2, 5, 29, 108, 195, 310, 445, 521, 478, 473, 425, 351, 292, 195, 41]", + "total_badness": 5884.7598106 }, { "ne1d": 320, - "ne2d": 3096, - "ne3d": 8275, - "quality_histogram": "[0, 0, 0, 0, 0, 1, 1, 13, 65, 208, 418, 619, 849, 1019, 1178, 1230, 1116, 884, 514, 160]", - "total_badness": 11661.155742 + "ne2d": 3110, + "ne3d": 8269, + "quality_histogram": "[0, 0, 0, 0, 0, 1, 0, 24, 69, 199, 438, 654, 876, 1057, 1127, 1199, 1061, 888, 548, 128]", + "total_badness": 11704.49421 }, { "ne1d": 480, - "ne2d": 6844, - "ne3d": 32967, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 3, 16, 75, 291, 699, 1397, 2614, 4171, 5653, 6522, 6079, 4257, 1190]", - "total_badness": 41783.076303 + "ne2d": 6864, + "ne3d": 33003, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 5, 20, 80, 243, 674, 1446, 2651, 4133, 5647, 6385, 6118, 4423, 1178]", + "total_badness": 41802.827145 }, { "ne1d": 800, - "ne2d": 17866, - "ne3d": 202729, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 6, 42, 144, 537, 1505, 4365, 10380, 20189, 31903, 42471, 45652, 34935, 10600]", - "total_badness": 247665.22181 + "ne2d": 17934, + "ne3d": 201498, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 1, 2, 44, 148, 603, 1656, 4364, 10078, 19992, 31915, 42284, 45543, 34094, 10774]", + "total_badness": 246262.93603 } ], "screw.step": [ { "ne1d": 400, - "ne2d": 1436, - "ne3d": 2459, - "quality_histogram": "[0, 0, 0, 0, 1, 0, 16, 80, 88, 171, 190, 245, 276, 299, 270, 272, 223, 184, 110, 34]", - "total_badness": 3860.2528363 + "ne2d": 1434, + "ne3d": 2427, + "quality_histogram": "[0, 0, 0, 0, 0, 1, 14, 92, 79, 162, 203, 243, 285, 278, 277, 276, 216, 178, 97, 26]", + "total_badness": 3828.4168327 }, { "ne1d": 530, - "ne2d": 2684, - "ne3d": 7927, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 3, 15, 40, 82, 149, 285, 474, 733, 1104, 1268, 1359, 1321, 849, 245]", - "total_badness": 10424.316767 + "ne2d": 2702, + "ne3d": 7966, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 4, 8, 30, 75, 152, 297, 462, 754, 1064, 1384, 1434, 1253, 807, 242]", + "total_badness": 10467.778337 }, { "ne1d": 668, - "ne2d": 4998, - "ne3d": 31493, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 3, 9, 17, 53, 123, 356, 776, 1790, 3291, 5171, 6636, 6761, 4947, 1560]", - "total_badness": 38849.392612 + "ne2d": 5008, + "ne3d": 31630, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 2, 5, 20, 43, 129, 317, 796, 1773, 3387, 5061, 6627, 6931, 5011, 1528]", + "total_badness": 38978.120895 } ], "sculpture.geo": [ @@ -1114,46 +1107,46 @@ { "ne1d": 288, "ne2d": 962, - "ne3d": 1319, - "quality_histogram": "[0, 0, 0, 0, 0, 2, 6, 23, 53, 86, 121, 144, 127, 143, 121, 140, 143, 115, 80, 15]", - "total_badness": 2042.804049 + "ne3d": 1326, + "quality_histogram": "[0, 0, 0, 0, 0, 2, 6, 24, 53, 87, 122, 149, 125, 142, 117, 141, 144, 119, 80, 15]", + "total_badness": 2054.7475159 }, { "ne1d": 480, "ne2d": 2394, - "ne3d": 6754, - "quality_histogram": "[0, 0, 0, 0, 1, 4, 4, 16, 23, 39, 70, 125, 267, 519, 758, 1077, 1327, 1284, 933, 307]", - "total_badness": 8589.1254463 + "ne3d": 6791, + "quality_histogram": "[0, 0, 0, 0, 2, 3, 12, 10, 30, 33, 80, 135, 286, 503, 747, 1080, 1312, 1266, 984, 308]", + "total_badness": 8649.5978251 } ], "shaft.geo": [ { "ne1d": 708, - "ne2d": 1720, - "ne3d": 2738, - "quality_histogram": "[3, 14, 13, 29, 26, 44, 45, 69, 82, 138, 255, 367, 305, 293, 241, 276, 235, 194, 90, 19]", - "total_badness": 5045.4631109 + "ne2d": 1722, + "ne3d": 2757, + "quality_histogram": "[22, 11, 27, 30, 41, 40, 46, 62, 79, 140, 264, 373, 303, 274, 231, 291, 233, 179, 86, 25]", + "total_badness": 6328.6329226 }, { "ne1d": 410, "ne2d": 606, - "ne3d": 944, - "quality_histogram": "[0, 0, 0, 0, 0, 1, 4, 6, 18, 27, 44, 62, 84, 115, 151, 141, 153, 90, 35, 13]", - "total_badness": 1357.9934384 + "ne3d": 933, + "quality_histogram": "[0, 0, 0, 0, 0, 1, 4, 1, 17, 25, 47, 58, 90, 116, 155, 146, 124, 96, 36, 17]", + "total_badness": 1336.5110795 }, { "ne1d": 510, - "ne2d": 1008, - "ne3d": 2053, - "quality_histogram": "[1, 64, 78, 75, 79, 85, 82, 111, 114, 105, 117, 139, 132, 178, 203, 198, 171, 74, 37, 10]", - "total_badness": 5482.2474163 + "ne2d": 1004, + "ne3d": 2048, + "quality_histogram": "[11, 74, 88, 69, 81, 94, 99, 125, 99, 122, 96, 133, 133, 165, 190, 186, 163, 67, 45, 8]", + "total_badness": 5937.4200337 }, { "ne1d": 708, - "ne2d": 1720, - "ne3d": 2701, - "quality_histogram": "[0, 1, 3, 8, 12, 26, 32, 40, 73, 134, 268, 412, 312, 274, 252, 278, 239, 208, 100, 29]", - "total_badness": 4395.5679484 + "ne2d": 1722, + "ne3d": 2733, + "quality_histogram": "[6, 8, 10, 17, 29, 39, 34, 40, 80, 132, 254, 397, 302, 295, 238, 297, 250, 192, 88, 25]", + "total_badness": 4814.5951096 }, { "ne1d": 1138, @@ -1164,10 +1157,10 @@ }, { "ne1d": 1792, - "ne2d": 10596, - "ne3d": 63463, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 1, 6, 67, 178, 504, 1410, 3360, 6267, 9934, 13406, 14152, 10706, 3472]", - "total_badness": 77607.549516 + "ne2d": 10600, + "ne3d": 63895, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 2, 18, 53, 198, 529, 1486, 3387, 6482, 10124, 13426, 13922, 10754, 3514]", + "total_badness": 78232.724768 } ], "sphere.geo": [ @@ -1189,8 +1182,8 @@ "ne1d": 0, "ne2d": 72, "ne3d": 72, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 16, 23, 25, 7, 0, 0, 0]", - "total_badness": 97.673542971 + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 14, 27, 22, 7, 0, 0, 0]", + "total_badness": 97.572347502 }, { "ne1d": 0, @@ -1226,15 +1219,15 @@ "ne1d": 24, "ne2d": 60, "ne3d": 166, - "quality_histogram": "[0, 0, 5, 12, 14, 15, 31, 10, 2, 1, 3, 2, 7, 9, 13, 13, 14, 10, 4, 1]", - "total_badness": 454.92797775 + "quality_histogram": "[0, 0, 5, 12, 14, 15, 31, 10, 2, 1, 3, 2, 7, 9, 13, 13, 15, 9, 4, 1]", + "total_badness": 454.94795255 }, { "ne1d": 30, "ne2d": 116, - "ne3d": 332, - "quality_histogram": "[0, 0, 8, 23, 39, 39, 31, 25, 34, 30, 21, 22, 24, 8, 9, 8, 4, 4, 3, 0]", - "total_badness": 970.62581762 + "ne3d": 345, + "quality_histogram": "[0, 0, 5, 24, 43, 41, 26, 26, 38, 32, 20, 18, 24, 14, 8, 9, 5, 7, 4, 1]", + "total_badness": 988.81847916 }, { "ne1d": 46, @@ -1247,8 +1240,8 @@ "ne1d": 74, "ne2d": 418, "ne3d": 1788, - "quality_histogram": "[0, 0, 0, 0, 0, 6, 6, 21, 28, 38, 73, 98, 167, 212, 252, 272, 258, 202, 111, 44]", - "total_badness": 2540.5253991 + "quality_histogram": "[0, 0, 0, 0, 0, 6, 6, 21, 28, 38, 73, 98, 167, 213, 251, 273, 258, 200, 112, 44]", + "total_badness": 2540.547751 }, { "ne1d": 122, @@ -1322,7 +1315,7 @@ "ne2d": 874, "ne3d": 2397, "quality_histogram": "[0, 0, 1, 3, 9, 23, 41, 72, 132, 142, 188, 204, 304, 389, 343, 237, 138, 97, 48, 26]", - "total_badness": 3983.5699098 + "total_badness": 3983.5650135 }, { "ne1d": 690, @@ -1333,17 +1326,17 @@ }, { "ne1d": 1050, - "ne2d": 3808, - "ne3d": 17970, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 5, 31, 38, 74, 194, 563, 1401, 2185, 2352, 2728, 2717, 2634, 2364, 684]", - "total_badness": 23485.93298 + "ne2d": 3812, + "ne3d": 18010, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 4, 29, 42, 57, 198, 540, 1405, 2251, 2392, 2790, 2784, 2612, 2242, 664]", + "total_badness": 23560.24016 }, { "ne1d": 1722, "ne2d": 10042, - "ne3d": 84747, - "quality_histogram": "[0, 0, 0, 0, 2, 3, 55, 1427, 755, 410, 785, 1297, 2669, 5782, 9188, 13403, 16283, 16509, 12254, 3925]", - "total_badness": 109011.46057 + "ne3d": 84690, + "quality_histogram": "[0, 0, 0, 0, 2, 3, 54, 1424, 754, 408, 795, 1316, 2637, 5766, 9155, 13453, 16224, 16583, 12169, 3947]", + "total_badness": 108937.41902 } ], "twobricks.geo": [ @@ -1384,10 +1377,10 @@ }, { "ne1d": 186, - "ne2d": 342, - "ne3d": 601, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 13, 19, 31, 73, 92, 103, 107, 100, 61, 1]", - "total_badness": 787.76550767 + "ne2d": 346, + "ne3d": 603, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 10, 25, 42, 66, 89, 101, 110, 93, 56, 10]", + "total_badness": 792.88605666 } ], "twocubes.geo": [ @@ -1428,10 +1421,10 @@ }, { "ne1d": 186, - "ne2d": 342, - "ne3d": 601, - "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 13, 19, 31, 73, 92, 103, 107, 100, 61, 1]", - "total_badness": 787.76550767 + "ne2d": 346, + "ne3d": 603, + "quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 10, 25, 42, 66, 89, 101, 110, 93, 56, 10]", + "total_badness": 792.88605666 } ], "twocyl.geo": [ diff --git a/tests/pytest/test_tutorials.py b/tests/pytest/test_tutorials.py index a0ba44a5..32d53d50 100644 --- a/tests/pytest/test_tutorials.py +++ b/tests/pytest/test_tutorials.py @@ -58,6 +58,8 @@ def getMeshingparameters(filename): return standard[:3] # this gets too big for finer meshsizes if filename == "screw.step": return standard[3:] # coarser meshes don't work here + if filename == "cylsphere.geo": + return standard[0:2] + standard[3:] # coarse gives inconsistent reults (other mesh on MacOS) if filename == "part1.stl": return standard[0:1] + standard[2:] # very coarse does not work return standard