hummingbird
Solving the self-adjoint angular flux transport equation using spectral elements on Cartesian geometry
Loading...
Searching...
No Matches
angular_quadrature_set.cc
Go to the documentation of this file.
2
3#include <stdexcept>
4
5namespace hummingbird {
7 const size_t n_azim,
8 const size_t n_polar) {
9 if (n_azim < 1)
10 throw std::runtime_error(
11 "Number of azimuthal angles must be strictly positive");
12 if (n_polar < 2)
13 throw std::runtime_error("Number of polar angles must be at least 2.");
14 if (n_polar % 2 != 0)
15 throw std::runtime_error("Number of polar angles must be even.");
16
17 switch (quad_set) {
19 angular_quadrature_set_ = std::make_unique<GaussLegendreTrapezoid>(
20 1, n_polar, /*polar_measured_from_x=*/true);
21 break;
24 std::make_unique<GaussLegendreTrapezoid>(n_azim, n_polar);
25 break;
28 std::make_unique<GaussLegendreChebyshev>(n_azim, n_polar);
29 break;
30 default:
31 throw std::runtime_error(
32 "AngularQuadSet passed to AngularQuadratureSet constructor not "
33 "supported.");
34 break;
35 }
36}
37} // namespace hummingbird
AngularQuadratureSet(const AngularQuadSet quad_set, const size_t n_azim, const size_t n_polar)
Construct a new AngularQuadratureSet object, creating the concrete quadrature set matching quad_set.
std::unique_ptr< QuadratureBase< Ordinate > > angular_quadrature_set_
Concrete angular quadrature set for the chosen AngularQuadSet.
AngularQuadSet
Angular quadrature set.
Definition enums.h:79