16 #include "libmesh/dense_matrix.h" 17 #include "libmesh/point.h" 32 const unsigned int polar_order,
33 const unsigned int azimuthal_order,
45 static void gaussLegendre(
const unsigned int order, std::vector<Real> &
x, std::vector<Real> & w);
54 static void chebyshev(
const unsigned int order, std::vector<Real> &
x, std::vector<Real> & w);
87 const std::vector<Real> &
getWeights(
const unsigned int l)
const;
108 const std::vector<Real> &
getPolarSins(
const unsigned int l)
const;
137 std::size_t
numPolar(
const unsigned int l)
const;
190 std::vector<Real>
_w;
static void gaussLegendre(const unsigned int order, std::vector< Real > &x, std::vector< Real > &w)
Builds Gauss-Legendre quadrature on 0, 1, with weights that sum to 1.
Real muMax() const
Get the maximum mu.
std::vector< std::vector< Real > > _current_polar_sins
const unsigned int _polar_order
The polar order.
static void chebyshev(const unsigned int order, std::vector< Real > &x, std::vector< Real > &w)
Builds Chebyshev quadrature on [0, 2] with weights that sum to 2.
std::vector< Real > _phi
Quadrature phi.
std::vector< Real > _mu
Quadrature mu.
const libMesh::Point & getDirection(const unsigned int l) const
Get the direction associated with direction l.
std::size_t numDirections() const
Get the number of directions in the rotated and projected quadrature.
const Real _mu_min
The minimum mu.
std::vector< Real > _w
Quadrature combined weights.
void build()
Build the quadrature.
const std::vector< double > x
std::vector< libMesh::Point > _current_directions
The current quadrature information.
libMesh::Point _current_rotation_direction
The current rotation direction.
std::vector< std::vector< Real > > _current_weights
std::size_t numPolar(const unsigned int l) const
The number of polar directions associated with the given direction.
const unsigned int _azimuthal_order
The azimuthal order.
unsigned int polarOrder() const
Get the polar order.
static void rotationMatrix(const libMesh::Point &direction, libMesh::DenseMatrix< Real > &matrix)
Builds the rotation matrix for direction direction into matrix.
const Real _mu_max
The maximum mu.
unsigned int dim() const
Get the quadrature dimension.
bool hasDirection(const unsigned int l) const
Whether or not the angular quadrature has direction l.
Real getTotalWeight(const unsigned int l) const
Gets the total of the weights associated with the direction l.
void rotate(const libMesh::Point &rotation_direction)
Rotates the quadrature to a given direction.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static const std::string v
const std::vector< Real > & getPolarSins(const unsigned int l) const
Gets the polar sins for the direction l.
static libMesh::Point orthonormalVector(const libMesh::Point &v)
Gets the vector that is orthonormal to v.
void checkDirection(const unsigned int l) const
Throws a MooseError if the angular quadrature does not have direction l.
const std::vector< Real > & getWeights(const unsigned int l) const
Get the weights associated with the direction l.
unsigned int azimuthalOrder() const
Get the azimuthal order.
RayTracingAngularQuadrature(const unsigned int dim, const unsigned int polar_order, const unsigned int azimuthal_order, const Real mu_min, const Real mu_max)
Constructor.
const unsigned int _dim
The dimension.
const libMesh::Point & currentRotationDirection() const
Get the current rotation direction.
std::vector< Real > _polar_sin
Quadrature polar sin.
Real muMin() const
Get the minimum mu.