1 /*****************************************************************************/
3 /* 8888888 88888888 88888888 */
6 /* 8 88888888 88888888 */
9 /* 888888 888888888 888888888 */
11 /* A Two-Dimensional General Purpose Semiconductor GaAsmulator. */
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: InGaAs
24 // We do not have the real data for InGaAs, use parameters for GaAs instead
30 PetscScalar wavelength
;
31 PetscScalar RefractionIndexRe
;
32 PetscScalar RefractionIndexIm
;
36 static table GaAs
[] = {
37 {0.0620, 1.025, 0.144},
38 {0.0827, 0.836, 0.282},
39 {0.1240, 0.913, 0.974},
40 {0.1378, 0.901, 1.136},
41 {0.1550, 0.899, 1.435},
42 {0.1771, 1.063, 1.838},
43 {0.2066, 1.264, 2.472},
44 {0.2254, 1.383, 2.936},
45 {0.2480, 2.273, 4.084},
46 {0.2755, 3.913, 2.919},
47 {0.3100, 3.601, 1.920},
48 {0.3542, 3.531, 2.013},
49 {0.4133, 4.509, 1.948},
50 {0.4275, 5.052, 1.721},
51 {0.4428, 4.959, 0.991},
52 {0.4592, 4.694, 0.696},
53 {0.4769, 4.492, 0.539},
54 {0.4959, 4.333, 0.441},
55 {0.5166, 4.205, 0.371},
56 {0.5391, 4.100, 0.320},
57 {0.5636, 4.013, 0.276},
58 {0.5904, 3.904, 0.240},
59 {0.6199, 3.878, 0.211},
60 {0.6526, 3.826, 0.179},
61 {0.6888, 3.785, 0.151},
62 {0.7293, 3.742, 0.112},
63 {0.7749, 3.700, 0.091},
64 {0.8266, 3.666, 0.080},
65 {0.8856, 3.614, 0.002},
66 {1.0000, 3.509, 8.5e-5},
67 {2.0000, 3.509, 0.000},
70 class GSS_InGaAs_Optical
: public PMIS_Optical
75 complex<PetscScalar
> RefractionIndex(PetscScalar lamda
, PetscScalar Eg
=1.12, PetscScalar Tl
=1.0) const
77 complex<PetscScalar
> n(1.0,0.0);
78 if(lamda
<GaAs
[0].wavelength
)
79 return complex<PetscScalar
> (GaAs
[0].RefractionIndexRe
,GaAs
[0].RefractionIndexIm
);
80 if(lamda
>GaAs
[table_size
-1].wavelength
)
81 return complex<PetscScalar
> (GaAs
[table_size
-1].RefractionIndexRe
,GaAs
[table_size
-1].RefractionIndexIm
);
82 for(int i
=0;i
<table_size
-1;i
++)
84 if(lamda
>=GaAs
[i
].wavelength
&& lamda
<=GaAs
[i
+1].wavelength
)
86 complex<PetscScalar
> n1(GaAs
[i
].RefractionIndexRe
,GaAs
[i
].RefractionIndexIm
);
87 complex<PetscScalar
> n2(GaAs
[i
+1].RefractionIndexRe
,GaAs
[i
+1].RefractionIndexIm
);
88 PetscScalar d1
= lamda
-GaAs
[i
].wavelength
;
89 PetscScalar d2
= GaAs
[i
+1].wavelength
-lamda
;
90 n
= (n1
*d2
+ n2
*d1
)/(d1
+d2
);
99 GSS_InGaAs_Optical(const PMIS_Environment
&env
):PMIS_Optical(env
)
101 table_size
= sizeof(GaAs
)/sizeof(table
);
102 //the wave length should be scaled
103 for(int i
=0;i
<table_size
;i
++)
105 GaAs
[i
].wavelength
*=um
;
109 ~GSS_InGaAs_Optical()
116 PMIS_Optical
* PMIS_InGaAs_Optical_Default (const PMIS_Environment
& env
)
118 return new GSS_InGaAs_Optical(env
);