From c8ae3832e7d3faad433432118fbf9340e9881321 Mon Sep 17 00:00:00 2001
From: Anna Wellmann <a.wellmann@tu-braunschweig.de>
Date: Thu, 17 Aug 2023 16:09:45 +0000
Subject: [PATCH] Make getters in Object const and add some functions for
 getting rotating grid to GridGenerator

---
 src/basics/geometry3d/Axis.h                  | 17 +++++++
 .../geometries/Conglomerate/Conglomerate.cpp  | 18 +++----
 .../geometries/Conglomerate/Conglomerate.h    | 18 +++----
 .../geometries/Cuboid/Cuboid.cpp              | 18 +++----
 .../GridGenerator/geometries/Cuboid/Cuboid.h  | 18 +++----
 .../geometries/Cylinder/Cylinder.cpp          | 32 ++++++-------
 .../geometries/Cylinder/Cylinder.h            | 48 ++++++++-----------
 .../geometries/Cylinder/CylinderTest.cpp      |  6 +--
 src/gpu/GridGenerator/geometries/Object.h     | 18 +++----
 .../geometries/Sphere/Sphere.cpp              | 18 +++----
 .../GridGenerator/geometries/Sphere/Sphere.h  | 18 +++----
 .../TriangularMesh/TriangularMesh.h           | 18 +++----
 .../VerticalCylinder/VerticalCylinder.cpp     | 18 +++----
 .../VerticalCylinder/VerticalCylinder.h       | 18 +++----
 .../grid/GridBuilder/GridBuilder.h            |  2 +
 .../grid/GridBuilder/LevelGridBuilder.cpp     |  5 ++
 .../grid/GridBuilder/LevelGridBuilder.h       |  4 ++
 .../grid/GridBuilder/MultipleGridBuilder.h    |  2 -
 .../GridBuilder/MultipleGridBuilderTest.cpp   |  2 +-
 19 files changed, 159 insertions(+), 139 deletions(-)
 create mode 100644 src/basics/geometry3d/Axis.h

diff --git a/src/basics/geometry3d/Axis.h b/src/basics/geometry3d/Axis.h
new file mode 100644
index 000000000..5662483f6
--- /dev/null
+++ b/src/basics/geometry3d/Axis.h
@@ -0,0 +1,17 @@
+#ifndef AXIS
+#define AXIS
+
+#include <array>
+#include <map>
+
+enum Axis {
+    x = 0,
+    y = 1,
+    z = 2,
+};
+
+const std::map<Axis, std::array<double, 3>> unitVectors{ { x, { 1, 0, 0 } },
+                                                         { y, { 0, 1, 0 } },
+                                                         { z, { 0, 0, 1 } } };
+
+#endif
\ No newline at end of file
diff --git a/src/gpu/GridGenerator/geometries/Conglomerate/Conglomerate.cpp b/src/gpu/GridGenerator/geometries/Conglomerate/Conglomerate.cpp
index fbbf7460e..821a385df 100644
--- a/src/gpu/GridGenerator/geometries/Conglomerate/Conglomerate.cpp
+++ b/src/gpu/GridGenerator/geometries/Conglomerate/Conglomerate.cpp
@@ -72,12 +72,12 @@ SPtr<Object> Conglomerate::clone() const
     return conglomerate;
 }
 
-double Conglomerate::getX1Centroid()
+double Conglomerate::getX1Centroid() const
 {
     return (getX1Minimum() + getX1Maximum()) * 0.5;
 }
 
-double Conglomerate::getX1Minimum()
+double Conglomerate::getX1Minimum() const
 {
     double minimum = addObjects[0]->getX1Minimum();
     for(uint i = 1; i < numberOfAddObjects; i++)
@@ -85,7 +85,7 @@ double Conglomerate::getX1Minimum()
     return minimum;
 }
 
-double Conglomerate::getX1Maximum()
+double Conglomerate::getX1Maximum() const
 {
     double maximum = addObjects[0]->getX1Maximum();
     for (uint i = 1; i < numberOfAddObjects; i++)
@@ -93,12 +93,12 @@ double Conglomerate::getX1Maximum()
     return maximum;
 }
 
-double Conglomerate::getX2Centroid()
+double Conglomerate::getX2Centroid() const
 {
     return (getX2Minimum() + getX2Maximum()) * 0.5;
 }
 
-double Conglomerate::getX2Minimum()
+double Conglomerate::getX2Minimum() const
 {
     double minimum = addObjects[0]->getX2Minimum();
     for (uint i = 1; i < numberOfAddObjects; i++)
@@ -106,7 +106,7 @@ double Conglomerate::getX2Minimum()
     return minimum;
 }	
 
-double Conglomerate::getX2Maximum()
+double Conglomerate::getX2Maximum() const
 {
     double maximum = addObjects[0]->getX2Maximum();
     for (uint i = 1; i < numberOfAddObjects; i++)
@@ -114,12 +114,12 @@ double Conglomerate::getX2Maximum()
     return maximum;
 }
 
-double Conglomerate::getX3Centroid()
+double Conglomerate::getX3Centroid() const
 {
     return (getX3Minimum() + getX3Maximum()) * 0.5;
 }
 
-double Conglomerate::getX3Minimum()
+double Conglomerate::getX3Minimum() const
 {
     double minimum = addObjects[0]->getX3Minimum();
     for (uint i = 1; i < numberOfAddObjects; i++)
@@ -127,7 +127,7 @@ double Conglomerate::getX3Minimum()
     return minimum;
 }	
 
-double Conglomerate::getX3Maximum()
+double Conglomerate::getX3Maximum() const
 {
     double maximum = addObjects[0]->getX3Maximum();
     for (uint i = 1; i < numberOfAddObjects; i++)
diff --git a/src/gpu/GridGenerator/geometries/Conglomerate/Conglomerate.h b/src/gpu/GridGenerator/geometries/Conglomerate/Conglomerate.h
index ed6caace2..a8eb1a7ca 100644
--- a/src/gpu/GridGenerator/geometries/Conglomerate/Conglomerate.h
+++ b/src/gpu/GridGenerator/geometries/Conglomerate/Conglomerate.h
@@ -53,15 +53,15 @@ public:
 
     SPtr<Object> clone() const override;
 
-    double getX1Centroid() override;
-    double getX1Minimum() override;
-    double getX1Maximum() override;
-    double getX2Centroid() override;
-    double getX2Minimum() override;
-    double getX2Maximum() override;
-    double getX3Centroid() override;
-    double getX3Minimum() override;
-    double getX3Maximum() override;
+    double getX1Centroid() const override;
+    double getX1Minimum() const override;
+    double getX1Maximum() const override;
+    double getX2Centroid() const override;
+    double getX2Minimum() const override;
+    double getX2Maximum() const override;
+    double getX3Centroid() const override;
+    double getX3Minimum() const override;
+    double getX3Maximum() const override;
 
     void changeSizeByDelta(double delta) override;
 
diff --git a/src/gpu/GridGenerator/geometries/Cuboid/Cuboid.cpp b/src/gpu/GridGenerator/geometries/Cuboid/Cuboid.cpp
index e6c05313b..f5fa08ec8 100644
--- a/src/gpu/GridGenerator/geometries/Cuboid/Cuboid.cpp
+++ b/src/gpu/GridGenerator/geometries/Cuboid/Cuboid.cpp
@@ -46,47 +46,47 @@ SPtr<Object> Cuboid::clone() const
     return std::make_shared<Cuboid>(minX1, minX2, minX3, maxX1, maxX2, maxX3);
 }
 
-double Cuboid::getX1Centroid()
+double Cuboid::getX1Centroid() const
 {
    return getCenter(minX1, maxX1);
 }
 
-double Cuboid::getX1Minimum()
+double Cuboid::getX1Minimum() const
 {
     return getMinimum(minX1, maxX1);
 }
 
-double Cuboid::getX1Maximum()
+double Cuboid::getX1Maximum() const
 {
     return getMaximum(minX1, maxX1);
 }
 
-double Cuboid::getX2Centroid()
+double Cuboid::getX2Centroid() const
 {
     return getCenter(minX2, maxX2);
 }
 
-double Cuboid::getX2Minimum()
+double Cuboid::getX2Minimum() const
 {
     return getMinimum(minX2, maxX2);
 }	
 
-double Cuboid::getX2Maximum()
+double Cuboid::getX2Maximum() const
 {
     return getMaximum(minX2, maxX2);
 }
 
-double Cuboid::getX3Centroid()
+double Cuboid::getX3Centroid() const
 {
     return getCenter(minX3, maxX3);
 }
 
-double Cuboid::getX3Minimum()
+double Cuboid::getX3Minimum() const
 {	
     return getMinimum(minX3, maxX3);
 }	
 
-double Cuboid::getX3Maximum()
+double Cuboid::getX3Maximum() const
 {
     return getMaximum(minX3, maxX3);
 }
diff --git a/src/gpu/GridGenerator/geometries/Cuboid/Cuboid.h b/src/gpu/GridGenerator/geometries/Cuboid/Cuboid.h
index 152a8dc6b..35d5d04c7 100644
--- a/src/gpu/GridGenerator/geometries/Cuboid/Cuboid.h
+++ b/src/gpu/GridGenerator/geometries/Cuboid/Cuboid.h
@@ -44,15 +44,15 @@ public:
 
     SPtr<Object> clone() const override;
 
-    double getX1Centroid() override;
-    double getX1Minimum() override;
-    double getX1Maximum() override;
-    double getX2Centroid() override;
-    double getX2Minimum() override;
-    double getX2Maximum() override;
-    double getX3Centroid() override;
-    double getX3Minimum() override;
-    double getX3Maximum() override;
+    double getX1Centroid() const override;
+    double getX1Minimum() const override;
+    double getX1Maximum() const override;
+    double getX2Centroid() const override;
+    double getX2Minimum() const override;
+    double getX2Maximum() const override;
+    double getX3Centroid() const override;
+    double getX3Minimum() const override;
+    double getX3Maximum() const override;
 
     void changeSizeByDelta(double delta) override;
 
diff --git a/src/gpu/GridGenerator/geometries/Cylinder/Cylinder.cpp b/src/gpu/GridGenerator/geometries/Cylinder/Cylinder.cpp
index 40d21f4f9..a82e8e01f 100644
--- a/src/gpu/GridGenerator/geometries/Cylinder/Cylinder.cpp
+++ b/src/gpu/GridGenerator/geometries/Cylinder/Cylinder.cpp
@@ -1,12 +1,12 @@
 #include "Cylinder.h"
 #include <numeric>
 
-Cylinder::Cylinder(double centerX, double centerY, double centerZ, double radius, double height, RotationalAxis axis)
-    : center({ centerX, centerY, centerZ }), radius(radius), height(height), rotationalAxis(axis)
+Cylinder::Cylinder(double centerX, double centerY, double centerZ, double radius, double height, Axis rotationalAxis)
+    : center({ centerX, centerY, centerZ }), radius(radius), height(height), rotationalAxis(rotationalAxis)
 {
 }
 
-Cylinder::Cylinder(std::array<double, 3> center, double radius, double height, RotationalAxis axis)
+Cylinder::Cylinder(std::array<double, 3> center, double radius, double height, Axis axis)
     : center(center), radius(radius), height(height), rotationalAxis(axis)
 {
 }
@@ -16,66 +16,66 @@ SPtr<Object> Cylinder::clone() const
     return std::make_shared<Cylinder>(center, radius, height, rotationalAxis);
 }
 
-double Cylinder::getCentroidCoordinate(RotationalAxis coordinateDirection) const
+double Cylinder::getCentroidCoordinate(Axis coordinateDirection) const
 {
     return center.at(coordinateDirection);
 }
 
-double Cylinder::getMinimunCoordinate(RotationalAxis coordinateDirection) const
+double Cylinder::getMinimunCoordinate(Axis coordinateDirection) const
 {
     const auto unitVector = unitVectors.at(rotationalAxis);
     return center.at(coordinateDirection) - 0.5 * height * unitVector.at(coordinateDirection) +
            radius * (unitVector.at(coordinateDirection) - 1);
 }
 
-double Cylinder::getMaximumCoordinate(RotationalAxis coordinateDirection) const
+double Cylinder::getMaximumCoordinate(Axis coordinateDirection) const
 {
     const auto unitVector = unitVectors.at(rotationalAxis);
     return center.at(coordinateDirection) + 0.5 * height * unitVector.at(coordinateDirection) -
            radius * (unitVector.at(coordinateDirection) - 1);
 }
 
-double Cylinder::getX1Centroid()
+double Cylinder::getX1Centroid() const
 {
     return getCentroidCoordinate(x);
 }
 
-double Cylinder::getX1Minimum()
+double Cylinder::getX1Minimum() const
 {
     return getMinimunCoordinate(x);
 }
 
-double Cylinder::getX1Maximum()
+double Cylinder::getX1Maximum() const
 {
     return getMaximumCoordinate(x);
 }
 
-double Cylinder::getX2Centroid()
+double Cylinder::getX2Centroid() const
 {
     return getCentroidCoordinate(y);
 }
 
-double Cylinder::getX2Minimum()
+double Cylinder::getX2Minimum() const
 {
     return getMinimunCoordinate(y);
 }
 
-double Cylinder::getX2Maximum()
+double Cylinder::getX2Maximum() const
 {
     return getMaximumCoordinate(y);
 }
 
-double Cylinder::getX3Centroid()
+double Cylinder::getX3Centroid() const
 {
     return getCentroidCoordinate(z);
 }
 
-double Cylinder::getX3Minimum()
+double Cylinder::getX3Minimum() const
 {
     return getMinimunCoordinate(z);
 }
 
-double Cylinder::getX3Maximum()
+double Cylinder::getX3Maximum() const
 {
     return getMaximumCoordinate(z);
 }
@@ -90,7 +90,7 @@ double Cylinder::getHeight() const
     return height;
 }
 
-Cylinder::RotationalAxis Cylinder::getRotationalAxis() const
+Axis Cylinder::getRotationalAxis() const
 {
     return rotationalAxis;
 }
diff --git a/src/gpu/GridGenerator/geometries/Cylinder/Cylinder.h b/src/gpu/GridGenerator/geometries/Cylinder/Cylinder.h
index 1a3439aae..7a42ec86f 100644
--- a/src/gpu/GridGenerator/geometries/Cylinder/Cylinder.h
+++ b/src/gpu/GridGenerator/geometries/Cylinder/Cylinder.h
@@ -35,54 +35,48 @@
 #ifndef CYLINDER_H
 #define CYLINDER_H
 
-#include "geometries/Object.h"
-#include <basics/geometry3d/GbCylinder3D.h>
 #include <map>
 
+#include <basics/geometry3d/GbCylinder3D.h>
+#include <basics/geometry3d/Axis.h>
+
+#include "geometries/Object.h"
+
 class GRIDGENERATOR_EXPORT Cylinder : public Object
 {
 public:
-    enum RotationalAxis {
-        x = 0,
-        y = 1,
-        z = 2,
-    };
 
-    Cylinder(double centerX, double centerY, double centerZ, double radius, double height, RotationalAxis axis);
-    Cylinder(std::array<double, 3> center, double radius, double height, RotationalAxis axis);
+    Cylinder(double centerX, double centerY, double centerZ, double radius, double height, Axis rotationalAxis);
+    Cylinder(std::array<double, 3> center, double radius, double height, Axis axis);
 
     SPtr<Object> clone() const override;
 
-    double getX1Centroid() override;
-    double getX1Minimum() override;
-    double getX1Maximum() override;
-    double getX2Centroid() override;
-    double getX2Minimum() override;
-    double getX2Maximum() override;
-    double getX3Centroid() override;
-    double getX3Minimum() override;
-    double getX3Maximum() override;
+    double getX1Centroid() const override;
+    double getX1Minimum() const override;
+    double getX1Maximum() const override;
+    double getX2Centroid() const override;
+    double getX2Minimum() const override;
+    double getX2Maximum() const override;
+    double getX3Centroid() const override;
+    double getX3Minimum() const override;
+    double getX3Maximum() const override;
 
     double getRadius() const;
     double getHeight() const;
-    RotationalAxis getRotationalAxis() const;
+    Axis getRotationalAxis() const;
 
     bool isPointInObject(const double &x1, const double &x2, const double &x3, const double &minOffset,
                          const double &maxOffset) override;
     void changeSizeByDelta(double delta) override;
 
 private:
-    double getCentroidCoordinate(RotationalAxis coordinateDirection) const;
-    double getMinimunCoordinate(RotationalAxis coordinateDirection) const;
-    double getMaximumCoordinate(RotationalAxis coordinateDirection) const;
+    double getCentroidCoordinate(Axis coordinateDirection) const;
+    double getMinimunCoordinate(Axis coordinateDirection) const;
+    double getMaximumCoordinate(Axis coordinateDirection) const;
 
     bool isInCircle(double delta1, double delta2, double offset) const;
 
-    const std::map<RotationalAxis, std::array<double, 3>> unitVectors{ { x, { 1, 0, 0 } },
-                                                                       { y, { 0, 1, 0 } },
-                                                                       { z, { 0, 0, 1 } } };
-
-    RotationalAxis rotationalAxis;
+    Axis rotationalAxis;
     const std::array<double, 3> center;
 
     double radius;
diff --git a/src/gpu/GridGenerator/geometries/Cylinder/CylinderTest.cpp b/src/gpu/GridGenerator/geometries/Cylinder/CylinderTest.cpp
index cc636a94a..1f23df544 100644
--- a/src/gpu/GridGenerator/geometries/Cylinder/CylinderTest.cpp
+++ b/src/gpu/GridGenerator/geometries/Cylinder/CylinderTest.cpp
@@ -36,7 +36,7 @@ public:
     std::array<double, 3> center = { 0.1, 0.2, 0.3 };
     double radius = 2.0;
     double height = 8.0;
-    Cylinder cylinder = Cylinder(center[0], center[1], center[2], radius, height, Cylinder::RotationalAxis::x);
+    Cylinder cylinder = Cylinder(center[0], center[1], center[2], radius, height, Axis::x);
 };
 
 TEST_F(CylinderTestAxisNormalToX, getCentroid)
@@ -97,7 +97,7 @@ protected:
     std::array<double, 3> center = { 0.1, 0.2, 0.3 };
     double radius = 2.0;
     double height = 8.0;
-    Cylinder cylinder = Cylinder({ center[0], center[1], center[2] }, radius, height, Cylinder::RotationalAxis::y);
+    Cylinder cylinder = Cylinder({ center[0], center[1], center[2] }, radius, height, Axis::y);
 };
 
 TEST_F(CylinderTestAxisNormalToY, getCentroid)
@@ -158,7 +158,7 @@ protected:
     std::array<double, 3> center = { 0.1, 0.2, 0.3 };
     double radius = 2.0;
     double height = 8.0;
-    Cylinder cylinder = Cylinder({ center[0], center[1], center[2] }, radius, height, Cylinder::RotationalAxis::z);
+    Cylinder cylinder = Cylinder({ center[0], center[1], center[2] }, radius, height, Axis::z);
 };
 
 TEST_F(CylinderTestAxisNormalToZ, getCentroid)
diff --git a/src/gpu/GridGenerator/geometries/Object.h b/src/gpu/GridGenerator/geometries/Object.h
index 4448a45ae..116bb8fc2 100644
--- a/src/gpu/GridGenerator/geometries/Object.h
+++ b/src/gpu/GridGenerator/geometries/Object.h
@@ -46,17 +46,17 @@ public:
     virtual ~Object() = default;
     virtual SPtr<Object> clone() const = 0;
 
-    virtual double getX1Centroid() = 0;
-    virtual double getX1Minimum()  = 0;
-    virtual double getX1Maximum()  = 0;
+    virtual double getX1Centroid() const = 0;
+    virtual double getX1Minimum() const  = 0;
+    virtual double getX1Maximum() const  = 0;
 
-    virtual double getX2Centroid() = 0;
-    virtual double getX2Minimum()  = 0;
-    virtual double getX2Maximum()  = 0;
+    virtual double getX2Centroid() const = 0;
+    virtual double getX2Minimum() const  = 0;
+    virtual double getX2Maximum() const  = 0;
 
-    virtual double getX3Centroid() = 0;
-    virtual double getX3Minimum()  = 0;
-    virtual double getX3Maximum()  = 0;
+    virtual double getX3Centroid() const = 0;
+    virtual double getX3Minimum() const  = 0;
+    virtual double getX3Maximum() const  = 0;
 
 
     virtual void changeSizeByDelta(double delta) = 0;
diff --git a/src/gpu/GridGenerator/geometries/Sphere/Sphere.cpp b/src/gpu/GridGenerator/geometries/Sphere/Sphere.cpp
index 212ecc900..2a54c710c 100644
--- a/src/gpu/GridGenerator/geometries/Sphere/Sphere.cpp
+++ b/src/gpu/GridGenerator/geometries/Sphere/Sphere.cpp
@@ -54,47 +54,47 @@ SPtr<Object> Sphere::clone() const
     return std::make_shared<Sphere>(centerX, centerY, centerZ, radius);
 }
 
-double Sphere::getX1Centroid()
+double Sphere::getX1Centroid() const
 {
     return centerX;
 }
 
-double Sphere::getX1Minimum()
+double Sphere::getX1Minimum() const
 {
     return centerX - radius;
 }
 
-double Sphere::getX1Maximum()
+double Sphere::getX1Maximum() const
 {
     return centerX + radius;
 }
 
-double Sphere::getX2Centroid()
+double Sphere::getX2Centroid() const
 {
     return centerY;
 }
 
-double Sphere::getX2Minimum()
+double Sphere::getX2Minimum() const
 {
     return centerY - radius;
 }
 
-double Sphere::getX2Maximum()
+double Sphere::getX2Maximum() const
 {
     return centerY + radius;
 }
 
-double Sphere::getX3Centroid()
+double Sphere::getX3Centroid() const
 {
     return centerZ;
 }
 
-double Sphere::getX3Minimum()
+double Sphere::getX3Minimum() const
 {
     return centerZ - radius;
 }
 
-double Sphere::getX3Maximum()
+double Sphere::getX3Maximum() const
 {
     return centerZ + radius;
 }
diff --git a/src/gpu/GridGenerator/geometries/Sphere/Sphere.h b/src/gpu/GridGenerator/geometries/Sphere/Sphere.h
index 99d055ec1..92f600d20 100644
--- a/src/gpu/GridGenerator/geometries/Sphere/Sphere.h
+++ b/src/gpu/GridGenerator/geometries/Sphere/Sphere.h
@@ -46,15 +46,15 @@ public:
 
     SPtr<Object> clone() const override;
 
-    double getX1Centroid() override;
-    double getX1Minimum() override;
-    double getX1Maximum() override;
-    double getX2Centroid() override;
-    double getX2Minimum() override;
-    double getX2Maximum() override;
-    double getX3Centroid() override;
-    double getX3Minimum() override;
-    double getX3Maximum() override;
+    double getX1Centroid() const override;
+    double getX1Minimum() const override;
+    double getX1Maximum() const override;
+    double getX2Centroid() const override;
+    double getX2Minimum() const override;
+    double getX2Maximum() const override;
+    double getX3Centroid() const override;
+    double getX3Minimum() const override;
+    double getX3Maximum() const override;
 
     bool isPointInObject(const double& x1, const double& x2, const double& x3, const double& minOffset, const double& maxOffset) override;
 
diff --git a/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMesh.h b/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMesh.h
index 5083e2adf..14ff45395 100644
--- a/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMesh.h
+++ b/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMesh.h
@@ -88,15 +88,15 @@ private:
 
 public:
     SPtr<Object> clone() const override;
-    double getX1Centroid() override { throw "Not implemented in TriangularMesh"; }
-    double getX1Minimum() override { return minmax.minX; }
-    double getX1Maximum() override { return minmax.maxX; }
-    double getX2Centroid() override { throw "Not implemented in TriangularMesh"; }
-    double getX2Minimum() override { return minmax.minY; }
-    double getX2Maximum() override { return minmax.maxY; }
-    double getX3Centroid() override { throw "Not implemented in TriangularMesh"; }
-    double getX3Minimum() override { return minmax.minZ; }
-    double getX3Maximum() override { return minmax.maxZ; }
+    double getX1Centroid() const override { throw "Not implemented in TriangularMesh"; }
+    double getX1Minimum() const override { return minmax.minX; }
+    double getX1Maximum() const override { return minmax.maxX; }
+    double getX2Centroid() const override { throw "Not implemented in TriangularMesh"; }
+    double getX2Minimum() const override { return minmax.minY; }
+    double getX2Maximum() const override { return minmax.maxY; }
+    double getX3Centroid() const override { throw "Not implemented in TriangularMesh"; }
+    double getX3Minimum() const override { return minmax.minZ; }
+    double getX3Maximum() const override { return minmax.maxZ; }
     void changeSizeByDelta(double delta) override;
     bool isPointInObject(const double& x1, const double& x2, const double& x3, const double& minOffset,
         const double& maxOffset) override {
diff --git a/src/gpu/GridGenerator/geometries/VerticalCylinder/VerticalCylinder.cpp b/src/gpu/GridGenerator/geometries/VerticalCylinder/VerticalCylinder.cpp
index 439585ff2..909651be6 100644
--- a/src/gpu/GridGenerator/geometries/VerticalCylinder/VerticalCylinder.cpp
+++ b/src/gpu/GridGenerator/geometries/VerticalCylinder/VerticalCylinder.cpp
@@ -48,47 +48,47 @@ SPtr<Object> VerticalCylinder::clone() const
     return std::make_shared<VerticalCylinder>(centerX, centerY, centerZ, radius, height);
 }
 
-double VerticalCylinder::getX1Centroid()
+double VerticalCylinder::getX1Centroid() const
 {
     return centerX;
 }
 
-double VerticalCylinder::getX1Minimum()
+double VerticalCylinder::getX1Minimum() const
 {
     return centerX - radius;
 }
 
-double VerticalCylinder::getX1Maximum()
+double VerticalCylinder::getX1Maximum() const
 {
     return centerX + radius;
 }
 
-double VerticalCylinder::getX2Centroid()
+double VerticalCylinder::getX2Centroid() const
 {
     return centerY;
 }
 
-double VerticalCylinder::getX2Minimum()
+double VerticalCylinder::getX2Minimum() const
 {
     return centerY - radius;
 }
 
-double VerticalCylinder::getX2Maximum()
+double VerticalCylinder::getX2Maximum() const
 {
     return centerY + radius;
 }
 
-double VerticalCylinder::getX3Centroid()
+double VerticalCylinder::getX3Centroid() const
 {
     return centerZ;
 }
 
-double VerticalCylinder::getX3Minimum()
+double VerticalCylinder::getX3Minimum() const
 {
     return centerZ - 0.5 * height;
 }
 
-double VerticalCylinder::getX3Maximum()
+double VerticalCylinder::getX3Maximum() const
 {
     return centerZ + 0.5 * height;
 }
diff --git a/src/gpu/GridGenerator/geometries/VerticalCylinder/VerticalCylinder.h b/src/gpu/GridGenerator/geometries/VerticalCylinder/VerticalCylinder.h
index 3ffcba063..f312df8f6 100644
--- a/src/gpu/GridGenerator/geometries/VerticalCylinder/VerticalCylinder.h
+++ b/src/gpu/GridGenerator/geometries/VerticalCylinder/VerticalCylinder.h
@@ -46,15 +46,15 @@ public:
 
     SPtr<Object> clone() const override;
 
-    double getX1Centroid() override;
-    double getX1Minimum() override;
-    double getX1Maximum() override;
-    double getX2Centroid() override;
-    double getX2Minimum() override;
-    double getX2Maximum() override;
-    double getX3Centroid() override;
-    double getX3Minimum() override;
-    double getX3Maximum() override;
+    double getX1Centroid() const override;
+    double getX1Minimum() const override;
+    double getX1Maximum() const override;
+    double getX2Centroid() const override;
+    double getX2Minimum() const override;
+    double getX2Maximum() const override;
+    double getX3Centroid() const override;
+    double getX3Minimum() const override;
+    double getX3Maximum() const override;
 
     double getRadius() const;
     double getHeight() const;
diff --git a/src/gpu/GridGenerator/grid/GridBuilder/GridBuilder.h b/src/gpu/GridGenerator/grid/GridBuilder/GridBuilder.h
index f3d850384..22bedec2b 100644
--- a/src/gpu/GridGenerator/grid/GridBuilder/GridBuilder.h
+++ b/src/gpu/GridGenerator/grid/GridBuilder/GridBuilder.h
@@ -160,6 +160,8 @@ public:
     virtual uint getNumberOfFluidNodesAllFeatures(uint level) const = 0;
     virtual void getFluidNodeIndicesAllFeatures(uint *fluidNodeIndicesAllFeatures, int level) const = 0;
 
+    virtual bool getUseRotatingGrid() const = 0;
+
 
 };
 
diff --git a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp
index 87ec7bab0..2ebba61fc 100644
--- a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp
+++ b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp
@@ -856,3 +856,8 @@ void LevelGridBuilder::getFluidNodeIndicesAllFeatures(uint *fluidNodeIndicesAllF
 {
     grids[level]->getFluidNodeIndicesAllFeatures(fluidNodeIndicesAllFeatures);
 }
+
+bool LevelGridBuilder::getUseRotatingGrid() const
+{
+    return useGridRotation;
+}
\ No newline at end of file
diff --git a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h
index fddcc7f79..6ac2fb61f 100644
--- a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h
+++ b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h
@@ -144,6 +144,8 @@ public:
     GRIDGENERATOR_EXPORT virtual bool hasGeometryValues() const override;
     GRIDGENERATOR_EXPORT virtual void getGeometryValues(real *vx, real *vy, real *vz, int level) const override;
 
+    GRIDGENERATOR_EXPORT bool getUseRotatingGrid() const override;
+
     GRIDGENERATOR_EXPORT void writeArrows(std::string fileName) const override;
 
     GRIDGENERATOR_EXPORT SPtr<gg::BoundaryCondition> getBoundaryCondition( SideType side, uint level ) const override;
@@ -179,6 +181,8 @@ protected:
 
     void checkLevel(int level);
 
+    bool useGridRotation = false;
+
 protected:
     void setVelocityGeometryBoundaryCondition(real vx, real vy, real vz);
     void setNoSlipGeometryBoundaryCondition();
diff --git a/src/gpu/GridGenerator/grid/GridBuilder/MultipleGridBuilder.h b/src/gpu/GridGenerator/grid/GridBuilder/MultipleGridBuilder.h
index 548ccbe6a..57576993e 100644
--- a/src/gpu/GridGenerator/grid/GridBuilder/MultipleGridBuilder.h
+++ b/src/gpu/GridGenerator/grid/GridBuilder/MultipleGridBuilder.h
@@ -116,8 +116,6 @@ private:
 
     SPtr<BoundingBox> subDomainBox;
 
-    bool useGridRotation = false;
-
 public:
     GRIDGENERATOR_EXPORT void findCommunicationIndices(int direction);
 };
diff --git a/src/gpu/GridGenerator/grid/GridBuilder/MultipleGridBuilderTest.cpp b/src/gpu/GridGenerator/grid/GridBuilder/MultipleGridBuilderTest.cpp
index 61e6285be..16253b907 100644
--- a/src/gpu/GridGenerator/grid/GridBuilder/MultipleGridBuilderTest.cpp
+++ b/src/gpu/GridGenerator/grid/GridBuilder/MultipleGridBuilderTest.cpp
@@ -18,7 +18,7 @@ protected:
 public:
     void SetUp() override
     {
-        cylinder = std::make_shared<Cylinder>(0.0, 0.0, 0.0, 2.0, 8.0, Cylinder::RotationalAxis::x);
+        cylinder = std::make_shared<Cylinder>(0.0, 0.0, 0.0, 2.0, 8.0, Axis::x);
         gridBuilder.addCoarseGrid(-10. + 0.5 * delta, -10. + 0.5 * delta, -10. + 0.5 * delta, 10. - 0.5 * delta,
                                   10. - 0.5 * delta, 10. - 0.5 * delta, delta);
     }
-- 
GitLab