ice_gather_flux_x_layer_impl Subroutine

private pure subroutine ice_gather_flux_x_layer_impl(uh, val4, layer, tr_flux_x_work, ncat, nk, nx, ny)

Layer-indexed twin of ice_gather_flux_x_impl for enth_ice/sal_ice/enth_snow (shape (nx,ny,ncat,nk)).

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: uh(nx+1,ny,ncat)
real(kind=wp), intent(in) :: val4(nx,ny,ncat,nk)
integer, intent(in) :: layer
real(kind=wp), intent(out) :: tr_flux_x_work(nx+1,ny,ncat)
integer, intent(in) :: ncat
integer, intent(in) :: nk
integer, intent(in) :: nx
integer, intent(in) :: ny

Called by

proc~~ice_gather_flux_x_layer_impl~~CalledByGraph proc~ice_gather_flux_x_layer_impl ice_gather_flux_x_layer_impl proc~ice_pass_x ice_pass_x proc~ice_pass_x->proc~ice_gather_flux_x_layer_impl proc~ice_transport_step ice_transport_step proc~ice_transport_step->proc~ice_pass_x 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

Source Code

   pure subroutine ice_gather_flux_x_layer_impl(uh, val4, layer, tr_flux_x_work, ncat, nk, nx, ny)
      !! Layer-indexed twin of `ice_gather_flux_x_impl` for
      !! `enth_ice`/`sal_ice`/`enth_snow` (shape `(nx,ny,ncat,nk)`).
      integer, intent(in) :: layer, ncat, nk, nx, ny
      real(wp), intent(in) :: uh(nx + 1, ny, ncat)
      real(wp), intent(in) :: val4(nx, ny, ncat, nk)
      real(wp), intent(out) :: tr_flux_x_work(nx + 1, ny, ncat)
      integer :: i, j, c

      do concurrent(j=1:ny, i=1:nx + 1, c=1:ncat)
         if (i == 1) then
            tr_flux_x_work(i, j, c) = val4(1, j, c, layer)
         else if (i == nx + 1) then
            tr_flux_x_work(i, j, c) = val4(nx, j, c, layer)
         else if (uh(i, j, c) >= 0.0_wp) then
            tr_flux_x_work(i, j, c) = val4(i - 1, j, c, layer)
         else
            tr_flux_x_work(i, j, c) = val4(i, j, c, layer)
         end if
      end do
   end subroutine ice_gather_flux_x_layer_impl