rdb_ocean_required_halo Function

public function rdb_ocean_required_halo(pv_adv_scheme, pv_adv_scheme_len, tracer_recon, tracer_recon_len, periodic, tripolar_fold, decomposed, kappa_shear_at_vertex) result(ng) bind(c, name="rdb_ocean_required_halo")

Stateless (no handle required — like rdb_working_precision): the minimum nghost for a given scheme/topology selection, folding the six scattered per-scheme/per-topology minimums behind rdb_ocean_halo_width::required_halo so a Python caller sizing a grid’s halo before create() agrees with what engine_setup will itself enforce. A zero-length scheme string means “unset” (baseline 2), matching the Fortran function’s absent-optional-argument behaviour.

Arguments

Type IntentOptional Attributes Name
character(kind=c_char, len=1), intent(in) :: pv_adv_scheme(pv_adv_scheme_len)
integer(kind=c_int), intent(in), value :: pv_adv_scheme_len
character(kind=c_char, len=1), intent(in) :: tracer_recon(tracer_recon_len)
integer(kind=c_int), intent(in), value :: tracer_recon_len
integer(kind=c_int), intent(in), value :: periodic
integer(kind=c_int), intent(in), value :: tripolar_fold
integer(kind=c_int), intent(in), value :: decomposed
integer(kind=c_int), intent(in), value :: kappa_shear_at_vertex

Return Value integer(kind=c_int)


Calls

proc~~rdb_ocean_required_halo~~CallsGraph proc~rdb_ocean_required_halo rdb_ocean_required_halo proc~c_to_f_string c_to_f_string proc~rdb_ocean_required_halo->proc~c_to_f_string proc~required_halo required_halo proc~rdb_ocean_required_halo->proc~required_halo proc~parse_pv_adv_scheme parse_pv_adv_scheme proc~required_halo->proc~parse_pv_adv_scheme proc~parse_tracer_recon parse_tracer_recon proc~required_halo->proc~parse_tracer_recon proc~pv_adv_required_nghost pv_adv_required_nghost proc~required_halo->proc~pv_adv_required_nghost proc~tracer_recon_required_nghost tracer_recon_required_nghost proc~required_halo->proc~tracer_recon_required_nghost

Variables

Type Visibility Attributes Name Initial
character(len=:), private, allocatable :: pv_s
character(len=:), private, allocatable :: tr_s

Source Code

   function rdb_ocean_required_halo(pv_adv_scheme, pv_adv_scheme_len, &
                                    tracer_recon, tracer_recon_len, &
                                    periodic, tripolar_fold, decomposed, &
                                    kappa_shear_at_vertex) result(ng) &
      bind(c, name="rdb_ocean_required_halo")
      !! Stateless (no handle required — like `rdb_working_precision`):
      !! the minimum `nghost` for a given scheme/topology selection,
      !! folding the six scattered per-scheme/per-topology minimums behind
      !! `rdb_ocean_halo_width::required_halo` so a Python caller sizing
      !! a grid's halo before `create()` agrees with what `engine_setup`
      !! will itself enforce. A zero-length scheme string means "unset"
      !! (baseline 2), matching the Fortran function's
      !! absent-optional-argument behaviour.
      integer(c_int), intent(in), value :: pv_adv_scheme_len
      character(kind=c_char), intent(in) :: pv_adv_scheme(pv_adv_scheme_len)
      integer(c_int), intent(in), value :: tracer_recon_len
      character(kind=c_char), intent(in) :: tracer_recon(tracer_recon_len)
      integer(c_int), intent(in), value :: periodic, tripolar_fold, decomposed
      integer(c_int), intent(in), value :: kappa_shear_at_vertex
      integer(c_int) :: ng

      character(len=:), allocatable :: pv_s, tr_s

      call c_to_f_string(pv_adv_scheme, pv_adv_scheme_len, pv_s)
      call c_to_f_string(tracer_recon, tracer_recon_len, tr_s)
      ng = int(required_halo(pv_adv_scheme=pv_s, tracer_recon=tr_s, &
                             periodic=(periodic /= 0_c_int), &
                             tripolar_fold=(tripolar_fold /= 0_c_int), &
                             decomposed=(decomposed /= 0_c_int), &
                             kappa_shear_at_vertex=(kappa_shear_at_vertex /= 0_c_int)), c_int)
   end function rdb_ocean_required_halo