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: SiO2 as semicondcutor
29 PetscScalar wavelength
;
30 PetscScalar RefractionIndexRe
;
31 PetscScalar RefractionIndexIm
;
35 static table SiO2
[] = {
36 {0.0496, 0.733, 0.325},
37 {0.0550, 0.822, 0.408},
38 {0.0620, 0.859, 0.585},
39 {0.0689, 0.957, 0.717},
40 {0.0775, 1.172, 0.808},
41 {0.0886, 1.265, 0.861},
42 {0.1033, 1.475, 0.323},
43 {0.1240, 2.330, 0.056},
44 {0.1305, 2.092, 1.89e-2},
45 {0.1378, 1.904, 5.57e-3},
46 {0.1459, 1.702, 3.2e-5},
47 {0.1550, 1.600, 0.e0
},
48 {0.1771, 1.567, 0.e0
},
49 {0.1907, 1.543, 0.e0
},
50 {0.2066, 1.520, 0.e0
},
51 {0.2302, 1.500, 0.e0
},
52 {0.2652, 1.490, 0.e0
},
53 {0.2894, 1.480, 0.e0
},
54 {0.3303, 1.475, 0.e0
},
55 {0.3610, 1.469, 0.e0
},
56 {0.4046, 1.460, 0.e0
},
57 {0.5460, 1.455, 0.e0
},
58 {1.0139, 1.450, 0.e0
},
59 {1.5295, 1.444, 0.e0
},
60 {1.8131, 1.440, 0.e0
},
61 {2.4374, 1.430, 0.e0
},
62 {3.3026, 1.411, 0.e0
},
63 {3.5564, 1.404, 0.e0
},
64 {5.0000, 1.342, 0.e0
},
65 {6.0000, 1.266, 0.e0
},
66 {7.0000, 1.093, 0.e0
},
67 {7.5000, 0.9025, 0.e0
},
68 {7.5000, 0.9025, 0.e0
},
71 class GSS_SiO2_Optical
: public PMIS_Optical
76 complex<PetscScalar
> RefractionIndex(PetscScalar lamda
, PetscScalar Eg
=9.0, PetscScalar Tl
=1.0) const
78 complex<PetscScalar
> n(1.0,0.0);
79 if(lamda
<SiO2
[0].wavelength
)
80 return complex<PetscScalar
> (SiO2
[0].RefractionIndexRe
,SiO2
[0].RefractionIndexIm
);
81 if(lamda
>SiO2
[table_size
-1].wavelength
)
82 return complex<PetscScalar
> (SiO2
[table_size
-1].RefractionIndexRe
,SiO2
[table_size
-1].RefractionIndexIm
);
83 for(int i
=0;i
<table_size
-1;i
++)
85 if(lamda
>=SiO2
[i
].wavelength
&& lamda
<=SiO2
[i
+1].wavelength
)
87 complex<PetscScalar
> n1(SiO2
[i
].RefractionIndexRe
,SiO2
[i
].RefractionIndexIm
);
88 complex<PetscScalar
> n2(SiO2
[i
+1].RefractionIndexRe
,SiO2
[i
+1].RefractionIndexIm
);
89 PetscScalar d1
= lamda
-SiO2
[i
].wavelength
;
90 PetscScalar d2
= SiO2
[i
+1].wavelength
-lamda
;
91 n
= (n1
*d2
+ n2
*d1
)/(d1
+d2
);
100 GSS_SiO2_Optical(const PMIS_Environment
&env
):PMIS_Optical(env
)
102 table_size
= sizeof(SiO2
)/sizeof(table
);
103 //the wave length should be scaled
104 for(int i
=0;i
<table_size
;i
++)
106 SiO2
[i
].wavelength
*=um
;
110 ~GSS_SiO2_Optical(){}
116 PMIS_Optical
* PMIS_SiO2S_Optical_Default (const PMIS_Environment
& env
)
118 return new GSS_SiO2_Optical(env
);