array(atoms),array(basis),l=lval,neighbs=neighbs,rcut=args.rcut,debug=args.debug)) elif "OUTCAR" in pn: if len(cfgNums)==1: TE,stress,basis,atoms,forces,types = outcarIO.outcarReadConfig(pn,cfgNums) orderVals.append( orderParams[op]( \ array(atoms),array(basis),l=lval,neighbs=neighbs,rcut=args.rcut,debug=args.debug)) else: TEs,stresss,basiss,atomss,forcess,typess = outcarIO.outcarReadConfig(pn,cfgNums) for basis,atoms in zip(basiss,atomss): orderVals.append(orderParams[op]( \ array(atoms),array(basis),l=lval,neighbs=neighbs,rcut=args.rcut,debug=args.debug)) else: #LAMMPS DUMP if len(cfgNums)==1: basis,types,atoms = lammpsIO.readConfig(pn,cfgNums) orderVals.append( orderParams[op]( \ array(atoms),array(basis),l=lval,neighbs=neighbs,rcut=args.rcut,debug=args.debug)) else: basiss,types,atomss = lammpsIO.readConfig(pn,cfgNums) for basis,atoms in zip(basiss,atomss): orderVals.append(orderParams[op]( \ array(atoms),array(basis),l=lval,neighbs=neighbs,rcut=args.rcut,debug=args.debug)) #====================================================== # Plot! #====================================================== labels=[] if lval==None: lval="" xylabels={"BO" :[r"BondOrder($Q_%s$)"%str(lval), r"$P(Q_%s)$"%str(lval)],
#Parse POSCAR j=0 if "POSCAR" in configFile or "CONTCAR" in configFile: poscar=open(configFile,"r").readlines() [basis,atypes,atoms,head,poscar] = poscarIO.read(poscar) types=list() for i in atypes: types+=[j+1]*i j+=1 elif "OUTCAR" in configFile: TE,stress,basis,atoms,forces,types = outcarIO.outcarReadConfig(configFile,Nconfig) #Parse LAMMPS DUMP else: basis,types,atoms = lammpsIO.readConfig(configFile,Nconfig) ax,ay,az=map(np.array,zip(*atoms)) v1,v2,v3=basis if rectifyFlag: ax,ay,az = ax%v1[0], ay%v2[1], az%v3[2] fig=mlab.figure(bgcolor=(0.8,0.8,0.8)) #Set default rcut value for tetrahedral ordering if op=="TET" and rcut==None: rcut=3.2 #Get the order parameter and convert to integer format (opsn) for #coloring of atoms
print "%s <lammps dump> <config #> <POSCAR output>" % sys.argv[0].split("/")[-1] print "If only the dump file is provided, the number of configurations will be reported" print "Converts a lammps dump to POSCAR" # If only the filename is provided, count the number of configurations and spit that out if len(sys.argv) == 2: dumpdata = open(sys.argv[1], "r").readlines() usage() print "\nNumber of configurations:", len([i for i in dumpdata if "ITEM: TIMESTEP" in i]), "\n" exit(0) if len(sys.argv) != 4: usage() exit(0) dumpdata = sys.argv[1] # open(sys.argv[1],"r").readlines() configN = int(sys.argv[2]) posname = sys.argv[3] # Read in lammps data basis, types, atoms = lammpsIO.readConfig(dumpdata, configN) # atoms,types = zip(*[[[i[0],i[1],i[2]-basis[2][2]/2.0],t] for i,t in zip(atoms,types) if i[2]>basis[2][2]/2.0]) # basis[2][2]/=2.0 header = "POSCAR generated by %s on %s" % (sys.argv[0].split("/")[-1], time.asctime()) # Write out POSCAR data atypes = [types.count(j) for j in sorted(list(set(types)))] poscarIO.write(posname, basis, atoms, atypes, header, autoFrac=False, frac=False)
j=0 if "POSCAR" in configFile or "CONTCAR" in configFile: poscar=open(configFile,"r").readlines() [basis,atypes,atoms,head,poscar] = poscarIO.read(poscar) types=list() for i in atypes: types+=[j+1]*i j+=1 #Parse OUTCAR elif "OUTCAR" in configFile: TE,stress,basis,atoms,forces,types = outcarIO.outcarReadConfig(configFile,Nconfig) #Parse LAMMPS else: basis,types,atoms = lammpsIO.readConfig(configFile,Nconfig) ax,ay,az=map(np.array,zip(*atoms)) nAtom = len(ax) v1,v2,v3=basis if shiftFlag: atoms = [[a[0]+v1[0]/2.,a[1]+v2[1]/2.,a[2]+v3[2]/2.55] for a in atoms] rectifyFlag = True if rectifyFlag: atoms = np.array(atoms) #unrectified for orderParam calculations. ax = np.mod(atoms[:,0],v1[0]) ay = np.mod(atoms[:,1],v2[1]) az = np.mod(atoms[:,2],v3[2])
elif "OUTCAR" in pn: if len(cfgNums) == 1: TE, stress, basis, atoms, forces, types = outcarIO.outcarReadConfig( pn, cfgNums) orderVals.append( orderParams[op]( \ array(atoms),array(basis),l=lval,neighbs=neighbs,rcut=args.rcut,debug=args.debug)) else: TEs, stresss, basiss, atomss, forcess, typess = outcarIO.outcarReadConfig( pn, cfgNums) for basis, atoms in zip(basiss, atomss): orderVals.append(orderParams[op]( \ array(atoms),array(basis),l=lval,neighbs=neighbs,rcut=args.rcut,debug=args.debug)) else: #LAMMPS DUMP if len(cfgNums) == 1: basis, types, atoms = lammpsIO.readConfig(pn, cfgNums) orderVals.append( orderParams[op]( \ array(atoms),array(basis),l=lval,neighbs=neighbs,rcut=args.rcut,debug=args.debug)) else: basiss, types, atomss = lammpsIO.readConfig(pn, cfgNums) for basis, atoms in zip(basiss, atomss): orderVals.append(orderParams[op]( \ array(atoms),array(basis),l=lval,neighbs=neighbs,rcut=args.rcut,debug=args.debug)) #====================================================== # Plot! #====================================================== labels = [] if lval == None: lval = "" xylabels = {
#!/usr/bin/python import sys #mine import lammpsIO import utils utils.usage(["<input dump file>","<configuration #>","<output config file>"],3,3,"LAMMPS dump file must have bounds, atom type and atomic locations.") iDump=sys.argv[1] cfg=int(sys.argv[2]) bounds,types,atoms=lammpsIO.readConfig(iDump,cfg) oCnfg=open(sys.argv[3],"w") lammpsIO.dumpWriteConfig(oCnfg,bounds,types,atoms,"config made by %s, from file %s config %d"%(sys.argv[0].split("/")[-1],iDump,cfg))
dumpdata = open(sys.argv[1], "r").readlines() usage() print "\nNumber of configurations:", len( [i for i in dumpdata if "ITEM: TIMESTEP" in i]), "\n" exit(0) if len(sys.argv) != 4: usage() exit(0) dumpdata = sys.argv[1] #open(sys.argv[1],"r").readlines() configN = int(sys.argv[2]) posname = sys.argv[3] #Read in lammps data basis, types, atoms = lammpsIO.readConfig(dumpdata, configN) #atoms,types = zip(*[[[i[0],i[1],i[2]-basis[2][2]/2.0],t] for i,t in zip(atoms,types) if i[2]>basis[2][2]/2.0]) #basis[2][2]/=2.0 header = "POSCAR generated by %s on %s" % (sys.argv[0].split("/")[-1], time.asctime()) #Write out POSCAR data atypes = [types.count(j) for j in sorted(list(set(types)))] poscarIO.write(posname, basis, atoms, atypes, header, autoFrac=False, frac=False)