From eafb030a31963256e7f10e49ccd254266df2137c Mon Sep 17 00:00:00 2001
From: Kutscher <kutscher@irmb.tu-bs.de>
Date: Mon, 16 Oct 2023 15:55:48 +0200
Subject: [PATCH] extracts BCStrategy types in additional structure

---
 ...ltiphaseNonReflectingOutflowBCStrategy.cpp |  3 +-
 .../MultiphasePressureBCStrategy.cpp          |  4 +-
 .../MultiphaseSlipBCStrategy.cpp              |  3 +-
 .../MultiphaseVelocityBCStrategy.cpp          |  3 +-
 .../RheologyBinghamModelVelocityBCStrategy.h  |  3 +-
 ...logyHerschelBulkleyModelNoSlipBCStrategy.h |  3 +-
 .../ThixotropyDensityBCStrategy.cpp           |  3 +-
 .../ThixotropyNoSlipBCStrategy.cpp            |  3 +-
 ...ixotropyNonReflectingOutflowBCStrategy.cpp |  3 +-
 .../ThixotropyVelocityBCStrategy.cpp          |  3 +-
 ...hixotropyVelocityWithDensityBCStrategy.cpp |  3 +-
 ...RheologyBoundaryConditionsBlockVisitor.cpp | 11 ++--
 .../BoundaryConditions/BCStrategy.h           | 56 ++++++++--------
 .../BoundaryConditions/BCStrategyType.h       | 66 +++++++++++++++++++
 .../EqDensityBCStrategy.cpp                   |  3 +-
 .../HighViscosityNoSlipBCStrategy.cpp         |  3 +-
 .../BoundaryConditions/NoSlipBCStrategy.cpp   |  3 +-
 .../NonEqDensityBCStrategy.cpp                |  3 +-
 .../NonReflectingInflowBCStrategy.cpp         |  3 +-
 .../NonReflectingOutflowBCStrategy.cpp        |  3 +-
 ...lectingOutflowWithRelaxationBCStrategy.cpp |  3 +-
 .../SimpleSlipBCStrategy.cpp                  |  3 +-
 .../SimpleVelocityBCStrategy.cpp              |  3 +-
 .../BoundaryConditions/SlipBCStrategy.cpp     |  3 +-
 .../BoundaryConditions/ThinWallBCSet.cpp      |  3 +-
 .../ThinWallNoSlipBCStrategy.cpp              |  3 +-
 .../BoundaryConditions/VelocityBCStrategy.cpp |  3 +-
 .../VelocityWithDensityBCStrategy.cpp         |  3 +-
 28 files changed, 151 insertions(+), 58 deletions(-)
 create mode 100644 src/cpu/VirtualFluidsCore/BoundaryConditions/BCStrategyType.h

diff --git a/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseNonReflectingOutflowBCStrategy.cpp b/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseNonReflectingOutflowBCStrategy.cpp
index aae7dec82..34fae58a7 100644
--- a/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseNonReflectingOutflowBCStrategy.cpp
+++ b/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseNonReflectingOutflowBCStrategy.cpp
@@ -35,10 +35,11 @@
 #include "BoundaryConditions.h"
 #include "D3Q27System.h"
 #include "DistributionArray3D.h"
+#include "BCStrategyType.h"
 
 MultiphaseNonReflectingOutflowBCStrategy::MultiphaseNonReflectingOutflowBCStrategy()
 {
-    BCStrategy::type = BCStrategy::NonReflectingOutflowBCStrategy;
+    BCStrategy::type = BCStrategyType::NonReflectingOutflowBCStrategy;
     BCStrategy::preCollision = true;
 }
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphasePressureBCStrategy.cpp b/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphasePressureBCStrategy.cpp
index 2c0344b23..0ea532c2b 100644
--- a/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphasePressureBCStrategy.cpp
+++ b/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphasePressureBCStrategy.cpp
@@ -34,10 +34,12 @@
 #include "MultiphasePressureBCStrategy.h"
 #include "DistributionArray3D.h"
 #include "BoundaryConditions.h"
+#include "BCStrategyType.h"
+
 
 MultiphasePressureBCStrategy::MultiphasePressureBCStrategy()
 {
-   BCStrategy::type = BCStrategy::MultiphasePressureBCStrategy;
+   BCStrategy::type = BCStrategyType::MultiphasePressureBCStrategy;
    BCStrategy::preCollision = false;
 }
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseSlipBCStrategy.cpp b/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseSlipBCStrategy.cpp
index b394d2d5d..92bc57c81 100644
--- a/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseSlipBCStrategy.cpp
+++ b/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseSlipBCStrategy.cpp
@@ -34,10 +34,11 @@
 #include "MultiphaseSlipBCStrategy.h"
 #include "DistributionArray3D.h"
 #include "BoundaryConditions.h"
+#include "BCStrategyType.h"
 
 MultiphaseSlipBCStrategy::MultiphaseSlipBCStrategy()
 {
-   BCStrategy::type = BCStrategy::SlipBCStrategy;
+   BCStrategy::type = BCStrategyType::SlipBCStrategy;
    BCStrategy::preCollision = false;
 }
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseVelocityBCStrategy.cpp b/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseVelocityBCStrategy.cpp
index a0b334d8e..dd364e85e 100644
--- a/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseVelocityBCStrategy.cpp
+++ b/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseVelocityBCStrategy.cpp
@@ -34,10 +34,11 @@
 #include "MultiphaseVelocityBCStrategy.h"
 #include "DistributionArray3D.h"
 #include "BoundaryConditions.h"
+#include "BCStrategyType.h"
 
 MultiphaseVelocityBCStrategy::MultiphaseVelocityBCStrategy()
 {
-   BCStrategy::type = BCStrategy::MultiphaseVelocityBCStrategy;
+   BCStrategy::type = BCStrategyType::MultiphaseVelocityBCStrategy;
    BCStrategy::preCollision = false;
 }
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/NonNewtonianFluids/BoundaryConditions/RheologyBinghamModelVelocityBCStrategy.h b/src/cpu/NonNewtonianFluids/BoundaryConditions/RheologyBinghamModelVelocityBCStrategy.h
index bbff469c0..9039d00ad 100644
--- a/src/cpu/NonNewtonianFluids/BoundaryConditions/RheologyBinghamModelVelocityBCStrategy.h
+++ b/src/cpu/NonNewtonianFluids/BoundaryConditions/RheologyBinghamModelVelocityBCStrategy.h
@@ -36,13 +36,14 @@
 
 #include "RheologyVelocityBCStrategy.h"
 #include "cpu/NonNewtonianFluids/LBM/Rheology.h"
+#include "BCStrategyType.h"
 
 class RheologyBinghamModelVelocityBCStrategy : public RheologyVelocityBCStrategy
 {
 public:
    RheologyBinghamModelVelocityBCStrategy()
    {
-      BCStrategy::type = BCStrategy::RheologyBinghamModelVelocityBCStrategy;
+      BCStrategy::type = BCStrategyType::RheologyBinghamModelVelocityBCStrategy;
       BCStrategy::preCollision = true;
    }
    ~RheologyBinghamModelVelocityBCStrategy() {}
diff --git a/src/cpu/NonNewtonianFluids/BoundaryConditions/RheologyHerschelBulkleyModelNoSlipBCStrategy.h b/src/cpu/NonNewtonianFluids/BoundaryConditions/RheologyHerschelBulkleyModelNoSlipBCStrategy.h
index c29c6e9ce..d5aa651d1 100644
--- a/src/cpu/NonNewtonianFluids/BoundaryConditions/RheologyHerschelBulkleyModelNoSlipBCStrategy.h
+++ b/src/cpu/NonNewtonianFluids/BoundaryConditions/RheologyHerschelBulkleyModelNoSlipBCStrategy.h
@@ -35,13 +35,14 @@
 
 #include "RheologyNoSlipBCStrategy.h"
 #include "cpu/NonNewtonianFluids/LBM/Rheology.h"
+#include "BCStrategyType.h"
 
 class RheologyHerschelBulkleyModelNoSlipBCStrategy : public RheologyNoSlipBCStrategy
 {
 public:
    RheologyHerschelBulkleyModelNoSlipBCStrategy() 
    {
-      BCStrategy::type = BCStrategy::RheologyHerschelBulkleyModelNoSlipBCStrategy;
+      BCStrategy::type = BCStrategyType::RheologyHerschelBulkleyModelNoSlipBCStrategy;
       BCStrategy::preCollision = true;
    }
    ~RheologyHerschelBulkleyModelNoSlipBCStrategy() {}
diff --git a/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyDensityBCStrategy.cpp b/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyDensityBCStrategy.cpp
index 70981c5d0..f5db712e0 100644
--- a/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyDensityBCStrategy.cpp
+++ b/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyDensityBCStrategy.cpp
@@ -34,10 +34,11 @@
 #include "ThixotropyDensityBCStrategy.h"
 #include "DistributionArray3D.h"
 #include "BoundaryConditions.h"
+#include "BCStrategyType.h"
 
 ThixotropyDensityBCStrategy::ThixotropyDensityBCStrategy()
 {
-	BCStrategy::type = BCStrategy::ThixotropyDensityBCStrategy;
+	BCStrategy::type = BCStrategyType::ThixotropyDensityBCStrategy;
 	BCStrategy::preCollision = false;
 	BCStrategy::thixotropy = true;
 	lambdaBC = 0.0;
diff --git a/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyNoSlipBCStrategy.cpp b/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyNoSlipBCStrategy.cpp
index da1f2deaa..57797d8b8 100644
--- a/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyNoSlipBCStrategy.cpp
+++ b/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyNoSlipBCStrategy.cpp
@@ -33,10 +33,11 @@
 #include "ThixotropyNoSlipBCStrategy.h"
 #include "DistributionArray3D.h"
 #include "BoundaryConditions.h"
+#include "BCStrategyType.h"
 
 ThixotropyNoSlipBCStrategy::ThixotropyNoSlipBCStrategy()
 {
-	BCStrategy::type = BCStrategy::ThixotropyNoSlipBCStrategy;
+	BCStrategy::type = BCStrategyType::ThixotropyNoSlipBCStrategy;
 	BCStrategy::preCollision = false;
 	BCStrategy::thixotropy = true;
 	
diff --git a/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyNonReflectingOutflowBCStrategy.cpp b/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyNonReflectingOutflowBCStrategy.cpp
index 3ee059eec..74f483b41 100644
--- a/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyNonReflectingOutflowBCStrategy.cpp
+++ b/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyNonReflectingOutflowBCStrategy.cpp
@@ -33,10 +33,11 @@
 #include "ThixotropyNonReflectingOutflowBCStrategy.h"
 #include "DistributionArray3D.h"
 #include "BoundaryConditions.h"
+#include "BCStrategyType.h"
 
 ThixotropyNonReflectingOutflowBCStrategy::ThixotropyNonReflectingOutflowBCStrategy()
 {
-	BCStrategy::type = BCStrategy::ThixotropyNonReflectingOutflowBCStrategy;
+	BCStrategy::type = BCStrategyType::ThixotropyNonReflectingOutflowBCStrategy;
 	BCStrategy::preCollision = true;
 	BCStrategy::thixotropy = true;
 }
diff --git a/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyVelocityBCStrategy.cpp b/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyVelocityBCStrategy.cpp
index 2b2dd1714..ee1e75cb9 100644
--- a/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyVelocityBCStrategy.cpp
+++ b/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyVelocityBCStrategy.cpp
@@ -33,10 +33,11 @@
 #include "ThixotropyVelocityBCStrategy.h"
 #include "DistributionArray3D.h"
 #include "BoundaryConditions.h"
+#include "BCStrategyType.h"
 
 ThixotropyVelocityBCStrategy::ThixotropyVelocityBCStrategy()
 {
-	BCStrategy::type = BCStrategy::ThixotropyVelocityBCStrategy;
+	BCStrategy::type = BCStrategyType::ThixotropyVelocityBCStrategy;
 	BCStrategy::preCollision = false;
 	BCStrategy::thixotropy = true;
 	lambdaBC = vf::basics::constant::c0o1;
diff --git a/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyVelocityWithDensityBCStrategy.cpp b/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyVelocityWithDensityBCStrategy.cpp
index 5d91a1e7a..604260918 100644
--- a/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyVelocityWithDensityBCStrategy.cpp
+++ b/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyVelocityWithDensityBCStrategy.cpp
@@ -33,10 +33,11 @@
 #include "ThixotropyVelocityWithDensityBCStrategy.h"
 #include "DistributionArray3D.h"
 #include "BCArray3D.h"
+#include "BCStrategyType.h"
 
 ThixotropyVelocityWithDensityBCStrategy::ThixotropyVelocityWithDensityBCStrategy()
 {
-   BCStrategy::type = BCStrategy::ThixotropyVelocityWithDensityBCStrategy;
+   BCStrategy::type = BCStrategyType::ThixotropyVelocityWithDensityBCStrategy;
    BCStrategy::preCollision = false;
 }
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/NonNewtonianFluids/Visitors/RheologyBoundaryConditionsBlockVisitor.cpp b/src/cpu/NonNewtonianFluids/Visitors/RheologyBoundaryConditionsBlockVisitor.cpp
index 3bcd257e2..2bb8da69a 100644
--- a/src/cpu/NonNewtonianFluids/Visitors/RheologyBoundaryConditionsBlockVisitor.cpp
+++ b/src/cpu/NonNewtonianFluids/Visitors/RheologyBoundaryConditionsBlockVisitor.cpp
@@ -44,6 +44,7 @@
 #include "Block3D.h"
 #include "BCArray3D.h"
 #include "ILBMKernel.h"
+#include "BCStrategyType.h"
 
 #include "NonNewtonianFluids/BoundaryConditions/ThixotropyDensityBCStrategy.h"
 #include "NonNewtonianFluids/BoundaryConditions/ThixotropyVelocityBCStrategy.h"
@@ -105,19 +106,19 @@ void BoundaryConditionsBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> bloc
                                 bca->setBcPointer(bcPtr);
                                 bca->addDistributions(distributions);
 
-                                if (alg == BCStrategy::ThixotropyVelocityBCStrategy)
+                                if (alg == BCStrategyType::ThixotropyVelocityBCStrategy)
                                     std::static_pointer_cast<ThixotropyVelocityBCStrategy>(bca)->addDistributionsH(
                                         kernel->getDataSet()->getHdistributions());
-                                if (alg == BCStrategy::ThixotropyDensityBCStrategy)
+                                if (alg == BCStrategyType::ThixotropyDensityBCStrategy)
                                     std::static_pointer_cast<ThixotropyDensityBCStrategy>(bca)->addDistributionsH(
                                         kernel->getDataSet()->getHdistributions());
-                                if (alg == BCStrategy::ThixotropyNoSlipBCStrategy)
+                                if (alg == BCStrategyType::ThixotropyNoSlipBCStrategy)
                                     std::static_pointer_cast<ThixotropyNoSlipBCStrategy>(bca)->addDistributionsH(
                                         kernel->getDataSet()->getHdistributions());
-                                if (alg == BCStrategy::ThixotropyNonReflectingOutflowBCStrategy)
+                                if (alg == BCStrategyType::ThixotropyNonReflectingOutflowBCStrategy)
                                     std::static_pointer_cast<ThixotropyNonReflectingOutflowBCStrategy>(bca)
                                         ->addDistributionsH(kernel->getDataSet()->getHdistributions());
-                                if (alg == BCStrategy::ThixotropyVelocityWithDensityBCStrategy)
+                                if (alg == BCStrategyType::ThixotropyVelocityWithDensityBCStrategy)
                                     std::static_pointer_cast<ThixotropyVelocityWithDensityBCStrategy>(bca)
                                         ->addDistributionsH(kernel->getDataSet()->getHdistributions());
 
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/BCStrategy.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/BCStrategy.h
index fafbf9046..348b3b3d3 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/BCStrategy.h
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/BCStrategy.h
@@ -31,8 +31,8 @@
 //! \author Konstantin Kutscher
 //=======================================================================================
 
-#ifndef BOUNDARYCONDITIONS_H
-#define BOUNDARYCONDITIONS_H
+#ifndef BCStrategy_H
+#define BCStrategy_H
 
 #include <PointerDefinitions.h>
 
@@ -47,32 +47,32 @@ class Block3D;
 //! \details  BCStrategy provides interface for implementation of diferent boundary conditions
 class BCStrategy
 {
-public:
-    static const char VelocityBCStrategy                           = 0;
-    static const char EqDensityBCStrategy                          = 1;
-    static const char NonEqDensityBCStrategy                       = 2;
-    static const char NoSlipBCStrategy                             = 3;
-    static const char SlipBCStrategy                               = 4;
-    static const char HighViscosityNoSlipBCStrategy                = 5;
-    static const char ThinWallNoSlipBCStrategy                     = 6;
-    static const char VelocityWithDensityBCStrategy                = 7;
-    static const char NonReflectingOutflowBCStrategy               = 8;
-    static const char ThixotropyVelocityBCStrategy                 = 9;
-    static const char ThixotropyDensityBCStrategy                  = 10;
-    static const char ThixotropyNoSlipBCStrategy                   = 11;
-    static const char ThixotropyNonReflectingOutflowBCStrategy     = 12;
-    static const char ThixotropyVelocityWithDensityBCStrategy      = 13;
-    static const char RheologyBinghamModelNoSlipBCStrategy         = 14;
-    static const char RheologyHerschelBulkleyModelNoSlipBCStrategy = 15;
-    static const char SimpleVelocityBCStrategy                     = 16;
-    static const char SimpleSlipBCStrategy                         = 17;
-    static const char RheologyPowellEyringModelNoSlipBCStrategy    = 18;
-    static const char RheologyBinghamModelVelocityBCStrategy       = 19;
-    static const char MultiphaseNoSlipBCStrategy                   = 20;
-    static const char MultiphaseVelocityBCStrategy                 = 21;
-    static const char NonReflectingInflowBCStrategy                = 22;
-    static const char NonReflectingOutflowWithRelaxationBCStrategy = 23;
-    static const char MultiphasePressureBCStrategy                 = 24;
+//public:
+//    static const char VelocityBCStrategy                           = 0;
+//    static const char EqDensityBCStrategy                          = 1;
+//    static const char NonEqDensityBCStrategy                       = 2;
+//    static const char NoSlipBCStrategy                             = 3;
+//    static const char SlipBCStrategy                               = 4;
+//    static const char HighViscosityNoSlipBCStrategy                = 5;
+//    static const char ThinWallNoSlipBCStrategy                     = 6;
+//    static const char VelocityWithDensityBCStrategy                = 7;
+//    static const char NonReflectingOutflowBCStrategy               = 8;
+//    static const char ThixotropyVelocityBCStrategy                 = 9;
+//    static const char ThixotropyDensityBCStrategy                  = 10;
+//    static const char ThixotropyNoSlipBCStrategy                   = 11;
+//    static const char ThixotropyNonReflectingOutflowBCStrategy     = 12;
+//    static const char ThixotropyVelocityWithDensityBCStrategy      = 13;
+//    static const char RheologyBinghamModelNoSlipBCStrategy         = 14;
+//    static const char RheologyHerschelBulkleyModelNoSlipBCStrategy = 15;
+//    static const char SimpleVelocityBCStrategy                     = 16;
+//    static const char SimpleSlipBCStrategy                         = 17;
+//    static const char RheologyPowellEyringModelNoSlipBCStrategy    = 18;
+//    static const char RheologyBinghamModelVelocityBCStrategy       = 19;
+//    static const char MultiphaseNoSlipBCStrategy                   = 20;
+//    static const char MultiphaseVelocityBCStrategy                 = 21;
+//    static const char NonReflectingInflowBCStrategy                = 22;
+//    static const char NonReflectingOutflowWithRelaxationBCStrategy = 23;
+//    static const char MultiphasePressureBCStrategy                 = 24;
 
 public:
     BCStrategy() = default;
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/BCStrategyType.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/BCStrategyType.h
new file mode 100644
index 000000000..fccdef64f
--- /dev/null
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/BCStrategyType.h
@@ -0,0 +1,66 @@
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
+//      \    \  |    |   ________________________________________________________________
+//       \    \ |    |  |  ______________________________________________________________|
+//        \    \|    |  |  |         __          __     __     __     ______      _______
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
+//
+//  This file is part of VirtualFluids. VirtualFluids is free software: you can
+//  redistribute it and/or modify it under the terms of the GNU General Public
+//  License as published by the Free Software Foundation, either version 3 of
+//  the License, or (at your option) any later version.
+//
+//  VirtualFluids is distributed in the hope that it will be useful, but WITHOUT
+//  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+//  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+//  for more details.
+//
+//  You should have received a copy of the GNU General Public License along
+//  with VirtualFluids (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>.
+//
+//! \file BCStrategy.h
+//! \ingroup BoundarConditions
+//! \author Konstantin Kutscher
+//=======================================================================================
+
+#ifndef BCStrategyType_H
+#define BCStrategyType_H
+
+struct BCStrategyType
+{
+    static const char VelocityBCStrategy = 0;
+    static const char EqDensityBCStrategy = 1;
+    static const char NonEqDensityBCStrategy = 2;
+    static const char NoSlipBCStrategy = 3;
+    static const char SlipBCStrategy = 4;
+    static const char HighViscosityNoSlipBCStrategy = 5;
+    static const char ThinWallNoSlipBCStrategy = 6;
+    static const char VelocityWithDensityBCStrategy = 7;
+    static const char NonReflectingOutflowBCStrategy = 8;
+    static const char ThixotropyVelocityBCStrategy = 9;
+    static const char ThixotropyDensityBCStrategy = 10;
+    static const char ThixotropyNoSlipBCStrategy = 11;
+    static const char ThixotropyNonReflectingOutflowBCStrategy = 12;
+    static const char ThixotropyVelocityWithDensityBCStrategy = 13;
+    static const char RheologyBinghamModelNoSlipBCStrategy = 14;
+    static const char RheologyHerschelBulkleyModelNoSlipBCStrategy = 15;
+    static const char SimpleVelocityBCStrategy = 16;
+    static const char SimpleSlipBCStrategy = 17;
+    static const char RheologyPowellEyringModelNoSlipBCStrategy = 18;
+    static const char RheologyBinghamModelVelocityBCStrategy = 19;
+    static const char MultiphaseNoSlipBCStrategy = 20;
+    static const char MultiphaseVelocityBCStrategy = 21;
+    static const char NonReflectingInflowBCStrategy = 22;
+    static const char NonReflectingOutflowWithRelaxationBCStrategy = 23;
+    static const char MultiphasePressureBCStrategy = 24;
+};
+
+#endif
\ No newline at end of file
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/EqDensityBCStrategy.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/EqDensityBCStrategy.cpp
index 77a4601ea..720ad7cc3 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/EqDensityBCStrategy.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/EqDensityBCStrategy.cpp
@@ -33,10 +33,11 @@
 #include "EqDensityBCStrategy.h"
 #include "BoundaryConditions.h"
 #include "DistributionArray3D.h"
+#include "BCStrategyType.h"
 
 EqDensityBCStrategy::EqDensityBCStrategy()
 {
-    BCStrategy::type         = BCStrategy::EqDensityBCStrategy;
+    BCStrategy::type         = BCStrategyType::EqDensityBCStrategy;
     BCStrategy::preCollision = false;
 }
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/HighViscosityNoSlipBCStrategy.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/HighViscosityNoSlipBCStrategy.cpp
index cb8deaa00..1556be3ee 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/HighViscosityNoSlipBCStrategy.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/HighViscosityNoSlipBCStrategy.cpp
@@ -33,10 +33,11 @@
 #include "HighViscosityNoSlipBCStrategy.h"
 #include "BoundaryConditions.h"
 #include "DistributionArray3D.h"
+#include "BCStrategyType.h"
 
 HighViscosityNoSlipBCStrategy::HighViscosityNoSlipBCStrategy()
 {
-    BCStrategy::type         = BCStrategy::HighViscosityNoSlipBCStrategy;
+    BCStrategy::type         = BCStrategyType::HighViscosityNoSlipBCStrategy;
     BCStrategy::preCollision = true;
 }
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NoSlipBCStrategy.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/NoSlipBCStrategy.cpp
index bb98e4994..1c3cef763 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/NoSlipBCStrategy.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/NoSlipBCStrategy.cpp
@@ -34,10 +34,11 @@
 #include "NoSlipBCStrategy.h"
 #include "BoundaryConditions.h"
 #include "DistributionArray3D.h"
+#include "BCStrategyType.h"
 
 NoSlipBCStrategy::NoSlipBCStrategy()
 {
-    BCStrategy::type         = BCStrategy::NoSlipBCStrategy;
+    BCStrategy::type         = BCStrategyType::NoSlipBCStrategy;
     BCStrategy::preCollision = false;
 }
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonEqDensityBCStrategy.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonEqDensityBCStrategy.cpp
index d3f44c6ff..fd2ed61b8 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonEqDensityBCStrategy.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonEqDensityBCStrategy.cpp
@@ -34,10 +34,11 @@
 
 #include "BoundaryConditions.h"
 #include "DistributionArray3D.h"
+#include "BCStrategyType.h"
 
 NonEqDensityBCStrategy::NonEqDensityBCStrategy()
 {
-    BCStrategy::type         = BCStrategy::NonEqDensityBCStrategy;
+    BCStrategy::type         = BCStrategyType::NonEqDensityBCStrategy;
     BCStrategy::preCollision = false;
 }
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingInflowBCStrategy.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingInflowBCStrategy.cpp
index b1cf37e4b..a9abc090c 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingInflowBCStrategy.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingInflowBCStrategy.cpp
@@ -35,10 +35,11 @@
 #include "BoundaryConditions.h"
 #include "D3Q27System.h"
 #include "DistributionArray3D.h"
+#include "BCStrategyType.h"
 
 NonReflectingInflowBCStrategy::NonReflectingInflowBCStrategy()
 {
-    BCStrategy::type         = BCStrategy::NonReflectingInflowBCStrategy;
+    BCStrategy::type         = BCStrategyType::NonReflectingInflowBCStrategy;
     BCStrategy::preCollision = true;
 }
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCStrategy.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCStrategy.cpp
index b19b27ec1..8885e6c61 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCStrategy.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCStrategy.cpp
@@ -35,10 +35,11 @@
 #include "BoundaryConditions.h"
 #include "D3Q27System.h"
 #include "DistributionArray3D.h"
+#include "BCStrategyType.h"
 
 NonReflectingOutflowBCStrategy::NonReflectingOutflowBCStrategy()
 {
-    BCStrategy::type         = BCStrategy::NonReflectingOutflowBCStrategy;
+    BCStrategy::type         = BCStrategyType::NonReflectingOutflowBCStrategy;
     BCStrategy::preCollision = true;
 }
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowWithRelaxationBCStrategy.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowWithRelaxationBCStrategy.cpp
index f0fb4ccae..c69d86ba3 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowWithRelaxationBCStrategy.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowWithRelaxationBCStrategy.cpp
@@ -35,10 +35,11 @@
 #include "BoundaryConditions.h"
 #include "D3Q27System.h"
 #include "DistributionArray3D.h"
+#include "BCStrategyType.h"
 
 NonReflectingOutflowWithRelaxationBCStrategy::NonReflectingOutflowWithRelaxationBCStrategy()
 {
-    BCStrategy::type         = BCStrategy::NonReflectingOutflowWithRelaxationBCStrategy;
+    BCStrategy::type         = BCStrategyType::NonReflectingOutflowWithRelaxationBCStrategy;
     BCStrategy::preCollision = true;
 }
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/SimpleSlipBCStrategy.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/SimpleSlipBCStrategy.cpp
index 7bd977217..79edfb8e7 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/SimpleSlipBCStrategy.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/SimpleSlipBCStrategy.cpp
@@ -33,10 +33,11 @@
 #include "SimpleSlipBCStrategy.h"
 #include "DistributionArray3D.h"
 #include "BoundaryConditions.h"
+#include "BCStrategyType.h"
 
 SimpleSlipBCStrategy::SimpleSlipBCStrategy()
 {
-   BCStrategy::type = BCStrategy::SimpleSlipBCStrategy;
+   BCStrategy::type = BCStrategyType::SimpleSlipBCStrategy;
    BCStrategy::preCollision = false;
 }
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/SimpleVelocityBCStrategy.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/SimpleVelocityBCStrategy.cpp
index 2206e7154..03a3aeb1b 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/SimpleVelocityBCStrategy.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/SimpleVelocityBCStrategy.cpp
@@ -34,10 +34,11 @@
 #include "SimpleVelocityBCStrategy.h"
 #include "DistributionArray3D.h"
 #include "BoundaryConditions.h"
+#include "BCStrategyType.h"
 
 SimpleVelocityBCStrategy::SimpleVelocityBCStrategy()
 {
-   BCStrategy::type = BCStrategy::SimpleVelocityBCStrategy;
+   BCStrategy::type = BCStrategyType::SimpleVelocityBCStrategy;
    BCStrategy::preCollision = false;
 }
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCStrategy.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCStrategy.cpp
index 34093b6a8..f0e246e57 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCStrategy.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCStrategy.cpp
@@ -1,10 +1,11 @@
 #include "SlipBCStrategy.h"
 #include "BoundaryConditions.h"
 #include "DistributionArray3D.h"
+#include "BCStrategyType.h"
 
 SlipBCStrategy::SlipBCStrategy()
 {
-    BCStrategy::type         = BCStrategy::SlipBCStrategy;
+    BCStrategy::type         = BCStrategyType::SlipBCStrategy;
     BCStrategy::preCollision = false;
 }
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallBCSet.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallBCSet.cpp
index aefbd97f1..b89b015c2 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallBCSet.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallBCSet.cpp
@@ -35,6 +35,7 @@
 #include "ThinWallNoSlipBCStrategy.h"
 
 #include "LBMKernel.h"
+#include "BCStrategyType.h"
 
 //////////////////////////////////////////////////////////////////////////
 ThinWallBCSet::ThinWallBCSet(SPtr<ILBMKernel> kernel) : BCSet(kernel) {}
@@ -50,7 +51,7 @@ void ThinWallBCSet::applyPostCollisionBC()
     BCSet::applyPostCollisionBC();
 
     for (SPtr<BCStrategy> bc : postBC) {
-        if (bc->getType() == BCStrategy::ThinWallNoSlipBCStrategy) {
+        if (bc->getType() == BCStrategyType::ThinWallNoSlipBCStrategy) {
             dynamicPointerCast<ThinWallNoSlipBCStrategy>(bc)->setPass(2);
             bc->applyBC();
             dynamicPointerCast<ThinWallNoSlipBCStrategy>(bc)->setPass(1);
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallNoSlipBCStrategy.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallNoSlipBCStrategy.cpp
index 2427983a1..3d78fd9cc 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallNoSlipBCStrategy.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallNoSlipBCStrategy.cpp
@@ -34,10 +34,11 @@
 
 #include "BoundaryConditions.h"
 #include "D3Q27EsoTwist3DSplittedVector.h"
+#include "BCStrategyType.h"
 
 ThinWallNoSlipBCStrategy::ThinWallNoSlipBCStrategy()
 {
-    BCStrategy::type         = BCStrategy::ThinWallNoSlipBCStrategy;
+    BCStrategy::type         = BCStrategyType::ThinWallNoSlipBCStrategy;
     BCStrategy::preCollision = false;
     pass                      = 1;
 }
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCStrategy.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCStrategy.cpp
index 4f4c1615d..c5a15631f 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCStrategy.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCStrategy.cpp
@@ -35,10 +35,11 @@
 #include "BoundaryConditions.h"
 #include "DistributionArray3D.h"
 #include "Block3D.h"
+#include "BCStrategyType.h"
 
 VelocityBCStrategy::VelocityBCStrategy()
 {
-    BCStrategy::type         = BCStrategy::VelocityBCStrategy;
+    BCStrategy::type         = BCStrategyType::VelocityBCStrategy;
     BCStrategy::preCollision = false;
 }
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityWithDensityBCStrategy.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityWithDensityBCStrategy.cpp
index 0278ee095..aa8dc479d 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityWithDensityBCStrategy.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityWithDensityBCStrategy.cpp
@@ -33,10 +33,11 @@
 #include "VelocityWithDensityBCStrategy.h"
 #include "BCArray3D.h"
 #include "DistributionArray3D.h"
+#include "BCStrategyType.h"
 
 VelocityWithDensityBCStrategy::VelocityWithDensityBCStrategy()
 {
-    BCStrategy::type         = BCStrategy::VelocityWithDensityBCStrategy;
+    BCStrategy::type         = BCStrategyType::VelocityWithDensityBCStrategy;
     BCStrategy::preCollision = false;
 }
 //////////////////////////////////////////////////////////////////////////
-- 
GitLab