fill_pseudo_salt_diff Subroutine

public subroutine fill_pseudo_salt_diff(state_handle, buf)

Pseudo-salt deviation D = pseudo_salt - S (psu): a direct, measured proxy for how far the passive-tracer transport path has drifted from the active-tracer (salinity) path. Gated on BOTH indices being registered.

Arguments

Type IntentOptional Attributes Name
class(*), intent(in) :: state_handle
real(kind=wp), intent(inout) :: buf(:,:,:)

Calls

proc~~fill_pseudo_salt_diff~~CallsGraph proc~fill_pseudo_salt_diff fill_pseudo_salt_diff proc~fill_zero_impl fill_zero_impl proc~fill_pseudo_salt_diff->proc~fill_zero_impl proc~ocean_pseudo_salt_deviation ocean_pseudo_salt_deviation proc~fill_pseudo_salt_diff->proc~ocean_pseudo_salt_deviation tracers tracers proc~fill_pseudo_salt_diff->tracers rdb_vl_conc rdb_vl_conc proc~ocean_pseudo_salt_deviation->rdb_vl_conc rdb_vl_is_live rdb_vl_is_live proc~ocean_pseudo_salt_deviation->rdb_vl_is_live

Variables

Type Visibility Attributes Name Initial
integer, private :: it_ps
integer, private :: it_s

Source Code

   subroutine fill_pseudo_salt_diff(state_handle, buf)
      !! Pseudo-salt deviation D = pseudo_salt - S (psu): a direct,
      !! measured proxy for how far the passive-tracer transport path
      !! has drifted from the active-tracer (salinity) path.  Gated on
      !! BOTH indices being registered.
      class(*), intent(in) :: state_handle
      real(wp), intent(inout) :: buf(:, :, :)
      integer :: it_ps, it_s
      select type (state => state_handle)
      class is (ocean_state_t)
         it_ps = state%multilayer%idx_pseudo_salt
         it_s = state%multilayer%idx_salinity
         if (it_ps <= 0 .or. it_s <= 0) then
            call fill_zero_impl(buf)
            return
         end if
         call ocean_pseudo_salt_deviation(state%multilayer%h_layer, &
                                          state%multilayer%tracers(it_ps)%hTr, &
                                          state%multilayer%tracers(it_s)%hTr, buf, &
                                          size(buf, 1), size(buf, 2), size(buf, 3), &
                                          ieee_value(0.0_wp, ieee_quiet_nan))
      end select
   end subroutine fill_pseudo_salt_diff