예제 #1
0
    def create_solver(self):
        """Create Solver with min. time step from CFL and viscous step."""
        kernel = CubicSpline(dim=3)
        integrator = EPECIntegrator(fluid=WCSPHStep(),
                                    walls=WCSPHStep(),
                                    ellipsoid=RK2StepRigidBody())

        h = self.hdx * self.dx
        dt_cfl = 0.4 * h / (1.1 * self.co)
        dt_viscous = 0.125 * h**2 / self.nu
        dt = min(dt_viscous, dt_cfl)
        print("dt_cfl: %s" % dt_cfl)
        print("dt_viscous: %s" % dt_viscous)
        print("DT: %s" % dt)
        tf = 12
        solver = Solver(
            kernel=kernel,
            dim=3,
            integrator=integrator,
            dt=dt,
            tf=tf,
            adaptive_timestep=False,
        )

        return solver
예제 #2
0
    def create_solver(self):
        kernel = WendlandQuintic(dim=dim)

        integrator = EPECIntegrator(fluid=WCSPHStep(),
                                    obstacle=RK2StepRigidBody(),
                                    boundary=WCSPHStep())
        solver = Solver(kernel=kernel, dim=dim, integrator=integrator,
                        tf=tf, dt=dt, adaptive_timestep=True, n_damp=0)
        return solver
예제 #3
0
    def create_solver(self):
        kernel = CubicSpline(dim=2)
        integrator = EPECIntegrator(fluid=WCSPHStep(), wall=WCSPHStep())

        dt = 5e-4
        tf = 4.0
        solver = Solver(kernel=kernel,
                        dim=2,
                        integrator=integrator,
                        dt=dt,
                        tf=tf)

        return solver
예제 #4
0
    def create_solver(self):
        # Create the kernel
        #kernel = Gaussian(dim=3)
        kernel = CubicSpline(dim=3)
        #kernel = QuinticSpline(dim=3)

        integrator = PECIntegrator(tahini=WCSPHStep(), spoon=WCSPHStep())

        # Create a solver.
        solver = Solver(kernel=kernel, dim=3, integrator=integrator,
                        tf=tf, dt=dt,
                        adaptive_timestep=False
                        )
        return solver
예제 #5
0
    def create_solver(self):
        print(self.gamma_n)
        print(self.dt)
        kernel = CubicSpline(dim=dim)

        # integrator = EPECIntegrator(ball=RK2StepRigidBody())
        integrator = EPECIntegrator(wall=WCSPHStep(),
                                    temp_wall=WCSPHStep(),
                                    fluid=WCSPHStep(),
                                    ball=RK2StepRigidBody())

        solver = Solver(kernel=kernel,
                        dim=dim,
                        integrator=integrator,
                        dt=self.dt,
                        tf=tf,
                        adaptive_timestep=False)
        return solver
예제 #6
0
    def create_solver(self):
        kernel = CubicSpline(dim=2)

        integrator = EPECIntegrator(fluid=WCSPHStep(),
                                    tank=WCSPHStep(),
                                    cube=RK2StepRigidBody())

        dt = 0.125 * self.dx * self.hdx / (self.co * 1.1) / 2.
        print("DT: %s" % dt)
        tf = 0.5
        solver = Solver(kernel=kernel,
                        dim=2,
                        integrator=integrator,
                        dt=dt,
                        tf=tf,
                        adaptive_timestep=False)

        return solver
    def create_solver(self):
        kernel = CubicSpline(dim=2)

        integrator = EPECIntegrator(fluid=WCSPHStep(), cube=RK2StepRigidBody(),
                                    tank=WCSPHStep())

        dt = 1 * 1e-4
        print("DT: %s" % dt)
        tf = 1
        solver = Solver(
            kernel=kernel,
            dim=2,
            integrator=integrator,
            dt=dt,
            tf=tf,
            adaptive_timestep=False, )

        return solver
예제 #8
0
    def create_solver(self):
        kernel = CubicSpline(dim=3)

        if self.options.test:
            integrator = PECIntegrator(fluid=WCSPHStep(), boundary=WCSPHStep())
            adaptive, n_damp = False, 0
        else:
            integrator = EPECIntegrator(fluid=WCSPHStep(),
                                        boundary=WCSPHStep())
            adaptive, n_damp = True, 0

        solver = Solver(dim=dim,
                        kernel=kernel,
                        integrator=integrator,
                        adaptive_timestep=adaptive,
                        tf=tf,
                        dt=dt,
                        n_damp=n_damp)
        return solver
예제 #9
0
    def create_solver(self):
        # Create the kernel
        #kernel = Gaussian(dim=2)
        kernel = QuinticSpline(dim=2)

        integrator = PECIntegrator(fluid=WCSPHStep())

        # Create a solver.
        solver = Solver(kernel=kernel, dim=2, integrator=integrator,
                        tf=tf, dt=dt, output_at_times=output_at_times)
        return solver
예제 #10
0
    def create_solver(self):
        kernel = CubicSpline(dim=2)
        integrator = PECIntegrator(fluid=WCSPHStep())

        dt = 5e-6
        tf = 0.0076
        solver = Solver(kernel=kernel,
                        dim=2,
                        integrator=integrator,
                        dt=dt,
                        tf=tf)
        return solver
예제 #11
0
    def create_solver(self):
        kernel = WendlandQuintic(dim=2)

        integrator = EPECIntegrator(fluid=WCSPHStep(),
                                    block=RK2StepRigidBody())
        solver = Solver(kernel=kernel,
                        dim=2,
                        integrator=integrator,
                        tf=tf,
                        dt=dt,
                        adaptive_timestep=False)
        return solver
예제 #12
0
    def create_solver(self):
        kernel = CubicSpline(dim=2)

        integrator = EPECIntegrator(fluid=WCSPHStep())

        solver = Solver(kernel=kernel,
                        dim=2,
                        integrator=integrator,
                        dt=self.dt,
                        tf=self.tf,
                        pfreq=10)

        return solver
예제 #13
0
    def test_invalid_kwarg_raises_error(self):
        # Given
        x = np.linspace(0, 1, 10)
        pa = get_particle_array(name='fluid', x=x)
        equations = [SummationDensity(dest='fluid', sources=['fluid'])]
        kernel = QuinticSpline(dim=1)
        a_eval = AccelerationEval([pa], equations, kernel=kernel)
        a_helper = AccelerationEvalCythonHelper(a_eval)

        # When/Then
        integrator = PECIntegrator(f=WCSPHStep())
        self.assertRaises(RuntimeError, IntegratorCythonHelper, integrator,
                          a_helper)
    def create_solver(self):
        dim = 3
        kernel = CubicSpline(dim=dim)
        # kernel = WendlandQuintic(dim=dim)

        self.wdeltap = kernel.kernel(rij=dx, h=hdx * dx)

        integrator = EPECIntegrator(fluid=WCSPHStep())
        solver = Solver(kernel=kernel, dim=dim, integrator=integrator)

        dt = 1e-9
        tf = 8e-6
        solver.set_time_step(dt)
        solver.set_final_time(tf)
        solver.set_print_freq(100)
        return solver
예제 #15
0
    def create_solver(self):
        kernel = CubicSpline(dim=2)
        integrator = PECIntegrator(fluid=WCSPHStep(),
                                   inlet=InletOutletStep(),
                                   outlet=InletOutletStep())

        dt = 0.00005
        tf = 20.0

        solver = Solver(kernel=kernel,
                        dim=2,
                        integrator=integrator,
                        dt=dt,
                        tf=tf,
                        adaptive_timestep=False,
                        pfreq=20)
        return solver
예제 #16
0
    def create_solver(self):
        kernel = CubicSpline(dim=3)
        integrator = PECIntegrator(fluid=WCSPHStep(),
                                   boundary=OneStageRigidBodyStep())

        dt = 0.125 * self.h0 / c0
        self.scheme.configure(h0=self.h0, hdx=self.hdx)

        solver = Solver(kernel=kernel,
                        dim=3,
                        integrator=integrator,
                        tf=tf,
                        dt=dt,
                        adaptive_timestep=True,
                        fixed_h=False)

        return solver
    def create_solver(self):
        '''
        Define solver
        '''

        kernel = CubicSpline(dim=2) #Gaussian(dim=2) #QuinticSpline(dim=2) #WendlandQuintic(dim=2) )  
        
        if self.PST == False:
            integrator = PECIntegrator(fluid = WCSPHStep())
        elif self.PST == True:
            integrator = PECIntegrator(fluid = DPSPHStep())


        solver = Solver(
            kernel=kernel, dim=2, integrator=integrator, dt=self.dt, tf=self.tf, 
            pfreq=30
        )

        return solver
예제 #18
0
    def create_solver(self):
        print("Create our own solver.")
        kernel = Gaussian(dim=2)

        integrator = EPECIntegrator(fluid=WCSPHStep())

        dt = 5e-6
        tf = 0.0076
        solver = Solver(kernel=kernel,
                        dim=2,
                        integrator=integrator,
                        dt=dt,
                        tf=tf,
                        adaptive_timestep=True,
                        cfl=0.3,
                        n_damp=50,
                        output_at_times=[0.0008, 0.0038])

        return solver
                          co=co,
                          with_obstacle=False,
                          beta=2.0,
                          nfluid_offset=1,
                          hdx=hdx)

# Create the application.
app = Application()

# Create the kernel
kernel = WendlandQuintic(dim=2)

# Create the Integrator. Currently, PySPH supports multi-stage,
# predictor corrector and a TVD-RK3 integrators.

integrator = EPECIntegrator(fluid=WCSPHStep(), boundary=WCSPHStep())

# Create a solver.  The damping is performed for the first 50 iterations.
solver = Solver(kernel=kernel,
                dim=dim,
                integrator=integrator,
                dt=dt,
                tf=tf,
                adaptive_timestep=True,
                n_damp=50,
                fixed_h=False)

# create the equations
equations = [

    # Equation of state