Created
November 1, 2017 02:02
-
-
Save JiaweiZhuang/67beed32e12773d94359f5fc7ed45265 to your computer and use it in GitHub Desktop.
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" | |
] | |
}, | |
{ | |
"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([-90., -86., -82., -78., -74., -70., -66., -62., -58., -54., -50.,\n", | |
" -46., -42., -38., -34., -30., -26., -22., -18., -14., -10., -6.,\n", | |
" -2., 2., 6., 10., 14., 18., 22., 26., 30., 34., 38.,\n", | |
" 42., 46., 50., 54., 58., 62., 66., 70., 74., 78., 82.,\n", | |
" 86., 90.]))" | |
] | |
}, | |
"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", | |
"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([-90., -86., -82., -78., -74., -70., -66., -62., -58., -54., -50.,\n", | |
" -46., -42., -38., -34., -30., -26., -22., -18., -14., -10., -6.,\n", | |
" -2., 2., 6., 10., 14., 18., 22., 26., 30., 34., 38.,\n", | |
" 42., 46., 50., 54., 58., 62., 66., 70., 74., 78., 82.,\n", | |
" 86., 90.]))" | |
] | |
}, | |
"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", | |
"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([lat_in.size, lon_in.size]), \n", | |
" staggerloc = ESMF.StaggerLoc.CENTER,\n", | |
" coord_sys = ESMF.CoordSys.SPH_DEG,\n", | |
" periodic_dim = 0)\n", | |
"\n", | |
"source_lon = sourcegrid.get_coords(0)\n", | |
"source_lat = sourcegrid.get_coords(1)\n", | |
"source_lon[...], source_lat[...] = np.meshgrid(lon_in, lat_in)" | |
] | |
}, | |
{ | |
"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([lat_out.size, lon_out.size]), \n", | |
" staggerloc = ESMF.StaggerLoc.CENTER,\n", | |
" coord_sys = ESMF.CoordSys.SPH_DEG,\n", | |
" periodic_dim = 0)\n", | |
"\n", | |
"dest_lon = destgrid.get_coords(0)\n", | |
"dest_lat = destgrid.get_coords(1)\n", | |
"dest_lon[...], dest_lat[...] = np.meshgrid(lon_out, lat_out)" | |
] | |
}, | |
{ | |
"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": {}, | |
"outputs": [], | |
"source": [ | |
"wave = lambda x,k: np.sin(x*k*np.pi/180.0)\n", | |
"sourcefield.data[...] = np.outer(wave(lat_in,3), wave(lon_in,3)) + 1" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.colorbar.Colorbar at 0x7fb73ceb4d30>" | |
] | |
}, | |
"execution_count": 10, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\nAAAAAElFTkSuQmCC\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7fb740cabcf8>" | |
] | |
}, | |
"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 0x7fb73cd12da0>" | |
] | |
}, | |
"execution_count": 12, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\nAAAASUVORK5CYII=\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7fb73ce83d68>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.pcolormesh(destfield.data, vmin=0, vmax=2)\n", | |
"plt.colorbar()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The output data at `lon=175` is empty. However, if ESMPy understood periodic grids, it should have been able to interpolate between `lon=180` and `1on=-170`" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([ 1.25095496, 0. , 0. , 0. , 0. ,\n", | |
" 0. , 0. , 0. , 0. , 0. ,\n", | |
" 0. , 0. , 0. , 0. , 0. ,\n", | |
" 0. , 0. , 0. , 0. , 0. ,\n", | |
" 0. , 0. , 0. , 0. , 0. ,\n", | |
" 0. , 0. , 0. , 0. , 0. ,\n", | |
" 0. , 0. , 0. , 0. , 0. ,\n", | |
" 0. , 0. , 0. , 0. , 0. ,\n", | |
" 0. , 0. , 0. , 0. , 0. , 1. ])" | |
] | |
}, | |
"execution_count": 13, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"destfield.data[:,-1] # almost all 0" | |
] | |
} | |
], | |
"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