ocean_vcoord_compute_target_h Subroutine

private pure subroutine ocean_vcoord_compute_target_h(this, total_h, eta)

Thin polymorphic wrapper. A type-bound procedure’s passed object must be class(...), but mapping a polymorphic list item into a target / offload region is unspecified behaviour (gfortran -Wopenmp; see FORTRAN_STYLE.md) — so the do concurrent kernels live in the type(ocean_vcoord_t) _impl and this wrapper only resolves the concrete type. ocean_vcoord_t is never extended, so the dynamic type is always the declared type. Mirrors the enter_data/exit_data split.

Type Bound

ocean_vcoord_t

Arguments

Type IntentOptional Attributes Name
class(ocean_vcoord_t), intent(inout) :: this
real(kind=wp), intent(in) :: total_h(:,:)
real(kind=wp), intent(in) :: eta(:,:)

Calls

proc~~ocean_vcoord_compute_target_h~~CallsGraph proc~ocean_vcoord_compute_target_h ocean_vcoord_t%ocean_vcoord_compute_target_h proc~ocean_vcoord_compute_target_h_impl ocean_vcoord_compute_target_h_impl proc~ocean_vcoord_compute_target_h->proc~ocean_vcoord_compute_target_h_impl proc~ocean_vcoord_geometric_target ocean_vcoord_geometric_target proc~ocean_vcoord_compute_target_h_impl->proc~ocean_vcoord_geometric_target proc~ocean_vcoord_z_fixed_target ocean_vcoord_z_fixed_target proc~ocean_vcoord_compute_target_h_impl->proc~ocean_vcoord_z_fixed_target proc~ocean_vcoord_zstar_target ocean_vcoord_zstar_target proc~ocean_vcoord_compute_target_h_impl->proc~ocean_vcoord_zstar_target local local proc~ocean_vcoord_geometric_target->local proc~ocean_vcoord_z_fixed_target->local proc~ocean_vcoord_zstar_target->local

Called by

proc~~ocean_vcoord_compute_target_h~~CalledByGraph proc~ocean_vcoord_compute_target_h ocean_vcoord_t%ocean_vcoord_compute_target_h proc~ocean_apply_ale_remap_centres ocean_apply_ale_remap_centres proc~ocean_apply_ale_remap_centres->proc~ocean_vcoord_compute_target_h proc~ocean_apply_ale_remap_step ocean_apply_ale_remap_step proc~ocean_apply_ale_remap_step->proc~ocean_vcoord_compute_target_h proc~ocean_dyn_step_split ocean_dyn_step_split proc~ocean_dyn_step_split->proc~ocean_apply_ale_remap_step proc~engine_step engine_step proc~engine_step->proc~ocean_dyn_step_split proc~driver_run_ocean driver_run_ocean proc~driver_run_ocean->proc~engine_step proc~rdb_ocean_step rdb_ocean_step proc~rdb_ocean_step->proc~engine_step proc~driver_run driver_run proc~driver_run->proc~driver_run_ocean

Source Code

   pure subroutine ocean_vcoord_compute_target_h(this, total_h, eta)
      !! Thin polymorphic wrapper.  A type-bound procedure's passed object
      !! must be `class(...)`, but mapping a polymorphic list item into a
      !! `target` / offload region is unspecified behaviour (gfortran
      !! `-Wopenmp`; see FORTRAN_STYLE.md) — so the `do concurrent` kernels
      !! live in the `type(ocean_vcoord_t)` `_impl` and this wrapper only
      !! resolves the concrete type.  `ocean_vcoord_t` is never extended,
      !! so the dynamic type is always the declared type.  Mirrors the
      !! enter_data/exit_data split.
      class(ocean_vcoord_t), intent(inout) :: this
      real(wp), intent(in) :: total_h(:, :)  ! assumed-shape-ok: thin TBP wrapper, no kernel
      real(wp), intent(in) :: eta(:, :)      ! assumed-shape-ok: thin TBP wrapper, no kernel
      select type (this)
      type is (ocean_vcoord_t)
         call ocean_vcoord_compute_target_h_impl(this, total_h, eta)
      end select
   end subroutine ocean_vcoord_compute_target_h