Skip to content

Commit

Permalink
Corners require 1 more pts than centers for a grid.
Browse files Browse the repository at this point in the history
  • Loading branch information
tclune committed Jul 24, 2023
1 parent 5a13589 commit 0c281e3
Showing 1 changed file with 26 additions and 26 deletions.
52 changes: 26 additions & 26 deletions base/HorizontalFluxRegridder.F90
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ subroutine initialize_subclass(this, unusable, rc)
integer :: counts(5)
integer :: status
integer :: units ! unused
real(kind=ESMF_KIND_R8), pointer :: lons(:,:), lats(:,:)
real(kind=ESMF_KIND_R8), allocatable :: corner_lonsn(:,:), corner_lats(:,:)

_UNUSED_DUMMY(unusable)
spec = this%get_spec()
Expand All @@ -98,31 +98,31 @@ subroutine initialize_subclass(this, unusable, rc)

this%resolution_ratio = (IM_in / IM_out)

call ESMF_GridGetCoord(grid_in, coordDim=1, farrayPtr=lons, &
localDE=0, staggerLoc=ESMF_STAGGERLOC_CORNER, __RC__)
call ESMF_GridGetCoord(grid_in, coordDim=2, farrayPtr=lats, &
localDE=0, staggerLoc=ESMF_STAGGERLOC_CORNER, __RC__)

this%dx_in = distance( &
lons(1:IM_in,1:JM_in), lats(1:IM_in,1:JM_in), &
lons(2:IM_in+1,1:JM_in), lats(2:IM_in+1,1:JM_in))

this%dy_in = distance( &
lons(1:IM_in,1:JM_in), lats(1:IM_in,1:JM_in), &
lons(1:IM_in,2:JM_in+1), lats(1:IM_in,2:JM_in+1))

call ESMF_GridGetCoord(grid_out, coordDim=1, farrayPtr=lons, &
localDE=0, staggerLoc=ESMF_STAGGERLOC_CORNER, __RC__)
call ESMF_GridGetCoord(grid_out, coordDim=2, farrayPtr=lats, &
localDE=0, staggerLoc=ESMF_STAGGERLOC_CORNER, __RC__)

this%dx_out = distance( &
lons(1:IM_out,1:JM_out), lats(1:IM_out,1:JM_out), &
lons(2:IM_out+1,1:JM_out), lats(2:IM_out+1,1:JM_out))

this%dy_out = distance( &
lons(1:IM_out,1:JM_out), lats(1:IM_out,1:JM_out), &
lons(1:IM_out,2:JM_out+1), lats(1:IM_out,2:JM_out+1))
allocate(corner_lons(IM_in+1,JM_in+1), corner_lats(IM_in+1,JM_in+1))
associate(lons => corner_lons, lats => corner_lats)
call MAPL_GridGetCorners(gridCornerLons=lons, gridCornerLats=lats, _RC)

this%dx_in = distance( &
lons(1:IM_in,1:JM_in), lats(1:IM_in,1:JM_in), &
lons(2:IM_in+1,1:JM_in), lats(2:IM_in+1,1:JM_in))

this%dy_in = distance( &
lons(1:IM_in,1:JM_in), lats(1:IM_in,1:JM_in), &
lons(1:IM_in,2:JM_in+1), lats(1:IM_in,2:JM_in+1))
end associate

allocate(corner_lons(IM_out+1,JM_out+1), corner_lats(IM_out+1,JM_out+1))
associate(lons => corner_lons, lats => corner_lats)
call MAPL_GridGetCorners(gridCornerLons=lons, gridCornerLats=lats, _RC)

this%dx_out = distance( &
lons(1:IM_in,1:JM_in), lats(1:IM_in,1:JM_in), &
lons(2:IM_in+1,1:JM_in), lats(2:IM_in+1,1:JM_in))

this%dy_out = distance( &
lons(1:IM_in,1:JM_in), lats(1:IM_in,1:JM_in), &
lons(1:IM_in,2:JM_in+1), lats(1:IM_in,2:JM_in+1))
end associate

end associate
end associate
Expand Down

0 comments on commit 0c281e3

Please sign in to comment.