#include <inf_elem_builder.h>
Public Types | |
typedef std::pair< bool, double > | InfElemOriginValue |
Public Member Functions | |
InfElemBuilder (MeshBase &mesh) | |
const Point | build_inf_elem (const bool be_verbose=false) |
const Point | build_inf_elem (const InfElemOriginValue &origin_x, const InfElemOriginValue &origin_y, const InfElemOriginValue &origin_z, const bool x_sym=false, const bool y_sym=false, const bool z_sym=false, const bool be_verbose=false, std::vector< const Node *> *inner_boundary_nodes=nullptr) |
Private Member Functions | |
void | build_inf_elem (const Point &origin, const bool x_sym=false, const bool y_sym=false, const bool z_sym=false, const bool be_verbose=false, std::set< std::pair< dof_id_type, unsigned int >> *inner_faces=nullptr) |
Private Attributes | |
MeshBase & | _mesh |
This class is used to build infinite elements on top of an existing mesh. It only makes sense to use this if LIBMESH_ENABLE_INFINITE_ELEMENTS is true.
Definition at line 53 of file inf_elem_builder.h.
typedef std::pair<bool, double> libMesh::InfElemBuilder::InfElemOriginValue |
Useful typedef
Definition at line 65 of file inf_elem_builder.h.
|
inlineexplicit |
const Point libMesh::InfElemBuilder::build_inf_elem | ( | const bool | be_verbose = false | ) |
Build infinite elements atop a volume-based mesh, determine origin automatically.
const
Point
to make it more obvious that the origin should not change after the infinite elements have been built.When symmetry planes are present, use the version with optional symmetry switches. The flag be_verbose
enables some diagnostic output.
Definition at line 41 of file inf_elem_builder.C.
References _mesh, libMesh::MeshTools::create_bounding_box(), libMesh::out, libMesh::MeshBase::prepare_for_use(), libMesh::ParallelObject::processor_id(), and libMesh::TypeVector< T >::write_unformatted().
Referenced by build_inf_elem().
const Point libMesh::InfElemBuilder::build_inf_elem | ( | const InfElemOriginValue & | origin_x, |
const InfElemOriginValue & | origin_y, | ||
const InfElemOriginValue & | origin_z, | ||
const bool | x_sym = false , |
||
const bool | y_sym = false , |
||
const bool | z_sym = false , |
||
const bool | be_verbose = false , |
||
std::vector< const Node *> * | inner_boundary_nodes = nullptr |
||
) |
InfElemOriginValue
the user can prescribe only selected origin coordinates. The remaining coordinates are computed from the center of the bounding box of the mesh.During the search for faces on which infinite elements are built, interior faces that are not on symmetry planes are found, too. When an (optional) pointer to inner_boundary_nodes
is provided, then this vector will be filled with the nodes that lie on the inner boundary.
Faces which lie in at least one symmetry plane are skipped. The three optional booleans x_sym
, y_sym
, z_sym
indicate symmetry planes (through the origin, obviously) perpendicular to the x
, y
and z
direction, respectively. The flag be_verbose
enables some diagnostic output.
Definition at line 82 of file inf_elem_builder.C.
References _mesh, build_inf_elem(), libMesh::Elem::build_side_ptr(), libMesh::MeshTools::create_bounding_box(), libMesh::MeshBase::elem_ref(), libMesh::MeshBase::node_ptr(), libMesh::out, libMesh::MeshBase::prepare_for_use(), libMesh::MeshBase::print_info(), side, and libMesh::TypeVector< T >::write_unformatted().
|
private |
Build infinite elements atop a volume-based mesh. Actual implementation.
Definition at line 278 of file inf_elem_builder.C.
References _mesh, std::abs(), libMesh::MeshBase::active_element_ptr_range(), libMesh::MeshBase::add_elem(), libMesh::MeshBase::add_point(), libMesh::Elem::build_side_ptr(), libMesh::Elem::dim(), libMesh::EDGE2, libMesh::EDGE3, libMesh::MeshBase::elem_ref(), libMesh::MeshBase::find_neighbors(), libMesh::DofObject::id(), libMesh::Elem::is_node_on_side(), libMesh::MeshBase::is_serial(), libMesh::MeshBase::libmesh_assert_valid_parallel_ids(), libMesh::MeshBase::max_elem_id(), libMesh::MeshBase::max_node_id(), libMesh::MeshBase::n_elem(), libMesh::Elem::n_sides(), libMesh::Elem::n_vertices(), libMesh::Elem::neighbor_ptr(), libMesh::MeshBase::node_ref(), libMesh::TypeVector< T >::norm(), libMesh::out, libMesh::MeshBase::parallel_max_unique_id(), libMesh::MeshBase::point(), libMesh::DofObject::processor_id(), libMesh::QUAD4, libMesh::QUAD8, libMesh::QUAD9, libMesh::Real, libMesh::remote_elem, libMesh::DofObject::set_id(), libMesh::Elem::set_neighbor(), libMesh::Elem::set_node(), libMesh::DofObject::set_unique_id(), side, libMesh::Elem::side_index_range(), libMesh::TRI3, and libMesh::TRI6.
|
private |
Reference to the mesh we're building infinite elements for.
Definition at line 130 of file inf_elem_builder.h.
Referenced by build_inf_elem().