fill_coriolis_corner Subroutine

private subroutine fill_coriolis_corner(cfg, metrics, grid, f_corner)

Fill a C-grid corner Coriolis array via the single generator-driven routine metrics_fill_coriolis, honouring &ocean_grid_nml coriolis_scheme (D7). beta_plane (default) is BIT-IDENTICAL to the legacy coriolis_adv_set_beta_plane; planetary uses the metrics geography. The centre 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_corner(:,:)

Calls

proc~~fill_coriolis_corner~~CallsGraph proc~fill_coriolis_corner fill_coriolis_corner proc~metrics_fill_coriolis metrics_fill_coriolis proc~fill_coriolis_corner->proc~metrics_fill_coriolis proc~parse_coriolis_scheme parse_coriolis_scheme proc~fill_coriolis_corner->proc~parse_coriolis_scheme

Called by

proc~~fill_coriolis_corner~~CalledByGraph proc~fill_coriolis_corner fill_coriolis_corner proc~configure_ocean_forcing configure_ocean_forcing proc~configure_ocean_forcing->proc~fill_coriolis_corner proc~configure_ocean_kappa_shear configure_ocean_kappa_shear proc~configure_ocean_kappa_shear->proc~fill_coriolis_corner proc~configure_ocean_lateral configure_ocean_lateral proc~configure_ocean_lateral->proc~configure_ocean_kappa_shear proc~engine_setup engine_setup proc~engine_setup->proc~configure_ocean_forcing 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_centre_scratch(:,:)

Source Code

   subroutine fill_coriolis_corner(cfg, metrics, grid, f_corner)
      !! Fill a C-grid corner Coriolis array via the single
      !! generator-driven routine `metrics_fill_coriolis`, honouring
      !! `&ocean_grid_nml coriolis_scheme` (D7).  beta_plane (default)
      !! is BIT-IDENTICAL to the legacy `coriolis_adv_set_beta_plane`;
      !! planetary uses the metrics geography.  The centre 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_corner(:, :)
      real(wp), allocatable :: f_centre_scratch(:, :)
      allocate (f_centre_scratch(grid%nx_total, grid%ny_total))
      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, f_centre_scratch)
      deallocate (f_centre_scratch)
   end subroutine fill_coriolis_corner