From 866e7371d4f0eb32cb367ec4556805043dd5ab58 Mon Sep 17 00:00:00 2001 From: laurence Date: Mon, 9 Jan 2012 09:06:59 +0000 Subject: [PATCH] ENH: cvMesh: improved surface conformation point pair placement Surface conformation points are now not ust projected from oen point onto the nearest surface, but projected onto any surface which the dual cell of the Delaunay vertex cuts through. --- .../conformalVoronoiMesh.C | 15 +- .../conformalVoronoiMesh.H | 12 +- .../conformalVoronoiMeshConformToSurface.C | 335 +++++++++++++----- 3 files changed, 257 insertions(+), 105 deletions(-) diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C index e3b329eea9..6c17e0db7e 100644 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C +++ b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C @@ -1260,8 +1260,6 @@ Foam::conformalVoronoiMesh::conformalVoronoiMesh buildSurfaceConformation(rmCoarse); - is_valid(true); - // The introduction of the surface conformation may have distorted the // balance of vertices, distribute if necessary. if (distributeBackground()) @@ -1675,6 +1673,10 @@ void Foam::conformalVoronoiMesh::move() } } + if (cvMeshControls().objOutput() && runTime_.outputTime()) + { + writeBoundaryPoints("boundaryPoints_" + runTime_.timeName() + ".obj"); + } // Remove the entire tessellation reset(); @@ -1690,16 +1692,15 @@ void Foam::conformalVoronoiMesh::move() insertPoints(pointsToInsert); - timeCheck("Internal points inserted"); - - conformToSurface(); - if (cvMeshControls().objOutput() && runTime_.outputTime()) { writePoints("points_" + runTime_.timeName() + ".obj", false); - writeBoundaryPoints("boundaryPoints_" + runTime_.timeName() + ".obj"); } + timeCheck("Internal points inserted"); + + conformToSurface(); + timeCheck("After conformToSurface"); updateSizesAndAlignments(pointsToInsert); diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H index 5880f72f6e..09c4239a5c 100644 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H +++ b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H @@ -548,6 +548,14 @@ private: const Delaunay::Finite_vertices_iterator& vit ) const; + //- Return all intersections + void dualCellSurfaceAllIntersections + ( + const Delaunay::Finite_vertices_iterator& vit, + DynamicList& info, + DynamicList