Class for PML in polar coordinates. More...

#include <pml_formula.h>

Inheritance diagram for concepts::FormulaPMLRadia:
concepts::ElementFormula< Cmplx > concepts::Cloneable concepts::OutputOperator

Public Types

enum  PMLMode {
  AD1, AD2, AS, IDENT,
  AD1, AD2, AS1, AS2,
  IDENT
}
 
enum  PMLMode {
  AD1, AD2, AS, IDENT,
  AD1, AD2, AS1, AS2,
  IDENT
}
 
typedef Cmplx value_type
 

Public Member Functions

Real c_c (Real2d &p) const
 
virtual FormulaPMLRadiaclone () const
 Virtual constructor. More...
 
virtual FormulaPMLRadiaclone () const
 Virtual constructor. More...
 
virtual ElementFormula< Cmplx, typename Realtype< Cmplx >::type > * clone () const=0
 Virtual copy constructor. More...
 
 FormulaPMLRadia (const ElementFormulaContainer< Cmplx > coeff_a, const ElementFormulaContainer< Cmplx > coeff_b, RCP< concepts::Formula< Real > > sigma, RCP< concepts::Formula< Real > > sigmaB, PMLMode mode, double omega)
 Constructor. More...
 
 FormulaPMLRadia (RCP< Formula< Real > > sigma, RCP< Formula< Real > > sigmaB, PMLMode mode, const Real2d &center=Real2d(0, 0))
 Constructor. More...
 
Cmplx gamma (Real2d &p) const
 Returns the parameter gamma in page 2067(no equation number) of the above article. More...
 
Cmplx gammaB (Real2d &p) const
 Returns the parameter gamma bar in page 2067(no equation number) of the above article. More...
 
virtual Cmplx operator() (const ElementWithCell< Real > &elm, const Real p, const Real t=0.0) const
 
virtual Cmplx operator() (const ElementWithCell< Real > &elm, const Real p, const Real t=0.0) const
 
virtual Cmplx operator() (const ElementWithCell< Real > &elm, const Real2d &p, const Real t=0.0) const
 
virtual Cmplx operator() (const ElementWithCell< Real > &elm, const Real2d &p, const Real t=0.0) const
 
virtual Cmplx operator() (const ElementWithCell< Real > &elm, const Real3d &p, const Real t=0.0) const
 
virtual Cmplx operator() (const ElementWithCell< Real > &elm, const Real3d &p, const Real t=0.0) const
 
virtual Cmplx operator() (const ElementWithCell< typename Realtype< Cmplx >::type > &elm, const Real p, const Real t=0.0) const=0
 Evaluates the formula. More...
 
virtual Cmplx operator() (const ElementWithCell< typename Realtype< Cmplx >::type > &elm, const Real2d &p, const Real t=0.0) const=0
 Evaluates the formula. More...
 
virtual Cmplx operator() (const ElementWithCell< typename Realtype< Cmplx >::type > &elm, const Real3d &p, const Real t=0.0) const=0
 Evaluates the formula. More...
 
Real s_c (Real2d &p) const
 
Real s_s (Real2d &p) const
 
RCP< Formula< Real > > sigma () const
 
RCP< Formula< Real > > sigmaB () const
 

Protected Member Functions

virtual std::ostream & info (std::ostream &os) const
 Returns information in an output stream. More...
 
virtual std::ostream & info (std::ostream &os) const
 Returns information in an output stream. More...
 

Private Member Functions

Cmplx gamma_ (Real2d &p) const
 Returns the parameter $\gamma$ on page 2067 (no equation number) of the above article. More...
 
Cmplx gammaB_ (Real2d &p) const
 Returns the parameter $\overline{gamma}$ on page 2067 (no equation number) of the above article. More...
 

Private Attributes

Real2d center_
 Center of PML. More...
 
const ElementFormulaContainer< Cmplxcoeff_a
 globally defined material, piecewise constant dielectric More...
 
const ElementFormulaContainer< Cmplxcoeff_b
 
PMLMode mode
 The choosen mode. More...
 
PMLMode mode_
 The choosen mode. More...
 
double omega
 The wave number. More...
 
RCP< concepts::Formula< Real > > sigma
 sigma function, which takes the general form of $PMLstrength*(\rho-PMLdist)^{powercoeff}$ More...
 
RCP< Formula< Real > > sigma_
 Function $\sigma: \mathbb{R}^2\to\mathbb{R}$. More...
 
RCP< concepts::Formula< Real > > sigmaB
 sigma bar function, given in the above article page 2067, the average of sigma More...
 
RCP< Formula< Real > > sigmaB_
 Function $\overline{\sigma}: \mathbb{R}^2\to\mathbb{R}$. More...
 

Detailed Description

Class for PML in polar coordinates.

Class for radial PML in polar coordinates.

The class is either one of the formulas needed for PML in polar coordinates, which are determined by one of the following modes.

There are four modes of the formula. AD1 First diagonal entry of matrix A. AD2 Second diagonal entry of matrix A. AS A12 = A21 = AS IDENT The term for MASS matrix

Taken from the article: F.Collino and P.Monk, The perfectly matched layer in curvilinear coordinates, SIAM J.Sci Comput. 19(6)(1998)2061-2090"

Author
Mengyu Wang, 2010

The class provides formulas for radial PML in polar coordinates, which are determined by one of the following modes:

AD1 First diagonal entry of matrix A. AD2 Second diagonal entry of matrix A. AS Both off-diagonal entries of matrix A. IDENT The term for mass matrix

Author
Mengyu Wang, 2010

Definition at line 834 of file pml_formula.h.

Member Typedef Documentation

◆ value_type

typedef Cmplx concepts::ElementFormula< Cmplx , typename Realtype<Cmplx >::type >::value_type
inherited

Definition at line 37 of file elementFormula.hh.

Member Enumeration Documentation

◆ PMLMode [1/2]

Enumerator
AD1 
AD2 
AS 
IDENT 
AD1 
AD2 
AS1 
AS2 
IDENT 

Definition at line 836 of file pml_formula.h.

◆ PMLMode [2/2]

Enumerator
AD1 
AD2 
AS 
IDENT 
AD1 
AD2 
AS1 
AS2 
IDENT 

Definition at line 434 of file pml_formula.hh.

Constructor & Destructor Documentation

◆ FormulaPMLRadia() [1/2]

concepts::FormulaPMLRadia::FormulaPMLRadia ( const ElementFormulaContainer< Cmplx coeff_a,
const ElementFormulaContainer< Cmplx coeff_b,
RCP< concepts::Formula< Real > >  sigma,
RCP< concepts::Formula< Real > >  sigmaB,
PMLMode  mode,
double  omega 
)
inline

Constructor.

Parameters
coeff_aElement formula for material alpha in the global domain
coeff_bElement formula for material beta in the global domain
sigmaFormula for sigma, which takes the general form of $PMLstrength*(\rho-PMLdist)^{powercoeff}$
sigmaBFormula for sigmabar in the above article, page 2067
modeMode
omegaWave number

Definition at line 849 of file pml_formula.h.

◆ FormulaPMLRadia() [2/2]

concepts::FormulaPMLRadia::FormulaPMLRadia ( RCP< Formula< Real > >  sigma,
RCP< Formula< Real > >  sigmaB,
PMLMode  mode,
const Real2d center = Real2d(0, 0) 
)

Constructor.

Parameters
sigmaFunction $\sigma: \mathbb{R}^2\to\mathbb{R}$
sigmaBFunction $\overline{\sigma}: \mathbb{R}^2\to\mathbb{R}$
modeOne of the four modes

In the report of Monk & Collino (see page 2067) the functions $sigma$ and $\overline{sigma}$ are weighted by $1/\omega$. To do so, multiply the formulas in advance by this factor.

Member Function Documentation

◆ c_c()

Real concepts::FormulaPMLRadia::c_c ( Real2d p) const
inline

Definition at line 888 of file pml_formula.h.

◆ clone() [1/3]

virtual FormulaPMLRadia* concepts::FormulaPMLRadia::clone ( ) const
inlinevirtual

Virtual constructor.

Returns a pointer to a copy of itself. The caller is responsible to destroy this copy.

Implements concepts::Cloneable.

Definition at line 864 of file pml_formula.h.

◆ clone() [2/3]

virtual FormulaPMLRadia* concepts::FormulaPMLRadia::clone ( ) const
inlinevirtual

Virtual constructor.

Returns a pointer to a copy of itself. The caller is responsible to destroy this copy.

Implements concepts::Cloneable.

Definition at line 450 of file pml_formula.hh.

◆ clone() [3/3]

virtual ElementFormula<Cmplx ,typename Realtype<Cmplx >::type >* concepts::ElementFormula< Cmplx , typename Realtype<Cmplx >::type >::clone ( ) const
pure virtualinherited

Virtual copy constructor.

◆ gamma()

Cmplx concepts::FormulaPMLRadia::gamma ( Real2d p) const
inline

Returns the parameter gamma in page 2067(no equation number) of the above article.

Definition at line 880 of file pml_formula.h.

◆ gamma_()

Cmplx concepts::FormulaPMLRadia::gamma_ ( Real2d p) const
inlineprivate

Returns the parameter $\gamma$ on page 2067 (no equation number) of the above article.

Definition at line 479 of file pml_formula.hh.

◆ gammaB()

Cmplx concepts::FormulaPMLRadia::gammaB ( Real2d p) const
inline

Returns the parameter gamma bar in page 2067(no equation number) of the above article.

Definition at line 884 of file pml_formula.h.

◆ gammaB_()

Cmplx concepts::FormulaPMLRadia::gammaB_ ( Real2d p) const
inlineprivate

Returns the parameter $\overline{gamma}$ on page 2067 (no equation number) of the above article.

Definition at line 485 of file pml_formula.hh.

◆ info() [1/2]

virtual std::ostream& concepts::FormulaPMLRadia::info ( std::ostream &  os) const
inlineprotectedvirtual

Returns information in an output stream.

Reimplemented from concepts::OutputOperator.

Definition at line 914 of file pml_formula.h.

◆ info() [2/2]

virtual std::ostream& concepts::FormulaPMLRadia::info ( std::ostream &  os) const
protectedvirtual

Returns information in an output stream.

Reimplemented from concepts::OutputOperator.

◆ operator()() [1/9]

virtual Cmplx concepts::FormulaPMLRadia::operator() ( const ElementWithCell< Real > &  elm,
const Real  p,
const Real  t = 0.0 
) const
inlinevirtual

Definition at line 874 of file pml_formula.h.

◆ operator()() [2/9]

virtual Cmplx concepts::FormulaPMLRadia::operator() ( const ElementWithCell< Real > &  elm,
const Real  p,
const Real  t = 0.0 
) const
virtual

◆ operator()() [3/9]

virtual Cmplx concepts::FormulaPMLRadia::operator() ( const ElementWithCell< Real > &  elm,
const Real2d p,
const Real  t = 0.0 
) const
inlinevirtual

Definition at line 900 of file pml_formula.h.

◆ operator()() [4/9]

virtual Cmplx concepts::FormulaPMLRadia::operator() ( const ElementWithCell< Real > &  elm,
const Real2d p,
const Real  t = 0.0 
) const
virtual

◆ operator()() [5/9]

virtual Cmplx concepts::FormulaPMLRadia::operator() ( const ElementWithCell< Real > &  elm,
const Real3d p,
const Real  t = 0.0 
) const
inlinevirtual

Definition at line 868 of file pml_formula.h.

◆ operator()() [6/9]

virtual Cmplx concepts::FormulaPMLRadia::operator() ( const ElementWithCell< Real > &  elm,
const Real3d p,
const Real  t = 0.0 
) const
virtual

◆ operator()() [7/9]

virtual Cmplx concepts::ElementFormula< Cmplx , typename Realtype<Cmplx >::type >::operator() ( const ElementWithCell< G > &  elm,
const Real  p,
const Real  t = 0.0 
) const
pure virtualinherited

Evaluates the formula.

Parameters
elmElement
pPoint in space in local element coordinates
tPoint in time

◆ operator()() [8/9]

virtual Cmplx concepts::ElementFormula< Cmplx , typename Realtype<Cmplx >::type >::operator() ( const ElementWithCell< G > &  elm,
const Real2d p,
const Real  t = 0.0 
) const
pure virtualinherited

Evaluates the formula.

Parameters
elmElement
pPoint in space in local element coordinates
tPoint in time

◆ operator()() [9/9]

virtual Cmplx concepts::ElementFormula< Cmplx , typename Realtype<Cmplx >::type >::operator() ( const ElementWithCell< G > &  elm,
const Real3d p,
const Real  t = 0.0 
) const
pure virtualinherited

Evaluates the formula.

Parameters
elmElement
pPoint in space in local element coordinates
tPoint in time

◆ s_c()

Real concepts::FormulaPMLRadia::s_c ( Real2d p) const
inline

Definition at line 896 of file pml_formula.h.

◆ s_s()

Real concepts::FormulaPMLRadia::s_s ( Real2d p) const
inline

Definition at line 892 of file pml_formula.h.

◆ sigma()

RCP<Formula<Real> > concepts::FormulaPMLRadia::sigma ( ) const
inline

Definition at line 461 of file pml_formula.hh.

◆ sigmaB()

RCP<Formula<Real> > concepts::FormulaPMLRadia::sigmaB ( ) const
inline

Definition at line 462 of file pml_formula.hh.

Member Data Documentation

◆ center_

Real2d concepts::FormulaPMLRadia::center_
private

Center of PML.

Definition at line 473 of file pml_formula.hh.

◆ coeff_a

const ElementFormulaContainer<Cmplx> concepts::FormulaPMLRadia::coeff_a
private

globally defined material, piecewise constant dielectric

Definition at line 920 of file pml_formula.h.

◆ coeff_b

const ElementFormulaContainer<Cmplx> concepts::FormulaPMLRadia::coeff_b
private

Definition at line 921 of file pml_formula.h.

◆ mode

PMLMode concepts::FormulaPMLRadia::mode
private

The choosen mode.

Definition at line 927 of file pml_formula.h.

◆ mode_

PMLMode concepts::FormulaPMLRadia::mode_
private

The choosen mode.

Definition at line 471 of file pml_formula.hh.

◆ omega

double concepts::FormulaPMLRadia::omega
private

The wave number.

Definition at line 929 of file pml_formula.h.

◆ sigma

RCP<concepts::Formula<Real> > concepts::FormulaPMLRadia::sigma
private

sigma function, which takes the general form of $PMLstrength*(\rho-PMLdist)^{powercoeff}$

Definition at line 923 of file pml_formula.h.

◆ sigma_

RCP<Formula<Real> > concepts::FormulaPMLRadia::sigma_
private

Function $\sigma: \mathbb{R}^2\to\mathbb{R}$.

Definition at line 467 of file pml_formula.hh.

◆ sigmaB

RCP<concepts::Formula<Real> > concepts::FormulaPMLRadia::sigmaB
private

sigma bar function, given in the above article page 2067, the average of sigma

Definition at line 925 of file pml_formula.h.

◆ sigmaB_

RCP<Formula<Real> > concepts::FormulaPMLRadia::sigmaB_
private

Function $\overline{\sigma}: \mathbb{R}^2\to\mathbb{R}$.

Definition at line 469 of file pml_formula.hh.


The documentation for this class was generated from the following files:
Page URL: http://wiki.math.ethz.ch/bin/view/Concepts/WebHome
21 August 2020
© 2020 Eidgenössische Technische Hochschule Zürich