Flow123d  release_3.0.0-1193-g9220a69
Public Member Functions | Private Attributes | List of all members
BCMesh Class Reference

Class represents boundary part of mesh. More...

#include <bc_mesh.hh>

Inheritance diagram for BCMesh:
Inheritance graph
[legend]
Collaboration diagram for BCMesh:
Collaboration graph
[legend]

Public Member Functions

 BCMesh (Mesh *parent_mesh)
 
 ~BCMesh ()
 Destructor. More...
 
Range< ElementAccessor< 3 > > elements_range () const override
 Returns range of boundary elements of parent mesh. More...
 
unsigned int n_elements (bool boundary=false) const
 Returns count of boundary elements of parent mesh. More...
 
Partitioningget_part () override
 Overwrite Mesh::get_part() More...
 
const LongIdxget_local_part () override
 Overwrite Mesh::get_local_part() More...
 
bool check_compatible_mesh (Mesh &mesh, vector< LongIdx > &bulk_elements_id, vector< LongIdx > &boundary_elements_id) override
 Overwrite Mesh::check_compatible_mesh() More...
 
unsigned int n_nodes () const override
 Overwrite Mesh::n_nodes() More...
 
ElementAccessor< 3 > element_accessor (unsigned int idx) const override
 Overwrite Mesh::element_accessor() More...
 
- Public Member Functions inherited from Mesh
 TYPEDEF_ERR_INFO (EI_ElemLast, int)
 
 TYPEDEF_ERR_INFO (EI_ElemNew, int)
 
 TYPEDEF_ERR_INFO (EI_RegLast, std::string)
 
 TYPEDEF_ERR_INFO (EI_RegNew, std::string)
 
 DECLARE_EXCEPTION (ExcDuplicateBoundary,<< "Duplicate boundary elements! \n"<< "Element id: "<< EI_ElemLast::val<< " on region name: "<< EI_RegLast::val<< "\n"<< "Element id: "<< EI_ElemNew::val<< " on region name: "<< EI_RegNew::val<< "\n")
 
 Mesh ()
 
 Mesh (Input::Record in_record, MPI_Comm com=MPI_COMM_WORLD)
 
void reinit (Input::Record in_record)
 
virtual ~Mesh ()
 Destructor. More...
 
unsigned int n_boundaries () const
 
unsigned int n_edges () const
 
unsigned int n_corners ()
 
const RegionDBregion_db () const
 
Distributionget_el_ds () const
 
LongIdxget_row_4_el () const
 
LongIdxget_el_4_loc () const
 
Distributionget_node_ds () const
 
LongIdxget_node_4_loc () const
 
unsigned int n_local_nodes () const
 
MPI_Comm get_comm () const
 
MixedMeshIntersectionsmixed_intersections ()
 
unsigned int n_sides () const
 
unsigned int n_vb_neighbours () const
 
unsigned int max_edge_sides (unsigned int dim) const
 
void read_gmsh_from_stream (istream &in)
 
void init_from_input ()
 
void setup_topology ()
 
void elements_id_maps (vector< LongIdx > &bulk_elements_id, vector< LongIdx > &boundary_elements_id) const
 
NodeAccessor< 3 > node_accessor (unsigned int idx) const
 Create and return NodeAccessor to node of given idx. More...
 
void read_regions_from_input (Input::Array region_list)
 
vector< vector< unsigned int > > const & node_elements ()
 
void check_and_finish ()
 
std::vector< BoundingBoxget_element_boxes ()
 Compute bounding boxes of elements contained in mesh. More...
 
const BIHTreeget_bih_tree ()
 Getter for BIH. Creates and compute BIH at first call. More...
 
void intersect_element_lists (vector< unsigned int > const &nodes_list, vector< unsigned int > &intersection_element_list)
 
void add_node (unsigned int node_id, arma::vec3 coords)
 Add new node of given id and coordinates to mesh. More...
 
void add_element (unsigned int elm_id, unsigned int dim, unsigned int region_id, unsigned int partition_id, std::vector< unsigned int > node_ids)
 Add new element of given id to mesh. More...
 
void add_physical_name (unsigned int dim, unsigned int id, std::string name)
 Add new node of given id and coordinates to mesh. More...
 
FilePath mesh_file ()
 Return FilePath object representing "mesh_file" input key. More...
 
IntersectionSearch get_intersection_search ()
 Getter for input type selection for intersection search algorithm. More...
 
double global_snap_radius () const
 Maximal distance of observe point from Mesh relative to its size. More...
 
void init_element_vector (unsigned int size)
 Initialize element_vec_, set size and reset counters of boundary and bulk elements. More...
 
void init_node_vector (unsigned int size)
 Initialize node_vec_, set size. More...
 
Range< NodeAccessor< 3 > > node_range () const
 Returns range of nodes. More...
 
int elem_index (int elem_id) const
 For element of given elem_id returns index in element_vec_ or (-1) if element doesn't exist. More...
 
int find_elem_id (unsigned int pos) const
 Return element id (in GMSH file) of element of given position in element vector. More...
 
int node_index (int node_id) const
 For node of given node_id returns index in element_vec_ or (-1) if node doesn't exist. More...
 
int find_node_id (unsigned int pos) const
 Return node id (in GMSH file) of node of given position in node vector. More...
 
void check_element_size (unsigned int elem_idx) const
 Check if given index is in element_vec_. More...
 
void create_boundary_elements ()
 Create boundary elements from data of temporary structure, this method MUST be call after read mesh from. More...
 
void permute_tetrahedron (unsigned int elm_idx, std::vector< unsigned int > permutation_vec)
 Permute nodes of 3D elements of given elm_idx. More...
 
void permute_triangle (unsigned int elm_idx, std::vector< unsigned int > permutation_vec)
 Permute nodes of 2D elements of given elm_idx. More...
 
BCMeshget_bc_mesh ()
 Create boundary mesh if doesn't exist and return it. More...
 

Private Attributes

Meshparent_mesh_
 Pointer to parent (bulk) mesh. More...
 
LongIdxlocal_part_
 Distribution of boundary elements to processors. More...
 

Additional Inherited Members

- Public Types inherited from Mesh
enum  IntersectionSearch { BIHsearch = 1, BIHonly = 2, BBsearch = 3 }
 Types of search algorithm for finding intersection candidates. More...
 
enum  { x_coord =0, y_coord =1, z_coord =2 }
 
typedef enum Mesh::IntersectionSearch IntersectionSearch
 Types of search algorithm for finding intersection candidates. More...
 
- Static Public Member Functions inherited from Mesh
static const Input::Type::Selectionget_input_intersection_variant ()
 The definition of input record for selection of variant of file format. More...
 
static const Input::Type::Recordget_input_type ()
 
- Public Attributes inherited from Mesh
vector< Boundaryboundary_
 
std::vector< Edgeedges
 Vector of MH edges, this should not be part of the geometrical mesh. More...
 
std::shared_ptr< MixedMeshIntersectionsintersections
 
vector< vector< unsigned int > > master_elements
 
DuplicateNodestree
 
vector< Neighbourvb_neighbours_
 
int n_insides
 
int n_exsides
 
int n_sides_
 
int n_lines
 
int n_triangles
 
int n_tetrahedras
 
vector< vector< vector< unsigned int > > > side_nodes
 
vector< vector< unsigned int > > node_elements_
 For each node the vector contains a list of elements that use this node. More...
 
- Static Public Attributes inherited from Mesh
static const unsigned int undef_idx =-1
 
- Protected Member Functions inherited from Mesh
void make_neighbours_and_edges ()
 
void make_edge_permutations ()
 
void create_node_element_lists ()
 
bool find_lower_dim_element (vector< unsigned int > &element_list, unsigned int dim, unsigned int &element_idx)
 
bool same_sides (const SideIter &si, vector< unsigned int > &side_nodes)
 
void element_to_neigh_vb ()
 
void count_element_types ()
 
void count_side_types ()
 
void modify_element_ids (const RegionDB::MapElementIDToRegionID &map)
 
Elementadd_element_to_vector (int id, bool boundary=false)
 Adds element to mesh data structures (element_vec_, element_ids_), returns pointer to this element. More...
 
void init_element (Element *ele, unsigned int elm_id, unsigned int dim, RegionIdx region_idx, unsigned int partition_id, std::vector< unsigned int > node_ids)
 Initialize element. More...
 
void output_internal_ngh_data ()
 Output of neighboring data into raw output. More...
 
- Protected Attributes inherited from Mesh
unsigned int n_bb_neigh
 
unsigned int n_vb_neigh
 
unsigned int max_edge_sides_ [3]
 Maximal number of sides per one edge in the actual mesh (set in make_neighbours_and_edges()). More...
 
RegionDB region_db_
 
std::shared_ptr< Partitioningpart_
 
std::shared_ptr< BIHTreebih_tree_
 
Input::Record in_record_
 
MPI_Comm comm_
 
vector< Elementelement_vec_
 
vector< ElementTmpDatabc_element_tmp_
 Hold data of boundary elements during reading mesh (allow to preserve correct order during reading of mix bulk-boundary element) More...
 
unsigned int bulk_size_
 Count of bulk elements. More...
 
unsigned int boundary_loaded_size_
 Count of boundary elements loaded from mesh file. More...
 
BidirectionalMap< int > element_ids_
 Maps element ids to indexes into vector element_vec_. More...
 
vector< Nodenode_vec_
 
BidirectionalMap< int > node_ids_
 Maps node ids to indexes into vector node_vec_. More...
 

Detailed Description

Class represents boundary part of mesh.

Holds pointer to parent Mesh and overwrites methods, that allow access to boundary elements and other functionality and structures necessary to work above boundary part of mesh.

Definition at line 35 of file bc_mesh.hh.

Constructor & Destructor Documentation

BCMesh::BCMesh ( Mesh parent_mesh)

Constructor from parent (bulk) Mesh.

Definition at line 31 of file bc_mesh.cc.

BCMesh::~BCMesh ( )

Destructor.

Definition at line 40 of file bc_mesh.cc.

Member Function Documentation

bool BCMesh::check_compatible_mesh ( Mesh mesh,
vector< LongIdx > &  bulk_elements_id,
vector< LongIdx > &  boundary_elements_id 
)
overridevirtual

Overwrite Mesh::check_compatible_mesh()

Reimplemented from Mesh.

Definition at line 79 of file bc_mesh.cc.

ElementAccessor< 3 > BCMesh::element_accessor ( unsigned int  idx) const
overridevirtual

Overwrite Mesh::element_accessor()

Reimplemented from Mesh.

Definition at line 89 of file bc_mesh.cc.

Here is the caller graph for this function:

Range< ElementAccessor< 3 > > BCMesh::elements_range ( ) const
overridevirtual

Returns range of boundary elements of parent mesh.

Reimplemented from Mesh.

Definition at line 46 of file bc_mesh.cc.

Here is the caller graph for this function:

const LongIdx * BCMesh::get_local_part ( )
overridevirtual

Overwrite Mesh::get_local_part()

Reimplemented from Mesh.

Definition at line 63 of file bc_mesh.cc.

Partitioning * BCMesh::get_part ( )
overridevirtual

Overwrite Mesh::get_part()

Reimplemented from Mesh.

Definition at line 59 of file bc_mesh.cc.

unsigned int BCMesh::n_elements ( bool  boundary = false) const
virtual

Returns count of boundary elements of parent mesh.

Reimplemented from Mesh.

Definition at line 54 of file bc_mesh.cc.

Here is the caller graph for this function:

unsigned int BCMesh::n_nodes ( ) const
overridevirtual

Overwrite Mesh::n_nodes()

Reimplemented from Mesh.

Definition at line 84 of file bc_mesh.cc.

Member Data Documentation

LongIdx* BCMesh::local_part_
private

Distribution of boundary elements to processors.

Definition at line 71 of file bc_mesh.hh.

Mesh* BCMesh::parent_mesh_
private

Pointer to parent (bulk) mesh.

Definition at line 68 of file bc_mesh.hh.


The documentation for this class was generated from the following files: