From 06c4dc34ee1158e0dada8530f7696669984d7285 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Thu, 12 Mar 2020 15:57:57 +0100 Subject: [PATCH] ENH: adjust sampling onto meshed surfaces (#1600) - base level surface container is now a meshedSurface instead of a triSurface. This avoid automatic triangulation of surfaces when they are read, and simplifies the internals. - sampling types: * "meshedSurface" (compat: "sampledTriSurfaceMesh") * "meshedSurfaceNormal" (compat: "sampledTriSurfaceMeshNormal") --- .../pressure/pressureDifferenceSurface.cfg | 4 +- .../surfaceFieldValue/triSurfaceRegion.cfg | 4 +- src/sampling/Make/files | 4 +- .../sampledMeshedSurface.C} | 435 +++++++----------- .../sampledMeshedSurface.H} | 54 +-- .../sampledMeshedSurfaceNormal.C} | 36 +- .../sampledMeshedSurfaceNormal.H} | 38 +- .../sampledMeshedSurfaceTemplates.C} | 8 +- .../sampledSurfaces/sampledSurfaces.H | 4 +- .../injectorPipe/system/fieldTransfer | 2 +- .../simpleFoam/squareBend/system/sampling | 4 +- 11 files changed, 240 insertions(+), 353 deletions(-) rename src/sampling/sampledSurface/{sampledTriSurfaceMesh/sampledTriSurfaceMesh.C => sampledMeshedSurface/sampledMeshedSurface.C} (59%) rename src/sampling/sampledSurface/{sampledTriSurfaceMesh/sampledTriSurfaceMesh.H => sampledMeshedSurface/sampledMeshedSurface.H} (91%) rename src/sampling/sampledSurface/{sampledTriSurfaceMesh/sampledTriSurfaceMeshNormal.C => sampledMeshedSurface/sampledMeshedSurfaceNormal.C} (74%) rename src/sampling/sampledSurface/{sampledTriSurfaceMesh/sampledTriSurfaceMeshNormal.H => sampledMeshedSurface/sampledMeshedSurfaceNormal.H} (87%) rename src/sampling/sampledSurface/{sampledTriSurfaceMesh/sampledTriSurfaceMeshTemplates.C => sampledMeshedSurface/sampledMeshedSurfaceTemplates.C} (95%) diff --git a/etc/caseDicts/postProcessing/pressure/pressureDifferenceSurface.cfg b/etc/caseDicts/postProcessing/pressure/pressureDifferenceSurface.cfg index c88ad8b986..01737a7f2d 100644 --- a/etc/caseDicts/postProcessing/pressure/pressureDifferenceSurface.cfg +++ b/etc/caseDicts/postProcessing/pressure/pressureDifferenceSurface.cfg @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | Version: v1912 + \\ / O peration | Version: v2006 \\ / A nd | Website: www.openfoam.com \\/ M anipulation | \*---------------------------------------------------------------------------*/ @@ -14,7 +14,7 @@ region1 sampledSurfaceDict { - type sampledTriSurfaceMesh; + type meshedSurface; regionType cells; interpolate true; surface $triSurface1; diff --git a/etc/caseDicts/postProcessing/surfaceFieldValue/triSurfaceRegion.cfg b/etc/caseDicts/postProcessing/surfaceFieldValue/triSurfaceRegion.cfg index 006d796c7b..538b9ed3b5 100644 --- a/etc/caseDicts/postProcessing/surfaceFieldValue/triSurfaceRegion.cfg +++ b/etc/caseDicts/postProcessing/surfaceFieldValue/triSurfaceRegion.cfg @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | Version: v1912 + \\ / O peration | Version: v2006 \\ / A nd | Website: www.openfoam.com \\/ M anipulation | \*---------------------------------------------------------------------------*/ @@ -12,7 +12,7 @@ regionType sampledSurface; sampledSurfaceDict { - type sampledTriSurfaceMesh; + type meshedSurface; surface $triSurface; source cells; interpolate true; diff --git a/src/sampling/Make/files b/src/sampling/Make/files index 7c2727ce53..2d2796dcca 100644 --- a/src/sampling/Make/files +++ b/src/sampling/Make/files @@ -44,11 +44,11 @@ sampledSurface/isoSurface/sampledIsoSurfaceTopo.C sampledSurface/distanceSurface/sampledDistanceSurface.C sampledSurface/sampledCuttingPlane/sampledCuttingPlane.C sampledSurface/sampledCuttingSurface/sampledCuttingSurface.C +sampledSurface/sampledMeshedSurface/sampledMeshedSurface.C +sampledSurface/sampledMeshedSurface/sampledMeshedSurfaceNormal.C sampledSurface/sampledSurface/sampledSurface.C sampledSurface/sampledSurface/sampledSurfaceRegister.C sampledSurface/sampledSurfaces/sampledSurfaces.C -sampledSurface/sampledTriSurfaceMesh/sampledTriSurfaceMesh.C -sampledSurface/sampledTriSurfaceMesh/sampledTriSurfaceMeshNormal.C sampledSurface/thresholdCellFaces/sampledThresholdCellFaces.C readers = sampledSurface/readers diff --git a/src/sampling/sampledSurface/sampledTriSurfaceMesh/sampledTriSurfaceMesh.C b/src/sampling/sampledSurface/sampledMeshedSurface/sampledMeshedSurface.C similarity index 59% rename from src/sampling/sampledSurface/sampledTriSurfaceMesh/sampledTriSurfaceMesh.C rename to src/sampling/sampledSurface/sampledMeshedSurface/sampledMeshedSurface.C index f00bca3112..9506a9e85f 100644 --- a/src/sampling/sampledSurface/sampledTriSurfaceMesh/sampledTriSurfaceMesh.C +++ b/src/sampling/sampledSurface/sampledMeshedSurface/sampledMeshedSurface.C @@ -26,7 +26,7 @@ License \*---------------------------------------------------------------------------*/ -#include "sampledTriSurfaceMesh.H" +#include "sampledMeshedSurface.H" #include "meshSearch.H" #include "Tuple2.H" #include "globalIndex.H" @@ -39,9 +39,9 @@ License const Foam::Enum < - Foam::sampledTriSurfaceMesh::samplingSource + Foam::sampledMeshedSurface::samplingSource > -Foam::sampledTriSurfaceMesh::samplingSourceNames_ +Foam::sampledMeshedSurface::samplingSourceNames_ ({ { samplingSource::cells, "cells" }, { samplingSource::insideCells, "insideCells" }, @@ -51,12 +51,22 @@ Foam::sampledTriSurfaceMesh::samplingSourceNames_ namespace Foam { - defineTypeNameAndDebug(sampledTriSurfaceMesh, 0); - addToRunTimeSelectionTable + defineTypeNameAndDebug(sampledMeshedSurface, 0); + // Use shorter name only + addNamedToRunTimeSelectionTable ( sampledSurface, - sampledTriSurfaceMesh, - word + sampledMeshedSurface, + word, + meshedSurface + ); + // Compatibility name (1912) + addNamedToRunTimeSelectionTable + ( + sampledSurface, + sampledMeshedSurface, + word, + sampledTriSurfaceMesh ); //- Private class for finding nearest @@ -104,50 +114,63 @@ inline static IOobject selectReadIO(const word& name, const Time& runTime) } // End namespace Foam -// * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * // +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -void Foam::sampledTriSurfaceMesh::setZoneMap -( - const surfZoneList& zoneLst, - labelList& zoneIds -) +void Foam::sampledMeshedSurface::setZoneMap() { - label sz = 0; - for (const surfZone& zn : zoneLst) - { - sz += zn.size(); - } - zoneIds.resize(sz); + // Ensure zoneIds_ are correctly populated - forAll(zoneLst, zonei) + const meshedSurface& s = static_cast(*this); + + const auto& zones = s.surfZones(); + + zoneIds_.resize(s.size()); + + // Trivial case + if (zoneIds_.empty() || zones.size() <= 1) { - const surfZone& zn = zoneLst[zonei]; + zoneIds_ = 0; + return; + } + + + label beg = 0; + + forAll(zones, zonei) + { + const label len = min(zones[zonei].size(), zoneIds_.size() - beg); // Assign sub-zone Ids - SubList