Public Member Functions | Protected Attributes | List of all members
oomph::PMLElementBase< DIM > Class Template Referenceabstract

///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// 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 ()
 Disable pml. Ensures the PML-ification in all directions has been deactivated. More...
 
void enable_pml (const int &direction, const double &interface_border_value, const double &outer_domain_border_value)
 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) More...
 
virtual void values_to_be_pinned_on_outer_pml_boundary (Vector< unsigned > &values_to_pin)=0
 Pure virtual function in which we have to specify the values to be pinned (and set to zero) on the outer edge of the pml layer. This is usually all of the nodal values (values 0 and 1 (real and imag part) for Helmholtz; values 0,1,2 and 3 (real and imag part of x- and y-displacement for 2D time-harmonic linear elasticity; etc.). Vector must be resized internally! More...
 

Protected Attributes

bool Pml_is_enabled
 Boolean indicating if element is used in pml mode. More...
 
std::vector< bool > Pml_direction_active
 Coordinate direction along which pml boundary is constant; alternatively: coordinate direction in which coordinate stretching is performed. More...
 
Vector< double > Pml_inner_boundary
 Coordinate of inner pml boundary (Storage is provided for any coordinate direction; only the entries for "active" directions is used.) More...
 
Vector< double > Pml_outer_boundary
 Coordinate of outer pml boundary (Storage is provided for any coordinate direction; only the entries for "active" directions is used.) More...
 

Detailed Description

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

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

Base class for elements with pml capabilities

Definition at line 59 of file pml_meshes.h.

Constructor & Destructor Documentation

◆ PMLElementBase()

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

Constructor.

Definition at line 63 of file pml_meshes.h.

◆ ~PMLElementBase()

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

Virtual destructor.

Definition at line 72 of file pml_meshes.h.

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.

Definition at line 76 of file pml_meshes.h.

References 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)

Definition at line 97 of file pml_meshes.h.

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

Pure virtual function in which we have to specify the values to be pinned (and set to zero) on the outer edge of the pml layer. This is usually all of the nodal values (values 0 and 1 (real and imag part) for Helmholtz; values 0,1,2 and 3 (real and imag part of x- and y-displacement for 2D time-harmonic linear elasticity; etc.). Vector must be resized internally!

Implemented in oomph::PMLTimeHarmonicLinearElasticityEquationsBase< DIM >, oomph::PMLHelmholtzEquations< DIM >, and oomph::PMLFourierDecomposedHelmholtzEquations.

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().

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.

Definition at line 124 of file pml_meshes.h.

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.)

Definition at line 129 of file pml_meshes.h.

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

◆ Pml_is_enabled

template<unsigned DIM>
bool oomph::PMLElementBase< DIM >::Pml_is_enabled
protected

◆ 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.)

Definition at line 134 of file pml_meshes.h.

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: