evp_stress_relax_impl Subroutine

private pure subroutine evp_stress_relax_impl(zeta, sh_dd, sh_dt, pres_mice, mice, i_1pdt_t, dt_2tdamp, i_ec2, str_d, str_t, nx, ny)

str_d/str_t semi-implicit relax (:1124-1134), non-weak_low_shear branch only.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: zeta(nx,ny)
real(kind=wp), intent(in) :: sh_dd(nx,ny)
real(kind=wp), intent(in) :: sh_dt(nx,ny)
real(kind=wp), intent(in) :: pres_mice(nx,ny)
real(kind=wp), intent(in) :: mice(nx,ny)
real(kind=wp), intent(in) :: i_1pdt_t
real(kind=wp), intent(in) :: dt_2tdamp
real(kind=wp), intent(in) :: i_ec2
real(kind=wp), intent(inout) :: str_d(nx,ny)
real(kind=wp), intent(inout) :: str_t(nx,ny)
integer, intent(in) :: nx
integer, intent(in) :: ny

Called by

proc~~evp_stress_relax_impl~~CalledByGraph proc~evp_stress_relax_impl evp_stress_relax_impl proc~ice_evp_dynamics_impl ice_evp_dynamics_impl proc~ice_evp_dynamics_impl->proc~evp_stress_relax_impl proc~ice_evp_dynamics ice_evp_dynamics proc~ice_evp_dynamics->proc~ice_evp_dynamics_impl proc~ice_evp_step ice_evp_step proc~ice_evp_step->proc~ice_evp_dynamics proc~engine_step_ice engine_step_ice proc~engine_step_ice->proc~ice_evp_step proc~driver_run_ocean driver_run_ocean proc~driver_run_ocean->proc~engine_step_ice proc~rdb_ocean_step rdb_ocean_step proc~rdb_ocean_step->proc~engine_step_ice

Variables

Type Visibility Attributes Name Initial
integer, private :: i
integer, private :: j

Source Code

   pure subroutine evp_stress_relax_impl(zeta, sh_dd, sh_dt, pres_mice, mice, &
                                         i_1pdt_t, dt_2tdamp, i_ec2, str_d, str_t, nx, ny)
      !! str_d/str_t semi-implicit relax (:1124-1134), non-weak_low_shear
      !! branch only.
      integer, intent(in) :: nx, ny
      real(wp), intent(in) :: zeta(nx, ny), sh_dd(nx, ny), sh_dt(nx, ny)
      real(wp), intent(in) :: pres_mice(nx, ny), mice(nx, ny)
      real(wp), intent(in) :: i_1pdt_t, dt_2tdamp, i_ec2
      real(wp), intent(inout) :: str_d(nx, ny), str_t(nx, ny)
      integer :: i, j

      do concurrent(j=1:ny, i=1:nx)
         str_d(i, j) = i_1pdt_t*(str_d(i, j) + dt_2tdamp* &
                                 (zeta(i, j)*sh_dd(i, j) - 0.5_wp*pres_mice(i, j)*mice(i, j)))
         str_t(i, j) = i_1pdt_t*(str_t(i, j) + (i_ec2*dt_2tdamp)*(zeta(i, j)*sh_dt(i, j)))
      end do
   end subroutine evp_stress_relax_impl