ENH: use average value for ensight faceZone on proc boundary (#1176)
This commit is contained in:
parent
6b8f56efea
commit
789c5d00b0
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
\\/ M anipulation | Copyright (C) 2016-2018 OpenCFD Ltd.
|
||||
\\/ M anipulation | Copyright (C) 2016-2019 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -27,6 +27,7 @@ License
|
||||
#include "fvMesh.H"
|
||||
#include "globalMeshData.H"
|
||||
#include "PstreamCombineReduceOps.H"
|
||||
#include "emptyPolyPatch.H"
|
||||
#include "processorPolyPatch.H"
|
||||
#include "mapDistribute.H"
|
||||
#include "stringListOps.H"
|
||||
@ -209,18 +210,21 @@ void Foam::ensightMesh::correct()
|
||||
if (option().useFaceZones())
|
||||
{
|
||||
// Mark boundary faces to be excluded from export
|
||||
bitSet excludeFace(mesh_.nFaces()); // all false
|
||||
bitSet excludeFace(mesh_.nFaces());
|
||||
|
||||
for (const polyPatch& pp : mesh_.boundaryMesh())
|
||||
{
|
||||
if
|
||||
(
|
||||
isA<processorPolyPatch>(pp)
|
||||
&& !refCast<const processorPolyPatch>(pp).owner()
|
||||
)
|
||||
const auto* procPatch = isA<processorPolyPatch>(pp);
|
||||
|
||||
if (isA<emptyPolyPatch>(pp))
|
||||
{
|
||||
excludeFace.set(pp.range());
|
||||
}
|
||||
else if (procPatch && !procPatch->owner())
|
||||
{
|
||||
// Exclude neighbour-side, retain owner-side only
|
||||
excludeFace.set(pp.range());
|
||||
}
|
||||
}
|
||||
|
||||
// Use sorted order for later consistency
|
||||
|
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
\\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd.
|
||||
\\/ M anipulation | Copyright (C) 2016-2019 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -38,6 +38,7 @@ License
|
||||
#include "uindirectPrimitivePatch.H"
|
||||
#include "interpolation.H"
|
||||
#include "linear.H"
|
||||
#include "processorFvPatch.H"
|
||||
|
||||
// * * * * * * * * * * Static Private Member Functions * * * * * * * * * * * //
|
||||
|
||||
@ -119,10 +120,8 @@ bool Foam::ensightOutput::writeFaceField
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@ -257,37 +256,36 @@ bool Foam::ensightOutput::writeField
|
||||
);
|
||||
|
||||
// flat boundary field
|
||||
// as per volPointInterpolation::flatBoundaryField()
|
||||
// similar to volPointInterpolation::flatBoundaryField()
|
||||
|
||||
Field<Type> flat(mesh.nBoundaryFaces());
|
||||
Field<Type> flat(mesh.nBoundaryFaces(), Zero);
|
||||
|
||||
const fvBoundaryMesh& bm = mesh.boundary();
|
||||
forAll(vf.boundaryField(), patchI)
|
||||
forAll(vf.boundaryField(), patchi)
|
||||
{
|
||||
const polyPatch& pp = bm[patchI].patch();
|
||||
const label bFaceI = pp.start() - mesh.nInternalFaces();
|
||||
const polyPatch& pp = bm[patchi].patch();
|
||||
const auto& bf = vf.boundaryField()[patchi];
|
||||
|
||||
if
|
||||
(
|
||||
isA<emptyFvPatch>(bm[patchI])
|
||||
|| vf.boundaryField()[patchI].coupled()
|
||||
)
|
||||
if (isA<processorFvPatch>(bm[patchi]))
|
||||
{
|
||||
// Use average value for processor faces
|
||||
// own cell value = patchInternalField
|
||||
// nei cell value = evaluated boundary values
|
||||
SubList<Type>
|
||||
(
|
||||
flat,
|
||||
pp.size(),
|
||||
bFaceI
|
||||
) = Zero;
|
||||
bf.size(),
|
||||
pp.offset()
|
||||
) = (0.5 * (bf.patchInternalField() + bf));
|
||||
}
|
||||
else
|
||||
else if (!isA<emptyFvPatch>(bm[patchi]))
|
||||
{
|
||||
SubList<Type>
|
||||
(
|
||||
flat,
|
||||
vf.boundaryField()[patchI].size(),
|
||||
bFaceI
|
||||
) = vf.boundaryField()[patchI];
|
||||
bf.size(),
|
||||
pp.offset()
|
||||
) = bf;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user