accumulate_flux_x Subroutine

private pure subroutine accumulate_flux_x(nx_face, ny, nz, dt, mass_flux_x, uhtr)

Accumulate one RK2 stage’s zonal mass flux into the windowed accumulator with the ½ RK2 weight baked in: uhtr += 0.5·mass_flux_x·dt. mass_flux_x is already area-weighted (m³/s = u·h_face·dy_cu); the product is m³.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nx_face
integer, intent(in) :: ny
integer, intent(in) :: nz
real(kind=wp), intent(in) :: dt
real(kind=wp), intent(in) :: mass_flux_x(nx_face,ny,nz)
real(kind=wp), intent(inout) :: uhtr(nx_face,ny,nz)

Called by

proc~~accumulate_flux_x~~CalledByGraph proc~accumulate_flux_x accumulate_flux_x proc~continuity_tracer_step_split continuity_tracer_step_split proc~continuity_tracer_step_split->proc~accumulate_flux_x proc~run_continuity_chain run_continuity_chain proc~run_continuity_chain->proc~continuity_tracer_step_split proc~run_stage run_stage proc~run_stage->proc~continuity_tracer_step_split proc~ocean_dyn_step ocean_dyn_step proc~ocean_dyn_step->proc~run_stage proc~run_stage_split run_stage_split proc~run_stage_split->proc~run_continuity_chain proc~engine_step engine_step proc~engine_step->proc~ocean_dyn_step proc~ocean_dyn_step_split ocean_dyn_step_split proc~engine_step->proc~ocean_dyn_step_split proc~ocean_dyn_step_split->proc~run_stage_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
integer, private :: k

Source Code

   pure subroutine accumulate_flux_x(nx_face, ny, nz, dt, mass_flux_x, uhtr)
      !! Accumulate one RK2 stage's zonal mass flux into the windowed
      !! accumulator with the ½ RK2 weight baked in:
      !! `uhtr += 0.5·mass_flux_x·dt`.  `mass_flux_x` is already
      !! area-weighted (m³/s = u·h_face·dy_cu); the product is m³.
      integer, intent(in) :: nx_face, ny, nz
      real(wp), intent(in) :: dt
      real(wp), intent(in) :: mass_flux_x(nx_face, ny, nz)
      real(wp), intent(inout) :: uhtr(nx_face, ny, nz)
      integer :: i, j, k
      do concurrent(k=1:nz, j=1:ny, i=1:nx_face)
         uhtr(i, j, k) = uhtr(i, j, k) + 0.5_wp*mass_flux_x(i, j, k)*dt
      end do
   end subroutine accumulate_flux_x