Mundy: Multibody Nonlocal Dynamics Version of the Day
Loading...
Searching...
No Matches
mundy::GaussTriangleEllipsoid< Scalar, Polyhedron, L, BOverA, COverA > Class Template Reference

The three-point Gauss triangle rule on the Polyhedron refined L times and stretched onto the ellipsoid with semi-axes 1, BOverA, COverA, with outward unit normals. More...

#include <GaussTriangleEllipsoid.hpp>

Public Types

using value_type = Scalar

Static Public Member Functions

static constexpr Kokkos::Array< Scalar, 3 *num_points > points ()
 The points as (x, y, z) triples: element by element in BEMLIB's order, three per element.
static constexpr Kokkos::Array< Scalar, 3 *num_points > normals ()
 The outward unit normals of the patches at the points, as (x, y, z) triples in the order of points().
static constexpr Kokkos::Array< Scalar, num_points > weights ()
 The num_points weights, in the order of points().
template<class Function>
static constexpr auto integrate (const Function &f)
 sum_i w_i f(x_i, y_i, z_i), approximating the integral of f over the ellipsoid.

Static Public Attributes

static constexpr SpherePolyhedron polyhedron = Polyhedron
static constexpr unsigned num_refinements = L
static constexpr double b_over_a = BOverA
static constexpr double c_over_a = COverA
static constexpr unsigned num_elements = static_cast<unsigned>(Polyhedron) << (2 * L)
static constexpr unsigned num_points = 3 * num_elements

Detailed Description

template<class Scalar, SpherePolyhedron Polyhedron, unsigned L, double BOverA = 1.0, double COverA = 1.0>
class mundy::GaussTriangleEllipsoid< Scalar, Polyhedron, L, BOverA, COverA >

The points, normals, and weights are correctly rounded to Scalar and computed by the compiler, so every member is a constant expression. Like TrapezoidalTorus's rule, it integrates over a unit-scale surface; scale for other sizes.

Member Typedef Documentation

◆ value_type

template<class Scalar, SpherePolyhedron Polyhedron, unsigned L, double BOverA = 1.0, double COverA = 1.0>
using mundy::GaussTriangleEllipsoid< Scalar, Polyhedron, L, BOverA, COverA >::value_type = Scalar

Member Function Documentation

◆ points()

template<class Scalar, SpherePolyhedron Polyhedron, unsigned L, double BOverA = 1.0, double COverA = 1.0>
constexpr Kokkos::Array< Scalar, 3 *num_points > mundy::GaussTriangleEllipsoid< Scalar, Polyhedron, L, BOverA, COverA >::points ( )
inlinestaticconstexpr

◆ normals()

template<class Scalar, SpherePolyhedron Polyhedron, unsigned L, double BOverA = 1.0, double COverA = 1.0>
constexpr Kokkos::Array< Scalar, 3 *num_points > mundy::GaussTriangleEllipsoid< Scalar, Polyhedron, L, BOverA, COverA >::normals ( )
inlinestaticconstexpr

◆ weights()

template<class Scalar, SpherePolyhedron Polyhedron, unsigned L, double BOverA = 1.0, double COverA = 1.0>
constexpr Kokkos::Array< Scalar, num_points > mundy::GaussTriangleEllipsoid< Scalar, Polyhedron, L, BOverA, COverA >::weights ( )
inlinestaticconstexpr

◆ integrate()

template<class Scalar, SpherePolyhedron Polyhedron, unsigned L, double BOverA = 1.0, double COverA = 1.0>
template<class Function>
constexpr auto mundy::GaussTriangleEllipsoid< Scalar, Polyhedron, L, BOverA, COverA >::integrate ( const Function & f)
inlinestaticconstexpr

Member Data Documentation

◆ polyhedron

template<class Scalar, SpherePolyhedron Polyhedron, unsigned L, double BOverA = 1.0, double COverA = 1.0>
SpherePolyhedron mundy::GaussTriangleEllipsoid< Scalar, Polyhedron, L, BOverA, COverA >::polyhedron = Polyhedron
staticconstexpr

◆ num_refinements

template<class Scalar, SpherePolyhedron Polyhedron, unsigned L, double BOverA = 1.0, double COverA = 1.0>
unsigned mundy::GaussTriangleEllipsoid< Scalar, Polyhedron, L, BOverA, COverA >::num_refinements = L
staticconstexpr

◆ b_over_a

template<class Scalar, SpherePolyhedron Polyhedron, unsigned L, double BOverA = 1.0, double COverA = 1.0>
double mundy::GaussTriangleEllipsoid< Scalar, Polyhedron, L, BOverA, COverA >::b_over_a = BOverA
staticconstexpr

◆ c_over_a

template<class Scalar, SpherePolyhedron Polyhedron, unsigned L, double BOverA = 1.0, double COverA = 1.0>
double mundy::GaussTriangleEllipsoid< Scalar, Polyhedron, L, BOverA, COverA >::c_over_a = COverA
staticconstexpr

◆ num_elements

template<class Scalar, SpherePolyhedron Polyhedron, unsigned L, double BOverA = 1.0, double COverA = 1.0>
unsigned mundy::GaussTriangleEllipsoid< Scalar, Polyhedron, L, BOverA, COverA >::num_elements = static_cast<unsigned>(Polyhedron) << (2 * L)
staticconstexpr

◆ num_points

template<class Scalar, SpherePolyhedron Polyhedron, unsigned L, double BOverA = 1.0, double COverA = 1.0>
unsigned mundy::GaussTriangleEllipsoid< Scalar, Polyhedron, L, BOverA, COverA >::num_points = 3 * num_elements
staticconstexpr