Skip to content
Snippets Groups Projects
Commit b157da28 authored by Anna Wellmann's avatar Anna Wellmann
Browse files

Rename principal axis to rotational axis

parent 6fff9ece
No related branches found
No related tags found
1 merge request!307[GPU] Add a cylinder geometry
......@@ -109,8 +109,8 @@ int main()
gridBuilder->addCoarseGrid(-1.5 * L, -0.5 * L, -0.5 * L, 1.5 * L, 0.5 * L, 0.5 * L, dx);
if (rotOrInt == Rot) gridBuilder->addGridRotatingGrid(std::make_shared<Cylinder>(0.0, 0.0, 0.0, 0.3 * L, 1. * L, Cylinder::PrincipalAxis::x));
if (rotOrInt == Int) gridBuilder->addGrid(std::make_shared<Cylinder>(0.0, 0.0, 0.0, 0.3 * L, 1. * L, Cylinder::PrincipalAxis::x), 1);
if (rotOrInt == Rot) gridBuilder->addGridRotatingGrid(std::make_shared<Cylinder>(0.0, 0.0, 0.0, 0.3 * L, 1. * L, Cylinder::RotationalAxis::x));
if (rotOrInt == Int) gridBuilder->addGrid(std::make_shared<Cylinder>(0.0, 0.0, 0.0, 0.3 * L, 1. * L, Cylinder::RotationalAxis::x), 1);
GridScalingFactory scalingFactory = GridScalingFactory();
scalingFactory.setScalingFactory(GridScalingFactory::GridScaling::ScaleCompressible);
......
#include "Cylinder.h"
#include <numeric>
Cylinder::Cylinder(double centerX, double centerY, double centerZ, double radius, double height, PrincipalAxis axis)
: center({ centerX, centerY, centerZ }), radius(radius), height(height), principalAxis(axis)
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(std::array<double, 3> center, double radius, double height, PrincipalAxis axis)
: center(center), radius(radius), height(height), principalAxis(axis)
Cylinder::Cylinder(std::array<double, 3> center, double radius, double height, RotationalAxis axis)
: center(center), radius(radius), height(height), rotationalAxis(axis)
{
}
SPtr<Object> Cylinder::clone() const
{
return std::make_shared<Cylinder>(center, radius, height, principalAxis);
return std::make_shared<Cylinder>(center, radius, height, rotationalAxis);
}
double Cylinder::getCentroidCoordinate(PrincipalAxis coordinateDirection) const
double Cylinder::getCentroidCoordinate(RotationalAxis coordinateDirection) const
{
return center.at(coordinateDirection);
}
double Cylinder::getMinimunCoordinate(PrincipalAxis coordinateDirection) const
double Cylinder::getMinimunCoordinate(RotationalAxis coordinateDirection) const
{
const auto unitVector = unitVectors.at(principalAxis);
const auto unitVector = unitVectors.at(rotationalAxis);
return center.at(coordinateDirection) - 0.5 * height * unitVector.at(coordinateDirection) +
radius * (unitVector.at(coordinateDirection) - 1);
}
double Cylinder::getMaximumCoordinate(PrincipalAxis coordinateDirection) const
double Cylinder::getMaximumCoordinate(RotationalAxis coordinateDirection) const
{
const auto unitVector = unitVectors.at(principalAxis);
const auto unitVector = unitVectors.at(rotationalAxis);
return center.at(coordinateDirection) + 0.5 * height * unitVector.at(coordinateDirection) -
radius * (unitVector.at(coordinateDirection) - 1);
}
......@@ -90,9 +90,9 @@ double Cylinder::getHeight() const
return height;
}
Cylinder::PrincipalAxis Cylinder::getPrincipalAxis() const
Cylinder::RotationalAxis Cylinder::getRotationalAxis() const
{
return principalAxis;
return rotationalAxis;
}
bool Cylinder::isInCircle(double delta1, double delta2, double offset) const
......@@ -110,7 +110,7 @@ bool Cylinder::isPointInObject(const double &x1, const double &x2, const double
const double deltaX2 = x2 - center.at(y);
const double deltaX3 = x3 - center.at(z);
switch (principalAxis) {
switch (rotationalAxis) {
case x:
if (deltaX1 > 0.5 * height || deltaX1 < -0.5 * height) return false;
return isInCircle(deltaX2, deltaX3, offset);
......@@ -122,7 +122,7 @@ bool Cylinder::isPointInObject(const double &x1, const double &x2, const double
return isInCircle(deltaX1, deltaX2, offset);
}
VF_LOG_CRITICAL("Unknown principal axis in Cylinder.");
VF_LOG_CRITICAL("Unknown rotational axis in Cylinder.");
return false;
}
......
......@@ -42,14 +42,14 @@
class GRIDGENERATOR_EXPORT Cylinder : public Object
{
public:
enum PrincipalAxis {
enum RotationalAxis {
x = 0,
y = 1,
z = 2,
};
Cylinder(double centerX, double centerY, double centerZ, double radius, double height, PrincipalAxis axis);
Cylinder(std::array<double, 3> center, double radius, double height, PrincipalAxis axis);
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);
SPtr<Object> clone() const override;
......@@ -65,24 +65,24 @@ public:
double getRadius() const;
double getHeight() const;
PrincipalAxis getPrincipalAxis() const;
RotationalAxis 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(PrincipalAxis coordinateDirection) const;
double getMinimunCoordinate(PrincipalAxis coordinateDirection) const;
double getMaximumCoordinate(PrincipalAxis coordinateDirection) const;
double getCentroidCoordinate(RotationalAxis coordinateDirection) const;
double getMinimunCoordinate(RotationalAxis coordinateDirection) const;
double getMaximumCoordinate(RotationalAxis coordinateDirection) const;
bool isInCircle(double delta1, double delta2, double offset) const;
const std::map<PrincipalAxis, std::array<double, 3>> unitVectors{ { x, { 1, 0, 0 } },
{ y, { 0, 1, 0 } },
{ z, { 0, 0, 1 } } };
const std::map<RotationalAxis, std::array<double, 3>> unitVectors{ { x, { 1, 0, 0 } },
{ y, { 0, 1, 0 } },
{ z, { 0, 0, 1 } } };
PrincipalAxis principalAxis;
RotationalAxis rotationalAxis;
const std::array<double, 3> center;
double radius;
......
......@@ -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::PrincipalAxis::x);
Cylinder cylinder = Cylinder(center[0], center[1], center[2], radius, height, Cylinder::RotationalAxis::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::PrincipalAxis::y);
Cylinder cylinder = Cylinder({ center[0], center[1], center[2] }, radius, height, Cylinder::RotationalAxis::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::PrincipalAxis::z);
Cylinder cylinder = Cylinder({ center[0], center[1], center[2] }, radius, height, Cylinder::RotationalAxis::z);
};
TEST_F(CylinderTestAxisNormalToZ, getCentroid)
......
......@@ -248,7 +248,7 @@ SPtr<Grid> MultipleGridBuilder::makeRotatingGrid(SPtr<Cylinder> cylinder, uint l
// #TODO: change next line to use staggering
cylinder = std::make_shared<Cylinder>(cylinder->getX1Centroid(), cylinder->getX2Centroid(), cylinder->getX3Centroid(),
cylinder->getRadius() + 6.0 * delta, cylinder->getHeight() + 6.0 * delta, cylinder->getPrincipalAxis());
cylinder->getRadius() + 6.0 * delta, cylinder->getHeight() + 6.0 * delta, cylinder->getRotationalAxis());
SPtr<Grid> newGrid = this->makeGrid(cylinder, staggeredCoordinates[0],
staggeredCoordinates[1],
......
......@@ -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::PrincipalAxis::x);
cylinder = std::make_shared<Cylinder>(0.0, 0.0, 0.0, 2.0, 8.0, Cylinder::RotationalAxis::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);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment