ocean_ideal_age_reset_step Subroutine

public pure subroutine ocean_ideal_age_reset_step(hTr_age, h_layer, young_eff, nx, ny, nz)

Surface Dirichlet BC, k = nz only: hTr_age(i,j,nz) = young_eff * h_layer(i,j,nz) young_eff is A_young(t) (s), a host scalar from ocean_ideal_age_young_val — this writes a CONCENTRATION times thickness, not a raw concentration (today’s hard-coded young_eff = 0 reset never exercised the h_layer factor). Writes the full 1:nx, 1:ny extent including ghosts/land, same as the historical kernel; land h_layer -> H_VANISHED makes the product negligible and no kernel reads land age.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(inout) :: hTr_age(nx,ny,nz)
real(kind=wp), intent(in) :: h_layer(nx,ny,nz)
real(kind=wp), intent(in) :: young_eff
integer, intent(in) :: nx
integer, intent(in) :: ny
integer, intent(in) :: nz

Called by

proc~~ocean_ideal_age_reset_step~~CalledByGraph proc~ocean_ideal_age_reset_step ocean_ideal_age_reset_step proc~ocean_ideal_age_reset_surface ocean_ideal_age_reset_surface proc~ocean_ideal_age_reset_surface->proc~ocean_ideal_age_reset_step proc~ocean_dyn_step ocean_dyn_step proc~ocean_dyn_step->proc~ocean_ideal_age_reset_surface proc~ocean_dyn_step_split ocean_dyn_step_split proc~ocean_dyn_step_split->proc~ocean_ideal_age_reset_surface 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
integer, private :: i
integer, private :: j

Source Code

   pure subroutine ocean_ideal_age_reset_step(hTr_age, h_layer, young_eff, nx, ny, nz)
      !! Surface Dirichlet BC, `k = nz` only:
      !!   `hTr_age(i,j,nz) = young_eff * h_layer(i,j,nz)`
      !! `young_eff` is `A_young(t)` (s), a host scalar from
      !! `ocean_ideal_age_young_val` — this writes a CONCENTRATION
      !! times thickness, not a raw concentration (today's hard-coded
      !! `young_eff = 0` reset never exercised the `h_layer` factor).
      !! Writes the full `1:nx, 1:ny` extent including ghosts/land, same
      !! as the historical kernel; land `h_layer -> H_VANISHED` makes
      !! the product negligible and no kernel reads land age.
      integer, intent(in) :: nx, ny, nz
      real(wp), intent(inout) :: hTr_age(nx, ny, nz)
      real(wp), intent(in) :: h_layer(nx, ny, nz)
      real(wp), intent(in) :: young_eff

      integer :: i, j

      do concurrent(j=1:ny, i=1:nx)
         hTr_age(i, j, nz) = young_eff*h_layer(i, j, nz)
      end do
   end subroutine ocean_ideal_age_reset_step