varmix_dfdx_vface Function

private pure function varmix_dfdx_vface(f_centre, nx, ny, i, j, idx) result(dfdx)

Cross-face df/dx at a v-face (j interior): average of the centred x-derivatives in the south (j-1) and north (j) rows.

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) :: idx

Return Value real(kind=wp)


Called by

proc~~varmix_dfdx_vface~~CalledByGraph proc~varmix_dfdx_vface varmix_dfdx_vface proc~ocean_varmix_build_static ocean_varmix_t%ocean_varmix_build_static proc~ocean_varmix_build_static->proc~varmix_dfdx_vface 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 :: dn
real(kind=wp), private :: ds
integer, private :: im
integer, private :: ip

Source Code

   pure function varmix_dfdx_vface(f_centre, nx, ny, i, j, idx) result(dfdx)
      !! Cross-face df/dx at a v-face (j interior): average of the centred
      !! x-derivatives in the south (j-1) and north (j) rows.
      integer, intent(in) :: nx, ny, i, j
      real(wp), intent(in) :: f_centre(nx, ny)
      real(wp), intent(in) :: idx
      real(wp) :: dfdx, ds, dn
      integer :: im, ip
      im = max(i - 1, 1)
      ip = min(i + 1, nx)
      if (ip == im) then
         dfdx = 0.0_wp
         return
      end if
      ds = (f_centre(ip, j - 1) - f_centre(im, j - 1))/real(ip - im, wp)*idx
      dn = (f_centre(ip, j) - f_centre(im, j))/real(ip - im, wp)*idx
      dfdx = 0.5_wp*(ds + dn)
   end function varmix_dfdx_vface