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();
}