mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
COMP: Updated createDpDt for moving meshes
This commit is contained in:
@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -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())
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user