1 /*****************************************************************************/
3 /* 8888888 88888888 88888888 */
6 /* 8 88888888 88888888 */
9 /* 888888 888888888 888888888 */
11 /* A Two-Dimensional General Purpose Semiconductor Gemulator. */
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 /*****************************************************************************/
29 PetscScalar wavelength
;
30 PetscScalar RefractionIndexRe
;
31 PetscScalar RefractionIndexIm
;
35 {0.1240, 0.930, 0.860},
36 {0.1350, 0.925, 1.000},
37 {0.1378, 0.920, 1.140},
38 {0.1459, 0.920, 1.200},
39 {0.1550, 0.920, 1.400},
40 {0.1653, 0.960, 1.600},
41 {0.1771, 1.000, 1.800},
42 {0.1907, 1.100, 2.050},
43 {0.2066, 1.300, 2.340},
44 {0.2254, 1.380, 2.842},
45 {0.2480, 1.394, 3.197},
46 {0.2755, 1.953, 4.297},
47 {0.3100, 3.905, 3.336},
48 {0.3306, 3.947, 2.922},
49 {0.3542, 4.020, 2.667},
50 {0.3815, 4.144, 2.405},
51 {0.4133, 4.082, 2.145},
52 {0.4275, 4.037, 2.140},
53 {0.4428, 4.035, 2.181},
54 {0.4592, 4.082, 2.240},
55 {0.4769, 4.180, 2.309},
56 {0.4959, 4.340, 2.384},
57 {0.5166, 4.610, 2.455},
58 {0.5391, 5.062, 2.318},
59 {0.5636, 5.283, 2.049},
60 {0.5904, 5.748, 1.634},
61 {0.6199, 5.588, 0.933},
62 {0.6526, 5.380, 0.638},
63 {0.6888, 5.067, 0.500},
64 {0.7293, 4.897, 0.401},
65 {0.7749, 4.763, 0.345},
66 {0.8266, 4.653, 0.298},
67 {1.2400, 4.325, 0.081},
68 {1.3780, 4.285, 0.075},
69 {1.5500, 4.275, 0.057},
70 {1.7710, 4.180, 0.028},
73 class GSS_Ge_Optical
: public PMIS_Optical
78 complex<PetscScalar
> RefractionIndex(PetscScalar lamda
, PetscScalar Eg
=9.0, PetscScalar Tl
=1.0) const
80 complex<PetscScalar
> n(1.0,0.0);
81 if(lamda
<Ge
[0].wavelength
)
82 return complex<PetscScalar
> (Ge
[0].RefractionIndexRe
,Ge
[0].RefractionIndexIm
);
83 if(lamda
>Ge
[table_size
-1].wavelength
)
84 return complex<PetscScalar
> (Ge
[table_size
-1].RefractionIndexRe
,Ge
[table_size
-1].RefractionIndexIm
);
85 for(int i
=0;i
<table_size
-1;i
++)
87 if(lamda
>=Ge
[i
].wavelength
&& lamda
<=Ge
[i
+1].wavelength
)
89 complex<PetscScalar
> n1(Ge
[i
].RefractionIndexRe
,Ge
[i
].RefractionIndexIm
);
90 complex<PetscScalar
> n2(Ge
[i
+1].RefractionIndexRe
,Ge
[i
+1].RefractionIndexIm
);
91 PetscScalar d1
= lamda
-Ge
[i
].wavelength
;
92 PetscScalar d2
= Ge
[i
+1].wavelength
-lamda
;
93 n
= (n1
*d2
+ n2
*d1
)/(d1
+d2
);
102 GSS_Ge_Optical(const PMIS_Environment
&env
):PMIS_Optical(env
)
104 table_size
= sizeof(Ge
)/sizeof(table
);
105 //the wave length should be scaled
106 for(int i
=0;i
<table_size
;i
++)
108 Ge
[i
].wavelength
*=um
;
119 PMIS_Optical
* PMIS_Ge_Optical_Default (const PMIS_Environment
& env
)
121 return new GSS_Ge_Optical(env
);