metrics_fill_cartesian Subroutine

public subroutine metrics_fill_cartesian(this, grid, dx, dy)

Uniform Cartesian: every length is constant, areaX = dx*dy. Geography is left at zero (a Cartesian beta-plane has no lat/lon — the Coriolis fill uses the Cartesian y coordinate, D7). Fills all ghost rows/columns (constants, trivially). Call metrics_finalize afterwards.

Arguments

Type IntentOptional Attributes Name
type(ocean_metrics_t), intent(inout) :: this
type(hgrid_t), intent(in) :: grid
real(kind=wp), intent(in) :: dx
real(kind=wp), intent(in) :: dy

Called by

proc~~metrics_fill_cartesian~~CalledByGraph proc~metrics_fill_cartesian metrics_fill_cartesian proc~bt_wide_init bt_wide_t%bt_wide_init proc~bt_wide_init->proc~metrics_fill_cartesian proc~configure_ocean_metrics configure_ocean_metrics proc~configure_ocean_metrics->proc~metrics_fill_cartesian proc~engine_setup engine_setup proc~engine_setup->proc~configure_ocean_metrics proc~ocean_dyn_enable_bt_wide ocean_dyn_enable_bt_wide proc~ocean_dyn_enable_bt_wide->proc~bt_wide_init proc~complete_ocean_create complete_ocean_create proc~complete_ocean_create->proc~engine_setup proc~engine_enter_data engine_enter_data proc~complete_ocean_create->proc~engine_enter_data proc~driver_run_ocean driver_run_ocean proc~driver_run_ocean->proc~engine_setup proc~driver_run_ocean->proc~engine_enter_data proc~driver_validate driver_validate proc~driver_validate->proc~engine_setup proc~engine_enter_data->proc~ocean_dyn_enable_bt_wide 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

Source Code

   subroutine metrics_fill_cartesian(this, grid, dx, dy)
      !! Uniform Cartesian: every length is constant, `areaX = dx*dy`.
      !! Geography is left at zero (a Cartesian beta-plane has no lat/lon
      !! — the Coriolis fill uses the Cartesian y coordinate, D7).  Fills
      !! all ghost rows/columns (constants, trivially).  Call
      !! `metrics_finalize` afterwards.
      type(ocean_metrics_t), intent(inout) :: this
      type(hgrid_t), intent(in) :: grid
      real(wp), intent(in) :: dx, dy

      this%dxT = dx
      this%dyT = dy
      this%dxCu = dx
      this%dyCu = dy
      this%dxCv = dx
      this%dyCv = dy
      this%dxBu = dx
      this%dyBu = dy
      this%dy_cu = dy
      this%dx_cv = dx
      this%areaT = dx*dy
      this%areaCu = dx*dy
      this%areaCv = dx*dy
      this%areaBu = dx*dy
      ! `grid` is part of the generator contract (shapes already come
      ! from `init(grid)`); cartesian metrics are pure constants so the
      ! geometry is not re-read here.
      associate (unused => grid%nx_total)
      end associate
   end subroutine metrics_fill_cartesian