From 573457da2176a80e36213288b92d1869a85f5602 Mon Sep 17 00:00:00 2001
From: Timo Koch <timo.koch@iws.uni-stuttgart.de>
Date: Thu, 9 Jan 2020 17:09:23 +0100
Subject: [PATCH] [test][disc] Fix and improve toroid rotation symmetric grid
 geometry test

---
 .../test_rotationsymmetric_gridgeometry.cc    | 23 +++++++++++--------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/test/discretization/rotationsymmetry/test_rotationsymmetric_gridgeometry.cc b/test/discretization/rotationsymmetry/test_rotationsymmetric_gridgeometry.cc
index b400bd8ec3..e2ad89d1bb 100644
--- a/test/discretization/rotationsymmetry/test_rotationsymmetric_gridgeometry.cc
+++ b/test/discretization/rotationsymmetry/test_rotationsymmetric_gridgeometry.cc
@@ -140,8 +140,9 @@ int main (int argc, char *argv[]) try
         // make a grid
         const double innerRadius = 0.1;
         const double outerRadius = 1.0;
-        GlobalPosition lower({innerRadius, innerRadius});
-        GlobalPosition upper({outerRadius, outerRadius});
+        const double height = 0.5;
+        GlobalPosition lower({innerRadius, 0});
+        GlobalPosition upper({outerRadius, height});
         std::array<unsigned int, Grid::dimension> els({20, 20});
         std::shared_ptr<Grid> grid = Dune::StructuredGridFactory<Grid>::createCubeGrid(lower, upper, els);
 
@@ -152,9 +153,9 @@ int main (int argc, char *argv[]) try
 
         // compute the annulus area and the surface
         const auto centroidRadius = 0.5*(innerRadius + outerRadius);
-        const auto side = (outerRadius - innerRadius);
-        const double refVolume = side*side*2.0*M_PI*centroidRadius;
-        const double refSurface = 4.0*side*2.0*M_PI*centroidRadius;
+        const auto width = (outerRadius - innerRadius);
+        const double refVolume = height*width*2.0*M_PI*centroidRadius;
+        const double refSurface = (2.0*height + 2.0*width)*2.0*M_PI*centroidRadius;
         runTest(gg, refVolume, refSurface);
 
         std::cout << "Successfully tested toroid policy." << std::endl;
@@ -170,9 +171,11 @@ int main (int argc, char *argv[]) try
 
         // make a grid
         const double innerRadius = 0.0;
-        const double outerRadius = 1.0;
-        GlobalPosition lower({innerRadius, innerRadius});
-        GlobalPosition upper({outerRadius, outerRadius});
+        const double outerRadius = 1.1;
+        const double minY = -0.25;
+        const double height = 0.5;
+        GlobalPosition lower({innerRadius, minY});
+        GlobalPosition upper({outerRadius, minY+height});
         std::array<unsigned int, Grid::dimension> els({20, 20});
         std::shared_ptr<Grid> grid = Dune::StructuredGridFactory<Grid>::createCubeGrid(lower, upper, els);
 
@@ -182,8 +185,8 @@ int main (int argc, char *argv[]) try
         gg.update();
 
         // compute the annulus area and the surface
-        const double refVolume = outerRadius*M_PI*outerRadius*outerRadius;
-        const double refSurface = 2.0*M_PI*outerRadius + 2.0*M_PI*outerRadius*outerRadius;
+        const double refVolume = height*M_PI*outerRadius*outerRadius;
+        const double refSurface = 2.0*M_PI*outerRadius*height + 2.0*M_PI*outerRadius*outerRadius;
         runTest(gg, refVolume, refSurface);
 
         std::cout << "Successfully tested toroid policy for perfect cylinder." << std::endl;
-- 
GitLab