build_ts_concentration Subroutine

private pure subroutine build_ts_concentration(nx, ny, nz, h_old, hTr_T, hTr_S, conc_t, conc_s)

Build layer-mean T/S concentrations (c = hTr/h) from extensive tracer content + pre-remap thicknesses, for the VCOORD_RHO density inversion. Per-layer rdb_vl_conc (a filler reads hTr/h, its donor’s concentration by I1′; a zero-thickness layer reads 0). Flat-impl, explicit-shape; one cadence-bounded launch per remap.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nx
integer, intent(in) :: ny
integer, intent(in) :: nz
real(kind=wp), intent(in) :: h_old(nx,ny,nz)
real(kind=wp), intent(in) :: hTr_T(nx,ny,nz)
real(kind=wp), intent(in) :: hTr_S(nx,ny,nz)
real(kind=wp), intent(out) :: conc_t(nx,ny,nz)
real(kind=wp), intent(out) :: conc_s(nx,ny,nz)

Calls

proc~~build_ts_concentration~~CallsGraph proc~build_ts_concentration build_ts_concentration rdb_vl_conc rdb_vl_conc proc~build_ts_concentration->rdb_vl_conc

Called by

proc~~build_ts_concentration~~CalledByGraph proc~build_ts_concentration build_ts_concentration proc~ocean_apply_ale_remap_centres ocean_apply_ale_remap_centres proc~ocean_apply_ale_remap_centres->proc~build_ts_concentration proc~ocean_apply_ale_remap_step ocean_apply_ale_remap_step proc~ocean_apply_ale_remap_step->proc~build_ts_concentration proc~ocean_dyn_step_split ocean_dyn_step_split proc~ocean_dyn_step_split->proc~ocean_apply_ale_remap_step proc~engine_step engine_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
integer, private :: i
integer, private :: j
integer, private :: k

Source Code

   pure subroutine build_ts_concentration(nx, ny, nz, h_old, hTr_T, hTr_S, conc_t, conc_s)
      !! Build layer-mean T/S concentrations (c = hTr/h) from extensive tracer
      !! content + pre-remap thicknesses, for the VCOORD_RHO density inversion.
      !! Per-layer `rdb_vl_conc` (a filler reads `hTr/h`, its donor's
      !! concentration by I1′; a zero-thickness layer reads 0). Flat-impl,
      !! explicit-shape; one cadence-bounded launch per remap.
      integer, intent(in) :: nx, ny, nz
      real(wp), intent(in) :: h_old(nx, ny, nz)
      real(wp), intent(in) :: hTr_T(nx, ny, nz)
      real(wp), intent(in) :: hTr_S(nx, ny, nz)
      real(wp), intent(out) :: conc_t(nx, ny, nz)
      real(wp), intent(out) :: conc_s(nx, ny, nz)
      integer :: i, j, k
      do concurrent(k=1:nz, j=1:ny, i=1:nx)
         conc_t(i, j, k) = rdb_vl_conc(hTr_T(i, j, k), h_old(i, j, k))
         conc_s(i, j, k) = rdb_vl_conc(hTr_S(i, j, k), h_old(i, j, k))
      end do
   end subroutine build_ts_concentration