ice_mass_update_y_impl Subroutine

private pure subroutine ice_mass_update_y_impl(iareaT, vh, mca, dt_adv, nghost, ny_phys, ncat, nx, ny)

Meridional twin of ice_mass_update_x_impl.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: iareaT(nx,ny)
real(kind=wp), intent(in) :: vh(nx,ny+1,ncat)
real(kind=wp), intent(inout) :: mca(nx,ny,ncat)
real(kind=wp), intent(in) :: dt_adv
integer, intent(in) :: nghost
integer, intent(in) :: ny_phys
integer, intent(in) :: ncat
integer, intent(in) :: nx
integer, intent(in) :: ny

Called by

proc~~ice_mass_update_y_impl~~CalledByGraph proc~ice_mass_update_y_impl ice_mass_update_y_impl proc~ice_pass_y ice_pass_y proc~ice_pass_y->proc~ice_mass_update_y_impl proc~ice_transport_step ice_transport_step proc~ice_transport_step->proc~ice_pass_y proc~engine_step_ice engine_step_ice proc~engine_step_ice->proc~ice_transport_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 proc~driver_run driver_run proc~driver_run->proc~driver_run_ocean

Variables

Type Visibility Attributes Name Initial
integer, private :: c
integer, private :: i
integer, private :: j
integer, private :: j_hi
integer, private :: j_lo

Source Code

   pure subroutine ice_mass_update_y_impl(iareaT, vh, mca, dt_adv, nghost, ny_phys, ncat, nx, ny)
      !! Meridional twin of `ice_mass_update_x_impl`.
      integer, intent(in) :: nghost, ny_phys, ncat, nx, ny
      real(wp), intent(in) :: iareaT(nx, ny)
      real(wp), intent(in) :: vh(nx, ny + 1, ncat)
      real(wp), intent(inout) :: mca(nx, ny, ncat)
      real(wp), intent(in) :: dt_adv
      integer :: i, j, c, j_lo, j_hi

      j_lo = nghost + 1
      j_hi = nghost + ny_phys

      do concurrent(j=j_lo:j_hi, i=1:nx, c=1:ncat)
         mca(i, j, c) = mca(i, j, c) - dt_adv*iareaT(i, j)*(vh(i, j + 1, c) - vh(i, j, c))
      end do
   end subroutine ice_mass_update_y_impl