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
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
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
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