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_Ge_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 N_IONIZA
= 1.550000e+07/cm
;
51 ECN_II
= 0.000000e+00*V
/cm
;
52 EXN_II
= 1.000000e+00;
53 P_IONIZA
= 1.000000e+07/cm
;
54 ECP_II
= 0.000000e+00*V
/cm
;
55 EXP_II
= 1.000000e+00;
56 N_ION_1
= 0.000000e+00/cm
*K
;
57 N_ION_2
= 0.000000e+00/cm
*K
*K
;
58 P_ION_1
= 0.000000e+00/cm
*K
;
59 P_ION_2
= 0.000000e+00/cm
*K
*K
;
60 LAN300
= 6.888250e-07*cm
;
61 LAP300
= 8.395050e-07*cm
;
62 OP_PH_EN
= 3.700000e-02*eV
;
69 //---------------------------------------------------------------------------
70 // Electron Impact Ionization rate for DDM
71 PetscScalar
ElecGenRate (const PetscScalar
&Tl
,const PetscScalar
&Ep
,const PetscScalar
&Eg
) const
79 PetscScalar alpha
= N_IONIZA
+ N_ION_1
*Tl
+ N_ION_2
*Tl
*Tl
;
80 PetscScalar L
=LAN300
*tanh(OP_PH_EN
/(2*kb
*Tl
));
81 return alpha
*exp(-pow(Eg
/(e
*L
)/Ep
,EXN_II
));
84 AutoDScalar
ElecGenRate (const AutoDScalar
&Tl
,const AutoDScalar
&Ep
,const AutoDScalar
&Eg
) const
92 AutoDScalar alpha
= N_IONIZA
+ N_ION_1
*Tl
+ N_ION_2
*Tl
*Tl
;
93 AutoDScalar L
= LAN300
*tanh(OP_PH_EN
/(2*kb
*Tl
));
94 AutoDScalar Ecrit
= Eg
/(e
*L
);
95 return alpha
*exp(-pow(Ecrit
/Ep
,EXN_II
));
99 //---------------------------------------------------------------------------
100 // Hole Impact Ionization rate for DDM
101 PetscScalar
HoleGenRate (const PetscScalar
&Tl
,const PetscScalar
&Ep
,const PetscScalar
&Eg
) const
109 PetscScalar alpha
= P_IONIZA
+P_ION_1
*Tl
+P_ION_2
*Tl
*Tl
;
110 PetscScalar L
= LAP300
*tanh(OP_PH_EN
/(2*kb
*Tl
));
111 return alpha
*exp(-pow(Eg
/(e
*L
)/Ep
,EXP_II
));
114 AutoDScalar
HoleGenRate (const AutoDScalar
&Tl
,const AutoDScalar
&Ep
,const AutoDScalar
&Eg
) const
122 AutoDScalar alpha
= P_IONIZA
+P_ION_1
*Tl
+P_ION_2
*Tl
*Tl
;
123 AutoDScalar L
= LAP300
*tanh(OP_PH_EN
/(2*kb
*Tl
));
124 AutoDScalar Ecrit
= Eg
/(e
*L
);
125 return alpha
*exp(-pow(Ecrit
/Ep
,EXP_II
));
129 //---------------------------------------------------------------------------
130 // Electron Impact Ionization rate for EBM
131 PetscScalar
ElecGenRateEBM (const PetscScalar
&Tn
,const PetscScalar
&Tl
,const PetscScalar
&Eg
) const
133 if (fabs(Tn
- Tl
)<1*K
)
139 PetscScalar vsat
= (2.4e7
*cm
/s
)/(1+0.8*exp(Tl
/(2*T300
)));
140 PetscScalar L
= LAN300
*tanh(OP_PH_EN
/(2*kb
*Tl
));
141 PetscScalar Ecrit
= Eg
/(e
*L
);
142 PetscScalar uc
= 2*vsat
*ElecTauw
/3*Ecrit
;
143 PetscScalar ut
= kb
/e
*(Tn
-Tl
);
144 return N_IONIZA
/e
*exp(-pow(uc
/ut
,EXN_II
));
147 AutoDScalar
ElecGenRateEBM (const AutoDScalar
&Tn
,const AutoDScalar
&Tl
,const AutoDScalar
&Eg
) const
149 if (fabs(Tn
- Tl
)<1*K
)
155 AutoDScalar vsat
= (2.4e7
*cm
/s
)/(1+0.8*exp(Tl
/(2*T300
)));
156 AutoDScalar L
= LAN300
*tanh(OP_PH_EN
/(2*kb
*Tl
));
157 AutoDScalar Ecrit
= Eg
/(e
*L
);
158 AutoDScalar uc
= 2*vsat
*ElecTauw
/3*Ecrit
;
159 AutoDScalar ut
= kb
/e
*(Tn
-Tl
);
160 return N_IONIZA
/e
*exp(-pow(uc
/ut
,EXN_II
));
164 //---------------------------------------------------------------------------
165 // Hole Impact Ionization rate for EBM
166 PetscScalar
HoleGenRateEBM (const PetscScalar
&Tp
,const PetscScalar
&Tl
,const PetscScalar
&Eg
) const
168 if (fabs(Tp
- Tl
)<1*K
)
174 PetscScalar vsat
= (2.4e7
*cm
/s
)/(1+0.8*exp(Tl
/(2*T300
)));
175 PetscScalar L
= LAN300
*tanh(OP_PH_EN
/(2*kb
*Tl
));
176 PetscScalar Ecrit
= Eg
/(e
*L
);
177 PetscScalar uc
= 2*vsat
*HoleTauw
/3*Ecrit
;
178 PetscScalar ut
= kb
/e
*(Tp
-Tl
);
179 return P_IONIZA
/e
*exp(-pow(uc
/ut
,EXP_II
));
182 AutoDScalar
HoleGenRateEBM (const AutoDScalar
&Tp
,const AutoDScalar
&Tl
,const AutoDScalar
&Eg
) const
184 if (fabs(Tp
- Tl
)<1*K
)
190 AutoDScalar vsat
= (2.4e7
*cm
/s
)/(1+0.8*exp(Tl
/(2*T300
)));
191 AutoDScalar L
= LAN300
*tanh(OP_PH_EN
/(2*kb
*Tl
));
192 AutoDScalar Ecrit
= Eg
/(e
*L
);
193 AutoDScalar uc
= 2*vsat
*HoleTauw
/3*Ecrit
;
194 AutoDScalar ut
= kb
/e
*(Tp
-Tl
);
195 return P_IONIZA
/e
*exp(-pow(uc
/ut
,EXP_II
));
200 //----------------------------------------------------------------
201 // constructor and destructor
203 GSS_Ge_Avalanche(const PMIS_Environment
&env
):PMIS_Avalanche(env
)
216 PMIS_Avalanche
* PMIS_Ge_Avalanche_Default (const PMIS_Environment
& env
)
218 return new GSS_Ge_Avalanche(env
);