pb.set(idx=numpy.arange(len(pb.x))) print 'Number of particles: ', len(pb.x) return [pa, pb] else: return pa cfl = 0.1 # use the solvers default cubic spline kernel # s = StressSolver(dim=2, integrator_type=solver.RK2Integrator) s = StressSolver(dim=2, integrator_type=solver.PredictorCorrectorIntegrator, xsph=0.5, marts_eps=0.3, marts_n=4, CFL=cfl) # can be overriden by commandline arguments dt = 1e-8 tf = 1e-2 s.set_time_step(dt) s.set_final_time(tf) s.set_kernel_correction(-1) s.pfreq = 100 app.setup(s, create_particles=create_particles) particles = s.particles pa = particles.arrays[0] app.run()
self.values = values SPHFunction.__init__(self, source, dest, setup_arrays) def set_src_dst_reads(self): self.src_reads = self.dst_reads = self.props def eval(self, solver): for i,prop in enumerate(self.props): self.dest.get(prop)[self.indices] = self.values[i] # use the solvers default cubic spline kernel s = StressSolver(dim=1, integrator_type=solver.PredictorCorrectorIntegrator, xsph=0.5, marts_eps=0.3, marts_n=4, CFL=None) # can be overriden by commandline arguments s.set_time_step(1e-7) s.set_final_time(1e-3) app.setup(s, create_particles=create_particles) particles = s.particles pa = particles.arrays[0] s.pre_step_functions.append(FixedBoundary(pa, pa, props=['u','x'], values=[0,0], particle_indices=numpy.flatnonzero(pa.bdry))) for i in range(len(particles.arrays[0].x)): app.command_manager.add_function(PrintPos(i, ['x','y','u','p','rho','sigma00','ubar'], s.output_directory+'/stress%s.dat'%i).function, interval=1) s.set_kernel_correction(-1) s.pfreq = 10