From 79ab17131e21d49123b5b2e787906142e2f7dc4f Mon Sep 17 00:00:00 2001 From: Will Bainbridge Date: Tue, 14 Nov 2023 10:19:00 +0000 Subject: [PATCH] forwardFieldMapper: Rationalisation The directFieldMapper has been renamed to forwardFieldMapper, and instances where generalFieldMapper was used instead of a more simple forward/direct type have been removed. --- .../decomposePar/fvFieldDecomposer.C | 2 +- .../decomposePar/fvFieldDecomposer.H | 4 +- .../decomposePar/pointFieldDecomposer.C | 58 +++++++++++-------- .../decomposePar/pointFieldDecomposer.H | 50 +++++----------- .../preProcessing/mapFields/meshToMesh0.H | 49 ---------------- .../mapFields/meshToMesh0Templates.C | 8 +-- src/OpenFOAM/Make/files | 2 +- .../forwardFieldMapper.C} | 10 ++-- .../forwardFieldMapper.H} | 18 +++--- .../fvMeshAdder/fvMeshAdderTemplates.C | 14 ++--- .../fvMeshSubset/fvMeshSubsetInterpolate.C | 8 +-- .../singleCellFvMeshInterpolate.C | 6 +- .../fvMeshToFvMesh/fvMeshToFvMeshTemplates.C | 7 +-- 13 files changed, 84 insertions(+), 152 deletions(-) rename src/OpenFOAM/fields/Fields/fieldMappers/{directFieldMapper/directFieldMapper.C => forwardFieldMapper/forwardFieldMapper.C} (87%) rename src/OpenFOAM/fields/Fields/fieldMappers/{directFieldMapper/directFieldMapper.H => forwardFieldMapper/forwardFieldMapper.H} (89%) diff --git a/applications/utilities/parallelProcessing/decomposePar/fvFieldDecomposer.C b/applications/utilities/parallelProcessing/decomposePar/fvFieldDecomposer.C index 49f9e9bdd5..26f4f278e1 100644 --- a/applications/utilities/parallelProcessing/decomposePar/fvFieldDecomposer.C +++ b/applications/utilities/parallelProcessing/decomposePar/fvFieldDecomposer.C @@ -58,7 +58,7 @@ Foam::fvFieldDecomposer::patchFieldDecomposer::patchFieldDecomposer ) : labelList(mag(addressing) - 1), - directFieldMapper(static_cast(*this)) + forwardFieldMapper(static_cast(*this)) {} diff --git a/applications/utilities/parallelProcessing/decomposePar/fvFieldDecomposer.H b/applications/utilities/parallelProcessing/decomposePar/fvFieldDecomposer.H index b84e17de77..a17f2063e8 100644 --- a/applications/utilities/parallelProcessing/decomposePar/fvFieldDecomposer.H +++ b/applications/utilities/parallelProcessing/decomposePar/fvFieldDecomposer.H @@ -40,7 +40,7 @@ SourceFiles #include "IOobjectList.H" #include "volFields.H" #include "surfaceFields.H" -#include "directFieldMapper.H" +#include "forwardFieldMapper.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -63,7 +63,7 @@ public: class patchFieldDecomposer : public labelList, - public directFieldMapper + public forwardFieldMapper { public: diff --git a/applications/utilities/parallelProcessing/decomposePar/pointFieldDecomposer.C b/applications/utilities/parallelProcessing/decomposePar/pointFieldDecomposer.C index e2ec2a3b26..d2267e26ce 100644 --- a/applications/utilities/parallelProcessing/decomposePar/pointFieldDecomposer.C +++ b/applications/utilities/parallelProcessing/decomposePar/pointFieldDecomposer.C @@ -26,51 +26,59 @@ License #include "pointFieldDecomposer.H" #include "fvMesh.H" -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -Foam::pointFieldDecomposer::patchFieldDecomposer::patchFieldDecomposer +Foam::labelList Foam::pointFieldDecomposer::patchFieldDecomposer::addressing ( - const pointPatch& completeMeshPatch, - const pointPatch& procMeshPatch, - const labelList& directAddr + const pointPatch& completePatch, + const pointPatch& procPatch, + const labelList& pointProcAddressing ) -: - generalFieldMapper(), - directAddressing_(procMeshPatch.size(), -1), - hasUnmapped_(false) { - // Create the inverse-addressing of the patch point labels. - labelList pointMap(completeMeshPatch.boundaryMesh().mesh().size(), -1); + const labelList& completePatchPoints = completePatch.meshPoints(); + const labelList& procPatchPoints = procPatch.meshPoints(); - const labelList& completeMeshPatchPoints = completeMeshPatch.meshPoints(); - - forAll(completeMeshPatchPoints, pointi) + // Create a map from complete mesh point index to complete patch point index + labelList map(completePatch.boundaryMesh().mesh().size(), -1); + forAll(completePatchPoints, pointi) { - pointMap[completeMeshPatchPoints[pointi]] = pointi; + map[completePatchPoints[pointi]] = pointi; } - // Use the inverse point addressing to create the addressing table for this - // patch - const labelList& procMeshPatchPoints = procMeshPatch.meshPoints(); - - forAll(procMeshPatchPoints, pointi) + // Determine the complete patch point for every proc patch point, going via + // the complete mesh point index and using the above map + labelList result(procPatch.size(), -1); + forAll(procPatchPoints, pointi) { - directAddressing_[pointi] = - pointMap[directAddr[procMeshPatchPoints[pointi]]]; + result[pointi] = map[pointProcAddressing[procPatchPoints[pointi]]]; } // Check that all the patch point addresses are set - if (directAddressing_.size() && min(directAddressing_) < 0) + if (result.size() && min(result) < 0) { - hasUnmapped_ = true; - FatalErrorInFunction << "Incomplete patch point addressing" << abort(FatalError); } + + return result; } +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::pointFieldDecomposer::patchFieldDecomposer::patchFieldDecomposer +( + const pointPatch& completePatch, + const pointPatch& procPatch, + const labelList& pointProcAddressing +) +: + labelList(addressing(completePatch, procPatch, pointProcAddressing)), + forwardFieldMapper(static_cast(*this)) +{} + + Foam::pointFieldDecomposer::pointFieldDecomposer ( const pointMesh& completeMesh, diff --git a/applications/utilities/parallelProcessing/decomposePar/pointFieldDecomposer.H b/applications/utilities/parallelProcessing/decomposePar/pointFieldDecomposer.H index 405d10ae86..ea262ab09c 100644 --- a/applications/utilities/parallelProcessing/decomposePar/pointFieldDecomposer.H +++ b/applications/utilities/parallelProcessing/decomposePar/pointFieldDecomposer.H @@ -38,7 +38,7 @@ SourceFiles #include "pointMesh.H" #include "pointFields.H" -#include "generalFieldMapper.H" +#include "forwardFieldMapper.H" #include "IOobjectList.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -61,51 +61,31 @@ public: //- Point patch field decomposer class class patchFieldDecomposer : - public generalFieldMapper + public labelList, + public forwardFieldMapper { - // Private Data + // Private Member Functions - //- ... - labelList directAddressing_; - - //- Does map contain any unmapped values? - bool hasUnmapped_; + //- Generate the addressing + static labelList addressing + ( + const pointPatch& completePatch, + const pointPatch& procPatch, + const labelList& pointProcAddressing + ); public: // Constructors - //- Construct given addressing + //- Construct given patches and addressing patchFieldDecomposer ( - const pointPatch& completeMeshPatch, - const pointPatch& procMeshPatch, - const labelList& directAddr + const pointPatch& completePatch, + const pointPatch& procPatch, + const labelList& pointProcAddressing ); - - - // Member Functions - - label size() const - { - return directAddressing_.size(); - } - - bool direct() const - { - return true; - } - - bool hasUnmapped() const - { - return hasUnmapped_; - } - - const labelUList& directAddressing() const - { - return directAddressing_; - } }; diff --git a/applications/utilities/preProcessing/mapFields/meshToMesh0.H b/applications/utilities/preProcessing/mapFields/meshToMesh0.H index ece8970d85..17f8be2401 100644 --- a/applications/utilities/preProcessing/mapFields/meshToMesh0.H +++ b/applications/utilities/preProcessing/mapFields/meshToMesh0.H @@ -40,7 +40,6 @@ SourceFiles #include "fvMesh.H" #include "HashTable.H" -#include "generalFieldMapper.H" #include "scalarList.H" #include "className.H" @@ -176,54 +175,6 @@ public: ~meshToMesh0(); - //- Patch-field interpolation class - class patchFieldInterpolator - : - public generalFieldMapper - { - const labelList& directAddressing_; - - - public: - - // Constructors - - //- Construct given addressing - patchFieldInterpolator(const labelList& addr) - : - directAddressing_(addr) - {} - - - //- Destructor - virtual ~patchFieldInterpolator() - {} - - - // Member Functions - - label size() const - { - return directAddressing_.size(); - } - - bool direct() const - { - return true; - } - - bool hasUnmapped() const - { - return false; - } - - const labelList& directAddressing() const - { - return directAddressing_; - } - }; - - // Member Functions // Access diff --git a/applications/utilities/preProcessing/mapFields/meshToMesh0Templates.C b/applications/utilities/preProcessing/mapFields/meshToMesh0Templates.C index 5c7a73be69..a42d3a7dc4 100644 --- a/applications/utilities/preProcessing/mapFields/meshToMesh0Templates.C +++ b/applications/utilities/preProcessing/mapFields/meshToMesh0Templates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2023 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,6 +28,7 @@ License #include "interpolationCellPoint.H" #include "SubField.H" #include "mixedFvPatchField.H" +#include "forwardFieldMapper.H" // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // @@ -370,10 +371,7 @@ Foam::meshToMesh0::interpolate fromVf.boundaryField()[patchi], toMesh_.boundary()[patchi], DimensionedField::null(), - patchFieldInterpolator - ( - boundaryAddressing_[patchi] - ) + forwardFieldMapper(boundaryAddressing_[patchi]) ) ); } diff --git a/src/OpenFOAM/Make/files b/src/OpenFOAM/Make/files index efc2755dab..d153c24c5d 100644 --- a/src/OpenFOAM/Make/files +++ b/src/OpenFOAM/Make/files @@ -627,7 +627,7 @@ fields/UniformGeometricFields/uniformGeometricFields.C Fields = fields/Fields -$(Fields)/fieldMappers/directFieldMapper/directFieldMapper.C +$(Fields)/fieldMappers/forwardFieldMapper/forwardFieldMapper.C $(Fields)/fieldMappers/identityFieldMapper/identityFieldMapper.C $(Fields)/fieldMappers/generalFieldMapper/generalFieldMapper.C $(Fields)/fieldMappers/reverseFieldMapper/reverseFieldMapper.C diff --git a/src/OpenFOAM/fields/Fields/fieldMappers/directFieldMapper/directFieldMapper.C b/src/OpenFOAM/fields/Fields/fieldMappers/forwardFieldMapper/forwardFieldMapper.C similarity index 87% rename from src/OpenFOAM/fields/Fields/fieldMappers/directFieldMapper/directFieldMapper.C rename to src/OpenFOAM/fields/Fields/fieldMappers/forwardFieldMapper/forwardFieldMapper.C index cfde23d2e5..4e2e3273e1 100644 --- a/src/OpenFOAM/fields/Fields/fieldMappers/directFieldMapper/directFieldMapper.C +++ b/src/OpenFOAM/fields/Fields/fieldMappers/forwardFieldMapper/forwardFieldMapper.C @@ -23,12 +23,12 @@ License \*---------------------------------------------------------------------------*/ -#include "directFieldMapper.H" +#include "forwardFieldMapper.H" // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // template -void Foam::directFieldMapper::map +void Foam::forwardFieldMapper::map ( Field& f, const Field& mapF @@ -46,7 +46,7 @@ void Foam::directFieldMapper::map template -Foam::tmp> Foam::directFieldMapper::map +Foam::tmp> Foam::forwardFieldMapper::map ( const Field& mapF ) const @@ -59,10 +59,10 @@ Foam::tmp> Foam::directFieldMapper::map // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // -FOR_ALL_FIELD_TYPES(IMPLEMENT_FIELD_MAPPER_OPERATOR, directFieldMapper) +FOR_ALL_FIELD_TYPES(IMPLEMENT_FIELD_MAPPER_OPERATOR, forwardFieldMapper) -IMPLEMENT_FIELD_MAPPER_OPERATOR(label, directFieldMapper) +IMPLEMENT_FIELD_MAPPER_OPERATOR(label, forwardFieldMapper) // ************************************************************************* // diff --git a/src/OpenFOAM/fields/Fields/fieldMappers/directFieldMapper/directFieldMapper.H b/src/OpenFOAM/fields/Fields/fieldMappers/forwardFieldMapper/forwardFieldMapper.H similarity index 89% rename from src/OpenFOAM/fields/Fields/fieldMappers/directFieldMapper/directFieldMapper.H rename to src/OpenFOAM/fields/Fields/fieldMappers/forwardFieldMapper/forwardFieldMapper.H index 369345b31f..d1f87a7751 100644 --- a/src/OpenFOAM/fields/Fields/fieldMappers/directFieldMapper/directFieldMapper.H +++ b/src/OpenFOAM/fields/Fields/fieldMappers/forwardFieldMapper/forwardFieldMapper.H @@ -22,15 +22,15 @@ License along with OpenFOAM. If not, see . Class - Foam::directFieldMapper + Foam::forwardFieldMapper Description - Direct field mapper + Forward field mapper \*---------------------------------------------------------------------------*/ -#ifndef directFieldMapper_H -#define directFieldMapper_H +#ifndef forwardFieldMapper_H +#define forwardFieldMapper_H #include "fieldMapper.H" @@ -40,10 +40,10 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class directFieldMapper Declaration + Class forwardFieldMapper Declaration \*---------------------------------------------------------------------------*/ -class directFieldMapper +class forwardFieldMapper : public fieldMapper { @@ -52,7 +52,7 @@ class directFieldMapper //- Addressing from new back to old const labelUList& addressing_; - //- Does map contain any unmapped values + //- Does map contain any unmapped values? bool hasUnmapped_; @@ -72,7 +72,7 @@ public: // Constructors //- Construct given addressing - directFieldMapper(const labelUList& addressing) + forwardFieldMapper(const labelUList& addressing) : addressing_(addressing), hasUnmapped_(false) @@ -85,7 +85,7 @@ public: //- Destructor - virtual ~directFieldMapper() + virtual ~forwardFieldMapper() {} diff --git a/src/dynamicMesh/fvMeshAdder/fvMeshAdderTemplates.C b/src/dynamicMesh/fvMeshAdder/fvMeshAdderTemplates.C index d52a8c2298..2cdcd07e72 100644 --- a/src/dynamicMesh/fvMeshAdder/fvMeshAdderTemplates.C +++ b/src/dynamicMesh/fvMeshAdder/fvMeshAdderTemplates.C @@ -26,7 +26,7 @@ License #include "volFields.H" #include "surfaceFields.H" #include "pointFields.H" -#include "directFieldMapper.H" +#include "forwardFieldMapper.H" #include "reverseFieldMapper.H" // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // @@ -156,7 +156,7 @@ void Foam::fvMeshAdder::MapVolField bfld[newPatchi], // old field mesh.boundary()[newPatchi], // new fvPatch fld(), // new internal field - directFieldMapper(newToOld) // mapper (new to old) + forwardFieldMapper(newToOld) // mapper (new to old) ) ); } @@ -208,7 +208,7 @@ void Foam::fvMeshAdder::MapVolField fldToAdd.boundaryField()[patchi], // added field mesh.boundary()[newPatchi], // new fvPatch fld(), // new int. field - directFieldMapper(newToAdded) // mapper + forwardFieldMapper(newToAdded) // mapper ) ); } @@ -447,7 +447,7 @@ void Foam::fvMeshAdder::MapSurfaceField bfld[newPatchi], // old field mesh.boundary()[newPatchi], // new fvPatch fld(), // new internal field - directFieldMapper(newToOld) // mapper (new to old) + forwardFieldMapper(newToOld) // mapper (new to old) ) ); } @@ -499,7 +499,7 @@ void Foam::fvMeshAdder::MapSurfaceField fldToAdd.boundaryField()[patchi],// added field mesh.boundary()[newPatchi], // new fvPatch fld(), // new int. field - directFieldMapper(newToAdded) // mapper + forwardFieldMapper(newToAdded) // mapper ) ); } @@ -734,7 +734,7 @@ void Foam::fvMeshAdder::MapPointField bfld[newPatchi], // old field mesh.boundary()[newPatchi], // new pointPatch fld(), // new internal field - directFieldMapper(newToOld) // mapper (new to old) + forwardFieldMapper(newToOld) // mapper (new to old) ) ); } @@ -798,7 +798,7 @@ void Foam::fvMeshAdder::MapPointField fldToAdd.boundaryField()[patchi],// added field mesh.boundary()[newPatchi], // new pointPatch fld(), // new int. field - directFieldMapper(newToAdded) // mapper + forwardFieldMapper(newToAdded) // mapper ) ); } diff --git a/src/dynamicMesh/fvMeshSubset/fvMeshSubsetInterpolate.C b/src/dynamicMesh/fvMeshSubset/fvMeshSubsetInterpolate.C index 3965446a30..709a7a131e 100644 --- a/src/dynamicMesh/fvMeshSubset/fvMeshSubsetInterpolate.C +++ b/src/dynamicMesh/fvMeshSubset/fvMeshSubsetInterpolate.C @@ -28,7 +28,7 @@ License #include "internalFvsPatchField.H" #include "internalPointPatchField.H" #include "internalFvPatchFields.H" -#include "directFieldMapper.H" +#include "forwardFieldMapper.H" #include "flipOp.H" // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // @@ -143,7 +143,7 @@ Foam::fvMeshSubset::interpolate vf.boundaryField()[patchMap[patchi]], subPatch, resF(), - directFieldMapper(directAddressing) + forwardFieldMapper(directAddressing) ) ); } @@ -286,7 +286,7 @@ Foam::fvMeshSubset::interpolate sf.boundaryField()[patchMap[patchi]], subPatch, resF(), - directFieldMapper(directAddressing) + forwardFieldMapper(directAddressing) ) ); } @@ -475,7 +475,7 @@ Foam::fvMeshSubset::interpolate pf.boundaryField()[patchMap[patchi]], subPatch, resF(), - directFieldMapper(directAddressing) + forwardFieldMapper(directAddressing) ) ); } diff --git a/src/finiteVolume/fvMesh/singleCellFvMesh/singleCellFvMeshInterpolate.C b/src/finiteVolume/fvMesh/singleCellFvMesh/singleCellFvMeshInterpolate.C index 1c8dfe79fc..009339d15a 100644 --- a/src/finiteVolume/fvMesh/singleCellFvMesh/singleCellFvMeshInterpolate.C +++ b/src/finiteVolume/fvMesh/singleCellFvMesh/singleCellFvMeshInterpolate.C @@ -25,7 +25,7 @@ License #include "singleCellFvMesh.H" #include "calculatedFvPatchFields.H" -#include "directFieldMapper.H" +#include "identityFieldMapper.H" #include "Time.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -125,8 +125,6 @@ tmp> singleCellFvMesh::interpolate { forAll(vf.boundaryField(), patchi) { - labelList map(identityMap(vf.boundaryField()[patchi].size())); - bf.set ( patchi, @@ -135,7 +133,7 @@ tmp> singleCellFvMesh::interpolate vf.boundaryField()[patchi], boundary()[patchi], resF(), - directFieldMapper(map) + identityFieldMapper() ) ); } diff --git a/src/finiteVolume/fvMeshToFvMesh/fvMeshToFvMeshTemplates.C b/src/finiteVolume/fvMeshToFvMesh/fvMeshToFvMeshTemplates.C index 43c760df4d..7d444c7f03 100644 --- a/src/finiteVolume/fvMeshToFvMesh/fvMeshToFvMeshTemplates.C +++ b/src/finiteVolume/fvMeshToFvMesh/fvMeshToFvMeshTemplates.C @@ -24,7 +24,7 @@ License \*---------------------------------------------------------------------------*/ #include "fvMeshToFvMesh.H" -#include "directFieldMapper.H" +#include "setSizeFieldMapper.H" #include "identityFieldMapper.H" #include "patchToPatchLeftOverFieldMapper.H" #include "patchToPatchNormalisedFieldMapper.H" @@ -140,10 +140,7 @@ Foam::tmp> Foam::fvMeshToFvMesh::srcToTgt srcFld.boundaryField()[srcPatchi], tgtMesh.boundary()[tgtPatchi], DimensionedField::null(), - directFieldMapper - ( - labelList(tgtMesh.boundary()[tgtPatchi].size(), -1) - ) + setSizeFieldMapper(tgtMesh.boundary()[tgtPatchi].size()) ) ); }