Created
November 7, 2017 21:35
-
-
Save rokuingh/7157d0c41c88cc1a5335b857dd4702dd to your computer and use it in GitHub Desktop.
Bilinear regridding with periodic Grids
This file contains hidden or 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" | |
] | |
}, | |
{ | |
"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", | |
"From [ESMPy documentation](http://www.earthsystemmodeling.org/esmf_releases/last_built/esmpy_doc/html/grid.html), we should be able to set periodic dimension\n", | |
"```\n", | |
"num_peri_dims (int) – The number of periodic dimensions, either 0 or 1. If None, defaults to 0.\n", | |
"periodic_dim (int) – The periodic dimension: 0, 1 or 2. If None, defaults to 0.\n", | |
"pole_dim (int) – The pole dimension 0 or 1. If None, defaults to 1.\n", | |
"```" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Make fake grid\n", | |
"Assume both input and output grids are periodic in longitude. Make sure to map the centers of the grid cells in both latitude and longitude." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(array([-175., -165., -155., -145., -135., -125., -115., -105., -95.,\n", | |
" -85., -75., -65., -55., -45., -35., -25., -15., -5.,\n", | |
" 5., 15., 25., 35., 45., 55., 65., 75., 85.,\n", | |
" 95., 105., 115., 125., 135., 145., 155., 165., 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": 2, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"lon_in = np.arange(-175, 175.1, 10)\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([-177.5, -172.5, -167.5, -162.5, -157.5, -152.5, -147.5, -142.5,\n", | |
" -137.5, -132.5, -127.5, -122.5, -117.5, -112.5, -107.5, -102.5,\n", | |
" -97.5, -92.5, -87.5, -82.5, -77.5, -72.5, -67.5, -62.5,\n", | |
" -57.5, -52.5, -47.5, -42.5, -37.5, -32.5, -27.5, -22.5,\n", | |
" -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 12.5, 17.5,\n", | |
" 22.5, 27.5, 32.5, 37.5, 42.5, 47.5, 52.5, 57.5,\n", | |
" 62.5, 67.5, 72.5, 77.5, 82.5, 87.5, 92.5, 97.5,\n", | |
" 102.5, 107.5, 112.5, 117.5, 122.5, 127.5, 132.5, 137.5,\n", | |
" 142.5, 147.5, 152.5, 157.5, 162.5, 167.5, 172.5, 177.5]),\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(-177.5, 177.5 + 0.1, 5)\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": { | |
"collapsed": true | |
}, | |
"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", | |
"source_lon[...], source_lat[...] = np.meshgrid(lon_in, lat_in, indexing='ij')" | |
] | |
}, | |
{ | |
"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", | |
"\n", | |
"dest_lon = destgrid.get_coords(0)\n", | |
"dest_lat = destgrid.get_coords(1)\n", | |
"\n", | |
"dest_lon[...], dest_lat[...] = np.meshgrid(lon_out, lat_out, indexing='ij')" | |
] | |
}, | |
{ | |
"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": {}, | |
"outputs": [], | |
"source": [ | |
"regrid_bi = ESMF.Regrid(sourcefield, destfield, \n", | |
" regrid_method = ESMF.RegridMethod.BILINEAR, \n", | |
" unmapped_action = ESMF.UnmappedAction.ERROR)" | |
] | |
}, | |
{ | |
"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": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Apply regridding" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"destfield = regrid_bi(sourcefield, destfield)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.colorbar.Colorbar at 0x7f189d895390>" | |
] | |
}, | |
"execution_count": 11, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\nPSIiMoypUyoiMrQ05nMte/58II/NAn5ANsTyCTN7iFeGYrZRYi5lDxeTDVH94AC29Vv5v9tvZXLV\nQFTq7kt5pRN9Sb5q7MNmtp6sw3pyH+p8CfhK/t8zyIYML+OVq5NfzK88/oTsHqcA15vZo2Qd/6Lh\nzuT1t5B11O82s8fN7HnghqBd64BzyBYhmgD82sxWmdli4L96/QJL+w3Z+wXwdTN7jGwe8o5fHBwM\nPGxma8zsD2b2HHBgHttxqK+IiMifUadURGRoGUk2N7Hnz7Q89muy1VMfIRu6eyjZ1b/bgVPyzlxJ\n7r7N3de6+5YBbOuPeeUq3yJ3f3wA6/4Y2f1UHyZbyXYW2fDgb/PKfNad4u5fJhuW+iBZB3082dXN\nd7j7d/LnbCGbH3sv2cq5Y/Iyq3tR/zNk82F/QnbldTZZBzUc0uzutwFHkHXEnyWbbzub7F6l1wFv\nB57eqReb1etkiyzdRn7bGOALwP07PPW5vM0t+XYnk80jvoBdeK9XEREZOqz02gYiIiK7npk9Qrag\nzkfd/bKi54uIiMjQo06piIjsdma2/X6XryW7Tc0srdQqIiIyPNUUP0VERGTAvZVsWPEfgQ+pQyoi\nIjJ86UqpiIiIiIiIlI0WOhIREREREZGyUadUREREREREykadUhERERERESkbdUpFRERERESkbNQp\nFRERERERkbJRp1RERERERETKRp1SERERERERKRt1SkVERERERKRs1CkVERERERGRslGnVERERERE\nRMpGnVIREREREREpG3VKRUREREREpGzUKRURERHpJzO73My+GMTdzPbbBdvtc71m9joze2qg2yQi\nsrPUKZUhw8xea2b3mtlGM1tvZveY2dHlblfEzO4ysy1m1mZmrWa22MwuMLNRO1HHLvmgIyJSycxs\nmZltNrNNZvaCmV1lZnvuqu25+4fc/aK+lDWzQ8zs9vzc1ZKfC04b6DbueL5w99+6+wEDvR0RkZ2l\nTqkMCWY2FlgA/BcwAZgK/DOwdRdsq2aAq/yYu9cBjcCngHOAW83MBng7IiLDzVvcfU/gCOBI4LO7\nYiNmVt3PKn4O/ArYG5gM/APQ2t92iYhUCnVKZajYH8Ddr3H3Lnff7O63u/sjAGZWZWZfMLPlZrbG\nzH5oZuPy2AlmtrJnZfk37G/Kf/8nM/uZmf3IzFqB95hZtZl9zsyeza9yLjaz6fnzDzSzX+XfeD9l\n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\nH4IKwPskSy/IAAAAAElFTkSuQmCC\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f18a0c74250>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"fig = plt.figure(1, (15, 6))\n", | |
"fig.suptitle('ESMPy Periodic Grids', fontsize=14, fontweight='bold')\n", | |
"\n", | |
"ax = fig.add_subplot(1, 2, 1)\n", | |
"im = ax.imshow(sourcefield.data, vmin=0, vmax=2, cmap='gist_ncar', aspect='auto',\n", | |
" extent=[min(lon_in), max(lon_in), min(lat_in), max(lat_in)])\n", | |
"ax.set_xbound(lower=min(lon_in), upper=max(lon_in))\n", | |
"ax.set_ybound(lower=min(lat_in), upper=max(lat_in))\n", | |
"ax.set_xlabel(\"Longitude\")\n", | |
"ax.set_ylabel(\"Latitude\")\n", | |
"ax.set_title(\"Source Data\")\n", | |
"\n", | |
"ax = fig.add_subplot(1, 2, 2)\n", | |
"im = ax.imshow(destfield.data, vmin=0, vmax=2, cmap='gist_ncar', aspect='auto',\n", | |
" extent=[min(lon_out), max(lon_out), min(lat_out), max(lat_out)])\n", | |
"ax.set_xlabel(\"Longitude\")\n", | |
"ax.set_ylabel(\"Latitude\")\n", | |
"ax.set_title(\"Regrid Solution\")\n", | |
"\n", | |
"fig.subplots_adjust(right=0.8)\n", | |
"cbar_ax = fig.add_axes([0.9, 0.1, 0.01, 0.8])\n", | |
"fig.colorbar(im, cax=cbar_ax)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 2", | |
"language": "python", | |
"name": "python2" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 2 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython2", | |
"version": "2.7.13" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment