Functions
oomph::TwoDimensionalPMLHelper Namespace Reference

Namespace with functions that allow the construction of PML layers on axis aligned boundaries. More...

Functions

bool sorter_right_boundary (Node *nod_i_pt, Node *nod_j_pt)
 helper function for sorting the right boundary nodes More...
 
bool sorter_top_boundary (Node *nod_i_pt, Node *nod_j_pt)
 helper function for sorting the top boundary nodes More...
 
bool sorter_left_boundary (Node *nod_i_pt, Node *nod_j_pt)
 helper function for sorting the left boundary nodes More...
 
bool sorter_bottom_boundary (Node *nod_i_pt, Node *nod_j_pt)
 helper function for sorting the bottom boundary nodes More...
 
template<class ASSOCIATED_PML_QUAD_ELEMENT >
Meshcreate_right_pml_mesh (Mesh *bulk_mesh_pt, const unsigned &right_boundary_id, const unsigned &n_x_right_pml, const double &width_x_right_pml, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 "Constructor" for PML mesh,aligned with the right physical domain boundary More...
 
template<class ASSOCIATED_PML_QUAD_ELEMENT >
Meshcreate_top_pml_mesh (Mesh *bulk_mesh_pt, const unsigned &top_boundary_id, const unsigned &n_y_top_pml, const double &width_y_top_pml, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 "Constructor" for PML mesh, aligned with the top physical domain boundary More...
 
template<class ASSOCIATED_PML_QUAD_ELEMENT >
Meshcreate_left_pml_mesh (Mesh *bulk_mesh_pt, const unsigned &left_boundary_id, const unsigned &n_x_left_pml, const double &width_x_left_pml, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 "Constructor" for PML mesh, aligned with the left physical domain boundary More...
 
template<class ASSOCIATED_PML_QUAD_ELEMENT >
Meshcreate_bottom_pml_mesh (Mesh *bulk_mesh_pt, const unsigned &bottom_boundary_id, const unsigned &n_y_bottom_pml, const double &width_y_bottom_pml, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 "Constructor" for PML mesh,aligned with the bottom physical domain boundary More...
 
template<class ASSOCIATED_PML_QUAD_ELEMENT >
Meshcreate_top_right_pml_mesh (Mesh *pml_right_mesh_pt, Mesh *pml_top_mesh_pt, Mesh *bulk_mesh_pt, const unsigned &right_boundary_id, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 "Constructor" for PML top right corner mesh, aligned with the existing PML meshes More...
 
template<class ASSOCIATED_PML_QUAD_ELEMENT >
Meshcreate_bottom_right_pml_mesh (Mesh *pml_right_mesh_pt, Mesh *pml_bottom_mesh_pt, Mesh *bulk_mesh_pt, const unsigned &right_boundary_id, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 "Constructor" for PML bottom right corner mesh, aligned with the existing PML meshes More...
 
template<class ASSOCIATED_PML_QUAD_ELEMENT >
Meshcreate_top_left_pml_mesh (Mesh *pml_left_mesh_pt, Mesh *pml_top_mesh_pt, Mesh *bulk_mesh_pt, const unsigned &left_boundary_id, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 "Constructor" for PML top left corner mesh, aligned with the existing PML meshes More...
 
template<class ASSOCIATED_PML_QUAD_ELEMENT >
Meshcreate_bottom_left_pml_mesh (Mesh *pml_left_mesh_pt, Mesh *pml_bottom_mesh_pt, Mesh *bulk_mesh_pt, const unsigned &left_boundary_id, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 "Constructor" for PML bottom left corner mesh, aligned with the existing PML meshes More...
 

Detailed Description

Namespace with functions that allow the construction of PML layers on axis aligned boundaries.

///////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////

All helper routines for 2D bulk boundary mesh usage in order to generate PML meshes aligned to the main mesh

Function Documentation

◆ create_bottom_left_pml_mesh()

template<class ASSOCIATED_PML_QUAD_ELEMENT >
Mesh * oomph::TwoDimensionalPMLHelper::create_bottom_left_pml_mesh ( Mesh pml_left_mesh_pt,
Mesh pml_bottom_mesh_pt,
Mesh bulk_mesh_pt,
const unsigned &  left_boundary_id,
TimeStepper time_stepper_pt = &Mesh::Default_TimeStepper 
)

"Constructor" for PML bottom left corner mesh, aligned with the existing PML meshes

Relevant boundary id's to be used in construction Parent id refers to already existing PML meshes

Sort them from lowest to highest (in y coordinate) sorter_right_boundary is still functional, as the sorting is performed by the same criterion

Number of elements and boundary nodes to be acted upon during construction are extracted from the 'parent' PML meshes

Specific PML sizes needed, taken directly from physical domain and existing PML meshes

The enabling must be perfromed in both x- and y-directions as this is a corner PML mesh

Return the finalized mesh, with PML enabled and boundary conditions added

Definition at line 2367 of file pml_meshes.h.

References oomph::Mesh::boundary_node_pt(), e, oomph::Mesh::element_pt(), oomph::PMLElementBase< DIM >::enable_pml(), oomph::Mesh::nboundary(), oomph::Mesh::nboundary_element(), oomph::Mesh::nboundary_node(), oomph::Mesh::nelement(), oomph::Data::pin(), oomph::Data::set_value(), sorter_right_boundary(), oomph::PMLElementBase< DIM >::values_to_be_pinned_on_outer_pml_boundary(), and oomph::Node::x().

Referenced by oomph::RefineableQuadMeshWithMovingCylinder< ELEMENT >::RefineableQuadMeshWithMovingCylinder().

◆ create_bottom_pml_mesh()

template<class ASSOCIATED_PML_QUAD_ELEMENT >
Mesh * oomph::TwoDimensionalPMLHelper::create_bottom_pml_mesh ( Mesh bulk_mesh_pt,
const unsigned &  bottom_boundary_id,
const unsigned &  n_y_bottom_pml,
const double &  width_y_bottom_pml,
TimeStepper time_stepper_pt = &Mesh::Default_TimeStepper 
)

"Constructor" for PML mesh,aligned with the bottom physical domain boundary

PML layer width subtracted from the bulk mesh lower boundary coordinate

Return the finalized mesh, with PML enabled and boundary conditions added

Definition at line 1860 of file pml_meshes.h.

References oomph::Mesh::boundary_node_pt(), e, oomph::Mesh::element_pt(), oomph::PMLElementBase< DIM >::enable_pml(), oomph::Mesh::nboundary(), oomph::Mesh::nboundary_element(), oomph::Mesh::nboundary_node(), oomph::Mesh::nelement(), oomph::Data::pin(), oomph::Data::set_value(), sorter_bottom_boundary(), and oomph::PMLElementBase< DIM >::values_to_be_pinned_on_outer_pml_boundary().

◆ create_bottom_right_pml_mesh()

template<class ASSOCIATED_PML_QUAD_ELEMENT >
Mesh * oomph::TwoDimensionalPMLHelper::create_bottom_right_pml_mesh ( Mesh pml_right_mesh_pt,
Mesh pml_bottom_mesh_pt,
Mesh bulk_mesh_pt,
const unsigned &  right_boundary_id,
TimeStepper time_stepper_pt = &Mesh::Default_TimeStepper 
)

"Constructor" for PML bottom right corner mesh, aligned with the existing PML meshes

Relevant boundary id's to be used in construction Parent id refers to already existing PML meshes

Number of elements and boundary nodes to be acted upon during construction are extracted from the 'parent' PML meshes

Specific PML sizes needed, taken directly from physical domain and existing PML meshes

The enabling must be perfromed in both x- and y-directions as this is a corner PML mesh

Return the finalized mesh, with PML enabled and boundary conditions added

Definition at line 2103 of file pml_meshes.h.

References oomph::Mesh::boundary_node_pt(), e, oomph::Mesh::element_pt(), oomph::PMLElementBase< DIM >::enable_pml(), oomph::Mesh::nboundary(), oomph::Mesh::nboundary_element(), oomph::Mesh::nboundary_node(), oomph::Mesh::nelement(), oomph::Data::pin(), oomph::Data::set_value(), sorter_right_boundary(), oomph::PMLElementBase< DIM >::values_to_be_pinned_on_outer_pml_boundary(), and oomph::Node::x().

Referenced by oomph::RefineableQuadMeshWithMovingCylinder< ELEMENT >::RefineableQuadMeshWithMovingCylinder().

◆ create_left_pml_mesh()

template<class ASSOCIATED_PML_QUAD_ELEMENT >
Mesh * oomph::TwoDimensionalPMLHelper::create_left_pml_mesh ( Mesh bulk_mesh_pt,
const unsigned &  left_boundary_id,
const unsigned &  n_x_left_pml,
const double &  width_x_left_pml,
TimeStepper time_stepper_pt = &Mesh::Default_TimeStepper 
)

"Constructor" for PML mesh, aligned with the left physical domain boundary

PML layer width subtracted from left bulk mesh coordinate

Return the finalized mesh, with PML enabled and boundary conditions added

Definition at line 1752 of file pml_meshes.h.

References oomph::Mesh::boundary_node_pt(), e, oomph::Mesh::element_pt(), oomph::PMLElementBase< DIM >::enable_pml(), oomph::Mesh::nboundary(), oomph::Mesh::nboundary_element(), oomph::Mesh::nboundary_node(), oomph::Mesh::nelement(), oomph::Data::pin(), oomph::Data::set_value(), sorter_left_boundary(), and oomph::PMLElementBase< DIM >::values_to_be_pinned_on_outer_pml_boundary().

◆ create_right_pml_mesh()

template<class ASSOCIATED_PML_QUAD_ELEMENT >
Mesh * oomph::TwoDimensionalPMLHelper::create_right_pml_mesh ( Mesh bulk_mesh_pt,
const unsigned &  right_boundary_id,
const unsigned &  n_x_right_pml,
const double &  width_x_right_pml,
TimeStepper time_stepper_pt = &Mesh::Default_TimeStepper 
)

"Constructor" for PML mesh,aligned with the right physical domain boundary

PML layer with added to the bulk mesh coordinate

Return the finalized mesh, with PML enabled and boundary conditions added

Definition at line 1539 of file pml_meshes.h.

References oomph::Mesh::boundary_node_pt(), e, oomph::Mesh::element_pt(), oomph::PMLElementBase< DIM >::enable_pml(), oomph::Mesh::nboundary(), oomph::Mesh::nboundary_element(), oomph::Mesh::nboundary_node(), oomph::Mesh::nelement(), oomph::Data::pin(), oomph::Data::set_value(), sorter_right_boundary(), and oomph::PMLElementBase< DIM >::values_to_be_pinned_on_outer_pml_boundary().

◆ create_top_left_pml_mesh()

template<class ASSOCIATED_PML_QUAD_ELEMENT >
Mesh * oomph::TwoDimensionalPMLHelper::create_top_left_pml_mesh ( Mesh pml_left_mesh_pt,
Mesh pml_top_mesh_pt,
Mesh bulk_mesh_pt,
const unsigned &  left_boundary_id,
TimeStepper time_stepper_pt = &Mesh::Default_TimeStepper 
)

"Constructor" for PML top left corner mesh, aligned with the existing PML meshes

Relevant boundary id's to be used in construction Parent id refers to already existing PML meshes

Sort them from lowest to highest (in y coordinate) sorter_right_boundary is still functional, as the sorting is performed by the same criterion

Number of elements and boundary nodes to be acted upon during construction are extracted from the 'parent' PML meshes

Specific PML sizes needed, taken directly from physical domain and existing PML meshes

The enabling must be perfromed in both x- and y-directions as this is a corner PML mesh

Return the finalized mesh, with PML enabled and boundary conditions added

Definition at line 2234 of file pml_meshes.h.

References oomph::Mesh::boundary_node_pt(), e, oomph::Mesh::element_pt(), oomph::PMLElementBase< DIM >::enable_pml(), oomph::Mesh::nboundary(), oomph::Mesh::nboundary_element(), oomph::Mesh::nboundary_node(), oomph::Mesh::nelement(), oomph::Data::pin(), oomph::Data::set_value(), sorter_right_boundary(), oomph::PMLElementBase< DIM >::values_to_be_pinned_on_outer_pml_boundary(), and oomph::Node::x().

Referenced by oomph::RefineableQuadMeshWithMovingCylinder< ELEMENT >::RefineableQuadMeshWithMovingCylinder().

◆ create_top_pml_mesh()

template<class ASSOCIATED_PML_QUAD_ELEMENT >
Mesh * oomph::TwoDimensionalPMLHelper::create_top_pml_mesh ( Mesh bulk_mesh_pt,
const unsigned &  top_boundary_id,
const unsigned &  n_y_top_pml,
const double &  width_y_top_pml,
TimeStepper time_stepper_pt = &Mesh::Default_TimeStepper 
)

"Constructor" for PML mesh, aligned with the top physical domain boundary

PML layer width added to the bulk mesh coordinate

Return the finalized mesh, with PML enabled and boundary conditions added

Definition at line 1646 of file pml_meshes.h.

References oomph::Mesh::boundary_node_pt(), e, oomph::Mesh::element_pt(), oomph::PMLElementBase< DIM >::enable_pml(), oomph::Mesh::nboundary(), oomph::Mesh::nboundary_element(), oomph::Mesh::nboundary_node(), oomph::Mesh::nelement(), oomph::Data::pin(), oomph::Data::set_value(), sorter_top_boundary(), and oomph::PMLElementBase< DIM >::values_to_be_pinned_on_outer_pml_boundary().

◆ create_top_right_pml_mesh()

template<class ASSOCIATED_PML_QUAD_ELEMENT >
Mesh * oomph::TwoDimensionalPMLHelper::create_top_right_pml_mesh ( Mesh pml_right_mesh_pt,
Mesh pml_top_mesh_pt,
Mesh bulk_mesh_pt,
const unsigned &  right_boundary_id,
TimeStepper time_stepper_pt = &Mesh::Default_TimeStepper 
)

"Constructor" for PML top right corner mesh, aligned with the existing PML meshes

Relevant boundary id's to be used in construction Parent id refers to already existing PML meshes

Number of elements and boundary nodes to be acted upon during construction are extracted from the 'parent' PML meshes

Specific PML sizes needed, taken directly from physical domain and existing PML meshes

The enabling must be perfromed in both x- and y-directions as this is a corner PML mesh

Return the finalized mesh, with PML enabled and boundary conditions added

Definition at line 1968 of file pml_meshes.h.

References oomph::Mesh::boundary_node_pt(), e, oomph::Mesh::element_pt(), oomph::PMLElementBase< DIM >::enable_pml(), oomph::Mesh::nboundary(), oomph::Mesh::nboundary_element(), oomph::Mesh::nboundary_node(), oomph::Mesh::nelement(), oomph::Data::pin(), oomph::Data::set_value(), sorter_right_boundary(), oomph::PMLElementBase< DIM >::values_to_be_pinned_on_outer_pml_boundary(), and oomph::Node::x().

Referenced by oomph::RefineableQuadMeshWithMovingCylinder< ELEMENT >::RefineableQuadMeshWithMovingCylinder().

◆ sorter_bottom_boundary()

bool oomph::TwoDimensionalPMLHelper::sorter_bottom_boundary ( Node nod_i_pt,
Node nod_j_pt 
)

helper function for sorting the bottom boundary nodes

Definition at line 57 of file pml_meshes.cc.

References oomph::Node::x().

Referenced by create_bottom_pml_mesh(), and oomph::PMLQuadMesh< ELEMENT >::PMLQuadMesh().

◆ sorter_left_boundary()

bool oomph::TwoDimensionalPMLHelper::sorter_left_boundary ( Node nod_i_pt,
Node nod_j_pt 
)

helper function for sorting the left boundary nodes

Definition at line 51 of file pml_meshes.cc.

References oomph::Node::x().

Referenced by create_left_pml_mesh(), and oomph::PMLQuadMesh< ELEMENT >::PMLQuadMesh().

◆ sorter_right_boundary()

bool oomph::TwoDimensionalPMLHelper::sorter_right_boundary ( Node nod_i_pt,
Node nod_j_pt 
)

◆ sorter_top_boundary()

bool oomph::TwoDimensionalPMLHelper::sorter_top_boundary ( Node nod_i_pt,
Node nod_j_pt 
)

helper function for sorting the top boundary nodes

Definition at line 45 of file pml_meshes.cc.

References oomph::Node::x().

Referenced by create_top_pml_mesh(), oomph::PMLCornerQuadMesh< ELEMENT >::PMLCornerQuadMesh(), and oomph::PMLQuadMesh< ELEMENT >::PMLQuadMesh().