SpECTRE
v2024.12.16
|
Items for adaptive mesh refinement. More...
Namespaces | |
namespace | Actions |
Actions for adaptive mesh refinement | |
namespace | Criteria |
Criteria for deciding how a mesh should be adapted. | |
namespace | Events |
Events for adaptive mesh refinement | |
namespace | Initialization |
Mutators used for initialization of adaptive mesh refinement | |
namespace | OptionTags |
Option tags for AMR polocies. | |
namespace | projectors |
AMR projectors. | |
namespace | protocols |
AMR protocols. | |
namespace | Tags |
Tags for adaptive mesh refinement | |
Classes | |
struct | Component |
A singleton parallel component to manage adaptive mesh refinement. More... | |
class | Criterion |
Base class for something that determines how an adaptive mesh should be changed. More... | |
struct | Info |
Information about an element that is communicated by AMR actions. More... | |
class | Limits |
The limits on refinement level and resolution for AMR. More... | |
class | Policies |
A set of runtime policies controlling adaptive mesh refinement. More... | |
Enumerations | |
enum class | Flag { Flag::Undefined , Flag::Join , Flag::DecreaseResolution , Flag::DoNothing , Flag::IncreaseResolution , Flag::Split } |
Flags that represent decisions about mesh refinement. More... | |
enum class | Isotropy { Isotropy::Anisotropic , Isotropy::Isotropic } |
Isotropy of adaptive mesh refinement. More... | |
Functions | |
std::ostream & | operator<< (std::ostream &os, const Flag &flag) |
Output operator for a Flag. | |
template<size_t VolumeDim> | |
std::array< size_t, VolumeDim > | desired_refinement_levels (const ElementId< VolumeDim > &id, const std::array< Flag, VolumeDim > &flags) |
Computes the desired refinement level of the Element with ElementId id given the desired amr::Flags flags | |
template<size_t VolumeDim> | |
std::array< size_t, VolumeDim > | desired_refinement_levels_of_neighbor (const ElementId< VolumeDim > &neighbor_id, const std::array< Flag, VolumeDim > &neighbor_flags, const OrientationMap< VolumeDim > &orientation) |
Computes the desired refinement level of a neighboring Element with ElementId neighbor_id given its desired amr::Flags neighbor_flags taking into account the OrientationMap orientation of the neighbor. More... | |
template<size_t VolumeDim> | |
boost::rational< size_t > | fraction_of_block_volume (const ElementId< VolumeDim > &element_id) |
Fraction of the logical volume of a block covered by an element. More... | |
template<size_t VolumeDim> | |
bool | has_potential_sibling (const ElementId< VolumeDim > &element_id, const Direction< VolumeDim > &direction) |
Whether or not the Element with element_id can have a sibling in the given direction | |
template<size_t VolumeDim> | |
ElementId< VolumeDim > | id_of_parent (const ElementId< VolumeDim > &element_id, const std::array< Flag, VolumeDim > &flags) |
Returns the ElementId of the parent of the Element with element_id using the refinement flags associated with element_id More... | |
template<size_t VolumeDim> | |
std::vector< ElementId< VolumeDim > > | ids_of_children (const ElementId< VolumeDim > &element_id, const std::array< Flag, VolumeDim > &flags) |
Returns the ElementIds of the children of the Element with element_id using the refinement flags associated with element_id More... | |
template<size_t VolumeDim> | |
std::deque< ElementId< VolumeDim > > | ids_of_joining_neighbors (const Element< VolumeDim > &element, const std::array< Flag, VolumeDim > &flags) |
The ElementIds of the neighbors of element that will join with it given refinement flags More... | |
template<size_t VolumeDim> | |
bool | is_child_that_creates_parent (const ElementId< VolumeDim > &element_id, const std::array< Flag, VolumeDim > &flags) |
Whether or not the Element is the child that should create the parent Element when joining elements. More... | |
template<size_t VolumeDim> | |
bool | prevent_element_from_joining_while_splitting (gsl::not_null< std::array< Flag, VolumeDim > * > flags) |
Prevent an Element from splitting in one dimension, while joining in another. More... | |
template<size_t VolumeDim> | |
std::ostream & | operator<< (std::ostream &os, const Info< VolumeDim > &info) |
Output operator for an Info. | |
template<size_t VolumeDim> | |
bool | operator== (const Info< VolumeDim > &lhs, const Info< VolumeDim > &rhs) |
template<size_t VolumeDim> | |
bool | operator!= (const Info< VolumeDim > &lhs, const Info< VolumeDim > &rhs) |
template<size_t VolumeDim> | |
std::pair< DirectionMap< VolumeDim, Neighbors< VolumeDim > >, DirectionalIdMap< VolumeDim, Mesh< VolumeDim > > > | neighbors_of_child (const Element< VolumeDim > &parent, const Info< VolumeDim > &parent_info, const std::unordered_map< ElementId< VolumeDim >, Info< VolumeDim > > &parent_neighbor_info, const ElementId< VolumeDim > &child_id) |
returns the neighbors and their Meshes of the Element with ElementId child_id , whose parent Element is parent which has Info parent_info and neighbor Info parent_neighbor_info | |
template<size_t VolumeDim> | |
std::pair< DirectionMap< VolumeDim, Neighbors< VolumeDim > >, DirectionalIdMap< VolumeDim, Mesh< VolumeDim > > > | neighbors_of_parent (const ElementId< VolumeDim > &parent_id, const std::vector< std::tuple< const Element< VolumeDim > &, const std::unordered_map< ElementId< VolumeDim >, Info< VolumeDim > > & > > &children_elements_and_neighbor_info) |
returns the neighbors and their Meshes of the Element with ElementId parent_id , that is created from its children_elements_and_neighbor_info | |
template<size_t VolumeDim> | |
std::unordered_map< ElementId< VolumeDim >, Mesh< VolumeDim > > | new_neighbor_ids (const ElementId< VolumeDim > &my_id, const Direction< VolumeDim > &direction, const Neighbors< VolumeDim > &previous_neighbors_in_direction, const std::unordered_map< ElementId< VolumeDim >, Info< VolumeDim > > &previous_neighbors_amr_info) |
returns the ElementId and Mesh of the new neighbors in the given direction of the Element whose ElementId is my_id given the previous_neighbors_in_direction and their amr::Info. More... | |
template<size_t VolumeDim> | |
bool | update_amr_decision (gsl::not_null< std::array< Flag, VolumeDim > * > my_current_amr_flags, const Element< VolumeDim > &element, const ElementId< VolumeDim > &neighbor_id, const std::array< Flag, VolumeDim > &neighbor_amr_flags, bool enforce_two_to_one_balance_in_normal_direction) |
Updates the AMR decisions my_current_amr_flags of the Element element based on the AMR decisions neighbor_amr_flags of a neighbor Element with ElementId neighbor_id . More... | |
template<typename Metavariables , typename Component > | |
void | register_callbacks () |
template<size_t Dim> | |
void | enforce_policies (gsl::not_null< std::array< Flag, Dim > * > amr_decision, const amr::Policies &amr_policies, const ElementId< Dim > &element_id, const Mesh< Dim > &mesh) |
Updates amr_decision so that it satisfies amr_policies. More... | |
std::ostream & | operator<< (std::ostream &os, const Isotropy &isotropy) |
Output operator for isotropy. | |
bool | operator== (const Limits &lhs, const Limits &rhs) |
bool | operator!= (const Limits &lhs, const Limits &rhs) |
bool | operator== (const Policies &lhs, const Policies &rhs) |
bool | operator!= (const Policies &lhs, const Policies &rhs) |
Items for adaptive mesh refinement.
void amr::enforce_policies | ( | gsl::not_null< std::array< Flag, Dim > * > | amr_decision, |
const amr::Policies & | amr_policies, | ||
const ElementId< Dim > & | element_id, | ||
const Mesh< Dim > & | mesh | ||
) |
Updates amr_decision so that it satisfies amr_policies.
amr_decision
tried to go beyond the amr::Limits
in any direction, this function will error if amr::Limits::error_beyond_limits()
is true.