def main(filename, outname, nframes=-1, natoms=-1): """ Perform analysis of dipoles in LAMMPS trajectory :param lammpstrj: Filename of LAMMPS trajectory :return: Number of frames in trajectory """ reader = FrameReader(filename) if natoms < 0: natoms = reader.total_atoms else: natoms = min(natoms, reader.total_atoms) if nframes < 0: nframes = reader.total_frames else: nframes = min(nframes, reader.total_frames) frame = Frame(natoms) with FrameWriter(outname) as writer: for i in xrange(nframes): # Read in frame from trajectory and process progressBar(i, nframes) reader.readFrame(i, frame) frame.centreOnMolecule(1) writer.writeFrame(i, frame) return nframes
def main(filename, nframes=-1, natoms=-1): """ Perform analysis of dipoles in LAMMPS trajectory :param lammpstrj: Filename of LAMMPS trajectory :return: Number of frames in trajectory """ np.set_printoptions(precision=3, suppress=True) reader = FrameReader(filename) if natoms < 0: natoms = reader.total_atoms else: natoms = min(natoms, reader.total_atoms) if nframes < 0: nframes = reader.total_frames else: nframes = min(nframes, reader.total_frames) angle1 = np.zeros((nframes, 6)) angle2 = np.zeros((nframes, 6)) improper = np.zeros((nframes, 6)) angle3 = np.zeros((nframes, 6)) # center = [] center_ang = np.zeros((nframes, 6)) center_imp = np.zeros((nframes, 6)) frame = Frame(natoms) print(nframes) for i in xrange(nframes): # Read in frame from trajectory and process if i % 10 == 0: progressBar(i, nframes) reader.readFrame(i, frame) frame.centreOnMolecule(1) angle1_tmp = calcAnglesAll(frame) angle2_tmp = calcAnglesAll(frame, 3) angle3_tmp = calcAnglesPlane(frame) improper_tmp = calcImpropersAll(frame) center_ang_tmp, center_imp_tmp = calcConeCenters(frame) # center.append([]) # center[i].append(calcConeCenters(frame)) # frame.show_atoms(0,6) if not np.any(angle1_tmp): print("AAAAAGH!!!!") for j in xrange(6): angle1[i, j] = angle1_tmp[j] angle2[i, j] = angle2_tmp[j] improper[i, j] = improper_tmp[j] angle3[i, j] = angle3_tmp[j] center_ang[i, j] = center_ang_tmp[j] center_imp[i, j] = center_imp_tmp[j] for j in xrange(6): print("-" * 5) print(boltzmannInvert(angle1[:, j])) print(boltzmannInvert(angle2[:, j])) print(boltzmannInvert(angle3[:, j])) print(boltzmannInvert(improper[:, j])) # plotHistogram(reduceArrays(improper[:, j])) np.savetxt("arr1.dat", angle1) np.savetxt("arr2.dat", angle2) np.savetxt("arr3.dat", angle3) np.savetxt("imp1.dat", improper) np.savetxt("center_imp.dat", center_imp) np.savetxt("center_ang.dat", center_ang) # for i in range(nframes): # print("Frame " + str(i+1) + ":") # for j in range(5): # print(" Bead " + str(j+1) + ":" + str(center[i][0][j])) # analyseAngles(angle1) # analyseAngles(angle2) return nframes