supergrid_ghost_fill_2d Subroutine

private subroutine supergrid_ghost_fill_2d(arr, grid)

Fill ghost rows/columns by constant extrapolation, for a T-point array (nx_total, ny_total). Interior = [ng+1, ng+ni] x [ng+1, ng+nj].

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(inout) :: arr(:,:)
type(hgrid_t), intent(in) :: grid

Called by

proc~~supergrid_ghost_fill_2d~~CalledByGraph proc~supergrid_ghost_fill_2d supergrid_ghost_fill_2d proc~metrics_assemble_from_supergrid_arrays metrics_assemble_from_supergrid_arrays proc~metrics_assemble_from_supergrid_arrays->proc~supergrid_ghost_fill_2d proc~engine_setup engine_setup proc~engine_setup->proc~metrics_assemble_from_supergrid_arrays proc~configure_ocean_metrics configure_ocean_metrics proc~engine_setup->proc~configure_ocean_metrics proc~metrics_fill_from_supergrid metrics_fill_from_supergrid proc~metrics_fill_from_supergrid->proc~metrics_assemble_from_supergrid_arrays proc~metrics_fill_tripolar_whole metrics_fill_tripolar_whole proc~metrics_fill_tripolar_whole->proc~metrics_assemble_from_supergrid_arrays proc~complete_ocean_create complete_ocean_create proc~complete_ocean_create->proc~engine_setup proc~configure_ocean_metrics->proc~metrics_fill_from_supergrid proc~metrics_fill_tripolar metrics_fill_tripolar proc~configure_ocean_metrics->proc~metrics_fill_tripolar 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~metrics_fill_tripolar->proc~metrics_fill_tripolar_whole 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 :: i
integer, private :: j
integer, private :: ng
integer, private :: nx
integer, private :: ny

Source Code

   subroutine supergrid_ghost_fill_2d(arr, grid)
      !! Fill ghost rows/columns by constant extrapolation, for a T-point
      !! array `(nx_total, ny_total)`.  Interior = `[ng+1, ng+ni]` x
      !! `[ng+1, ng+nj]`.
      real(wp), intent(inout) :: arr(:, :)
      type(hgrid_t), intent(in) :: grid
      integer :: ng, nx, ny, i, j
      ng = grid%nghost
      nx = grid%nx_phys
      ny = grid%ny_phys
      do j = 1, size(arr, 2)
         do i = 1, ng
            arr(i, j) = arr(ng + 1, j)             ! west
            arr(ng + nx + i, j) = arr(ng + nx, j)  ! east
         end do
      end do
      do j = 1, ng
         do i = 1, size(arr, 1)
            arr(i, j) = arr(i, ng + 1)            ! south
            arr(i, ng + ny + j) = arr(i, ng + ny)  ! north
         end do
      end do
   end subroutine supergrid_ghost_fill_2d