more fix on Ec/Ev.
[gss-tcad.git] / src / material / TiSi2 / TiSi2_Optical.cc
blob92fbec11e43d53728b1478e77060cda5246276e0
1 /*****************************************************************************/
2 /* */
3 /* 8888888 88888888 88888888 */
4 /* 8 8 8 */
5 /* 8 8 8 */
6 /* 8 88888888 88888888 */
7 /* 8 8888 8 8 */
8 /* 8 8 8 8 */
9 /* 888888 888888888 888888888 */
10 /* */
11 /* A Two-Dimensional General Purpose Semiconductor Simulator. */
12 /* */
13 /* GSS material database Version 0.4 */
14 /* Last update: Feb 17, 2006 */
15 /* */
16 /* Gong Ding */
17 /* gdiso@ustc.edu */
18 /* NINT, No.69 P.O.Box, Xi'an City, China */
19 /* */
20 /*****************************************************************************/
22 // Material Type: TiSi2
24 // We do not have the real data for TiSi2, use parameters for Al instead
26 #include "PMI.h"
28 typedef struct
30 PetscScalar wavelength;
31 PetscScalar RefractionIndexRe;
32 PetscScalar RefractionIndexIm;
33 } table;
36 static table Al[] = {
37 {0.0165, 1.010, 0.024},
38 {0.0172, 1.020, 0.0035},
39 {0.0376, 0.902, 0.0102},
40 {0.0620, 0.668, 0.0268},
41 {0.0800, 0.258, 0.0777},
42 {0.1033, 0.0328, 0.791},
43 {0.1600, 0.0765, 1.740},
44 {0.2066, 0.130, 2.39},
45 {0.3000, 0.276, 3.61},
46 {0.4000, 0.490, 4.86},
47 {0.5000, 0.769, 6.08},
48 {0.6000, 1.20, 7.26},
49 {0.7000, 1.83, 8.31},
50 {0.8000, 2.80, 8.45},
51 {0.9000, 2.06, 8.30},
52 {1.0000, 1.35, 9.58},
53 {1.2000, 1.21, 12.0},
54 {1.5000, 1.38, 15.4},
55 {2.0000, 2.15, 20.7},
56 {4.0000, 6.43, 39.8},
57 {10.000, 25.3, 89.8},
60 class GSS_TiSi2_Optical : public PMIC_Optical
62 private:
63 int table_size;
64 public:
65 complex<PetscScalar> RefractionIndex(PetscScalar lamda, PetscScalar Eg=0.0, PetscScalar Tl=1.0) const
67 complex<PetscScalar> n(1.0,0.0);
68 if(lamda<Al[0].wavelength)
69 return complex<PetscScalar> (Al[0].RefractionIndexRe,Al[0].RefractionIndexIm);
70 if(lamda>Al[table_size-1].wavelength)
71 return complex<PetscScalar> (Al[table_size-1].RefractionIndexRe,Al[table_size-1].RefractionIndexIm);
72 for(int i=0;i<table_size-1;i++)
74 if(lamda>=Al[i].wavelength && lamda<=Al[i+1].wavelength)
76 complex<PetscScalar> n1(Al[i].RefractionIndexRe,Al[i].RefractionIndexIm);
77 complex<PetscScalar> n2(Al[i+1].RefractionIndexRe,Al[i+1].RefractionIndexIm);
78 PetscScalar d1 = lamda-Al[i].wavelength;
79 PetscScalar d2 = Al[i+1].wavelength-lamda;
80 n = (n1*d2 + n2*d1)/(d1+d2);
81 break;
84 return n;
87 // constructions
88 public:
89 GSS_TiSi2_Optical(const PMIC_Environment &env):PMIC_Optical(env)
91 table_size = sizeof(Al)/sizeof(table);
92 //the wave length should be scaled
93 for(int i=0;i<table_size;i++)
95 Al[i].wavelength*=um;
99 ~GSS_TiSi2_Optical(){}
103 extern "C"
105 PMIC_Optical* PMIC_TiSi2_Optical_Default (const PMIC_Environment& env)
107 return new GSS_TiSi2_Optical(env);