more fix on Ec/Ev.
[gss-tcad.git] / src / material / InN / InN_gen.cc
blob246978d7323d574ebf83d947778298862c01400e
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: InN
24 #include "PMI.h"
26 class GSS_InN_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 //Source: data base of DESSIS
40 a_n = 2.9e+08/cm ;
41 a_p = 1.3400e+08/cm ;
42 b_n = 3.4e+07*V/cm ;
43 b_p = 2.0300e+07*V/cm ;
44 hbarOmega = 0.035*eV;
45 T300 = 300*K;
47 public:
48 //---------------------------------------------------------------------------
49 // Electron Impact Ionization rate for DDM
50 PetscScalar ElecGenRate (const PetscScalar &Tl,const PetscScalar &Ep,const PetscScalar &Eg) const
52 if (Ep < 1*V/cm)
54 return 0;
56 else
58 PetscScalar gamma = tanh(hbarOmega/(2*kb*T300)) / tanh(hbarOmega/(2*kb*Tl));
59 return gamma*a_n*exp(-b_n*gamma/Ep);
62 AutoDScalar ElecGenRate (const AutoDScalar &Tl,const AutoDScalar &Ep,const AutoDScalar &Eg) const
64 if (Ep < 1*V/cm)
66 return 0;
68 else
70 AutoDScalar gamma = tanh(hbarOmega/(2*kb*T300)) / tanh(hbarOmega/(2*kb*Tl));
71 return gamma*a_n*exp(-b_n*gamma/Ep);
75 //---------------------------------------------------------------------------
76 // Hole Impact Ionization rate for DDM
77 PetscScalar HoleGenRate (const PetscScalar &Tl,const PetscScalar &Ep,const PetscScalar &Eg) const
79 if (Ep < 1*V/cm)
81 return 0;
83 else
85 PetscScalar gamma = tanh(hbarOmega/(2*kb*T300)) / tanh(hbarOmega/(2*kb*Tl));
86 return gamma*a_p*exp(-b_p*gamma/Ep);
89 AutoDScalar HoleGenRate (const AutoDScalar &Tl,const AutoDScalar &Ep,const AutoDScalar &Eg) const
91 if (Ep < 1*V/cm)
93 return 0;
95 else
97 AutoDScalar gamma = tanh(hbarOmega/(2*kb*T300)) / tanh(hbarOmega/(2*kb*Tl));
98 return gamma*a_p*exp(-b_p*gamma/Ep);
102 //---------------------------------------------------------------------------
103 // Electron Impact Ionization rate for EBM
104 PetscScalar ElecGenRateEBM (const PetscScalar &Tn,const PetscScalar &Tl,const PetscScalar &Eg) const
106 return 0;
108 AutoDScalar ElecGenRateEBM (const AutoDScalar &Tn,const AutoDScalar &Tl,const AutoDScalar &Eg) const
110 return 0;
113 //---------------------------------------------------------------------------
114 // Hole Impact Ionization rate for EBM
115 PetscScalar HoleGenRateEBM (const PetscScalar &Tp,const PetscScalar &Tl,const PetscScalar &Eg) const
117 return 0;
119 AutoDScalar HoleGenRateEBM (const AutoDScalar &Tp,const AutoDScalar &Tl,const AutoDScalar &Eg) const
121 return 0;
125 //----------------------------------------------------------------
126 // constructor and destructor
127 public:
128 GSS_InN_Avalanche(const PMIS_Environment &env):PMIS_Avalanche(env)
130 Avalanche_Init();
132 ~GSS_InN_Avalanche()
139 extern "C"
141 PMIS_Avalanche* PMIS_InN_Avalanche_Default (const PMIS_Environment& env)
143 return new GSS_InN_Avalanche(env);