From 6b219f1ddacc33a031d2aff61ad3dc9564809da9 Mon Sep 17 00:00:00 2001
From: Andrew Heather <>
Date: Tue, 22 Jun 2021 20:46:35 +0100
Subject: [PATCH] BUG: fan/jump BCs - updated construction

---
 .../constraint/cyclic/cyclicFvPatchField.C    | 10 +++--
 .../constraint/cyclic/cyclicFvPatchField.H    |  3 +-
 .../jumpCyclic/jumpCyclicFvPatchField.C       |  5 ++-
 .../jumpCyclic/jumpCyclicFvPatchField.H       |  3 +-
 .../derived/fan/fanFvPatchField.H             |  8 ----
 .../derived/fan/fanFvPatchFields.C            | 43 -------------------
 .../derived/fixedJump/fixedJumpFvPatchField.C | 31 +++++++------
 .../derived/fixedJump/fixedJumpFvPatchField.H |  3 +-
 .../uniformJump/uniformJumpFvPatchField.C     | 36 +++++++++-------
 .../uniformJump/uniformJumpFvPatchField.H     |  3 +-
 10 files changed, 57 insertions(+), 88 deletions(-)

diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/cyclic/cyclicFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/constraint/cyclic/cyclicFvPatchField.C
index c92380c989c..ca0e6216e89 100644
--- a/src/finiteVolume/fields/fvPatchFields/constraint/cyclic/cyclicFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/constraint/cyclic/cyclicFvPatchField.C
@@ -48,10 +48,11 @@ Foam::cyclicFvPatchField<Type>::cyclicFvPatchField
 (
     const fvPatch& p,
     const DimensionedField<Type, volMesh>& iF,
-    const dictionary& dict
+    const dictionary& dict,
+    const bool valueRequired
 )
 :
-    coupledFvPatchField<Type>(p, iF, dict, false),
+    coupledFvPatchField<Type>(p, iF, dict, false), // Pass no valueRequired
     cyclicPatch_(refCast<const cyclicFvPatch>(p, dict))
 {
     if (!isA<cyclicFvPatch>(p))
@@ -65,7 +66,10 @@ Foam::cyclicFvPatchField<Type>::cyclicFvPatchField
             << exit(FatalIOError);
     }
 
-    this->evaluate(Pstream::commsTypes::blocking);
+    if (valueRequired)
+    {
+        this->evaluate(Pstream::commsTypes::blocking);
+    }
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/cyclic/cyclicFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/constraint/cyclic/cyclicFvPatchField.H
index 86db5764412..1678a23251b 100644
--- a/src/finiteVolume/fields/fvPatchFields/constraint/cyclic/cyclicFvPatchField.H
+++ b/src/finiteVolume/fields/fvPatchFields/constraint/cyclic/cyclicFvPatchField.H
@@ -111,7 +111,8 @@ public:
         (
             const fvPatch&,
             const DimensionedField<Type, volMesh>&,
-            const dictionary&
+            const dictionary&,
+            const bool valueRequired = true
         );
 
         //- Construct by mapping given cyclicFvPatchField onto a new patch
diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclic/jumpCyclicFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclic/jumpCyclicFvPatchField.C
index b078d1dc10d..6348b99caf4 100644
--- a/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclic/jumpCyclicFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclic/jumpCyclicFvPatchField.C
@@ -59,10 +59,11 @@ Foam::jumpCyclicFvPatchField<Type>::jumpCyclicFvPatchField
 (
     const fvPatch& p,
     const DimensionedField<Type, volMesh>& iF,
-    const dictionary& dict
+    const dictionary& dict,
+    const bool valueRequired
 )
 :
-    cyclicFvPatchField<Type>(p, iF, dict)
+    cyclicFvPatchField<Type>(p, iF, dict, false) // Pass no valueRequired
 {
     // Call this evaluation in derived classes
     //this->evaluate(Pstream::commsTypes::blocking);
diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclic/jumpCyclicFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclic/jumpCyclicFvPatchField.H
index 431d61aa73e..0b0425b1cc6 100644
--- a/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclic/jumpCyclicFvPatchField.H
+++ b/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclic/jumpCyclicFvPatchField.H
@@ -82,7 +82,8 @@ public:
         (
             const fvPatch&,
             const DimensionedField<Type, volMesh>&,
-            const dictionary&
+            const dictionary&,
+            const bool valueRequired = true
         );
 
         //- Construct by mapping given jumpCyclicFvPatchField onto a new patch
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchField.H
index 5abbc3545fe..261f572b18f 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchField.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchField.H
@@ -240,14 +240,6 @@ public:
 template<>
 void fanFvPatchField<scalar>::calcFanJump();
 
-template<>
-fanFvPatchField<scalar>::fanFvPatchField
-(
-    const fvPatch&,
-    const DimensionedField<scalar, volMesh>&,
-    const dictionary&
-);
-
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchFields.C b/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchFields.C
index 53ec3fac7f6..219864267ab 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchFields.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchFields.C
@@ -86,49 +86,6 @@ void Foam::fanFvPatchField<Foam::scalar>::calcFanJump()
 }
 
 
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
-
-template<>
-Foam::fanFvPatchField<Foam::scalar>::fanFvPatchField
-(
-    const fvPatch& p,
-    const DimensionedField<scalar, volMesh>& iF,
-    const dictionary& dict
-)
-:
-    uniformJumpFvPatchField<scalar>(p, iF, dict),
-    phiName_(dict.getOrDefault<word>("phi", "phi")),
-    rhoName_(dict.getOrDefault<word>("rho", "rho")),
-    uniformJump_(dict.getOrDefault("uniformJump", false)),
-    nonDimensional_(dict.getOrDefault("nonDimensional", false)),
-    rpm_(0),
-    dm_(0)
-{
-    if (nonDimensional_)
-    {
-        dict.readEntry("rpm", rpm_);
-        dict.readEntry("dm", dm_);
-    }
-
-    if (this->cyclicPatch().owner())
-    {
-        this->jumpTable_ = Function1<scalar>::New("jumpTable", dict);
-    }
-
-    if (dict.found("value"))
-    {
-        fvPatchScalarField::operator=
-        (
-            scalarField("value", dict, p.size())
-        );
-    }
-    else
-    {
-        this->evaluate(Pstream::commsTypes::blocking);
-    }
-}
-
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedJump/fixedJumpFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/fixedJump/fixedJumpFvPatchField.C
index d96fe621213..f25df2e4b06 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/fixedJump/fixedJumpFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedJump/fixedJumpFvPatchField.C
@@ -69,10 +69,11 @@ Foam::fixedJumpFvPatchField<Type>::fixedJumpFvPatchField
 (
     const fvPatch& p,
     const DimensionedField<Type, volMesh>& iF,
-    const dictionary& dict
+    const dictionary& dict,
+    const bool valueRequired
 )
 :
-    jumpCyclicFvPatchField<Type>(p, iF, dict),
+    jumpCyclicFvPatchField<Type>(p, iF, dict, false), // Pass no valueRequired
     jump_(p.size(), Zero),
     jump0_(p.size(), Zero),
     minJump_(dict.getOrDefault<Type>("minJump", pTraits<Type>::min)),
@@ -81,7 +82,10 @@ Foam::fixedJumpFvPatchField<Type>::fixedJumpFvPatchField
 {
     if (this->cyclicPatch().owner())
     {
-        jump_ = Field<Type>("jump", dict, p.size());
+        if (valueRequired)
+        {
+            jump_ = Field<Type>("jump", dict, p.size());
+        }
 
         if (dict.found("jump0"))
         {
@@ -89,16 +93,19 @@ Foam::fixedJumpFvPatchField<Type>::fixedJumpFvPatchField
         }
     }
 
-    if (dict.found("value"))
-    {
-        fvPatchField<Type>::operator=
-        (
-            Field<Type>("value", dict, p.size())
-        );
-    }
-    else
+    if (valueRequired)
     {
-        this->evaluate(Pstream::commsTypes::blocking);
+        if (dict.found("value"))
+        {
+            fvPatchField<Type>::operator=
+            (
+                Field<Type>("value", dict, p.size())
+            );
+        }
+        else
+        {
+            this->evaluate(Pstream::commsTypes::blocking);
+        }
     }
 }
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedJump/fixedJumpFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/fixedJump/fixedJumpFvPatchField.H
index 8c5470782f5..ee758e59283 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/fixedJump/fixedJumpFvPatchField.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedJump/fixedJumpFvPatchField.H
@@ -127,7 +127,8 @@ public:
         (
             const fvPatch&,
             const DimensionedField<Type, volMesh>&,
-            const dictionary&
+            const dictionary&,
+            const bool valueRequired = true
         );
 
         //- Construct by mapping given fixedJumpFvPatchField onto a
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformJump/uniformJumpFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/uniformJump/uniformJumpFvPatchField.C
index 75758640834..06ff6d907ea 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/uniformJump/uniformJumpFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformJump/uniformJumpFvPatchField.C
@@ -60,27 +60,31 @@ Foam::uniformJumpFvPatchField<Type>::uniformJumpFvPatchField
 (
     const fvPatch& p,
     const DimensionedField<Type, volMesh>& iF,
-    const dictionary& dict
+    const dictionary& dict,
+    const bool valueRequired
 )
 :
-    fixedJumpFvPatchField<Type>(p, iF, dict),
+    fixedJumpFvPatchField<Type>(p, iF, dict, false), // Pass no valueRequired
     jumpTable_()
 {
-    if (this->cyclicPatch().owner())
-    {
-        jumpTable_ = Function1<Type>::New("jumpTable", dict);
-    }
-
-    if (dict.found("value"))
-    {
-        fvPatchField<Type>::operator=
-        (
-            Field<Type>("value", dict, p.size())
-        );
-    }
-    else
+    if (valueRequired)
     {
-        this->evaluate(Pstream::commsTypes::blocking);
+        if (this->cyclicPatch().owner())
+        {
+            jumpTable_ = Function1<Type>::New("jumpTable", dict);
+        }
+
+        if (dict.found("value"))
+        {
+            fvPatchField<Type>::operator=
+            (
+                Field<Type>("value", dict, p.size())
+            );
+        }
+        else
+        {
+            this->evaluate(Pstream::commsTypes::blocking);
+        }
     }
 }
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformJump/uniformJumpFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/uniformJump/uniformJumpFvPatchField.H
index a68add222c9..f54cc9139c5 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/uniformJump/uniformJumpFvPatchField.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformJump/uniformJumpFvPatchField.H
@@ -117,7 +117,8 @@ public:
         (
             const fvPatch&,
             const DimensionedField<Type, volMesh>&,
-            const dictionary&
+            const dictionary&,
+            const bool valueRequired = true
         );
 
         //- Construct by mapping given uniformJumpFvPatchField onto a
-- 
GitLab