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 | Intent | Optional | 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(:,:) |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=wp), | private, | allocatable | :: | f_centre_scratch(:,:) |
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