barotropic_state_init Subroutine

private subroutine barotropic_state_init(this, grid)

Allocate every C-grid barotropic array zero-filled. East-face arrays are (nx+1, ny), north-face (nx, ny+1). Scalars (manning_n, coriolis_f) are populated by state_init_from_config afterwards.

Type Bound

barotropic_state_t

Arguments

Type IntentOptional Attributes Name
class(barotropic_state_t), intent(inout) :: this
type(hgrid_t), intent(in) :: grid

Called by

proc~~barotropic_state_init~~CalledByGraph proc~barotropic_state_init barotropic_state_t%barotropic_state_init proc~ocean_state_init ocean_state_t%ocean_state_init proc~ocean_state_init->proc~barotropic_state_init proc~ocean_state_init_from_config ocean_state_t%ocean_state_init_from_config proc~ocean_state_init_from_config->proc~ocean_state_init proc~engine_setup engine_setup proc~engine_setup->proc~ocean_state_init_from_config 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

Variables

Type Visibility Attributes Name Initial
integer, private :: nx
integer, private :: ny

Source Code

   subroutine barotropic_state_init(this, grid)
      !! Allocate every C-grid barotropic array zero-filled. East-face arrays
      !! are (nx+1, ny), north-face (nx, ny+1). Scalars (manning_n, coriolis_f)
      !! are populated by `state_init_from_config` afterwards.
      class(barotropic_state_t), intent(inout) :: this
      type(hgrid_t), intent(in) :: grid

      integer :: nx, ny

      nx = grid%nx_total
      ny = grid%ny_total

      ! Cell-centred scalars
      allocate (this%h(nx, ny), source=0.0_wp)
      allocate (this%b(nx, ny), source=0.0_wp)
      allocate (this%flux_h(nx, ny), source=0.0_wp)

      ! East-face arrays: extra column, face index i runs 1..nx+1.
      allocate (this%u_face_x(nx + 1, ny), source=0.0_wp)
      allocate (this%hu_face_x(nx + 1, ny), source=0.0_wp)
      allocate (this%mass_flux_x(nx + 1, ny), source=0.0_wp)

      ! North-face arrays: extra row, face index j runs 1..ny+1.
      allocate (this%v_face_y(nx, ny + 1), source=0.0_wp)
      allocate (this%hv_face_y(nx, ny + 1), source=0.0_wp)
      allocate (this%mass_flux_y(nx, ny + 1), source=0.0_wp)

      ! RK2 save buffers
      allocate (this%h0(nx, ny), source=0.0_wp)
      allocate (this%u_face_x0(nx + 1, ny), source=0.0_wp)
      allocate (this%v_face_y0(nx, ny + 1), source=0.0_wp)

      this%is_init = .true.
   end subroutine barotropic_state_init