Пример #1
0
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
Пример #2
0
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