meke_kh_closure Subroutine

private pure subroutine meke_kh_closure(nx, ny, khcoeff, barotr_fac2, meke, le, kh_diff)

Derived diffusivity kh = khcoeff*sqrt(2*max(0,gamma_t2*E))*Lmix. khcoeff<=0 ⇒ kh left at 0.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nx
integer, intent(in) :: ny
real(kind=wp), intent(in) :: khcoeff
real(kind=wp), intent(in) :: barotr_fac2(nx,ny)
real(kind=wp), intent(in) :: meke(nx,ny)
real(kind=wp), intent(in) :: le(nx,ny)
real(kind=wp), intent(out) :: kh_diff(nx,ny)

Calls

proc~~meke_kh_closure~~CallsGraph proc~meke_kh_closure meke_kh_closure local local proc~meke_kh_closure->local

Called by

proc~~meke_kh_closure~~CalledByGraph proc~meke_kh_closure meke_kh_closure proc~meke_step meke_step proc~meke_step->proc~meke_kh_closure proc~run_meke_step run_meke_step proc~run_meke_step->proc~meke_step proc~ocean_dyn_step_split ocean_dyn_step_split proc~ocean_dyn_step_split->proc~run_meke_step 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

Variables

Type Visibility Attributes Name Initial
integer, private :: i
integer, private :: j
real(kind=wp), private :: ueddy

Source Code

   pure subroutine meke_kh_closure(nx, ny, khcoeff, barotr_fac2, meke, le, kh_diff)
      !! Derived diffusivity `kh = khcoeff*sqrt(2*max(0,gamma_t2*E))*Lmix`.
      !! `khcoeff<=0` ⇒ kh left at 0.
      integer, intent(in) :: nx, ny
      real(wp), intent(in) :: khcoeff
      real(wp), intent(in) :: barotr_fac2(nx, ny)
      real(wp), intent(in) :: meke(nx, ny)
      real(wp), intent(in) :: le(nx, ny)
      real(wp), intent(out) :: kh_diff(nx, ny)
      integer :: i, j
      real(wp) :: ueddy

      do concurrent(j=1:ny, i=1:nx) local(ueddy)
         if (khcoeff > 0.0_wp) then
            ueddy = sqrt(2.0_wp*max(0.0_wp, barotr_fac2(i, j)*meke(i, j)))
            kh_diff(i, j) = khcoeff*ueddy*le(i, j)
         else
            kh_diff(i, j) = 0.0_wp
         end if
      end do
   end subroutine meke_kh_closure