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
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')
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')
# 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()
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')
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()
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 )
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.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 )
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)
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')