Acoustic FDTD Solver
Material.hpp
Go to the documentation of this file.
1 #ifndef MATERIAL_HPP
2 #define MATERIAL_HPP
3 
4 #include <cstdlib>
5 #include <vector>
6 #include <iostream>
7 #include <complex>
8 #include <cassert>
9 
10 #define PI 3.141592653589793
11 #define EPS_0 8.854187817620389e-12
12 #define MU_0 1.256637061435917e-6
13 #define ETA_0 3.767303134617707e+2
14 #define C_0 2.99792458e8
27 class Material {
28 public:
29 
30  virtual Material * clone() const = 0;
34  virtual void print() const = 0;
35 
39  virtual bool operator==(const Material &m) const = 0;
40 
41  virtual ~Material() { }
42 
43  /*****************************************************************************/
44 
46  virtual double getBulkModulus() const = 0;
47 
49  virtual double getDensity() const = 0;
50 
51  virtual double getAcousticConductivity() const = 0;
52 
54  virtual double getAcousticPhaseVelocity(const double frequency) const = 0;
55 
57  virtual double getAcousticWavelength(const double frequency) const = 0;
58 
60  virtual std::complex<double> getAcousticWaveNumber(const double frequency) const = 0;
61 
63  virtual std::complex<double> getAcousticImpedance(const double frequency) const = 0;
64 
65  /*****************************************************************************/
66 
68  virtual double getYoungsModulus() const = 0;
69 
71  virtual double getLameFirst() const = 0;
72 
74  virtual double getShearModulus() const = 0;
75 
76  /*****************************************************************************/
77 
79  virtual double getThermalConductivity() const = 0;
80 
82  virtual double getSpecificHeat() const = 0;
83 
85  virtual double getThermalExpansion() const = 0;
86 
87  /*****************************************************************************/
88 
90  virtual double getElectricConductivity() const = 0;
91 
93  virtual double getRelativePermittivity() const = 0;
94 
96  virtual double getRelativePermeability() const = 0;
97 
99  virtual double getMagneticConductivity() const = 0;
100 
102  virtual double getElectromagneticPhaseVelocity(const double frequency) const = 0;
103 
105  virtual double getElectromagneticWavelength(const double frequency) const = 0;
106 
108  virtual std::complex<double> getElectromagneticWaveNumber(const double frequency) const = 0;
109 
111  virtual std::complex<double> getElectromagneticImpedance(const double frequency) const = 0;
112 
113 };
114 
115 #endif