Created
November 7, 2017 21:35
-
-
Save rokuingh/058e1bc6e08c4d5e33f37657bcfb13d6 to your computer and use it in GitHub Desktop.
Retrieving Grid cell areas via Field
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 Grid Cell Area Calculation" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 1, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "'7.1.0 beta snapshot'" | |
| ] | |
| }, | |
| "execution_count": 1, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "import numpy as np\n", | |
| "import ESMF\n", | |
| "ESMF.__version__" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "source": [ | |
| "## Make fake grid" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 2, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "(array([-114., -102., -90., -78., -66., -54., -42., -30., -18.,\n", | |
| " -6., 6., 18., 30., 42., 54., 66., 78., 90.,\n", | |
| " 102., 114.]),\n", | |
| " array([-120., -108., -96., -84., -72., -60., -48., -36., -24.,\n", | |
| " -12., 0., 12., 24., 36., 48., 60., 72., 84.,\n", | |
| " 96., 108., 120.]),\n", | |
| " array([-57., -51., -45., -39., -33., -27., -21., -15., -9., -3., 3.,\n", | |
| " 9., 15., 21., 27., 33., 39., 45., 51., 57.]),\n", | |
| " array([-60., -54., -48., -42., -36., -30., -24., -18., -12., -6., 0.,\n", | |
| " 6., 12., 18., 24., 30., 36., 42., 48., 54., 60.]))" | |
| ] | |
| }, | |
| "execution_count": 2, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "lon = np.linspace(-114, 114, 20)\n", | |
| "lon_b = np.linspace(-120, 120, 21)\n", | |
| "lat = np.linspace(-57, 57, 20) # corners\n", | |
| "lat_b = np.linspace(-60, 60, 21)\n", | |
| "lon, lon_b, lat, lat_b" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "## Create Grid object" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "sourcegrid = ESMF.Grid(np.array([20,20]), \n", | |
| " staggerloc = ESMF.StaggerLoc.CENTER,\n", | |
| " coord_sys = ESMF.CoordSys.SPH_DEG)\n", | |
| "\n", | |
| "source_lon = sourcegrid.get_coords(0)\n", | |
| "source_lat = sourcegrid.get_coords(1)\n", | |
| "source_lon[...], source_lat[...] = np.meshgrid(lon, lat)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "## Add corners\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 4, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "sourcegrid.add_coords(staggerloc = ESMF.StaggerLoc.CORNER_VCENTER)\n", | |
| "\n", | |
| "source_lat_b = sourcegrid.get_coords(coord_dim = 1, \n", | |
| " staggerloc = ESMF.StaggerLoc.CORNER)\n", | |
| "source_lon_b = sourcegrid.get_coords(coord_dim = 0, \n", | |
| " staggerloc = ESMF.StaggerLoc.CORNER)\n", | |
| "\n", | |
| "source_lon_b[...], source_lat_b[...] = np.meshgrid(lon_b, lat_b)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "## Retrieve areas\n", | |
| "\n", | |
| "ESMF can only retrieve areas for the cells of a Grid via the Field class. The \"add_user_area\" parameter in the Grid constructor is used to specify customized grid cell areas for a Grid created from file only. Regardless, the Grid.area property is not yet hooked up to the values retrieved via Field.. that is confusing, sorry about that! " | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 5, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([[ 0.01189147, 0.01189147, 0.01189147, 0.01189147, 0.01189147,\n", | |
| " 0.01189147, 0.01189147, 0.01189147, 0.01189147, 0.01189147,\n", | |
| " 0.01189147, 0.01189147, 0.01189147, 0.01189147, 0.01189147,\n", | |
| " 0.01189147, 0.01189147, 0.01189147, 0.01189147, 0.01189147],\n", | |
| " [ 0.01375531, 0.01375531, 0.01375531, 0.01375531, 0.01375531,\n", | |
| " 0.01375531, 0.01375531, 0.01375531, 0.01375531, 0.01375531,\n", | |
| " 0.01375531, 0.01375531, 0.01375531, 0.01375531, 0.01375531,\n", | |
| " 0.01375531, 0.01375531, 0.01375531, 0.01375531, 0.01375531],\n", | |
| " [ 0.01547311, 0.01547311, 0.01547311, 0.01547311, 0.01547311,\n", | |
| " 0.01547311, 0.01547311, 0.01547311, 0.01547311, 0.01547311,\n", | |
| " 0.01547311, 0.01547311, 0.01547311, 0.01547311, 0.01547311,\n", | |
| " 0.01547311, 0.01547311, 0.01547311, 0.01547311, 0.01547311],\n", | |
| " [ 0.0170251 , 0.0170251 , 0.0170251 , 0.0170251 , 0.0170251 ,\n", | |
| " 0.0170251 , 0.0170251 , 0.0170251 , 0.0170251 , 0.0170251 ,\n", | |
| " 0.0170251 , 0.0170251 , 0.0170251 , 0.0170251 , 0.0170251 ,\n", | |
| " 0.0170251 , 0.0170251 , 0.0170251 , 0.0170251 , 0.0170251 ],\n", | |
| " [ 0.01839297, 0.01839297, 0.01839297, 0.01839297, 0.01839297,\n", | |
| " 0.01839297, 0.01839297, 0.01839297, 0.01839297, 0.01839297,\n", | |
| " 0.01839297, 0.01839297, 0.01839297, 0.01839297, 0.01839297,\n", | |
| " 0.01839297, 0.01839297, 0.01839297, 0.01839297, 0.01839297],\n", | |
| " [ 0.01956018, 0.01956018, 0.01956018, 0.01956018, 0.01956018,\n", | |
| " 0.01956018, 0.01956018, 0.01956018, 0.01956018, 0.01956018,\n", | |
| " 0.01956018, 0.01956018, 0.01956018, 0.01956018, 0.01956018,\n", | |
| " 0.01956018, 0.01956018, 0.01956018, 0.01956018, 0.01956018],\n", | |
| " [ 0.0205123 , 0.0205123 , 0.0205123 , 0.0205123 , 0.0205123 ,\n", | |
| " 0.0205123 , 0.0205123 , 0.0205123 , 0.0205123 , 0.0205123 ,\n", | |
| " 0.0205123 , 0.0205123 , 0.0205123 , 0.0205123 , 0.0205123 ,\n", | |
| " 0.0205123 , 0.0205123 , 0.0205123 , 0.0205123 , 0.0205123 ],\n", | |
| " [ 0.02123732, 0.02123732, 0.02123732, 0.02123732, 0.02123732,\n", | |
| " 0.02123732, 0.02123732, 0.02123732, 0.02123732, 0.02123732,\n", | |
| " 0.02123732, 0.02123732, 0.02123732, 0.02123732, 0.02123732,\n", | |
| " 0.02123732, 0.02123732, 0.02123732, 0.02123732, 0.02123732],\n", | |
| " [ 0.02172596, 0.02172596, 0.02172596, 0.02172596, 0.02172596,\n", | |
| " 0.02172596, 0.02172596, 0.02172596, 0.02172596, 0.02172596,\n", | |
| " 0.02172596, 0.02172596, 0.02172596, 0.02172596, 0.02172596,\n", | |
| " 0.02172596, 0.02172596, 0.02172596, 0.02172596, 0.02172596],\n", | |
| " [ 0.02197188, 0.02197188, 0.02197188, 0.02197188, 0.02197188,\n", | |
| " 0.02197188, 0.02197188, 0.02197188, 0.02197188, 0.02197188,\n", | |
| " 0.02197188, 0.02197188, 0.02197188, 0.02197188, 0.02197188,\n", | |
| " 0.02197188, 0.02197188, 0.02197188, 0.02197188, 0.02197188],\n", | |
| " [ 0.02197188, 0.02197188, 0.02197188, 0.02197188, 0.02197188,\n", | |
| " 0.02197188, 0.02197188, 0.02197188, 0.02197188, 0.02197188,\n", | |
| " 0.02197188, 0.02197188, 0.02197188, 0.02197188, 0.02197188,\n", | |
| " 0.02197188, 0.02197188, 0.02197188, 0.02197188, 0.02197188],\n", | |
| " [ 0.02172596, 0.02172596, 0.02172596, 0.02172596, 0.02172596,\n", | |
| " 0.02172596, 0.02172596, 0.02172596, 0.02172596, 0.02172596,\n", | |
| " 0.02172596, 0.02172596, 0.02172596, 0.02172596, 0.02172596,\n", | |
| " 0.02172596, 0.02172596, 0.02172596, 0.02172596, 0.02172596],\n", | |
| " [ 0.02123732, 0.02123732, 0.02123732, 0.02123732, 0.02123732,\n", | |
| " 0.02123732, 0.02123732, 0.02123732, 0.02123732, 0.02123732,\n", | |
| " 0.02123732, 0.02123732, 0.02123732, 0.02123732, 0.02123732,\n", | |
| " 0.02123732, 0.02123732, 0.02123732, 0.02123732, 0.02123732],\n", | |
| " [ 0.0205123 , 0.0205123 , 0.0205123 , 0.0205123 , 0.0205123 ,\n", | |
| " 0.0205123 , 0.0205123 , 0.0205123 , 0.0205123 , 0.0205123 ,\n", | |
| " 0.0205123 , 0.0205123 , 0.0205123 , 0.0205123 , 0.0205123 ,\n", | |
| " 0.0205123 , 0.0205123 , 0.0205123 , 0.0205123 , 0.0205123 ],\n", | |
| " [ 0.01956018, 0.01956018, 0.01956018, 0.01956018, 0.01956018,\n", | |
| " 0.01956018, 0.01956018, 0.01956018, 0.01956018, 0.01956018,\n", | |
| " 0.01956018, 0.01956018, 0.01956018, 0.01956018, 0.01956018,\n", | |
| " 0.01956018, 0.01956018, 0.01956018, 0.01956018, 0.01956018],\n", | |
| " [ 0.01839297, 0.01839297, 0.01839297, 0.01839297, 0.01839297,\n", | |
| " 0.01839297, 0.01839297, 0.01839297, 0.01839297, 0.01839297,\n", | |
| " 0.01839297, 0.01839297, 0.01839297, 0.01839297, 0.01839297,\n", | |
| " 0.01839297, 0.01839297, 0.01839297, 0.01839297, 0.01839297],\n", | |
| " [ 0.0170251 , 0.0170251 , 0.0170251 , 0.0170251 , 0.0170251 ,\n", | |
| " 0.0170251 , 0.0170251 , 0.0170251 , 0.0170251 , 0.0170251 ,\n", | |
| " 0.0170251 , 0.0170251 , 0.0170251 , 0.0170251 , 0.0170251 ,\n", | |
| " 0.0170251 , 0.0170251 , 0.0170251 , 0.0170251 , 0.0170251 ],\n", | |
| " [ 0.01547311, 0.01547311, 0.01547311, 0.01547311, 0.01547311,\n", | |
| " 0.01547311, 0.01547311, 0.01547311, 0.01547311, 0.01547311,\n", | |
| " 0.01547311, 0.01547311, 0.01547311, 0.01547311, 0.01547311,\n", | |
| " 0.01547311, 0.01547311, 0.01547311, 0.01547311, 0.01547311],\n", | |
| " [ 0.01375531, 0.01375531, 0.01375531, 0.01375531, 0.01375531,\n", | |
| " 0.01375531, 0.01375531, 0.01375531, 0.01375531, 0.01375531,\n", | |
| " 0.01375531, 0.01375531, 0.01375531, 0.01375531, 0.01375531,\n", | |
| " 0.01375531, 0.01375531, 0.01375531, 0.01375531, 0.01375531],\n", | |
| " [ 0.01189147, 0.01189147, 0.01189147, 0.01189147, 0.01189147,\n", | |
| " 0.01189147, 0.01189147, 0.01189147, 0.01189147, 0.01189147,\n", | |
| " 0.01189147, 0.01189147, 0.01189147, 0.01189147, 0.01189147,\n", | |
| " 0.01189147, 0.01189147, 0.01189147, 0.01189147, 0.01189147]])" | |
| ] | |
| }, | |
| "execution_count": 5, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "sourcegridareafield = ESMF.Field(sourcegrid)\n", | |
| "sourcegridareafield.get_area()\n", | |
| "sourcegridareafield.data" | |
| ] | |
| }, | |
| { | |
| "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