From 64a5c84fe0ba6645ebf5d68c121f34c0a545f02a Mon Sep 17 00:00:00 2001
From: Soeren Peters <peters@irmb.tu-bs.de>
Date: Wed, 23 May 2018 10:31:36 +0200
Subject: [PATCH] - move side and BC to new files - create sides with enum in
 main

---
 .../BoundaryConditions/BoundaryCondition.cpp  |   1 +
 .../BoundaryConditions/BoundaryCondition.h    |  53 +++++
 .../grid/BoundaryConditions/Side.cpp          |  97 ++++++++
 .../grid/BoundaryConditions/Side.h            | 180 ++++++++++++++
 .../grid/BoundaryConditions/package.include   |   0
 .../grid/GridBuilder/LevelGridBuilder.cpp     |  16 +-
 .../grid/GridBuilder/LevelGridBuilder.h       | 224 +-----------------
 .../grid/GridBuilder/MultipleGridBuilder.cpp  |   2 +
 targets/apps/HULC/main.cpp                    |  14 +-
 9 files changed, 356 insertions(+), 231 deletions(-)
 create mode 100644 src/GridGenerator/grid/BoundaryConditions/BoundaryCondition.cpp
 create mode 100644 src/GridGenerator/grid/BoundaryConditions/BoundaryCondition.h
 create mode 100644 src/GridGenerator/grid/BoundaryConditions/Side.cpp
 create mode 100644 src/GridGenerator/grid/BoundaryConditions/Side.h
 create mode 100644 src/GridGenerator/grid/BoundaryConditions/package.include

diff --git a/src/GridGenerator/grid/BoundaryConditions/BoundaryCondition.cpp b/src/GridGenerator/grid/BoundaryConditions/BoundaryCondition.cpp
new file mode 100644
index 000000000..5a530af15
--- /dev/null
+++ b/src/GridGenerator/grid/BoundaryConditions/BoundaryCondition.cpp
@@ -0,0 +1 @@
+#include "BoundaryCondition.h"
\ No newline at end of file
diff --git a/src/GridGenerator/grid/BoundaryConditions/BoundaryCondition.h b/src/GridGenerator/grid/BoundaryConditions/BoundaryCondition.h
new file mode 100644
index 000000000..2250a4ea7
--- /dev/null
+++ b/src/GridGenerator/grid/BoundaryConditions/BoundaryCondition.h
@@ -0,0 +1,53 @@
+#ifndef BoundaryCondition_H
+#define BoundaryCondition_H
+
+#include <vector>
+
+#include <core/PointerDefinitions.h>
+#include <core/DataTypes.h>
+
+class Side;
+
+class BoundaryCondition
+{
+public:
+    std::vector<uint> indices;
+
+};
+
+class PressureBoundaryCondition : public BoundaryCondition
+{
+public:
+    static SPtr<PressureBoundaryCondition> make(real rho)
+    {
+        return SPtr<PressureBoundaryCondition>(new PressureBoundaryCondition(rho));
+    }
+
+    SPtr<Side> side;
+    real rho;
+private:
+    PressureBoundaryCondition(real rho) : rho(rho)
+    {
+
+    }
+};
+
+class VelocityBoundaryCondition : public BoundaryCondition
+{
+public:
+    static SPtr<VelocityBoundaryCondition> make(real vx, real vy, real vz)
+    {
+        return SPtr<VelocityBoundaryCondition>(new VelocityBoundaryCondition(vx, vy, vz));
+    }
+
+    SPtr<Side> side;
+    real vx, vy, vz;
+private:
+    VelocityBoundaryCondition(real vx, real vy, real vz) : vx(vx), vy(vy), vz(vz)
+    {
+
+    }
+};
+
+
+#endif
\ No newline at end of file
diff --git a/src/GridGenerator/grid/BoundaryConditions/Side.cpp b/src/GridGenerator/grid/BoundaryConditions/Side.cpp
new file mode 100644
index 000000000..01147ead2
--- /dev/null
+++ b/src/GridGenerator/grid/BoundaryConditions/Side.cpp
@@ -0,0 +1,97 @@
+#include "Side.h"
+
+#include "../Grid.h"
+#include "../NodeValues.h"
+
+#include "BoundaryCondition.h"
+
+void Side::addIndices(SPtr<Grid> grid, SPtr<BoundaryCondition> boundaryCondition, std::string coord, real constant,
+                      real startInner, real endInner, real startOuter, real endOuter)
+{
+    for (real v1 = startInner; v1 < endInner; v1 += grid->getDelta())
+    {
+        for (real v2 = startOuter; v2 < endOuter; v2 += grid->getDelta())
+        {
+            uint index = getIndex(grid, coord, constant, v1, v2);
+            if (grid->getFieldEntry(index) == FLUID)
+                boundaryCondition->indices.push_back(index);
+        }
+    }
+}
+
+uint Side::getIndex(SPtr<Grid> grid, std::string coord, real constant, real v1, real v2)
+{
+    if (coord == "x")
+        return grid->transCoordToIndex(constant, v1, v2);
+    if (coord == "y")
+        return grid->transCoordToIndex(v1, constant, v2);
+    if (coord == "z")
+        return grid->transCoordToIndex(v1, v2, constant);
+    return -1;
+}
+
+void MX::setPeriodicy(SPtr<Grid> grid)
+{
+    grid->setPeriodicityX(false);
+}
+
+void MX::addIndices(SPtr<Grid> grid, SPtr<BoundaryCondition> boundaryCondition)
+{
+    Side::addIndices(grid, boundaryCondition, "x", grid->getStartX() + grid->getDelta(), grid->getStartY(),
+                     grid->getEndY(), grid->getStartZ(), grid->getEndZ());
+}
+
+void PX::setPeriodicy(SPtr<Grid> grid)
+{
+    grid->setPeriodicityX(false);
+}
+
+void PX::addIndices(SPtr<Grid> grid, SPtr<BoundaryCondition> boundaryCondition)
+{
+    Side::addIndices(grid, boundaryCondition, "x", grid->getEndX() - grid->getDelta(), grid->getStartY(),
+                     grid->getEndY(), grid->getStartZ(), grid->getEndZ());
+}
+
+void MY::setPeriodicy(SPtr<Grid> grid)
+{
+    grid->setPeriodicityY(false);
+}
+
+void MY::addIndices(SPtr<Grid> grid, SPtr<BoundaryCondition> boundaryCondition)
+{
+    Side::addIndices(grid, boundaryCondition, "y", grid->getStartY() + grid->getDelta(), grid->getStartX(),
+                     grid->getEndX(), grid->getStartZ(), grid->getEndZ());
+}
+
+void PY::setPeriodicy(SPtr<Grid> grid)
+{
+    grid->setPeriodicityY(false);
+}
+
+void PY::addIndices(SPtr<Grid> grid, SPtr<BoundaryCondition> boundaryCondition)
+{
+    Side::addIndices(grid, boundaryCondition, "y", grid->getEndY() - grid->getDelta(), grid->getStartX(),
+                     grid->getEndX(), grid->getStartZ(), grid->getEndZ());
+}
+
+void MZ::setPeriodicy(SPtr<Grid> grid)
+{
+    grid->setPeriodicityZ(false);
+}
+
+void MZ::addIndices(SPtr<Grid> grid, SPtr<BoundaryCondition> boundaryCondition)
+{
+    Side::addIndices(grid, boundaryCondition, "z", grid->getStartZ() + grid->getDelta(), grid->getStartX(),
+                     grid->getEndX(), grid->getStartY(), grid->getEndY());
+}
+
+void PZ::setPeriodicy(SPtr<Grid> grid)
+{
+    grid->setPeriodicityZ(false);
+}
+
+void PZ::addIndices(SPtr<Grid> grid, SPtr<BoundaryCondition> boundaryCondition)
+{
+    Side::addIndices(grid, boundaryCondition, "z", grid->getEndZ() - grid->getDelta(), grid->getStartX(),
+                     grid->getEndX(), grid->getStartY(), grid->getEndY());
+}
diff --git a/src/GridGenerator/grid/BoundaryConditions/Side.h b/src/GridGenerator/grid/BoundaryConditions/Side.h
new file mode 100644
index 000000000..cbd28dffe
--- /dev/null
+++ b/src/GridGenerator/grid/BoundaryConditions/Side.h
@@ -0,0 +1,180 @@
+#ifndef SIDE_H
+#define SIDE_H
+
+#include <string>
+
+#include <VirtualFluidsDefinitions.h>
+
+#include <core/PointerDefinitions.h>
+#include <core/DataTypes.h>
+
+#define X_INDEX 0
+#define Y_INDEX 1
+#define Z_INDEX 2
+
+#define POSITIVE_DIR 1
+#define NEGATIVE_DIR -1
+
+class Grid;
+class BoundaryCondition;
+
+class Side;
+
+enum class SideType
+{
+    MX, PX, MY, PY, MZ, PZ
+};
+
+
+
+class Side
+{
+public:
+    virtual void addIndices(SPtr<Grid> grid, SPtr<BoundaryCondition> boundaryCondition) = 0;
+    virtual void setPeriodicy(SPtr<Grid> grid) = 0;
+
+    virtual int getCoordinate() const = 0;
+    virtual int getDirection() const = 0;
+
+protected:
+    static void addIndices(SPtr<Grid> grid, SPtr<BoundaryCondition> boundaryCondition, std::string coord, real constant,
+                           real startInner, real endInner, real startOuter, real endOuter);
+
+private:
+    static uint getIndex(SPtr<Grid> grid, std::string coord, real constant, real v1, real v2);
+};
+
+class MX : public Side
+{
+public:
+    void setPeriodicy(SPtr<Grid> grid) override;
+    void addIndices(SPtr<Grid> grid, SPtr<BoundaryCondition> boundaryCondition) override;
+
+    int getCoordinate() const override
+    {
+        return X_INDEX;
+    }
+
+    int getDirection() const override
+    {
+        return NEGATIVE_DIR;
+    }
+};
+
+class PX : public Side
+{
+public:
+    void setPeriodicy(SPtr<Grid> grid) override;
+
+    void addIndices(SPtr<Grid> grid, SPtr<BoundaryCondition> boundaryCondition) override;
+
+    int getCoordinate() const override
+    {
+        return X_INDEX;
+    }
+
+    int getDirection() const override
+    {
+        return POSITIVE_DIR;
+    }
+};
+
+
+class MY : public Side
+{
+public:
+    void setPeriodicy(SPtr<Grid> grid) override;
+
+    void addIndices(SPtr<Grid> grid, SPtr<BoundaryCondition> boundaryCondition) override;
+
+    int getCoordinate() const override
+    {
+        return Y_INDEX;
+    }
+
+    int getDirection() const override
+    {
+        return NEGATIVE_DIR;
+    }
+};
+
+class PY : public Side
+{
+public:
+    void setPeriodicy(SPtr<Grid> grid) override;
+
+    void addIndices(SPtr<Grid> grid, SPtr<BoundaryCondition> boundaryCondition) override;
+
+    int getCoordinate() const override
+    {
+        return Y_INDEX;
+    }
+
+    int getDirection() const override
+    {
+        return POSITIVE_DIR;
+    }
+};
+
+
+class MZ : public Side
+{
+public:
+    void setPeriodicy(SPtr<Grid> grid) override;
+
+    void addIndices(SPtr<Grid> grid, SPtr<BoundaryCondition> boundaryCondition) override;
+
+    int getCoordinate() const override
+    {
+        return Z_INDEX;
+    }
+
+    int getDirection() const override
+    {
+        return NEGATIVE_DIR;
+    }
+};
+
+class PZ : public Side
+{
+public:
+    void setPeriodicy(SPtr<Grid> grid) override;
+
+    void addIndices(SPtr<Grid> grid, SPtr<BoundaryCondition> boundaryCondition) override;
+
+    int getCoordinate() const override
+    {
+        return Z_INDEX;
+    }
+
+    int getDirection() const override
+    {
+        return POSITIVE_DIR;
+    }
+};
+
+
+class SideFactory
+{
+public:
+    static SPtr<Side> make(SideType sideType)
+    {
+        switch (sideType)
+        {
+        case SideType::MX:
+            return SPtr<Side>(new MX());
+        case SideType::PX:
+            return SPtr<Side>(new PX());
+        case SideType::MY:
+            return SPtr<Side>(new MY());
+        case SideType::PY:
+            return SPtr<Side>(new PY());
+        case SideType::MZ:
+            return SPtr<Side>(new MZ());
+        case SideType::PZ:
+            return SPtr<Side>(new PZ());
+        }
+    }
+};
+
+#endif
diff --git a/src/GridGenerator/grid/BoundaryConditions/package.include b/src/GridGenerator/grid/BoundaryConditions/package.include
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp b/src/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp
index 4566982fa..66f9f83d8 100644
--- a/src/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp
+++ b/src/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp
@@ -25,9 +25,12 @@
 
 #include <GridGenerator/grid/GridFactory.h>
 #include "grid/GridInterface.h"
-//#include "grid/GridMocks.h"
 #include "grid/Grid.h"
 
+#include "grid/BoundaryConditions/BoundaryCondition.h"
+#include "grid/BoundaryConditions/Side.h"
+
+
 #define GEOFLUID 19
 #define GEOSOLID 16
 
@@ -48,18 +51,21 @@ std::shared_ptr<LevelGridBuilder> LevelGridBuilder::makeShared(Device device, co
     return SPtr<LevelGridBuilder>(new LevelGridBuilder(device, d3qxx));
 }
 
-void LevelGridBuilder::setVelocityBoundaryCondition(SPtr<Side> side, real vx, real vy, real vz)
+void LevelGridBuilder::setVelocityBoundaryCondition(SideType sideType, real vx, real vy, real vz)
 {
     SPtr<VelocityBoundaryCondition> velocityBoundaryCondition = VelocityBoundaryCondition::make(vx, vy, vz);
 
+    auto side = SideFactory::make(sideType);
+
     side->setPeriodicy(grids[0]);
     velocityBoundaryConditions.push_back(velocityBoundaryCondition);
     velocityBoundaryCondition->side = side;
 }
 
-void LevelGridBuilder::setPressureBoundaryCondition(SPtr<Side> side, real rho)
+void LevelGridBuilder::setPressureBoundaryCondition(SideType sideType, real rho)
 {
     SPtr<PressureBoundaryCondition> pressureBoundaryCondition = PressureBoundaryCondition::make(rho);
+    auto side = SideFactory::make(sideType);
 
     side->setPeriodicy(grids[0]);
     pressureBoundaryConditions.push_back(pressureBoundaryCondition);
@@ -221,7 +227,7 @@ uint LevelGridBuilder::getVelocitySize(int level) const
     uint size = 0;
     for (auto boundaryCondition : this->velocityBoundaryConditions)
     {
-        size += boundaryCondition->indices.size();
+        size += uint(boundaryCondition->indices.size());
     }
     return size;
 }
@@ -247,7 +253,7 @@ uint LevelGridBuilder::getPressureSize(int level) const
     uint size = 0;
     for (auto boundaryCondition : this->pressureBoundaryConditions)
     {
-        size += boundaryCondition->indices.size();
+        size += uint(boundaryCondition->indices.size());
     }
     return size;
 }
diff --git a/src/GridGenerator/grid/GridBuilder/LevelGridBuilder.h b/src/GridGenerator/grid/GridBuilder/LevelGridBuilder.h
index 41964c8c6..ce6626012 100644
--- a/src/GridGenerator/grid/GridBuilder/LevelGridBuilder.h
+++ b/src/GridGenerator/grid/GridBuilder/LevelGridBuilder.h
@@ -19,227 +19,13 @@ class  Grid;
 class Transformator;
 class ArrowTransformator;
 class PolyDataWriterWrapper;
-class BoundaryCondition;
 class BoundingBox;
 enum class Device;
 
 class Side;
-
-class BoundaryCondition
-{
-public:
-    std::vector<uint> indices;
-
-};
-
-class PressureBoundaryCondition : public BoundaryCondition
-{
-public:
-    static SPtr<PressureBoundaryCondition> make(real rho)
-    {
-        return SPtr<PressureBoundaryCondition>(new PressureBoundaryCondition(rho));
-    }
-
-    SPtr<Side> side;
-    real rho;
-private:
-    PressureBoundaryCondition(real rho) : rho(rho)
-    {
-
-    }
-};
-
-class VelocityBoundaryCondition : public BoundaryCondition
-{
-public:
-    static SPtr<VelocityBoundaryCondition> make(real vx, real vy, real vz)
-    {
-        return SPtr<VelocityBoundaryCondition>(new VelocityBoundaryCondition(vx, vy, vz));
-    }
-
-    SPtr<Side> side;
-    real vx, vy, vz;
-private:
-    VelocityBoundaryCondition(real vx, real vy, real vz) : vx(vx), vy(vy), vz(vz)
-    {
-        
-    } 
-};
-
-#define X_INDEX 0
-#define Y_INDEX 1
-#define Z_INDEX 2
-
-#define POSITIVE_DIR 1
-#define NEGATIVE_DIR -1
-
-class Side
-{
-public:
-    virtual void addIndices(SPtr<Grid> grid, SPtr<BoundaryCondition> boundaryCondition) = 0;
-    virtual void setPeriodicy(SPtr<Grid> grid) = 0;
-    
-    virtual int getCoordinate() const = 0;
-    virtual int getDirection() const = 0;
-
-protected:
-    static void addIndices(SPtr<Grid> grid, SPtr<BoundaryCondition> boundaryCondition, std::string coord, real constant, real startInner, real endInner, real startOuter, real endOuter) {
-        for (int v1 = startInner; v1 < endInner; v1 += grid->getDelta())
-        {
-            for (int v2 = startOuter; v2 < endOuter; v2 += grid->getDelta())
-            {
-                uint index = getIndex(grid, coord, constant, v1, v2);
-                if (grid->getFieldEntry(index) == FLUID)
-                    boundaryCondition->indices.push_back(index);
-            }
-        }
-    }
-
-    static uint getIndex(SPtr<Grid> grid, std::string coord, real constant, real v1, real v2)
-    {
-        if (coord == "x")
-            return grid->transCoordToIndex(constant, v1, v2);
-        if (coord == "y")
-            return grid->transCoordToIndex(v1, constant, v2);
-        if (coord == "z")
-            return grid->transCoordToIndex(v1, v2, constant);
-    }
-};
-
-class MX : public Side
-{
-public:
-    void setPeriodicy(SPtr<Grid> grid) override {
-        grid->setPeriodicityX(false);
-    }
-
-    void addIndices(SPtr<Grid> grid, SPtr<BoundaryCondition> boundaryCondition) override {
-        Side::addIndices(grid, boundaryCondition, "x", grid->getStartX() + grid->getDelta(),  grid->getStartY(), grid->getEndY(),grid->getStartZ(), grid->getEndZ());
-    }
-
-    int getCoordinate() const override
-    {
-        return X_INDEX;
-    }
-
-    int getDirection() const override
-    {
-        return NEGATIVE_DIR;
-    }
-};
-
-class PX : public Side
-{
-public:
-    void setPeriodicy(SPtr<Grid> grid) override {
-        grid->setPeriodicityX(false);
-    }
-
-    void addIndices(SPtr<Grid> grid, SPtr<BoundaryCondition> boundaryCondition) override {
-        Side::addIndices(grid, boundaryCondition, "x", grid->getEndX() - grid->getDelta(),  grid->getStartY(), grid->getEndY(), grid->getStartZ(), grid->getEndZ());
-    }
-
-    int getCoordinate() const override
-    {
-        return X_INDEX;
-    }
-
-    int getDirection() const override
-    {
-        return POSITIVE_DIR;
-    }
-};
-
-
-class MY : public Side
-{
-public:
-    void setPeriodicy(SPtr<Grid> grid) override {
-        grid->setPeriodicityY(false);
-    }
-
-    void addIndices(SPtr<Grid> grid, SPtr<BoundaryCondition> boundaryCondition) override {
-        Side::addIndices(grid, boundaryCondition, "y", grid->getStartY() + grid->getDelta(), grid->getStartX(), grid->getEndX(), grid->getStartZ(), grid->getEndZ());
-    }
-
-    int getCoordinate() const override
-    {
-        return Y_INDEX;
-    }
-
-    int getDirection() const override
-    {
-        return NEGATIVE_DIR;
-    }
-};
-
-class PY : public Side
-{
-public:
-    void setPeriodicy(SPtr<Grid> grid) override {
-        grid->setPeriodicityY(false);
-    }
-
-    void addIndices(SPtr<Grid> grid, SPtr<BoundaryCondition> boundaryCondition) override {
-        Side::addIndices(grid, boundaryCondition, "y", grid->getEndY() - grid->getDelta(), grid->getStartX(), grid->getEndX(), grid->getStartZ(), grid->getEndZ());
-    }
-
-    int getCoordinate() const override
-    {
-        return Y_INDEX;
-    }
-
-    int getDirection() const override
-    {
-        return POSITIVE_DIR;
-    }
-};
-
-
-class MZ : public Side
-{
-public:
-    void setPeriodicy(SPtr<Grid> grid) override {
-        grid->setPeriodicityZ(false);
-    }
-
-    void addIndices(SPtr<Grid> grid, SPtr<BoundaryCondition> boundaryCondition) override {
-        Side::addIndices(grid, boundaryCondition, "z", grid->getStartZ() + grid->getDelta(), grid->getStartX(), grid->getEndX(), grid->getStartY(), grid->getEndY());
-    }
-
-    int getCoordinate() const override
-    {
-        return Z_INDEX;
-    }
-
-    int getDirection() const override
-    {
-        return NEGATIVE_DIR;
-    }
-};
-
-class PZ : public Side
-{
-public:
-    void setPeriodicy(SPtr<Grid> grid) override {
-        grid->setPeriodicityZ(false);
-    }
-
-    void addIndices(SPtr<Grid> grid, SPtr<BoundaryCondition> boundaryCondition) override {
-        Side::addIndices(grid, boundaryCondition, "z", grid->getEndZ() - grid->getDelta(), grid->getStartX(), grid->getEndX(), grid->getStartY(), grid->getEndY());
-    }
-
-    int getCoordinate() const override
-    {
-        return Z_INDEX;
-    }
-
-    int getDirection() const override
-    {
-        return POSITIVE_DIR;
-    }
-};
-
+class VelocityBoundaryCondition;
+class PressureBoundaryCondition;
+enum class SideType;
 
 class LevelGridBuilder : public GridBuilder
 {
@@ -254,8 +40,8 @@ public:
     VF_PUBLIC void copyDataFromGpu();
     VF_PUBLIC virtual ~LevelGridBuilder();
 
-    VF_PUBLIC void setVelocityBoundaryCondition(SPtr<Side> side, real vx, real vy, real vz);
-    VF_PUBLIC void setPressureBoundaryCondition(SPtr<Side> side, real rho);
+    VF_PUBLIC void setVelocityBoundaryCondition(SideType sideType, real vx, real vy, real vz);
+    VF_PUBLIC void setPressureBoundaryCondition(SideType sideType, real rho);
 
     VF_PUBLIC virtual std::shared_ptr<Grid> getGrid(int level, int box);
 
diff --git a/src/GridGenerator/grid/GridBuilder/MultipleGridBuilder.cpp b/src/GridGenerator/grid/GridBuilder/MultipleGridBuilder.cpp
index 210aeae6e..c9c05c39a 100644
--- a/src/GridGenerator/grid/GridBuilder/MultipleGridBuilder.cpp
+++ b/src/GridGenerator/grid/GridBuilder/MultipleGridBuilder.cpp
@@ -9,6 +9,8 @@
 #include <VirtualFluidsBasics/utilities/logger/Logger.h>
 #include "io/STLReaderWriter/STLWriter.h"
 #include "io/GridVTKWriter/GridVTKWriter.h"
+#include <grid/BoundaryConditions/BoundaryCondition.h>
+#include <grid/BoundaryConditions/Side.h>
 
 MultipleGridBuilder::MultipleGridBuilder(SPtr<GridFactory> gridFactory, Device device, const std::string &d3qxx) :
     LevelGridBuilder(device, d3qxx), gridFactory(gridFactory)
diff --git a/targets/apps/HULC/main.cpp b/targets/apps/HULC/main.cpp
index 78e6bcece..10467ee6d 100644
--- a/targets/apps/HULC/main.cpp
+++ b/targets/apps/HULC/main.cpp
@@ -38,6 +38,7 @@
 #include "Output/FileWriter.h"
 //#include "DataStructureInitializer/GridReaderFiles/GridReader.h"
 
+#include "grid/BoundaryConditions/Side.h"
 
 std::string getGridPath(std::shared_ptr<Parameter> para, std::string Gridpath)
 {
@@ -278,13 +279,12 @@ void multipleLevel(const std::string& configPath)
     gridBuilder->addGeometry(triangularMesh);
 
 
-
-    gridBuilder->setVelocityBoundaryCondition(SPtr<Side>(new MX()), 0.01, 0.0, 0.0);
-    gridBuilder->setVelocityBoundaryCondition(SPtr<Side>(new PX()), 0.01, 0.0, 0.0);
-    gridBuilder->setVelocityBoundaryCondition(SPtr<Side>(new MY()), 0.01, 0.0, 0.0);
-    gridBuilder->setVelocityBoundaryCondition(SPtr<Side>(new PY()), 0.01, 0.0, 0.0);
-    gridBuilder->setVelocityBoundaryCondition(SPtr<Side>(new MZ()), 0.01, 0.0, 0.0);
-    gridBuilder->setVelocityBoundaryCondition(SPtr<Side>(new PZ()), 0.01, 0.0, 0.0);
+    gridBuilder->setVelocityBoundaryCondition(SideType::MX, 0.01, 0.0, 0.0);
+    gridBuilder->setVelocityBoundaryCondition(SideType::PX, 0.01, 0.0, 0.0);
+    gridBuilder->setVelocityBoundaryCondition(SideType::MY, 0.01, 0.0, 0.0);
+    gridBuilder->setVelocityBoundaryCondition(SideType::PY, 0.01, 0.0, 0.0);
+    gridBuilder->setVelocityBoundaryCondition(SideType::MZ, 0.01, 0.0, 0.0);
+    gridBuilder->setVelocityBoundaryCondition(SideType::PZ, 0.01, 0.0, 0.0);
 
     //gridBuilder->setBoundaryCondition("geometry", BoundaryCondition::VELOCITY);
 
-- 
GitLab