fill_coriolis_centre Subroutine

private subroutine fill_coriolis_centre(cfg, metrics, grid, f_centre)

Fill a cell-centre |Coriolis| array via metrics_fill_coriolis (D7). beta_plane (default) is BIT-IDENTICAL to the legacy EPBL / kappa-shear set_f_centre. The corner output is discarded here (filled into local scratch).

Arguments

Type IntentOptional Attributes Name
type(config_t), intent(in) :: cfg
type(ocean_metrics_t), intent(in) :: metrics
type(hgrid_t), intent(in) :: grid
real(kind=wp), intent(out) :: f_centre(:,:)

Calls

proc~~fill_coriolis_centre~~CallsGraph proc~fill_coriolis_centre fill_coriolis_centre proc~metrics_fill_coriolis metrics_fill_coriolis proc~fill_coriolis_centre->proc~metrics_fill_coriolis proc~parse_coriolis_scheme parse_coriolis_scheme proc~fill_coriolis_centre->proc~parse_coriolis_scheme

Called by

proc~~fill_coriolis_centre~~CalledByGraph proc~fill_coriolis_centre fill_coriolis_centre proc~configure_ocean_cavity_melt configure_ocean_cavity_melt proc~configure_ocean_cavity_melt->proc~fill_coriolis_centre proc~configure_ocean_epbl configure_ocean_epbl proc~configure_ocean_epbl->proc~fill_coriolis_centre proc~configure_ocean_kappa_shear configure_ocean_kappa_shear proc~configure_ocean_kappa_shear->proc~fill_coriolis_centre proc~configure_ocean_meke configure_ocean_meke proc~configure_ocean_meke->proc~fill_coriolis_centre proc~configure_ocean_varmix configure_ocean_varmix proc~configure_ocean_varmix->proc~fill_coriolis_centre proc~configure_ocean_wavespeed configure_ocean_wavespeed proc~configure_ocean_wavespeed->proc~fill_coriolis_centre proc~configure_ocean_lateral configure_ocean_lateral proc~configure_ocean_lateral->proc~configure_ocean_epbl proc~configure_ocean_lateral->proc~configure_ocean_kappa_shear proc~configure_ocean_lateral->proc~configure_ocean_meke proc~configure_ocean_lateral->proc~configure_ocean_varmix proc~configure_ocean_lateral->proc~configure_ocean_wavespeed proc~engine_setup engine_setup proc~engine_setup->proc~configure_ocean_cavity_melt proc~engine_setup->proc~configure_ocean_lateral 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

Variables

Type Visibility Attributes Name Initial
real(kind=wp), private, allocatable :: f_corner_scratch(:,:)

Source Code

   subroutine fill_coriolis_centre(cfg, metrics, grid, f_centre)
      !! Fill a cell-centre |Coriolis| array via `metrics_fill_coriolis`
      !! (D7).  beta_plane (default) is BIT-IDENTICAL to the legacy
      !! EPBL / kappa-shear `set_f_centre`.  The corner output is
      !! discarded here (filled into local scratch).
      type(config_t), intent(in) :: cfg
      type(ocean_metrics_t), intent(in) :: metrics
      type(hgrid_t), intent(in) :: grid
      real(wp), intent(out) :: f_centre(:, :)
      real(wp), allocatable :: f_corner_scratch(:, :)
      allocate (f_corner_scratch(grid%nx_total + 1, grid%ny_total + 1))
      call metrics_fill_coriolis(metrics, &
                                 parse_coriolis_scheme(cfg%ocean%grid%coriolis_scheme), &
                                 cfg%coriolis_f, cfg%ocean%topo%coriolis_beta, &
                                 cfg%ocean%topo%coriolis_y_ref, cfg%ocean%grid%omega, &
                                 grid, f_corner_scratch, f_centre)
      deallocate (f_corner_scratch)
   end subroutine fill_coriolis_centre