Exemplo n.º 1
0
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)
Exemplo n.º 2
0
def main2(directori, fitxer, fitxer2):
    fitxer = os.path.join(directori, fitxer)
    fitxer2 = os.path.join(directori, fitxer2)

    g = Gnuplot.Gnuplot()
    sys_info = SysInfo(open(fitxer).readlines()[0])
    print sys_info

    fr1 = frames(fitxer, sys_info.sys_size)
    fr2 = frames(fitxer2, sys_info.sys_size)
    for fr1_info, fr1_pos in fr1:
        fr2_info, fr2_pos = fr2.next()
        title = "frame: %s t = %s" % tuple(fr2_info.split())
        g("set title '%s'" % title)
        g.plot(fr1_pos, fr2_pos)
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
def main(directori, posicions="posicions"):
    nom_fitxer = os.path.join(directori, posicions)
    sys_info = SysInfo(open(nom_fitxer).readlines()[0])

    out = None

    printa_nonaffine_header(sys_info, out)

    for frame_info, posicions in frames(nom_fitxer, sys_info.phys_size):
        nonaffine = nonaffine_positions(sys_info, frame_info, posicions)
        printa_nonaffine(frame_info, nonaffine, out)
Exemplo n.º 6
0
def main(directori, fitxer=None):
    if fitxer is None:
        fitxer = nom_fitxer_posicions
    fitxer = os.path.join(directori, fitxer)

    g = Gnuplot.Gnuplot()
    sys_info = SysInfo(open(fitxer).readlines()[0])
    print sys_info

    for frame_info, posicions in frames(fitxer, sys_info.sys_size):
        title = "frame: %s t = %s" % tuple(frame_info.split())
        g.reset()
        g("set title '%s'" % title)
        g.plot(Gnuplot.Data(posicions))
Exemplo n.º 7
0
def main(directori):
    posicionsf = os.path.join(directori, "posicions")
    sys_info = SysInfo(open(posicionsf, 'r').readline())
    triangulacionsf = os.path.join(directori, "triangulacions")

    for frame_info, posicions in frames(posicionsf, sys_info.phys_size):
        #sys.stderr.write(frame_info)
        tri = Triangulation(posicions)
        dislos = tri.dislocations()
        #log("%s %d\n" % (frame_info[:-1], len(dislos)))

        neig = tri.get_neighbours()
        coords = map(len, neig.values())
        coordM = sum(coords) / float(len(coords))
        log("%s %f %d\n" % (frame_info[:-1], coordM, len(coords)))
Exemplo n.º 8
0
def main(directori, fitxer="forces", out=None, acumulator=None):
    fitxer = os.path.join(directori, fitxer)
    sys_info = SysInfo(open(fitxer).readlines()[0])
    global particula
    particula = random.choice(range(sys_info.NX * sys_info.NY))
    print >> sys.stderr, "particula", particula
    if out is None:
        out = default_out()
    if acumulator is None:
        acumulator = DefaultAcumulator()
    # print >> out, sys_info

    for frame_info, velos_snap in frames(fitxer, sys_info.NX * sys_info.NY):
        # print >> sys.stderr, frame_info
        acumulator.frame_info = frame_info
        extract_velos(velos_snap, out, acumulator)
Exemplo n.º 9
0
def main(directori):
    g = Gnuplot.Gnuplot()
    nom_fitxer = os.path.join(directori, nom_fitxer_stressos)
    sys_info = SysInfo(open(nom_fitxer).readlines()[0])
    print sys_info

    for frame_info, stressos in frames(nom_fitxer, sys_info.phys_size):
        g.reset()
        g("set pm3d")
        g("set dgrid %d,%d" % (sys_info.NX, sys_info.NY))
        g("set hidden3d")
        g("set ticslevel 0")
        g("set title '%s'" % frame_info[:-1])
        stressos = [(x, y, syy) for i, x, y, sxx, sxy, syy in stressos]
        g.splot(Gnuplot.Data(stressos))
        wait()
Exemplo n.º 10
0
def energies(nom_fitxer, n):
    for frame_info, posicions in frames(nom_fitxer, n):
        enes = []
        for punt1 in (posicions):
            ei = 0.
            xi,yi = punt1
            for punt2 in (posicions):
                if punt1 is not punt2:
                    xj,yj = punt2
                    r2 = (xj - xi) * (xj - xi) + (yj - yi) * (yj - yi)
                    over_r2 = 1./r2
                    over_r6 = over_r2 * over_r2 * over_r2
                    over_r12 = over_r6 * over_r6
                    ei = ei + 4. * (over_r12 - over_r6)
            enes.append((xi, yi, ei))
        yield frame_info, enes[:]
Exemplo n.º 11
0
def main(directori, posicions="posicions"):
    nom_fitxer = os.path.join(directori, posicions)
    sys_info = SysInfo(open(nom_fitxer).readlines()[0])

    out = None

    printa_nonaffine_header(sys_info, out)

    for index, frame_posicions in enumerate(frames(nom_fitxer, 
                                            sys_info.phys_size)):
        frame_info, posicions = frame_posicions
        if index == 0:
            posicions_inicials = posicions
        else:
            nonaffine = nonaffine_positions(sys_info, frame_info, posicions,
                                            posicions_inicials)
            printa_nonaffine(frame_info, nonaffine, out)
Exemplo n.º 12
0
def orderInFile(posicionsf):
    sys_info = SysInfo(open(posicionsf, 'r').readline())
    for frame_info, particules in frames(posicionsf, sys_info.sys_size):
        tri = Triangulation(particules)
        order = 0.
        orderAbs = 0.
        norm = 1. / float(len(tri.neighbours))
        order2 = 0.
        for center, neigh in tri.neighbours.iteritems():
            if center in particules[:sys_info.phys_size]:
                neig = [n for n in neigh 
                    if n in particules[:sys_info.phys_size]]
                order_ = moduloSix(center, neigh)
                order = order + norm * order_
                orderAbs = orderAbs + norm * abs(order_)
                order2 = orderAbs + norm * order_ * order_
        yield frame_info, order, order2, orderAbs
Exemplo n.º 13
0
def mainG(directori):
    import Gnuplot
    posicions = os.path.join(directori, "posicions")
    sys_info = SysInfo(open(posicions, 'r').readline())
    g = Gnuplot.Gnuplot()
    for frame_info, particules in frames(posicions, sys_info.phys_size):
        g.reset()
        g("set pm3d map")
        g("set dgrid %d,%d" % (sys_info.NX, sys_info.NY))
        g("set hidden3d")
        g("set cbrange[0:2 * pi]")
        g("set title '%s'" % frame_info[:-1])
        tri = Triangulation(particules)
        ordres = [(c,moduloSix(c, neigh)) for c, neigh 
            in tri.neighbours.iteritems()]
        #moduls = [(c,abs(o)) for c,o in ordres]
        args = [c + (arg(o),) for c,o in ordres]
        g.splot(Gnuplot.Data(args))
Exemplo n.º 14
0
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
Exemplo n.º 15
0
def mainPelis(directori, fitxer=None):
    if fitxer is None:
        fitxer = nom_fitxer_posicions
    fitxer = os.path.join(directori, fitxer)

    g = Gnuplot.Gnuplot()
    sys_info = SysInfo(open(fitxer).readlines()[0])
    print sys_info

    g("set term postscript enhanced color")
    foto = 0
    for frame_info, posicions in frames(fitxer, sys_info.sys_size):
        title = "frame: %s t = %s" % tuple(frame_info.split())
        if foto % 5 == 0:
            g.reset()
            g("set output 'foto%04d.eps'" % foto)
            g("set title '%s'" % title)
            g("set xrange[-5:35]")
            g("set yrange[-20:60]")
            g.plot(Gnuplot.Data(posicions))
        foto = foto + 1
Exemplo n.º 16
0
def mainPygame(directori, fitxer=None):
    if fitxer is None: fitxer = nom_fitxer_posicions
    fitxer = os.path.join(directori, fitxer)
    sys_info = SysInfo(open(fitxer).readlines()[0])
    print sys_info

    import pygame
    dimensionsInPixels = (640, 480)
    dimensionsInPixels = (1024, 800)
    srf = pygame.display.set_mode(dimensionsInPixels)
    
    dimensionsInLengths = ((sys_info.NX + 2 + 2) * sys_info.delta_x,
                           (sys_info.NY + 2 * sys_info.ny_extra + 2 + 2) * 
                            sys_info.delta_y)
    def coord(x,y):
        pixx, pixy = dimensionsInPixels
        pixx, pixy = pixx - 10, pixy - 10
        lx, ly = dimensionsInLengths
        x0 = sys_info.delta_x * 2.1
        y0 = sys_info.ny_extra * sys_info.delta_y
        x = x + x0
        y = y + y0
        #print x,y
        #assert (x >= 0)
        #assert (y >= 0)
        pix = int(x * pixx / lx) + 10 #+ pixx/2
        piy = int(y * pixy / ly) + 10 #+ pixy/2
        #print pix, piy
        return pix, piy

    radius = int(0.25 * dimensionsInPixels[0] * sys_info.delta_x / dimensionsInLengths[0])
    #print "radius", radius

    for frame_info, posicions in frames(fitxer, sys_info.sys_size):
        srf.fill((255,255,255))
        for (x,y) in posicions:
            x,y = coord(x,y)
            pygame.draw.circle(srf, (55, 0, 200), (x,y), radius, 0)
        pygame.display.flip()
Exemplo n.º 17
0
 def __init__(self, filename):
     self.sys_info = SysInfo(open(filename, 'r').readline())
     self.frames = frames(filename, self.sys_info.sys_size)