23 virtual bool IsGas()
const {
return false; }
39 std::string& label,
double& f);
70 const double ez,
const double bx,
71 const double by,
const double bz,
double& vx,
72 double& vy,
double& vz);
75 const double ez,
const double bx,
76 const double by,
const double bz,
double& dl,
82 const double ez,
const double bx,
83 const double by,
const double bz,
87 const double ez,
const double bx,
88 const double by,
const double bz,
92 const double ez,
const double bx,
93 const double by,
const double bz,
97 const double ez,
const double bx,
98 const double by,
const double bz,
105 const double pz,
double& vx,
double& vy,
106 double& vz,
const int band = 0);
108 double& pz,
int& band);
115 double& e1,
double& dx,
double& dy,
116 double& dz,
int& nion,
int& ndxc,
121 int& type,
double& energy)
const;
126 int& type,
double& energy)
const;
129 virtual bool HoleVelocity(
const double ex,
const double ey,
const double ez,
130 const double bx,
const double by,
const double bz,
131 double& vx,
double& vy,
double& vz);
132 virtual bool HoleDiffusion(
const double ex,
const double ey,
const double ez,
133 const double bx,
const double by,
const double bz,
134 double& dl,
double& dt);
135 virtual bool HoleDiffusion(
const double ex,
const double ey,
const double ez,
136 const double bx,
const double by,
const double bz,
138 virtual bool HoleTownsend(
const double ex,
const double ey,
const double ez,
139 const double bx,
const double by,
const double bz,
141 virtual bool HoleAttachment(
const double ex,
const double ey,
const double ez,
142 const double bx,
const double by,
const double bz,
146 virtual bool IonVelocity(
const double ex,
const double ey,
const double ez,
147 const double bx,
const double by,
const double bz,
148 double& vx,
double& vy,
double& vz);
149 virtual bool IonDiffusion(
const double ex,
const double ey,
const double ez,
150 const double bx,
const double by,
const double bz,
151 double& dl,
double& dt);
154 const double ez,
const double bx,
155 const double by,
const double bz,
double& diss);
158 void SetFieldGrid(
double emin,
double emax,
int ne,
bool logE,
159 double bmin = 0.,
double bmax = 0.,
int nb = 1,
160 double amin = 0.,
double amax = 0.,
int na = 1);
162 const std::vector<double>& bfields,
163 const std::vector<double>& angles);
164 void GetFieldGrid(std::vector<double>& efields, std::vector<double>& bfields,
165 std::vector<double>& angles);
168 const unsigned int ib,
169 const unsigned int ia,
double& v);
171 const unsigned int ib,
172 const unsigned int ia,
double& v);
174 const unsigned int ib,
175 const unsigned int ia,
double& v);
178 const unsigned int ib,
179 const unsigned int ia,
double& dl);
181 const unsigned int ib,
182 const unsigned int ia,
double& dt);
184 const unsigned int ib,
185 const unsigned int ia,
double& alpha);
187 const unsigned int ib,
188 const unsigned int ia,
double& eta);
190 const unsigned int ib,
191 const unsigned int ia,
double& lor);
194 const unsigned int ia,
double& v);
196 const unsigned int ia,
double& v);
198 const unsigned int ia,
double& v);
200 const unsigned int ib,
201 const unsigned int ia,
double& dl);
203 const unsigned int ib,
204 const unsigned int ia,
double& dt);
206 const unsigned int ia,
double& alpha);
208 const unsigned int ia,
double& eta);
211 const unsigned int ia,
double& mu);
213 const unsigned int ib,
214 const unsigned int ia,
double& dl);
216 const unsigned int ib,
217 const unsigned int ia,
double& dt);
219 const unsigned int ib,
220 const unsigned int ia,
double& diss);
236 const unsigned int ia,
const double mu);
238 const std::vector<double>& mobilities);
243 const std::string& extrHigh);
245 const std::string& extrHigh);
247 const std::string& extrHigh);
249 const std::string& extrHigh);
251 const std::string& extrHigh);
253 const std::string& extrHigh);
277 const unsigned int i = 0);
280 const unsigned int i = 0);
283 const unsigned int i = 0);
286 double& e1,
double& ctheta,
int& nsec,
352 std::vector<std::vector<std::vector<std::vector<double> > > >
404 double GetAngle(
const double ex,
const double ey,
const double ez,
405 const double bx,
const double by,
const double bz,
406 const double e,
const double b)
const;
407 double Interpolate1D(
const double e,
const std::vector<double>& table,
408 const std::vector<double>& fields,
409 const unsigned int intpMeth,
410 const int jExtr,
const int iExtr);
412 void CloneTable(std::vector<std::vector<std::vector<double> > >& tab,
413 const std::vector<double>& efields,
414 const std::vector<double>& bfields,
415 const std::vector<double>& angles,
416 const unsigned int intp,
417 const unsigned int extrLow,
const unsigned int extrHigh,
419 const std::string& label);
421 std::vector<std::vector<std::vector<std::vector<double> > > >& tab,
422 const unsigned int n,
423 const std::vector<double>& efields,
424 const std::vector<double>& bfields,
425 const std::vector<double>& angles,
426 const unsigned int intp,
427 const unsigned int extrLow,
const unsigned int extrHigh,
429 const std::string& label);
432 const unsigned int aRes,
433 std::vector<std::vector<std::vector<double> > >& tab,
436 const unsigned int eRes,
const unsigned int bRes,
437 const unsigned int aRes,
const unsigned int tRes,
438 std::vector<std::vector<std::vector<std::vector<double> > > >& tab,
Abstract base class for media.
void ResetHoleAttachment()
virtual void GetComponent(const unsigned int i, std::string &label, double &f)
bool m_hasElectronDiffTens
virtual bool GetPhotonCollision(const double e, int &type, int &level, double &e1, double &ctheta, int &nsec, double &esec)
bool SetIonMobility(const unsigned int ie, const unsigned int ib, const unsigned int ia, const double mu)
virtual double UnScaleElectricField(const double e) const
virtual double ScaleVelocity(const double v) const
void ResetElectronAttachment()
virtual double GetMassDensity() const
unsigned int m_extrLowMobility
std::vector< double > m_bFields
bool GetIonDissociation(const unsigned int ie, const unsigned int ib, const unsigned int ia, double &diss)
virtual void GetElectronMomentum(const double e, double &px, double &py, double &pz, int &band)
bool IsMicroscopic() const
void SetTemperature(const double t)
unsigned int m_intpDiffusion
bool GetElectronVelocityB(const unsigned int ie, const unsigned int ib, const unsigned int ia, double &v)
std::vector< std::vector< std::vector< double > > > tabHoleVelocityE
unsigned int m_extrLowDiffusion
bool GetElectronVelocityE(const unsigned int ie, const unsigned int ib, const unsigned int ia, double &v)
void ResetElectronLorentzAngle()
void CloneTensor(std::vector< std::vector< std::vector< std::vector< double > > > > &tab, const unsigned int n, const std::vector< double > &efields, const std::vector< double > &bfields, const std::vector< double > &angles, const unsigned int intp, const unsigned int extrLow, const unsigned int extrHigh, const double init, const std::string &label)
void SetFanoFactor(const double f)
virtual bool HoleTownsend(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &alpha)
bool m_hasElectronDiffTrans
virtual double ScaleAttachment(const double eta) const
unsigned int m_extrLowLorentzAngle
virtual bool GetElectronCollision(const double e, int &type, int &level, double &e1, double &dx, double &dy, double &dz, int &nion, int &ndxc, int &band)
void SetExtrapolationMethodIonDissociation(const std::string &extrLow, const std::string &extrHigh)
void SetInterpolationMethodIonDissociation(const unsigned int intrp)
double GetAngle(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, const double e, const double b) const
std::vector< std::vector< std::vector< double > > > tabElectronVelocityB
unsigned int m_extrHighAttachment
virtual double ScaleDiffusion(const double d) const
virtual double GetNumberDensity() const
virtual unsigned int GetNumberOfDeexcitationProducts() const
virtual bool HoleVelocity(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &vx, double &vy, double &vz)
unsigned int m_intpMobility
virtual double ScaleLorentzAngle(const double lor) const
unsigned int m_intpAttachment
virtual bool ElectronLorentzAngle(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &lor)
bool GetIonLongitudinalDiffusion(const unsigned int ie, const unsigned int ib, const unsigned int ia, double &dl)
bool m_hasElectronVelocityB
bool GetHoleAttachment(const unsigned int ie, const unsigned int ib, const unsigned int ia, double &eta)
bool GetHoleVelocityExB(const unsigned int ie, const unsigned int ib, const unsigned int ia, double &v)
bool GetExtrapolationIndex(std::string extrStr, unsigned int &extrNb)
void ResetIonDissociation()
bool GetElectronAttachment(const unsigned int ie, const unsigned int ib, const unsigned int ia, double &eta)
unsigned int m_extrHighDiffusion
virtual bool GetDielectricFunction(const double e, double &eps1, double &eps2, const unsigned int i=0)
std::vector< std::vector< std::vector< double > > > tabIonDissociation
unsigned int m_extrHighMobility
double GetDielectricConstant() const
std::vector< std::vector< std::vector< double > > > tabElectronVelocityE
void SetFieldGrid(double emin, double emax, int ne, bool logE, double bmin=0., double bmax=0., int nb=1, double amin=0., double amax=0., int na=1)
virtual void SetNumberDensity(const double n)
unsigned int m_intpTownsend
unsigned int m_extrLowAttachment
unsigned int m_extrHighDissociation
void InitParamArrays(const unsigned int eRes, const unsigned int bRes, const unsigned int aRes, std::vector< std::vector< std::vector< double > > > &tab, const double val)
double GetPressure() const
double Interpolate1D(const double e, const std::vector< double > &table, const std::vector< double > &fields, const unsigned int intpMeth, const int jExtr, const int iExtr)
virtual bool ElectronVelocity(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &vx, double &vy, double &vz)
virtual bool IonVelocity(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &vx, double &vy, double &vz)
bool GetIonMobility(const unsigned int ie, const unsigned int ib, const unsigned int ia, double &mu)
unsigned int m_intpVelocity
void SetExtrapolationMethodTownsend(const std::string &extrLow, const std::string &extrHigh)
std::vector< std::vector< std::vector< double > > > tabElectronDiffLong
virtual void SetAtomicNumber(const double z)
virtual double GetAtomicWeight() const
std::vector< std::vector< std::vector< double > > > tabElectronLorentzAngle
unsigned int m_extrHighLorentzAngle
void SetExtrapolationMethodIonMobility(const std::string &extrLow, const std::string &extrHigh)
virtual double ScaleElectricField(const double e) const
std::vector< std::vector< std::vector< double > > > tabElectronAttachment
virtual double ScaleDiffusionTensor(const double d) const
unsigned int GetNumberOfComponents() const
virtual double GetElectronNullCollisionRate(const int band=0)
virtual double GetAtomicNumber() const
bool GetElectronTownsend(const unsigned int ie, const unsigned int ib, const unsigned int ia, double &alpha)
bool GetElectronLorentzAngle(const unsigned int ie, const unsigned int ib, const unsigned int ia, double &lor)
virtual bool GetIonisationProduct(const unsigned int i, int &type, double &energy) const
unsigned int m_extrLowVelocity
virtual double ScaleTownsend(const double alpha) const
void DisablePrimaryIonisation()
virtual double GetPhotonCollisionRate(const double e)
void SetDielectricConstant(const double eps)
unsigned int m_extrHighTownsend
virtual void EnableDrift()
virtual bool GetDeexcitationProduct(const unsigned int i, double &t, double &s, int &type, double &energy) const
virtual double GetElectronCollisionRate(const double e, const int band=0)
bool GetHoleTownsend(const unsigned int ie, const unsigned int ib, const unsigned int ia, double &alpha)
void SetInterpolationMethodVelocity(const unsigned int intrp)
virtual bool ElectronDiffusion(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &dl, double &dt)
unsigned int m_extrHighVelocity
void SetInterpolationMethodDiffusion(const unsigned int intrp)
std::vector< std::vector< std::vector< double > > > tabHoleTownsend
unsigned int m_extrLowTownsend
void SetExtrapolationMethodDiffusion(const std::string &extrLow, const std::string &extrHigh)
std::vector< double > m_eFields
void GetFieldGrid(std::vector< double > &efields, std::vector< double > &bfields, std::vector< double > &angles)
std::vector< std::vector< std::vector< std::vector< double > > > > tabHoleDiffTens
virtual bool ElectronTownsend(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &alpha)
void ResetElectronDiffusion()
virtual bool IsSemiconductor() const
std::vector< std::vector< std::vector< double > > > tabIonDiffTrans
virtual bool GetOpticalDataRange(double &emin, double &emax, const unsigned int i=0)
virtual void SetMassDensity(const double rho)
void CloneTable(std::vector< std::vector< std::vector< double > > > &tab, const std::vector< double > &efields, const std::vector< double > &bfields, const std::vector< double > &angles, const unsigned int intp, const unsigned int extrLow, const unsigned int extrHigh, const double init, const std::string &label)
virtual double ScaleDissociation(const double diss) const
bool GetElectronVelocityExB(const unsigned int ie, const unsigned int ib, const unsigned int ia, double &v)
unsigned int m_extrLowDissociation
const std::string & GetName() const
std::vector< std::vector< std::vector< std::vector< double > > > > tabElectronDiffTens
std::vector< double > m_bAngles
virtual bool IsGas() const
void InitParamTensor(const unsigned int eRes, const unsigned int bRes, const unsigned int aRes, const unsigned int tRes, std::vector< std::vector< std::vector< std::vector< double > > > > &tab, const double val)
bool GetElectronTransverseDiffusion(const unsigned int ie, const unsigned int ib, const unsigned int ia, double &dt)
virtual double GetElectronEnergy(const double px, const double py, const double pz, double &vx, double &vy, double &vz, const int band=0)
void SetInterpolationMethodIonMobility(const unsigned int intrp)
std::vector< std::vector< std::vector< double > > > tabHoleVelocityExB
void SetExtrapolationMethodVelocity(const std::string &extrLow, const std::string &extrHigh)
virtual bool ElectronAttachment(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &eta)
bool m_hasElectronVelocityExB
std::vector< std::vector< std::vector< double > > > tabIonMobility
bool m_hasElectronLorentzAngle
void SetPressure(const double p)
bool GetHoleVelocityE(const unsigned int ie, const unsigned int ib, const unsigned int ia, double &v)
int thrElectronAttachment
bool GetHoleVelocityB(const unsigned int ie, const unsigned int ib, const unsigned int ia, double &v)
bool m_hasElectronDiffLong
std::vector< std::vector< std::vector< double > > > tabHoleDiffTrans
virtual void EnablePrimaryIonisation()
virtual void SetAtomicWeight(const double a)
void SetExtrapolationMethodAttachment(const std::string &extrLow, const std::string &extrHigh)
unsigned int m_intpLorentzAngle
std::vector< std::vector< std::vector< double > > > tabHoleVelocityB
std::vector< std::vector< std::vector< double > > > tabHoleDiffLong
unsigned int m_nComponents
virtual unsigned int GetNumberOfIonisationProducts() const
std::vector< std::vector< std::vector< double > > > tabIonDiffLong
bool GetHoleTransverseDiffusion(const unsigned int ie, const unsigned int ib, const unsigned int ia, double &dt)
bool GetElectronLongitudinalDiffusion(const unsigned int ie, const unsigned int ib, const unsigned int ia, double &dl)
void SetInterpolationMethodAttachment(const unsigned int intrp)
virtual bool HoleDiffusion(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &dl, double &dt)
double GetTemperature() const
bool GetHoleLongitudinalDiffusion(const unsigned int ie, const unsigned int ib, const unsigned int ia, double &dl)
std::vector< std::vector< std::vector< double > > > tabHoleAttachment
virtual bool IonDissociation(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &diss)
bool m_hasIonDissociation
unsigned int m_intpDissociation
void ResetHoleDiffusion()
bool m_hasHoleVelocityExB
bool m_hasElectronVelocityE
void SetW(const double w)
std::vector< std::vector< std::vector< double > > > tabElectronTownsend
bool m_hasElectronAttachment
void ResetElectronTownsend()
virtual bool HoleAttachment(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &eta)
void ResetElectronVelocity()
void SetInterpolationMethodTownsend(const unsigned int intrp)
virtual bool GetPhotoAbsorptionCrossSection(const double e, double &sigma, const unsigned int i=0)
virtual bool IonDiffusion(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &dl, double &dt)
std::vector< std::vector< std::vector< double > > > tabElectronDiffTrans
std::vector< std::vector< std::vector< double > > > tabElectronVelocityExB
bool GetIonTransverseDiffusion(const unsigned int ie, const unsigned int ib, const unsigned int ia, double &dt)