Acoustic FDTD Solver
Public Member Functions | Private Member Functions | Private Attributes | List of all members
ACFDTD22MemEfficient Class Reference

Same as ACFDTD22 except that UPML is assumed to truncate the boundaries. More...

#include <ACFDTD22MemEfficient.hpp>

Inheritance diagram for ACFDTD22MemEfficient:
ACFDTD22

Public Member Functions

 ACFDTD22MemEfficient (const double frequency, const double cfl_number)
virtual void calcCoefficients (const Model &model, const Grid &grid)
 Calculate the coefficients of the FDTD update equations.
virtual void execute (const Grid &grid, const CartPosition &sig_loc, const Function *signal, const double time_span, const std::vector< Sensor * > &sen_vec, const unsigned negY=BC_PRESS, const unsigned posY=BC_PRESS, const unsigned negZ=BC_PRESS, const unsigned posZ=BC_PRESS)
 Engine to handle the hard acoustic pressure source.
virtual void execute (const Model &model, const Grid &grid, const HardPlaneWaveSource &source, const double time_span, const std::vector< Sensor * > &sen_vec, const unsigned negY=BC_PRESS, const unsigned posY=BC_PRESS, const unsigned negZ=BC_PRESS, const unsigned posZ=BC_PRESS)
 Engine to handle the hard plane wave source.
virtual ~ACFDTD22MemEfficient ()
- Public Member Functions inherited from ACFDTD22
 ACFDTD22 ()
 ACFDTD22 (const double frequency, const double cfl_number)
virtual double getDeltaT () const
virtual unsigned getnTimeSteps () const
virtual ~ACFDTD22 ()

Private Member Functions

void parseModel (const Model &model, const Grid &grid)

Private Attributes

unsigned short ** bya
unsigned short ** byb
unsigned short ** bza
unsigned short ** bzb
unsigned short ** pra
unsigned short ** prb
unsigned short ** prc
 Points to ACFDTD22MemEfficient::prb.
unsigned short ** prd
unsigned short ** pre
 Points to ACFDTD22MemEfficient::prd.
unsigned short ** aya
unsigned short ** ayb
unsigned short ** aza
unsigned short ** azb
unsigned short uya
 Its value is always 1.
unsigned short ** uyb
unsigned short ** uyc
unsigned short uza
 Its value is always 1.
unsigned short ** uzb
 Points to ACFDTD22MemEfficient::uyb.
unsigned short ** uzc
 Points to ACFDTD22MemEfficient::uyc.

Additional Inherited Members

- Protected Attributes inherited from ACFDTD22
UniqueCoefficientContainer container
 populated in ACFDTD22::calcCoefficients()
std::string sim_name
double f_c
 Central frequency.
double S
 CFL number.
double dt
 temporal step.
unsigned nTimeSteps
 Initialized in ACFDTD22::execute().

Detailed Description

Same as ACFDTD22 except that UPML is assumed to truncate the boundaries.

As a consequence, some coefficients are not needed.

Constructor & Destructor Documentation

ACFDTD22MemEfficient::ACFDTD22MemEfficient ( const double  frequency,
const double  cfl_number 
)
ACFDTD22MemEfficient::~ACFDTD22MemEfficient ( )
virtual

Member Function Documentation

void ACFDTD22MemEfficient::calcCoefficients ( const Model model,
const Grid grid 
)
virtual

Calculate the coefficients of the FDTD update equations.

If the Model contains the PML around its boundaries, this function also calculates the coefficients in the PML region. See notes on 2012-05-14 for the expression of the coefficients.

Reimplemented from ACFDTD22.

virtual void ACFDTD22MemEfficient::execute ( const Grid grid,
const CartPosition sig_loc,
const Function signal,
const double  time_span,
const std::vector< Sensor * > &  sen_vec,
const unsigned  negY = BC_PRESS,
const unsigned  posY = BC_PRESS,
const unsigned  negZ = BC_PRESS,
const unsigned  posZ = BC_PRESS 
)
virtual

Engine to handle the hard acoustic pressure source.

Reimplemented from ACFDTD22.

virtual void ACFDTD22MemEfficient::execute ( const Model model,
const Grid grid,
const HardPlaneWaveSource source,
const double  time_span,
const std::vector< Sensor * > &  sen_vec,
const unsigned  negY = BC_PRESS,
const unsigned  posY = BC_PRESS,
const unsigned  negZ = BC_PRESS,
const unsigned  posZ = BC_PRESS 
)
virtual

Engine to handle the hard plane wave source.

On the boundary conditions, if BC_PRESS is specified on a boundary, the acoustic pressure is set to 0 on that boundary.

If BC_RIGID is specified on a boundary, the particle velocity normal to the boundary is set to 0.

If BC_PERIODIC is specifified on a boundary, then it is assumed that BC_PERIODIC is also specified on the opposite boundary. The values of the acoustic pressure on the positive boundary are copied to the values of the acoustic pressure on the negative boundary to impose the periodicity.

Reimplemented from ACFDTD22.

void ACFDTD22MemEfficient::parseModel ( const Model model,
const Grid grid 
)
private

Member Data Documentation

unsigned short** ACFDTD22MemEfficient::aya
private
unsigned short ** ACFDTD22MemEfficient::ayb
private
unsigned short ** ACFDTD22MemEfficient::aza
private
unsigned short ** ACFDTD22MemEfficient::azb
private
unsigned short** ACFDTD22MemEfficient::bya
private
unsigned short ** ACFDTD22MemEfficient::byb
private
unsigned short ** ACFDTD22MemEfficient::bza
private
unsigned short ** ACFDTD22MemEfficient::bzb
private
unsigned short** ACFDTD22MemEfficient::pra
private
unsigned short** ACFDTD22MemEfficient::prb
private
unsigned short** ACFDTD22MemEfficient::prc
private
unsigned short** ACFDTD22MemEfficient::prd
private
unsigned short** ACFDTD22MemEfficient::pre
private
unsigned short ACFDTD22MemEfficient::uya
private

Its value is always 1.

unsigned short** ACFDTD22MemEfficient::uyb
private
unsigned short** ACFDTD22MemEfficient::uyc
private
unsigned short ACFDTD22MemEfficient::uza
private

Its value is always 1.

unsigned short** ACFDTD22MemEfficient::uzb
private
unsigned short** ACFDTD22MemEfficient::uzc
private

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