Skip to content

Commit 1f155f7

Browse files
committed
interpolation incorrect over poles #335
Fixed row and column creation so interpolation over poles with spherical coordinate systems now work as expected.
1 parent a45db21 commit 1f155f7

File tree

6 files changed

+321
-65
lines changed

6 files changed

+321
-65
lines changed

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
# Misc #
1010
########
11-
*.csv
1211
*.orig
1312
*~
1413
*.log

src/ocgis/constants.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,5 +54,5 @@
5454
prime_meridian = 179.9999999999999
5555

5656

57-
test_run_long_tests = False
57+
test_run_long_tests = True
5858
test_run_dev_tests = False

src/ocgis/regrid/base.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ def get_sdim_from_esmf_grid(egrid):
2424
dtype_coords = coords[0].dtype
2525
# construct the ocgis grid array and fill
2626
grid_value = np.zeros([2] + shape_coords_list, dtype=dtype_coords)
27-
grid_value[0, ...] = coords[0]
28-
grid_value[1, ...] = coords[1]
27+
grid_value[0, ...] = coords[1]
28+
grid_value[1, ...] = coords[0]
2929

3030
# check for corners on the esmf grid
3131
if all(egrid.coords_done[ESMF.StaggerLoc.CORNER]):
@@ -37,8 +37,8 @@ def get_sdim_from_esmf_grid(egrid):
3737
for ii, jj in iter_array(coords[0], use_mask=False):
3838
row_slice = slice(ii, ii+2)
3939
col_slice = slice(jj, jj+2)
40-
row_corners = corner[0][row_slice, col_slice]
41-
col_corners = corner[1][row_slice, col_slice]
40+
row_corners = corner[1][row_slice, col_slice]
41+
col_corners = corner[0][row_slice, col_slice]
4242
for kk, slc in enumerate(slices):
4343
grid_corners[:, ii, jj, kk] = row_corners[slc], col_corners[slc]
4444
else:
@@ -89,9 +89,9 @@ def get_esmf_grid_from_sdim(sdim, with_corners=True, value_mask=None):
8989
ogrid = sdim.grid
9090
egrid = ESMF.Grid(max_index=np.array(ogrid.value.shape[1:]), staggerloc=ESMF.StaggerLoc.CENTER,
9191
coord_sys=ESMF.CoordSys.SPH_DEG)
92-
row = egrid.get_coords(0, staggerloc=ESMF.StaggerLoc.CENTER)
92+
row = egrid.get_coords(1, staggerloc=ESMF.StaggerLoc.CENTER)
9393
row[:] = ogrid.value[0, ...]
94-
col = egrid.get_coords(1, staggerloc=ESMF.StaggerLoc.CENTER)
94+
col = egrid.get_coords(0, staggerloc=ESMF.StaggerLoc.CENTER)
9595
col[:] = ogrid.value[1, ...]
9696

9797
# use a logical or operation to merge with value_mask if present
@@ -115,8 +115,8 @@ def get_esmf_grid_from_sdim(sdim, with_corners=True, value_mask=None):
115115
egrid.add_coords(staggerloc=[ESMF.StaggerLoc.CORNER])
116116
# get the coordinate pointers and set the coordinates
117117
grid_corner = egrid.coords[ESMF.StaggerLoc.CORNER]
118-
grid_corner[0][:] = corners_esmf[0]
119-
grid_corner[1][:] = corners_esmf[1]
118+
grid_corner[1][:] = corners_esmf[0]
119+
grid_corner[0][:] = corners_esmf[1]
120120
except CornersUnavailable:
121121
pass
122122

0 commit comments

Comments
 (0)