except IndexError: num=None refStructure=None if len(sys.argv)==3: refStructure=int(sys.argv[2]) #First and last configurations dummy,dummy,basisFirst,atomsFirst,dummy,typesFirst = outcarIO.outcarReadConfig(outcarFile,wantconfig=0) dummy,dummy,basisLast,atomsLast,dummy,typesLast = outcarIO.outcarReadConfig(outcarFile,wantconfig=-1) #MSD delT,msdAtom=outcarMeanSquareDisplaceAtom(outcarFile,refStructure) #TET tetsFirst,rcutFirst=tetrahedral(atomsFirst,basisFirst,rcut=rcut) print "First Tetra/rcut",sum(tetsFirst)/len(tetsFirst),rcutFirst tetsLast,rcutLast=tetrahedral(atomsLast,basisLast,rcut=rcut) print "Last Tetra/rcut",sum(tetsLast)/len(tetsLast),rcutLast #CN cnFirst,rcutFirst=coordinationNumber(atomsFirst,basisFirst,rcut=rcut) print "First CN/rcut",float(sum(cnFirst))/len(cnFirst),rcutFirst cnLast,rcutLast=coordinationNumber(atomsLast,basisLast,rcut=rcut) print "Last CN/rcut",float(sum(cnLast))/len(cnLast),rcutLast wFile = open(outcarFile+".MSDatom","w") wFile.write("#File generated by %s\n"%sys.argv[0].split("/")[-1]) wFile.write("#%d atoms, %5.5f timestep size, %d number of steps\n"%(len(msdAtom),delT[0],len(delT)))
#Find the starting locations of atomic data in outcarfile grepResults = subprocess.check_output("grep -b POSITION %s"%outcarFile,shell=True).split("\n") bytenums=[int(i.split(":")[0]) for i in grepResults if len(i)>2] outcar= open(outcarFile,"r") mlab.figure(bgcolor=(0.8,0.8,0.8)) for i,b in enumerate(bytenums): if i%2==0: continue outcar.seek(b) outcar.readline() outcar.readline() atoms = [map(float,outcar.readline().split()[:3]) for a in range(nAtoms)] tet,rcut = orderParam.tetrahedral(atoms,basis,rcut=3.2) ax,ay,az=zip(*atoms) mlab.points3d(ax,ay,az,tet,colormap='jet',scale_factor=1.5,scale_mode='none',resolution=8) #mlab.plot3d([0,basis[0][0]],[0,basis[1][1]],[0,basis[2][2]],opacity=0) mlab.view(focalpoint=(basis[0][0]/1.1,basis[1][1]/1.1,basis[2][2]/1.1)) n = str(i).zfill(5) mlab.savefig(movieDir+prefix+n+suffix,magnification=1.5) mlab.clf() #mencoder "mf://*.png" -mf fps=25 -o output.avi -ovc lavc -lavcopts vcodec=mpeg4 #opt="vbitrate=2160000:mbd=2:keyint=132:vqblur=1.0:cmp=2:subcmp=2:dia=2:mv0:last_pred=3" #mencoder -ovc lavc -lavcopts vcodec=msmpeg4v2:vpass=1:$opt -mf type=png:fps=48 -nosound -o /dev/null mf://\*.png #mencoder -ovc lavc -lavcopts vcodec=msmpeg4v2:vpass=2:$opt -mf type=png:fps=48 -nosound -o output.avi mf://\*.png
bytenums = [int(i.split(":")[0]) for i in grepResults if len(i) > 2] outcar = open(filename, "r") tetraOut = open(filename + ".tetra", "w") tetraOut.write("AverageTetra PerAtomTetra\n") for i, b in enumerate(bytenums): outcar.seek(b) outcar.readline() outcar.readline() atoms = [ map(float, outcar.readline().split()[:3]) for a in range(nAtoms) ] tet, rcut = orderParam.tetrahedral(atoms, basis, rcut=rcut) tAvg = sum(tet) / len(tet) tets = " ".join(map(str, tet)) tetraOut.write(str(tAvg) + " " + tets + "\n") if lammpsFlag: nAtoms = lammpsIO.nAtoms(filename) basisByteNums = lammpsIO.basisBytes(filename) atomsByteNums = lammpsIO.atomsBytes(filename) tetraOut = open(filename + ".tetra", "w") tetraOut.write("AverageTetra PerAtomTetra\n") for i, (bByte, aByte) in enumerate(zip(basisByteNums, atomsByteNums)): basis = lammpsIO.parseBasis(filename, bByte) atoms, dummy = lammpsIO.parseAtoms(filename, aByte, nAtoms, basis)
refStructure = None if len(sys.argv) == 3: refStructure = int(sys.argv[2]) #First and last configurations dummy, dummy, basisFirst, atomsFirst, dummy, typesFirst = outcarIO.outcarReadConfig( outcarFile, wantconfig=0) dummy, dummy, basisLast, atomsLast, dummy, typesLast = outcarIO.outcarReadConfig( outcarFile, wantconfig=-1) #MSD delT, msdAtom = outcarMeanSquareDisplaceAtom(outcarFile, refStructure) #TET tetsFirst, rcutFirst = tetrahedral(atomsFirst, basisFirst, rcut=rcut) print "First Tetra/rcut", sum(tetsFirst) / len(tetsFirst), rcutFirst tetsLast, rcutLast = tetrahedral(atomsLast, basisLast, rcut=rcut) print "Last Tetra/rcut", sum(tetsLast) / len(tetsLast), rcutLast #CN cnFirst, rcutFirst = coordinationNumber(atomsFirst, basisFirst, rcut=rcut) print "First CN/rcut", float(sum(cnFirst)) / len(cnFirst), rcutFirst cnLast, rcutLast = coordinationNumber(atomsLast, basisLast, rcut=rcut) print "Last CN/rcut", float(sum(cnLast)) / len(cnLast), rcutLast wFile = open(outcarFile + ".MSDatom", "w") wFile.write("#File generated by %s\n" % sys.argv[0].split("/")[-1]) wFile.write("#%d atoms, %5.5f timestep size, %d number of steps\n" % (len(msdAtom), delT[0], len(delT)))