drain_fill_conc Subroutine

private pure subroutine drain_fill_conc(nx, ny, nz, hTr, hprev, tr)

Concentration field Tr = hTr / max(hprev, DRAIN_MIN_H) for the WENO drain (the CW path builds the same field as the first loop of drain_parabola_*; factored out so the WENO path can reuse it without the parabola coefficients).

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nx
integer, intent(in) :: ny
integer, intent(in) :: nz
real(kind=wp), intent(in) :: hTr(nx,ny,nz)
real(kind=wp), intent(in) :: hprev(nx,ny,nz)
real(kind=wp), intent(inout) :: tr(nx,ny,nz)

Called by

proc~~drain_fill_conc~~CalledByGraph proc~drain_fill_conc drain_fill_conc proc~continuity_tracer_drain continuity_tracer_drain proc~continuity_tracer_drain->proc~drain_fill_conc proc~ocean_dyn_flush_tracer_window ocean_dyn_flush_tracer_window proc~ocean_dyn_flush_tracer_window->proc~continuity_tracer_drain proc~ocean_dyn_step ocean_dyn_step proc~ocean_dyn_step->proc~continuity_tracer_drain proc~ocean_dyn_step_split ocean_dyn_step_split proc~ocean_dyn_step_split->proc~continuity_tracer_drain proc~driver_run_ocean driver_run_ocean proc~driver_run_ocean->proc~ocean_dyn_flush_tracer_window proc~engine_step engine_step proc~driver_run_ocean->proc~engine_step proc~engine_step->proc~ocean_dyn_step proc~engine_step->proc~ocean_dyn_step_split proc~rdb_ocean_set_tracer rdb_ocean_set_tracer proc~rdb_ocean_set_tracer->proc~ocean_dyn_flush_tracer_window proc~driver_run driver_run proc~driver_run->proc~driver_run_ocean 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 drain_fill_conc(nx, ny, nz, hTr, hprev, tr)
      !! Concentration field Tr = hTr / max(hprev, DRAIN_MIN_H) for the WENO
      !! drain (the CW path builds the same field as the first loop of
      !! drain_parabola_*; factored out so the WENO path can reuse it
      !! without the parabola coefficients).
      integer, intent(in) :: nx, ny, nz
      real(wp), intent(in) :: hTr(nx, ny, nz), hprev(nx, ny, nz)
      real(wp), intent(inout) :: tr(nx, ny, nz)
      integer :: i, j, k
      do concurrent(k=1:nz, j=1:ny, i=1:nx)
         tr(i, j, k) = hTr(i, j, k)/max(hprev(i, j, k), DRAIN_MIN_H)
      end do
   end subroutine drain_fill_conc