evp_sh_dd_dt_impl Subroutine

private pure subroutine evp_sh_dd_dt_impl(dy_dxT, dx_dyT, iareaT, idyCu, idxCv, dyCu, dxCv, ui, vi, sh_dd, sh_dt, nx, ny)

sh_Dt / sh_Dd at cells (:1053-1061).

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: dy_dxT(nx,ny)
real(kind=wp), intent(in) :: dx_dyT(nx,ny)
real(kind=wp), intent(in) :: iareaT(nx,ny)
real(kind=wp), intent(in) :: idyCu(nx+1,ny)
real(kind=wp), intent(in) :: idxCv(nx,ny+1)
real(kind=wp), intent(in) :: dyCu(nx+1,ny)
real(kind=wp), intent(in) :: dxCv(nx,ny+1)
real(kind=wp), intent(in) :: ui(nx+1,ny)
real(kind=wp), intent(in) :: vi(nx,ny+1)
real(kind=wp), intent(out) :: sh_dd(nx,ny)
real(kind=wp), intent(out) :: sh_dt(nx,ny)
integer, intent(in) :: nx
integer, intent(in) :: ny

Called by

proc~~evp_sh_dd_dt_impl~~CalledByGraph proc~evp_sh_dd_dt_impl evp_sh_dd_dt_impl proc~ice_evp_dynamics_impl ice_evp_dynamics_impl proc~ice_evp_dynamics_impl->proc~evp_sh_dd_dt_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_sh_dd_dt_impl(dy_dxT, dx_dyT, iareaT, idyCu, idxCv, dyCu, dxCv, &
                                     ui, vi, sh_dd, sh_dt, nx, ny)
      !! sh_Dt / sh_Dd at cells (:1053-1061).
      integer, intent(in) :: nx, ny
      real(wp), intent(in) :: dy_dxT(nx, ny), dx_dyT(nx, ny), iareaT(nx, ny)
      real(wp), intent(in) :: idyCu(nx + 1, ny), idxCv(nx, ny + 1)
      real(wp), intent(in) :: dyCu(nx + 1, ny), dxCv(nx, ny + 1)
      real(wp), intent(in) :: ui(nx + 1, ny), vi(nx, ny + 1)
      real(wp), intent(out) :: sh_dd(nx, ny), sh_dt(nx, ny)
      integer :: i, j

      do concurrent(j=1:ny, i=1:nx)
         sh_dt(i, j) = dy_dxT(i, j)*(idyCu(i + 1, j)*ui(i + 1, j) - idyCu(i, j)*ui(i, j)) - &
                       dx_dyT(i, j)*(idxCv(i, j + 1)*vi(i, j + 1) - idxCv(i, j)*vi(i, j))
         sh_dd(i, j) = iareaT(i, j)*((dyCu(i + 1, j)*ui(i + 1, j) - dyCu(i, j)*ui(i, j)) + &
                                     (dxCv(i, j + 1)*vi(i, j + 1) - dxCv(i, j)*vi(i, j)))
      end do
   end subroutine evp_sh_dd_dt_impl