bbl_column_conc_impl Subroutine

private pure subroutine bbl_column_conc_impl(nx, ny, nz, h, htr, conc)

Cell concentrations of one tracer through THE vanished-layer column rule (rdb_vl_column_conc): hTr/h on a live layer, the donor’s concentration on a filler, never a quotient by a near-zero or negative thickness.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nx
integer, intent(in) :: ny
integer, intent(in) :: nz
real(kind=wp), intent(in) :: h(nx,ny,nz)
real(kind=wp), intent(in) :: htr(nx,ny,nz)
real(kind=wp), intent(inout) :: conc(nx,ny,nz)

Calls

proc~~bbl_column_conc_impl~~CallsGraph proc~bbl_column_conc_impl bbl_column_conc_impl local local proc~bbl_column_conc_impl->local rdb_vl_column_conc rdb_vl_column_conc proc~bbl_column_conc_impl->rdb_vl_column_conc

Called by

proc~~bbl_column_conc_impl~~CalledByGraph proc~bbl_column_conc_impl bbl_column_conc_impl proc~vdiff_set_viscous_bbl vdiff_set_viscous_bbl proc~vdiff_set_viscous_bbl->proc~bbl_column_conc_impl proc~ocean_dyn_step ocean_dyn_step proc~ocean_dyn_step->proc~vdiff_set_viscous_bbl proc~ocean_dyn_step_split ocean_dyn_step_split proc~ocean_dyn_step_split->proc~vdiff_set_viscous_bbl proc~engine_step engine_step proc~engine_step->proc~ocean_dyn_step proc~engine_step->proc~ocean_dyn_step_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 proc~driver_run driver_run proc~driver_run->proc~driver_run_ocean

Variables

Type Visibility Attributes Name Initial
real(kind=wp), private :: cc(NZ_STACK_MAX)
real(kind=wp), private :: hc(NZ_STACK_MAX)
integer, private :: i
integer, private :: j
integer, private :: k
real(kind=wp), private :: qc(NZ_STACK_MAX)

Source Code

   pure subroutine bbl_column_conc_impl(nx, ny, nz, h, htr, conc)
      !! Cell concentrations of one tracer through THE vanished-layer column
      !! rule (`rdb_vl_column_conc`): `hTr/h` on a live layer, the donor's
      !! concentration on a filler, never a quotient by a near-zero or
      !! negative thickness.
      integer, intent(in) :: nx, ny, nz
      real(wp), intent(in) :: h(nx, ny, nz)
      real(wp), intent(in) :: htr(nx, ny, nz)
      real(wp), intent(inout) :: conc(nx, ny, nz)
      integer :: i, j, k
      real(wp) :: hc(NZ_STACK_MAX), qc(NZ_STACK_MAX), cc(NZ_STACK_MAX)

      do concurrent(j=1:ny, i=1:nx) local(hc, qc, cc, k)
         do k = 1, nz
            hc(k) = h(i, j, k)
            qc(k) = htr(i, j, k)
         end do
         call rdb_vl_column_conc(nz, hc, qc, cc)
         do k = 1, nz
            conc(i, j, k) = cc(k)
         end do
      end do
   end subroutine bbl_column_conc_impl