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')
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()
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))
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()
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,
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))
# === 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,
# 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"),
def redraw_grid(display_surface): draw_grid(display_surface) for drawable_object in drawn_objects: drawable_object.draw_self(display_surface)
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()
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()
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,