From c4d18e97a3a6519015256a5da42b64b0495ab6a9 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Wed, 13 Jul 2022 20:16:35 +0200 Subject: [PATCH] ENH: additional methods for OBJstream - write point fields - writeLine (takes two points) - writeFace (takes list of face loop points) --- .../laserDTRM/laserDTRM.C | 2 +- .../extrudeToRegionMesh/extrudeToRegionMesh.C | 18 +- .../conformalVoronoiMesh.C | 2 +- .../conformalVoronoiMesh.H | 2 +- .../conformalVoronoiMeshCalcDualMesh.C | 22 +-- .../conformalVoronoiMeshIO.C | 5 +- .../setAlphaField/setAlphaField.C | 4 +- .../surfaceBooleanFeatures.C | 1 - .../surface/surfaceInflate/surfaceInflate.C | 10 +- src/fileFormats/obj/OBJstream.C | 175 +++++++++++------- src/fileFormats/obj/OBJstream.H | 56 +++--- .../averageNeighbourFvGeometryScheme.C | 6 +- .../field/nearWallFields/nearWallFields.C | 4 +- .../projectCurveEdge/projectCurveEdge.C | 4 +- .../blockEdges/projectEdge/projectEdge.C | 4 +- .../blockFaces/projectFace/projectFace.C | 6 +- .../medialAxisMeshMover.C | 11 +- .../meshRefinement/meshRefinementBaffles.C | 9 +- .../meshRefinement/meshRefinementBlock.C | 4 +- .../meshRefinement/meshRefinementRefine.C | 17 +- .../snappyHexMeshDriver/snappyLayerDriver.C | 12 +- .../snappyHexMeshDriver/snappySnapDriver.C | 10 +- .../snappySnapDriverFeature.C | 57 ++---- .../faceAreaWeightAMI/faceAreaWeightAMI.C | 6 +- .../faceAreaWeightAMI2D/faceAreaWeightAMI2D.C | 1 - .../cyclicPeriodicAMIPolyPatch.H | 1 + .../extendedEdgeMesh/extendedEdgeMesh.C | 39 ++-- .../intersectedSurface/edgeSurface.C | 36 ++-- .../pointToPointPlanarInterpolation.C | 21 +-- .../cellVolumeWeightCellCellStencil.C | 2 +- .../inverseDistanceCellCellStencil.C | 4 +- .../trackingInverseDistanceCellCellStencil.C | 4 +- .../trackingInverseDistance/voxelMeshSearch.C | 6 +- .../trackingInverseDistance/voxelMeshSearch.H | 6 +- .../distributedTriSurfaceMesh.C | 13 +- .../exact/exactPatchDistMethod.C | 10 +- .../sampledSet/shortestPath/shortestPathSet.C | 28 ++- .../solarLoad/faceShading/faceShading.C | 4 +- .../dynamicMotionSolverTopoFvMesh.C | 13 +- .../isoAdvection/isoAdvection.C | 25 +-- 40 files changed, 301 insertions(+), 359 deletions(-) diff --git a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/laserDTRM/laserDTRM.C b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/laserDTRM/laserDTRM.C index 1ebeb9601d..4d9e61e8e1 100644 --- a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/laserDTRM/laserDTRM.C +++ b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/laserDTRM/laserDTRM.C @@ -699,7 +699,7 @@ void Foam::radiation::laserDTRM::calculate() for (label pointi = 0; pointi < lines.size(); pointi += 2) { - os.write(linePointRef(lines[pointi], lines[pointi+1])); + os.writeLine(lines[pointi], lines[pointi+1]); } } diff --git a/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMesh.C b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMesh.C index b2acecd41e..20b8d48da9 100644 --- a/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMesh.C +++ b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMesh.C @@ -1397,26 +1397,20 @@ void extrudeGeometricProperties { Pout<< "Model :" << faceCentres[facei] << endl << "regionMesh:" << regionMesh.faceCentres()[facei] << endl; - faceStr.write + faceStr.writeLine ( - linePointRef - ( - faceCentres[facei], - regionMesh.faceCentres()[facei] - ) + faceCentres[facei], + regionMesh.faceCentres()[facei] ); } forAll(cellCentres, celli) { Pout<< "Model :" << cellCentres[celli] << endl << "regionMesh:" << regionMesh.cellCentres()[celli] << endl; - cellStr.write + cellStr.writeLine ( - linePointRef - ( - cellCentres[celli], - regionMesh.cellCentres()[celli] - ) + cellCentres[celli], + regionMesh.cellCentres()[celli] ); } } diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C index 136967f73b..5c93903644 100644 --- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C +++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C @@ -1687,7 +1687,7 @@ void Foam::conformalVoronoiMesh::move() ) ) { - multipleIntersections.write(linePointRef(ptA, ptB)); + multipleIntersections.writeLine(ptA, ptB); } } } diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H index e193e6437c..d81f6f33a4 100644 --- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H +++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H @@ -83,7 +83,7 @@ SourceFiles namespace Foam { -// Forward declaration of classes +// Forward Declarations class initialPointsMethod; class relaxationModel; class faceAreaWeightModel; diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshCalcDualMesh.C b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshCalcDualMesh.C index 72e91c3100..567b8a5f1a 100644 --- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshCalcDualMesh.C +++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshCalcDualMesh.C @@ -1433,18 +1433,15 @@ void Foam::conformalVoronoiMesh::indexDualVertices // && (mag(snapDir & norm[0]) > 0.5) // ) // { -// snapping1.write +// snapping1.writeLine // ( -// linePointRef(dual, nearestPointOnTet) +// dual, +// nearestPointOnTet // ); -// -// snapping2.write +// snapping2.writeLine // ( -// linePointRef -// ( -// nearestPointOnTet, -// hitInfo.hitPoint() -// ) +// nearestPointOnTet, +// hitInfo.hitPoint() // ); // // pts[cit->cellIndex()] = hitInfo.hitPoint(); @@ -1764,9 +1761,10 @@ void Foam::conformalVoronoiMesh::createFacesOwnerNeighbourAndPatches if ((*vcit)->real()) { - featurePointDualsStr.write + featurePointDualsStr.writeLine ( - linePointRef(topoint(vit->point()), (*vcit)->dual()) + topoint(vit->point()), + (*vcit)->dual() ); } } @@ -1867,7 +1865,7 @@ void Foam::conformalVoronoiMesh::createFacesOwnerNeighbourAndPatches << " " << vc2->dual() << endl; - startCellStr.write(linePointRef(vc1->dual(), vc2->dual())); + startCellStr.writeLine(vc1->dual(), vc2->dual()); // Get patch by getting face between cells and the two // points on the face that are not the feature vertex diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshIO.C b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshIO.C index bad6f988a0..f735e02833 100644 --- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshIO.C +++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshIO.C @@ -1395,10 +1395,7 @@ void Foam::conformalVoronoiMesh::writePointPairs if (ptPairs_.isPointPair(vA, vB)) { - os.write - ( - linePointRef(topoint(vA->point()), topoint(vB->point())) - ); + os.writeLine(topoint(vA->point()), topoint(vB->point())); } } } diff --git a/applications/utilities/preProcessing/setAlphaField/setAlphaField.C b/applications/utilities/preProcessing/setAlphaField/setAlphaField.C index 6f46e527d3..44a67715ab 100644 --- a/applications/utilities/preProcessing/setAlphaField/setAlphaField.C +++ b/applications/utilities/preProcessing/setAlphaField/setAlphaField.C @@ -76,7 +76,7 @@ void isoFacesToFile { for (const List& facePts : procFaces) { - os.write(face(identity(facePts.size())), facePts); + os.writeFace(facePts); } } } @@ -87,7 +87,7 @@ void isoFacesToFile for (const List& facePts : faces) { - os.write(face(identity(facePts.size())), facePts); + os.writeFace(facePts); } } } diff --git a/applications/utilities/surface/surfaceBooleanFeatures/surfaceBooleanFeatures.C b/applications/utilities/surface/surfaceBooleanFeatures/surfaceBooleanFeatures.C index e20dc695f8..f711f2c98e 100644 --- a/applications/utilities/surface/surfaceBooleanFeatures/surfaceBooleanFeatures.C +++ b/applications/utilities/surface/surfaceBooleanFeatures/surfaceBooleanFeatures.C @@ -81,7 +81,6 @@ Description #include "triSurfaceSearch.H" #include "triSurfaceMesh.H" #include "OFstream.H" -#include "OBJstream.H" #include "booleanSurface.H" #include "edgeIntersections.H" #include "meshTools.H" diff --git a/applications/utilities/surface/surfaceInflate/surfaceInflate.C b/applications/utilities/surface/surfaceInflate/surfaceInflate.C index a2d52a992d..2e305e818a 100644 --- a/applications/utilities/surface/surfaceInflate/surfaceInflate.C +++ b/applications/utilities/surface/surfaceInflate/surfaceInflate.C @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2015 OpenFOAM Foundation - Copyright (C) 2020-2021 OpenCFD Ltd. + Copyright (C) 2020-2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -856,12 +856,10 @@ int main(int argc, char *argv[]) if (debug) { OBJstream str(runTime.path()/"isScaledPoint.obj"); - forAll(isScaledPoint, pointI) + + for (const label pointi : isScaledPoint) { - if (isScaledPoint[pointI]) - { - str.write(initialPoints[meshPoints[pointI]]); - } + str.write(initialPoints[meshPoints[pointi]]); } } diff --git a/src/fileFormats/obj/OBJstream.C b/src/fileFormats/obj/OBJstream.C index 231aba6329..c998c6a0ab 100644 --- a/src/fileFormats/obj/OBJstream.C +++ b/src/fileFormats/obj/OBJstream.C @@ -34,7 +34,7 @@ License namespace Foam { -defineTypeNameAndDebug(OBJstream, 0); + defineTypeName(OBJstream); } @@ -161,35 +161,45 @@ Foam::Ostream& Foam::OBJstream::writeQuoted } -Foam::Ostream& Foam::OBJstream::write(const point& pt) +Foam::Ostream& Foam::OBJstream::write(const point& p) { - write("v ") << pt.x() << ' ' << pt.y() << ' ' << pt.z() << nl; + write('v') << ' ' << p.x() << ' ' << p.y() << ' ' << p.z() << nl; return *this; } -Foam::Ostream& Foam::OBJstream::write(const point& pt, const vector& n) +Foam::Ostream& Foam::OBJstream::write(const point& p, const vector& n) { - write(pt); + write(p); OFstream::write("vn ") << n.x() << ' ' << n.y() << ' ' << n.z() << nl; return *this; } +Foam::Ostream& Foam::OBJstream::write(const UList& points) +{ + for (const point& p : points) + { + write('v') << ' ' << p.x() << ' ' << p.y() << ' ' << p.z() << nl; + } + return *this; +} + + Foam::Ostream& Foam::OBJstream::write(const edge& e, const UList& points) { - write(points[e[0]]); - write(points[e[1]]); - write("l ") << nVertices_-1 << ' ' << nVertices_ << nl; + write(points[e.first()]); + write(points[e.second()]); + write('l') << ' ' << nVertices_-1 << ' ' << nVertices_ << nl; return *this; } Foam::Ostream& Foam::OBJstream::write(const linePointRef& ln) { - write(ln.start()); - write(ln.end()); - write("l ") << nVertices_-1 << ' ' << nVertices_ << nl; + write(ln.first()); + write(ln.second()); + write('l') << ' ' << nVertices_-1 << ' ' << nVertices_ << nl; return *this; } @@ -201,9 +211,22 @@ Foam::Ostream& Foam::OBJstream::write const vector& n1 ) { - write(ln.start(), n0); - write(ln.end(), n1); - write("l ") << nVertices_-1 << ' ' << nVertices_ << nl; + write(ln.first(), n0); + write(ln.second(), n1); + write('l') << ' ' << nVertices_-1 << ' ' << nVertices_ << nl; + return *this; +} + + +Foam::Ostream& Foam::OBJstream::writeLine +( + const point& p0, + const point& p1 +) +{ + write(p0); + write(p1); + write('l') << ' ' << nVertices_-1 << ' ' << nVertices_ << nl; return *this; } @@ -221,7 +244,7 @@ Foam::Ostream& Foam::OBJstream::write if (lines) { write('l'); - for (int i = 0; i < 3; i++) + for (int i = 0; i < 3; ++i) { write(' ') << i+start; } @@ -230,7 +253,39 @@ Foam::Ostream& Foam::OBJstream::write else { write('f'); - for (int i = 0; i < 3; i++) + for (int i = 0; i < 3; ++i) + { + write(' ') << i+start; + } + write('\n'); + } + return *this; +} + + +Foam::Ostream& Foam::OBJstream::writeFace +( + const UList& points, + const bool lines +) +{ + const label start = nVertices_+1; // 1-offset for obj included here + + write(points); + + if (lines) + { + write('l'); + forAll(points, i) + { + write(' ') << i+start; + } + write(' ') << start << '\n'; + } + else + { + write('f'); + forAll(points, i) { write(' ') << i+start; } @@ -248,9 +303,10 @@ Foam::Ostream& Foam::OBJstream::write ) { const label start = nVertices_+1; // 1-offset for obj included here - forAll(f, i) + + for (const label fp : f) { - write(points[f[i]]); + write(points[fp]); } if (lines) { @@ -283,35 +339,27 @@ Foam::Ostream& Foam::OBJstream::write { primitivePatch pp(SubList(faces), points); - const pointField& localPoints = pp.localPoints(); - const faceList& localFaces = pp.localFaces(); - const label start = nVertices_+1; // 1-offset for obj included here - forAll(localPoints, i) - { - write(localPoints[i]); - } + write(pp.localPoints()); if (lines) { - const edgeList& edges = pp.edges(); - forAll(edges, edgeI) + for (const edge& e : pp.edges()) { - const edge& e = edges[edgeI]; - - write("l ") << e[0]+start << ' ' << e[1]+start << nl; + write('l') << ' ' + << e.first()+start << ' ' + << e.second()+start << nl; } } else { - forAll(localFaces, facei) + for (const face& f : pp.localFaces()) { - const face& f = localFaces[facei]; write('f'); - forAll(f, i) + for (const label fp : f) { - write(' ') << f[i]+start; + write(' ') << fp+start; } write('\n'); } @@ -335,46 +383,39 @@ Foam::Ostream& Foam::OBJstream::write label objPointId = nVertices_+1; // 1-offset for obj included here Map