ocean_fold_exchange_reserve Subroutine

public subroutine ocean_fold_exchange_reserve(nslab)

Pre-size the buffers for the largest group of the run, in (row x layer) slabs summed over its fields — e.g. the ml_state group is (3 + ntracer)*nz fields of at most ng+1 rows — so no device reallocation fires mid-run. No-op when inactive or already large enough.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nslab

Total (rows x layers) over the fields of the largest group.


Calls

proc~~ocean_fold_exchange_reserve~~CallsGraph proc~ocean_fold_exchange_reserve ocean_fold_exchange_reserve proc~grow_buffers grow_buffers proc~ocean_fold_exchange_reserve->proc~grow_buffers

Called by

proc~~ocean_fold_exchange_reserve~~CalledByGraph proc~ocean_fold_exchange_reserve ocean_fold_exchange_reserve proc~engine_setup engine_setup proc~engine_setup->proc~ocean_fold_exchange_reserve proc~complete_ocean_create complete_ocean_create proc~complete_ocean_create->proc~engine_setup proc~driver_run_ocean driver_run_ocean proc~driver_run_ocean->proc~engine_setup proc~driver_validate driver_validate proc~driver_validate->proc~engine_setup 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 ocean_fold_exchange_reserve(nslab)
      !! Pre-size the buffers for the largest group of the run, in
      !! (row x layer) slabs summed over its fields — e.g. the
      !! `ml_state` group is `(3 + ntracer)*nz` fields of at most `ng+1`
      !! rows — so no device reallocation fires mid-run.  No-op when
      !! inactive or already large enough.
      integer, intent(in) :: nslab
         !! Total (rows x layers) over the fields of the largest group.
      if (.not. fx_active) return
      if (nslab > fx_slab_cap) call grow_buffers(nslab)
   end subroutine ocean_fold_exchange_reserve