Last active
December 1, 2017 01:10
-
-
Save JiaweiZhuang/d2d756afaf47fd5c04c15b948c1e114c to your computer and use it in GitHub Desktop.
ESMPy_periodic_fix_ordering
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# ESMPy periodic grid test\n", | |
"\n", | |
"Fix the memory layout in https://gist.github.com/rokuingh/7157d0c41c88cc1a5335b857dd4702dd" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"%matplotlib inline\n", | |
"import numpy as np\n", | |
"import matplotlib.pyplot as plt\n", | |
"import ESMF" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Background\n", | |
"\n", | |
"From [ESMPy documentation](http://www.earthsystemmodeling.org/esmf_releases/last_built/esmpy_doc/html/grid.html#ESMF.api.grid.Grid), we should be able to set periodic dimension\n", | |
"\n", | |
" periodic_dim\n", | |
" Return type:\tint\n", | |
" Returns:\tThe periodic dimension of the Grid (e.g. 0 for x or longitude, 1 for y or latitude, etc.)." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Make fake grid" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Assume both input and output grids are periodic in longitude. Thus `lon=180` is omitted as it is the same as `lon=-180`." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(array([-180, -170, -160, -150, -140, -130, -120, -110, -100, -90, -80,\n", | |
" -70, -60, -50, -40, -30, -20, -10, 0, 10, 20, 30,\n", | |
" 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140,\n", | |
" 150, 160, 170]),\n", | |
" array([-88., -84., -80., -76., -72., -68., -64., -60., -56., -52., -48.,\n", | |
" -44., -40., -36., -32., -28., -24., -20., -16., -12., -8., -4.,\n", | |
" 0., 4., 8., 12., 16., 20., 24., 28., 32., 36., 40.,\n", | |
" 44., 48., 52., 56., 60., 64., 68., 72., 76., 80., 84.,\n", | |
" 88.]))" | |
] | |
}, | |
"execution_count": 2, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"lon_in = np.arange(-180, 180, 10)\n", | |
"#lat_in = np.arange(-90, 90.1, 4)\n", | |
"lat_in = np.arange(-88, 88.1, 4)\n", | |
"lon_in, lat_in" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(array([-180, -175, -170, -165, -160, -155, -150, -145, -140, -135, -130,\n", | |
" -125, -120, -115, -110, -105, -100, -95, -90, -85, -80, -75,\n", | |
" -70, -65, -60, -55, -50, -45, -40, -35, -30, -25, -20,\n", | |
" -15, -10, -5, 0, 5, 10, 15, 20, 25, 30, 35,\n", | |
" 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90,\n", | |
" 95, 100, 105, 110, 115, 120, 125, 130, 135, 140, 145,\n", | |
" 150, 155, 160, 165, 170, 175]),\n", | |
" array([-88., -84., -80., -76., -72., -68., -64., -60., -56., -52., -48.,\n", | |
" -44., -40., -36., -32., -28., -24., -20., -16., -12., -8., -4.,\n", | |
" 0., 4., 8., 12., 16., 20., 24., 28., 32., 36., 40.,\n", | |
" 44., 48., 52., 56., 60., 64., 68., 72., 76., 80., 84.,\n", | |
" 88.]))" | |
] | |
}, | |
"execution_count": 3, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"lon_out = np.arange(-180, 180, 5)\n", | |
"#lat_out = np.arange(-90, 90.1, 4)\n", | |
"lat_out = np.arange(-88, 88.1, 4)\n", | |
"lon_out, lat_out" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Create Grid & Regrid object" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"sourcegrid = ESMF.Grid(np.array([lon_in.size, lat_in.size]), \n", | |
" staggerloc = ESMF.StaggerLoc.CENTER,\n", | |
" coord_sys = ESMF.CoordSys.SPH_DEG,\n", | |
" num_peri_dims = 1)\n", | |
"\n", | |
"source_lon = sourcegrid.get_coords(0)\n", | |
"source_lat = sourcegrid.get_coords(1)\n", | |
"\n", | |
"lons_in, lats_in = np.meshgrid(lon_in, lat_in)\n", | |
"\n", | |
"source_lon[...], source_lat[...] = [lons_in.T, lats_in.T]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"0" | |
] | |
}, | |
"execution_count": 5, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"sourcegrid.periodic_dim" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"destgrid = ESMF.Grid(np.array([lon_out.size, lat_out.size]), \n", | |
" staggerloc = ESMF.StaggerLoc.CENTER,\n", | |
" coord_sys = ESMF.CoordSys.SPH_DEG,\n", | |
" num_peri_dims = 1)\n", | |
"\n", | |
"dest_lon = destgrid.get_coords(0)\n", | |
"dest_lat = destgrid.get_coords(1)\n", | |
"\n", | |
"lons_out, lats_out = np.meshgrid(lon_out, lat_out)\n", | |
"\n", | |
"dest_lon[...], dest_lat[...] = [lons_out.T, lats_out.T]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"sourcefield = ESMF.Field(sourcegrid)\n", | |
"destfield = ESMF.Field(destgrid)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"regrid_bi = ESMF.Regrid(sourcefield, destfield, \n", | |
" regrid_method = ESMF.RegridMethod.BILINEAR, \n", | |
" unmapped_action = ESMF.UnmappedAction.IGNORE)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Make input data" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"wave = lambda x,k: np.sin(x*k*np.pi/180.0)\n", | |
"sourcefield.data[...] = np.outer(wave(lon_in,3), wave(lat_in,3)) + 1" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.colorbar.Colorbar at 0x7fa1f5594da0>" | |
] | |
}, | |
"execution_count": 10, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7fa1f9388940>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.pcolormesh(sourcefield.data, vmin=0, vmax=2)\n", | |
"plt.colorbar()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Apply regridding" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"destfield = regrid_bi(sourcefield, destfield)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.colorbar.Colorbar at 0x7fa1f53f9278>" | |
] | |
}, | |
"execution_count": 12, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7fa1f5504ef0>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.pcolormesh(destfield.data, vmin=0, vmax=2)\n", | |
"plt.colorbar()" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.6.0" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment