scratch_3d_buffer_init Subroutine

private subroutine scratch_3d_buffer_init(this, n1, n2, n3, name)

Allocate the host-side storage at (n1, n2, n3), zero-filled. GPU attachment is a separate step via enter_data — init runs before the device exists in the typical init-then-enter-data sequence.

Type Bound

scratch_3d_buffer_t

Arguments

Type IntentOptional Attributes Name
class(scratch_3d_buffer_t), intent(inout) :: this
integer, intent(in) :: n1
integer, intent(in) :: n2
integer, intent(in) :: n3
character(len=*), intent(in), optional :: name

Called by

proc~~scratch_3d_buffer_init~~CalledByGraph proc~scratch_3d_buffer_init scratch_3d_buffer_t%scratch_3d_buffer_init proc~continuity_init continuity_t%continuity_init proc~continuity_init->proc~scratch_3d_buffer_init proc~coriolis_adv_init coriolis_adv_t%coriolis_adv_init proc~coriolis_adv_init->proc~scratch_3d_buffer_init proc~ocean_bdrag_init ocean_bottom_drag_t%ocean_bdrag_init proc~ocean_bdrag_init->proc~scratch_3d_buffer_init proc~ocean_epbl_init ocean_epbl_t%ocean_epbl_init proc~ocean_epbl_init->proc~scratch_3d_buffer_init proc~ocean_hdiff_tracer_init ocean_hdiff_tracer_t%ocean_hdiff_tracer_init proc~ocean_hdiff_tracer_init->proc~scratch_3d_buffer_init proc~ocean_hvisc_init ocean_horizontal_viscosity_t%ocean_hvisc_init proc~ocean_hvisc_init->proc~scratch_3d_buffer_init proc~ocean_lateral_mix_init ocean_lateral_mix_t%ocean_lateral_mix_init proc~ocean_lateral_mix_init->proc~scratch_3d_buffer_init proc~ocean_pressure_force_init ocean_pressure_force_t%ocean_pressure_force_init proc~ocean_pressure_force_init->proc~scratch_3d_buffer_init proc~ocean_surfstress_init ocean_surface_stress_t%ocean_surfstress_init proc~ocean_surfstress_init->proc~scratch_3d_buffer_init proc~ocean_top_drag_init ocean_top_drag_t%ocean_top_drag_init proc~ocean_top_drag_init->proc~scratch_3d_buffer_init proc~ocean_vdiff_init ocean_vdiff_t%ocean_vdiff_init proc~ocean_vdiff_init->proc~scratch_3d_buffer_init proc~ocean_vert_adv_init ocean_vertical_advection_t%ocean_vert_adv_init proc~ocean_vert_adv_init->proc~scratch_3d_buffer_init

Source Code

   subroutine scratch_3d_buffer_init(this, n1, n2, n3, name)
      !! Allocate the host-side storage at (n1, n2, n3), zero-filled.
      !! GPU attachment is a separate step via `enter_data` —
      !! `init` runs before the device exists in the typical
      !! init-then-enter-data sequence.
      class(scratch_3d_buffer_t), intent(inout) :: this
      integer, intent(in) :: n1, n2, n3
      character(len=*), intent(in), optional :: name
      this%n1 = n1
      this%n2 = n2
      this%n3 = n3
      if (present(name)) this%name = name
      allocate (this%data(n1, n2, n3), source=0.0_wp)
      this%is_init = .true.
   end subroutine scratch_3d_buffer_init