|
| CoreDriver (SourceMesh const &source_mesh, SourceState const &source_state, TargetMesh const &target_mesh, TargetState &target_state, Wonton::Executor_type const *executor=nullptr) |
| Constructor for the CORE remap driver. More...
|
|
| CoreDriver (const CoreDriver &)=delete |
| Copy constructor (disabled) More...
|
|
CoreDriver & | operator= (const CoreDriver &)=delete |
| Assignment operator (disabled) More...
|
|
| ~CoreDriver ()=default |
| Destructor. More...
|
|
Entity_kind | onwhat () |
| What entity kind is this defined on? More...
|
|
template<template< int, Entity_kind, class, class > class Search> |
Portage::vector< std::vector< int > > | search () |
|
template<template< Entity_kind, class, class, class, template< class, int, class, class > class, class, class > class Intersect> |
Portage::vector< std::vector< Portage::Weights_t > > | intersect_meshes (Portage::vector< std::vector< int >> const &candidates) |
|
void | set_num_tols (const double min_absolute_distance, const double min_absolute_volume) |
| Set core numerical tolerances. More...
|
|
void | set_num_tols (const NumericTolerances_t &num_tols) |
| Set all numerical tolerances. More...
|
|
template<template< Entity_kind, class, class, class, template< class, int, class, class > class, class, class > class Intersect> |
std::vector< Portage::vector< std::vector< Weights_t > > > | intersect_materials (Portage::vector< std::vector< int >> const &candidates) |
|
Portage::vector< Vector< D > > | compute_source_gradient (std::string const field_name, Limiter_type limiter_type=NOLIMITER, Boundary_Limiter_type boundary_limiter_type=BND_NOLIMITER, int material_id=0, const Part< SourceMesh, SourceState > *source_part=nullptr) const |
| Compute the gradient field of the given variable on source mesh. More...
|
|
template<typename T = double, template< int, Entity_kind, class, class, class, class, class, template< class, int, class, class > class, class, class, class > class Interpolate> |
void | interpolate_mesh_var (std::string srcvarname, std::string trgvarname, Portage::vector< std::vector< Weights_t >> const &sources_and_weights, Portage::vector< Vector< D >> *gradients=nullptr) |
| Interpolate mesh variable. More...
|
|
template<typename T = double, template< int, Entity_kind, class, class, class, class, class, template< class, int, class, class > class, class, class, class > class Interpolate, Entity_kind ONWHAT1 = ONWHAT, typename = typename std::enable_if<ONWHAT1 == CELL>::type> |
void | interpolate_mesh_var (std::string srcvarname, std::string trgvarname, Portage::vector< std::vector< Weights_t >> const &sources_and_weights, const PartPair< D, SourceMesh, SourceState, TargetMesh, TargetState > *partition, Portage::vector< Vector< D >> *gradients=nullptr) |
| Interpolate mesh variable from source part to target part. More...
|
|
bool | check_mismatch (Portage::vector< std::vector< Weights_t >> const &source_weights) |
|
bool | has_mismatch () |
|
bool | fix_mismatch (std::string const &src_var_name, std::string const &trg_var_name, double global_lower_bound=-std::numeric_limits< double >::max(), double global_upper_bound=std::numeric_limits< double >::max(), double conservation_tol=1e2 *std::numeric_limits< double >::epsilon(), int maxiter=5, Partial_fixup_type partial_fixup_type=Partial_fixup_type::SHIFTED_CONSERVATIVE, Empty_fixup_type empty_fixup_type=Empty_fixup_type::EXTRAPOLATE) |
| Repair the remapped field to account for boundary mismatch. More...
|
|
| CoreDriverBase ()=default |
|
virtual | ~CoreDriverBase ()=default |
|
template<Entity_kind ONWHAT, template< int, Entity_kind, class, class > class Search> |
Portage::vector< std::vector< int > > | search () |
| search for candidate source entities whose control volumes (cells, dual cells) overlap the control volumes of target cells More...
|
|
template<Entity_kind ONWHAT, template< Entity_kind, class, class, class, template< class, int, class, class > class, class, class > class Intersect> |
Portage::vector< std::vector< Portage::Weights_t > > | intersect_meshes (Portage::vector< std::vector< int >> const &intersection_candidates) |
| intersect target entities with candidate source entities More...
|
|
template<template< Entity_kind, class, class, class, template< class, int, class, class > class, class, class > class Intersect> |
std::vector< Portage::vector< std::vector< Portage::Weights_t > > > | intersect_materials (Portage::vector< std::vector< int >> const &intersection_candidates) |
|
template<Entity_kind ONWHAT> |
Portage::vector< Vector< D > > | compute_source_gradient (std::string const field_name, Limiter_type limiter_type=NOLIMITER, Boundary_Limiter_type boundary_limiter_type=BND_NOLIMITER, int material_id=0, const Part< SourceMesh, SourceState > *source_part=nullptr) |
| Compute the gradient field of the given variable on source mesh. More...
|
|
template<typename T = double, Entity_kind ONWHAT, template< int, Entity_kind, class, class, class, class, class, template< class, int, class, class > class, class, class, class > class Interpolate> |
void | interpolate_mesh_var (std::string srcvarname, std::string trgvarname, Portage::vector< std::vector< Weights_t >> const &sources_and_weights, Portage::vector< Vector< D >> *gradients=nullptr) |
|
template<typename T = double, Entity_kind ONWHAT, template< int, Entity_kind, class, class, class, class, class, template< class, int, class, class > class, class, class, class > class Interpolate> |
std::enable_if< ONWHAT==CELL, void > | interpolate_mesh_var (std::string srcvarname, std::string trgvarname, Portage::vector< std::vector< Weights_t >> const &sources_and_weights, const PartPair< D, SourceMesh, SourceState, TargetMesh, TargetState > *parts_pair, Portage::vector< Vector< D >> *gradients=nullptr) |
|
template<typename T = double, template< int, Entity_kind, class, class, class, class, class, template< class, int, class, class > class, class, class, class > class Interpolate> |
void | interpolate_mat_var (std::string srcvarname, std::string trgvarname, std::vector< Portage::vector< std::vector< Weights_t >>> const &sources_and_weights_by_mat, std::vector< Portage::vector< Vector< D >>> *gradients=nullptr) |
|
template<Entity_kind ONWHAT> |
bool | check_mismatch (Portage::vector< std::vector< Weights_t >> const &source_weights) |
| Check if meshes are mismatched (don't cover identical portions of space) More...
|
|
template<Entity_kind ONWHAT> |
bool | has_mismatch () |
| Return if meshes are mismatched (check_mismatch must already have been called) More...
|
|
template<Entity_kind ONWHAT> |
bool | fix_mismatch (std::string const &src_var_name, std::string const &trg_var_name, double global_lower_bound=-std::numeric_limits< double >::max(), double global_upper_bound=std::numeric_limits< double >::max(), double conservation_tol=1e2 *std::numeric_limits< double >::epsilon(), int maxiter=5, Partial_fixup_type partial_fixup_type=Partial_fixup_type::SHIFTED_CONSERVATIVE, Empty_fixup_type empty_fixup_type=Empty_fixup_type::EXTRAPOLATE) |
| Return if meshes are mismatched (check_mismatch must already have been called) More...
|
|
template<Entity_kind ONWHAT> |
void | set_num_tols (const double min_absolute_distance, const double min_absolute_volume) |
| Set numerical tolerances for small distances and volumes. More...
|
|
template<Entity_kind ONWHAT> |
void | set_num_tols (const NumericTolerances_t &num_tols) |
| Set numerical tolerances for small volumes, distances, etc. More...
|
|
template<int D, Entity_kind ONWHAT, class SourceMesh, class SourceState, class TargetMesh = SourceMesh, class TargetState = SourceState, template< class, int, class, class > class InterfaceReconstructorType = DummyInterfaceReconstructor, class Matpoly_Splitter = void, class Matpoly_Clipper = void, class CoordSys = Wonton::DefaultCoordSys>
class Portage::CoreDriver< D, ONWHAT, SourceMesh, SourceState, TargetMesh, TargetState, InterfaceReconstructorType, Matpoly_Splitter, Matpoly_Clipper, CoordSys >
CoreDriver - Core driver that remaps fields on a particular Entity_kind (ONWHAT) like CELL or NODE.
NOTE: THIS CLASS ASSUMES THAT ALL SOURCE CELLS OVERLAPPING ANY TARGET CELL ARE AVAILABLE ON THIS PROCESSOR. IT DOES NOT HAVE TO FETCH THE DATA FROM ANYWHERE
- Template Parameters
-
ONWHAT | On what kind of entity are we doing the remap |
SourceMesh | A lightweight wrapper to a specific input mesh implementation that provides certain functionality. |
SourceState | A lightweight wrapper to a specific input state manager implementation that provides certain functionality. |
TargetMesh | A lightweight wrapper to a specific output mesh implementation that provides certain functionality. |
TargetState | A lightweight wrapper to a specific output state manager implementation that provides certain functionality. |
InterfaceReconstructorType | The Interface Reconstructor class we will instantiate |
Matpoly_Splitter | Class to split a polyhedron into two pieces |
Matpoly_Clipper | Class to clip a polyhedron with a plane and return the piece behind the plane |
CoordSys Coordinate system being used for calculations