ECHARM_crystal_SiGe::ECHARM_crystal_SiGe(int vMillerPl[3],int vMillerAx[3],double vGeConcentration = 0.0) { std::vector<double> vSiExperimentalCoefficients; vSiExperimentalCoefficients.clear(); vSiExperimentalCoefficients.push_back(4.94976/14.); vSiExperimentalCoefficients.push_back(3.25403/14.); vSiExperimentalCoefficients.push_back(2.84957/14.); vSiExperimentalCoefficients.push_back(1.66053/14.); vSiExperimentalCoefficients.push_back(1.22949/14.); vSiExperimentalCoefficients.push_back(0.05611/14.); vSiExperimentalCoefficients.push_back(2.70254E-20); vSiExperimentalCoefficients.push_back(34.45314E-20); vSiExperimentalCoefficients.push_back(1.24059E-20); vSiExperimentalCoefficients.push_back(0.07201E-20); vSiExperimentalCoefficients.push_back(84.53648E-20); vSiExperimentalCoefficients.push_back(56.34208E-20); ECHARM_atom *atomSi = new ECHARM_atom("Si",14.,28.086 * amu,640.,450.,173.,2,vSiExperimentalCoefficients); atomSi->SetThermalVibrationConstant(0.075E-10); std::vector<double> vGeExperimentalCoefficients; vGeExperimentalCoefficients.clear(); vGeExperimentalCoefficients.push_back(9.56335/32.); vGeExperimentalCoefficients.push_back(7.86994/32.); vGeExperimentalCoefficients.push_back(7.64215/32.); vGeExperimentalCoefficients.push_back(3.31296/32.); vGeExperimentalCoefficients.push_back(2.13351/32.); vGeExperimentalCoefficients.push_back(1.47704/32.); vGeExperimentalCoefficients.push_back(2.21494E-20); vGeExperimentalCoefficients.push_back(0.14284E-20); vGeExperimentalCoefficients.push_back(3.86490E-20); vGeExperimentalCoefficients.push_back(32.69417E-20); vGeExperimentalCoefficients.push_back(8.94286E-20); vGeExperimentalCoefficients.push_back(82.15827E-20); ECHARM_atom *atomGe = new ECHARM_atom("Ge",32.,72.61 * amu,360.0,450.,350.0,2,vGeExperimentalCoefficients); atomGe->SetThermalVibrationConstant(0.085E-10); ECHARM_lattice *lattice = new ECHARM_lattice("diamond"); ECHARM_miller *miller = new ECHARM_miller(vMillerPl,vMillerAx); ECHARM_cell *cell = new ECHARM_cell(5.6575E-10,5.6575E-10,5.6575E-10); SetCell(cell); SetMiller(miller); AddBase(atomSi,lattice,1.0 - vGeConcentration); AddBase(atomGe,lattice,vGeConcentration); ComputeCrystalAverageParameters(); SetAtomName("SiGe"); }
ECHARM_crystal_Ge::ECHARM_crystal_Ge(){ SetAtomName("Ge"); double vGeExperimentalCoefficients[12]; vGeExperimentalCoefficients[0] = (9.56335/32.); vGeExperimentalCoefficients[1] = (7.86994/32.); vGeExperimentalCoefficients[2] = (7.64215/32.); vGeExperimentalCoefficients[3] = (3.31296/32.); vGeExperimentalCoefficients[4] = (2.13351/32.); vGeExperimentalCoefficients[5] = (1.47704/32.); vGeExperimentalCoefficients[6] = (2.21494*AA*AA); vGeExperimentalCoefficients[7] = (0.14284*AA*AA); vGeExperimentalCoefficients[8] = (3.86490*AA*AA); vGeExperimentalCoefficients[9] = (32.69417*AA*AA); vGeExperimentalCoefficients[10] = (8.94286*AA*AA); vGeExperimentalCoefficients[11] = (82.15827*AA*AA); ECHARM_atom_xray *atom = new ECHARM_atom_xray("Ge",32.,72.61 * amu,360.0,350.0,vGeExperimentalCoefficients); ECHARM_lattice_diamond *lattice = new ECHARM_lattice_diamond(); AddBase(atom,lattice); int vMillerX[3] = {2,-2,0}; int vMillerY[3] = {1,1,-2}; int vMillerZ[3] = {1,1,1}; fMiller = new ECHARM_miller_cubic(vMillerX,vMillerY); fMiller->SetX(vMillerX); fMiller->SetY(vMillerY); fMiller->SetZ(vMillerZ); fCell = new ECHARM_cell(5.6575*AA,5.6575*AA,5.6575*AA); ComputeParameters(); }
ECHARM_crystal_InSb::ECHARM_crystal_InSb(){ SetAtomName("InSb"); //http://harker.chem.buffalo.edu/group/fit.html double vSbExperimentalCoefficients[12]; vSbExperimentalCoefficients[0] = 19.04077/51.; vSbExperimentalCoefficients[1] = 13.05412/51.; vSbExperimentalCoefficients[2] = 6.63670/51.; vSbExperimentalCoefficients[3] = 4.95963/51.; vSbExperimentalCoefficients[4] = 4.60941/51.; vSbExperimentalCoefficients[5] = 2.69795/51.; vSbExperimentalCoefficients[6] = 0.46176*AA*AA; vSbExperimentalCoefficients[7] = 5.31900*AA*AA; vSbExperimentalCoefficients[8] = 5.31953*AA*AA; vSbExperimentalCoefficients[9] = 28.54198*AA*AA; vSbExperimentalCoefficients[10] = 0.00010*AA*AA; vSbExperimentalCoefficients[11] = 72.65174*AA*AA; double vInExperimentalCoefficients[12]; vInExperimentalCoefficients[0] = 19.16300/49.; vInExperimentalCoefficients[1] = 18.59170/49.; vInExperimentalCoefficients[2] = 4.95237/49.; vInExperimentalCoefficients[3] = 4.27994/49.; vInExperimentalCoefficients[4] = 2.00969/49.; vInExperimentalCoefficients[5] = 0.00010/49.; vInExperimentalCoefficients[6] = 0.54868*AA*AA; vInExperimentalCoefficients[7] = 6.39500*AA*AA; vInExperimentalCoefficients[8] = 0.00010*AA*AA; vInExperimentalCoefficients[9] = 26.18224*AA*AA; vInExperimentalCoefficients[10] = 93.70112*AA*AA; vInExperimentalCoefficients[11] = 8.23922*AA*AA; ECHARM_atom_xray *atomIn = new ECHARM_atom_xray("In",49.,114.818 * amu,160.,481.,vInExperimentalCoefficients); ECHARM_atom_xray *atomSb = new ECHARM_atom_xray("Sb",51.,121.76 * amu,160.,472.,vSbExperimentalCoefficients); ECHARM_lattice *latticeIn = new ECHARM_lattice_zincblend_a(); ECHARM_lattice *latticeSb = new ECHARM_lattice_zincblend_b(); AddBase(atomIn,latticeIn); AddBase(atomSb,latticeSb); fCell = new ECHARM_cell(6.479*AA,6.479*AA,6.479*AA,90.,90.,90.); int vMillerX[3] = {1,0,0}; int vMillerY[3] = {0,1,0}; int vMillerZ[3] = {0,0,1}; fMiller = new ECHARM_miller_cubic(vMillerX,vMillerY); fMiller->SetX(vMillerX); fMiller->SetY(vMillerY); fMiller->SetZ(vMillerZ); ComputeParameters(); }
ECHARM_crystal_Al2O3::ECHARM_crystal_Al2O3(){ SetAtomName("Al2O3"); ECHARM_atom_moliere *atomAl = new ECHARM_atom_moliere("Al",13.,26.981539 * amu,980.0,145.2); ECHARM_atom_moliere *atomO = new ECHARM_atom_moliere("O",8.,15.9994 * amu,980.0,145.2); ECHARM_lattice *latticeAl = new ECHARM_lattice(); ECHARM_lattice *latticeO = new ECHARM_lattice(); latticeAl->Add(0.0,0.0,0.352); latticeAl->Add(0.0,0.0,0.148); latticeAl->Add(0.0,0.0,0.648); latticeAl->Add(0.0,0.0,0.852); latticeAl->Add(0.500005,0.166665,0.68533); latticeAl->Add(0.500005,0.166665,0.48133); latticeAl->Add(0.500005,0.166665,0.98133); latticeAl->Add(0.500005,0.166665,0.18533); latticeAl->Add(1.0,0.333335,0.01867); latticeAl->Add(1.0,0.333335,0.81467); latticeAl->Add(1.0,0.333335,0.31467); latticeAl->Add(1.0,0.333335,0.51867); latticeAl->Add(0.0,0.666665,0.68533); latticeAl->Add(0.0,0.666665,0.48133); latticeAl->Add(0.0,0.666665,0.98133); latticeAl->Add(0.0,0.666665,0.18533); latticeAl->Add(0.5,0.5,0.352); latticeAl->Add(0.5,0.5,0.148); latticeAl->Add(0.5,0.5,0.648); latticeAl->Add(0.5,0.5,0.852); latticeAl->Add(0.499995,0.833335,0.01867); latticeAl->Add(0.499995,0.833335,0.81467); latticeAl->Add(0.499995,0.833335,0.31467); latticeAl->Add(0.499995,0.833335,0.51867); latticeO->Add(0.3063,0.0,0.25); latticeO->Add(0.34685,0.34685,0.25); latticeO->Add(0.6937,0.0,0.75); latticeO->Add(0.15315,0.15315,0.75); latticeO->Add(0.806305,0.166665,0.58333); latticeO->Add(0.346855,0.319815,0.58333); latticeO->Add(0.346855,0.013515,0.58333); latticeO->Add(0.193705,0.166665,0.08333); latticeO->Add(0.653155,0.013515,0.08333); latticeO->Add(0.653155,0.319815,0.08333); latticeO->Add(0.306295,0.333335,0.91667); latticeO->Add(0.153145,0.180185,0.41667); latticeO->Add(0.153145,0.486485,0.41667); latticeO->Add(0.84685,0.15315,0.25); latticeO->Add(0.65315,0.34685,0.75); latticeO->Add(0.846845,0.486485,0.91667); latticeO->Add(0.846845,0.180185,0.91667); latticeO->Add(0.693695,0.333335,0.41667); latticeO->Add(0.1937,0.5,0.75); latticeO->Add(0.306305,0.666665,0.58333); latticeO->Add(0.153155,0.513515,0.08333); latticeO->Add(0.153155,0.819815,0.08333); latticeO->Add(0.8063,0.5,0.25); latticeO->Add(0.34685,0.65315,0.25); latticeO->Add(0.84685,0.84685,0.25); latticeO->Add(0.15315,0.84685,0.75); latticeO->Add(0.65315,0.65315,0.75); latticeO->Add(0.846855,0.819815,0.58333); latticeO->Add(0.846855,0.513515,0.58333); latticeO->Add(0.693705,0.666665,0.08333); latticeO->Add(0.806295,0.833335,0.91667); latticeO->Add(0.346845,0.986485,0.91667); latticeO->Add(0.346845,0.680185,0.91667); latticeO->Add(0.193695,0.833335,0.41667); latticeO->Add(0.653145,0.680185,0.41667); latticeO->Add(0.653145,0.986485,0.41667); AddBase(atomAl,latticeAl); AddBase(atomO,latticeO); fCell = new ECHARM_cell(4.7554E-10,8.23659441031E-10,12.991E-10,90.,90.,90.); int vMillerX[3] = {1,0,0}; int vMillerY[3] = {0,1,0}; int vMillerZ[3] = {0,0,1}; fMiller = new ECHARM_miller(vMillerX,vMillerY); fMiller->SetX(vMillerX); fMiller->SetY(vMillerY); fMiller->SetZ(vMillerZ); ComputeParameters(); }