From c271c97a7e8a9e22725e98e74b724cf25d49fa03 Mon Sep 17 00:00:00 2001 From: henry <Henry Weller h.weller@opencfd.co.uk> Date: Thu, 12 Mar 2009 21:51:52 +0000 Subject: [PATCH] Added the new 'cacheFields' entry to allow derived fields like 'grad(U)' to be specified to be cached to avoid unnecessary recalculation. --- .../finiteVolume/fvSchemes/fvSchemes.C | 57 +++++++++++++------ .../finiteVolume/fvSchemes/fvSchemes.H | 4 ++ 2 files changed, 43 insertions(+), 18 deletions(-) diff --git a/src/finiteVolume/finiteVolume/fvSchemes/fvSchemes.C b/src/finiteVolume/finiteVolume/fvSchemes/fvSchemes.C index 979d85e0d10..b66d628cae1 100644 --- a/src/finiteVolume/finiteVolume/fvSchemes/fvSchemes.C +++ b/src/finiteVolume/finiteVolume/fvSchemes/fvSchemes.C @@ -29,14 +29,11 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -namespace Foam -{ - -int fvSchemes::debug(Foam::debug::debugSwitch("fvSchemes", false)); +int Foam::fvSchemes::debug(Foam::debug::debugSwitch("fvSchemes", false)); // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -fvSchemes::fvSchemes(const objectRegistry& obr) +Foam::fvSchemes::fvSchemes(const objectRegistry& obr) : IOdictionary ( @@ -124,7 +121,12 @@ fvSchemes::fvSchemes(const objectRegistry& obr) ITstream(objectPath() + "::fluxRequired", tokenList())() ), - defaultFluxRequired_(false) + defaultFluxRequired_(false), + cacheFields_ + ( + ITstream(objectPath() + "::cacheFields", + tokenList())() + ) { read(); } @@ -132,7 +134,7 @@ fvSchemes::fvSchemes(const objectRegistry& obr) // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -bool fvSchemes::read() +bool Foam::fvSchemes::read() { if (regIOobject::read()) { @@ -329,6 +331,11 @@ bool fvSchemes::read() } } + if (dict.found("cacheFields")) + { + cacheFields_ = dict.subDict("cacheFields"); + } + return true; } else @@ -338,7 +345,7 @@ bool fvSchemes::read() } -const dictionary& fvSchemes::schemesDict() const +const Foam::dictionary& Foam::fvSchemes::schemesDict() const { 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) { @@ -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) { @@ -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) { @@ -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) { @@ -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) { @@ -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) { @@ -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) { @@ -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) { @@ -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 // ************************************************************************* // diff --git a/src/finiteVolume/finiteVolume/fvSchemes/fvSchemes.H b/src/finiteVolume/finiteVolume/fvSchemes/fvSchemes.H index 87e9f536e4e..3186085846d 100644 --- a/src/finiteVolume/finiteVolume/fvSchemes/fvSchemes.H +++ b/src/finiteVolume/finiteVolume/fvSchemes/fvSchemes.H @@ -79,6 +79,8 @@ class fvSchemes dictionary fluxRequired_; bool defaultFluxRequired_; + dictionary cacheFields_; + // Private Member Functions @@ -121,6 +123,8 @@ public: bool fluxRequired(const word& name) const; + bool cache(const word& name) const; + // Read -- GitLab