eos_validate Subroutine

public subroutine eos_validate(eos, ierr)

Uses

  • proc~~eos_validate~~UsesGraph proc~eos_validate eos_validate module~rdb_error_ring rdb_error_ring proc~eos_validate->module~rdb_error_ring module~rdb_ocean_status rdb_ocean_status proc~eos_validate->module~rdb_ocean_status pic_logger pic_logger module~rdb_error_ring->pic_logger

Host-side fail-loud gate over the device-supported variant set. Device point routines (!$acc routine seq) cannot error stop, so membership in the device-callable set is guaranteed HERE at configure time; the device else branch is then unreachable-by-contract.

Arguments

Type IntentOptional Attributes Name
type(eos_t), intent(in) :: eos
integer, intent(out), optional :: ierr

OCEAN_STATUS_ERR_SETUP on an unsupported/unknown EOS variant when present; absent behaves as today (error stop).


Calls

proc~~eos_validate~~CallsGraph proc~eos_validate eos_validate proc~fail fail proc~eos_validate->proc~fail error error proc~fail->error proc~error_ring_push error_ring_push proc~fail->proc~error_ring_push

Called by

proc~~eos_validate~~CalledByGraph proc~eos_validate eos_validate proc~configure_ocean_pgf configure_ocean_pgf proc~configure_ocean_pgf->proc~eos_validate proc~engine_setup engine_setup proc~engine_setup->proc~configure_ocean_pgf 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 eos_validate(eos, ierr)
      !! Host-side fail-loud gate over the device-supported variant
      !! set.  Device point routines (`!$acc routine seq`) cannot
      !! `error stop`, so membership in the device-callable set is
      !! guaranteed HERE at configure time; the device `else` branch
      !! is then unreachable-by-contract.
      use rdb_ocean_status, only: OCEAN_STATUS_ERR_SETUP, OCEAN_STATUS_OK
      use rdb_error_ring, only: fail
      type(eos_t), intent(in) :: eos
      integer, intent(out), optional :: ierr
         !! `OCEAN_STATUS_ERR_SETUP` on an unsupported/unknown EOS variant
         !! when present; absent behaves as today (`error stop`).
      select case (eos%variant)
      case (EOS_VARIANT_LINEAR, EOS_VARIANT_WRIGHT_97, EOS_VARIANT_ROQUET_SPV)
         ! Device-callable — OK.
      case (EOS_VARIANT_TEOS10)
         call fail("ocean_eos: TEOS-10 variant is not yet device-callable", ierr, &
                   OCEAN_STATUS_ERR_SETUP)
         return
      case default
         call fail("ocean_eos: unknown eos%variant", ierr, OCEAN_STATUS_ERR_SETUP)
         return
      end select
      if (present(ierr)) ierr = OCEAN_STATUS_OK
   end subroutine eos_validate