|
AXOM
Axom provides a robust, flexible software infrastructure for the development of multi-physics applications and computational tools.
|
Preprocesses NURBSPatch 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, 3 > |
| using | GWNMoments = axom::quest::GWNMomentData< double, 3, ORDER > |
| using | PatchType = axom::primal::NURBSPatch< double, 3 > |
| using | PatchArrayType = axom::Array< PatchType > |
| using | NURBSCacheManager = typename axom::primal::nurbs_cache_3d_traits< ExecSpace >::type |
Public Member Functions | |
| NURBSPatchGWNQuery ()=default | |
| void | preprocess (const PatchArrayType &input_patches, bool use_direct_eval=false, bool use_memoization=true) |
| Process input patches, optionally building a BVH. More... | |
| void | query (mfem::DataCollection &dc, const primal::WindingTolerances &tol, const double slice_z=0.0) |
| 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 | setSubdivisionMaxNumPatches (int subdivision_max_patches) |
Preprocesses NURBSPatch geometry for GWN evaluation, and performs the calculation on the DOFs of an input MFEM mesh.
| ExecSpace | The execution space for the algorithm. |
| ORDER | If agglomeration is used, this is the order of the Taylor expansion. |
Possible evaluation modes are use_direct_eval : If true, evaluation is done patch-by-patch. If false, evaluation is sped up with agglomeration via Taylor-expansion use_memoization : Caches and re-uses trimming curve quadrature data for patch evaluation
| using axom::quest::NURBSPatchGWNQuery< ExecSpace, ORDER >::BoxType = axom::primal::BoundingBox<double, 3> |
| using axom::quest::NURBSPatchGWNQuery< ExecSpace, ORDER >::GWNMoments = axom::quest::GWNMomentData<double, 3, ORDER> |
| using axom::quest::NURBSPatchGWNQuery< ExecSpace, ORDER >::PatchType = axom::primal::NURBSPatch<double, 3> |
| using axom::quest::NURBSPatchGWNQuery< ExecSpace, ORDER >::PatchArrayType = axom::Array<PatchType> |
| using axom::quest::NURBSPatchGWNQuery< ExecSpace, ORDER >::NURBSCacheManager = typename axom::primal::nurbs_cache_3d_traits<ExecSpace>::type |
|
default |
|
inline |
|
inline |
|
inline |
|
inline |
Process input patches, optionally building a BVH.
Processing involves "cleaning" input surfaces for more robust GWN evaluation by
| [in] | input_patches | A view to the input trimmed NURBS surfaces |
| [in] | use_direct_eval | If false, use accelerated agglomeration algorithm via BVH |
| [in] | use_memoization | If true, allocate a per-thread cache for each patch |
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_patches(), and axom::Array< T, DIM, SPACE, StoragePolicy >::view().
|
inline |
Evaluate the GWN for a query grid at the DOFs of the dc query mesh.
| [in] | dc | A query grid to be evaluated at the DOFs |
| [in] | tol | A collection of possible tolerances for GWN evaluation |
| [in] | slice_z | If the dc mesh is 2D, the GWN will be evaluated on a slice parallel to the x-y plane with this offset on the z-axis |
References AXOM_ANNOTATE_SCOPE, axom::primal::WindingTolerances::disk_size, axom::primal::WindingTolerances::edge_tol, axom::primal::WindingTolerances::EPS, axom::quest::fast_approximate_winding_number(), axom::spin::BVH< NDIMS, ExecSpace, FloatType, BVHImpl >::getTraverser(), axom::spin::BVH< NDIMS, ExecSpace, FloatType, BVHImpl >::isInitialized(), axom::primal::WindingTolerances::ls_tol, axom::primal::WindingTolerances::quad_tol, SLIC_WARNING, and axom::primal::winding_number().