Example #1
0
    def plot_grid(self, ax):

        #Plot CFD and coupler Grid
        draw_grid(ax,
                  nx=self.CPL.get("ncx"),
                  ny=self.CPL.get("ncy"),
                  nz=self.CPL.get("ncz"),
                  px=self.CPL.get("npx_cfd"),
                  py=self.CPL.get("npy_cfd"),
                  pz=self.CPL.get("npz_cfd"),
                  xmin=self.CPL.get("x_orig_cfd"),
                  ymin=self.CPL.get("y_orig_cfd"),
                  zmin=self.CPL.get("z_orig_cfd"),
                  xmax=(self.CPL.get("icmax_olap") + 1) * self.dx,
                  ymax=self.CPL.get("yl_cfd"),
                  zmax=(self.CPL.get("kcmax_olap") + 1) * self.dz,
                  lc='r',
                  label='CFD')

        #Plot MD domain
        draw_grid(ax,
                  nx=1,
                  ny=1,
                  nz=1,
                  px=self.CPL.get("npx_md"),
                  py=self.CPL.get("npy_md"),
                  pz=self.CPL.get("npz_md"),
                  xmin=self.CPL.get("x_orig_md"),
                  ymin=-self.CPL.get("yl_md") + self.yoverlap,
                  zmin=self.CPL.get("z_orig_md"),
                  xmax=(self.CPL.get("icmax_olap") + 1) * self.dx,
                  ymax=self.yoverlap,
                  zmax=(self.CPL.get("kcmax_olap") + 1) * self.dz,
                  label='MD')
Example #2
0
    def plot(self, ax=None):
        if ax == None:
            ax=self.ax

        sm = ax.imshow(self.u.T,aspect='auto',origin='lower',
                       extent=[self.xmin,self.xmax,
                               self.ymin,self.ymax],
                       interpolation="none",vmin=-1.,vmax=1.,
                       alpha=0.5, cmap=plt.cm.RdYlBu_r)

#        sm = ax.pcolormesh(self.X,self.Y,self.u.T,vmin=-1.,vmax=1.,alpha=0.5,
#                          cmap=plt.cm.RdYlBu_r)
        draw_grid(ax, nx=self.x.size,ny=self.y.size, nz=1,
                      xmin=self.xmin,xmax=self.xmax,
                      ymin=self.ymin,ymax=self.ymax)

        #Plot velocity profile offset to the left
        axisloc = self.xmax+1.

        ax.arrow(axisloc, 0., self.ymin, self.ymax,  width=0.0015, color="k", 
                 clip_on=False, head_width=0.12, head_length=0.12)
        mid = .5*(self.ymin+self.ymax)
        ax.arrow(axisloc-1., mid, 2.0, 0., width=0.0015, color="k", 
                 clip_on=False, head_width=0.12, head_length=0.12)
        yp = np.linspace(self.ymin+.5*self.dy, self.ymax - 0.5*self.dy, self.y.size)
        ax.plot(np.mean(self.u,0)+axisloc,yp,'g-x')
        #ax.set_xlim((0.,2.))

        if self.first_time:
            plt.colorbar(sm)
            self.first_time=False

        plt.pause(0.001)
        ax.cla()
Example #3
0
    def plot(self, ax=None, showarrows=False):

        if ax == None:
            ax=self.ax

        for i in range(self.N):
            if (self.tag[i] == 0):
                ax.plot(self.r[i,0],self.r[i,1],'ko',alpha=0.5)
            else:
                ax.plot(self.r[i,0],self.r[i,1],'ro', ms=7.)

        #Overlay grid
        draw_grid(ax, nx=self.xbin, ny=self.ybin, nz=1,
                  xmin=-self.halfdomain[0], xmax=self.halfdomain[0],
                  ymin=-self.halfdomain[1], ymax=self.halfdomain[1])

        #Get velocity field
        u = self.get_velfield([self.xbin,self.ybin])

        #Plot velocity profile offset to the left
        axisloc = self.halfdomain[0]+1
        ax.arrow(axisloc,-self.halfdomain[1], 0.,self.domain[1],  
                 width=0.015, color="k", clip_on=False, head_width=0.12, head_length=0.12)
        ax.arrow(axisloc-1,0., 2.,0.,  width=0.015, 
                 color="k", clip_on=False, head_width=0.12, head_length=0.12)

        yp = np.linspace(-self.halfdomain[1]+.5*self.dy, self.halfdomain[1] - 0.5*self.dy, self.ybin)
        ax.plot(np.mean(u[0,:,:],1)+axisloc,yp,'g-x')

        sm = ax.imshow(u[0,:,:].T,aspect='auto',origin='lower',
                       extent=[-self.halfdomain[0], self.halfdomain[0],
                               -self.halfdomain[1], self.halfdomain[1]],
                       interpolation="none",vmin=-1.,vmax=1.,
                       alpha=0.5, cmap=plt.cm.RdYlBu_r)

#        sm = ax.pcolormesh(self.Xb,self.Yb,u[0,:,:].T,vmin=-1.,vmax=1.,alpha=0.5,
#                          cmap=plt.cm.RdYlBu_r)

#        cb=ax.imshow(u[0,:,:],interpolation="none",
#                     extent=[-self.halfdomain[0],self.halfdomain[0],
#                             -self.halfdomain[1],self.halfdomain[1]], 
#                    cmap=plt.cm.RdYlBu_r,vmin=-3.,vmax=3.)
        if self.first_time:
            plt.colorbar(sm)
            self.first_time=False

        if showarrows:
            #Show velocity of molecules
            Q = ax.quiver(self.r[:,0], self.r[:,1],
                          self.v[:,0], self.v[:,1], color='k')

        #Set limits and plot
        ax.set_xlim((-self.halfdomain[0], self.halfdomain[0]+2.))
        ax.set_ylim((-self.halfdomain[1], self.halfdomain[1]))
        plt.pause(0.001)
        plt.cla()

        print("Temperature =", np.sum(self.v[:,0]**2+self.v[:,1]**2)/(2.*self.N))
Example #4
0
def main():

    display_surface = timer('Initialisation', initialise_pygame)

    draw_grid(display_surface)

    ProgramVariables.game_state = GameState.RUNNING

    running_loop(display_surface)

    pygame.quit()
    sys.exit()
Example #5
0
    def plot(self, ax=None):
        if ax == None:
            ax = self.ax

        if type(ax) is list:
            ax = ax[0]

        sm = ax.imshow(self.u.T,
                       aspect='auto',
                       origin='lower',
                       extent=[self.xmin, self.xmax, self.ymin, self.ymax],
                       interpolation="none",
                       vmin=-1.,
                       vmax=1.,
                       alpha=0.5,
                       cmap=plt.cm.RdYlBu_r)

        #        sm = ax.pcolormesh(self.X,self.Y,self.u.T,vmin=-1.,vmax=1.,alpha=0.5,
        #                          cmap=plt.cm.RdYlBu_r)
        draw_grid(ax,
                  nx=self.x.size,
                  ny=self.y.size,
                  nz=1,
                  xmin=self.xmin,
                  xmax=self.xmax,
                  ymin=self.ymin,
                  ymax=self.ymax)

        #Plot velocity profile offset to the left
        axisloc = self.xmax + 1.

        ax.arrow(axisloc,
                 0.,
                 self.ymin,
                 self.ymax,
                 width=0.0015,
                 color="k",
                 clip_on=False,
                 head_width=0.12,
                 head_length=0.12)
        mid = .5 * (self.ymin + self.ymax)
        ax.arrow(axisloc - 1.,
                 mid,
                 2.0,
                 0.,
                 width=0.0015,
                 color="k",
                 clip_on=False,
                 head_width=0.12,
                 head_length=0.12)
        yp = np.linspace(self.ymin + .5 * self.dy, self.ymax - 0.5 * self.dy,
                         self.y.size)
        ax.plot(np.mean(self.u, 0) + axisloc, yp, 'g-x')
        #ax.set_xlim((0.,2.))

        if self.first_time:
            plt.colorbar(sm)
            self.first_time = False

        plt.pause(0.001)
        ax.cla()
koverlap = (CPL.get("kcmax_olap")-CPL.get("kcmin_olap")+1)
xoverlap = ioverlap*dx
yoverlap = joverlap*dy
zoverlap = koverlap*dz

print(CPL.get("xl_cfd"))

#Plot CFD and coupler Grid
draw_grid(ax, 
          nx=CPL.get("ncx"),
          ny=CPL.get("ncy"),
          nz=CPL.get("ncz"),
          px=CPL.get("npx_cfd"),
          py=CPL.get("npy_cfd"),
          pz=CPL.get("npz_cfd"),
          xmin=CPL.get("x_orig_cfd"),
          ymin=CPL.get("y_orig_cfd"),
          zmin=CPL.get("z_orig_cfd"),
          xmax=(CPL.get("icmax_olap")+1)*dx,
          ymax=CPL.get("yl_cfd"),
          zmax=(CPL.get("kcmax_olap")+1)*dz,
          lc = 'r',
          label='CFD')

#Plot MD domain
draw_grid(ax, nx=1, ny=1, nz=1,
          px=CPL.get("npx_md"),
          py=CPL.get("npy_md"),
          pz=CPL.get("npz_md"),
          xmin=CPL.get("x_orig_md"),
          ymin=-CPL.get("yl_md")+yoverlap,
Example #7
0
    def plot(self, ax=None, showarrows=False):

        if ax == None:
            ax = self.ax

        for i in range(self.N):
            if (self.tag[i] == 0):
                ax.plot(self.r[i, 0], self.r[i, 1], 'ko', alpha=0.5)
            else:
                ax.plot(self.r[i, 0], self.r[i, 1], 'ro', ms=7.)

        #Overlay grid
        draw_grid(ax,
                  nx=self.xbin,
                  ny=self.ybin,
                  nz=1,
                  xmin=-self.halfdomain[0],
                  xmax=self.halfdomain[0],
                  ymin=-self.halfdomain[1],
                  ymax=self.halfdomain[1])

        #Get velocity field
        u = self.get_velfield([self.xbin, self.ybin])

        #Plot velocity profile offset to the left
        axisloc = self.halfdomain[0] + 1
        ax.arrow(axisloc,
                 -self.halfdomain[1],
                 0.,
                 self.domain[1],
                 width=0.015,
                 color="k",
                 clip_on=False,
                 head_width=0.12,
                 head_length=0.12)
        ax.arrow(axisloc - 1,
                 0.,
                 2.,
                 0.,
                 width=0.015,
                 color="k",
                 clip_on=False,
                 head_width=0.12,
                 head_length=0.12)

        yp = np.linspace(-self.halfdomain[1] + .5 * self.dy,
                         self.halfdomain[1] - 0.5 * self.dy, self.ybin)
        ax.plot(np.mean(u[0, :, :], 1) + axisloc, yp, 'g-x')

        sm = ax.imshow(u[0, :, :].T,
                       aspect='auto',
                       origin='lower',
                       extent=[
                           -self.halfdomain[0], self.halfdomain[0],
                           -self.halfdomain[1], self.halfdomain[1]
                       ],
                       interpolation="none",
                       vmin=-1.,
                       vmax=1.,
                       alpha=0.5,
                       cmap=plt.cm.RdYlBu_r)

        #        sm = ax.pcolormesh(self.Xb,self.Yb,u[0,:,:].T,vmin=-1.,vmax=1.,alpha=0.5,
        #                          cmap=plt.cm.RdYlBu_r)

        #        cb=ax.imshow(u[0,:,:],interpolation="none",
        #                     extent=[-self.halfdomain[0],self.halfdomain[0],
        #                             -self.halfdomain[1],self.halfdomain[1]],
        #                    cmap=plt.cm.RdYlBu_r,vmin=-3.,vmax=3.)
        if self.first_time:
            plt.colorbar(sm)
            self.first_time = False

        if showarrows:
            #Show velocity of molecules
            Q = ax.quiver(self.r[:, 0],
                          self.r[:, 1],
                          self.v[:, 0],
                          self.v[:, 1],
                          color='k')

        #Set limits and plot
        ax.set_xlim((-self.halfdomain[0], self.halfdomain[0] + 2.))
        ax.set_ylim((-self.halfdomain[1], self.halfdomain[1]))
        plt.pause(0.001)
        plt.cla()

        print("Temperature =",
              np.sum(self.v[:, 0]**2 + self.v[:, 1]**2) / (2. * self.N))
Example #8
0
# === Plot both grids ===
#Get overlap region
comm = cfd_socket.topology._topo_comm
rank = comm.Get_rank()
COMM_size = comm.Get_size()
pcoords=comm.Get_coords(rank)
if rank == root:

    #Plot
    fig, ax = plt.subplots(1,1)
    draw_grid(ax, nx=ncx,
                  ny=ncy,
                  nz=ncz,
                  px=npx_cfd,
                  py=npy_cfd,
                  pz=npz_cfd,
                  xmin=0.,ymin=0.,zmin=0.,
                  xmax=xl_cfd,
                  ymax=yl_cfd,
                  zmax=zl_cfd,
                  lc = 'r',
                  label='CFD')

    draw_grid(ax, nx=1, ny=1, nz=1,
                  px=npx_md,
                  py=npy_md,
                  pz=npz_md,
                  xmin=-xl_md+xoverlap,
                  ymin=-yl_md+yoverlap,
                  zmin=-zl_md+zoverlap,
                  xmax=xoverlap,
                  ymax=yoverlap,
Example #9
0
    # recv data to plot
    olap_limits = CPL.get_olap_limits()
    portion = CPL.my_proc_portion(olap_limits)
    [ncxl, ncyl, nczl] = CPL.get_no_cells(portion)
    recv_array = np.zeros((1, ncxl, ncyl, nczl), order='F', dtype=np.float64)
    recv_array, ierr = CPL.recv(recv_array, olap_limits)

    #Plot CFD and coupler Grid
    draw_grid(ax,
              nx=CPL.get("ncx"),
              ny=CPL.get("ncy"),
              nz=CPL.get("ncz"),
              px=CPL.get("npx_cfd"),
              py=CPL.get("npy_cfd"),
              pz=CPL.get("npz_cfd"),
              xmin=CPL.get("x_orig_cfd"),
              ymin=CPL.get("y_orig_cfd"),
              zmin=CPL.get("z_orig_cfd"),
              xmax=(CPL.get("icmax_olap") + 1) * dx,
              ymax=CPL.get("yl_cfd"),
              zmax=(CPL.get("kcmax_olap") + 1) * dz,
              lc='r',
              label='CFD')

    #Plot MD domain
    draw_grid(ax,
              nx=1,
              ny=1,
              nz=1,
              px=CPL.get("npx_md"),
              py=CPL.get("npy_md"),
Example #10
0
def redraw_grid(display_surface):
    draw_grid(display_surface)
    for drawable_object in drawn_objects:
        drawable_object.draw_self(display_surface)
Example #11
0
    def update_grid(self, e):

        #Reset the figure ready for plot
        self.pyplotp.reset_fig()

        #CPL setup
        minnx = self.cntrp.CPLpanel.nx.GetValue()
        minny = self.cntrp.CPLpanel.ny.GetValue()
        minnz = self.cntrp.CPLpanel.nz.GetValue()
        maxnx = self.cntrp.CPLpanel.px.GetValue()
        maxny = self.cntrp.CPLpanel.py.GetValue()
        maxnz = self.cntrp.CPLpanel.pz.GetValue()

        print("CPL", minnx, minny, minnz, maxnx, maxny, maxnz)

        #MD
        px_MD = self.cntrp.MDpanel.px.GetValue()
        py_MD = self.cntrp.MDpanel.py.GetValue()
        pz_MD = self.cntrp.MDpanel.pz.GetValue()
        xmin_MD = self.cntrp.MDpanel.xmin.GetValue()
        ymin_MD = self.cntrp.MDpanel.ymin.GetValue()
        zmin_MD = self.cntrp.MDpanel.zmin.GetValue()
        xmax_MD = self.cntrp.MDpanel.xmax.GetValue()
        ymax_MD = self.cntrp.MDpanel.ymax.GetValue()
        zmax_MD = self.cntrp.MDpanel.zmax.GetValue()

        print("MD", 1, 1, 1, xmin_MD, ymin_MD, zmin_MD, xmax_MD, ymax_MD,
              zmax_MD)
        draw_grid(self.pyplotp.ax,
                  1,
                  1,
                  1,
                  px=px_MD,
                  py=py_MD,
                  pz=pz_MD,
                  xmin=xmin_MD,
                  ymin=ymin_MD,
                  zmin=zmin_MD,
                  xmax=xmax_MD,
                  ymax=ymax_MD,
                  zmax=zmax_MD,
                  fc='b',
                  lc='g',
                  label="MD",
                  XKCD_plots=self.XKCD_plots)

        #CFD
        nx_CFD = self.cntrp.CFDpanel.nx.GetValue()
        ny_CFD = self.cntrp.CFDpanel.ny.GetValue()
        nz_CFD = self.cntrp.CFDpanel.nz.GetValue()
        px_CFD = self.cntrp.CFDpanel.px.GetValue()
        py_CFD = self.cntrp.CFDpanel.py.GetValue()
        pz_CFD = self.cntrp.CFDpanel.pz.GetValue()
        xmin_CFD = self.cntrp.CFDpanel.xmin.GetValue()
        ymin_CFD = self.cntrp.CFDpanel.ymin.GetValue()
        zmin_CFD = self.cntrp.CFDpanel.zmin.GetValue()
        xmax_CFD = self.cntrp.CFDpanel.xmax.GetValue()
        ymax_CFD = self.cntrp.CFDpanel.ymax.GetValue()
        zmax_CFD = self.cntrp.CFDpanel.zmax.GetValue()
        dx = (xmax_CFD - xmin_CFD) / float(nx_CFD)
        dy = (ymax_CFD - ymin_CFD) / float(ny_CFD)
        dz = (zmax_CFD - zmin_CFD) / float(nz_CFD)

        ymin_CPL = ymax_MD - maxny * dy
        ymax_CPL = ymin_CPL + ny_CFD * dy

        print("CFD", nx_CFD, ny_CFD, nz_CFD, xmin_CFD, ymin_CFD, zmin_CFD,
              xmax_CFD, ymax_CFD, zmax_CFD, dx, dy, dz)
        draw_grid(self.pyplotp.ax,
                  nx_CFD,
                  ny_CFD,
                  nz_CFD,
                  px=px_CFD,
                  py=py_CFD,
                  pz=pz_CFD,
                  xmin=xmin_CFD,
                  ymin=ymin_CPL,
                  zmin=zmin_CFD,
                  xmax=xmax_CFD,
                  ymax=ymax_CPL,
                  zmax=zmax_CFD,
                  lc='r',
                  fc='k',
                  label="CFD",
                  XKCD_plots=self.XKCD_plots)

        pnl = self.cntrp.TextPanel
        pnl.text["dx"].SetLabel(latex2utf("\Delta x=") + str(np.round(dx, 5)))
        pnl.text["dy"].SetLabel(latex2utf("\Delta y=") + str(np.round(dy, 5)))
        pnl.text["dz"].SetLabel(latex2utf("\Delta z=") + str(np.round(dz, 5)))
        pnl.Layout()
        pnl.Update()
        #pnl.vbox.Layout()

        #Redraw
        self.pyplotp.redraw()
Example #12
0
    def update_grid(self, e):

        #Reset the figure ready for plot
        self.pyplotp.reset_fig()

        #CFD
        nx = self.cntrp.CFDpanel.nx.GetValue()
        ny = self.cntrp.CFDpanel.ny.GetValue()
        nz = self.cntrp.CFDpanel.nz.GetValue()
        px = self.cntrp.CFDpanel.px.GetValue()
        py = self.cntrp.CFDpanel.py.GetValue()
        pz = self.cntrp.CFDpanel.pz.GetValue()
        xmin = self.cntrp.CFDpanel.xmin.GetValue()
        ymin = self.cntrp.CFDpanel.ymin.GetValue()
        zmin = self.cntrp.CFDpanel.zmin.GetValue()
        xmax = self.cntrp.CFDpanel.xmax.GetValue()
        ymax = self.cntrp.CFDpanel.ymax.GetValue()
        zmax = self.cntrp.CFDpanel.zmax.GetValue()

        print("CFD", nx, ny, nz, xmin, ymin, zmin, xmax, ymax, zmax)
        draw_grid(self.pyplotp.ax,
                  nx,
                  ny,
                  nz,
                  px=px,
                  py=py,
                  pz=pz,
                  xmin=xmin,
                  ymin=ymin,
                  zmin=zmin,
                  xmax=xmax,
                  ymax=ymax,
                  zmax=zmax,
                  lc='r',
                  fc='k',
                  label="CFD",
                  XKCD_plots=self.XKCD_plots)

        #MD
        nx = self.cntrp.MDpanel.nx.GetValue()
        ny = self.cntrp.MDpanel.ny.GetValue()
        nz = self.cntrp.MDpanel.nz.GetValue()
        px = self.cntrp.MDpanel.px.GetValue()
        py = self.cntrp.MDpanel.py.GetValue()
        pz = self.cntrp.MDpanel.pz.GetValue()
        xmin = self.cntrp.MDpanel.xmin.GetValue()
        ymin = self.cntrp.MDpanel.ymin.GetValue()
        zmin = self.cntrp.MDpanel.zmin.GetValue()
        xmax = self.cntrp.MDpanel.xmax.GetValue()
        ymax = self.cntrp.MDpanel.ymax.GetValue()
        zmax = self.cntrp.MDpanel.zmax.GetValue()

        print("MD", nx, ny, nz, xmin, ymin, zmin, xmax, ymax, zmax)
        draw_grid(self.pyplotp.ax,
                  nx,
                  ny,
                  nz,
                  px=px,
                  py=py,
                  pz=pz,
                  xmin=xmin,
                  ymin=ymin,
                  zmin=zmin,
                  xmax=xmax,
                  ymax=ymax,
                  zmax=zmax,
                  fc='b',
                  lc='g',
                  label="MD",
                  XKCD_plots=self.XKCD_plots)

        self.pyplotp.redraw()
Example #13
0
comm = md_socket.topology._topo_comm
rank = comm.Get_rank()
COMM_size = comm.Get_size()
pcoords = comm.Get_coords(rank)
if rank == root:

    #Plot
    fig, ax = plt.subplots(1, 1)
    draw_grid(ax,
              nx=ncx,
              ny=ncy,
              nz=ncz,
              px=npx_cfd,
              py=npy_cfd,
              pz=npz_cfd,
              xmin=0.,
              ymin=0.,
              zmin=0.,
              xmax=xl_cfd,
              ymax=yl_cfd,
              zmax=zl_cfd,
              lc='r',
              label='CFD')

    draw_grid(ax,
              nx=1,
              ny=1,
              nz=1,
              px=npx_md,
              py=npy_md,
              pz=npz_md,