From b17a568569522ee8bbd973656a667ec03c09da0b Mon Sep 17 00:00:00 2001
From: Henry Weller <http://cfd.direct>
Date: Fri, 9 Dec 2016 16:29:27 +0000
Subject: [PATCH] MRFZone: Do not correct boundary conditions when inactive

Patch contributed by Mattijs Janssens
Resolves bug-report http://bugs.openfoam.org/view.php?id=2380
---
 .../cfdTools/general/MRF/MRFZone.C            | 15 ++++++++++++++
 .../cfdTools/general/MRF/MRFZoneTemplates.C   | 20 +++++++++++++++++++
 2 files changed, 35 insertions(+)

diff --git a/src/finiteVolume/cfdTools/general/MRF/MRFZone.C b/src/finiteVolume/cfdTools/general/MRF/MRFZone.C
index bcda0985249..b1f64847c58 100644
--- a/src/finiteVolume/cfdTools/general/MRF/MRFZone.C
+++ b/src/finiteVolume/cfdTools/general/MRF/MRFZone.C
@@ -405,6 +405,11 @@ void Foam::MRFZone::addCoriolis
 
 void Foam::MRFZone::makeRelative(volVectorField& U) const
 {
+    if (cellZoneID_ == -1)
+    {
+        return;
+    }
+
     const volVectorField& C = mesh_.C();
 
     const vector Omega = this->Omega();
@@ -474,6 +479,11 @@ void Foam::MRFZone::makeRelative
 
 void Foam::MRFZone::makeAbsolute(volVectorField& U) const
 {
+    if (cellZoneID_ == -1)
+    {
+        return;
+    }
+
     const volVectorField& C = mesh_.C();
 
     const vector Omega = this->Omega();
@@ -530,6 +540,11 @@ void Foam::MRFZone::makeAbsolute
 
 void Foam::MRFZone::correctBoundaryVelocity(volVectorField& U) const
 {
+    if (!active_)
+    {
+        return;
+    }
+
     const vector Omega = this->Omega();
 
     // Included patches
diff --git a/src/finiteVolume/cfdTools/general/MRF/MRFZoneTemplates.C b/src/finiteVolume/cfdTools/general/MRF/MRFZoneTemplates.C
index a5feb783dee..0a591035d6d 100644
--- a/src/finiteVolume/cfdTools/general/MRF/MRFZoneTemplates.C
+++ b/src/finiteVolume/cfdTools/general/MRF/MRFZoneTemplates.C
@@ -38,6 +38,11 @@ void Foam::MRFZone::makeRelativeRhoFlux
     surfaceScalarField& phi
 ) const
 {
+    if (!active_)
+    {
+        return;
+    }
+
     const surfaceVectorField& Cf = mesh_.Cf();
     const surfaceVectorField& Sf = mesh_.Sf();
 
@@ -65,6 +70,11 @@ void Foam::MRFZone::makeRelativeRhoFlux
     FieldField<fvsPatchField, scalar>& phi
 ) const
 {
+    if (!active_)
+    {
+        return;
+    }
+
     const surfaceVectorField& Cf = mesh_.Cf();
     const surfaceVectorField& Sf = mesh_.Sf();
 
@@ -105,6 +115,11 @@ void Foam::MRFZone::makeRelativeRhoFlux
     const label patchi
 ) const
 {
+    if (!active_)
+    {
+        return;
+    }
+
     const surfaceVectorField& Cf = mesh_.Cf();
     const surfaceVectorField& Sf = mesh_.Sf();
 
@@ -138,6 +153,11 @@ void Foam::MRFZone::makeAbsoluteRhoFlux
     surfaceScalarField& phi
 ) const
 {
+    if (!active_)
+    {
+        return;
+    }
+
     const surfaceVectorField& Cf = mesh_.Cf();
     const surfaceVectorField& Sf = mesh_.Sf();
 
-- 
GitLab