varmix_dfdy_uface Function

private pure function varmix_dfdy_uface(f_centre, nx, ny, i, j, idy) result(dfdy)

Cross-face df/dy at a u-face (i interior): average of the two centred y-derivatives in the west (i-1) and east (i) columns, clamped at the j edges (one-sided / zero there).

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: f_centre(nx,ny)
integer, intent(in) :: nx
integer, intent(in) :: ny
integer, intent(in) :: i
integer, intent(in) :: j
real(kind=wp), intent(in) :: idy

Return Value real(kind=wp)


Called by

proc~~varmix_dfdy_uface~~CalledByGraph proc~varmix_dfdy_uface varmix_dfdy_uface proc~ocean_varmix_build_static ocean_varmix_t%ocean_varmix_build_static proc~ocean_varmix_build_static->proc~varmix_dfdy_uface proc~configure_ocean_varmix configure_ocean_varmix proc~configure_ocean_varmix->proc~ocean_varmix_build_static proc~configure_ocean_lateral configure_ocean_lateral proc~configure_ocean_lateral->proc~configure_ocean_varmix proc~engine_setup engine_setup proc~engine_setup->proc~configure_ocean_lateral proc~complete_ocean_create complete_ocean_create proc~complete_ocean_create->proc~engine_setup proc~driver_run_ocean driver_run_ocean proc~driver_run_ocean->proc~engine_setup proc~driver_validate driver_validate proc~driver_validate->proc~engine_setup

Variables

Type Visibility Attributes Name Initial
real(kind=wp), private :: de
real(kind=wp), private :: dw
integer, private :: jm
integer, private :: jp

Source Code

   pure function varmix_dfdy_uface(f_centre, nx, ny, i, j, idy) result(dfdy)
      !! Cross-face df/dy at a u-face (i interior): average of the two
      !! centred y-derivatives in the west (i-1) and east (i) columns,
      !! clamped at the j edges (one-sided / zero there).
      integer, intent(in) :: nx, ny, i, j
      real(wp), intent(in) :: f_centre(nx, ny)
      real(wp), intent(in) :: idy
      real(wp) :: dfdy, dw, de
      integer :: jm, jp
      jm = max(j - 1, 1)
      jp = min(j + 1, ny)
      if (jp == jm) then
         dfdy = 0.0_wp
         return
      end if
      dw = (f_centre(i - 1, jp) - f_centre(i - 1, jm))/real(jp - jm, wp)*idy
      de = (f_centre(i, jp) - f_centre(i, jm))/real(jp - jm, wp)*idy
      dfdy = 0.5_wp*(dw + de)
   end function varmix_dfdy_uface