pure subroutine evp_pres_mice_impl(dxT, dyT, ci, p0_rho, c0, del_sh_min_scale, &
tdamp_eff, dt, pres_mice, del_sh_min_pr, nx, ny)
!! `pres_mice = p0_rho*exp(-c0*max(1-ci,0))` (:878); `dxharm =
!! 2*dxT*dyT/(dxT+dyT)`; `del_sh_min_pr = 2*del_sh_min_scale*dt^2 /
!! (Tdamp*dxharm^2)` guarded on `dxharm > 0` (:880-890).
integer, intent(in) :: nx, ny
real(wp), intent(in) :: dxT(nx, ny), dyT(nx, ny), ci(nx, ny)
real(wp), intent(in) :: p0_rho, c0, del_sh_min_scale, tdamp_eff, dt
real(wp), intent(out) :: pres_mice(nx, ny), del_sh_min_pr(nx, ny)
integer :: i, j
real(wp) :: dxharm
do concurrent(j=1:ny, i=1:nx) local(dxharm)
pres_mice(i, j) = p0_rho*exp(-c0*max(1.0_wp - ci(i, j), 0.0_wp))
dxharm = 2.0_wp*dxT(i, j)*dyT(i, j)/(dxT(i, j) + dyT(i, j))
if (dxharm > 0.0_wp) then
del_sh_min_pr(i, j) = (2.0_wp*del_sh_min_scale*dt**2)/(tdamp_eff*dxharm**2)
else
del_sh_min_pr(i, j) = 0.0_wp
end if
end do
end subroutine evp_pres_mice_impl