diff --git a/amr-wind/ocean_waves/relaxation_zones/linear_waves_ops.H b/amr-wind/ocean_waves/relaxation_zones/linear_waves_ops.H index f780192e7a..9c87f7ff8f 100644 --- a/amr-wind/ocean_waves/relaxation_zones/linear_waves_ops.H +++ b/amr-wind/ocean_waves/relaxation_zones/linear_waves_ops.H @@ -73,7 +73,9 @@ struct InitDataOp phi(i, j, k) = eta - zc; - if (phi(i, j, k) + 0.5 * dx[2] >= 0) { + const amrex::Real cell_length_2D = + std::sqrt(std::pow(dx[0], 2) + std::pow(dx[2], 2)); + if (phi(i, j, k) + cell_length_2D >= 0) { vel(i, j, k, 0) = omega * wave_height / 2.0 * std::cosh( @@ -95,7 +97,9 @@ struct InitDataOp gbx3, [=] AMREX_GPU_DEVICE(int i, int j, int k) noexcept { const amrex::Real z = problo[2] + (k + 0.5) * dx[2]; phi(i, j, k) = zsl - z; - if (phi(i, j, k) + 0.5 * dx[2] >= 0) { + const amrex::Real cell_length_2D = + std::sqrt(std::pow(dx[0], 2) + std::pow(dx[2], 2)); + if (phi(i, j, k) + cell_length_2D >= 0) { vel(i, j, k, 0) = 0.0; vel(i, j, k, 1) = 0.0; vel(i, j, k, 2) = 0.0; @@ -157,7 +161,9 @@ struct UpdateRelaxZonesOp phi(i, j, k) = eta - zc; - if (phi(i, j, k) + 0.5 * dx[2] >= 0) { + const amrex::Real cell_length_2D = + std::sqrt(std::pow(dx[0], 2) + std::pow(dx[2], 2)); + if (phi(i, j, k) + cell_length_2D >= 0) { vel(i, j, k, 0) = omega * wave_height / 2.0 * std::cosh( diff --git a/amr-wind/ocean_waves/relaxation_zones/stokes_waves_ops.H b/amr-wind/ocean_waves/relaxation_zones/stokes_waves_ops.H index 7d8f4a3a86..8a2b68ad25 100644 --- a/amr-wind/ocean_waves/relaxation_zones/stokes_waves_ops.H +++ b/amr-wind/ocean_waves/relaxation_zones/stokes_waves_ops.H @@ -109,7 +109,9 @@ struct InitDataOp zero_sea_level, g, x, z, 0.0, eta, u_w, v_w, w_w); phi(i, j, k) = eta - z; - if (phi(i, j, k) + 0.5 * dx[2] >= 0) { + const amrex::Real cell_length_2D = + std::sqrt(std::pow(dx[0], 2) + std::pow(dx[2], 2)); + if (phi(i, j, k) + cell_length_2D >= 0) { vel(i, j, k, 0) = u_w; vel(i, j, k, 1) = v_w; vel(i, j, k, 2) = w_w; @@ -121,7 +123,9 @@ struct InitDataOp gbx3, [=] AMREX_GPU_DEVICE(int i, int j, int k) noexcept { const amrex::Real z = problo[2] + (k + 0.5) * dx[2]; phi(i, j, k) = zero_sea_level - z; - if (phi(i, j, k) + 0.5 * dx[2] >= 0) { + const amrex::Real cell_length_2D = + std::sqrt(std::pow(dx[0], 2) + std::pow(dx[2], 2)); + if (phi(i, j, k) + cell_length_2D >= 0) { vel(i, j, k, 0) = 0.0; vel(i, j, k, 1) = 0.0; vel(i, j, k, 2) = 0.0; @@ -178,7 +182,10 @@ struct UpdateRelaxZonesOp zero_sea_level, g, x, z, time, eta, u_w, v_w, w_w); phi(i, j, k) = eta - z; - if (phi(i, j, k) + 0.5 * dx[2] >= 0) { + const amrex::Real cell_length_2D = + std::sqrt(std::pow(dx[0], 2) + std::pow(dx[2], 2)); + if (phi(i, j, k) + cell_length_2D >= 0) { + // Wave velocity within a cell of interface vel(i, j, k, 0) = u_w; vel(i, j, k, 1) = v_w; vel(i, j, k, 2) = w_w; diff --git a/amr-wind/ocean_waves/relaxation_zones/waves2amr_ops.H b/amr-wind/ocean_waves/relaxation_zones/waves2amr_ops.H index 95ae72ed58..d8e86390d6 100644 --- a/amr-wind/ocean_waves/relaxation_zones/waves2amr_ops.H +++ b/amr-wind/ocean_waves/relaxation_zones/waves2amr_ops.H @@ -90,7 +90,9 @@ void postprocess_velocity_mfab_liquid( amrex::ParallelFor( gbx, [=] AMREX_GPU_DEVICE(int i, int j, int k) noexcept { // Set velocity to zero if no liquid present - if (phi(i, j, k) + 0.5 * dx[2] < 0.0) { + const amrex::Real cell_length_2D = + std::sqrt(std::pow(dx[0], 2) + std::pow(dx[2], 2)); + if (phi(i, j, k) + cell_length_2D >= 0) { vel(i, j, k, 0) = 0.0; vel(i, j, k, 1) = 0.0; vel(i, j, k, 2) = 0.0;