vmix_assemble_clip_impl Subroutine

private pure subroutine vmix_assemble_clip_impl(nx, ny, nzp1, kv, kt, ks, kv_bg, kt_bg, ks_bg, kv_max, kd_max)

Floor + ceiling on interior interfaces k = 2..nzp1-1. Explicit- shape args so the do concurrent stays descriptor-walk free.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nx
integer, intent(in) :: ny
integer, intent(in) :: nzp1
real(kind=wp), intent(inout) :: kv(nx,ny,nzp1)
real(kind=wp), intent(inout) :: kt(nx,ny,nzp1)
real(kind=wp), intent(inout) :: ks(nx,ny,nzp1)
real(kind=wp), intent(in) :: kv_bg
real(kind=wp), intent(in) :: kt_bg
real(kind=wp), intent(in) :: ks_bg
real(kind=wp), intent(in) :: kv_max
real(kind=wp), intent(in) :: kd_max

Called by

proc~~vmix_assemble_clip_impl~~CalledByGraph proc~vmix_assemble_clip_impl vmix_assemble_clip_impl proc~vmix_assemble vmix_assemble proc~vmix_assemble->proc~vmix_assemble_clip_impl proc~vmix_apply_in_stage vmix_apply_in_stage proc~vmix_apply_in_stage->proc~vmix_assemble proc~run_stage run_stage proc~run_stage->proc~vmix_apply_in_stage proc~run_stage_split run_stage_split proc~run_stage_split->proc~vmix_apply_in_stage proc~ocean_dyn_step ocean_dyn_step proc~ocean_dyn_step->proc~run_stage proc~ocean_dyn_step_split ocean_dyn_step_split proc~ocean_dyn_step_split->proc~run_stage_split proc~engine_step engine_step proc~engine_step->proc~ocean_dyn_step proc~engine_step->proc~ocean_dyn_step_split

Variables

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

Source Code

   pure subroutine vmix_assemble_clip_impl(nx, ny, nzp1, kv, kt, ks, &
                                           kv_bg, kt_bg, ks_bg, kv_max, kd_max)
      !! Floor + ceiling on interior interfaces k = 2..nzp1-1.  Explicit-
      !! shape args so the do concurrent stays descriptor-walk free.
      integer, intent(in) :: nx, ny, nzp1
      real(wp), intent(inout) :: kv(nx, ny, nzp1)
      real(wp), intent(inout) :: kt(nx, ny, nzp1)
      real(wp), intent(inout) :: ks(nx, ny, nzp1)
      real(wp), intent(in) :: kv_bg, kt_bg, ks_bg, kv_max, kd_max

      integer :: i, j, k

      do concurrent(k=2:nzp1 - 1, j=1:ny, i=1:nx)
         kv(i, j, k) = min(max(kv(i, j, k), kv_bg), kv_max)
         kt(i, j, k) = min(max(kt(i, j, k), kt_bg), kd_max)
         ks(i, j, k) = min(max(ks(i, j, k), ks_bg), kd_max)
      end do
   end subroutine vmix_assemble_clip_impl