pure subroutine apply_nudge_zonal_west(u_layer, nx_total, ny_total, nz, &
i_w, j0, j1, tau_in, tau_out, dt, u_data)
!! Post-anomaly nudging for the west edge.
!! "Incoming" at west = u_wall > 0 (eastward, into domain) ⟹ tau_in.
integer, intent(in) :: nx_total, ny_total, nz, i_w, j0, j1
real(wp), intent(inout) :: u_layer(nx_total + 1, ny_total, nz)
real(wp), intent(in) :: tau_in, tau_out, dt, u_data
integer :: j, k
real(wp) :: tau, g2, u_b
do concurrent(j=j0:j1, k=1:nz) local(tau, g2, u_b)
if (u_layer(i_w, j, k) > 0.0_wp) then
tau = tau_in
else
tau = tau_out
end if
if (tau > 0.0_wp) then
g2 = dt/(tau + dt)
u_b = (1.0_wp - g2)*u_layer(i_w, j, k) + g2*u_data
u_layer(i_w, j, k) = u_b
end if
end do
end subroutine apply_nudge_zonal_west