23 virtual bool IsGas()
const {
return false; }
39 std::string& label,
double& f);
62 void SetW(
const double& w) {
72 const double ez,
const double bx,
73 const double by,
const double bz,
double& vx,
74 double& vy,
double& vz);
77 const double ez,
const double bx,
78 const double by,
const double bz,
double& dl,
84 const double ez,
const double bx,
85 const double by,
const double bz,
89 const double ez,
const double bx,
90 const double by,
const double bz,
94 const double ez,
const double bx,
95 const double by,
const double bz,
102 const double pz,
double& vx,
double& vy,
103 double& vz,
const int band = 0);
105 double& pz,
int& band);
112 double& e1,
double& dx,
double& dy,
113 double& dz,
int& nion,
int& ndxc,
121 int& type,
double& energy);
124 virtual bool HoleVelocity(
const double ex,
const double ey,
const double ez,
125 const double bx,
const double by,
const double bz,
126 double& vx,
double& vy,
double& vz);
127 virtual bool HoleDiffusion(
const double ex,
const double ey,
const double ez,
128 const double bx,
const double by,
const double bz,
129 double& dl,
double& dt);
130 virtual bool HoleDiffusion(
const double ex,
const double ey,
const double ez,
131 const double bx,
const double by,
const double bz,
133 virtual bool HoleTownsend(
const double ex,
const double ey,
const double ez,
134 const double bx,
const double by,
const double bz,
136 virtual bool HoleAttachment(
const double ex,
const double ey,
const double ez,
137 const double bx,
const double by,
const double bz,
141 virtual bool IonVelocity(
const double ex,
const double ey,
const double ez,
142 const double bx,
const double by,
const double bz,
143 double& vx,
double& vy,
double& vz);
144 virtual bool IonDiffusion(
const double ex,
const double ey,
const double ez,
145 const double bx,
const double by,
const double bz,
146 double& dl,
double& dt);
149 const double ez,
const double bx,
150 const double by,
const double bz,
double& diss);
153 void SetFieldGrid(
double emin,
double emax,
int ne,
bool logE,
154 double bmin = 0.,
double bmax = 0.,
int nb = 1,
155 double amin = 0.,
double amax = 0.,
int na = 1);
157 const std::vector<double>& bfields,
158 const std::vector<double>& angles);
159 void GetFieldGrid(std::vector<double>& efields, std::vector<double>& bfields,
160 std::vector<double>& angles);
163 const unsigned int& ib,
164 const unsigned int& ia,
double& v);
166 const unsigned int& ib,
167 const unsigned int& ia,
double& v);
169 const unsigned int& ib,
170 const unsigned int& ia,
double& v);
173 const unsigned int& ib,
174 const unsigned int& ia,
double& dl);
176 const unsigned int& ib,
177 const unsigned int& ia,
double& dt);
179 const unsigned int& ib,
180 const unsigned int& ia,
double& alpha);
182 const unsigned int& ib,
183 const unsigned int& ia,
double& eta);
186 const unsigned int& ia,
double& v);
188 const unsigned int& ia,
double& v);
190 const unsigned int& ia,
double& v);
192 const unsigned int& ib,
193 const unsigned int& ia,
double& dl);
195 const unsigned int& ib,
196 const unsigned int& ia,
double& dt);
198 const unsigned int& ia,
double& alpha);
200 const unsigned int& ia,
double& eta);
202 bool GetIonMobility(
const unsigned int& ie,
const unsigned int& ib,
203 const unsigned int& ia,
double& mu);
205 const unsigned int& ib,
206 const unsigned int& ia,
double& dl);
208 const unsigned int& ib,
209 const unsigned int& ia,
double& dt);
211 const unsigned int& ib,
212 const unsigned int& ia,
double& diss);
226 bool SetIonMobility(
const unsigned int& ie,
const unsigned int& ib,
227 const unsigned int& ia,
const double& mu);
229 const std::vector<double>& mobilities);
234 const std::string& extrHigh);
236 const std::string& extrHigh);
238 const std::string& extrHigh);
240 const std::string& extrHigh);
242 const std::string& extrHigh);
244 const std::string& extrHigh);
267 const unsigned int& i = 0);
270 const unsigned int& i = 0);
273 const unsigned int& i = 0);
276 double& e1,
double& ctheta,
int& nsec,
344 std::vector<std::vector<std::vector<std::vector<double> > > >
394 double Interpolate1D(
const double& e,
const std::vector<double>& table,
395 const std::vector<double>& fields,
396 const unsigned int& intpMeth,
397 const int& jExtr,
const int& iExtr);
399 void CloneTable(std::vector<std::vector<std::vector<double> > >& tab,
400 const std::vector<double>& efields,
401 const std::vector<double>& bfields,
402 const std::vector<double>& angles,
403 const unsigned int& intp,
404 const unsigned int& extrLow,
const unsigned int& extrHigh,
406 const std::string label);
408 std::vector<std::vector<std::vector<std::vector<double> > > >& tab,
409 const unsigned int& n,
410 const std::vector<double>& efields,
411 const std::vector<double>& bfields,
412 const std::vector<double>& angles,
413 const unsigned int& intp,
414 const unsigned int& extrLow,
const unsigned int& extrHigh,
416 const std::string& label);
418 void InitParamArrays(
const unsigned int& eRes,
const unsigned int& bRes,
419 const unsigned int& aRes,
420 std::vector<std::vector<std::vector<double> > >& tab,
423 const unsigned int& eRes,
const unsigned int& bRes,
424 const unsigned int& aRes,
const unsigned int& tRes,
425 std::vector<std::vector<std::vector<std::vector<double> > > >& tab,
void ResetHoleAttachment()
bool GetHoleVelocityE(const unsigned int &ie, const unsigned int &ib, const unsigned int &ia, double &v)
bool m_hasElectronDiffTens
virtual bool GetPhotonCollision(const double e, int &type, int &level, double &e1, double &ctheta, int &nsec, double &esec)
bool GetElectronVelocityB(const unsigned int &ie, const unsigned int &ib, const unsigned int &ia, double &v)
void ResetElectronAttachment()
virtual double GetMassDensity() const
unsigned int m_extrLowMobility
virtual void GetElectronMomentum(const double e, double &px, double &py, double &pz, int &band)
bool IsMicroscopic() const
bool SetIonMobility(const unsigned int &ie, const unsigned int &ib, const unsigned int &ia, const double &mu)
unsigned int m_intpDiffusion
virtual void SetAtomicWeight(const double &a)
bool GetElectronTransverseDiffusion(const unsigned int &ie, const unsigned int &ib, const unsigned int &ia, double &dt)
virtual void SetMassDensity(const double &rho)
std::vector< std::vector< std::vector< double > > > tabHoleVelocityE
virtual double ScaleElectricField(const double &e) const
unsigned int m_extrLowDiffusion
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)
virtual bool HoleTownsend(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &alpha)
virtual bool GetIonisationProduct(const int i, int &type, double &energy)
bool m_hasElectronDiffTrans
bool m_hasElectronTownsend
void SetInterpolationMethodIonDissociation(const unsigned int &intrp)
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)
std::vector< double > bFields
virtual double ScaleDiffusion(const double &d) const
std::vector< std::vector< std::vector< double > > > tabElectronVelocityB
unsigned int m_extrHighAttachment
virtual double GetNumberDensity() const
bool GetIonLongitudinalDiffusion(const unsigned int &ie, const unsigned int &ib, const unsigned int &ia, double &dl)
bool GetIonDissociation(const unsigned int &ie, const unsigned int &ib, const unsigned int &ia, double &diss)
bool GetHoleVelocityExB(const unsigned int &ie, const unsigned int &ib, const unsigned int &ia, double &v)
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
unsigned int m_intpAttachment
bool GetElectronTownsend(const unsigned int &ie, const unsigned int &ib, const unsigned int &ia, double &alpha)
bool GetIonTransverseDiffusion(const unsigned int &ie, const unsigned int &ib, const unsigned int &ia, double &dt)
bool m_hasElectronVelocityB
bool GetExtrapolationIndex(std::string extrStr, unsigned int &extrNb)
void ResetIonDissociation()
unsigned int m_extrHighDiffusion
std::vector< double > eFields
std::vector< std::vector< std::vector< double > > > tabIonDissociation
unsigned int m_extrHighMobility
double GetDielectricConstant() const
std::vector< std::vector< std::vector< double > > > tabElectronVelocityE
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 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)
unsigned int m_intpTownsend
virtual void SetAtomicNumber(const double &z)
unsigned int m_extrLowAttachment
virtual bool GetOpticalDataRange(double &emin, double &emax, const unsigned int &i=0)
std::vector< double > bAngles
unsigned int m_extrHighDissociation
double GetPressure() const
virtual double ScaleAttachment(const double &eta) const
virtual void GetComponent(const unsigned int &i, std::string &label, double &f)
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)
virtual double ScaleDiffusionTensor(const double &d) const
unsigned int m_intpVelocity
void SetExtrapolationMethodTownsend(const std::string &extrLow, const std::string &extrHigh)
std::vector< std::vector< std::vector< double > > > tabElectronDiffLong
virtual double UnScaleElectricField(const double &e) const
virtual double GetAtomicWeight() const
void SetInterpolationMethodIonMobility(const unsigned int &intrp)
void SetExtrapolationMethodIonMobility(const std::string &extrLow, const std::string &extrHigh)
std::vector< std::vector< std::vector< double > > > tabElectronAttachment
unsigned int GetNumberOfComponents() const
virtual double GetElectronNullCollisionRate(const int band=0)
virtual double GetAtomicNumber() const
virtual int GetNumberOfIonisationProducts()
unsigned int m_extrLowVelocity
void DisablePrimaryIonisation()
unsigned int m_extrHighTownsend
virtual void EnableDrift()
virtual bool GetPhotoAbsorptionCrossSection(const double &e, double &sigma, const unsigned int &i=0)
virtual int GetNumberOfDeexcitationProducts()
virtual double ScaleDissociation(const double &diss) const
virtual double GetElectronCollisionRate(const double e, const int band=0)
void SetTemperature(const double &t)
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
virtual double ScaleVelocity(const double &v) const
std::vector< std::vector< std::vector< double > > > tabHoleTownsend
void SetDielectricConstant(const double &eps)
unsigned int m_extrLowTownsend
void SetExtrapolationMethodDiffusion(const std::string &extrLow, const std::string &extrHigh)
void GetFieldGrid(std::vector< double > &efields, std::vector< double > &bfields, std::vector< double > &angles)
void SetW(const double &w)
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)
void SetPressure(const double &p)
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
void SetInterpolationMethodAttachment(const unsigned int &intrp)
unsigned int m_extrLowDissociation
virtual bool GetDielectricFunction(const double &e, double &eps1, double &eps2, const unsigned int &i=0)
std::vector< std::vector< std::vector< std::vector< double > > > > tabElectronDiffTens
virtual bool IsGas() const
bool GetHoleTransverseDiffusion(const unsigned int &ie, const unsigned int &ib, const unsigned int &ia, double &dt)
void SetInterpolationMethodVelocity(const unsigned int &intrp)
virtual bool GetDeexcitationProduct(const int i, double &t, double &s, int &type, double &energy)
virtual double GetElectronEnergy(const double px, const double py, const double pz, double &vx, double &vy, double &vz, const int band=0)
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
bool GetHoleVelocityB(const unsigned int &ie, const unsigned int &ib, const unsigned int &ia, double &v)
std::vector< std::vector< std::vector< double > > > tabIonMobility
bool GetElectronVelocityExB(const unsigned int &ie, const unsigned int &ib, const unsigned int &ia, double &v)
int thrElectronAttachment
bool m_hasElectronDiffLong
std::vector< std::vector< std::vector< double > > > tabHoleDiffTrans
virtual void EnablePrimaryIonisation()
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)
bool GetElectronLongitudinalDiffusion(const unsigned int &ie, const unsigned int &ib, const unsigned int &ia, double &dl)
void SetExtrapolationMethodAttachment(const std::string &extrLow, const std::string &extrHigh)
std::vector< std::vector< std::vector< double > > > tabHoleVelocityB
std::vector< std::vector< std::vector< double > > > tabHoleDiffLong
unsigned int m_nComponents
void SetFanoFactor(const double &f)
bool GetHoleAttachment(const unsigned int &ie, const unsigned int &ib, const unsigned int &ia, double &eta)
std::vector< std::vector< std::vector< double > > > tabIonDiffLong
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)
bool GetHoleLongitudinalDiffusion(const unsigned int &ie, const unsigned int &ib, const unsigned int &ia, double &dl)
double GetTemperature() const
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
void SetInterpolationMethodDiffusion(const unsigned int &intrp)
bool GetElectronAttachment(const unsigned int &ie, const unsigned int &ib, const unsigned int &ia, double &eta)
bool GetHoleTownsend(const unsigned int &ie, const unsigned int &ib, const unsigned int &ia, double &alpha)
virtual double ScaleTownsend(const double &alpha) const
unsigned int m_intpDissociation
virtual double GetPhotonCollisionRate(const double &e)
void ResetHoleDiffusion()
bool m_hasHoleVelocityExB
void SetInterpolationMethodTownsend(const unsigned int &intrp)
bool m_hasElectronVelocityE
bool GetElectronVelocityE(const unsigned int &ie, const unsigned int &ib, const unsigned int &ia, double &v)
std::vector< std::vector< std::vector< double > > > tabElectronTownsend
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)
bool m_hasElectronAttachment
void ResetElectronTownsend()
std::string GetName() const
virtual bool HoleAttachment(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &eta)
virtual void SetNumberDensity(const double &n)
void ResetElectronVelocity()
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 GetIonMobility(const unsigned int &ie, const unsigned int &ib, const unsigned int &ia, double &mu)