コード例 #1
0
    voluPhon = VoluPhon("config.ini", prcntVol)
    voluPhon.setA(a_range[indexRange], 'polynom', 1, True)
    c_range = a_range*c_a_range
    voluPhon.setC(c_range[indexRange], 'polynom', 1, True)
    # Generate phonon doses from different fc files
   # for i in indexRange:
   #     os.system('cp ' + str(i) + '_' + fc_name + ' ' + fc_name)
   #     qecalc.matdynLauncher()
   #     os.system('cp ' + matdynfldos + ' ' + str(i) + '_' + matdynfldos )

    #plot free energies:
    for temperature in temperatures:
        lines = ''
        phonon = []
        for i,v in zip(indexRange, prcntVol):
            axis, dos = qecalc.getPhononDOS(str(i) + '_' + matdynfldos)
            phonTherm = PhononThermodynamics(axis, dos)
            Cv = phonTherm.Cv(temperature)
            phonon.append(phonTherm.freeEnergy(temperature))
            totalFreeEnergy = e_total[i] + phonon[-1]
            lines = lines + '%f    %f    %f    %f    %f\n'%(v, \
            totalFreeEnergy, e_total[i], phonon[-1], Cv)
        file = open(str(temperature) + '_free_energy.out', 'w')
        file.write(lines)
        file.close()

        freeEnergy = FreeEnergy(prcntVol, e_total, phonon)
        optPrcntVolume = freeEnergy.minimizeTotalFreeEnergy(finePrcntVol[0], finePrcntVol[-1])
        print "\nOptimized lattice parameters:"
        a = voluPhon.a.fittedValue(optPrcntVolume)
        c = voluPhon.c.fittedValue(optPrcntVolume)
コード例 #2
0
    voluPhon = VoluPhon("config.ini", prcntVol)
    voluPhon.setA(a_range[indexRange], 'polynom', 1, True)
    c_range = a_range * c_a_range
    voluPhon.setC(c_range[indexRange], 'polynom', 1, True)
    # Generate phonon doses from different fc files
    for i in indexRange:
        os.system('cp ' + str(i) + '_' + fc_name + ' ' + fc_name)
        qecalc.matdynLauncher()
        os.system('cp ' + matdynfldos + ' ' + str(i) + '_' + matdynfldos)

    #plot free energies:
    for temperature in temperatures:
        lines = ''
        phonon = []
        for i, v in zip(indexRange, prcntVol):
            axis, dos = qecalc.getPhononDOS(str(i) + '_' + matdynfldos)
            phonTherm = PhononThermodynamics(axis, dos)
            Cv = phonTherm.Cv(temperature)
            phonon.append(phonTherm.freeEnergy(temperature))
            totalFreeEnergy = e_total[i] + phonon[-1]
            lines = lines + '%f    %f    %f    %f    %f\n'%(v, \
            totalFreeEnergy, e_total[i], phonon[-1], Cv)
        file = open(str(temperature) + '_free_energy.out', 'w')
        file.write(lines)
        file.close()

        freeEnergy = FreeEnergy(prcntVol, e_total, phonon)
        optPrcntVolume = freeEnergy.minimizeTotalFreeEnergy(
            finePrcntVol[0], finePrcntVol[-1])
        print "\nOptimized lattice parameters:"
        a = voluPhon.a.fittedValue(optPrcntVolume)