oomph::BermudezPMLMappingAndTransformedCoordinate Class Reference

#include <pml_fourier_decomposed_helmholtz_elements.h>

+ Inheritance diagram for oomph::BermudezPMLMappingAndTransformedCoordinate:

Public Member Functions

 BermudezPMLMappingAndTransformedCoordinate ()
 Default constructor (empty) More...
 
std::complex< doublegamma (const double &nu_i, const double &pml_width_i, const double &k_squared)
 
std::complex< doubletransformed_coordinate (const double &nu_i, const double &pml_width_i, const double &pml_inner_boundary, const double &k_squared)
 
- Public Member Functions inherited from oomph::PMLMappingAndTransformedCoordinate
 PMLMappingAndTransformedCoordinate ()
 Default constructor (empty) More...
 

Detailed Description

The mapping function propsed by Bermudez et al, appears to be the best and so this will be the default mapping (see definition of PMLHelmholtzEquations)

Constructor & Destructor Documentation

◆ BermudezPMLMappingAndTransformedCoordinate()

oomph::BermudezPMLMappingAndTransformedCoordinate::BermudezPMLMappingAndTransformedCoordinate ( )
inline

Default constructor (empty)

113 {};

Member Function Documentation

◆ gamma()

std::complex<double> oomph::BermudezPMLMappingAndTransformedCoordinate::gamma ( const double nu_i,
const double pml_width_i,
const double k_squared 
)
inlinevirtual

Overwrite the pure PML mapping coefficient function to return the mapping function proposed by Bermudez et al

return \(\gamma=1 + (1/k)(i/|outer_boundary - x|)\) or more abstractly \(\gamma = 1 + \frac i {k\delta_{pml}}(1/|1-\bar\nu|)\)

Implements oomph::PMLMappingAndTransformedCoordinate.

120  {
123  return 1.0 +
124  std::complex<double>(1.0 / sqrt(k_squared), 0) *
125  std::complex<double>(0.0, 1.0 / (std::fabs(pml_width_i - nu_i)));
126  }
AnnoyingScalar sqrt(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:134
Real fabs(const Real &a)
Definition: boostmultiprec.cpp:117

References boost::multiprecision::fabs(), and sqrt().

◆ transformed_coordinate()

std::complex<double> oomph::BermudezPMLMappingAndTransformedCoordinate::transformed_coordinate ( const double nu_i,
const double pml_width_i,
const double pml_inner_boundary,
const double k_squared 
)
inlinevirtual

Overwrite the pure PML mapping coefficient function to return the transformed coordinate proposed by Bermudez et al

return \(\tilde x = h + \nu + \log(1-|\nu / \delta|)\)

Implements oomph::PMLMappingAndTransformedCoordinate.

135  {
137  double log_arg = 1.0 - std::fabs(nu_i / pml_width_i);
138  return std::complex<double>(pml_inner_boundary + nu_i,
139  -log(log_arg) / sqrt(k_squared));
140  }
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 log(const bfloat16 &a)
Definition: BFloat16.h:618

References boost::multiprecision::fabs(), Eigen::bfloat16_impl::log(), and sqrt().


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