|
Mundy: Multibody Nonlocal Dynamics Version of the Day
|
Turning STK's IO support from a hierarchy of disjoint parts to a polymorphic class hierarchy. More...
Classes | |
| class | mundy::mesh::Class |
| Semantic mesh class backed by synchronized data and assembly part hierarchies. More... | |
| struct | mundy::mesh::Class::DeclarationSignature |
| Canonical declaration signature used to validate repeated declarations by name. More... | |
| struct | mundy::mesh::BulkDataClassInterface |
Typedefs | |
| using | mundy::mesh::ClassVector = std::vector<Class*> |
| using | mundy::mesh::ConstClassVector = std::vector<const Class*> |
Functions | |
| Class & | mundy::mesh::declare_class (stk::mesh::MetaData &meta_data, const std::string &class_name) |
| Declare (or fetch) a named class on the given MetaData. | |
| Class & | mundy::mesh::declare_class (stk::mesh::MetaData &meta_data, const std::string &class_name, stk::mesh::EntityRank class_rank, bool disable_io_support) |
| Declare (or fetch) a ranked class-set on the given MetaData. | |
| Class & | mundy::mesh::declare_class (stk::mesh::MetaData &meta_data, const std::string &class_name, stk::topology::topology_t class_topology, bool disable_io_support) |
| Declare (or fetch) a topological primary class on the given MetaData. | |
| const ClassVector & | mundy::mesh::get_classes (stk::mesh::MetaData &meta_data) |
| Fetch all declared classes from MetaData in class-ordinal order. | |
| const ConstClassVector & | mundy::mesh::get_classes (const stk::mesh::MetaData &meta_data) |
| Fetch all declared classes from MetaData in class-ordinal order. | |
| bool | mundy::mesh::Class::DeclarationSignature::operator== (const DeclarationSignature &rhs) const noexcept |
| bool | mundy::mesh::Class::DeclarationSignature::operator!= (const DeclarationSignature &rhs) const noexcept |
| ClassVector | mundy::mesh::BulkDataClassInterface::get_matching_rank_primary_classes (const stk::mesh::Entity entity) const |
| stk::mesh::Entity | mundy::mesh::BulkDataClassInterface::declare_entity (stk::mesh::EntityRank rank, stk::mesh::EntityId id, const ClassVector &class_vector) |
| Create or retrieve a locally owned entity of a given rank and id. | |
| stk::mesh::Entity | mundy::mesh::BulkDataClassInterface::declare_node (stk::mesh::EntityId id, const ClassVector &class_vector) |
| stk::mesh::Entity | mundy::mesh::BulkDataClassInterface::declare_edge (stk::mesh::EntityId id, const ClassVector &class_vector) |
| stk::mesh::Entity | mundy::mesh::BulkDataClassInterface::declare_element (stk::mesh::EntityId id, const ClassVector &class_vector) |
| stk::mesh::Entity | mundy::mesh::BulkDataClassInterface::declare_entity (stk::mesh::EntityRank rank, stk::mesh::EntityId id, const Class &class_instance) |
| Same as declare_entity but with a single class instance. | |
| stk::mesh::Entity | mundy::mesh::BulkDataClassInterface::declare_node (stk::mesh::EntityId id, const Class &class_instance) |
| stk::mesh::Entity | mundy::mesh::BulkDataClassInterface::declare_edge (stk::mesh::EntityId id, const Class &class_instance) |
| stk::mesh::Entity | mundy::mesh::BulkDataClassInterface::declare_element (stk::mesh::EntityId id, const Class &class_instance) |
| void | mundy::mesh::BulkDataClassInterface::change_entity_classes (const stk::mesh::Entity entity, const ClassVector &add_classes, const ClassVector &remove_classes=ClassVector()) |
| Change the parallel-locally-owned entity's class membership by swapping class membership (only valid for entities of non-primary rank for all involved classes). | |
| void | mundy::mesh::BulkDataClassInterface::change_entity_classes (const stk::mesh::Entity entity, const Class &add_class, const ClassVector &remove_classes=ClassVector()) |
| void | mundy::mesh::BulkDataClassInterface::change_entity_classes (const stk::mesh::Entity entity, const ClassVector &add_classes, const Class &remove_class) |
Variables | |
| DeclarationKind | mundy::mesh::Class::DeclarationSignature::declaration_kind = DeclarationKind::NAMED |
| stk::mesh::EntityRank | mundy::mesh::Class::DeclarationSignature::class_rank = stk::topology::INVALID_RANK |
| stk::topology::topology_t | mundy::mesh::Class::DeclarationSignature::class_topology = stk::topology::INVALID_TOPOLOGY |
| bool | mundy::mesh::Class::DeclarationSignature::disable_io_support = false |
| stk::mesh::BulkData & | mundy::mesh::BulkDataClassInterface::bulk_data |
Type aliases | |
| enum | { mundy::mesh::Class::INVALID_ID = -1 } |
| enum class | mundy::mesh::Class::DeclarationKind : unsigned { mundy::mesh::Class::DeclarationKind::NAMED = 0u , mundy::mesh::Class::DeclarationKind::RANKED = 1u , mundy::mesh::Class::DeclarationKind::TOPOLOGICAL = 2u } |
| How the class data/leaf-data parts were declared. More... | |
| enum class | mundy::mesh::Class::Type : unsigned { mundy::mesh::Class::Type::PRIMARY = 0u , mundy::mesh::Class::Type::SET = 1u } |
| The type of class this is. Class rules: More... | |
| using | mundy::mesh::Class::class_ordinal_t = unsigned |
Constructors and destructor | |
| mundy::mesh::Class::Class ()=delete | |
| No default constructor. | |
| mundy::mesh::Class::Class (const Class &)=delete | |
| Non-copyable and non-movable, mirroring STK object semantics. | |
| mundy::mesh::Class::Class (Class &&)=delete | |
| Class & | mundy::mesh::Class::operator= (const Class &)=delete |
| Class & | mundy::mesh::Class::operator= (Class &&)=delete |
| mundy::mesh::Class::~Class ()=default | |
| Destructor. | |
Part-like API | |
| stk::mesh::MetaData & | mundy::mesh::Class::mesh_meta_data () noexcept |
| Fetch the owning MetaData manager. | |
| const stk::mesh::MetaData & | mundy::mesh::Class::mesh_meta_data () const noexcept |
| Fetch the owning MetaData manager. | |
| stk::mesh::MetaData & | mundy::mesh::Class::meta_data () noexcept |
| Backward-compatible alias for mesh_meta_data(). | |
| const stk::mesh::MetaData & | mundy::mesh::Class::meta_data () const noexcept |
| Backward-compatible alias for mesh_meta_data(). | |
| stk::mesh::EntityRank | mundy::mesh::Class::primary_entity_rank () const |
| Fetch the primary entity rank for this class. | |
| stk::topology | mundy::mesh::Class::topology () const |
| Fetch the topology for this class. | |
| const std::string & | mundy::mesh::Class::name () const noexcept |
| Fetch the class name. | |
| class_ordinal_t | mundy::mesh::Class::class_ordinal () const noexcept |
| Fetch this class ordinal. | |
| const DeclarationSignature & | mundy::mesh::Class::declaration_signature () const noexcept |
| Fetch the declaration signature used to create this class. | |
| bool | mundy::mesh::Class::force_no_induce () const |
| Return whether this class suppresses induction. | |
| bool | mundy::mesh::Class::has_io_support () const noexcept |
| Return whether this class has IO hierarchy support enabled. | |
| bool | mundy::mesh::Class::should_induce (stk::mesh::EntityRank from_rank) const |
Should this class induce membership from from_rank? | |
| bool | mundy::mesh::Class::was_induced (stk::mesh::EntityRank rank) const |
Could entities of rank be induced into this class? | |
| bool | mundy::mesh::Class::entity_membership_is_parallel_consistent () const |
| Whether class membership must be parallel consistent. | |
| void | mundy::mesh::Class::entity_membership_is_parallel_consistent (bool is_parallel_consistent) |
| Set whether class membership must be parallel consistent. | |
| Type | mundy::mesh::Class::class_type () const noexcept |
| Fetch the class type. | |
| bool | mundy::mesh::Class::is_set () const noexcept |
| Fetch whether this class is a set. | |
| bool | mundy::mesh::Class::is_primary () const noexcept |
| Fetch whether this class is a primary class. | |
| int64_t | mundy::mesh::Class::data_part_id () const |
| Fetch the data-part id. | |
| int64_t | mundy::mesh::Class::assembly_part_id () const |
| Fetch the assembly-part id. | |
| bool | mundy::mesh::Class::contains (const Class &other) const |
Check if other is contained by this class in both hierarchy channels. | |
| const ClassVector & | mundy::mesh::Class::subclasses () noexcept |
| Direct subclasses declared through the Class API. | |
| const ConstClassVector & | mundy::mesh::Class::subclasses () const noexcept |
| Direct subclasses declared through the Class API. | |
| const ClassVector & | mundy::mesh::Class::superclasses () noexcept |
| Direct superclasses declared through the Class API. | |
| const ConstClassVector & | mundy::mesh::Class::superclasses () const noexcept |
| Direct superclasses declared through the Class API. | |
| const stk::mesh::PartVector & | mundy::mesh::Class::data_part_supersets () const |
| Parts that are supersets of this class's data part. | |
| const stk::mesh::PartVector & | mundy::mesh::Class::data_part_subsets () const |
| Parts that are subsets of this class's data part. | |
| const stk::mesh::PartVector & | mundy::mesh::Class::assembly_part_supersets () const |
| Parts that are supersets of this class's assembly part. | |
| const stk::mesh::PartVector & | mundy::mesh::Class::assembly_part_subsets () const |
| Parts that are subsets of this class's assembly part. | |
| Class & | mundy::mesh::Class::get_or_create_induced_set (stk::mesh::EntityRank rank) |
Create an induced set for this class at rank if it doesn't already exist and return it. | |
| Class & | mundy::mesh::Class::get_induced_set (stk::mesh::EntityRank rank) |
Get an induced set for this class at rank if it exists, otherwise throw. | |
| const Class & | mundy::mesh::Class::get_induced_set (stk::mesh::EntityRank rank) const |
| bool | mundy::mesh::Class::has_induced_set (stk::mesh::EntityRank rank) const |
| bool | mundy::mesh::Class::operator== (const Class &rhs) const |
| Equality comparison. | |
| bool | mundy::mesh::Class::operator!= (const Class &rhs) const |
| Inequality comparison. | |
| template<class A> | |
| const A * | mundy::mesh::Class::attribute () const |
| Query attribute attached to the class data part. | |
| stk::mesh::Part & | mundy::mesh::Class::data_part () noexcept |
| Fetch the non-io data hierarchy part. | |
| const stk::mesh::Part & | mundy::mesh::Class::data_part () const noexcept |
| Fetch the non-io data hierarchy part. | |
| stk::mesh::Part & | mundy::mesh::Class::leaf_part () noexcept |
| Fetch the io leaf data part. | |
| const stk::mesh::Part & | mundy::mesh::Class::leaf_part () const noexcept |
| Fetch the io leaf data part. | |
| stk::mesh::Part & | mundy::mesh::Class::assembly_part () noexcept |
| Fetch the assembly hierarchy part. | |
| const stk::mesh::Part & | mundy::mesh::Class::assembly_part () const noexcept |
| Fetch the assembly hierarchy part. | |
| stk::mesh::Part & | mundy::mesh::Class::leaf_assembly_part () noexcept |
| Fetch the leaf assembly part. | |
| const stk::mesh::Part & | mundy::mesh::Class::leaf_assembly_part () const noexcept |
| Fetch the leaf assembly part. | |
| mundy::mesh::Class::operator stk::mesh::Selector () const | |
| Treat this class as the selector for its assembly hierarchy. | |
| mundy::mesh::Class::operator const stk::mesh::Part & () const noexcept | |
| Treat this class as its assembly part for read-only STK APIs such as Bucket::member(...). | |
Actions | |
| void | mundy::mesh::Class::declare_subset (Class &sub_class) |
Declare sub_class as a direct subclass in both hierarchy channels. sub_class must have the same primary entity rank as this class. | |
| void | mundy::mesh::Class::set_assembly_part_ids (unsigned assembly_part_id, unsigned leaf_assembly_part_id) |
| Assign deterministic ids to assembly-type parts for IO/visualization stability. | |
Query helpers | |
| Class & | mundy::mesh::get_class (stk::mesh::MetaData &meta_data, Class::class_ordinal_t class_ordinal) |
| Fetch an existing class by ordinal from MetaData. | |
| const Class & | mundy::mesh::get_class (const stk::mesh::MetaData &meta_data, Class::class_ordinal_t class_ordinal) |
| Fetch an existing class by ordinal from MetaData. | |
| Class & | mundy::mesh::get_class (stk::mesh::MetaData &meta_data, const std::string &class_name) |
| Fetch an existing class by name from MetaData. | |
| const Class & | mundy::mesh::get_class (const stk::mesh::MetaData &meta_data, const std::string &class_name) |
| Fetch an existing class by name from MetaData. | |
| Class & | mundy::mesh::get_class (stk::mesh::BulkData &bulk_data, Class::class_ordinal_t class_ordinal) |
| Fetch an existing class by ordinal through the given BulkData's MetaData. | |
| const Class & | mundy::mesh::get_class (const stk::mesh::BulkData &bulk_data, Class::class_ordinal_t class_ordinal) |
| Fetch an existing class by ordinal through the given BulkData's MetaData. | |
| Class & | mundy::mesh::get_class (stk::mesh::BulkData &bulk_data, const std::string &class_name) |
| Fetch an existing class by name through the given BulkData's MetaData. | |
| const Class & | mundy::mesh::get_class (const stk::mesh::BulkData &bulk_data, const std::string &class_name) |
| Fetch an existing class by name through the given BulkData's MetaData. | |
| const ClassVector & | mundy::mesh::get_classes (stk::mesh::BulkData &bulk_data) |
| Fetch all classes visible from BulkData in class-ordinal order. | |
| const ConstClassVector & | mundy::mesh::get_classes (const stk::mesh::BulkData &bulk_data) |
| Fetch all classes visible from BulkData in class-ordinal order. | |
Non-member actions | |
| void | mundy::mesh::declare_subset (Class &parent_class, Class &sub_class) |
Declare sub_class as a subclass of parent_class in both hierarchy channels. | |
| stk::mesh::Selector | mundy::mesh::operator& (const Class &lhs, const Class &rhs) |
| Intersection of a class assembly selector and another class assembly selector. | |
| stk::mesh::Selector | mundy::mesh::operator& (const Class &lhs, const stk::mesh::Selector &rhs) |
| Intersection of a class assembly selector and an STK selector. | |
| stk::mesh::Selector | mundy::mesh::operator& (const stk::mesh::Selector &lhs, const Class &rhs) |
| Intersection of an STK selector and a class assembly selector. | |
| stk::mesh::Selector | mundy::mesh::operator| (const Class &lhs, const Class &rhs) |
| Union of a class assembly selector and another class assembly selector. | |
| stk::mesh::Selector | mundy::mesh::operator| (const Class &lhs, const stk::mesh::Selector &rhs) |
| Union of a class assembly selector and an STK selector. | |
| stk::mesh::Selector | mundy::mesh::operator| (const stk::mesh::Selector &lhs, const Class &rhs) |
| Union of an STK selector and a class assembly selector. | |
| stk::mesh::Selector | mundy::mesh::operator- (const Class &lhs, const Class &rhs) |
| Difference of a class assembly selector and another class assembly selector. | |
| stk::mesh::Selector | mundy::mesh::operator- (const Class &lhs, const stk::mesh::Selector &rhs) |
| Difference of a class assembly selector and an STK selector. | |
| stk::mesh::Selector | mundy::mesh::operator- (const stk::mesh::Selector &lhs, const Class &rhs) |
| Difference of an STK selector and a class assembly selector. | |
| stk::mesh::Selector | mundy::mesh::operator! (const Class &class_instance) |
| Complement of a class assembly selector. | |
| void | mundy::mesh::add_class_field (stk::io::StkMeshIoBroker &io_broker, size_t output_file_index, stk::mesh::FieldBase &field, const ClassVector &classes, const std::string &db_name) |
| Register a field for output using Class-aware IO rules over an explicit class set. | |
| void | mundy::mesh::add_class_field (stk::io::StkMeshIoBroker &io_broker, size_t output_file_index, stk::mesh::FieldBase &field, const ClassVector &classes) |
| Register a field for output using Class-aware IO rules over an explicit class set. | |
| void | mundy::mesh::add_class_field (stk::io::StkMeshIoBroker &io_broker, size_t output_file_index, stk::mesh::FieldBase &field, const std::string &db_name) |
| Register a field for output using Class-aware IO rules. | |
| void | mundy::mesh::add_class_field (stk::io::StkMeshIoBroker &io_broker, size_t output_file_index, stk::mesh::FieldBase &field) |
| Register a field for output using Class-aware IO rules. | |
| template<typename ComponentType> | |
| void | mundy::mesh::add_class_component (stk::io::StkMeshIoBroker &io_broker, size_t output_file_index, ComponentType &component, const ClassVector &classes, const std::string &db_name) |
| Register a component for output using Class-aware IO rules over an explicit class set. | |
| template<typename ComponentType> | |
| void | mundy::mesh::add_class_component (stk::io::StkMeshIoBroker &io_broker, size_t output_file_index, ComponentType &component, const ClassVector &classes) |
| Register a component for output using Class-aware IO rules over an explicit class set. | |
| template<typename ComponentType> | |
| void | mundy::mesh::add_class_component (stk::io::StkMeshIoBroker &io_broker, size_t output_file_index, ComponentType &component, const std::string &db_name) |
| Register a component for output using Class-aware IO rules. | |
| template<typename ComponentType> | |
| void | mundy::mesh::add_class_component (stk::io::StkMeshIoBroker &io_broker, size_t output_file_index, ComponentType &component) |
| Register a component for output using Class-aware IO rules. | |
| template<typename FieldType> | |
| void | mundy::mesh::put_field_on_mesh (FieldType &field, Class &class_instance, const typename FieldType::value_type *init_value) |
| Put a rank-0/1 field restriction on a class data part. | |
| template<typename FieldType> | |
| void | mundy::mesh::put_field_on_mesh (FieldType &field, Class &class_instance, unsigned n1, const typename FieldType::value_type *init_value) |
| Put a rank-1 field restriction on a class data part. | |
| template<typename FieldType> | |
| void | mundy::mesh::put_field_on_mesh (FieldType &field, Class &class_instance, unsigned n1, unsigned n2, const typename FieldType::value_type *init_value) |
| Put a rank-2 field restriction on a class data part. | |
Entity declaration interface | |
| BulkDataClassInterface | mundy::mesh::class_interface (stk::mesh::BulkData &bulk_data) |
Classes wrap STK parts with metadata and utilities for class membership, subclass relationships, primary classes, and BulkData-facing class changes.
| using mundy::mesh::ClassVector = std::vector<Class*> |
| using mundy::mesh::ConstClassVector = std::vector<const Class*> |
| using mundy::mesh::Class::class_ordinal_t = unsigned |
|
strong |
|
strong |
| Class & mundy::mesh::declare_class | ( | stk::mesh::MetaData & | meta_data, |
| const std::string & | class_name ) |
| Class & mundy::mesh::declare_class | ( | stk::mesh::MetaData & | meta_data, |
| const std::string & | class_name, | ||
| stk::mesh::EntityRank | class_rank, | ||
| bool | disable_io_support = false ) |
| Class & mundy::mesh::declare_class | ( | stk::mesh::MetaData & | meta_data, |
| const std::string & | class_name, | ||
| stk::topology::topology_t | class_topology, | ||
| bool | disable_io_support = false ) |
| const ClassVector & mundy::mesh::get_classes | ( | stk::mesh::MetaData & | meta_data | ) |
The returned pointers are non-owning. Class instances are owned by the class map attached to meta_data. No per-call allocation is performed.
| std::invalid_argument | if no class map exists. |
| const ConstClassVector & mundy::mesh::get_classes | ( | const stk::mesh::MetaData & | meta_data | ) |
The returned pointers are non-owning. Class instances are owned by the class map attached to meta_data. No per-call allocation is performed.
| std::invalid_argument | if no class map exists. |
|
inlinenoexcept |
|
inlinenoexcept |
|
delete |
|
delete |
|
delete |
|
default |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inline |
|
inline |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inline |
|
inlinenoexcept |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inline |
|
inline |
|
inline |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inline |
The assembly part is the semantic membership channel for a Class: it selects all entities that are in this class or any of its subclasses. Field restrictions should still use put_field_on_mesh(field, class_instance, ...), which writes to the data hierarchy instead of this selector channel.
|
inlinenoexcept |
|
inline |
If sub_class has the same primary entity rank as this class, then its members are a subset of this class's members:
|
inline |
|
inline |
| std::invalid_argument | if no class map exists or no matching class is found. |
|
inline |
| std::invalid_argument | if no class map exists or no matching class is found. |
|
inline |
| std::invalid_argument | if no class map exists or no matching class is found. |
|
inline |
| std::invalid_argument | if no class map exists or no matching class is found. |
|
inline |
| std::invalid_argument | if no class map exists or no matching class is found. |
|
inline |
| std::invalid_argument | if no class map exists or no matching class is found. |
|
inline |
| std::invalid_argument | if no class map exists or no matching class is found. |
|
inline |
| std::invalid_argument | if no class map exists or no matching class is found. |
|
inline |
The returned vector is the canonical ordinal-ordered view stored on bulk_data.mesh_meta_data(). No per-call allocation is performed.
| std::invalid_argument | if no class map exists. |
|
inline |
The returned vector is the canonical ordinal-ordered view stored on bulk_data.mesh_meta_data(). No per-call allocation is performed.
| std::invalid_argument | if no class map exists. |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Node-rank fields are written as nodeset variables on the class leaf data parts in classes that contain the field. Other field ranks are passed through the normal StkMeshIoBroker::add_field(...) path. Repeated calls through this helper are idempotent only when the rediscovered Class-aware output parameters match the parameters recorded by the first call.
Throws std::logic_error if field is already registered by another output-registration path.
|
inline |
|
inline |
This overload discovers all declared classes on the broker bulk data and forwards to the explicit-classes overload.
|
inline |
|
inline |
Shared components do not currently have an IO representation. Passing a shared component here is a no-op that prints a warning once.
|
inline |
|
inline |
This overload discovers all declared classes on the broker bulk data and forwards to the explicit-classes overload.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
A parallel-local operation.
The entity is created as locally owned and a member of the input mesh parts. The entity a member of the meta data's locally owned mesh part and the entity's owner_rank() == parallel_rank().
If two or more processes create an entity of the same rank and identifier then the sharing and ownership of these entities will be resolved by the call to 'modification_end'.
The vector of classes may contain primary classes or class sets; they must satisfy the following constraints:
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
The vector of classes may contain primary classes or class sets; they must satisfy the following constraints:
The entity will be added (or removed) from the leaf parts of all given class sets, all induced sets of classes with primary entity rank greater than the entity's rank, and all primary classes with equal primary entity rank.
|
inline |
|
inline |
|
inline |
| DeclarationKind mundy::mesh::Class::DeclarationSignature::declaration_kind = DeclarationKind::NAMED |
| stk::mesh::EntityRank mundy::mesh::Class::DeclarationSignature::class_rank = stk::topology::INVALID_RANK |
| stk::topology::topology_t mundy::mesh::Class::DeclarationSignature::class_topology = stk::topology::INVALID_TOPOLOGY |
| bool mundy::mesh::Class::DeclarationSignature::disable_io_support = false |
| stk::mesh::BulkData& mundy::mesh::BulkDataClassInterface::bulk_data |