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