evp_workspace_bytes Function

private 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.

Type Bound

evp_workspace_t

Arguments

Type IntentOptional Attributes Name
class(evp_workspace_t), intent(in) :: this

Return Value integer(kind=int64)


Calls

proc~~evp_workspace_bytes~~CallsGraph proc~evp_workspace_bytes evp_workspace_t%evp_workspace_bytes interface~arr_bytes arr_bytes proc~evp_workspace_bytes->interface~arr_bytes proc~arr_bytes_i1 arr_bytes_i1 interface~arr_bytes->proc~arr_bytes_i1 proc~arr_bytes_i2 arr_bytes_i2 interface~arr_bytes->proc~arr_bytes_i2 proc~arr_bytes_i3 arr_bytes_i3 interface~arr_bytes->proc~arr_bytes_i3 proc~arr_bytes_l1 arr_bytes_l1 interface~arr_bytes->proc~arr_bytes_l1 proc~arr_bytes_l2 arr_bytes_l2 interface~arr_bytes->proc~arr_bytes_l2 proc~arr_bytes_l3 arr_bytes_l3 interface~arr_bytes->proc~arr_bytes_l3 proc~arr_bytes_r1 arr_bytes_r1 interface~arr_bytes->proc~arr_bytes_r1 proc~arr_bytes_r2 arr_bytes_r2 interface~arr_bytes->proc~arr_bytes_r2 proc~arr_bytes_r3 arr_bytes_r3 interface~arr_bytes->proc~arr_bytes_r3 proc~arr_bytes_r4 arr_bytes_r4 interface~arr_bytes->proc~arr_bytes_r4

Called by

proc~~evp_workspace_bytes~~CalledByGraph proc~evp_workspace_bytes evp_workspace_t%evp_workspace_bytes proc~ocean_sea_ice_bytes ocean_sea_ice_t%ocean_sea_ice_bytes proc~ocean_sea_ice_bytes->proc~evp_workspace_bytes

Source Code

   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