1 /*****************************************************************************/
3 /* 8888888 88888888 88888888 */
6 /* 8 88888888 88888888 */
9 /* 888888 888888888 888888888 */
11 /* A Two-Dimensional General Purpose Semiconductor Simulator. */
13 /* GSS material database Version 0.4 */
14 /* Last update: Feb 17, 2006 */
18 /* NINT, No.69 P.O.Box, Xi'an City, China */
20 /*****************************************************************************/
26 class GSS_InP_Avalanche
: public PMIS_Avalanche
29 PetscScalar N_IONIZA
; // The constant term in the multiplicative prefactor of the electron ionization coefficient.
30 PetscScalar ECN_II
; // The critical electric field used in the exponential factor of the electron ionization coefficient.
31 PetscScalar EXN_II
; // The exponent of the ratio of the critical electrical field to the local electric field.
32 PetscScalar P_IONIZA
; // The constant term in the multiplicative prefactor of the hole ionization coefficient.
33 PetscScalar ECP_II
; // The critical electric field used in the exponential factor of the hole ionization coefficient.
34 PetscScalar EXP_II
; // The exponent of the ratio of the critical electrical field to the local electric field.
35 PetscScalar N_ION_1
; // The coefficient multiplying T in the multiplicative prefactor of the electron ionization coefficient.
36 PetscScalar N_ION_2
; // The coefficient multiplying T^2 in the multiplicative prefactor of the electron ionization coefficient.
37 PetscScalar P_ION_1
; // The coefficient multiplying T in the multiplicative prefactor of the hole ionization coefficient.
38 PetscScalar P_ION_2
; // The coefficient multiplying T^2 in the multiplicative prefactor of the hole ionization coefficient.
39 //// Impact Ionization Model Depending on Lattice Temperature.
40 PetscScalar LAN300
; // Energy free path for electrons at 300 K, used for the impact ionization model depending on lattice temperature.
41 PetscScalar LAP300
; // Energy free path for holes at 300 K, used for the impact ionization model depending on lattice temperature.
42 PetscScalar OP_PH_EN
; // Mean optical phonon energy used for the impact ionization model depending on lattice temperature.
50 //use parameters for GaAs instead
51 N_IONIZA
= 2.994000e+05/cm
;
52 ECN_II
= 0.000000e+00*V
/cm
;
53 EXN_II
= 1.600000e+00;
54 P_IONIZA
= 2.215000e+05/cm
;
55 ECP_II
= 0.000000e+00*V
/cm
;
56 EXP_II
= 1.750000e+00;
57 N_ION_1
= 0.000000e+00/cm
*K
;
58 N_ION_2
= 0.000000e+00/cm
*K
*K
;
59 P_ION_1
= 0.000000e+00/cm
*K
;
60 P_ION_2
= 0.000000e+00/cm
*K
*K
;
61 LAN300
= 3.527240e-06*cm
;
62 LAP300
= 3.676490e-06*cm
;
63 OP_PH_EN
= 3.500000e-02*eV
;
70 //---------------------------------------------------------------------------
71 // Electron Impact Ionization rate for DDM
72 PetscScalar
ElecGenRate (const PetscScalar
&Tl
,const PetscScalar
&Ep
,const PetscScalar
&Eg
) const
80 PetscScalar alpha
= N_IONIZA
+ N_ION_1
*Tl
+ N_ION_2
*Tl
*Tl
;
81 PetscScalar L
=LAN300
*tanh(OP_PH_EN
/(2*kb
*Tl
));
82 return alpha
*exp(-pow(Eg
/(e
*L
)/Ep
,EXN_II
));
85 AutoDScalar
ElecGenRate (const AutoDScalar
&Tl
,const AutoDScalar
&Ep
,const AutoDScalar
&Eg
) const
93 AutoDScalar alpha
= N_IONIZA
+ N_ION_1
*Tl
+ N_ION_2
*Tl
*Tl
;
94 AutoDScalar L
= LAN300
*tanh(OP_PH_EN
/(2*kb
*Tl
));
95 AutoDScalar Ecrit
= Eg
/(e
*L
);
96 return alpha
*exp(-pow(Ecrit
/Ep
,EXN_II
));
100 //---------------------------------------------------------------------------
101 // Hole Impact Ionization rate for DDM
102 PetscScalar
HoleGenRate (const PetscScalar
&Tl
,const PetscScalar
&Ep
,const PetscScalar
&Eg
) const
110 PetscScalar alpha
= P_IONIZA
+P_ION_1
*Tl
+P_ION_2
*Tl
*Tl
;
111 PetscScalar L
= LAP300
*tanh(OP_PH_EN
/(2*kb
*Tl
));
112 return alpha
*exp(-pow(Eg
/(e
*L
)/Ep
,EXP_II
));
115 AutoDScalar
HoleGenRate (const AutoDScalar
&Tl
,const AutoDScalar
&Ep
,const AutoDScalar
&Eg
) const
123 AutoDScalar alpha
= P_IONIZA
+P_ION_1
*Tl
+P_ION_2
*Tl
*Tl
;
124 AutoDScalar L
= LAP300
*tanh(OP_PH_EN
/(2*kb
*Tl
));
125 AutoDScalar Ecrit
= Eg
/(e
*L
);
126 return alpha
*exp(-pow(Ecrit
/Ep
,EXP_II
));
132 //---------------------------------------------------------------------------
133 // Electron Impact Ionization rate for EBM
134 PetscScalar
ElecGenRateEBM (const PetscScalar
&Tn
,const PetscScalar
&Tl
,const PetscScalar
&Eg
) const
136 if (fabs(Tn
- Tl
)<1*K
)
142 PetscScalar vsat
= 11.3E6
*cm
/s
- 1.2E4
*cm
/s
/K
*Tl
;
143 PetscScalar L
= LAN300
*tanh(OP_PH_EN
/(2*kb
*Tl
));
144 PetscScalar Ecrit
= Eg
/(e
*L
);
145 PetscScalar uc
= 2*vsat
*ElecTauw
/3*Ecrit
;
146 PetscScalar ut
= kb
/e
*(Tn
-Tl
);
147 return N_IONIZA
/e
*exp(-pow(uc
/ut
,EXN_II
));
150 AutoDScalar
ElecGenRateEBM (const AutoDScalar
&Tn
,const AutoDScalar
&Tl
,const AutoDScalar
&Eg
) const
152 if (fabs(Tn
- Tl
)<1*K
)
158 AutoDScalar vsat
= (2.4e7
*cm
/s
)/(1+0.8*exp(Tl
/(2*T300
)));
159 AutoDScalar L
= LAN300
*tanh(OP_PH_EN
/(2*kb
*Tl
));
160 AutoDScalar Ecrit
= Eg
/(e
*L
);
161 AutoDScalar uc
= 2*vsat
*ElecTauw
/3*Ecrit
;
162 AutoDScalar ut
= kb
/e
*(Tn
-Tl
);
163 return N_IONIZA
/e
*exp(-pow(uc
/ut
,EXN_II
));
167 //---------------------------------------------------------------------------
168 // Hole Impact Ionization rate for EBM
169 PetscScalar
HoleGenRateEBM (const PetscScalar
&Tp
,const PetscScalar
&Tl
,const PetscScalar
&Eg
) const
171 if (fabs(Tp
- Tl
)<1*K
)
177 PetscScalar vsat
= 11.3E6
*cm
/s
- 1.2E4
*cm
/s
/K
*Tl
;
178 PetscScalar L
= LAN300
*tanh(OP_PH_EN
/(2*kb
*Tl
));
179 PetscScalar Ecrit
= Eg
/(e
*L
);
180 PetscScalar uc
= 2*vsat
*HoleTauw
/3*Ecrit
;
181 PetscScalar ut
= kb
/e
*(Tp
-Tl
);
182 return P_IONIZA
/e
*exp(-pow(uc
/ut
,EXP_II
));
185 AutoDScalar
HoleGenRateEBM (const AutoDScalar
&Tp
,const AutoDScalar
&Tl
,const AutoDScalar
&Eg
) const
187 if (fabs(Tp
- Tl
)<1*K
)
193 AutoDScalar vsat
= (2.4e7
*cm
/s
)/(1+0.8*exp(Tl
/(2*T300
)));
194 AutoDScalar L
= LAN300
*tanh(OP_PH_EN
/(2*kb
*Tl
));
195 AutoDScalar Ecrit
= Eg
/(e
*L
);
196 AutoDScalar uc
= 2*vsat
*HoleTauw
/3*Ecrit
;
197 AutoDScalar ut
= kb
/e
*(Tp
-Tl
);
198 return P_IONIZA
/e
*exp(-pow(uc
/ut
,EXP_II
));
203 //----------------------------------------------------------------
204 // constructor and destructor
206 GSS_InP_Avalanche(const PMIS_Environment
&env
):PMIS_Avalanche(env
)
219 PMIS_Avalanche
* PMIS_InP_Avalanche_Default (const PMIS_Environment
& env
)
221 return new GSS_InP_Avalanche(env
);