diff --git a/src/sampling/meshToMeshInterpolation/meshToMesh/meshToMeshTemplates.C b/src/sampling/meshToMeshInterpolation/meshToMesh/meshToMeshTemplates.C index 5a9926046f..10a1c507c4 100644 --- a/src/sampling/meshToMeshInterpolation/meshToMesh/meshToMeshTemplates.C +++ b/src/sampling/meshToMeshInterpolation/meshToMesh/meshToMeshTemplates.C @@ -26,6 +26,7 @@ License #include "fvMesh.H" #include "volFields.H" #include "directFvPatchFieldMapper.H" +#include "calculatedFvPatchField.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -381,30 +382,21 @@ Foam::meshToMesh::mapSrcToTgt const fvMesh& tgtMesh = static_cast(tgtRegion_); - const typename fieldType::GeometricBoundaryField& bfld = + const fvBoundaryMesh& tgtBm = tgtMesh.boundary(); + const typename fieldType::GeometricBoundaryField& srcBfld = field.boundaryField(); - PtrList > patchFields(bfld.size()); + wordList patchTypes(tgtBm.size(), calculatedFvPatchField::typeName); - // constuct tgt boundary patch types as copy of field boundary types + // constuct tgt boundary patch types as copy of 'field' boundary types // note: this will provide place holders for fields with additional // entries, but these values will need to be reset - forAll(bfld, patchI) + forAll(tgtPatchID_, i) { - patchFields.set - ( - patchI, - fvPatchField::New - ( - bfld[patchI], - tgtMesh.boundary()[patchI], - DimensionedField::null(), - directFvPatchFieldMapper - ( - labelList(tgtMesh.boundary()[patchI].size(), -1) - ) - ) - ); + label srcPatchI = srcPatchID_[i]; + label tgtPatchI = tgtPatchID_[i]; + + patchTypes[tgtPatchI] = srcBfld[srcPatchI].type(); } tmp tresult @@ -420,9 +412,8 @@ Foam::meshToMesh::mapSrcToTgt IOobject::NO_WRITE ), tgtMesh, - field.dimensions(), - Field(tgtMesh.nCells(), pTraits::zero), - patchFields + dimensioned("0", field.dimensions(), pTraits::zero), + patchTypes ) ); @@ -517,30 +508,21 @@ Foam::meshToMesh::mapTgtToSrc const fvMesh& srcMesh = static_cast(srcRegion_); - const typename fieldType::GeometricBoundaryField& bfld = + const fvBoundaryMesh& srcBm = srcMesh.boundary(); + const typename fieldType::GeometricBoundaryField& tgtBfld = field.boundaryField(); - PtrList > patchFields(bfld.size()); + wordList patchTypes(srcBm.size(), calculatedFvPatchField::typeName); - // constuct src boundary patch types as copy of field boundary types + // constuct src boundary patch types as copy of 'field' boundary types // note: this will provide place holders for fields with additional // entries, but these values will need to be reset - forAll(bfld, patchI) + forAll(srcPatchID_, i) { - patchFields.set - ( - patchI, - fvPatchField::New - ( - bfld[patchI], - srcMesh.boundary()[patchI], - DimensionedField::null(), - directFvPatchFieldMapper - ( - labelList(srcMesh.boundary()[patchI].size(), -1) - ) - ) - ); + label srcPatchI = srcPatchID_[i]; + label tgtPatchI = tgtPatchID_[i]; + + patchTypes[srcPatchI] = tgtBfld[tgtPatchI].type(); } tmp tresult @@ -556,9 +538,8 @@ Foam::meshToMesh::mapTgtToSrc IOobject::NO_WRITE ), srcMesh, - field.dimensions(), - Field(srcMesh.nCells(), pTraits::zero), - patchFields + dimensioned("0", field.dimensions(), pTraits::zero), + patchTypes ) );