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 | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(ocean_metrics_t), | intent(inout) | :: | this |
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