fill_getter_3d Subroutine

private subroutine fill_getter_3d(ptr, nx, ny, nz, gen, arr, step)

Shared tail of every 3D P2 getter: base-address c_loc, actual array extents (never assumed from grid metadata — read straight off the pointer), and the generation stamp. arr must already be pointer-associated with a live, non-empty state array.

Arguments

Type IntentOptional Attributes Name
type(c_ptr), intent(out) :: ptr
integer(kind=c_int), intent(out) :: nx
integer(kind=c_int), intent(out) :: ny
integer(kind=c_int), intent(out) :: nz
integer(kind=c_int), intent(out) :: gen
real(kind=wp), intent(in), pointer :: arr(:,:,:)
integer, intent(in) :: step

Called by

proc~~fill_getter_3d~~CalledByGraph proc~fill_getter_3d fill_getter_3d proc~rdb_ocean_get_h_layer_ptr rdb_ocean_get_h_layer_ptr proc~rdb_ocean_get_h_layer_ptr->proc~fill_getter_3d proc~rdb_ocean_get_hu_ptr rdb_ocean_get_hu_ptr proc~rdb_ocean_get_hu_ptr->proc~fill_getter_3d proc~rdb_ocean_get_hv_ptr rdb_ocean_get_hv_ptr proc~rdb_ocean_get_hv_ptr->proc~fill_getter_3d proc~rdb_ocean_get_ks_ptr rdb_ocean_get_ks_ptr proc~rdb_ocean_get_ks_ptr->proc~fill_getter_3d proc~rdb_ocean_get_kt_ptr rdb_ocean_get_kt_ptr proc~rdb_ocean_get_kt_ptr->proc~fill_getter_3d proc~rdb_ocean_get_kv_ptr rdb_ocean_get_kv_ptr proc~rdb_ocean_get_kv_ptr->proc~fill_getter_3d proc~rdb_ocean_get_rho_layer_ptr rdb_ocean_get_rho_layer_ptr proc~rdb_ocean_get_rho_layer_ptr->proc~fill_getter_3d proc~rdb_ocean_get_tracer_ptr rdb_ocean_get_tracer_ptr proc~rdb_ocean_get_tracer_ptr->proc~fill_getter_3d proc~rdb_ocean_get_u_face_x_layer_ptr rdb_ocean_get_u_face_x_layer_ptr proc~rdb_ocean_get_u_face_x_layer_ptr->proc~fill_getter_3d proc~rdb_ocean_get_v_face_y_layer_ptr rdb_ocean_get_v_face_y_layer_ptr proc~rdb_ocean_get_v_face_y_layer_ptr->proc~fill_getter_3d proc~rdb_ocean_get_w_interface_ptr rdb_ocean_get_w_interface_ptr proc~rdb_ocean_get_w_interface_ptr->proc~fill_getter_3d

Source Code

   subroutine fill_getter_3d(ptr, nx, ny, nz, gen, arr, step)
      !! Shared tail of every 3D P2 getter: base-address `c_loc`, actual
      !! array extents (never assumed from grid metadata — read straight
      !! off the pointer), and the generation stamp. `arr` must already be
      !! pointer-associated with a live, non-empty state array.
      type(c_ptr), intent(out) :: ptr
      integer(c_int), intent(out) :: nx, ny, nz, gen
      real(wp), pointer, intent(in) :: arr(:, :, :)
      integer, intent(in) :: step

      ptr = c_loc(arr(1, 1, 1))
      nx = int(size(arr, 1), c_int)
      ny = int(size(arr, 2), c_int)
      nz = int(size(arr, 3), c_int)
      gen = int(step, c_int)
   end subroutine fill_getter_3d