resolve_ocean Function

private function resolve_ocean(c_handle, h) result(status)

Resolve + verify a handle is a live, fully-initialised ocean simulation. Every query/step entry point funnels through this so the bad-handle and not-yet-initialised cases are reported with one consistent status code each, in one place.

Arguments

Type IntentOptional Attributes Name
type(c_ptr), intent(in) :: c_handle
type(ocean_handle_t), intent(out), pointer :: h

Return Value integer(kind=c_int)


Calls

proc~~resolve_ocean~~CallsGraph proc~resolve_ocean resolve_ocean proc~handle_check handle_check proc~resolve_ocean->proc~handle_check

Called by

proc~~resolve_ocean~~CalledByGraph proc~resolve_ocean resolve_ocean proc~rdb_ocean_get_b_ptr rdb_ocean_get_b_ptr proc~rdb_ocean_get_b_ptr->proc~resolve_ocean proc~rdb_ocean_get_bt_eta_ptr rdb_ocean_get_bt_eta_ptr proc~rdb_ocean_get_bt_eta_ptr->proc~resolve_ocean proc~rdb_ocean_get_diag_count rdb_ocean_get_diag_count proc~rdb_ocean_get_diag_count->proc~resolve_ocean proc~rdb_ocean_get_diagnostic_ptr rdb_ocean_get_diagnostic_ptr proc~rdb_ocean_get_diagnostic_ptr->proc~resolve_ocean proc~rdb_ocean_get_grid_info rdb_ocean_get_grid_info proc~rdb_ocean_get_grid_info->proc~resolve_ocean proc~rdb_ocean_get_h_layer_ptr rdb_ocean_get_h_layer_ptr proc~rdb_ocean_get_h_layer_ptr->proc~resolve_ocean proc~rdb_ocean_get_hu_ptr rdb_ocean_get_hu_ptr proc~rdb_ocean_get_hu_ptr->proc~resolve_ocean proc~rdb_ocean_get_hv_ptr rdb_ocean_get_hv_ptr proc~rdb_ocean_get_hv_ptr->proc~resolve_ocean proc~rdb_ocean_get_kinetic_energy rdb_ocean_get_kinetic_energy proc~rdb_ocean_get_kinetic_energy->proc~resolve_ocean proc~rdb_ocean_get_ks_ptr rdb_ocean_get_ks_ptr proc~rdb_ocean_get_ks_ptr->proc~resolve_ocean proc~rdb_ocean_get_kt_ptr rdb_ocean_get_kt_ptr proc~rdb_ocean_get_kt_ptr->proc~resolve_ocean proc~rdb_ocean_get_kv_ptr rdb_ocean_get_kv_ptr proc~rdb_ocean_get_kv_ptr->proc~resolve_ocean proc~rdb_ocean_get_q_heat_ptr rdb_ocean_get_q_heat_ptr proc~rdb_ocean_get_q_heat_ptr->proc~resolve_ocean proc~rdb_ocean_get_q_salt_ptr rdb_ocean_get_q_salt_ptr proc~rdb_ocean_get_q_salt_ptr->proc~resolve_ocean proc~rdb_ocean_get_rho_layer_ptr rdb_ocean_get_rho_layer_ptr proc~rdb_ocean_get_rho_layer_ptr->proc~resolve_ocean proc~rdb_ocean_get_step_count rdb_ocean_get_step_count proc~rdb_ocean_get_step_count->proc~resolve_ocean proc~rdb_ocean_get_tau_x_ptr rdb_ocean_get_tau_x_ptr proc~rdb_ocean_get_tau_x_ptr->proc~resolve_ocean proc~rdb_ocean_get_tau_y_ptr rdb_ocean_get_tau_y_ptr proc~rdb_ocean_get_tau_y_ptr->proc~resolve_ocean proc~rdb_ocean_get_time rdb_ocean_get_time proc~rdb_ocean_get_time->proc~resolve_ocean proc~rdb_ocean_get_total_mass rdb_ocean_get_total_mass proc~rdb_ocean_get_total_mass->proc~resolve_ocean proc~rdb_ocean_get_tracer_count rdb_ocean_get_tracer_count proc~rdb_ocean_get_tracer_count->proc~resolve_ocean proc~rdb_ocean_get_tracer_ptr rdb_ocean_get_tracer_ptr proc~rdb_ocean_get_tracer_ptr->proc~resolve_ocean proc~rdb_ocean_get_u_face_x_layer_ptr rdb_ocean_get_u_face_x_layer_ptr proc~rdb_ocean_get_u_face_x_layer_ptr->proc~resolve_ocean proc~rdb_ocean_get_v_face_y_layer_ptr rdb_ocean_get_v_face_y_layer_ptr proc~rdb_ocean_get_v_face_y_layer_ptr->proc~resolve_ocean proc~rdb_ocean_get_w_interface_ptr rdb_ocean_get_w_interface_ptr proc~rdb_ocean_get_w_interface_ptr->proc~resolve_ocean proc~rdb_ocean_get_wet_t_ptr rdb_ocean_get_wet_t_ptr proc~rdb_ocean_get_wet_t_ptr->proc~resolve_ocean proc~rdb_ocean_list_diags rdb_ocean_list_diags proc~rdb_ocean_list_diags->proc~resolve_ocean proc~rdb_ocean_list_tracers rdb_ocean_list_tracers proc~rdb_ocean_list_tracers->proc~resolve_ocean proc~rdb_ocean_refresh_host rdb_ocean_refresh_host proc~rdb_ocean_refresh_host->proc~resolve_ocean proc~rdb_ocean_set_bathymetry rdb_ocean_set_bathymetry proc~rdb_ocean_set_bathymetry->proc~resolve_ocean proc~rdb_ocean_set_h rdb_ocean_set_h proc~rdb_ocean_set_h->proc~resolve_ocean proc~rdb_ocean_set_heat_flux rdb_ocean_set_heat_flux proc~rdb_ocean_set_heat_flux->proc~resolve_ocean proc~rdb_ocean_set_salt_flux rdb_ocean_set_salt_flux proc~rdb_ocean_set_salt_flux->proc~resolve_ocean proc~rdb_ocean_set_tracer rdb_ocean_set_tracer proc~rdb_ocean_set_tracer->proc~resolve_ocean proc~rdb_ocean_set_u rdb_ocean_set_u proc~rdb_ocean_set_u->proc~resolve_ocean proc~rdb_ocean_set_v rdb_ocean_set_v proc~rdb_ocean_set_v->proc~resolve_ocean proc~rdb_ocean_set_wind rdb_ocean_set_wind proc~rdb_ocean_set_wind->proc~resolve_ocean proc~rdb_ocean_step rdb_ocean_step proc~rdb_ocean_step->proc~resolve_ocean

Variables

Type Visibility Attributes Name Initial
integer, private :: hstat

Source Code

   function resolve_ocean(c_handle, h) result(status)
      !! Resolve + verify a handle is a live, fully-initialised ocean
      !! simulation. Every query/step entry point funnels through this so
      !! the bad-handle and not-yet-initialised cases are reported with one
      !! consistent status code each, in one place.
      type(c_ptr), intent(in) :: c_handle
      type(ocean_handle_t), pointer, intent(out) :: h
      integer(c_int) :: status

      integer :: hstat

      hstat = handle_check(c_handle, h)
      if (hstat /= HANDLE_OK) then
         h => null()
         status = int(OCEAN_STATUS_ERR_BAD_HANDLE, c_int)
         return
      end if
      if (.not. h%is_initialised) then
         h => null()
         status = int(OCEAN_STATUS_ERR_NOT_INITIALISED, c_int)
         return
      end if
      status = int(OCEAN_STATUS_OK, c_int)
   end function resolve_ocean