Top-level container for all mesh entities. More...
#include <cl_Mesh.hpp>
Public Member Functions | |
| Mesh (const uint aNumberOfDimensions, const proc_t aMasterProc=0, const bool aComputeConnectivities=true) | |
| creates an empty mesh container but specifies number of dimension | |
| Mesh (const string &aPath, const proc_t aMasterProc=0, const bool aComputeConnectivities=true, const bool aParallelMode=true) | |
| reads a mesh from a file | |
| Mesh (const uint aOrder, const Vector< index_t > aNumNodes, const Vector< real > aStep, const Vector< real > aOrigin={}, const proc_t aMasterProc=0) | |
| creates a tensor mesh of first, second or third order ( B-splines only for order > 1 ) | |
| void | scale_mesh (const real aFactor) |
| Multiply all node coordinates with a factor, e.g. | |
| ~Mesh () | |
| const string & | path () const |
| bool | is_tensormesh () const |
| const TensorMeshConfig * | tensorconf () const |
| void | save (const string &aFilePath) |
| uint | number_of_dimensions () const |
| void | set_number_of_dimensions (const uint &aNumberOfDimensions) |
| index_t | number_of_nodes () const |
| index_t | number_of_elements () const |
| index_t | number_of_facets () const |
| index_t | number_of_edges () const |
| index_t | number_of_faces () const |
| index_t | number_of_control_points () const |
| uint | number_of_blocks () const |
| uint | number_of_fields () const |
| uint | number_of_global_variables () const |
| mesh::Node * | node (const id_t aID) |
| mesh::Node * | node (const index_t i, const index_t j) |
| mesh::Node * | node (const index_t i, const index_t j, const index_t k) |
| mesh::Edge * | edge (const id_t aID) |
| mesh::Face * | face (const id_t aID) |
| bool | element_exists (const id_t aID) const |
| mesh::Element * | element (const id_t aID) |
| mesh::Element * | element (const index_t i, const index_t j) |
| mesh::Element * | element (const index_t i, const index_t j, const index_t k) |
| mesh::ControlPoint * | control_point (const id_t aID) |
| mesh::ControlPoint * | control_point (const index_t i, const index_t j) |
| mesh::ControlPoint * | control_point (const index_t i, const index_t j, const index_t k) |
| bool | facet_exists (const id_t aID) const |
| mesh::Facet * | facet (const id_t aID) |
| mesh::Block * | block (const id_t aID) |
| mesh::SideSet * | sideset (const id_t aID) |
| mesh::Element * | vertex (const id_t aID) |
| mesh::Basis * | basis_by_index (const EntityType aType, const index_t aIndex) |
| mesh::Basis * | basis (const EntityType aType, const id_t aID) |
| mesh::Field * | field (const string &aLabel) |
| get field by label | |
| mesh::Field * | field (const index_t aIndex) |
| bool | field_exists (const string &aLabel) |
| Vector< real > & | field_data (const string &aLabel) |
| Cell< mesh::GlobalVariable * > & | global_variables () |
| mesh::GlobalVariable * | global_variable (const id_t aID) |
| mesh::GlobalVariable * | global_variable (const string &aLabel) |
| real & | global_variable_data (const string &aLabel) |
| bool | global_variable_exists (const string &aLabel) |
| uint | number_of_sidesets () const |
| Cell< mesh::Node * > & | hanging_nodes () |
| Cell< mesh::Edge * > & | hanging_edges () |
| Cell< mesh::Face * > & | hanging_faces () |
| Cell< mesh::Facet * > & | hanging_facets () |
| Cell< mesh::Element * > & | hanging_elements () |
| Cell< mesh::ControlPoint * > & | hanging_control_points () |
| index_t | number_of_hanging_basis () const |
| void | add_block (mesh::Block *aBlock) |
| void | add_sideset (mesh::SideSet *aSideSet) |
| Vector< real > & | create_field (const string &aLabel, const EntityType aEntity=EntityType::NODE, const id_t aID=0) |
| real & | create_global_variable (const string &aLabel, const real aValue=0.0, const id_t aID=0) |
| void | collect_elements_from_blocks () |
| void | collect_facets_from_sidesets () |
| void | update_facet_nodes () |
| void | collect_elements_from_group (Cell< mesh::Element * > &aElements, const id_t aGroupId, const ElementType aType=ElementType::EMPTY) |
| void | compute_facet_orientations () |
| void | finalize () |
| finalizes all aspects of the mesh; edges and faces are finalized too when connectivities are computed | |
| bool | is_finalized () const |
| bool | edges_are_finalized () const |
| bool | faces_are_finalized () const |
| void | collect_hanging_basis () |
| void | expand_hanging_basis_sources () |
| void | unfinalize () |
| unfinalizes all aspects of mesh but edges | |
| void | finalize_edges () |
| void | finalize_edges (Cell< mesh::Element * > &aElements) |
| void | finalize_faces () |
| void | unflag_everything (const uint aFlagIndex=0) |
| void | unflag_all_nodes (const uint aFlagIndex=0) |
| void | unflag_all_edges (const uint aFlagIndex=0) |
| void | unflag_all_faces (const uint aFlagIndex=0) |
| void | unflag_all_facets (const uint aFlagIndex=0) |
| void | unflag_all_elements (const uint aFlagIndex=0) |
| void | unflag_all_vertices (const uint aFlagIndex=0) |
| void | unflag_all_control_points (const uint aFlagIndex=0) |
| Cell< mesh::Node * > & | nodes () |
| expose Node container | |
| Cell< mesh::Block * > & | blocks () |
| expose Block container | |
| bool | block_exists (const id_t aID) const |
| check if block exists | |
| bool | sideset_exists (const id_t aID) const |
| check if sideset exists | |
| bool | node_exists (const id_t aID) const |
| check if node exists | |
| Cell< mesh::ThinShell * > & | thin_shells () |
| expose the thinshell container | |
| Cell< mesh::Element * > & | elements () |
| expose Element container | |
| Cell< mesh::Facet * > & | facets () |
| expose Facet container | |
| Cell< mesh::ControlPoint * > & | control_points () |
| expose Control Point container | |
| Cell< mesh::SideSet * > & | sidesets () |
| expose Sideset container | |
| Cell< mesh::Curve * > & | curves () |
| expose Curve container | |
| mesh::Curve * | curve (const id_t aID) |
| return a curve by its ID | |
| void | create_curve_map () |
| Cell< mesh::Edge * > & | edges () |
| expose edge container | |
| Cell< mesh::Face * > & | faces () |
| expose face container | |
| Cell< mesh::Element * > & | vertices () |
| expose Vertex container | |
| Cell< mesh::Element * > & | boundary_edges () |
| expose container for boundary edges | |
| void | partition (const uint &aNumberOfPartitions, const bool aSetProcOwners=true, const bool aForceContinuousPartitions=true, const bool aResetVertexContainers=true) |
| partition the mesh and set element and node ownerships | |
| void | partition (const uint &aNumberOfPartitions, const Vector< id_t > &aSelectedBlocks, const bool aSetProcOwners=true, const bool aForceContinuousPartitions=false, const bool aResetVertexContainers=true) |
| partition the mesh and set element and node ownerships, but also pass selected blocks | |
| void | partition (const uint &aNumberOfPartitions, const Vector< id_t > &aSelectedBlocks, const Vector< id_t > &aSelectedSideSets, const bool aSetProcOwners=true, const bool aForceContinuousPartitions=false, const bool aResetVertexContainers=true) |
| partition the mesh and set element and node ownerships, but also pass selected blocks | |
| void | update_node_indices () |
| void | update_edge_indices () |
| void | update_face_indices () |
| void | update_facet_indices () |
| void | create_edges (const bool aPrint=false, const Vector< id_t > aNedelecBlocks=Vector< id_t >(), const Vector< id_t > aNedelecSideSets=Vector< id_t >(), const bool aCreateEdgesOnAllSideSets=true) |
| creates the edges on the mesh | |
| void | reset_edges () |
| void | create_faces (const bool aPrint=false, const Vector< id_t > aNedelecBlocks=Vector< id_t >(), const Vector< id_t > aNedelecSideSets=Vector< id_t >()) |
| creates the faces on the mesh | |
| void | reset_faces () |
| void | update_element_indices () |
| void | update_vertex_indices () |
| void | update_control_point_indices () |
| real & | time_stamp () |
| return the current timestamp | |
| const uint & | time_step () const |
| return the index of the time | |
| uint & | time_step () |
| void | set_time_step (const uint aTimeStep) |
| set the index of the time step | |
| void | set_connectivity (const Connectivity aConnectivity) |
| void | reset_connectivity (const Connectivity aConnectivity) |
| bool | test_connectivity (const Connectivity aConnectivity) |
| const proc_t & | master () const |
| return the ID of the proc that owns this mesh | |
| void | update_ownerships () |
| void | set_vertex_owners () |
| void | set_number_of_partitions (const proc_t &aNumberOfPartitions) |
| to be called by partitioner | |
| bool | edges_exist () const |
| tells if Nedelec edges exist on this mesh | |
| bool | faces_exist () const |
| tells if Nedelec faces exist on this mesh | |
| void | create_edge_map () |
| special function called by Kernel | |
| void | create_face_map () |
| special function called by Kernel | |
| const uint & | max_element_order () const |
| return the max interpolation order on the mesh | |
| void | set_kernel_flag () |
| called by kernel | |
| bool | is_kernel_mesh () const |
| void | flag_curved_elements () |
| flags elements that are curved | |
| void | distribute_edge_directions () |
| void | save_faces (const string &aPath) |
| id_t | max_node_id () |
| id_t | max_element_id () |
| id_t | max_block_and_sideset_id () |
| void | set_abstract_nodes (Cell< mesh::Node * > &aNodes) |
| Cell< mesh::Node * > & | autopins () |
| Cell< mesh::Node * > & | abstract_nodes () |
| Cell< mesh::Node * > & | orphaned_nodes () |
| std::size_t | checksum () |
| void | force_checksum (const std::size_t aChecksum) |
| void | set_config_tag (const uint64_t aTag, const string &aText) |
| uint64_t | config_tag () const |
| const string & | config_text () const |
| void | update_element_map () |
| void | update_block_map () |
| void | update_sideset_map () |
| id_t | max_node_id () const |
| id_t | max_element_id () const |
| Mesh * | extract_thin_shell_mesh () |
| void | populate_element_neighbors () |
| void | set_compute_facet_orientation_flag (const bool aFlag) |
| size_t | memory () const |
| Compute the total memory used by the mesh in bytes. | |
| bool | has_periodicity () const |
| mesh::Periodicity * | periodicity () |
| void | set_periodicity (mesh::Periodicity *aPeriodicity) |
| void | save_meta (hid_t aFile, const uint aRunningTimestep=0) |
| uint | load_meta (hid_t aFile) |
| void | save_fields (hid_t aFile) |
| void | load_fields (hid_t aFile) |
| void | save_globals (hid_t aFile) |
| void | load_globals (hid_t aFile) |
| void | set_mesh_checker_flag () |
| void | reset_mesh_checker_flag () |
| bool | mesh_checker_flag () const |
Top-level container for all mesh entities.
| belfem::Mesh::Mesh | ( | const uint | aNumberOfDimensions, |
| const proc_t | aMasterProc = 0, | ||
| const bool | aComputeConnectivities = true ) |
creates an empty mesh container but specifies number of dimension
| belfem::Mesh::Mesh | ( | const string & | aPath, |
| const proc_t | aMasterProc = 0, | ||
| const bool | aComputeConnectivities = true, | ||
| const bool | aParallelMode = true ) |
reads a mesh from a file
| belfem::Mesh::Mesh | ( | const uint | aOrder, |
| const Vector< index_t > | aNumNodes, | ||
| const Vector< real > | aStep, | ||
| const Vector< real > | aOrigin = {}, | ||
| const proc_t | aMasterProc = 0 ) |
creates a tensor mesh of first, second or third order ( B-splines only for order > 1 )
| belfem::Mesh::~Mesh | ( | ) |
|
inline |
| void belfem::Mesh::add_block | ( | mesh::Block * | aBlock | ) |
| void belfem::Mesh::add_sideset | ( | mesh::SideSet * | aSideSet | ) |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
check if block exists
|
inline |
expose Block container
|
inline |
expose container for boundary edges
| std::size_t belfem::Mesh::checksum | ( | ) |
| void belfem::Mesh::collect_elements_from_blocks | ( | ) |
| void belfem::Mesh::collect_elements_from_group | ( | Cell< mesh::Element * > & | aElements, |
| const id_t | aGroupId, | ||
| const ElementType | aType = ElementType::EMPTY ) |
| void belfem::Mesh::collect_facets_from_sidesets | ( | ) |
| void belfem::Mesh::collect_hanging_basis | ( | ) |
| void belfem::Mesh::compute_facet_orientations | ( | ) |
| uint64_t belfem::Mesh::config_tag | ( | ) | const |
| const string & belfem::Mesh::config_text | ( | ) | const |
|
inline |
|
inline |
|
inline |
|
inline |
expose Control Point container
| void belfem::Mesh::create_curve_map | ( | ) |
| void belfem::Mesh::create_edge_map | ( | ) |
special function called by Kernel
| void belfem::Mesh::create_edges | ( | const bool | aPrint = false, |
| const Vector< id_t > | aNedelecBlocks = Vector< id_t >(), | ||
| const Vector< id_t > | aNedelecSideSets = Vector< id_t >(), | ||
| const bool | aCreateEdgesOnAllSideSets = true ) |
creates the edges on the mesh
| aPrint | : prints the result if flag is set |
| aNedelecBlocks | : blocks that carry edge dofs |
| aNedelecSideSets | : sidesets that carry edge dofs |
| aCreateEdgesOnAllSideSets | : also create edges on sidesets that are not listed in aNedelecSideSets |
| void belfem::Mesh::create_face_map | ( | ) |
special function called by Kernel
| void belfem::Mesh::create_faces | ( | const bool | aPrint = false, |
| const Vector< id_t > | aNedelecBlocks = Vector< id_t >(), | ||
| const Vector< id_t > | aNedelecSideSets = Vector< id_t >() ) |
creates the faces on the mesh
| aPrint | : prints the result if flag is set |
| aNedelecBlocks | : blocks that carry face dofs |
| aNedelecSideSets | : sidesets that carry face dofs |
| Vector< real > & belfem::Mesh::create_field | ( | const string & | aLabel, |
| const EntityType | aEntity = EntityType::NODE, | ||
| const id_t | aID = 0 ) |
| real & belfem::Mesh::create_global_variable | ( | const string & | aLabel, |
| const real | aValue = 0.0, | ||
| const id_t | aID = 0 ) |
|
inline |
return a curve by its ID
|
inline |
expose Curve container
| void belfem::Mesh::distribute_edge_directions | ( | ) |
|
inline |
|
inline |
expose edge container
|
inline |
|
inline |
tells if Nedelec edges exist on this mesh
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
expose Element container
| void belfem::Mesh::expand_hanging_basis_sources | ( | ) |
| Mesh * belfem::Mesh::extract_thin_shell_mesh | ( | ) |
|
inline |
|
inline |
expose face container
|
inline |
|
inline |
tells if Nedelec faces exist on this mesh
|
inline |
|
inline |
|
inline |
expose Facet container
|
inline |
|
inline |
get field by label
|
inline |
| void belfem::Mesh::finalize | ( | ) |
finalizes all aspects of the mesh; edges and faces are finalized too when connectivities are computed
| void belfem::Mesh::finalize_edges | ( | ) |
| void belfem::Mesh::finalize_edges | ( | Cell< mesh::Element * > & | aElements | ) |
| void belfem::Mesh::finalize_faces | ( | ) |
| void belfem::Mesh::flag_curved_elements | ( | ) |
flags elements that are curved
| void belfem::Mesh::force_checksum | ( | const std::size_t | aChecksum | ) |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
| void belfem::Mesh::load_fields | ( | hid_t | aFile | ) |
| void belfem::Mesh::load_globals | ( | hid_t | aFile | ) |
|
inline |
return the ID of the proc that owns this mesh
| id_t belfem::Mesh::max_block_and_sideset_id | ( | ) |
| id_t belfem::Mesh::max_element_id | ( | ) |
| id_t belfem::Mesh::max_element_id | ( | ) | const |
|
inline |
return the max interpolation order on the mesh
| id_t belfem::Mesh::max_node_id | ( | ) |
| id_t belfem::Mesh::max_node_id | ( | ) | const |
| size_t belfem::Mesh::memory | ( | ) | const |
Compute the total memory used by the mesh in bytes.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
check if node exists
|
inline |
expose Node container
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
| void belfem::Mesh::partition | ( | const uint & | aNumberOfPartitions, |
| const bool | aSetProcOwners = true, | ||
| const bool | aForceContinuousPartitions = true, | ||
| const bool | aResetVertexContainers = true ) |
partition the mesh and set element and node ownerships
| void belfem::Mesh::partition | ( | const uint & | aNumberOfPartitions, |
| const Vector< id_t > & | aSelectedBlocks, | ||
| const bool | aSetProcOwners = true, | ||
| const bool | aForceContinuousPartitions = false, | ||
| const bool | aResetVertexContainers = true ) |
partition the mesh and set element and node ownerships, but also pass selected blocks
| void belfem::Mesh::partition | ( | const uint & | aNumberOfPartitions, |
| const Vector< id_t > & | aSelectedBlocks, | ||
| const Vector< id_t > & | aSelectedSideSets, | ||
| const bool | aSetProcOwners = true, | ||
| const bool | aForceContinuousPartitions = false, | ||
| const bool | aResetVertexContainers = true ) |
partition the mesh and set element and node ownerships, but also pass selected blocks
|
inline |
|
inline |
| void belfem::Mesh::populate_element_neighbors | ( | ) |
|
inline |
| void belfem::Mesh::reset_edges | ( | ) |
| void belfem::Mesh::reset_faces | ( | ) |
|
inline |
| void belfem::Mesh::save | ( | const string & | aFilePath | ) |
| void belfem::Mesh::save_faces | ( | const string & | aPath | ) |
| void belfem::Mesh::save_fields | ( | hid_t | aFile | ) |
| void belfem::Mesh::save_globals | ( | hid_t | aFile | ) |
| void belfem::Mesh::scale_mesh | ( | const real | aFactor | ) |
Multiply all node coordinates with a factor, e.g.
to convert from mm to m.
| void belfem::Mesh::set_abstract_nodes | ( | Cell< mesh::Node * > & | aNodes | ) |
|
inline |
| void belfem::Mesh::set_config_tag | ( | const uint64_t | aTag, |
| const string & | aText ) |
|
inline |
|
inline |
called by kernel
|
inline |
|
inline |
|
inline |
to be called by partitioner
|
inline |
|
inline |
set the index of the time step
| void belfem::Mesh::set_vertex_owners | ( | ) |
|
inline |
|
inline |
check if sideset exists
|
inline |
expose Sideset container
|
inline |
|
inline |
|
inline |
expose the thinshell container
|
inline |
return the current timestamp
|
inline |
|
inline |
return the index of the time
return the current timestep
| void belfem::Mesh::unfinalize | ( | ) |
unfinalizes all aspects of mesh but edges
| void belfem::Mesh::unflag_all_control_points | ( | const uint | aFlagIndex = 0 | ) |
| void belfem::Mesh::unflag_all_edges | ( | const uint | aFlagIndex = 0 | ) |
| void belfem::Mesh::unflag_all_elements | ( | const uint | aFlagIndex = 0 | ) |
| void belfem::Mesh::unflag_all_faces | ( | const uint | aFlagIndex = 0 | ) |
| void belfem::Mesh::unflag_all_facets | ( | const uint | aFlagIndex = 0 | ) |
| void belfem::Mesh::unflag_all_nodes | ( | const uint | aFlagIndex = 0 | ) |
| void belfem::Mesh::unflag_all_vertices | ( | const uint | aFlagIndex = 0 | ) |
| void belfem::Mesh::unflag_everything | ( | const uint | aFlagIndex = 0 | ) |
| void belfem::Mesh::update_block_map | ( | ) |
| void belfem::Mesh::update_control_point_indices | ( | ) |
| void belfem::Mesh::update_edge_indices | ( | ) |
| void belfem::Mesh::update_element_indices | ( | ) |
| void belfem::Mesh::update_element_map | ( | ) |
| void belfem::Mesh::update_face_indices | ( | ) |
| void belfem::Mesh::update_facet_indices | ( | ) |
| void belfem::Mesh::update_facet_nodes | ( | ) |
| void belfem::Mesh::update_node_indices | ( | ) |
| void belfem::Mesh::update_ownerships | ( | ) |
| void belfem::Mesh::update_sideset_map | ( | ) |
| void belfem::Mesh::update_vertex_indices | ( | ) |
|
inline |
|
inline |
expose Vertex container
|
protected |
for special purpose
|
protected |
for special purpose
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
fingerprint of the SETTINGS this mesh was enriched with ( cuts, thin shell layers, coating walls ). Opaque here on purpose: the mesh only carries it into and out of its file, the meaning belongs to whoever built the mesh. Zero means "not set", which is what every mesh that was never enriched from an input deck reports
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
flag telling if mesh is finalized (master only)
|
protected |
flag telling if this is a mesh on the kernel
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
for special purpose
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |