24#ifndef DUMUX_DISCRETIZATION_ROTATION_SYMMETRIC_SUBCONTROLVOLUMEFACE_HH
25#define DUMUX_DISCRETIZATION_ROTATION_SYMMETRIC_SUBCONTROLVOLUMEFACE_HH
38template<
class SubControlVolumeFace, RotationPolicy rotationPolicy>
47template<
class SubControlVolumeFace>
49:
public SubControlVolumeFace
51 using Scalar =
typename SubControlVolumeFace::Traits::Scalar;
52 static_assert(SubControlVolumeFace::Traits::Geometry::mydimension == 0,
"Rotation symmetric scvf with disc policy only works with 1d grids!");
53 static_assert(SubControlVolumeFace::Traits::Geometry::coorddimension == 1,
"Rotation symmetric scvf with disc policy only works with 1d grids!");
56 using SubControlVolumeFace::SubControlVolumeFace;
61 const auto radius = this->corner(0)[0];
62 return 2.0*M_PI*radius;
72template<
class SubControlVolumeFace>
74:
public SubControlVolumeFace
76 using Scalar =
typename SubControlVolumeFace::Traits::Scalar;
77 static_assert(SubControlVolumeFace::Traits::Geometry::mydimension == 0,
"Rotation symmetric scvf with ball policy only works with 1d grids!");
78 static_assert(SubControlVolumeFace::Traits::Geometry::coorddimension == 1,
"Rotation symmetric scvf with ball policy only works with 1d grids!");
81 using SubControlVolumeFace::SubControlVolumeFace;
86 const auto radius = this->corner(0)[0];
87 return 4.0*M_PI*radius*radius;
98template<
class SubControlVolumeFace>
100:
public SubControlVolumeFace
102 using Scalar =
typename SubControlVolumeFace::Traits::Scalar;
103 static_assert(SubControlVolumeFace::Traits::Geometry::mydimension == 1,
"Rotation symmetric scvf with toroid policy only works with 2d grids!");
104 static_assert(SubControlVolumeFace::Traits::Geometry::coorddimension == 2,
"Rotation symmetric scvf with toroid policy only works with 2d grids!");
107 using SubControlVolumeFace::SubControlVolumeFace;
112 const auto radius = this->center()[0];
113 return SubControlVolumeFace::area()*2.0*M_PI*radius;
Rotation policy for defining rotational symmetric grid geometries.
RotationPolicy
Rotation policies.
Definition: rotationpolicy.hh:37
Wrapper to make a sub control volume face rotation symmetric.
Definition: rotationsymmetricscvf.hh:39
Scalar area() const
The area of the sub control volume face (circumference of circle)
Definition: rotationsymmetricscvf.hh:59
Scalar area() const
The area of the sub control volume face (surface of sphere)
Definition: rotationsymmetricscvf.hh:84
Scalar area() const
The area of the sub control volume face (Guldinus theorem)
Definition: rotationsymmetricscvf.hh:110