oomph::PMLElementBase< DIM > Class Template Referenceabstract

Base class for elements with pml capabilities. More...

#include <pml_meshes.h>

+ Inheritance diagram for oomph::PMLElementBase< DIM >:

Public Member Functions

 PMLElementBase ()
 Constructor. More...
 
virtual ~PMLElementBase ()
 Virtual destructor. More...
 
void disable_pml ()
 
void enable_pml (const int &direction, const double &interface_border_value, const double &outer_domain_border_value)
 
virtual void values_to_be_pinned_on_outer_pml_boundary (Vector< unsigned > &values_to_pin)=0
 

Protected Attributes

bool Pml_is_enabled
 Boolean indicating if element is used in pml mode. More...
 
std::vector< boolPml_direction_active
 
Vector< doublePml_inner_boundary
 
Vector< doublePml_outer_boundary
 

Detailed Description

template<unsigned DIM>
class oomph::PMLElementBase< DIM >

Base class for elements with pml capabilities.

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

Constructor & Destructor Documentation

◆ PMLElementBase()

template<unsigned DIM>
oomph::PMLElementBase< DIM >::PMLElementBase ( )
inline

Constructor.

64  : Pml_is_enabled(false),
65  Pml_direction_active(DIM, false),
66  Pml_inner_boundary(DIM, 0.0),
68  {
69  }
bool Pml_is_enabled
Boolean indicating if element is used in pml mode.
Definition: pml_meshes.h:119
std::vector< bool > Pml_direction_active
Definition: pml_meshes.h:124
Vector< double > Pml_outer_boundary
Definition: pml_meshes.h:134
Vector< double > Pml_inner_boundary
Definition: pml_meshes.h:129
#define DIM
Definition: linearised_navier_stokes_elements.h:44

◆ ~PMLElementBase()

template<unsigned DIM>
virtual oomph::PMLElementBase< DIM >::~PMLElementBase ( )
inlinevirtual

Virtual destructor.

72 {}

Member Function Documentation

◆ disable_pml()

template<unsigned DIM>
void oomph::PMLElementBase< DIM >::disable_pml ( )
inline

Disable pml. Ensures the PML-ification in all directions has been deactivated

77  {
78  // Disable the PML-ification
79  Pml_is_enabled = false;
80 
81  // Loop over the entries in Pml_direction_active and deactivate the
82  // PML in this direction
83  for (unsigned direction = 0; direction < DIM; direction++)
84  {
85  // Disable the PML in this direction
86  Pml_direction_active[direction] = false;
87  }
88  } // End of disable_pml

References DIM, oomph::PMLElementBase< DIM >::Pml_direction_active, and oomph::PMLElementBase< DIM >::Pml_is_enabled.

◆ enable_pml()

template<unsigned DIM>
void oomph::PMLElementBase< DIM >::enable_pml ( const int direction,
const double interface_border_value,
const double outer_domain_border_value 
)
inline

Enable pml. Specify the coordinate direction along which pml boundary is constant, as well as the coordinate along the dimension for the interface between the physical and artificial domains and the coordinate for the outer boundary. All of these are used to adjust the perfectly matched layer mechanism. Needs to be called separately for each pml-ified direction (if needed – e.g. in corner elements)

100  {
101  Pml_is_enabled = true;
102  Pml_direction_active[direction] = true;
103  Pml_inner_boundary[direction] = interface_border_value;
104  Pml_outer_boundary[direction] = outer_domain_border_value;
105  }

References oomph::PMLElementBase< DIM >::Pml_direction_active, oomph::PMLElementBase< DIM >::Pml_inner_boundary, oomph::PMLElementBase< DIM >::Pml_is_enabled, and oomph::PMLElementBase< DIM >::Pml_outer_boundary.

Referenced by oomph::TwoDimensionalPMLHelper::create_bottom_left_pml_mesh(), oomph::TwoDimensionalPMLHelper::create_bottom_pml_mesh(), oomph::TwoDimensionalPMLHelper::create_bottom_right_pml_mesh(), oomph::TwoDimensionalPMLHelper::create_left_pml_mesh(), oomph::TwoDimensionalPMLHelper::create_right_pml_mesh(), oomph::TwoDimensionalPMLHelper::create_top_left_pml_mesh(), oomph::TwoDimensionalPMLHelper::create_top_pml_mesh(), and oomph::TwoDimensionalPMLHelper::create_top_right_pml_mesh().

◆ values_to_be_pinned_on_outer_pml_boundary()

template<unsigned DIM>
virtual void oomph::PMLElementBase< DIM >::values_to_be_pinned_on_outer_pml_boundary ( Vector< unsigned > &  values_to_pin)
pure virtual

Member Data Documentation

◆ Pml_direction_active

template<unsigned DIM>
std::vector<bool> oomph::PMLElementBase< DIM >::Pml_direction_active
protected

Coordinate direction along which pml boundary is constant; alternatively: coordinate direction in which coordinate stretching is performed.

Referenced by oomph::PMLTimeHarmonicLinearElasticityEquationsBase< DIM >::compute_pml_coefficients(), oomph::PMLHelmholtzEquations< DIM >::compute_pml_coefficients(), oomph::PMLElementBase< DIM >::disable_pml(), and oomph::PMLElementBase< DIM >::enable_pml().

◆ Pml_inner_boundary

template<unsigned DIM>
Vector<double> oomph::PMLElementBase< DIM >::Pml_inner_boundary
protected

Coordinate of inner pml boundary (Storage is provided for any coordinate direction; only the entries for "active" directions is used.)

Referenced by oomph::PMLTimeHarmonicLinearElasticityEquationsBase< DIM >::compute_pml_coefficients(), oomph::PMLHelmholtzEquations< DIM >::compute_pml_coefficients(), and oomph::PMLElementBase< DIM >::enable_pml().

◆ Pml_is_enabled

◆ Pml_outer_boundary

template<unsigned DIM>
Vector<double> oomph::PMLElementBase< DIM >::Pml_outer_boundary
protected

Coordinate of outer pml boundary (Storage is provided for any coordinate direction; only the entries for "active" directions is used.)

Referenced by oomph::PMLTimeHarmonicLinearElasticityEquationsBase< DIM >::compute_pml_coefficients(), oomph::PMLHelmholtzEquations< DIM >::compute_pml_coefficients(), and oomph::PMLElementBase< DIM >::enable_pml().


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