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

Implement the dispersion model proposed in [Holm2011]. More...

#include <HNAcousticProperty.hpp>

Inheritance diagram for HNAcousticProperty:
AcousticProperty MaterialDecorator Material

Public Member Functions

 HNAcousticProperty ()
 HNAcousticProperty (const std::string &name)
 HNAcousticProperty (const double bulk_modls, const double density, const double relax_time, const double retrd_time, const double frac_exp)
 HNAcousticProperty (Material *m, const double bulk_modls, const double density, const double relax_time, const double retrd_time, const double frac_exp)
 HNAcousticProperty (const HNAcousticProperty &the_property)
HNAcousticPropertyoperator= (const HNAcousticProperty &the_property)
HNAcousticPropertyclone () const
void print () const
 Print the parameters associated with the material.
 ~HNAcousticProperty ()
virtual std::complex< double > getAcousticWaveNumber (const double freq) const
 Use the dipersion model to calculate the acoustic wave number.
virtual std::complex< double > getAcousticImpedance (const double freq) const
 Use the dispersion model to calculate the medium impedance.
virtual double getEquivalentBulkModulus (const double freq) const
virtual double getEquivalentConductivity (const double freq) const
- Public Member Functions inherited from AcousticProperty
 AcousticProperty ()
 Acoustic properties of water.
 AcousticProperty (const std::string &name)
 AcousticProperty (const double bulk_modulus, const double density, const double conductive_loss)
 AcousticProperty (Material *m, const double phase_velocity, const double density, const double attn=0)
 AcousticProperty (const AcousticProperty &the_property)
AcousticPropertyoperator= (const AcousticProperty &the_property)
 ~AcousticProperty ()
virtual double getBulkModulus () const
 Acoustic properties.
virtual double getDensity () const
 Acoustic properties.
virtual double getAcousticConductivity () const
virtual double getAcousticPhaseVelocity (const double freq) const
 Acoustic properties.
virtual double getAcousticWavelength (const double freq) const
 Acoustic properties.
virtual double getAbsorptionDepth (const double freq) const
- Public Member Functions inherited from MaterialDecorator
 MaterialDecorator ()
 MaterialDecorator (Material *m)
 MaterialDecorator (const MaterialDecorator &the_decorator)
MaterialDecoratoroperator= (const MaterialDecorator &the_decorator)
bool operator== (const Material &m) const
 The objects need to be equality-comparable to be used with the Flyweight pattern.
virtual ~MaterialDecorator ()
virtual double getYoungsModulus () const
 Elastic properties.
virtual double getLameFirst () const
 Elastic properties, represented by $\lambda$.
virtual double getShearModulus () const
 Elastic properties, represented by $\mu$ or $G$.
virtual double getThermalConductivity () const
 Thermal properties.
virtual double getSpecificHeat () const
 Thermal properties.
virtual double getThermalExpansion () const
 Thermal properties.
virtual double getElectricConductivity () const
 Electromagnetic properties.
virtual double getRelativePermittivity () const
 Electromagnetic properties.
virtual double getMagneticConductivity () const
 Electromagnetic properties.
virtual double getRelativePermeability () const
 Electromagnetic properties.
virtual double getElectromagneticPhaseVelocity (const double frequency) const
 Electromagnetic properties.
virtual double getElectromagneticWavelength (const double frequency) const
 Electromagnetic properties.
virtual std::complex< double > getElectromagneticWaveNumber (const double frequency) const
 Electromagnetic properties.
virtual std::complex< double > getElectromagneticImpedance (const double frequency) const
 Electromagnetic properties.
- Public Member Functions inherited from Material
virtual ~Material ()

Private Attributes

double tau_epsln
double tau_sigma
double a
 Fractional exponent.

Additional Inherited Members

- Static Public Member Functions inherited from AcousticProperty
static double getConductivityFromAttenuation (const double freq, const double attn, const double bulk_modulus, const double density)
 The attenuation is frequently specified for acoustic medium.
- Protected Attributes inherited from AcousticProperty
double K
 phase velocity (m/s)
double rho
 density (kg/m^3)
double xi
 conductive loss

Detailed Description

Implement the dispersion model proposed in [Holm2011].

The constitutive relation is give by

\[ e_r(\omega) = \frac{1}{E_0} \frac{1+(j\omega\tau_\epsilon)^a}{1+(j\omega\tau_\sigma)^a} \]

where $E_0$ denotes the DC bulk modulus, $\tau_\epsilon$ denotes the relaxiation time, $\tau_\sigma$ denotes the retardation time, and $a$ denotes the fractional exponent.

Constructor & Destructor Documentation

HNAcousticProperty::HNAcousticProperty ( )
HNAcousticProperty::HNAcousticProperty ( const std::string &  name)
HNAcousticProperty::HNAcousticProperty ( const double  bulk_modls,
const double  density,
const double  relax_time,
const double  retrd_time,
const double  frac_exp 
)
HNAcousticProperty::HNAcousticProperty ( Material m,
const double  bulk_modls,
const double  density,
const double  relax_time,
const double  retrd_time,
const double  frac_exp 
)
HNAcousticProperty::HNAcousticProperty ( const HNAcousticProperty the_property)
HNAcousticProperty::~HNAcousticProperty ( )

Member Function Documentation

HNAcousticProperty * HNAcousticProperty::clone ( ) const
virtual

Reimplemented from AcousticProperty.

std::complex< double > HNAcousticProperty::getAcousticImpedance ( const double  freq) const
virtual

Use the dispersion model to calculate the medium impedance.

Reimplemented from AcousticProperty.

std::complex< double > HNAcousticProperty::getAcousticWaveNumber ( const double  freq) const
virtual

Use the dipersion model to calculate the acoustic wave number.

Reimplemented from AcousticProperty.

double HNAcousticProperty::getEquivalentBulkModulus ( const double  freq) const
virtual
Returns
Return AcousticProperty::K for all frequencies. When this function is overriden in the child class, its return value is frequency dependent due to the dispersion model.

Reimplemented from AcousticProperty.

double HNAcousticProperty::getEquivalentConductivity ( const double  freq) const
virtual
Returns
Return AcousticProperty::xi for all frequencies. When this function is overriden in the child class, its return value is frequency dependent due to the dispersion model.

Reimplemented from AcousticProperty.

HNAcousticProperty & HNAcousticProperty::operator= ( const HNAcousticProperty the_property)
void HNAcousticProperty::print ( ) const
virtual

Print the parameters associated with the material.

Reimplemented from AcousticProperty.

Member Data Documentation

double HNAcousticProperty::a
private

Fractional exponent.

double HNAcousticProperty::tau_epsln
private
double HNAcousticProperty::tau_sigma
private

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