AXOM
Axom provides a robust, flexible software infrastructure for the development of multi-physics applications and computational tools.
axom::quest::NURBSCurveGWNQuery< ExecSpace, ORDER > Class Template Reference

Preprocesses NURBSCurve geometry for GWN evaluation, and performs the calculation on the DOFs of an input MFEM mesh. More...

#include </home/docs/checkouts/readthedocs.org/user_builds/axom/checkouts/develop/src/axom/quest/GWNMethods.hpp>

Public Types

using BoxType = axom::primal::BoundingBox< double, 2 >
 
using GWNMoments = axom::quest::GWNMomentData< double, 2, ORDER >
 
using CurveType = axom::primal::NURBSCurve< double, 2 >
 
using CurveArrayType = axom::Array< CurveType >
 
using NURBSCacheManager = typename axom::primal::nurbs_cache_2d_traits< ExecSpace >::type
 

Public Member Functions

 NURBSCurveGWNQuery ()=default
 
void preprocess (const CurveArrayType &input_curves, bool use_direct_eval=false, bool use_memoization=true)
 Process input curves, optionally building a BVH. More...
 
void query (mfem::DataCollection &dc, const primal::WindingTolerances &tol)
 Evaluate the GWN for a query grid at the DOFs of the dc query mesh. More...
 
Setters for misc algorithm parameters
void setSubdivisionBboxThreshold (double subdivision_bbox_threshold)
 
void setSubdivisionMaxPasses (int subdivision_max_passes)
 
void setSubdivisionMaxNumCurves (int subdivision_max_curves)
 

Detailed Description

template<typename ExecSpace, int ORDER = 2>
class axom::quest::NURBSCurveGWNQuery< ExecSpace, ORDER >

Preprocesses NURBSCurve geometry for GWN evaluation, and performs the calculation on the DOFs of an input MFEM mesh.

Template Parameters
ExecSpaceThe execution space for the algorithm.
ORDERIf agglomeration is used, this is the order of the Taylor expansion.

Possible evaluation modes are use_direct_eval : If true, evaluation is done curve-by-curve. If false, evaluation is sped up with agglomeration via Taylor-expansion use_memoization : Caches and re-uses subdivision data for curve evaluations

Member Typedef Documentation

◆ BoxType

template<typename ExecSpace , int ORDER = 2>
using axom::quest::NURBSCurveGWNQuery< ExecSpace, ORDER >::BoxType = axom::primal::BoundingBox<double, 2>

◆ GWNMoments

template<typename ExecSpace , int ORDER = 2>
using axom::quest::NURBSCurveGWNQuery< ExecSpace, ORDER >::GWNMoments = axom::quest::GWNMomentData<double, 2, ORDER>

◆ CurveType

template<typename ExecSpace , int ORDER = 2>
using axom::quest::NURBSCurveGWNQuery< ExecSpace, ORDER >::CurveType = axom::primal::NURBSCurve<double, 2>

◆ CurveArrayType

template<typename ExecSpace , int ORDER = 2>
using axom::quest::NURBSCurveGWNQuery< ExecSpace, ORDER >::CurveArrayType = axom::Array<CurveType>

◆ NURBSCacheManager

template<typename ExecSpace , int ORDER = 2>
using axom::quest::NURBSCurveGWNQuery< ExecSpace, ORDER >::NURBSCacheManager = typename axom::primal::nurbs_cache_2d_traits<ExecSpace>::type

Constructor & Destructor Documentation

◆ NURBSCurveGWNQuery()

template<typename ExecSpace , int ORDER = 2>
axom::quest::NURBSCurveGWNQuery< ExecSpace, ORDER >::NURBSCurveGWNQuery ( )
default

Member Function Documentation

◆ setSubdivisionBboxThreshold()

template<typename ExecSpace , int ORDER = 2>
void axom::quest::NURBSCurveGWNQuery< ExecSpace, ORDER >::setSubdivisionBboxThreshold ( double  subdivision_bbox_threshold)
inline

◆ setSubdivisionMaxPasses()

template<typename ExecSpace , int ORDER = 2>
void axom::quest::NURBSCurveGWNQuery< ExecSpace, ORDER >::setSubdivisionMaxPasses ( int  subdivision_max_passes)
inline

◆ setSubdivisionMaxNumCurves()

template<typename ExecSpace , int ORDER = 2>
void axom::quest::NURBSCurveGWNQuery< ExecSpace, ORDER >::setSubdivisionMaxNumCurves ( int  subdivision_max_curves)
inline

◆ preprocess()

template<typename ExecSpace , int ORDER = 2>
void axom::quest::NURBSCurveGWNQuery< ExecSpace, ORDER >::preprocess ( const CurveArrayType input_curves,
bool  use_direct_eval = false,
bool  use_memoization = true 
)
inline

Process input curves, optionally building a BVH.

Parameters
[in]input_curvesA view to the input curves
[in]use_direct_evalIf false, use accelerated agglomeration algorithm via BVH
[in]use_memoizationIf true, allocate a per-thread cache for each curve

References AXOM_ANNOTATE_SCOPE, AXOM_LAMBDA, axom::spin::BVH< NDIMS, ExecSpace, FloatType, BVHImpl >::getTraverser(), axom::spin::BVH< NDIMS, ExecSpace, FloatType, BVHImpl >::initialize(), SLIC_WARNING, axom::quest::subdivide_curves(), and axom::Array< T, DIM, SPACE, StoragePolicy >::view().

◆ query()

template<typename ExecSpace , int ORDER = 2>
void axom::quest::NURBSCurveGWNQuery< ExecSpace, ORDER >::query ( mfem::DataCollection &  dc,
const primal::WindingTolerances tol 
)
inline

The documentation for this class was generated from the following file: