def picd(a): # creats vtu data with cell situation at time step x_list = [0] y_list = [0] z_list = [0] r_list = [0] F_x = [0] F_y = [0] F_z = [0] vtk_writer = vtktools.VTK_XML_Serial_Unstructured() for elem in c_ary: if c_ary[elem].name == 'maybe': x_list.append(c_ary[elem].xcor) y_list.append(c_ary[elem].ycor) z_list.append(c_ary[elem].zcor) r_list.append(c_ary[elem].radius) F_x.append(fx[elem]) F_y.append(fy[elem]) F_z.append(fz[elem]) vtk_writer.snapshot("cell_arrangements_maybe" + str(a) + ".vtu", x_list, y_list, z_list, radii=r_list, x_force=F_x, y_force=F_y, z_force=F_z) vtk_writer.writePVD("cell_arrangements_maybe" + str(a) + ".pvd")
def run(self): """ Use Verlet integral method to do the simulation, return the trajectory in the form of traj[time_slice, particle_index, dim] """ if self.inter_range is not None: cells_shape = (self.box // self.inter_range).astype(int) for k in range(len(cells_shape)): if cells_shape[k] == 0: cells_shape[k] = 1 cell_size = self.box / cells_shape else: cells_shape = None cell_size = None vtk_writer = vtktools.VTK_XML_Serial_Unstructured() if not self.initialized: # create random points inthe box self.traj[0] = np.random.rand(self.par_num, self.dim) * self.box self.v0 = np.zeros((self.par_num, self.dim), dtype=float) self.traj[1] = np.mod(self.traj[0] + self.v0, self.box) next = 2 while next < self.traj.shape[0]: # calculate force if self.inter_range is not None: self.linked_cell = Linked_cell(self.traj[next - 1], self.box, self.inter_range) force = self.cal_force(self.traj[next - 1], self.linked_cell, cells_shape, cell_size) # verlet step self.traj[next] = 2 * self.traj[next - 1] - self.traj[ next - 2] + self.dt**2 * force # periodic boundary self.traj[next] = np.mod( self.traj[next], self.box) #??????????????????? mod could be a problem #vktools r_x = self.traj[next][:, 0] r_y = self.traj[next][:, 1] r_z = self.traj[next][:, 2] F_x = force[:, 0] F_y = force[:, 1] F_z = force[:, 2] vtk_writer.snapshot("simu/MD_" + str(self.dt) + ".vtu", r_x, r_y, r_z, x_force=F_x, y_force=F_y, z_force=F_z) next += 1 # vtk_writer.writePVD("MD.pvd") return self.traj
def vtk_generator(simType, resultdir, resfile_i, dempath, nx, ny, dxy): #simname = dm.getsimname_2(resultdir, simType) vtk_writer = vtktools.VTK_XML_Serial_Unstructured() simpath = resultdir + resfile_i #simpath = 'model_geo.txt' xyz_columndata_all = pd.read_csv(simpath, error_bad_lines=False) xyz_columndata_all = xyz_columndata_all.values xyz_columndata = dm.xyz_extract_z_column( xyz_columndata_all, 0, 1, 4, 5) # extract relevant column (x,y,z,h) x = xyz_columndata[:, 0] y = xyz_columndata[:, 1] z = xyz_columndata[:, 2] h = xyz_columndata[:, 3] xyz_columndata_2 = dm.xyz_extract_z_column( xyz_columndata_all, 8, 9, 11, 12) # extract relevant column (ux,uy,qx,qy) ux = xyz_columndata_2[:, 0] * 1000 / (dxy * dxy) # m3/s -> l/s uy = xyz_columndata_2[:, 1] * 1000 / (dxy * dxy) # m3/s -> l/s qx = xyz_columndata_2[:, 0] # m3/s qy = xyz_columndata_2[:, 1] # m3/s conc_sw = xyz_columndata_2[:, 2] conc_soil = xyz_columndata_2[:, 3] xyz_columndata_4 = dm.xyz_extract_z_column( xyz_columndata_all, 15, 0, 0, 0) # extract relevant column (ux,uy,qx,qy) timeconnect_h = xyz_columndata_4[:, 0] outputnam = resultdir + "vtk/" + resfile_i[0:len(resfile_i) - 4] #vtk_writer.snapshot(outputnam + ".vtu", x, y, z, h, ux, uy, qx, qy, conc_sw, conc_soil) vtk_writer.snapshot(outputnam + ".vtu", x, y, z, h, ux, uy, qy, qx, conc_sw, conc_soil, timeconnect_h) #vtk_writer.snapshot(outputnam + ".vtu", x, y, h, ux, uy, qy, qx, conc_soil) vtk_writer.writePVD(outputnam + ".pvd")
import vtktools vtk_writer = vtktools.VTK_XML_Serial_Unstructured() ''' Only plot cells ''' x = [-2.0, 0.0, 1.5] y = [2.0, -2.5, 3.0] z = [0.0, 0.0, 0.0] R = [2.0, 2.5, 3.0] ''' Plot cells and forces ''' F_x = [10.0, 10.0, 20.0] F_y = [15.0, -5.0, 0.0] F_z = [0.0, 0.0, 0.0] vtk_writer.snapshot("cell_arrangements.vtu", x, y, z, radii=R, x_force=F_x, y_force=F_y, z_force=F_z) vtk_writer.writePVD("cell_arrangements.pvd") #vtk_writer.snapshot("cell_arrangements.vtu", x, y, z, radii = R) #vtk_writer.writePVD("cell_arrangements.pvd")