Beispiel #1
0
def testIDF():


# matdyn setting:
    settingString = """
[matdyn.x]
matdynInput = matdyn.in
flfrc = mgb2666.fc
"""

#*********************Initialize matdyn*****************************************
    matdyn = MatdynTask( configString = settingString)
    matdyn.syncSetting()

#*******************************************************************************
    print 'generating "Phonons on the Grid"'

# scf.in with fields relevant to structure information
    pwString = """
&SYSTEM
    ibrav = 4
    celldm(1) = 5.78552800736
    celldm(3) = 1.13577682118
    nat = 3
    ntyp = 2
/

ATOMIC_SPECIES
 Mg 24.305 mg_6.ncpp
 B  11.0   B.pbe-n-van_ak.UPF

ATOMIC_POSITIONS ALAT
 Mg     0.  0.          0.
 B      0.5 0.28867513  0.56788841
 B      0.  0.57735027  0.56788841
"""

    nqGrid = [4,4,4]

    #initialize structure:
    pwInput = PWInput(config = pwString)

    pwInput.parse()

    qpoints = kmesh.kMeshCart(nqGrid,pwInput.structure.lattice.reciprocalBase())

    #update qpoints and launch matdyn
    matdyn.input.qpoints.set(qpoints)
    matdyn.input.save()
    matdyn.launch()

    #matdyn.output.toString()
    matdyn.output.parse()
    Pols, Freqs, qPoints = matdyn.output.property('multi phonon')

    # convert to Hz**2 and save
    Omega2.write( (Freqs*C*TWO_PI)**2,'Omega2.idf','')
    Polarizations.write(Pols, 'Polarizations.idf','Polarizations')    

    idfPolData = Polarizations.read('Polarizations.idf')
    idfOmega2Data = Omega2.read('Omega2.idf')


    #save lattice/grid information and make it angstrem compatible, multiply by 2pi:
    genQgridinfo('Qgridinfo.idf', nqGrid, \
                  pwInput.structure.lattice.matter().\
                                  reciprocal().base*2.0*3.14159265*1.889725989)
    print idfPolData
    print idfOmega2Data


#*******************************************************************************
    print 'generating "Phonon DOS"'
    nqGrid = [10,10,10]

    matdyn.input.qpoints.setAutomatic(nqGrid)
    matdyn.input.save()
    matdyn.launch()
    matdyn.output.parse()

    axis, dos = matdyn.output.property('phonon dos')

    # save DOS in THz
    DOS.write(axis*0.0299792458, dos, filename = 'DOS', comment = '')

    idfDOSData = DOS.read('DOS')
    print idfDOSData
    #import numpy
    #import numpy.linalg as numalg
    #print 2 * 3.14159265 * numalg.inv(numpy.transpose(pwInput.structure.lattice.matter().base/1.889725989))
#*********************Cleaning**************************************************
    import os
    os.system('cat ./Qgridinfo.idf')
from qecalc.qetask.matdyntask import MatdynTask
from qecalc.qetask.pwtask import PWTask
from qeutils import kmesh
from qeutils.bandstobxsf import bandstobxsf


matdyn = MatdynTask('config.ini')
pw = PWTask('config.ini')

pw.input.parse()
matdyn.input.parse()

qmesh = [17,17,17]

qpoints = kmesh.kMeshCart(qmesh,pw.input.structure.lattice.reciprocalBase())

matdyn.input.qpoints.set(qpoints)
matdyn.input.save()

matdyn.launch()

#matdyn.output.parse()

modes, freqs, qpts = matdyn.output.property('multi phonon')

bands = kmesh.packBands(qmesh, freqs)
phononEnergy = 720.0
bandstobxsf(phononEnergy, pw.input.structure.lattice.reciprocalBase(), bands,\
'phonons.bxsf')

Beispiel #3
0
def testIDF():

    # matdyn setting:
    settingString = """
[matdyn.x]
matdynInput = matdyn.in
flfrc = mgb2666.fc
"""

    #*********************Initialize matdyn*****************************************
    matdyn = MatdynTask(configString=settingString)
    matdyn.syncSetting()

    #*******************************************************************************
    print 'generating "Phonons on the Grid"'

    # scf.in with fields relevant to structure information
    pwString = """
&SYSTEM
    ibrav = 4
    celldm(1) = 5.78552800736
    celldm(3) = 1.13577682118
    nat = 3
    ntyp = 2
/

ATOMIC_SPECIES
 Mg 24.305 mg_6.ncpp
 B  11.0   B.pbe-n-van_ak.UPF

ATOMIC_POSITIONS ALAT
 Mg     0.  0.          0.
 B      0.5 0.28867513  0.56788841
 B      0.  0.57735027  0.56788841
"""

    nqGrid = [4, 4, 4]

    #initialize structure:
    pwInput = PWInput(config=pwString)

    pwInput.parse()

    qpoints = kmesh.kMeshCart(nqGrid,
                              pwInput.structure.lattice.reciprocalBase())

    #update qpoints and launch matdyn
    matdyn.input.qpoints.set(qpoints)
    matdyn.input.save()
    matdyn.launch()

    #matdyn.output.toString()
    matdyn.output.parse()
    Pols, Freqs, qPoints = matdyn.output.property('multi phonon')

    # convert to Hz**2 and save
    Omega2.write((Freqs * C * TWO_PI)**2, 'Omega2.idf', '')
    Polarizations.write(Pols, 'Polarizations.idf', 'Polarizations')

    idfPolData = Polarizations.read('Polarizations.idf')
    idfOmega2Data = Omega2.read('Omega2.idf')

    #save lattice/grid information and make it angstrem compatible, multiply by 2pi:
    genQgridinfo('Qgridinfo.idf', nqGrid, \
                  pwInput.structure.lattice.matter().\
                                  reciprocal().base*2.0*3.14159265*1.889725989)
    print idfPolData
    print idfOmega2Data

    #*******************************************************************************
    print 'generating "Phonon DOS"'
    nqGrid = [10, 10, 10]

    matdyn.input.qpoints.setAutomatic(nqGrid)
    matdyn.input.save()
    matdyn.launch()
    matdyn.output.parse()

    axis, dos = matdyn.output.property('phonon dos')

    # save DOS in THz
    DOS.write(axis * 0.0299792458, dos, filename='DOS', comment='')

    idfDOSData = DOS.read('DOS')
    print idfDOSData
    #import numpy
    #import numpy.linalg as numalg
    #print 2 * 3.14159265 * numalg.inv(numpy.transpose(pwInput.structure.lattice.matter().base/1.889725989))
    #*********************Cleaning**************************************************
    import os
    os.system('cat ./Qgridinfo.idf')