COMP: Updated createDpDt for moving meshes

This commit is contained in:
Andrew Heather
2018-06-01 15:39:28 +01:00
parent f51ee9a0e2
commit 34606f54b9
3 changed files with 33 additions and 41 deletions

View File

@ -49,9 +49,9 @@ Foam::autoPtr<Foam::dynamicFvMesh> Foam::dynamicFvMesh::New(const IOobject& io)
{ {
IOdictionary dict(dictHeader); IOdictionary dict(dictHeader);
const word dynamicFvMeshTypeName(dict.lookup("dynamicFvMesh")); const word modelType(dict.lookup("dynamicFvMesh"));
Info<< "Selecting dynamicFvMesh " << dynamicFvMeshTypeName << endl; Info<< "Selecting dynamicFvMesh " << modelType << endl;
const_cast<Time&>(io.time()).libs().open const_cast<Time&>(io.time()).libs().open
( (
@ -67,25 +67,22 @@ Foam::autoPtr<Foam::dynamicFvMesh> Foam::dynamicFvMesh::New(const IOobject& io)
<< exit(FatalError); << exit(FatalError);
} }
auto cstrIter = auto cstrIter = IOobjectConstructorTablePtr_->cfind(modelType);
IOobjectConstructorTablePtr_->cfind(dynamicFvMeshTypeName);
if (!cstrIter.found()) if (!cstrIter.found())
{ {
FatalIOErrorInFunction(dict) FatalIOErrorInFunction(dict)
<< "Unknown dynamicFvMesh type " << "Unknown dynamicFvMesh type "
<< dynamicFvMeshTypeName << nl << nl << modelType << nl << nl
<< "Valid dynamicFvMesh types are :" << endl << "Valid dynamicFvMesh types are :" << endl
<< IOobjectConstructorTablePtr_->sortedToc() << IOobjectConstructorTablePtr_->sortedToc()
<< exit(FatalIOError); << exit(FatalIOError);
} }
#define MOVING_MESH
return autoPtr<dynamicFvMesh>(cstrIter()(io)); return autoPtr<dynamicFvMesh>(cstrIter()(io));
} }
#undef MOVING_MESH
return autoPtr<dynamicFvMesh>(new staticFvMesh(io)); return autoPtr<dynamicFvMesh>(new staticFvMesh(io));
} }

View File

@ -40,15 +40,13 @@ SourceFiles
#include "autoPtr.H" #include "autoPtr.H"
#include "runTimeSelectionTables.H" #include "runTimeSelectionTables.H"
#define MOVING_MESH
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam namespace Foam
{ {
/*---------------------------------------------------------------------------*\ /*---------------------------------------------------------------------------*\
Class engineMesh Declaration Class engineMesh Declaration
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
class engineMesh class engineMesh
@ -114,9 +112,13 @@ public:
// Member Functions // Member Functions
// Edit //- Is mesh dynamic
virtual bool dynamic() const
{
return true;
}
virtual void move() = 0; virtual void move() = 0;
}; };

View File

@ -1,36 +1,29 @@
#if defined(MOVING_MESH) IOobject dpdtHeader
(
"dpdt",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE
);
if (mesh.dynamic())
{
Info<< "Creating field dpdt for moving meshes\n" << endl; Info<< "Creating field dpdt for moving meshes\n" << endl;
// Note: set to read if present and auto write to simplify dpdt correction // Note
// by meshPhi // - set to READ_IF_PRESENT and AUTO_WRITE to simplify dpdt correction
volScalarField dpdt // by meshPhi
(
IOobject dpdtHeader.readOpt() = IOobject::READ_IF_PRESENT;
( dpdtHeader.writeOpt() = IOobject::AUTO_WRITE;
"dpdt", }
runTime.timeName(), else
mesh, {
IOobject::READ_IF_PRESENT,
IOobject::AUTO_WRITE
),
fvc::ddt(p)
);
#else
Info<< "Creating field dpdt\n" << endl; Info<< "Creating field dpdt\n" << endl;
}
volScalarField dpdt volScalarField dpdt(dpdtHeader, fvc::ddt(p));
(
IOobject
(
"dpdt",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
fvc::ddt(p)
);
#endif
if (!thermo.dpdt()) if (!thermo.dpdt())
{ {