hummingbird
Solving the self-adjoint angular flux transport equation using spectral elements on Cartesian geometry
Loading...
Searching...
No Matches
gauss_legendre_trapezoid.h
Go to the documentation of this file.
1// SPDX-License-Identifier: BSD-3-Clause
2// Copyright (c) 2026, Liam Pohlmann
3
4#ifndef HUMMINGBIRD_QUADRATURE_ANGULAR_GAUSS_LEGENDRE_TRAPEZOID_H_
5#define HUMMINGBIRD_QUADRATURE_ANGULAR_GAUSS_LEGENDRE_TRAPEZOID_H_
6
10namespace hummingbird {
11
12/**
13 * @brief Class defines a Gauss-Legendre-Trapezoid rule on the unit sphere,
14 * where a Gauss-Legendre rule is used on the polar coordinate, and a trapezoid
15 * rule is used on the azimuthal.
16 *
17 */
18class GaussLegendreTrapezoid : public QuadratureBase<Ordinate> {
19 public:
20 /**
21 * @brief Construct a new Gauss Legendre Trapezoid object
22 *
23 * @param n_azim Number of azimuthal quadrature points
24 * @param n_polar Number of polar quadrature points
25 * @param polar_measured_from_x If true, each ordinate is built so its
26 * polar Gauss-Legendre root ends up in Ordinate::x() (via
27 * Ordinate(acos(root), pi/2)) instead of Ordinate::z(). Used for 1D
28 * problems along x, where x() (not z()) is the streaming/BC direction
29 * cosine every consumer (Segment, ParsedVolumetricSource, CGProblem)
30 * reads; azim is otherwise degenerate for n_azim=1, since sin(polar) is
31 * the same for a Gauss-Legendre root and its negative. Defaults to false
32 * (the standard sphere convention, needed for future 2D/3D use).
33 */
34 GaussLegendreTrapezoid(const size_t n_azim, const size_t n_polar,
35 const bool polar_measured_from_x = false);
36};
37} // namespace hummingbird
38
39#endif // HUMMINGBIRD_QUADRATURE_ANGULAR_GAUSS_LEGENDRE_TRAPEZOID_H_
GaussLegendreTrapezoid(const size_t n_azim, const size_t n_polar, const bool polar_measured_from_x=false)
Construct a new Gauss Legendre Trapezoid object.