25 virtual bool IsGas()
const {
return false; }
47 virtual void GetComponent(
const unsigned int i, std::string& label,
92 const double ez,
const double bx,
93 const double by,
const double bz,
double& vx,
94 double& vy,
double& vz);
97 const double ez,
const double bx,
98 const double by,
const double bz,
double& dl,
104 const double ez,
const double bx,
105 const double by,
const double bz,
109 const double ez,
const double bx,
110 const double by,
const double bz,
114 const double ez,
const double bx,
115 const double by,
const double bz,
119 const double ez,
const double bx,
120 const double by,
const double bz,
128 const double pz,
double& vx,
double& vy,
129 double& vz,
const int band = 0);
133 double& pz,
int& band);
141 const double e,
int& type,
int& level,
double& e1,
double& dx,
double& dy,
142 double& dz, std::vector<std::pair<int, double> >& secondaries,
int& ndxc,
146 double& s,
int& type,
147 double& energy)
const;
151 virtual bool HoleVelocity(
const double ex,
const double ey,
const double ez,
152 const double bx,
const double by,
const double bz,
153 double& vx,
double& vy,
double& vz);
155 virtual bool HoleDiffusion(
const double ex,
const double ey,
const double ez,
156 const double bx,
const double by,
const double bz,
157 double& dl,
double& dt);
159 virtual bool HoleDiffusion(
const double ex,
const double ey,
const double ez,
160 const double bx,
const double by,
const double bz,
163 virtual bool HoleTownsend(
const double ex,
const double ey,
const double ez,
164 const double bx,
const double by,
const double bz,
167 virtual bool HoleAttachment(
const double ex,
const double ey,
const double ez,
168 const double bx,
const double by,
const double bz,
175 virtual bool IonVelocity(
const double ex,
const double ey,
const double ez,
176 const double bx,
const double by,
const double bz,
177 double& vx,
double& vy,
double& vz);
179 virtual bool IonDiffusion(
const double ex,
const double ey,
const double ez,
180 const double bx,
const double by,
const double bz,
181 double& dl,
double& dt);
184 const double ez,
const double bx,
185 const double by,
const double bz,
double& diss);
190 void SetFieldGrid(
double emin,
double emax,
const size_t ne,
bool logE,
191 double bmin = 0.,
double bmax = 0.,
const size_t nb = 1,
192 double amin = HalfPi,
double amax = HalfPi,
193 const size_t na = 1);
196 const std::vector<double>& bfields,
197 const std::vector<double>& angles);
199 void GetFieldGrid(std::vector<double>& efields, std::vector<double>& bfields,
200 std::vector<double>& angles);
204 const size_t ia,
const double v) {
209 const size_t ia,
double& v) {
214 const size_t ia,
const double v) {
219 const size_t ia,
double& v) {
224 const size_t ia,
const double v) {
229 const size_t ia,
double& v) {
234 const size_t ia,
const double dl) {
235 return SetEntry(ie, ib, ia,
"ElectronLongitudinalDiffusion",
m_eDifL, dl);
239 const size_t ia,
double& dl) {
240 return GetEntry(ie, ib, ia,
"ElectronLongitudinalDiffusion",
m_eDifL, dl);
244 const size_t ia,
const double dt) {
245 return SetEntry(ie, ib, ia,
"ElectronTransverseDiffusion",
m_eDifT, dt);
249 const size_t ia,
double& dt) {
250 return GetEntry(ie, ib, ia,
"ElectronTransverseDiffusion",
m_eDifT, dt);
254 const size_t ia,
const double alpha) {
259 const size_t ia,
double& alpha) {
264 const size_t ia,
const double eta) {
269 const size_t ia,
double& eta) {
275 const size_t ia,
const double lor) {
280 const size_t ia,
double& lor) {
286 const size_t ia,
const double v) {
291 const size_t ia,
double& v) {
296 const size_t ia,
const double v) {
301 const size_t ia,
double& v) {
306 const size_t ia,
const double v) {
311 const size_t ia,
double& v) {
317 const size_t ia,
const double dl) {
322 const size_t ia,
double& dl) {
327 const size_t ia,
const double dt) {
332 const size_t ia,
double& dt) {
337 const size_t ia,
const double alpha) {
342 const size_t ia,
double& alpha) {
347 const size_t ia,
const double eta) {
352 const size_t ia,
double& eta) {
361 const std::vector<double>& mobilities);
364 const size_t ia,
const double mu);
367 const size_t ia,
double& mu) {
373 const size_t ia,
const double dl) {
378 const size_t ia,
double& dl) {
383 const size_t ia,
const double dt) {
388 const size_t ia,
double& dt) {
393 const size_t ia,
const double diss) {
398 const size_t ia,
double& diss) {
442 const std::string& extrHigh);
444 const std::string& extrHigh);
446 const std::string& extrHigh);
448 const std::string& extrHigh);
450 const std::string& extrHigh);
452 const std::string& extrHigh);
476 const unsigned int i = 0);
479 const unsigned int i = 0);
482 const unsigned int i = 0);
485 double& e1,
double& ctheta,
int& nsec,
541 std::vector<std::vector<std::vector<double> > >
m_eVelE;
542 std::vector<std::vector<std::vector<double> > >
m_eVelX;
543 std::vector<std::vector<std::vector<double> > >
m_eVelB;
544 std::vector<std::vector<std::vector<double> > >
m_eDifL;
545 std::vector<std::vector<std::vector<double> > >
m_eDifT;
546 std::vector<std::vector<std::vector<double> > >
m_eAlp;
547 std::vector<std::vector<std::vector<double> > >
m_eAtt;
548 std::vector<std::vector<std::vector<double> > >
m_eLor;
550 std::vector<std::vector<std::vector<std::vector<double> > > >
m_eDifM;
553 std::vector<std::vector<std::vector<double> > >
m_hVelE;
554 std::vector<std::vector<std::vector<double> > >
m_hVelX;
555 std::vector<std::vector<std::vector<double> > >
m_hVelB;
556 std::vector<std::vector<std::vector<double> > >
m_hDifL;
557 std::vector<std::vector<std::vector<double> > >
m_hDifT;
558 std::vector<std::vector<std::vector<double> > >
m_hAlp;
559 std::vector<std::vector<std::vector<double> > >
m_hAtt;
561 std::vector<std::vector<std::vector<std::vector<double> > > >
m_hDifM;
564 std::vector<std::vector<std::vector<double> > >
m_iMob;
565 std::vector<std::vector<std::vector<double> > >
m_iDifL;
566 std::vector<std::vector<std::vector<double> > >
m_iDifT;
567 std::vector<std::vector<std::vector<double> > >
m_iDis;
577 std::pair<unsigned int, unsigned int>
m_extrVel = {0, 1};
578 std::pair<unsigned int, unsigned int>
m_extrDif = {0, 1};
579 std::pair<unsigned int, unsigned int>
m_extrAlp = {0, 1};
580 std::pair<unsigned int, unsigned int>
m_extrAtt = {0, 1};
581 std::pair<unsigned int, unsigned int>
m_extrLor = {0, 1};
582 std::pair<unsigned int, unsigned int>
m_extrMob = {0, 1};
583 std::pair<unsigned int, unsigned int>
m_extrDis = {0, 1};
594 bool Velocity(
const double ex,
const double ey,
const double ez,
595 const double bx,
const double by,
const double bz,
596 const std::vector<std::vector<std::vector<double> > >& velE,
597 const std::vector<std::vector<std::vector<double> > >& velB,
598 const std::vector<std::vector<std::vector<double> > >& velX,
599 const double q,
double& vx,
double& vy,
double& vz)
const;
600 bool Diffusion(
const double ex,
const double ey,
const double ez,
601 const double bx,
const double by,
const double bz,
602 const std::vector<std::vector<std::vector<double> > >& difL,
603 const std::vector<std::vector<std::vector<double> > >& difT,
604 double& dl,
double& dt)
const;
605 bool Diffusion(
const double ex,
const double ey,
const double ez,
606 const double bx,
const double by,
const double bz,
607 const std::vector<std::vector<std::vector<std::vector<double> > > >& diff,
608 double cov[3][3])
const;
609 bool Alpha(
const double ex,
const double ey,
const double ez,
610 const double bx,
const double by,
const double bz,
611 const std::vector<std::vector<std::vector<double> > >& tab,
612 unsigned int intp,
const unsigned int thr,
613 const std::pair<unsigned int, unsigned int>& extr,
614 double& alpha)
const;
615 double GetAngle(
const double ex,
const double ey,
const double ez,
616 const double bx,
const double by,
const double bz,
617 const double e,
const double b)
const;
618 bool Interpolate(
const double e,
const double b,
const double a,
619 const std::vector<std::vector<std::vector<double> > >& table,
620 double& y,
const unsigned int intp,
621 const std::pair<unsigned int, unsigned int>& extr)
const;
623 double Interpolate1D(
const double e,
const std::vector<double>& table,
624 const std::vector<double>& fields,
625 const unsigned int intpMeth,
626 const std::pair<unsigned int, unsigned int>& extr)
const;
628 bool SetEntry(
const size_t i,
const size_t j,
const size_t k,
629 const std::string& fcn,
630 std::vector<std::vector<std::vector<double> > >& tab,
632 bool GetEntry(
const size_t i,
const size_t j,
const size_t k,
633 const std::string& fcn,
634 const std::vector<std::vector<std::vector<double> > >& tab,
638 std::pair<unsigned int, unsigned int>& extr,
639 const std::string& fcn);
642 const std::vector<std::vector<std::vector<double> > >& tab)
const;
644 void Clone(std::vector<std::vector<std::vector<double> > >& tab,
645 const std::vector<double>& efields,
646 const std::vector<double>& bfields,
647 const std::vector<double>& angles,
const unsigned int intp,
648 const std::pair<unsigned int, unsigned int>& extr,
649 const double init,
const std::string& label);
651 std::vector<std::vector<std::vector<std::vector<double> > > >& tab,
652 const size_t n,
const std::vector<double>& efields,
653 const std::vector<double>& bfields,
const std::vector<double>& angles,
654 const unsigned int intp,
655 const std::pair<unsigned int, unsigned int>& extr,
const double init,
656 const std::string& label);
658 void Init(
const size_t nE,
const size_t nB,
const size_t nA,
659 std::vector<std::vector<std::vector<double> > >& tab,
662 const size_t nE,
const size_t nB,
const size_t nA,
const size_t nT,
663 std::vector<std::vector<std::vector<std::vector<double> > > >& tab,
Abstract base class for media.
virtual double IonMobility()
Low-field mobility [cm2 V-1 ns-1].
void ResetHoleAttachment()
virtual void GetComponent(const unsigned int i, std::string &label, double &f)
Get the name and fraction of a given component.
bool Interpolate(const double e, const double b, const double a, const std::vector< std::vector< std::vector< double > > > &table, double &y, const unsigned int intp, const std::pair< unsigned int, unsigned int > &extr) const
virtual bool GetPhotonCollision(const double e, int &type, int &level, double &e1, double &ctheta, int &nsec, double &esec)
virtual double UnScaleElectricField(const double e) const
bool GetHoleLongitudinalDiffusion(const size_t ie, const size_t ib, const size_t ia, double &dl)
Get an entry in the table of longitudinal diffusion coefficients.
virtual double ScaleVelocity(const double v) const
bool GetHoleTownsend(const size_t ie, const size_t ib, const size_t ia, double &alpha)
Get an entry in the table of Townsend coefficients.
void ResetElectronAttachment()
virtual double GetMassDensity() const
Get the mass density [g/cm3].
double GetFanoFactor()
Get the Fano factor.
std::vector< double > m_bFields
virtual void GetElectronMomentum(const double e, double &px, double &py, double &pz, int &band)
bool IsMicroscopic() const
Does the medium have electron scattering rates?
void SetTemperature(const double t)
Set the temperature [K].
void ResetElectronLorentzAngle()
void SetFanoFactor(const double f)
Set the Fano factor.
virtual bool HoleTownsend(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &alpha)
Ionisation coefficient [cm-1].
bool GetElectronLorentzAngle(const size_t ie, const size_t ib, const size_t ia, double &lor)
Get an entry in the table of Lorentz angles.
double GetW()
Get the W value.
virtual double ScaleAttachment(const double eta) const
bool GetEntry(const size_t i, const size_t j, const size_t k, const std::string &fcn, const std::vector< std::vector< std::vector< double > > > &tab, double &val) const
void SetExtrapolationMethodIonDissociation(const std::string &extrLow, const std::string &extrHigh)
void SetInterpolationMethodIonDissociation(const unsigned int intrp)
bool SetElectronLongitudinalDiffusion(const size_t ie, const size_t ib, const size_t ia, const double dl)
Set an entry in the table of longitudinal diffusion coefficients.
double Interpolate1D(const double e, const std::vector< double > &table, const std::vector< double > &fields, const unsigned int intpMeth, const std::pair< unsigned int, unsigned int > &extr) const
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
virtual double ScaleDiffusion(const double d) const
virtual double ElectronMobility()
Low-field mobility [cm2 V-1 ns-1].
virtual double GetNumberDensity() const
Get the number density [cm-3].
bool GetHoleAttachment(const size_t ie, const size_t ib, const size_t ia, double &eta)
Get an entry in the table of attachment coefficients.
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)
Drift velocity [cm / ns].
bool SetElectronVelocityB(const size_t ie, const size_t ib, const size_t ia, const double v)
Set an entry in the table of drift speeds along Btrans.
virtual double ScaleLorentzAngle(const double lor) const
virtual bool ElectronLorentzAngle(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &lor)
Lorentz angle.
bool GetIonTransverseDiffusion(const size_t ie, const size_t ib, const size_t ia, double &dt)
Get an entry in the table of transverse diffusion coefficients.
bool Diffusion(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, const std::vector< std::vector< std::vector< double > > > &difL, const std::vector< std::vector< std::vector< double > > > &difT, double &dl, double &dt) const
std::vector< std::vector< std::vector< double > > > m_eAlp
bool GetElectronTransverseDiffusion(const size_t ie, const size_t ib, const size_t ia, double &dt)
Get an entry in the table of transverse diffusion coefficients.
std::vector< std::vector< std::vector< double > > > m_hAlp
void ResetIonDissociation()
virtual bool GetDielectricFunction(const double e, double &eps1, double &eps2, const unsigned int i=0)
Get the complex dielectric function at a given energy.
bool SetElectronAttachment(const size_t ie, const size_t ib, const size_t ia, const double eta)
Set an entry in the table of attachment coefficients.
virtual void EnableDrift(const bool on=true)
Switch electron/ion/hole on/off.
bool SetHoleVelocityE(const size_t ie, const size_t ib, const size_t ia, const double v)
Set an entry in the table of drift speeds along E.
double GetDielectricConstant() const
Get the relative static dielectric constant.
bool SetHoleLongitudinalDiffusion(const size_t ie, const size_t ib, const size_t ia, const double dl)
Set an entry in the table of longitudinal diffusion coefficients.
virtual void SetNumberDensity(const double n)
Set the number density [cm-3].
double GetPressure() const
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)
Drift velocity [cm / ns].
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)
Drift velocity [cm / ns].
virtual void EnablePrimaryIonisation(const bool on=true)
Make the medium ionisable or non-ionisable.
std::pair< unsigned int, unsigned int > m_extrAtt
int GetId() const
Return the id number of the class instance.
void SetExtrapolationMethodTownsend(const std::string &extrLow, const std::string &extrHigh)
virtual void SetAtomicNumber(const double z)
Set the effective atomic number.
bool SetHoleAttachment(const size_t ie, const size_t ib, const size_t ia, const double eta)
Set an entry in the table of attachment coefficients.
bool SetElectronTownsend(const size_t ie, const size_t ib, const size_t ia, const double alpha)
Set an entry in the table of Townsend coefficients.
virtual double GetAtomicWeight() const
Get the effective atomic weight.
bool GetHoleTransverseDiffusion(const size_t ie, const size_t ib, const size_t ia, double &dt)
Get an entry in the table of transverse diffusion coefficients.
virtual bool GetElectronCollision(const double e, int &type, int &level, double &e1, double &dx, double &dy, double &dz, std::vector< std::pair< int, double > > &secondaries, int &ndxc, int &band)
Sample the collision type. Update energy and direction vector.
std::vector< std::vector< std::vector< double > > > m_iDifT
void SetExtrapolationMethodIonMobility(const std::string &extrLow, const std::string &extrHigh)
std::pair< unsigned int, unsigned int > m_extrVel
virtual double ScaleElectricField(const double e) const
virtual double ScaleDiffusionTensor(const double d) const
unsigned int GetNumberOfComponents() const
Get number of components of the medium.
std::vector< std::vector< std::vector< double > > > m_hDifL
virtual double GetElectronNullCollisionRate(const int band=0)
Null-collision rate [ns-1].
virtual double GetAtomicNumber() const
Get the effective atomic number.
size_t SetThreshold(const std::vector< std::vector< std::vector< double > > > &tab) const
std::vector< std::vector< std::vector< double > > > m_eVelE
std::vector< std::vector< std::vector< double > > > m_eVelX
std::vector< std::vector< std::vector< double > > > m_eDifL
void Init(const size_t nE, const size_t nB, const size_t nA, std::vector< std::vector< std::vector< double > > > &tab, const double val)
bool GetHoleVelocityExB(const size_t ie, const size_t ib, const size_t ia, double &v)
Get an entry in the table of drift speeds along ExB.
virtual double ScaleTownsend(const double alpha) const
virtual double GetPhotonCollisionRate(const double e)
void SetDielectricConstant(const double eps)
Set the relative static dielectric constant.
bool GetElectronAttachment(const size_t ie, const size_t ib, const size_t ia, double &eta)
Get an entry in the table of attachment coefficients.
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)
Collision rate [ns-1] for given electron energy.
bool GetExtrapolationIndex(std::string str, unsigned int &nb) const
void SetInterpolationMethodVelocity(const unsigned int intrp)
Set the degree of polynomial interpolation (usually 2).
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)
Longitudinal and transverse diffusion coefficients [cm1/2].
void SetInterpolationMethodDiffusion(const unsigned int intrp)
bool SetHoleVelocityB(const size_t ie, const size_t ib, const size_t ia, const double v)
Set an entry in the table of drift speeds along Btrans.
void SetExtrapolationMethodDiffusion(const std::string &extrLow, const std::string &extrHigh)
std::vector< double > m_eFields
bool GetElectronVelocityE(const size_t ie, const size_t ib, const size_t ia, double &v)
Get an entry in the table of drift speeds along E.
void GetFieldGrid(std::vector< double > &efields, std::vector< double > &bfields, std::vector< double > &angles)
Get the fields and E-B angles used in the transport tables.
std::vector< std::vector< std::vector< double > > > m_hDifT
virtual bool ElectronTownsend(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &alpha)
Ionisation coefficient [cm-1].
void ResetElectronDiffusion()
virtual bool IsSemiconductor() const
Is this medium a semiconductor?
void SetFieldGrid(double emin, double emax, const size_t ne, bool logE, double bmin=0., double bmax=0., const size_t nb=1, double amin=HalfPi, double amax=HalfPi, const size_t na=1)
Set the range of fields to be covered by the transport tables.
virtual bool GetOpticalDataRange(double &emin, double &emax, const unsigned int i=0)
Get the energy range [eV] of the available optical data.
bool SetElectronLorentzAngle(const size_t ie, const size_t ib, const size_t ia, const double lor)
Set an entry in the table of Lorentz angles.
std::vector< std::vector< std::vector< double > > > m_eAtt
virtual void SetMassDensity(const double rho)
Set the mass density [g/cm3].
bool GetHoleVelocityB(const size_t ie, const size_t ib, const size_t ia, double &v)
Get an entry in the table of drift speeds along Btrans.
bool GetElectronTownsend(const size_t ie, const size_t ib, const size_t ia, double &alpha)
Get an entry in the table of Townsend coefficients.
bool SetElectronVelocityExB(const size_t ie, const size_t ib, const size_t ia, const double v)
Set an entry in the table of drift speeds along ExB.
bool SetIonLongitudinalDiffusion(const size_t ie, const size_t ib, const size_t ia, const double dl)
Set an entry in the table of longitudinal diffusion coefficients.
virtual double ScaleDissociation(const double diss) const
bool Alpha(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, const std::vector< std::vector< std::vector< double > > > &tab, unsigned int intp, const unsigned int thr, const std::pair< unsigned int, unsigned int > &extr, double &alpha) const
const std::string & GetName() const
Get the medium name/identifier.
std::vector< double > m_bAngles
std::vector< std::vector< std::vector< double > > > m_iDifL
std::vector< std::vector< std::vector< double > > > m_hVelE
virtual bool IsGas() const
Is this medium a gas?
std::vector< std::vector< std::vector< double > > > m_eLor
std::vector< std::vector< std::vector< double > > > m_eDifT
virtual double GetElectronEnergy(const double px, const double py, const double pz, double &vx, double &vy, double &vz, const int band=0)
Dispersion relation (energy vs. wave vector)
void SetInterpolationMethodIonMobility(const unsigned int intrp)
void SetExtrapolationMethodVelocity(const std::string &extrLow, const std::string &extrHigh)
bool GetIonMobility(const size_t ie, const size_t ib, const size_t ia, double &mu)
Get an entry in the table of ion mobilities.
virtual bool ElectronAttachment(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &eta)
Attachment coefficient [cm-1].
bool GetElectronVelocityExB(const size_t ie, const size_t ib, const size_t ia, double &v)
Get an entry in the table of drift speeds along ExB.
virtual double HoleMobility()
Low-field mobility [cm2 V-1 ns-1].
bool SetElectronTransverseDiffusion(const size_t ie, const size_t ib, const size_t ia, const double dt)
Set an entry in the table of transverse diffusion coefficients.
std::pair< unsigned int, unsigned int > m_extrDis
std::vector< std::vector< std::vector< double > > > m_hAtt
void SetPressure(const double p)
void SetExtrapolationMethod(const std::string &low, const std::string &high, std::pair< unsigned int, unsigned int > &extr, const std::string &fcn)
std::pair< unsigned int, unsigned int > m_extrAlp
void EnableDebugging()
Switch on/off debugging messages.
std::vector< std::vector< std::vector< double > > > m_eVelB
bool IsIonisable() const
Is charge deposition by charged particles/photon enabled in this medium?
bool GetIonDissociation(const size_t ie, const size_t ib, const size_t ia, double &diss)
Get an entry in the table of dissociation coefficients.
virtual void SetAtomicWeight(const double a)
Set the effective atomic weight.
void SetExtrapolationMethodAttachment(const std::string &extrLow, const std::string &extrHigh)
bool GetElectronVelocityB(const size_t ie, const size_t ib, const size_t ia, double &v)
Get an entry in the table of drift speeds along Btrans.
std::pair< unsigned int, unsigned int > m_extrLor
bool GetIonLongitudinalDiffusion(const size_t ie, const size_t ib, const size_t ia, double &dl)
Get an entry in the table of longitudinal diffusion coefficients.
unsigned int m_nComponents
virtual bool IsConductor() const
Is this medium a conductor?
bool SetHoleVelocityExB(const size_t ie, const size_t ib, const size_t ia, const double v)
Set an entry in the table of drift speeds along ExB.
std::pair< unsigned int, unsigned int > m_extrDif
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)
Longitudinal and transverse diffusion coefficients [cm1/2].
double GetTemperature() const
Get the temperature [K].
virtual bool IonDissociation(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &diss)
Dissociation coefficient.
virtual void ResetTables()
Reset all tables of transport parameters.
bool GetElectronLongitudinalDiffusion(const size_t ie, const size_t ib, const size_t ia, double &dl)
Get an entry in the table of longitudinal diffusion coefficients.
std::vector< std::vector< std::vector< double > > > m_hVelX
virtual ~Medium()
Destructor.
std::pair< unsigned int, unsigned int > m_extrMob
void Clone(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 std::pair< unsigned int, unsigned int > &extr, const double init, const std::string &label)
void ResetHoleDiffusion()
std::vector< std::vector< std::vector< std::vector< double > > > > m_eDifM
std::vector< std::vector< std::vector< double > > > m_hVelB
bool Velocity(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, const std::vector< std::vector< std::vector< double > > > &velE, const std::vector< std::vector< std::vector< double > > > &velB, const std::vector< std::vector< std::vector< double > > > &velX, const double q, double &vx, double &vy, double &vz) const
bool SetHoleTownsend(const size_t ie, const size_t ib, const size_t ia, const double alpha)
Set an entry in the table of Townsend coefficients.
std::vector< std::vector< std::vector< std::vector< double > > > > m_hDifM
void SetW(const double w)
Set the W value (average energy to produce an electron/ion or e/h pair).
std::vector< std::vector< std::vector< double > > > m_iMob
bool SetEntry(const size_t i, const size_t j, const size_t k, const std::string &fcn, std::vector< std::vector< std::vector< double > > > &tab, const double val)
bool SetIonDissociation(const size_t ie, const size_t ib, const size_t ia, const double diss)
Set an entry in the table of dissociation coefficients.
bool SetHoleTransverseDiffusion(const size_t ie, const size_t ib, const size_t ia, const double dt)
Set an entry in the table of transverse diffusion coefficients.
void ResetElectronTownsend()
bool GetHoleVelocityE(const size_t ie, const size_t ib, const size_t ia, double &v)
Get an entry in the table of drift speeds along E.
virtual bool HoleAttachment(const double ex, const double ey, const double ez, const double bx, const double by, const double bz, double &eta)
Attachment coefficient [cm-1].
bool IsDriftable() const
Is charge carrier transport enabled in this medium?
void ResetElectronVelocity()
void SetInterpolationMethodTownsend(const unsigned int intrp)
virtual bool GetPhotoAbsorptionCrossSection(const double e, double &sigma, const unsigned int i=0)
bool SetElectronVelocityE(const size_t ie, const size_t ib, const size_t ia, const double v)
Set an entry in the table of drift speeds along E.
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)
Longitudinal and transverse diffusion coefficients [cm1/2].
bool SetIonTransverseDiffusion(const size_t ie, const size_t ib, const size_t ia, const double dt)
Set an entry in the table of transverse diffusion coefficients.
std::vector< std::vector< std::vector< double > > > m_iDis
bool SetIonMobility(const std::vector< double > &fields, const std::vector< double > &mobilities)