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 /*****************************************************************************/
22 // Material Type: InAs
27 class GSS_Mob_Analytic
: public PMIS_Mobility
31 // parameters for Analytic mobility
32 PetscScalar Ar_mumin_n
;
33 PetscScalar Ar_mumin_p
;
34 PetscScalar Ar_alm_n
;
35 PetscScalar Ar_alm_p
;
36 PetscScalar Ar_mud_n
;
37 PetscScalar Ar_mud_p
;
38 PetscScalar Ar_ald_n
;
39 PetscScalar Ar_ald_p
;
42 PetscScalar Ar_alN_n
;
43 PetscScalar Ar_alN_p
;
46 PetscScalar Ar_ala_n
;
47 PetscScalar Ar_ala_p
;
49 // parameters for high field modification
52 void Mob_Analytic_Init()
54 //Source: data base of DESSIS
55 Ar_mumin_n
= 2.2600e+04*cm
*cm
/V
/s
;
56 Ar_mumin_p
= 2.5000e+02*cm
*cm
/V
/s
;
57 Ar_alm_n
= -1.5000e+00;
58 Ar_alm_p
= -1.5000e+00;
59 Ar_mud_n
= 0.0000e+00*cm
*cm
/V
/s
;
60 Ar_mud_p
= 0.0000e+00*cm
*cm
/V
/s
;
61 Ar_ald_n
= 0.0000e+00;
62 Ar_ald_p
= 0.0000e+00;
63 Ar_N0_n
= 1.0000e+17*pow(cm
,-3);
64 Ar_N0_p
= 1.0000e+17*pow(cm
,-3);
65 Ar_alN_n
= 0.0000e+00;
66 Ar_alN_p
= 0.0000e+00;
69 Ar_ala_n
= 0.0000e+00;
70 Ar_ala_p
= 0.0000e+00;
72 E0N
= 4.0000e+03*V
/cm
;
73 E0P
= 4.0000e+03*V
/cm
;
76 //---------------------------------------------------------------------------
77 // Electron low field mobility
78 PetscScalar
ElecMobLowField(const PetscScalar
&Tl
) const
80 return Ar_mumin_n
*pow(Tl
/T300
,Ar_alm_n
);
82 AutoDScalar
ElecMobLowField(const AutoDScalar
&Tl
) const
84 return Ar_mumin_n
*pow(Tl
/T300
,Ar_alm_n
);
87 //---------------------------------------------------------------------------
88 // Hole low field mobility
89 PetscScalar
HoleMobLowField(const PetscScalar
&Tl
) const
91 return Ar_mumin_p
*pow(Tl
/T300
,Ar_alm_p
);
93 AutoDScalar
HoleMobLowField(const AutoDScalar
&Tl
) const
95 return Ar_mumin_p
*pow(Tl
/T300
,Ar_alm_p
);
100 //---------------------------------------------------------------------------
102 PetscScalar
ElecMob(const PetscScalar
&p
, const PetscScalar
&n
, const PetscScalar
&Tl
,
103 const PetscScalar
&Ep
, const PetscScalar
&Et
, const PetscScalar
&Tn
) const
105 PetscScalar vsat
= 1.0000e+07*cm
/s
;
106 PetscScalar mu0
= ElecMobLowField(Tl
);
107 PetscScalar E
= Ep
>0 ? Ep
: 0 ;
108 return (mu0
+vsat
*pow(E
,3)/pow(E0N
,4))/(1+pow(E
/E0N
,4));
110 AutoDScalar
ElecMob(const AutoDScalar
&p
, const AutoDScalar
&n
, const AutoDScalar
&Tl
,
111 const AutoDScalar
&Ep
, const AutoDScalar
&Et
, const AutoDScalar
&Tn
) const
113 PetscScalar vsat
= 1.0000e+07*cm
/s
;
114 AutoDScalar mu0
= ElecMobLowField(Tl
);
115 AutoDScalar E
= fmax(Ep
, 0.0) ;
116 return (mu0
+vsat
*pow(E
,3)/pow(E0N
,4))/(1+pow(E
/E0N
,4));
120 //---------------------------------------------------------------------------
122 PetscScalar
HoleMob (const PetscScalar
&p
, const PetscScalar
&n
, const PetscScalar
&Tl
,
123 const PetscScalar
&Ep
, const PetscScalar
&Et
, const PetscScalar
&Tp
) const
125 PetscScalar vsat
= 1.0000e+07*cm
/s
;
126 PetscScalar mu0
= HoleMobLowField(Tl
);
127 PetscScalar E
= Ep
>0 ? Ep
: 0 ;
128 return (mu0
+vsat
*pow(E
,3)/pow(E0P
,4))/(1+pow(E
/E0P
,4));
130 AutoDScalar
HoleMob(const AutoDScalar
&p
, const AutoDScalar
&n
, const AutoDScalar
&Tl
,
131 const AutoDScalar
&Ep
, const AutoDScalar
&Et
, const AutoDScalar
&Tp
) const
133 PetscScalar vsat
= 1.0000e+07*cm
/s
;
134 AutoDScalar mu0
= HoleMobLowField(Tl
);
135 AutoDScalar E
= fmax(Ep
, 0.0) ;
136 return (mu0
+vsat
*pow(E
,3)/pow(E0P
,4))/(1+pow(E
/E0P
,4));
139 // constructor and destructor
141 GSS_Mob_Analytic(const PMIS_Environment
&env
):PMIS_Mobility(env
)
154 /*---------------------------------------------------------------
155 * the interface function called by material databse controller
156 * use Analytic model as default mobility model
160 PMIS_Mobility
* PMIS_InAs_Mob_Default (const PMIS_Environment
& env
)
162 return new GSS_Mob_Analytic(env
);
168 PMIS_Mobility
* PMIS_InAs_Mob_Analytic (const PMIS_Environment
& env
)
170 return new GSS_Mob_Analytic(env
);