コード例 #1
0
ファイル: ds.py プロジェクト: paudirac/codi-antic
def main(directori, fitxer="posicions", out=None):
    fitxer = os.path.join(directori, fitxer)
    sys_info = SysInfo(open(fitxer).readlines()[0])
    global particula
    nparticules = sys_info.NX * sys_info.NY
    if out is None:
        out = default_out()

    dsi_list = [DS(i) for i in range(nparticules)]

    for frame_info, posicions in frames(fitxer, nparticules):
        t = parse_time(frame_info)
        extract_ds(posicions, t, dsi_list)

    dsix_list = [DSx(i) for i in range(nparticules)]
    for frame_info, posicions in frames(fitxer, nparticules):
        t = parse_time(frame_info)
        extract_ds(posicions, t, dsix_list)

    dsiy_list = [DSy(i) for i in range(nparticules)]
    for frame_info, posicions in frames(fitxer, nparticules):
        t = parse_time(frame_info)
        extract_ds(posicions, t, dsiy_list)

    for index, dsi in enumerate(dsi_list):
        print >> out, dsi.acumulated()

    # es "legal" agafar una partícula at random?
    particula = random.choice(range(nparticules))
    dsi = dsi_list[particula]

    fitxer_out = os.path.join(directori, "random_particle_ds.dat")
    open(fitxer_out, "w").writelines(str(dsi))
    print >> sys.stderr, "Escrivint %s" % fitxer_out

    dsix = dsix_list[particula]
    fitxer_out = os.path.join(directori, "random_particle_dsx.dat")
    open(fitxer_out, "w").writelines(str(dsix))
    print >> sys.stderr, "Escrivint %s" % fitxer_out

    dsiy = dsiy_list[particula]
    fitxer_out = os.path.join(directori, "random_particle_dsy.dat")
    open(fitxer_out, "w").writelines(str(dsiy))
    print >> sys.stderr, "Escrivint %s" % fitxer_out

    #fitxer_out = open(fitxer_out, "w")
    #for dsi in dsi_list:
        #fitxer_out.writelines(str(dsi))
    #fitxer_out.close()
    #print >> sys.stderr, "Escrivint %s" % fitxer_out.__name__

    fitxer_out = "ds_mean.dat"
    fitxer_out = os.path.join(directori, fitxer_out)
    ds_mean = statistics_ds(dsi_list)
    open(fitxer_out, "w").writelines(str(ds_mean))
    print >> sys.stderr, "Escrivint %s" % fitxer_out

    participation_ratio(dsi_list)
コード例 #2
0
ファイル: trajectories.py プロジェクト: paudirac/codi-antic
def main(directori, n_trajectories):
    nom_fitxer = os.path.join(directori,nom_fitxer_posicions)
    counter = 0
    title = ""
    sys_info = SysInfo(open(nom_fitxer).readlines()[0])
    #print sys_info
    NX = sys_info.NX
    V = sys_info.V
    delta_x = sys_info.delta_x
    NY = sys_info.NY

    #elegidosi = [random.choice(range(NX * NY)) for i in range(n_trajectories)]
    #for frame_info, posicions in frames(nom_fitxer, NX * NY):
        #elegidos = [posicions[index] for index in elegidosi]
        #print_trajectories(frame_info, posicions)#elegidos)

    traj_list = [Trajectoria(i) for i in range(NX * NY)]
    for frame_info, posicions in frames(nom_fitxer, NX * NY):
        t = parse_time(frame_info)
        extract_trajectories(posicions, t, traj_list)

    #for traj in traj_list:
        #print traj

    elegidi = [random.choice(range(NX * NY)) for i in range(2)]
    elegidos = [traj_list[i] for i in elegidi]
    dif = diferences(elegidos)
    for t, dr in dif:
        print t, dr
コード例 #3
0
ファイル: dw.py プロジェクト: paudirac/codi-antic
def main(directori, fitxer="forces", out=None):
    fitxer = os.path.join(directori, fitxer)
    sys_info = SysInfo(open(fitxer).readlines()[0])
    if out is None:
        out = sys.stdout

    for frame_info, forces in frames(fitxer, sys_info.NX * sys_info.NY):
        t = parse_time(frame_info)
        extract_forces(forces, t, dsf_list)
コード例 #4
0
ファイル: nonaffine2.py プロジェクト: paudirac/codi-antic
def affine_positions(sys_info, frame_info, posicions_inicials):
    X = sys_info.NX * sys_info.delta_x
    Y = sys_info.NY * sys_info.delta_y
    x0 = X / 2.
    y0 = Y / 2.
    V = sys_info.V
    t = parse_time(frame_info)
    gamma = - V * t / X # ja es strain! no

    for x,y in posicions_inicials:
        xa = gamma * (x - x0) # hi falta el young en algun lloc
        # utilitzar que nonaffine sera 0. per la component y mentre
        # no hi hagi plástic, per trobar el módul de Young?
        ya = 0. # provisional
        yield xa, ya
コード例 #5
0
ファイル: nonaffine.py プロジェクト: paudirac/codi-antic
def nonaffine_positions(sys_info, frame_info, posicions):
    X = (sys_info.NX - 0.5) * sys_info.delta_x
    Y = (sys_info.NY - 0.5) * sys_info.delta_y
    x0 = X / 2.
    y0 = Y / 2.
    V = sys_info.V
    t = parse_time(frame_info)
    gamma =  - V * t / X

    nonaffine = []
    for x,y in posicions:
        xa = gamma * (x - x0)
        xna = x - xa
        yna = y # provisional
        nonaffine.append((xna, yna))
    return nonaffine
コード例 #6
0
ファイル: strains.py プロジェクト: paudirac/codi-antic
def main(directori, fitxer=None):
    if fitxer is None:
        fitxer = "posicions"
    fitxer = os.path.join(directori, fitxer)
    sys_info = SysInfo(open(fitxer).readlines()[0])
    print sys_info

    length0 = None
    for frame_info, posicions in frames(fitxer, sys_info.phys_size):
        xmaxtup = max(posicions)
        xmintup = min(posicions)
        xmax = xmaxtup[0]
        xmin = xmintup[0]
        if length0 is None:
            length0 = xmax - xmin
        strainReal = (xmax - xmin) / length0
        t = parse_time(frame_info)
        print frame_info[:-1], 1 - (xmax - xmin) / length0, 2 * sys_info.V * t / length0