Esempio n. 1
0
def testIDF():
    settingString = """
[matdyn.x]
flvec = matdyn.modes
flfrq = matdyn.freq
fldos = matdyn.dos
"""

# No flfrc or matdynInput are needed for conversion to DOS
#flfrc = mgb2666.fc
#matdynInput = matdyn.in

    # Initialize matdyn

    matdyn = MatdynTask( configString = settingString)
    #matdyn.syncSetting()   # Why do I need this?
    matdyn.output.parse()
    axis, dos = matdyn.output.property('phonon dos')

    # XXX Why nqGrid?
    #nqGrid = [10,10,10]
    #matdyn.input.qpoints.setAutomatic(nqGrid)

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

    idfDOSData = idf.DOS.read('DOS.1')
    print idfDOSData
Esempio n. 2
0
def testIDF():
    settingString = """
[matdyn.x]
flvec = matdyn.modes
flfrq = matdyn.freq
fldos = matdyn.dos
"""

    # Initialize matdyn
    matdyn = MatdynTask(configString=settingString)
    matdyn.syncSetting()
    matdyn.output.parse()
    Pols, Freqs, qPoints = matdyn.output.property('multi phonon')

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

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

    pwInput = PWInput(filename="pw.in")
    pwInput.parse()

    # XXX
    #   - Why nqGrid?
    #   - Is there a way to get reciprocal lattice from matter?
    nqGrid = [4, 4, 4]

    #save lattice/grid information and make it angstrem compatible, multiply by 2pi:
    genQgridinfo('Qgridinfo', nqGrid, \
                  pwInput.structure.lattice.matter().\
                                  reciprocal().base*2.0*PI*A2B)
    print idfPolData
    print idfOmega2Data
    import os
    os.system('cat ./Qgridinfo')
Esempio n. 3
0
def testIDF():
    settingString = """
[matdyn.x]
flvec = matdyn.modes
flfrq = matdyn.freq
fldos = matdyn.dos
"""

    # Initialize matdyn
    matdyn = MatdynTask( configString = settingString)
    matdyn.syncSetting()
    matdyn.output.parse()
    Pols, Freqs, qPoints = matdyn.output.property('multi phonon')

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

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

    pwInput = PWInput(filename = "pw.in")
    pwInput.parse()

    # XXX
    #   - Why nqGrid?
    #   - Is there a way to get reciprocal lattice from matter?
    nqGrid = [4,4,4]

    #save lattice/grid information and make it angstrem compatible, multiply by 2pi:
    genQgridinfo('Qgridinfo', nqGrid, \
                  pwInput.structure.lattice.matter().\
                                  reciprocal().base*2.0*PI*A2B)
    print idfPolData
    print idfOmega2Data
    import os
    os.system('cat ./Qgridinfo')
Esempio n. 4
0
#                     California Institute of Technology
#                     (C) 2010  All Rights Reserved
#
# File coded by:      Nikolay Markovskiy
#
# See AUTHORS.txt for a list of people who contributed.
# See LICENSE.txt for license information.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

from qecalc.qetask.matdyntask import MatdynTask
from qecalc.qetask.pwtask import PWTask
from qeutils.phdos import PhononDOS

if __name__ == "__main__":
    matdyn = MatdynTask(configString="")
    pw = PWTask(configString="")
    pw.syncSetting()
    dos = PhononDOS(matdynTask=matdyn, structure=pw.input.structure)

    # grid has to be huge since a simple histogramming will be used
    qgrid = [64, 64, 64]

    # generate qpoints and launch matdyn task
    dos.launch(nqpoints=qgrid, partialDOS=True)

    # this line is required if matdyn.modes exisits from previoius run and
    # dos.launch() is commented out
    #dos.loadPhonons()

    #dos.DOS()
Esempio n. 5
0
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')

Esempio n. 6
0
from qecalc.qetask.pwtask import PWTask
from qeutils import kmesh
from qeutils.bandstobxsf import bandstobxsf


configString = """
[pw.x]
pwInput:  scf.in
pwOutput: scf.out

[matdyn.x]
matdynInput:   matdyn.in
matdynOutput:  matdyn.out
"""

matdyn = MatdynTask(configString = configString)
pw = PWTask(configString = configString)

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.syncSetting()
Esempio n. 7
0
from qecalc.qetask.matdyntask import MatdynTask
from qecalc.qetask.pwtask import PWTask
from qeutils.phdispersion import PHDispersion

import numpy

configString = """
[matdyn.x]
# input/output files relevant to multiple phonon calculation
matdynInput:   matdyn.in
matdynOutput:  matdyn.out
flfrc:         mgb2666.fc
"""

if __name__ == "__main__":
    matdyn = MatdynTask(configString = configString)
    pw = PWTask(configString = configString)
    pw.input.parse()

    matdyn.input.parse()
    matdyn.syncSetting()


    phDisp = PHDispersion(pw.input.structure.lattice, matdyn)

    #phDisp.launch('M', 'Gamma', 'A', 'L', 200, 200, 200)
    nP = 100
    phDisp.launch('Gamma', 'K', 'M', 'Gamma', 'A','H', 'L', 'A', nP, nP, nP, nP , nP , nP, nP)
    #phDisp.launch('Gamma', 'H', nP)
    #phDisp.launch('Gamma', 'K', 'M', 'Gamma', nP , nP, nP)
    #phDisp.launch( 'Gamma', 'K',  nP )
Esempio n. 8
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')
Esempio n. 9
0
from qecalc.qetask.matdyntask import MatdynTask
from qecalc.qetask.pwtask import PWTask
from qeutils.phdispersion import PHDispersion

import numpy

configString = """
[matdyn.x]
# input/output files relevant to multiple phonon calculation
matdynInput:   matdyn.in
matdynOutput:  matdyn.out
flfrc:         mgb2666.fc
"""

if __name__ == "__main__":
    matdyn = MatdynTask(configString=configString)
    pw = PWTask(configString=configString)
    pw.input.parse()

    matdyn.input.parse()
    matdyn.syncSetting()

    phDisp = PHDispersion(pw.input.structure.lattice, matdyn)

    #phDisp.launch('M', 'Gamma', 'A', 'L', 200, 200, 200)
    nP = 100
    phDisp.launch('Gamma', 'K', 'M', 'Gamma', 'A', 'H', 'L', 'A', nP, nP, nP,
                  nP, nP, nP, nP)
    #phDisp.launch('Gamma', 'H', nP)
    #phDisp.launch('Gamma', 'K', 'M', 'Gamma', nP , nP, nP)
    #phDisp.launch( 'Gamma', 'K',  nP )
Esempio n. 10
0
from qecalc.qetask.matdyntask import MatdynTask

matdyn = MatdynTask('config.ini')
matdyn.output.parse()
Pol, Omegas, qPoints = matdyn.output.property('multi phonon')
print Pol
print Omegas
#setting.matdynModes = 'blahblah.modes'
#matdyn.output.parse()
#mphonOut, Omegas, qPoints = matdyn.output.property('multi phonon', withUnits = True)


Esempio n. 11
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')