From c5ffb9fc11997b43072ed6abaf3d83cd2cba8c5d Mon Sep 17 00:00:00 2001 From: Anna Wellmann <a.wellmann@tu-braunschweig.de> Date: Tue, 14 Nov 2023 10:40:53 +0000 Subject: [PATCH] Update app for easier debugging --- apps/gpu/RotatingGrid/RotatingGrid.cpp | 51 ++++++++++++++----- .../grid/BoundaryConditions/Side.h | 13 +++-- 2 files changed, 48 insertions(+), 16 deletions(-) diff --git a/apps/gpu/RotatingGrid/RotatingGrid.cpp b/apps/gpu/RotatingGrid/RotatingGrid.cpp index 9498bc629..3e70d42ca 100644 --- a/apps/gpu/RotatingGrid/RotatingGrid.cpp +++ b/apps/gpu/RotatingGrid/RotatingGrid.cpp @@ -86,7 +86,9 @@ int main() }; const RotationOrInterpolation rotOrInt = Rot; - const InitialRotation initialRot = PiHalf; + const InitialRotation initialRot = Pi; + const Axis rotationAxis = Axis::z; + const SideType inflowSide = SideType::PY; if (rotOrInt == Int) VF_LOG_INFO("Use interpolation."); @@ -94,7 +96,8 @@ int main() VF_LOG_INFO("Use rotation."); const std::string path("./output/RotatingGrid"); - const std::string simulationName = (rotOrInt == Int ? "RotatingGridInterpolationTest" : "RotatingGrid") + rotationStrings[initialRot]; + const std::string simulationName = (rotOrInt == Int ? "RotatingGridInterpolationTest" : "RotatingGrid") + + rotationStrings.at(initialRot) + "_inflowFrom" + sideTypeNames.at(inflowSide); const real L = 1.0; const real Re = 2000.0; @@ -123,9 +126,9 @@ int main() gridBuilder->addCoarseGrid(-0.5 * L, -0.5 * L, -0.5 * L, 0.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.25 * L, 0.75 * L, Axis::x)); + gridBuilder->addGridRotatingGrid(std::make_shared<Cylinder>(0.0, 0.0, 0.0, 0.25 * L, 0.75 * L, rotationAxis)); if (rotOrInt == Int) - gridBuilder->addGrid(std::make_shared<Cylinder>(0.2, 0.1, 0.1, 0.25 * L, 0.8 * L, Axis::x), 1); + gridBuilder->addGrid(std::make_shared<Cylinder>(0.2, 0.1, 0.1, 0.25 * L, 0.8 * L, rotationAxis), 1); GridScalingFactory scalingFactory = GridScalingFactory(); scalingFactory.setScalingFactory(GridScalingFactory::GridScaling::ScaleCompressible); @@ -165,17 +168,42 @@ int main() // gridBuilder->setSlipBoundaryCondition(SideType::MZ, 0.0, 0.0, 0.0); // gridBuilder->setSlipBoundaryCondition(SideType::PZ, 0.0, 0.0, 0.0); - gridBuilder->setNoSlipBoundaryCondition(SideType::MZ); - gridBuilder->setNoSlipBoundaryCondition(SideType::PZ); - // gridBuilder->setVelocityBoundaryCondition(SideType::PX, -velocityLB, 0.0, 0.0); // gridBuilder->setPressureBoundaryCondition(SideType::MX, 0.0); - // rot around x-Axis + switch (inflowSide) { + case SideType::MX: + gridBuilder->setVelocityBoundaryCondition(SideType::MX, velocityLB, 0.0, 0.0); + gridBuilder->setPressureBoundaryCondition(SideType::PX, 0.0); + break; + case SideType::PX: + gridBuilder->setPressureBoundaryCondition(SideType::MX, 0.0); + gridBuilder->setVelocityBoundaryCondition(SideType::PX, -velocityLB, 0.0, 0.0); + break; + case SideType::MY: + gridBuilder->setVelocityBoundaryCondition(SideType::MY, 0.0, velocityLB, 0.0); + gridBuilder->setPressureBoundaryCondition(SideType::PY, 0.0); + break; + case SideType::PY: + gridBuilder->setPressureBoundaryCondition(SideType::MY, 0.0); + gridBuilder->setVelocityBoundaryCondition(SideType::PY, 0.0, -velocityLB, 0.0); + break; + case SideType::MZ: + gridBuilder->setVelocityBoundaryCondition(SideType::MZ, 0.0, 0.0, velocityLB); + gridBuilder->setPressureBoundaryCondition(SideType::PZ, 0.0); + break; + case SideType::PZ: + gridBuilder->setPressureBoundaryCondition(SideType::MZ, 0.0); + gridBuilder->setVelocityBoundaryCondition(SideType::PZ, 0.0, 0.0, -velocityLB); + break; + } + gridBuilder->setNoSlipBoundaryCondition(SideType::MX); gridBuilder->setNoSlipBoundaryCondition(SideType::PX); - gridBuilder->setVelocityBoundaryCondition(SideType::PY, 0.0, -velocityLB, 0.0); - gridBuilder->setPressureBoundaryCondition(SideType::MY, 0.0); + gridBuilder->setNoSlipBoundaryCondition(SideType::MY); + gridBuilder->setNoSlipBoundaryCondition(SideType::PY); + gridBuilder->setNoSlipBoundaryCondition(SideType::MZ); + gridBuilder->setNoSlipBoundaryCondition(SideType::PZ); BoundaryConditionFactory bcFactory; @@ -196,8 +224,7 @@ int main() }; if (isCoordinateInPressPoint(0) && isCoordinateInPressPoint(1) && isCoordinateInPressPoint(2)) return rhoPressPoint; - else - return (real)0.0; + return (real)0.0; }; // para->setInitialCondition([&](real coordX, real coordY, real coordZ, real &rho, real &vx, real &vy, real &vz) { diff --git a/src/gpu/GridGenerator/grid/BoundaryConditions/Side.h b/src/gpu/GridGenerator/grid/BoundaryConditions/Side.h index c4232335a..7c49bf5f5 100644 --- a/src/gpu/GridGenerator/grid/BoundaryConditions/Side.h +++ b/src/gpu/GridGenerator/grid/BoundaryConditions/Side.h @@ -58,10 +58,15 @@ class BoundaryCondition; class Side; -enum class SideType -{ - MX, PX, MY, PY, MZ, PZ, GEOMETRY -}; +enum class SideType { MX, PX, MY, PY, MZ, PZ, GEOMETRY }; + +const std::map<SideType, std::string> sideTypeNames = { { SideType::MX, "MX" }, + { SideType::PX, "PX" }, + { SideType::MY, "MY" }, + { SideType::PY, "PY" }, + { SideType::MZ, "MZ" }, + { SideType::PZ, "PZ" }, + { SideType::GEOMETRY, "Geometry" } }; class Side { -- GitLab