Skip to content

Commit 28e0530

Browse files
committed
wip: try to fix corner issue in regrid
1 parent 84e4f07 commit 28e0530

1 file changed

Lines changed: 9 additions & 5 deletions

File tree

src/utils/esmf_phys2lonlat_mod.F90

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ module esmf_phys2lonlat_mod
1313
use ESMF, only: ESMF_FieldCreate, ESMF_FieldRegridStore
1414
use ESMF, only: ESMF_FieldGet, ESMF_FieldRegrid
1515
use ESMF, only: ESMF_KIND_I4, ESMF_KIND_R8, ESMF_TYPEKIND_R8
16-
use ESMF, only: ESMF_REGRIDMETHOD_BILINEAR, ESMF_POLEMETHOD_ALLAVG, ESMF_EXTRAPMETHOD_NEAREST_IDAVG
16+
use ESMF, only: ESMF_REGRIDMETHOD_BILINEAR, ESMF_POLEMETHOD_NONE, ESMF_EXTRAPMETHOD_NEAREST_IDAVG
1717
use ESMF, only: ESMF_TERMORDER_SRCSEQ, ESMF_MESHLOC_ELEMENT, ESMF_STAGGERLOC_CENTER
1818
use ESMF, only: ESMF_FieldDestroy, ESMF_RouteHandleDestroy
1919
use esmf_check_error_mod, only: check_esmf_error
@@ -33,9 +33,11 @@ module esmf_phys2lonlat_mod
3333

3434
type(ESMF_Field) :: physfld_3d
3535
type(ESMF_Field) :: lonlatfld_3d
36+
type(ESMF_Field) :: lonlatfld_3d_copy
3637

3738
type(ESMF_Field) :: physfld_2d
3839
type(ESMF_Field) :: lonlatfld_2d
40+
type(ESMF_Field) :: lonlatfld_2d_copy
3941

4042
interface esmf_phys2lonlat_regrid
4143
module procedure esmf_phys2lonlat_regrid_2d
@@ -84,6 +86,7 @@ subroutine esmf_phys2lonlat_init()
8486
lonlatfld_3d = ESMF_FieldCreate( lonlat_grid, arrayspec, staggerloc=ESMF_STAGGERLOC_CENTER, &
8587
ungriddedLBound=(/1,1/), ungriddedUBound=(/pver,nflds/), rc=rc)
8688
call check_esmf_error(rc, subname//'ESMF_FieldCreate 3D lonlat fld ERROR')
89+
lonlatfld_3d_copy = lonlatfld_3d
8790

8891
! 2D phys fld
8992
call ESMF_ArraySpecSet(arrayspec, 1, ESMF_TYPEKIND_R8, rc=rc)
@@ -99,19 +102,20 @@ subroutine esmf_phys2lonlat_init()
99102

100103
lonlatfld_2d = ESMF_FieldCreate( lonlat_grid, arrayspec, staggerloc=ESMF_STAGGERLOC_CENTER, rc=rc)
101104
call check_esmf_error(rc, subname//'ESMF_FieldCreate 2D lonlat fld ERROR')
105+
lonlatfld_2d_copy = lonlatfld_2d
102106

103-
call ESMF_FieldRegridStore(srcField=physfld_3d, dstField=lonlatfld_3d, &
107+
call ESMF_FieldRegridStore(srcField=physfld_3d, dstField=lonlatfld_3d_copy, &
104108
regridMethod=ESMF_REGRIDMETHOD_BILINEAR, &
105-
polemethod=ESMF_POLEMETHOD_ALLAVG, &
109+
polemethod=ESMF_POLEMETHOD_NONE, &
106110
extrapMethod=ESMF_EXTRAPMETHOD_NEAREST_IDAVG, &
107111
routeHandle=rh_phys2lonlat_3d, factorIndexList=factorIndexList, &
108112
factorList=factorList, srcTermProcessing=smm_srctermproc, &
109113
pipelineDepth=smm_pipelinedep, rc=rc)
110114
call check_esmf_error(rc, subname//'ESMF_FieldRegridStore 3D routehandle ERROR')
111115

112-
call ESMF_FieldRegridStore(srcField=physfld_2d, dstField=lonlatfld_2d, &
116+
call ESMF_FieldRegridStore(srcField=physfld_2d, dstField=lonlatfld_2d_copy, &
113117
regridMethod=ESMF_REGRIDMETHOD_BILINEAR, &
114-
polemethod=ESMF_POLEMETHOD_ALLAVG, &
118+
polemethod=ESMF_POLEMETHOD_NONE, &
115119
extrapMethod=ESMF_EXTRAPMETHOD_NEAREST_IDAVG, &
116120
routeHandle=rh_phys2lonlat_2d, factorIndexList=factorIndexList, &
117121
factorList=factorList, srcTermProcessing=smm_srctermproc, &

0 commit comments

Comments
 (0)