initial checkin, based on GSS 0.46 CVS
[gss-tcad.git] / src / material / InSb / InSb_gen.cc
blob1e4700ae6250c73c8f6772d4b70b7bfb975d30fd
1 /*****************************************************************************/
2 /* */
3 /* 8888888 88888888 88888888 */
4 /* 8 8 8 */
5 /* 8 8 8 */
6 /* 8 88888888 88888888 */
7 /* 8 8888 8 8 */
8 /* 8 8 8 8 */
9 /* 888888 888888888 888888888 */
10 /* */
11 /* A Two-Dimensional General Purpose Semiconductor Simulator. */
12 /* */
13 /* GSS material database Version 0.4 */
14 /* Last update: Feb 17, 2006 */
15 /* */
16 /* Gong Ding */
17 /* gdiso@ustc.edu */
18 /* NINT, No.69 P.O.Box, Xi'an City, China */
19 /* */
20 /*****************************************************************************/
22 // Material Type: InSb
24 #include "PMI.h"
26 class GSS_InSb_Avalanche : public PMIS_Avalanche
28 private:
30 PetscScalar a_n;
31 PetscScalar a_p;
32 PetscScalar b_n;
33 PetscScalar b_p;
34 PetscScalar hbarOmega;
35 PetscScalar T300;
37 void Avalanche_Init()
39 //use the parameters for InAs.
40 a_n = 8.6000e+06/cm ;
41 a_p = 2.3000e+07/cm ;
42 b_n = 3.5000e+06*V/cm ;
43 b_p = 6.4000e+05*V/cm ;
44 hbarOmega = 1.0000e+03*eV;
45 T300 = 300*K;
46 //experiment data: gn(F) = 126¡¤F^2¡¤exp(F/160) (s-1),
47 //should be implemented later
49 public:
50 //---------------------------------------------------------------------------
51 // Electron Impact Ionization rate for DDM
52 PetscScalar ElecGenRate (const PetscScalar &Tl,const PetscScalar &Ep,const PetscScalar &Eg) const
54 if (Ep < 1*V/cm)
56 return 0;
58 else
60 PetscScalar gamma = tanh(hbarOmega/(2*kb*T300)) / tanh(hbarOmega/(2*kb*Tl));
61 return gamma*a_n*exp(-b_n*gamma/Ep);
64 AutoDScalar ElecGenRate (const AutoDScalar &Tl,const AutoDScalar &Ep,const AutoDScalar &Eg) const
66 if (Ep < 1*V/cm)
68 return 0;
70 else
72 AutoDScalar gamma = tanh(hbarOmega/(2*kb*T300)) / tanh(hbarOmega/(2*kb*Tl));
73 return gamma*a_n*exp(-b_n*gamma/Ep);
77 //---------------------------------------------------------------------------
78 // Hole Impact Ionization rate for DDM
79 PetscScalar HoleGenRate (const PetscScalar &Tl,const PetscScalar &Ep,const PetscScalar &Eg) const
81 if (Ep < 1*V/cm)
83 return 0;
85 else
87 PetscScalar gamma = tanh(hbarOmega/(2*kb*T300)) / tanh(hbarOmega/(2*kb*Tl));
88 return gamma*a_p*exp(-b_p*gamma/Ep);
91 AutoDScalar HoleGenRate (const AutoDScalar &Tl,const AutoDScalar &Ep,const AutoDScalar &Eg) const
93 if (Ep < 1*V/cm)
95 return 0;
97 else
99 AutoDScalar gamma = tanh(hbarOmega/(2*kb*T300)) / tanh(hbarOmega/(2*kb*Tl));
100 return gamma*a_p*exp(-b_p*gamma/Ep);
105 //---------------------------------------------------------------------------
106 // Electron Impact Ionization rate for EBM
107 PetscScalar ElecGenRateEBM (const PetscScalar &Tn,const PetscScalar &Tl,const PetscScalar &Eg) const
109 return 0;
111 AutoDScalar ElecGenRateEBM (const AutoDScalar &Tn,const AutoDScalar &Tl,const AutoDScalar &Eg) const
113 return 0;
116 //---------------------------------------------------------------------------
117 // Hole Impact Ionization rate for EBM
118 PetscScalar HoleGenRateEBM (const PetscScalar &Tp,const PetscScalar &Tl,const PetscScalar &Eg) const
120 return 0;
122 AutoDScalar HoleGenRateEBM (const AutoDScalar &Tp,const AutoDScalar &Tl,const AutoDScalar &Eg) const
124 return 0;
129 //----------------------------------------------------------------
130 // constructor and destructor
131 public:
132 GSS_InSb_Avalanche(const PMIS_Environment &env):PMIS_Avalanche(env)
134 Avalanche_Init();
136 ~GSS_InSb_Avalanche()
143 extern "C"
145 PMIS_Avalanche* PMIS_InSb_Avalanche_Default (const PMIS_Environment& env)
147 return new GSS_InSb_Avalanche(env);