fvMesh: Construct changers after geometry pointers have been set
This allows changers to access geometry from the fvMesh on construction. It also prevents a crash that occurs when a changer loads a field in which there is a cyclic boundary condition.
This commit is contained in:
@ -260,24 +260,9 @@ Foam::fvMesh::fvMesh(const IOobject& io, const bool changers)
|
|||||||
fvSolution(static_cast<const objectRegistry&>(*this)),
|
fvSolution(static_cast<const objectRegistry&>(*this)),
|
||||||
data(static_cast<const objectRegistry&>(*this)),
|
data(static_cast<const objectRegistry&>(*this)),
|
||||||
boundary_(*this, boundaryMesh()),
|
boundary_(*this, boundaryMesh()),
|
||||||
topoChanger_
|
topoChanger_(nullptr),
|
||||||
(
|
distributor_(nullptr),
|
||||||
changers
|
mover_(nullptr),
|
||||||
? fvMeshTopoChanger::New(*this)
|
|
||||||
: autoPtr<fvMeshTopoChanger>(nullptr)
|
|
||||||
),
|
|
||||||
distributor_
|
|
||||||
(
|
|
||||||
changers
|
|
||||||
? fvMeshDistributor::New(*this)
|
|
||||||
: autoPtr<fvMeshDistributor>(nullptr)
|
|
||||||
),
|
|
||||||
mover_
|
|
||||||
(
|
|
||||||
changers
|
|
||||||
? fvMeshMover::New(*this)
|
|
||||||
: autoPtr<fvMeshMover>(nullptr)
|
|
||||||
),
|
|
||||||
lduPtr_(nullptr),
|
lduPtr_(nullptr),
|
||||||
curTimeIndex_(time().timeIndex()),
|
curTimeIndex_(time().timeIndex()),
|
||||||
VPtr_(nullptr),
|
VPtr_(nullptr),
|
||||||
@ -294,6 +279,14 @@ Foam::fvMesh::fvMesh(const IOobject& io, const bool changers)
|
|||||||
Pout<< FUNCTION_NAME << "Constructing fvMesh from IOobject" << endl;
|
Pout<< FUNCTION_NAME << "Constructing fvMesh from IOobject" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Construct changers
|
||||||
|
if (changers)
|
||||||
|
{
|
||||||
|
topoChanger_.set(fvMeshTopoChanger::New(*this).ptr());
|
||||||
|
distributor_.set(fvMeshDistributor::New(*this).ptr());
|
||||||
|
mover_.set(fvMeshMover::New(*this).ptr());
|
||||||
|
}
|
||||||
|
|
||||||
// Check the existence of the cell volumes and read if present
|
// Check the existence of the cell volumes and read if present
|
||||||
// and set the storage of V00
|
// and set the storage of V00
|
||||||
if (fileHandler().isFile(time().timePath()/"V0"))
|
if (fileHandler().isFile(time().timePath()/"V0"))
|
||||||
@ -365,6 +358,9 @@ Foam::fvMesh::fvMesh
|
|||||||
fvSolution(static_cast<const objectRegistry&>(*this)),
|
fvSolution(static_cast<const objectRegistry&>(*this)),
|
||||||
data(static_cast<const objectRegistry&>(*this)),
|
data(static_cast<const objectRegistry&>(*this)),
|
||||||
boundary_(*this, boundaryMesh()),
|
boundary_(*this, boundaryMesh()),
|
||||||
|
topoChanger_(nullptr),
|
||||||
|
distributor_(nullptr),
|
||||||
|
mover_(nullptr),
|
||||||
lduPtr_(nullptr),
|
lduPtr_(nullptr),
|
||||||
curTimeIndex_(time().timeIndex()),
|
curTimeIndex_(time().timeIndex()),
|
||||||
VPtr_(nullptr),
|
VPtr_(nullptr),
|
||||||
@ -407,6 +403,9 @@ Foam::fvMesh::fvMesh
|
|||||||
fvSolution(static_cast<const objectRegistry&>(*this)),
|
fvSolution(static_cast<const objectRegistry&>(*this)),
|
||||||
data(static_cast<const objectRegistry&>(*this)),
|
data(static_cast<const objectRegistry&>(*this)),
|
||||||
boundary_(*this, boundaryMesh()),
|
boundary_(*this, boundaryMesh()),
|
||||||
|
topoChanger_(nullptr),
|
||||||
|
distributor_(nullptr),
|
||||||
|
mover_(nullptr),
|
||||||
lduPtr_(nullptr),
|
lduPtr_(nullptr),
|
||||||
curTimeIndex_(time().timeIndex()),
|
curTimeIndex_(time().timeIndex()),
|
||||||
VPtr_(nullptr),
|
VPtr_(nullptr),
|
||||||
@ -440,6 +439,9 @@ Foam::fvMesh::fvMesh
|
|||||||
fvSolution(static_cast<const objectRegistry&>(*this)),
|
fvSolution(static_cast<const objectRegistry&>(*this)),
|
||||||
data(static_cast<const objectRegistry&>(*this)),
|
data(static_cast<const objectRegistry&>(*this)),
|
||||||
boundary_(*this),
|
boundary_(*this),
|
||||||
|
topoChanger_(nullptr),
|
||||||
|
distributor_(nullptr),
|
||||||
|
mover_(nullptr),
|
||||||
lduPtr_(nullptr),
|
lduPtr_(nullptr),
|
||||||
curTimeIndex_(time().timeIndex()),
|
curTimeIndex_(time().timeIndex()),
|
||||||
VPtr_(nullptr),
|
VPtr_(nullptr),
|
||||||
|
|||||||
Reference in New Issue
Block a user