vmix_assemble_clip_profile_impl Subroutine

private pure subroutine vmix_assemble_clip_profile_impl(nx, ny, nzp1, kv, kt, ks, kd_bg, prandtl, kv_max, kd_max)

C7 floor + ceiling: same as vmix_assemble_clip_impl but the tracer floor is the per-interface Bryan-Lewis kd_bg field and the momentum floor is prandtl·kd_bg (MOM6 background Prandtl tie). Interior interfaces k = 2..nzp1-1.

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) :: kd_bg(nx,ny,nzp1)
real(kind=wp), intent(in) :: prandtl
real(kind=wp), intent(in) :: kv_max
real(kind=wp), intent(in) :: kd_max

Called by

proc~~vmix_assemble_clip_profile_impl~~CalledByGraph proc~vmix_assemble_clip_profile_impl vmix_assemble_clip_profile_impl proc~vmix_assemble vmix_assemble proc~vmix_assemble->proc~vmix_assemble_clip_profile_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_profile_impl(nx, ny, nzp1, kv, kt, ks, &
                                                   kd_bg, prandtl, kv_max, kd_max)
      !! C7 floor + ceiling: same as `vmix_assemble_clip_impl` but the
      !! tracer floor is the per-interface Bryan-Lewis `kd_bg` field and the
      !! momentum floor is `prandtl·kd_bg` (MOM6 background Prandtl tie).
      !! Interior interfaces k = 2..nzp1-1.
      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) :: kd_bg(nx, ny, nzp1)
      real(wp), intent(in) :: prandtl, 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), prandtl*kd_bg(i, j, k)), kv_max)
         kt(i, j, k) = min(max(kt(i, j, k), kd_bg(i, j, k)), kd_max)
         ks(i, j, k) = min(max(ks(i, j, k), kd_bg(i, j, k)), kd_max)
      end do
   end subroutine vmix_assemble_clip_profile_impl