BUG: fvMesh::movePoints: re-create demand-driven geometry data as early as possible

This commit is contained in:
mattijs
2012-02-01 15:15:32 +00:00
parent f0d40fc7fe
commit 68093ce564
2 changed files with 50 additions and 6 deletions

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2012 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -82,6 +82,40 @@ void Foam::fvMesh::clearGeomNotOldVol()
}
void Foam::fvMesh::updateGeomNotOldVol()
{
bool haveV = (VPtr_ != NULL);
bool haveSf = (SfPtr_ != NULL);
bool haveMagSf = (magSfPtr_ != NULL);
bool haveCP = (CPtr_ != NULL);
bool haveCf = (CfPtr_ != NULL);
clearGeomNotOldVol();
// Now recreate the fields
if (haveV)
{
(void)V();
}
if (haveSf)
{
(void)Sf();
}
if (haveMagSf)
{
(void)magSf();
}
if (haveCP)
{
(void)C();
}
if (haveCf)
{
(void)Cf();
}
}
void Foam::fvMesh::clearGeom()
{
clearGeomNotOldVol();
@ -562,10 +596,6 @@ Foam::tmp<Foam::scalarField> Foam::fvMesh::movePoints(const pointField& p)
}
// delete out of date geometrical information
clearGeomNotOldVol();
if (!phiPtr_)
{
// Create mesh motion flux
@ -612,6 +642,16 @@ Foam::tmp<Foam::scalarField> Foam::fvMesh::movePoints(const pointField& p)
phi.boundaryField()[patchI] *= rDeltaT;
}
// Update or delete the local geometric properties as early as possible so
// they can be used if necessary. These get recreated here instead of
// demand driven since they might do parallel transfers which can conflict
// with when they're actually being used.
// Note that between above "polyMesh::movePoints(p)" and here nothing
// should use the local geometric properties.
updateGeomNotOldVol();
// Update other local data
boundary_.movePoints();
surfaceInterpolation::movePoints();

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2012 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -133,6 +133,10 @@ class fvMesh
//- Clear geometry but not the old-time cell volumes
void clearGeomNotOldVol();
//- Clear geometry like clearGeomNotOldVol but recreate any
// geometric demand-driven data that was set
void updateGeomNotOldVol();
//- Clear geometry
void clearGeom();