From aaa54692618ce26f9c729be572c63cdf833f56a1 Mon Sep 17 00:00:00 2001
From: mattijs <mattijs>
Date: Thu, 24 Jun 2021 12:03:13 +0100
Subject: [PATCH] ENH: fan bc: more logical initialisation. See #2138.

---
 .../jumpCyclic/jumpCyclicFvPatchField.C       |  4 ++--
 .../derived/fan/fanFvPatchField.C             | 22 +++++++++++++++++--
 2 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclic/jumpCyclicFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclic/jumpCyclicFvPatchField.C
index 6348b99caf4..312829ed0d7 100644
--- a/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclic/jumpCyclicFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclic/jumpCyclicFvPatchField.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2017 OpenFOAM Foundation
-    Copyright (C) 2019 OpenCFD Ltd.
+    Copyright (C) 2019-2021 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -63,7 +63,7 @@ Foam::jumpCyclicFvPatchField<Type>::jumpCyclicFvPatchField
     const bool valueRequired
 )
 :
-    cyclicFvPatchField<Type>(p, iF, dict, false) // Pass no valueRequired
+    cyclicFvPatchField<Type>(p, iF, dict, valueRequired)
 {
     // Call this evaluation in derived classes
     //this->evaluate(Pstream::commsTypes::blocking);
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchField.C
index 58a98012952..0054c3def60 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchField.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2015 OpenFOAM Foundation
-    Copyright (C) 2017-2020 OpenCFD Ltd.
+    Copyright (C) 2017-2021 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -67,7 +67,7 @@ Foam::fanFvPatchField<Type>::fanFvPatchField
     const dictionary& dict
 )
 :
-    uniformJumpFvPatchField<Type>(p, iF, dict),
+    uniformJumpFvPatchField<Type>(p, iF, dict, false), // Pass no valueRequired
     phiName_(dict.getOrDefault<word>("phi", "phi")),
     rhoName_(dict.getOrDefault<word>("rho", "rho")),
     uniformJump_(dict.getOrDefault("uniformJump", false)),
@@ -75,11 +75,29 @@ Foam::fanFvPatchField<Type>::fanFvPatchField
     rpm_(0),
     dm_(0)
 {
+    // Note that we've not read jumpTable_ etc
     if (nonDimensional_)
     {
         dict.readEntry("rpm", rpm_);
         dict.readEntry("dm", dm_);
     }
+
+    if (this->cyclicPatch().owner())
+    {
+        this->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);
+    }
 }
 
 
-- 
GitLab