Counted allocatable footprint of the EVP scratch (0 when
unallocated, i.e. whenever &ocean_ice_nml dynamics is off).
Every array here is device-mapped by evp_workspace_enter_data_impl
and was the single omission in ocean_sea_ice_bytes (~154 MB at
1000x800). One arr_bytes term per array — add one here when a
new allocatable joins the type.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(evp_workspace_t), | intent(in) | :: | this |
pure function evp_workspace_bytes(this) result(nbytes) !! Counted allocatable footprint of the EVP scratch (0 when !! unallocated, i.e. whenever `&ocean_ice_nml dynamics` is off). !! !! Every array here is device-mapped by `evp_workspace_enter_data_impl` !! and was the single omission in `ocean_sea_ice_bytes` (~154 MB at !! 1000x800). One `arr_bytes` term per array — add one here when a !! new allocatable joins the type. class(evp_workspace_t), intent(in) :: this integer(int64) :: nbytes nbytes = arr_bytes(this%mis_w) & + arr_bytes(this%mice_w) & + arr_bytes(this%ci_w) & + arr_bytes(this%mis_in_w) & + arr_bytes(this%mice_in_w) & + arr_bytes(this%ci_in_w) & + arr_bytes(this%pres_mice_w) & + arr_bytes(this%del_sh_min_pr_w) & + arr_bytes(this%sh_dd_w) & + arr_bytes(this%sh_dt_w) & + arr_bytes(this%zeta_w) & + arr_bytes(this%del_sh_w) & + arr_bytes(this%mask_t_w) & + arr_bytes(this%mi_u_w) & + arr_bytes(this%mask_u_w) & + arr_bytes(this%u_tmp_w) & + arr_bytes(this%mi_v_w) & + arr_bytes(this%mask_v_w) & + arr_bytes(this%a_u_w) & + arr_bytes(this%a_v_w) & + arr_bytes(this%sh_ds_w) & + arr_bytes(this%mi_ratio_a_q_w) & + arr_bytes(this%q_w) & + arr_bytes(this%mask_q_w) end function evp_workspace_bytes