metrics_finalize Subroutine

public subroutine metrics_finalize(this)

Compute every stored inverse + the hvisc ratio bundle ONCE from the length/area arrays a generator already wrote, via the Adcroft reciprocal (D4). No kernel ever recomputes these.

Arguments

Type IntentOptional Attributes Name
type(ocean_metrics_t), intent(inout) :: this

Calls

proc~~metrics_finalize~~CallsGraph proc~metrics_finalize metrics_finalize proc~adcroft_recip adcroft_recip proc~metrics_finalize->proc~adcroft_recip

Called by

proc~~metrics_finalize~~CalledByGraph proc~metrics_finalize metrics_finalize proc~bt_wide_init bt_wide_t%bt_wide_init proc~bt_wide_init->proc~metrics_finalize proc~configure_ocean_metrics configure_ocean_metrics proc~configure_ocean_metrics->proc~metrics_finalize proc~engine_setup engine_setup proc~engine_setup->proc~metrics_finalize proc~engine_setup->proc~configure_ocean_metrics 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~ocean_dyn_enable_bt_wide ocean_dyn_enable_bt_wide proc~ocean_dyn_enable_bt_wide->proc~bt_wide_init proc~driver_run driver_run proc~driver_run->proc~driver_run_ocean proc~engine_enter_data->proc~ocean_dyn_enable_bt_wide 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_finalize(this)
      !! Compute every stored inverse + the hvisc ratio bundle ONCE from
      !! the length/area arrays a generator already wrote, via the
      !! Adcroft reciprocal (D4).  No kernel ever recomputes these.
      type(ocean_metrics_t), intent(inout) :: this

      this%idxT = adcroft_recip(this%dxT)
      this%idyT = adcroft_recip(this%dyT)
      this%idxCu = adcroft_recip(this%dxCu)
      this%idyCu = adcroft_recip(this%dyCu)
      this%idxCv = adcroft_recip(this%dxCv)
      this%idyCv = adcroft_recip(this%dyCv)
      this%iareaT = adcroft_recip(this%areaT)
      this%iareaBu = adcroft_recip(this%areaBu)
      this%iareaCu = adcroft_recip(this%areaCu)
      this%iareaCv = adcroft_recip(this%areaCv)

      ! hvisc ratio bundle (all == 1 on uniform Cartesian).
      this%dy_dxT = this%dyT*this%idxT
      this%dx_dyT = this%dxT*this%idyT
      this%dy_dxBu = this%dyBu*adcroft_recip(this%dxBu)
      this%dx_dyBu = this%dxBu*adcroft_recip(this%dyBu)
      this%dx2h = this%dxT*this%dxT
      this%dy2h = this%dyT*this%dyT
      this%dx2q = this%dxBu*this%dxBu
      this%dy2q = this%dyBu*this%dyBu

      ! BT transport widths start as an exact copy of the slow-path
      ! widths.  Re-synced after land masking (which zeroes `dy_cu` /
      ! `dx_cv`) and overwritten per step only when porous barriers are on.
      this%dy_cu_bt = this%dy_cu
      this%dx_cv_bt = this%dx_cv
   end subroutine metrics_finalize