I am trying to simulate a particle-laden, isotropic turbulent flow using Dedalus 3. The one-way coupled simulations have given me good results till now. Now I trying to incorporate two-way coupling, by considering the drag forces from the particles as body force in the fluid momentum equation. But the issue I am facing is that, when this additional body force term is added into the momentum equation, I am getting an abrupt flow like behavior towards the negative x-direction, which destroys the isotropy in the flow and affects the dissipation rate, which causes the other turbulent parameters to get modified. I will share the lines of code relevant to this. Kindly let me know, what changes are required to tackle this persistent issue.
particle_force_field = dist.VectorField(coords, name='particle_force', bases=(xbasis, ybasis, zbasis))
def compute_force_field_delta(....):
# Fine and coarse grid dimensions
dx_d, dy_d, dz_d = Lx / Nx_d, Ly / Ny_d, Lz / Nz_d
V_cell_d = dx_d * dy_d * dz_d
# Reset fine-grid deposition field (high-res drag force array)
particle_force_field_deposit.fill(0)
# Particle loop: deposit drag force directly into fine grid
for i, (x, y, z) in enumerate(particle_positions):
fluid_velocity_x = U_x[i] #same in y and z direction
particle_velocity_x = particle_velocities[i, 0] # same in y and z direction
drag_force_x = (1 / V_cell_d) * (3 * np.pi * rho_f * nu * d_p) * (fluid_velocity_x - particle_velocity_x) * body_force_switch # same in y and z direction
# Map particles to fine-grid cell indices using robust symmetric rounding
xg = x / dx_d #
same in y and z direction
ix = int(np.floor(xg + 0.5)) % Nx_d #
same in y and z direction
# Deposit drag force into fine grid using
np.add.at np.add.at(particle_force_field_deposit[0], (ix, iy, iz), drag_force_x) #
same in y and z direction
particle_force_field['g'][:] = particle_force_field_deposit