rk2_average_field_3d Subroutine

private pure subroutine rk2_average_field_3d(saved, current, nx, ny, nz)

current <- 0.5 * (saved + current) on the device. Same bare-array shim rationale as copy_field_3d.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: saved(nx,ny,nz)
real(kind=wp), intent(inout) :: current(nx,ny,nz)
integer, intent(in) :: nx
integer, intent(in) :: ny
integer, intent(in) :: nz

Called by

proc~~rk2_average_field_3d~~CalledByGraph proc~rk2_average_field_3d rk2_average_field_3d proc~ocean_dyn_step ocean_dyn_step proc~ocean_dyn_step->proc~rk2_average_field_3d proc~ocean_dyn_step_split ocean_dyn_step_split proc~ocean_dyn_step_split->proc~rk2_average_field_3d proc~run_stage_split run_stage_split proc~ocean_dyn_step_split->proc~run_stage_split proc~run_continuity_chain run_continuity_chain proc~run_continuity_chain->proc~rk2_average_field_3d proc~engine_step engine_step proc~engine_step->proc~ocean_dyn_step proc~engine_step->proc~ocean_dyn_step_split proc~run_stage_split->proc~run_continuity_chain 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 proc~driver_run driver_run proc~driver_run->proc~driver_run_ocean

Variables

Type Visibility Attributes Name Initial
integer, private :: i
integer, private :: j
integer, private :: k

Source Code

   pure subroutine rk2_average_field_3d(saved, current, nx, ny, nz)
      !! current <- 0.5 * (saved + current) on the device.  Same
      !! bare-array shim rationale as copy_field_3d.
      integer, intent(in) :: nx, ny, nz
      real(wp), intent(in)    :: saved(nx, ny, nz)
      real(wp), intent(inout) :: current(nx, ny, nz)
      integer :: i, j, k
      do concurrent(k=1:nz, j=1:ny, i=1:nx)
         current(i, j, k) = 0.5_wp*(saved(i, j, k) + current(i, j, k))
      end do
   end subroutine rk2_average_field_3d