ocean_diag_set_output_zstar_levels Subroutine

private subroutine ocean_diag_set_output_zstar_levels(this, zstar, ierr)

Configure the SSH-tracking (ZSTAR) output grid — reference interface depths (m, positive-down, monotone shallow->deep; deepest = H_ref). Stored copy; must be called BEFORE any register with output_vgrid == DIAG_VGRID_ZSTAR so the manager knows the buffer shape.

Type Bound

ocean_diag_t

Arguments

Type IntentOptional Attributes Name
class(ocean_diag_t), intent(inout) :: this
real(kind=wp), intent(in) :: zstar(:)
integer, intent(out), optional :: ierr

Calls

proc~~ocean_diag_set_output_zstar_levels~~CallsGraph proc~ocean_diag_set_output_zstar_levels ocean_diag_t%ocean_diag_set_output_zstar_levels proc~fail fail proc~ocean_diag_set_output_zstar_levels->proc~fail error error proc~fail->error proc~error_ring_push error_ring_push proc~fail->proc~error_ring_push

Called by

proc~~ocean_diag_set_output_zstar_levels~~CalledByGraph proc~ocean_diag_set_output_zstar_levels ocean_diag_t%ocean_diag_set_output_zstar_levels proc~engine_configure_diag engine_configure_diag proc~engine_configure_diag->proc~ocean_diag_set_output_zstar_levels proc~engine_setup engine_setup proc~engine_setup->proc~engine_configure_diag proc~complete_ocean_create complete_ocean_create proc~complete_ocean_create->proc~engine_setup proc~driver_run_ocean driver_run_ocean proc~driver_run_ocean->proc~engine_setup proc~driver_validate driver_validate proc~driver_validate->proc~engine_setup proc~driver_run driver_run proc~driver_run->proc~driver_run_ocean proc~rdb_ocean_create_finalize rdb_ocean_create_finalize proc~rdb_ocean_create_finalize->proc~complete_ocean_create proc~rdb_ocean_create_from_string rdb_ocean_create_from_string proc~rdb_ocean_create_from_string->proc~complete_ocean_create

Source Code

   subroutine ocean_diag_set_output_zstar_levels(this, zstar, ierr)
      !! Configure the SSH-tracking (ZSTAR) output grid — reference interface
      !! depths (m, positive-down, monotone shallow->deep; deepest = H_ref).
      !! Stored copy; must be called BEFORE any `register` with
      !! `output_vgrid == DIAG_VGRID_ZSTAR` so the manager knows the buffer
      !! shape.
      class(ocean_diag_t), intent(inout) :: this
      real(wp), intent(in) :: zstar(:)
      integer, intent(out), optional :: ierr
      if (present(ierr)) ierr = OCEAN_STATUS_OK
      if (.not. this%is_init) return
      if (size(zstar) > NZ_STACK_MAX) then
         call fail("set_output_zstar_levels: number of z* levels "// &
                   "exceeds NZ_STACK_MAX; raise NZ_STACK_MAX or use fewer levels", &
                   ierr, OCEAN_STATUS_ERR_SETUP)
         return
      end if
      if (allocated(this%zstar_out)) deallocate (this%zstar_out)
      this%n_zstar_out = size(zstar)
      allocate (this%zstar_out(this%n_zstar_out), source=zstar)
   end subroutine ocean_diag_set_output_zstar_levels