diff --git a/src/OpenFOAM/matrices/solution/solution.C b/src/OpenFOAM/matrices/solution/solution.C index 5919077072..88c0938f1d 100644 --- a/src/OpenFOAM/matrices/solution/solution.C +++ b/src/OpenFOAM/matrices/solution/solution.C @@ -43,9 +43,40 @@ static const Foam::List subDictNames ); //! @endcond + +// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // + +void Foam::solution::read(const dictionary& dict) +{ + if (dict.found("cache")) + { + cache_ = dict.subDict("cache"); + caching_ = cache_.lookupOrDefault("active", true); + } + + if (dict.found("relaxationFactors")) + { + relaxationFactors_ = dict.subDict("relaxationFactors"); + } + + relaxationFactors_.readIfPresent("default", defaultRelaxationFactor_); + + if (dict.found("solvers")) + { + solvers_ = dict.subDict("solvers"); + upgradeSolverDict(solvers_); + } +} + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::solution::solution(const objectRegistry& obr, const fileName& dictName) +Foam::solution::solution +( + const objectRegistry& obr, + const fileName& dictName, + const bool syncPar +) : IOdictionary ( @@ -56,7 +87,8 @@ Foam::solution::solution(const objectRegistry& obr, const fileName& dictName) obr, IOobject::MUST_READ_IF_MODIFIED, IOobject::NO_WRITE - ) + ), + syncPar ), cache_(ITstream("cache", tokenList())()), caching_(false), @@ -64,7 +96,7 @@ Foam::solution::solution(const objectRegistry& obr, const fileName& dictName) defaultRelaxationFactor_(0), solvers_(ITstream("solvers", tokenList())()) { - read(); + read(solutionDict()); } @@ -250,26 +282,7 @@ bool Foam::solution::read() { if (regIOobject::read()) { - const dictionary& dict = solutionDict(); - - if (dict.found("cache")) - { - cache_ = dict.subDict("cache"); - caching_ = cache_.lookupOrDefault("active", true); - } - - if (dict.found("relaxationFactors")) - { - relaxationFactors_ = dict.subDict("relaxationFactors"); - } - - relaxationFactors_.readIfPresent("default", defaultRelaxationFactor_); - - if (dict.found("solvers")) - { - solvers_ = dict.subDict("solvers"); - upgradeSolverDict(solvers_); - } + read(solutionDict()); return true; } diff --git a/src/OpenFOAM/matrices/solution/solution.H b/src/OpenFOAM/matrices/solution/solution.H index 8d6949b7af..fc480f2d32 100644 --- a/src/OpenFOAM/matrices/solution/solution.H +++ b/src/OpenFOAM/matrices/solution/solution.H @@ -70,6 +70,9 @@ class solution // Private Member Functions + //- Read settings from the dictionary + void read(const dictionary&); + //- Disallow default bitwise copy construct and assignment solution(const solution&); void operator=(const solution&); @@ -89,7 +92,12 @@ public: // Constructors //- Construct for given objectRegistry and dictionary - solution(const objectRegistry& obr, const fileName& dictName); + solution + ( + const objectRegistry& obr, + const fileName& dictName, + const bool syncPar=true + ); // Member Functions diff --git a/src/finiteVolume/finiteVolume/fvSchemes/fvSchemes.C b/src/finiteVolume/finiteVolume/fvSchemes/fvSchemes.C index 33ad9d6e01..36a9da6ef9 100644 --- a/src/finiteVolume/finiteVolume/fvSchemes/fvSchemes.C +++ b/src/finiteVolume/finiteVolume/fvSchemes/fvSchemes.C @@ -28,9 +28,9 @@ License // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - int Foam::fvSchemes::debug(Foam::debug::debugSwitch("fvSchemes", false)); + // * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // void Foam::fvSchemes::clear() @@ -53,9 +53,201 @@ void Foam::fvSchemes::clear() defaultFluxRequired_ = false; } + +void Foam::fvSchemes::read(const dictionary& dict) +{ + if (dict.found("ddtSchemes")) + { + ddtSchemes_ = dict.subDict("ddtSchemes"); + } + else if (dict.found("timeScheme")) + { + // For backward compatibility. + // The timeScheme will be deprecated with warning or removed + WarningIn("fvSchemes::read()") + << "Using deprecated 'timeScheme' instead of 'ddtSchemes'" + << nl << endl; + + word schemeName(dict.lookup("timeScheme")); + + if (schemeName == "EulerImplicit") + { + schemeName = "Euler"; + } + else if (schemeName == "BackwardDifferencing") + { + schemeName = "backward"; + } + else if (schemeName == "SteadyState") + { + schemeName = "steadyState"; + } + else + { + FatalIOErrorIn("fvSchemes::read()", dict.lookup("timeScheme")) + << "\n Only EulerImplicit, BackwardDifferencing and " + "SteadyState\n are supported by the old timeScheme " + "specification.\n Please use ddtSchemes instead." + << exit(FatalIOError); + } + + ddtSchemes_.set("default", schemeName); + + ddtSchemes_.lookup("default")[0].lineNumber() = + dict.lookup("timeScheme").lineNumber(); + } + else + { + ddtSchemes_.set("default", "none"); + } + + if + ( + ddtSchemes_.found("default") + && word(ddtSchemes_.lookup("default")) != "none" + ) + { + defaultDdtScheme_ = ddtSchemes_.lookup("default"); + } + + + if (dict.found("d2dt2Schemes")) + { + d2dt2Schemes_ = dict.subDict("d2dt2Schemes"); + } + else if (dict.found("timeScheme")) + { + // For backward compatibility. + // The timeScheme will be deprecated with warning or removed + WarningIn("fvSchemes::read()") + << "Using deprecated 'timeScheme' instead of 'd2dt2Schemes'" + << nl << endl; + + word schemeName(dict.lookup("timeScheme")); + + if (schemeName == "EulerImplicit") + { + schemeName = "Euler"; + } + else if (schemeName == "SteadyState") + { + schemeName = "steadyState"; + } + + d2dt2Schemes_.set("default", schemeName); + + d2dt2Schemes_.lookup("default")[0].lineNumber() = + dict.lookup("timeScheme").lineNumber(); + } + else + { + d2dt2Schemes_.set("default", "none"); + } + + if + ( + d2dt2Schemes_.found("default") + && word(d2dt2Schemes_.lookup("default")) != "none" + ) + { + defaultD2dt2Scheme_ = d2dt2Schemes_.lookup("default"); + } + + + if (dict.found("interpolationSchemes")) + { + interpolationSchemes_ = dict.subDict("interpolationSchemes"); + } + else if (!interpolationSchemes_.found("default")) + { + interpolationSchemes_.add("default", "linear"); + } + + if + ( + interpolationSchemes_.found("default") + && word(interpolationSchemes_.lookup("default")) != "none" + ) + { + defaultInterpolationScheme_ = + interpolationSchemes_.lookup("default"); + } + + + divSchemes_ = dict.subDict("divSchemes"); + + if + ( + divSchemes_.found("default") + && word(divSchemes_.lookup("default")) != "none" + ) + { + defaultDivScheme_ = divSchemes_.lookup("default"); + } + + + gradSchemes_ = dict.subDict("gradSchemes"); + + if + ( + gradSchemes_.found("default") + && word(gradSchemes_.lookup("default")) != "none" + ) + { + defaultGradScheme_ = gradSchemes_.lookup("default"); + } + + + if (dict.found("snGradSchemes")) + { + snGradSchemes_ = dict.subDict("snGradSchemes"); + } + else if (!snGradSchemes_.found("default")) + { + snGradSchemes_.add("default", "corrected"); + } + + if + ( + snGradSchemes_.found("default") + && word(snGradSchemes_.lookup("default")) != "none" + ) + { + defaultSnGradScheme_ = snGradSchemes_.lookup("default"); + } + + + laplacianSchemes_ = dict.subDict("laplacianSchemes"); + + if + ( + laplacianSchemes_.found("default") + && word(laplacianSchemes_.lookup("default")) != "none" + ) + { + defaultLaplacianScheme_ = laplacianSchemes_.lookup("default"); + } + + + if (dict.found("fluxRequired")) + { + fluxRequired_ = dict.subDict("fluxRequired"); + + if + ( + fluxRequired_.found("default") + && word(fluxRequired_.lookup("default")) != "none" + ) + { + defaultFluxRequired_ = Switch(fluxRequired_.lookup("default")); + } + } +} + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::fvSchemes::fvSchemes(const objectRegistry& obr) +Foam::fvSchemes::fvSchemes(const objectRegistry& obr, const bool syncPar) : IOdictionary ( @@ -66,7 +258,8 @@ Foam::fvSchemes::fvSchemes(const objectRegistry& obr) obr, IOobject::MUST_READ_IF_MODIFIED, IOobject::NO_WRITE - ) + ), + syncPar ), ddtSchemes_ ( @@ -169,7 +362,10 @@ Foam::fvSchemes::fvSchemes(const objectRegistry& obr) ), defaultFluxRequired_(false) { - read(); + // persistent settings across reads is incorrect + clear(); + + read(schemesDict()); } @@ -179,197 +375,10 @@ bool Foam::fvSchemes::read() { if (regIOobject::read()) { - const dictionary& dict = schemesDict(); - // persistent settings across reads is incorrect clear(); - if (dict.found("ddtSchemes")) - { - ddtSchemes_ = dict.subDict("ddtSchemes"); - } - else if (dict.found("timeScheme")) - { - // For backward compatibility. - // The timeScheme will be deprecated with warning or removed - WarningIn("fvSchemes::read()") - << "Using deprecated 'timeScheme' instead of 'ddtSchemes'" - << nl << endl; - - word schemeName(dict.lookup("timeScheme")); - - if (schemeName == "EulerImplicit") - { - schemeName = "Euler"; - } - else if (schemeName == "BackwardDifferencing") - { - schemeName = "backward"; - } - else if (schemeName == "SteadyState") - { - schemeName = "steadyState"; - } - else - { - FatalIOErrorIn("fvSchemes::read()", dict.lookup("timeScheme")) - << "\n Only EulerImplicit, BackwardDifferencing and " - "SteadyState\n are supported by the old timeScheme " - "specification.\n Please use ddtSchemes instead." - << exit(FatalIOError); - } - - ddtSchemes_.set("default", schemeName); - - ddtSchemes_.lookup("default")[0].lineNumber() = - dict.lookup("timeScheme").lineNumber(); - } - else - { - ddtSchemes_.set("default", "none"); - } - - if - ( - ddtSchemes_.found("default") - && word(ddtSchemes_.lookup("default")) != "none" - ) - { - defaultDdtScheme_ = ddtSchemes_.lookup("default"); - } - - - if (dict.found("d2dt2Schemes")) - { - d2dt2Schemes_ = dict.subDict("d2dt2Schemes"); - } - else if (dict.found("timeScheme")) - { - // For backward compatibility. - // The timeScheme will be deprecated with warning or removed - WarningIn("fvSchemes::read()") - << "Using deprecated 'timeScheme' instead of 'd2dt2Schemes'" - << nl << endl; - - word schemeName(dict.lookup("timeScheme")); - - if (schemeName == "EulerImplicit") - { - schemeName = "Euler"; - } - else if (schemeName == "SteadyState") - { - schemeName = "steadyState"; - } - - d2dt2Schemes_.set("default", schemeName); - - d2dt2Schemes_.lookup("default")[0].lineNumber() = - dict.lookup("timeScheme").lineNumber(); - } - else - { - d2dt2Schemes_.set("default", "none"); - } - - if - ( - d2dt2Schemes_.found("default") - && word(d2dt2Schemes_.lookup("default")) != "none" - ) - { - defaultD2dt2Scheme_ = d2dt2Schemes_.lookup("default"); - } - - - if (dict.found("interpolationSchemes")) - { - interpolationSchemes_ = dict.subDict("interpolationSchemes"); - } - else if (!interpolationSchemes_.found("default")) - { - interpolationSchemes_.add("default", "linear"); - } - - if - ( - interpolationSchemes_.found("default") - && word(interpolationSchemes_.lookup("default")) != "none" - ) - { - defaultInterpolationScheme_ = - interpolationSchemes_.lookup("default"); - } - - - divSchemes_ = dict.subDict("divSchemes"); - - if - ( - divSchemes_.found("default") - && word(divSchemes_.lookup("default")) != "none" - ) - { - defaultDivScheme_ = divSchemes_.lookup("default"); - } - - - gradSchemes_ = dict.subDict("gradSchemes"); - - if - ( - gradSchemes_.found("default") - && word(gradSchemes_.lookup("default")) != "none" - ) - { - defaultGradScheme_ = gradSchemes_.lookup("default"); - } - - - if (dict.found("snGradSchemes")) - { - snGradSchemes_ = dict.subDict("snGradSchemes"); - } - else if (!snGradSchemes_.found("default")) - { - snGradSchemes_.add("default", "corrected"); - } - - if - ( - snGradSchemes_.found("default") - && word(snGradSchemes_.lookup("default")) != "none" - ) - { - defaultSnGradScheme_ = snGradSchemes_.lookup("default"); - } - - - laplacianSchemes_ = dict.subDict("laplacianSchemes"); - - if - ( - laplacianSchemes_.found("default") - && word(laplacianSchemes_.lookup("default")) != "none" - ) - { - defaultLaplacianScheme_ = laplacianSchemes_.lookup("default"); - } - - - if (dict.found("fluxRequired")) - { - fluxRequired_ = dict.subDict("fluxRequired"); - - if - ( - fluxRequired_.found("default") - && word(fluxRequired_.lookup("default")) != "none" - ) - { - defaultFluxRequired_ = Switch(fluxRequired_.lookup("default")); - } - } + read(schemesDict()); return true; } diff --git a/src/finiteVolume/finiteVolume/fvSchemes/fvSchemes.H b/src/finiteVolume/finiteVolume/fvSchemes/fvSchemes.H index 79a04b39f6..3c0f95846e 100644 --- a/src/finiteVolume/finiteVolume/fvSchemes/fvSchemes.H +++ b/src/finiteVolume/finiteVolume/fvSchemes/fvSchemes.H @@ -84,6 +84,9 @@ class fvSchemes //- Clear the dictionaries and streams before reading void clear(); + //- Read settings from the dictionary + void read(const dictionary&); + //- Disallow default bitwise copy construct fvSchemes(const fvSchemes&); @@ -100,7 +103,7 @@ public: // Constructors //- Construct for objectRegistry - fvSchemes(const objectRegistry& obr); + fvSchemes(const objectRegistry& obr, const bool syncPar = true); // Member Functions