surfaceFieldValue: Fix run-time usage with non-conformal coupled

This commit is contained in:
Will Bainbridge
2022-08-04 14:59:56 +01:00
parent 792585f9ee
commit 3ce205e2b3
2 changed files with 16 additions and 8 deletions

View File

@ -1223,9 +1223,6 @@ bool Foam::fvMeshStitcher::disconnect
// Prevent hangs caused by processor cyclic patches using mesh geometry
mesh_.deltaCoeffs();
meshObject::movePoints<fvMesh>(mesh_);
meshObject::movePoints<lduMesh>(mesh_);
if (coupled && geometric)
{
const volScalarField::Internal o(openness());
@ -1246,6 +1243,11 @@ bool Foam::fvMeshStitcher::disconnect
Info<< decrIndent;
}
meshObject::movePoints<fvMesh>(mesh_);
meshObject::movePoints<lduMesh>(mesh_);
const_cast<Time&>(mesh_.time()).functionObjects().movePoints(mesh_);
return true;
}
@ -1398,9 +1400,6 @@ bool Foam::fvMeshStitcher::connect
// Prevent hangs caused by processor cyclic patches using mesh geometry
mesh_.deltaCoeffs();
meshObject::movePoints<fvMesh>(mesh_);
meshObject::movePoints<lduMesh>(mesh_);
if (coupled && geometric)
{
const volScalarField::Internal o(openness());
@ -1504,6 +1503,11 @@ bool Foam::fvMeshStitcher::connect
Info<< decrIndent;
}
meshObject::movePoints<fvMesh>(mesh_);
meshObject::movePoints<lduMesh>(mesh_);
const_cast<Time&>(mesh_.time()).functionObjects().movePoints(mesh_);
return true;
}
@ -1564,6 +1568,8 @@ void Foam::fvMeshStitcher::reconnect(const bool geometric) const
meshObject::movePoints<fvMesh>(mesh_);
meshObject::movePoints<lduMesh>(mesh_);
const_cast<Time&>(mesh_.time()).functionObjects().movePoints(mesh_);
}

View File

@ -30,6 +30,7 @@ License
#include "mergePoints.H"
#include "indirectPrimitivePatch.H"
#include "PatchTools.H"
#include "fvMeshStitcher.H"
#include "polyTopoChangeMap.H"
#include "polyMeshMap.H"
#include "addToRunTimeSelectionTable.H"
@ -442,7 +443,7 @@ void Foam::functionObjects::fieldValues::surfaceFieldValue::initialise
}
}
if (nFaces_ == 0)
if (nFaces_ == 0 && (!mesh_.stitcher().stitches() || !mesh_.conformal()))
{
FatalErrorInFunction
<< type() << " " << name() << ": "
@ -826,7 +827,8 @@ void Foam::functionObjects::fieldValues::surfaceFieldValue::movePoints
{
if (&mesh == &mesh_)
{
// It may be necessary to reset if the mesh moves
// It may be necessary to reset if the mesh moves. The total area might
// change, as might non-conformal faces.
initialise(dict_);
}
}