ENH: pressureTools function object - storing pressure result on database

This commit is contained in:
andy
2013-05-28 16:44:17 +01:00
parent 9f78cdc248
commit 0a24a4765e

View File

@ -218,6 +218,37 @@ Foam::pressureTools::pressureTools
} }
read(dict); read(dict);
if (active_)
{
dimensionSet pDims(dimPressure);
if (calcCoeff_)
{
pDims /= dimPressure;
}
const fvMesh& mesh = refCast<const fvMesh>(obr_);
volScalarField* pPtr
(
new volScalarField
(
IOobject
(
pName(),
mesh.time().timeName(),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh,
dimensionedScalar("0", pDims, 0.0)
)
);
mesh.objectRegistry::store(pPtr);
}
} }
@ -279,18 +310,14 @@ void Foam::pressureTools::write()
{ {
const volScalarField& p = obr_.lookupObject<volScalarField>(pName_); const volScalarField& p = obr_.lookupObject<volScalarField>(pName_);
volScalarField pResult volScalarField& pResult =
const_cast<volScalarField&>
( (
IOobject obr_.lookupObject<volScalarField>(pName())
(
pName(),
obr_.time().timeName(),
obr_,
IOobject::NO_READ
),
convertToCoeff(rhoScale(p)*p + pDyn(p) + pRef())
); );
pResult == convertToCoeff(rhoScale(p)*p + pDyn(p) + pRef());
pResult.write(); pResult.write();
} }
} }