ensure_catalog_initialised Subroutine

private subroutine ensure_catalog_initialised()

Populate the catalog at runtime (procedure pointers can’t be a parameter constructor). Idempotent.

Arguments

None

Called by

proc~~ensure_catalog_initialised~~CalledByGraph proc~ensure_catalog_initialised ensure_catalog_initialised proc~catalog_name_list catalog_name_list proc~catalog_name_list->proc~ensure_catalog_initialised proc~derived_catalog_name derived_catalog_name proc~derived_catalog_name->proc~ensure_catalog_initialised proc~derived_catalog_requires derived_catalog_requires proc~derived_catalog_requires->proc~ensure_catalog_initialised proc~derived_catalog_size derived_catalog_size proc~derived_catalog_size->proc~ensure_catalog_initialised proc~register_derived register_derived proc~register_derived->proc~ensure_catalog_initialised proc~register_derived->proc~catalog_name_list proc~apply_diag_selection apply_diag_selection proc~apply_diag_selection->proc~register_derived proc~rdb_ocean_derived_catalog_name rdb_ocean_derived_catalog_name proc~rdb_ocean_derived_catalog_name->proc~derived_catalog_name proc~rdb_ocean_derived_catalog_name->proc~derived_catalog_size proc~rdb_ocean_derived_catalog_size rdb_ocean_derived_catalog_size proc~rdb_ocean_derived_catalog_size->proc~derived_catalog_size proc~engine_configure_diag engine_configure_diag proc~engine_configure_diag->proc~apply_diag_selection 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

Source Code

   subroutine ensure_catalog_initialised()
      !! Populate the catalog at runtime (procedure pointers can't be a
      !! parameter constructor).  Idempotent.
      if (catalog_initialised) return
      CATALOG(1) = derived_entry_t( &
                   name="h_layer", &
                   long_name="layer_thickness", &
                   units="m", &
                   standard_name="ocean_layer_thickness", &
                   fill=fill_h_layer, is_layered=.true.)
      CATALOG(2) = derived_entry_t( &
                   name="rho_layer", &
                   long_name="layer_in_situ_density", &
                   units="kg m-3", &
                   standard_name="sea_water_density", &
                   fill=fill_rho_layer, is_layered=.true.)
      CATALOG(3) = derived_entry_t( &
                   name="vorticity_z", &
                   long_name="vertical_relative_vorticity_at_cell_centre", &
                   units="s-1", &
                   standard_name="ocean_relative_vorticity", &
                   fill=fill_vorticity_z, is_layered=.true., masks_land=.true.)
      CATALOG(4) = derived_entry_t( &
                   name="ke_total", &
                   long_name="depth_integrated_kinetic_energy", &
                   units="m3 s-2", &
                   standard_name="ocean_kinetic_energy_content", &
                   fill=fill_ke_total, is_layered=.false.)
      CATALOG(5) = derived_entry_t( &
                   name="transport_x", &
                   long_name="depth_integrated_eastward_transport", &
                   units="m2 s-1", &
                   standard_name="ocean_volume_transport_x", &
                   fill=fill_transport_x, is_layered=.false.)
      CATALOG(6) = derived_entry_t( &
                   name="transport_y", &
                   long_name="depth_integrated_northward_transport", &
                   units="m2 s-1", &
                   standard_name="ocean_volume_transport_y", &
                   fill=fill_transport_y, is_layered=.false.)
      CATALOG(7) = derived_entry_t( &
                   name="mld_density", &
                   long_name="mixed_layer_depth_density_threshold", &
                   units="m", &
                   standard_name="ocean_mixed_layer_thickness_defined_by_sigma_t", &
                   fill=fill_mld_density, is_layered=.false.)
      CATALOG(8) = derived_entry_t( &
                   name="ice_speed", &
                   long_name="sea_ice_drift_speed_at_cell_centre", &
                   units="m s-1", &
                   standard_name="sea_ice_speed", &
                   fill=fill_ice_speed, is_layered=.false.)
      CATALOG(9) = derived_entry_t( &
                   name="ice_u", &
                   long_name="eastward_sea_ice_velocity_at_cell_centre", &
                   units="m s-1", &
                   standard_name="sea_ice_x_velocity", &
                   fill=fill_ice_u, is_layered=.false.)
      CATALOG(10) = derived_entry_t( &
                    name="ice_v", &
                    long_name="northward_sea_ice_velocity_at_cell_centre", &
                    units="m s-1", &
                    standard_name="sea_ice_y_velocity", &
                    fill=fill_ice_v, is_layered=.false.)
      ! ---- Ice-shelf cavity (P2c).  Eleven melt-interface fields, all
      ! gated on `&ocean_cavity_melt_nml enable`, plus two GEOMETRY
      ! fields that need only `&ocean_cavity_dyn_nml`.  Every one is
      ! NaN outside the cover, so a domain mean over the output is a
      ! mean over the CAVITY — see `cavity_mask_impl`.
      CATALOG(11) = derived_entry_t( &
                    name="melt", &
                    long_name="ice_shelf_basal_melt_mass_flux", &
                    units="kg m-2 s-1", &
                    standard_name="water_flux_into_sea_water_from_ice_shelf", &
                    fill=fill_melt, is_layered=.false., &
                    requires=DERIVED_REQ_CAVITY_MELT)
      CATALOG(12) = derived_entry_t( &
                    name="melt_m_per_yr", &
                    long_name="ice_shelf_basal_melt_rate_isomip_convention", &
                    units="m yr-1", &
                    standard_name="ice_shelf_basal_melt_rate", &
                    fill=fill_melt_m_per_yr, is_layered=.false., &
                    requires=DERIVED_REQ_CAVITY_MELT)
      CATALOG(13) = derived_entry_t( &
                    name="thermal_driving", &
                    long_name="far_field_thermal_driving_above_in_situ_freezing_point", &
                    units="degC", &
                    standard_name="ocean_thermal_driving", &
                    fill=fill_thermal_driving, is_layered=.false., &
                    requires=DERIVED_REQ_CAVITY_MELT)
      CATALOG(14) = derived_entry_t( &
                    name="haline_driving", &
                    long_name="far_field_haline_driving_above_interface_salinity", &
                    units="g kg-1", &
                    standard_name="ocean_haline_driving", &
                    fill=fill_haline_driving, is_layered=.false., &
                    requires=DERIVED_REQ_CAVITY_MELT)
      CATALOG(15) = derived_entry_t( &
                    name="tbdry", &
                    long_name="ice_ocean_interface_temperature", &
                    units="degC", &
                    standard_name="sea_water_temperature_at_ice_shelf_base", &
                    fill=fill_tbdry, is_layered=.false., &
                    requires=DERIVED_REQ_CAVITY_MELT)
      CATALOG(16) = derived_entry_t( &
                    name="sbdry", &
                    long_name="ice_ocean_interface_salinity", &
                    units="g kg-1", &
                    standard_name="sea_water_salinity_at_ice_shelf_base", &
                    fill=fill_sbdry, is_layered=.false., &
                    requires=DERIVED_REQ_CAVITY_MELT)
      CATALOG(17) = derived_entry_t( &
                    name="tfreeze_ib", &
                    long_name="in_situ_freezing_point_of_the_far_field_at_the_ice_base", &
                    units="degC", &
                    standard_name="sea_water_freezing_temperature", &
                    fill=fill_tfreeze_ib, is_layered=.false., &
                    requires=DERIVED_REQ_CAVITY_MELT)
      CATALOG(18) = derived_entry_t( &
                    name="exch_vel_t", &
                    long_name="thermal_exchange_velocity_at_the_ice_base", &
                    units="m s-1", &
                    standard_name="ocean_thermal_exchange_velocity", &
                    fill=fill_exch_vel_t, is_layered=.false., &
                    requires=DERIVED_REQ_CAVITY_MELT)
      CATALOG(19) = derived_entry_t( &
                    name="exch_vel_s", &
                    long_name="haline_exchange_velocity_at_the_ice_base", &
                    units="m s-1", &
                    standard_name="ocean_haline_exchange_velocity", &
                    fill=fill_exch_vel_s, is_layered=.false., &
                    requires=DERIVED_REQ_CAVITY_MELT)
      CATALOG(20) = derived_entry_t( &
                    name="ustar_shelf", &
                    long_name="friction_velocity_of_the_ice_shelf_melt_law", &
                    units="m s-1", &
                    standard_name="ocean_friction_velocity_at_ice_shelf_base", &
                    fill=fill_ustar_shelf, is_layered=.false., &
                    requires=DERIVED_REQ_CAVITY_MELT)
      CATALOG(21) = derived_entry_t( &
                    name="cavity_melt_status", &
                    long_name="per_column_basal_melt_solver_status_code", &
                    units="1", &
                    standard_name="ocean_basal_melt_solver_status", &
                    fill=fill_cavity_melt_status, is_layered=.false., &
                    requires=DERIVED_REQ_CAVITY_MELT)
      CATALOG(22) = derived_entry_t( &
                    name="z_draft", &
                    long_name="ice_shelf_draft_below_the_geoid", &
                    units="m", &
                    standard_name="ice_shelf_draft", &
                    fill=fill_z_draft, is_layered=.false., &
                    requires=DERIVED_REQ_CAVITY_DYN)
      CATALOG(23) = derived_entry_t( &
                    name="water_column", &
                    long_name="water_column_thickness_under_the_ice_shelf", &
                    units="m", &
                    standard_name="sea_water_column_thickness", &
                    fill=fill_water_column, is_layered=.false., &
                    requires=DERIVED_REQ_CAVITY_DYN)
      catalog_initialised = .true.
   end subroutine ensure_catalog_initialised