functionObjects/field/age: Added schemesField option
This allows scheme and solver settings used for the calculation of age to be copied from another variable
This commit is contained in:
@ -11,6 +11,8 @@ Description
|
|||||||
|
|
||||||
This will output a field, age, with units of time. This field needs a
|
This will output a field, age, with units of time. This field needs a
|
||||||
solver setting in fvSolution and a div(phi,age) scheme in fvSchemes.
|
solver setting in fvSolution and a div(phi,age) scheme in fvSchemes.
|
||||||
|
Alternatively, a schemesField entry can be used to reuse settings from
|
||||||
|
another field.
|
||||||
|
|
||||||
The number of correctors, nCorr, determines how many times the solution is
|
The number of correctors, nCorr, determines how many times the solution is
|
||||||
repeated to iterate away any non-linearities in the choice of scheme. If
|
repeated to iterate away any non-linearities in the choice of scheme. If
|
||||||
|
|||||||
@ -74,9 +74,11 @@ Foam::functionObjects::age::age
|
|||||||
)
|
)
|
||||||
:
|
:
|
||||||
fvMeshFunctionObject(name, runTime, dict),
|
fvMeshFunctionObject(name, runTime, dict),
|
||||||
nCorr_(readLabel(dict.lookup("nCorr"))),
|
|
||||||
phiName_(),
|
phiName_(),
|
||||||
rhoName_()
|
rhoName_(),
|
||||||
|
nCorr_(0),
|
||||||
|
schemesField_()
|
||||||
|
|
||||||
{
|
{
|
||||||
read(dict);
|
read(dict);
|
||||||
}
|
}
|
||||||
@ -97,6 +99,8 @@ bool Foam::functionObjects::age::read(const dictionary& dict)
|
|||||||
|
|
||||||
dict.readIfPresent("nCorr", nCorr_);
|
dict.readIfPresent("nCorr", nCorr_);
|
||||||
|
|
||||||
|
schemesField_ = dict.lookupOrDefault<word>("schemesField", typeName);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -107,7 +111,7 @@ bool Foam::functionObjects::age::execute()
|
|||||||
(
|
(
|
||||||
IOobject
|
IOobject
|
||||||
(
|
(
|
||||||
"age",
|
typeName,
|
||||||
mesh_.time().timeName(),
|
mesh_.time().timeName(),
|
||||||
mesh_,
|
mesh_,
|
||||||
IOobject::READ_IF_PRESENT,
|
IOobject::READ_IF_PRESENT,
|
||||||
@ -118,6 +122,8 @@ bool Foam::functionObjects::age::execute()
|
|||||||
patchTypes()
|
patchTypes()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const word divScheme("div(phi," + schemesField_ + ")");
|
||||||
|
|
||||||
// This only works because the null constructed inletValue for an
|
// This only works because the null constructed inletValue for an
|
||||||
// inletOutletFvPatchField is zero. If we needed any other value we would
|
// inletOutletFvPatchField is zero. If we needed any other value we would
|
||||||
// have to loop over the inletOutlet patches and explicitly set the
|
// have to loop over the inletOutlet patches and explicitly set the
|
||||||
@ -134,14 +140,23 @@ bool Foam::functionObjects::age::execute()
|
|||||||
|
|
||||||
for (label i = 0; i <= nCorr_; ++ i)
|
for (label i = 0; i <= nCorr_; ++ i)
|
||||||
{
|
{
|
||||||
solve(fvm::div(phi, t) == rho);
|
solve
|
||||||
|
(
|
||||||
|
fvm::div(phi, t, divScheme) == rho,
|
||||||
|
schemesField_
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (label i = 0; i <= nCorr_; ++ i)
|
for (label i = 0; i <= nCorr_; ++ i)
|
||||||
{
|
{
|
||||||
solve(fvm::div(phi, t) == dimensionedScalar("one", dimless, 1));
|
solve
|
||||||
|
(
|
||||||
|
fvm::div(phi, t, divScheme)
|
||||||
|
== dimensionedScalar("one", dimless, 1),
|
||||||
|
schemesField_
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -40,10 +40,12 @@ Description
|
|||||||
|
|
||||||
Usage
|
Usage
|
||||||
\table
|
\table
|
||||||
Property | Description | Required | Default value
|
Property | Description | Required | Default value
|
||||||
nCorr | The number of correctors | yes |
|
phi | The name of the flux field | no | phi
|
||||||
phi | The name of the flux field | no | phi
|
rho | The name of the density field | no | rho
|
||||||
rho | The name of the density field | no | rho
|
nCorr | The number of correctors | no | 0
|
||||||
|
schemesField | The name of the field from which schemes are taken | \\
|
||||||
|
no | age
|
||||||
\endtable
|
\endtable
|
||||||
|
|
||||||
\verbatim
|
\verbatim
|
||||||
@ -55,9 +57,10 @@ Usage
|
|||||||
writeControl writeTime;
|
writeControl writeTime;
|
||||||
writeInterval 1;
|
writeInterval 1;
|
||||||
|
|
||||||
nCorr 10;
|
|
||||||
phi phi;
|
phi phi;
|
||||||
rho rho;
|
rho rho;
|
||||||
|
nCorr 10;
|
||||||
|
schemesField k;
|
||||||
}
|
}
|
||||||
\endverbatim
|
\endverbatim
|
||||||
|
|
||||||
@ -89,15 +92,18 @@ class age
|
|||||||
{
|
{
|
||||||
// Private data
|
// Private data
|
||||||
|
|
||||||
//- Number of corrections
|
|
||||||
label nCorr_;
|
|
||||||
|
|
||||||
//- The name of the flux field
|
//- The name of the flux field
|
||||||
word phiName_;
|
word phiName_;
|
||||||
|
|
||||||
//- The name of the density field
|
//- The name of the density field
|
||||||
word rhoName_;
|
word rhoName_;
|
||||||
|
|
||||||
|
//- Number of corrections
|
||||||
|
label nCorr_;
|
||||||
|
|
||||||
|
//- Name of field from which schemes are taken
|
||||||
|
word schemesField_;
|
||||||
|
|
||||||
|
|
||||||
// Private Member Functions
|
// Private Member Functions
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user