Added the new 'cacheFields' entry to allow derived fields like 'grad(U)' to be

specified to be cached to avoid unnecessary recalculation.
This commit is contained in:
henry
2009-03-12 21:51:52 +00:00
parent 2944ce59c1
commit c271c97a7e
2 changed files with 43 additions and 18 deletions

View File

@ -29,14 +29,11 @@ License
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam int Foam::fvSchemes::debug(Foam::debug::debugSwitch("fvSchemes", false));
{
int fvSchemes::debug(Foam::debug::debugSwitch("fvSchemes", false));
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
fvSchemes::fvSchemes(const objectRegistry& obr) Foam::fvSchemes::fvSchemes(const objectRegistry& obr)
: :
IOdictionary IOdictionary
( (
@ -124,7 +121,12 @@ fvSchemes::fvSchemes(const objectRegistry& obr)
ITstream(objectPath() + "::fluxRequired", ITstream(objectPath() + "::fluxRequired",
tokenList())() tokenList())()
), ),
defaultFluxRequired_(false) defaultFluxRequired_(false),
cacheFields_
(
ITstream(objectPath() + "::cacheFields",
tokenList())()
)
{ {
read(); read();
} }
@ -132,7 +134,7 @@ fvSchemes::fvSchemes(const objectRegistry& obr)
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
bool fvSchemes::read() bool Foam::fvSchemes::read()
{ {
if (regIOobject::read()) if (regIOobject::read())
{ {
@ -329,6 +331,11 @@ bool fvSchemes::read()
} }
} }
if (dict.found("cacheFields"))
{
cacheFields_ = dict.subDict("cacheFields");
}
return true; return true;
} }
else else
@ -338,7 +345,7 @@ bool fvSchemes::read()
} }
const dictionary& fvSchemes::schemesDict() const const Foam::dictionary& Foam::fvSchemes::schemesDict() const
{ {
if (found("select")) if (found("select"))
{ {
@ -351,7 +358,7 @@ const dictionary& fvSchemes::schemesDict() const
} }
ITstream& fvSchemes::ddtScheme(const word& name) const Foam::ITstream& Foam::fvSchemes::ddtScheme(const word& name) const
{ {
if (debug) if (debug)
{ {
@ -370,7 +377,7 @@ ITstream& fvSchemes::ddtScheme(const word& name) const
} }
ITstream& fvSchemes::d2dt2Scheme(const word& name) const Foam::ITstream& Foam::fvSchemes::d2dt2Scheme(const word& name) const
{ {
if (debug) if (debug)
{ {
@ -389,7 +396,7 @@ ITstream& fvSchemes::d2dt2Scheme(const word& name) const
} }
ITstream& fvSchemes::interpolationScheme(const word& name) const Foam::ITstream& Foam::fvSchemes::interpolationScheme(const word& name) const
{ {
if (debug) if (debug)
{ {
@ -412,7 +419,7 @@ ITstream& fvSchemes::interpolationScheme(const word& name) const
} }
ITstream& fvSchemes::divScheme(const word& name) const Foam::ITstream& Foam::fvSchemes::divScheme(const word& name) const
{ {
if (debug) if (debug)
{ {
@ -431,7 +438,7 @@ ITstream& fvSchemes::divScheme(const word& name) const
} }
ITstream& fvSchemes::gradScheme(const word& name) const Foam::ITstream& Foam::fvSchemes::gradScheme(const word& name) const
{ {
if (debug) if (debug)
{ {
@ -450,7 +457,7 @@ ITstream& fvSchemes::gradScheme(const word& name) const
} }
ITstream& fvSchemes::snGradScheme(const word& name) const Foam::ITstream& Foam::fvSchemes::snGradScheme(const word& name) const
{ {
if (debug) if (debug)
{ {
@ -469,7 +476,7 @@ ITstream& fvSchemes::snGradScheme(const word& name) const
} }
ITstream& fvSchemes::laplacianScheme(const word& name) const Foam::ITstream& Foam::fvSchemes::laplacianScheme(const word& name) const
{ {
if (debug) if (debug)
{ {
@ -488,7 +495,7 @@ ITstream& fvSchemes::laplacianScheme(const word& name) const
} }
bool fvSchemes::fluxRequired(const word& name) const bool Foam::fvSchemes::fluxRequired(const word& name) const
{ {
if (debug) if (debug)
{ {
@ -506,8 +513,22 @@ bool fvSchemes::fluxRequired(const word& name) const
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // bool Foam::fvSchemes::cache(const word& name) const
{
if (debug)
{
Info<< "Lookup cache for " << name << endl;
}
if (cacheFields_.found(name))
{
return true;
}
else
{
return false;
}
}
} // End namespace Foam
// ************************************************************************* // // ************************************************************************* //

View File

@ -79,6 +79,8 @@ class fvSchemes
dictionary fluxRequired_; dictionary fluxRequired_;
bool defaultFluxRequired_; bool defaultFluxRequired_;
dictionary cacheFields_;
// Private Member Functions // Private Member Functions
@ -121,6 +123,8 @@ public:
bool fluxRequired(const word& name) const; bool fluxRequired(const word& name) const;
bool cache(const word& name) const;
// Read // Read