From 8325e8b91ff3c63ba818b70d1fcfe0be273f8967 Mon Sep 17 00:00:00 2001
From: Henry Weller <http://cfd.direct>
Date: Fri, 24 Jul 2015 11:30:08 +0100
Subject: [PATCH] fvSchemes: Handle merging of fluxRequired settings during
 re-reading of the fvSchemes dictionary

---
 .../finiteVolume/fvSchemes/fvSchemes.C        | 70 +------------------
 1 file changed, 3 insertions(+), 67 deletions(-)

diff --git a/src/finiteVolume/finiteVolume/fvSchemes/fvSchemes.C b/src/finiteVolume/finiteVolume/fvSchemes/fvSchemes.C
index 57695c0465..a3351652f9 100644
--- a/src/finiteVolume/finiteVolume/fvSchemes/fvSchemes.C
+++ b/src/finiteVolume/finiteVolume/fvSchemes/fvSchemes.C
@@ -50,8 +50,7 @@ void Foam::fvSchemes::clear()
     defaultSnGradScheme_.clear();
     laplacianSchemes_.clear();
     defaultLaplacianScheme_.clear();
-    fluxRequired_.clear();
-    defaultFluxRequired_ = false;
+    // Do not clear fluxRequired settings
 }
 
 
@@ -61,42 +60,6 @@ void Foam::fvSchemes::read(const dictionary& dict)
     {
         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");
@@ -121,30 +84,6 @@ void Foam::fvSchemes::read(const dictionary& dict)
     {
         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");
@@ -237,7 +176,7 @@ void Foam::fvSchemes::read(const dictionary& dict)
 
     if (dict.found("fluxRequired"))
     {
-        fluxRequired_ = dict.subDict("fluxRequired");
+        fluxRequired_.merge(dict.subDict("fluxRequired"));
 
         if
         (
@@ -373,9 +312,6 @@ Foam::fvSchemes::fvSchemes(const objectRegistry& obr)
     defaultFluxRequired_(false),
     steady_(false)
 {
-    // persistent settings across reads is incorrect
-    clear();
-
     if
     (
         readOpt() == IOobject::MUST_READ
@@ -394,7 +330,7 @@ bool Foam::fvSchemes::read()
 {
     if (regIOobject::read())
     {
-        // persistent settings across reads is incorrect
+        // Clear current settings except fluxRequired
         clear();
 
         read(schemesDict());
-- 
GitLab