Esempio n. 1
0
def advect_particles_rk2_ralsons(dt, particles, u, v, domain):
    """
    """
    particles2 = particles.copy()
    particles2[:,0] = particles[:,0] + (particles[:,3] * dt / 2.)
    particles2[:,1] = particles[:,1] + (particles[:,4] * dt / 2.)

    particles2 = interp_mesh_to_particles(particles2, u, v, domain)

    particles[:,0] = particles[:,0] + (1./3. * particles[:,3] + 2./3. * particles2[:,3]) * dt
    particles[:,1] = particles[:,1] + (1./3. * particles[:,4] + 2./3. * particles2[:,4]) * dt

    return particles
Esempio n. 2
0
def advect_particles_rk2_ralsons(dt, particles, u, v, domain):
    """
    """
    particles2 = particles.copy()
    particles2[:, 0] = particles[:, 0] + (particles[:, 3] * dt / 2.)
    particles2[:, 1] = particles[:, 1] + (particles[:, 4] * dt / 2.)

    particles2 = interp_mesh_to_particles(particles2, u, v, domain)

    particles[:, 0] = particles[:, 0] + (1. / 3. * particles[:, 3] +
                                         2. / 3. * particles2[:, 3]) * dt
    particles[:, 1] = particles[:, 1] + (1. / 3. * particles[:, 4] +
                                         2. / 3. * particles2[:, 4]) * dt

    return particles
Esempio n. 3
0
def advect_particles_rk2(dt, particles, u, v, domain):
    """
    Runge-Kutta 2nd order
    Make a copy of the particles, and advect them with x_t+1 = x_t + v*dt
    EXCEPT that we use dt/2, to go half the distance.
    Then find out the velocity at this new location, and use that to advect
    the particle.
    """
    particles2 = particles.copy()
    particles2[:, 0] = particles[:, 0] + (particles[:, 3] * dt / 2.)
    particles2[:, 1] = particles[:, 1] + (particles[:, 4] * dt / 2.)

    particles2 = interp_mesh_to_particles(particles2, u, v, domain)

    particles[:, 0] = particles[:, 0] + (particles2[:, 3] * dt)
    particles[:, 1] = particles[:, 1] + (particles2[:, 4] * dt)

    return particles
Esempio n. 4
0
def advect_particles_rk2(dt, particles, u, v, domain):
    """
    Runge-Kutta 2nd order
    Make a copy of the particles, and advect them with x_t+1 = x_t + v*dt
    EXCEPT that we use dt/2, to go half the distance.
    Then find out the velocity at this new location, and use that to advect
    the particle.
    """
    particles2 = particles.copy()
    particles2[:,0] = particles[:,0] + (particles[:,3] * dt / 2.)
    particles2[:,1] = particles[:,1] + (particles[:,4] * dt / 2.)

    particles2 = interp_mesh_to_particles(particles2, u, v, domain)

    particles[:,0] = particles[:,0] + (particles2[:,3] * dt)
    particles[:,1] = particles[:,1] + (particles2[:,4] * dt)

    return particles