def usage(): print "%s OUTCAR CONFIG" % sys.argv[0].split("/")[-1] if len(sys.argv) != 3: usage() exit(0) outcarFile = sys.argv[1] configRequest = int(sys.argv[2]) nSteps = outcarIO.nSteps(outcarFile) #unit is femto, but in 10E-10*10E-15 seconds to account for angstroms in distance timestep = outcarIO.timestep(outcarFile) * 10E-1 #Error check requested configuration if configRequest == -1: configRequest = nSteps - 1 if configRequest > nSteps: print "%d configurations available" % nSteps exit(0) if configRequest < 5: print "Need more than 5 steps for backwards - finite difference method." exit(0) #Gather poscar information for last set of atoms basis, atypes, atoms, head, poscar = outcarIO.outcar2poscar( outcarFile, configRequest)
if "-linear" in sys.argv: linEnable = True i = sys.argv.index("-linear") sys.argv.pop(i) inputFile = sys.argv[1] #steps = map(int,sys.argv[2].split(",")) isfType = "total" if sys.argv[2][0] in ['s','S']: isfType = "self" else: isfType = "total" if scale == None: if "OUTCAR" in inputFile: scale = outcarIO.timestep(inputFile)*1E-15# 5E-15 #5fs (potim=5) else: scale = 0.001E-12 #0.001ps (default for units = metal) if logtEnable: header = "#Generated by %s using file %s\n log(t) ISF \n"%(sys.argv[0].split("/")[-1],inputFile) else: header = "#Generated by %s using file %s\n t(ps) ISF \n"%(sys.argv[0].split("/"),inputFile) if "OUTCAR" in inputFile: ocarFile = inputFile atomByteNums = outcarIO.atomBytes(ocarFile) nAtom = outcarIO.nAtoms(ocarFile) basis = outcarIO.basis(ocarFile) configIterator = parserGens.parseOutcarAtoms(atomByteNums,ocarFile,nAtom)
#parses an outcar, takes 3 nearest poscar information and uses finitie difference method to calculate velocities. Stick velocities at the end. Can take the place of a poscar to initialize velocities. def usage(): print "%s OUTCAR CONFIG"%sys.argv[0].split("/")[-1] if len(sys.argv)!=3: usage() exit(0) outcarFile = sys.argv[1] configRequest = int(sys.argv[2]) nSteps = outcarIO.nSteps(outcarFile) #unit is femto, but in 10E-10*10E-15 seconds to account for angstroms in distance timestep = outcarIO.timestep(outcarFile) * 10E-1 #Error check requested configuration if configRequest == -1: configRequest = nSteps-1 if configRequest > nSteps: print "%d configurations available"%nSteps exit(0) if configRequest < 5: print "Need more than 5 steps for backwards - finite difference method." exit(0) #Gather poscar information for last set of atoms basis,atypes,atoms,head,poscar = outcarIO.outcar2poscar(outcarFile,configRequest) #Convert from fractional units to cartesian