AXOM
Axom provides a robust, flexible software infrastructure for the development of multi-physics applications and computational tools.
evaluate_integral_surface.hpp File Reference

Consists of methods that evaluate surface and volume integrals on surface patches and regions defined by collections of patches. More...

#include "axom/core.hpp"
#include "axom/config.hpp"
#include "axom/core/utilities/Utilities.hpp"
#include "axom/primal/geometry/BezierPatch.hpp"
#include "axom/primal/geometry/NURBSPatch.hpp"
#include "axom/primal/operators/detail/evaluate_integral_surface_impl.hpp"

Namespaces

 axom
 
 axom::primal
 

Functions

Evaluates scalar-field surface integrals for functions f : R^3 -> R^m
template<typename Lambda , typename T , typename LambdaRetType = std::invoke_result_t<Lambda, typename BezierPatch<T, 3>::PointType>>
LambdaRetType axom::primal::evaluate_surface_integral (const primal::BezierPatch< T, 3 > &patch, Lambda &&integrand, int npts)
 Evaluate a scalar surface integral on a single Bezier patch. More...
 
template<typename Lambda , typename T , typename LambdaRetType = std::invoke_result_t<Lambda, typename NURBSPatch<T, 3>::PointType>>
LambdaRetType axom::primal::evaluate_surface_integral (const primal::NURBSPatch< T, 3 > &patch, Lambda &&integrand, int npts_Q, int npts_P=0)
 Evaluate a scalar surface integral on a single NURBS patch. More...
 
template<typename Lambda , typename T , typename LambdaRetType = std::invoke_result_t<Lambda, typename BezierPatch<T, 3>::PointType>>
LambdaRetType axom::primal::evaluate_surface_integral (const axom::Array< BezierPatch< T, 3 >> &patches, Lambda &&integrand, int npts)
 Evaluate a scalar surface integral on a collection of Bezier patches. More...
 
template<typename Lambda , typename T , typename LambdaRetType = std::invoke_result_t<Lambda, typename NURBSPatch<T, 3>::PointType>>
LambdaRetType axom::primal::evaluate_surface_integral (const axom::Array< NURBSPatch< T, 3 >> &patches, Lambda &&integrand, int npts_Q, int npts_P=0)
 Evaluate a scalar surface integral on a collection of NURBS patches. More...
 
Evaluates scalar-field volume integrals for functions f : R^3 -> R^m
template<typename Lambda , typename T , typename LambdaRetType = std::invoke_result_t<Lambda, typename BezierPatch<T, 3>::PointType>>
LambdaRetType axom::primal::evaluate_volume_integral (const primal::BezierPatch< T, 3 > &patch, Lambda &&integrand, T lower_bound_z, int npts_uv, int npts_z=0)
 Evaluate a scalar volume-integral contribution from a single Bezier patch. More...
 
template<typename Lambda , typename T , typename LambdaRetType = std::invoke_result_t<Lambda, typename NURBSPatch<T, 3>::PointType>>
LambdaRetType axom::primal::evaluate_volume_integral (const primal::NURBSPatch< T, 3 > &patch, Lambda &&integrand, T lower_bound_z, int npts_Q, int npts_P=0, int npts_Z=0)
 Evaluate a scalar volume-integral contribution from a single NURBS patch. More...
 
template<typename Lambda , typename T , typename LambdaRetType = std::invoke_result_t<Lambda, typename BezierPatch<T, 3>::PointType>>
LambdaRetType axom::primal::evaluate_volume_integral (const axom::Array< BezierPatch< T, 3 >> &patches, Lambda &&integrand, int npts_uv, int npts_z=0)
 Evaluate a scalar volume integral over a collection of Bezier patches. More...
 
template<typename Lambda , typename T , typename LambdaRetType = std::invoke_result_t<Lambda, typename NURBSPatch<T, 3>::PointType>>
LambdaRetType axom::primal::evaluate_volume_integral (const axom::Array< NURBSPatch< T, 3 >> &patches, Lambda &&integrand, int npts_Q, int npts_P=0, int npts_Z=0)
 Evaluate a scalar volume integral over a collection of NURBS patches. More...
 

Detailed Description

Consists of methods that evaluate surface and volume integrals on surface patches and regions defined by collections of patches.

All integrals are evaluated numerically with Gauss-Legendre quadrature

3D integrals computed with "High-accuracy mesh-free quadrature for trimmed parametric surfaces and volumes" by D. Gunderman et al. https://doi.org/10.1016/j.cad.2021.103093