enforce_vanished_one_impl Subroutine

private pure subroutine enforce_vanished_one_impl(nx, ny, nz, h_layer, hTr)

Flat-impl of the I1′ sweep for ONE tracer. Explicit-shape dummies so NVHPC does not walk a descriptor per launch.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nx
integer, intent(in) :: ny
integer, intent(in) :: nz
real(kind=wp), intent(in) :: h_layer(nx,ny,nz)
real(kind=wp), intent(inout) :: hTr(nx,ny,nz)

Calls

proc~~enforce_vanished_one_impl~~CallsGraph proc~enforce_vanished_one_impl enforce_vanished_one_impl local local proc~enforce_vanished_one_impl->local rdb_vl_merge_content rdb_vl_merge_content proc~enforce_vanished_one_impl->rdb_vl_merge_content

Called by

proc~~enforce_vanished_one_impl~~CalledByGraph proc~enforce_vanished_one_impl enforce_vanished_one_impl proc~multilayer_enforce_vanished_content multilayer_state_t%multilayer_enforce_vanished_content proc~multilayer_enforce_vanished_content->proc~enforce_vanished_one_impl proc~ocean_dyn_step_split ocean_dyn_step_split proc~ocean_dyn_step_split->proc~multilayer_enforce_vanished_content proc~engine_step engine_step proc~engine_step->proc~ocean_dyn_step_split proc~driver_run_ocean driver_run_ocean proc~driver_run_ocean->proc~engine_step proc~rdb_ocean_step rdb_ocean_step proc~rdb_ocean_step->proc~engine_step proc~driver_run driver_run proc~driver_run->proc~driver_run_ocean

Variables

Type Visibility Attributes Name Initial
real(kind=wp), private :: h_col(NZ_STACK_MAX)
integer, private :: i
integer, private :: j
integer, private :: k
real(kind=wp), private :: q_col(NZ_STACK_MAX)

Source Code

   pure subroutine enforce_vanished_one_impl(nx, ny, nz, h_layer, hTr)
      !! Flat-impl of the I1′ sweep for ONE tracer.  Explicit-shape dummies so
      !! NVHPC does not walk a descriptor per launch.
      integer, intent(in) :: nx, ny, nz
      real(wp), intent(in) :: h_layer(nx, ny, nz)
      real(wp), intent(inout) :: hTr(nx, ny, nz)
      integer :: i, j, k
      real(wp) :: h_col(NZ_STACK_MAX), q_col(NZ_STACK_MAX)

      do concurrent(j=1:ny, i=1:nx) local(k, h_col, q_col)
         do k = 1, nz
            h_col(k) = h_layer(i, j, k)
            q_col(k) = hTr(i, j, k)
         end do
         call rdb_vl_merge_content(nz, h_col, q_col)
         do k = 1, nz
            hTr(i, j, k) = q_col(k)
         end do
      end do
   end subroutine enforce_vanished_one_impl