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 /*****************************************************************************/
29 PetscScalar wavelength
;
30 PetscScalar RefractionIndexRe
;
31 PetscScalar RefractionIndexIm
;
37 {0.0400, 0.8799, 0.2401},
38 {0.0600, 0.8935, 0.423},
39 {0.0800, 0.9801, 0.6901},
40 {0.0900, 1.064, 0.72},
41 {0.1000, 1.086, 0.726},
43 {0.2000, 0.988, 1.504},
44 {0.3000, 1.393, 1.670},
45 {0.4000, 1.175, 2.130},
46 {0.5000, 1.134, 2.570 },
47 {0.6000, 0.747, 3.362 },
48 {0.7000, 0.412, 4.203 },
49 {0.8000, 0.454, 4.978 },
50 {0.9000, 0.496, 5.754 },
51 {1.0000, 0.538, 6.530 },
52 {1.5000, 0.733, 10.017},
53 {2.0000, 0.879, 13.400},
54 {3.0000, 1.562, 20.055},
55 {4.0000, 2.250, 26.500},
56 {5.0000, 3.260, 33.000},
57 {6.0000, 3.944, 39.078},
58 {7.0000, 4.942, 45.336},
59 {8.0000, 6.074, 51.292},
60 {9.0000, 7.118, 57.167},
61 {10.000, 8.310, 63.000},
64 class GSS_Cu_Optical
: public PMIC_Optical
69 complex<PetscScalar
> RefractionIndex(PetscScalar lamda
, PetscScalar Eg
=0.0, PetscScalar Tl
=1.0) const
71 complex<PetscScalar
> n(1.0,0.0);
72 if(lamda
<Cu
[0].wavelength
)
73 return complex<PetscScalar
> (Cu
[0].RefractionIndexRe
,Cu
[0].RefractionIndexIm
);
74 if(lamda
>Cu
[table_size
-1].wavelength
)
75 return complex<PetscScalar
> (Cu
[table_size
-1].RefractionIndexRe
,Cu
[table_size
-1].RefractionIndexIm
);
76 for(int i
=0;i
<table_size
-1;i
++)
78 if(lamda
>=Cu
[i
].wavelength
&& lamda
<=Cu
[i
+1].wavelength
)
80 complex<PetscScalar
> n1(Cu
[i
].RefractionIndexRe
,Cu
[i
].RefractionIndexIm
);
81 complex<PetscScalar
> n2(Cu
[i
+1].RefractionIndexRe
,Cu
[i
+1].RefractionIndexIm
);
82 PetscScalar d1
= lamda
-Cu
[i
].wavelength
;
83 PetscScalar d2
= Cu
[i
+1].wavelength
-lamda
;
84 n
= (n1
*d2
+ n2
*d1
)/(d1
+d2
);
93 GSS_Cu_Optical(const PMIC_Environment
&env
):PMIC_Optical(env
)
95 table_size
= sizeof(Cu
)/sizeof(table
);
96 //the wave length should be scaled
97 for(int i
=0;i
<table_size
;i
++)
109 PMIC_Optical
* PMIC_Cu_Optical_Default (const PMIC_Environment
& env
)
111 return new GSS_Cu_Optical(env
);