{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from wrf.extension import _slp" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from wrf import getvar\n", "from netCDF4 import Dataset as nc\n", "ncfile = nc(\"/Users/ladwig/Documents/wrf_files/wrf_vortex_multi/wrfout_d01_2005-08-28_00:00:00\")\n", "b = getvar([ncfile,ncfile,ncfile], \"slp\", timeidx=None)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "print(b)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "b = getvar([ncfile,ncfile,ncfile], \"td\", None)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "print(b)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "b = getvar([ncfile,ncfile,ncfile], \"tk\", None)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "print(b)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "b = getvar([ncfile,ncfile,ncfile], \"rh\", None)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "print (b)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# 500 MB Heights\n", "from wrf import getvar, interplevel\n", "\n", "z = getvar([ncfile,ncfile,ncfile], \"z\", timeidx=None)\n", "p = getvar([ncfile,ncfile,ncfile], \"pressure\", timeidx=None)\n", "ht_500mb = interplevel(z, p, 500)\n", "\n", "print(ht_500mb)\n", "del ht_500mb, z, p" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Pressure using pivot and angle\n", "from wrf import getvar, vertcross\n", "\n", "z = getvar(ncfile, \"z\", timeidx=None)\n", "p = getvar(ncfile, \"pressure\", timeidx=None)\n", "pivot_point = (z.shape[-2] / 2, z.shape[-1] / 2) \n", "angle = 90.0\n", "\n", "p_vert = vertcross(p, z, pivot_point=pivot_point, angle=angle)\n", "print(p_vert)\n", "del p_vert\n", "\n", "# Pressure using start_point and end_point\n", "start_point = (z.shape[-2]/2, 0)\n", "end_point = (z.shape[-2]/2, -1)\n", "\n", "p_vert = vertcross(p, z, start_point=start_point, end_point=end_point)\n", "print(p_vert)\n", "del p_vert, p, z\n" ] }, { "cell_type": "raw", "metadata": {}, "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# T2 using pivot and angle\n", "from wrf import interpline, getvar\n", "\n", "t2 = getvar([ncfile,ncfile,ncfile], \"T2\", timeidx=None)\n", "pivot_point = (t2.shape[-2] / 2, t2.shape[-1] / 2) \n", "angle = 90.0\n", "\n", "t2_line = interpline(t2, pivot_point=pivot_point, angle=angle)\n", "print(t2_line)\n", "\n", "del t2_line\n", "\n", "# T2 using start_point and end_point\n", "start_point = (t2.shape[-2]/2, 0)\n", "end_point = (t2.shape[-2]/2, -1)\n", "\n", "t2_line = interpline(t2, start_point=start_point, end_point=end_point)\n", "print(t2_line)\n", "\n", "del t2_line, t2" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from wrf import getvar\n", "from netCDF4 import Dataset as nc\n", "lambertnc = nc(\"/Users/ladwig/Documents/wrf_files/wrfout_d01_2010-06-13_21:00:00\")\n", "uvmet = getvar([lambertnc,lambertnc], \"uvmet\", timeidx=None)\n", "uvmet10 = getvar([lambertnc,lambertnc], \"uvmet10\", timeidx=None)\n", "uv_wspd_wdir = getvar([lambertnc,lambertnc], \"wspd_wdir_uvmet\", timeidx=None)\n", "uv_wspd_wdir10 = getvar([lambertnc,lambertnc], \"wspd_wdir_uvmet10\", timeidx=None)\n", "wspd_wdir = getvar([lambertnc,lambertnc], \"wspd_wdir\", timeidx=None)\n", "wspd_wdir10 = getvar([lambertnc,lambertnc], \"wspd_wdir10\", timeidx=None)\n", "print (uvmet)\n", "print (uvmet10)\n", "print (uv_wspd_wdir)\n", "print (uv_wspd_wdir10)\n", "print (wspd_wdir)\n", "print (wspd_wdir10)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from wrf import (ALL_TIMES, npvalues, Constants, getvar, extract_vars, destagger, \n", " interp1d, interp2dxy, interpz3d, \n", " slp, tk, td, rh, uvmet, smooth2d)\n", "from netCDF4 import Dataset as nc\n", "\n", "wrfnc = nc(\"/Users/ladwig/Documents/wrf_files/wrf_vortex_multi/wrfout_d01_2005-08-28_00:00:00\")\n", "timeidx = ALL_TIMES\n", "method = \"cat\"\n", "squeeze = True\n", "cache = None\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "\n", "varnames=(\"T\", \"P\", \"PB\", \"QVAPOR\", \"PH\", \"PHB\")\n", "ncvars = extract_vars(wrfnc, timeidx, varnames, method, squeeze, cache,\n", " meta=True)\n", "\n", "t = ncvars[\"T\"]\n", "p = ncvars[\"P\"]\n", "pb = ncvars[\"PB\"]\n", "ph = ncvars[\"PH\"]\n", "phb = ncvars[\"PHB\"]\n", "\n", "\n", "ncvars = extract_vars(wrfnc, timeidx, (\"QVAPOR\",), method, squeeze, cache,\n", " meta=False)\n", "qvapor = ncvars[\"QVAPOR\"]\n", "\n", " \n", "full_t = t + Constants.T_BASE\n", "full_p = p + pb\n", "qvapor[qvapor < 0] = 0.\n", " \n", "full_ph = (ph + phb) / Constants.G\n", " \n", "destag_ph = destagger(full_ph, -3)\n", " \n", "_tk = tk(full_p, full_t)\n", "_slp = slp(destag_ph, _tk, full_p, qvapor)\n", "_td = td(full_p, qvapor)\n", "_smooth2d = smooth2d(npvalues(_slp), 3)\n", "\n", "_uvmet = getvar(wrfnc, \"uvmet\", timeidx=1)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "print (_tk)\n", "print (\"\\n\")\n", "print (_slp)\n", "print (\"\\n\")\n", "print (_td)\n", "print (\"\\n\")\n", "print (_smooth2d)\n", "print (_uvmet)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from wrf import (ALL_TIMES, npvalues, Constants, getvar, extract_vars, destagger, \n", " interp1d, interp2dxy, interpz3d, \n", " slp, tk, td, rh, uvmet, smooth2d, extract_global_attrs)\n", "from math import fabs, log, tan, sin, cos\n", "from wrf.util import either\n", "from netCDF4 import Dataset as nc\n", "\n", "wrfnc = nc(\"/Users/ladwig/Documents/wrf_files/wrfout_d01_2010-06-13_21:00:00\")\n", "wrfnc = [wrfnc, wrfnc, wrfnc]\n", "ten_m = True\n", "method = \"cat\"\n", "squeeze=True\n", "cache=None\n", "timeidx = ALL_TIMES\n", "\n", "if not ten_m:\n", " varname = either(\"U\", \"UU\")(wrfnc)\n", " u_vars = extract_vars(wrfnc, timeidx, varname, method, squeeze, cache,\n", " meta=True)\n", " \n", " #renamed = u_vars[varname].rename({\"west_east_stag\" : \"test\"})\n", " u = destagger(u_vars[varname], -1, meta=True)\n", " #print (renamed)\n", " #u = destagger(renamed, -1, meta=True)\n", " #print (u)\n", "\n", " varname = either(\"V\", \"VV\")(wrfnc)\n", " v_vars = extract_vars(wrfnc, timeidx, varname, method, squeeze, cache,\n", " meta=True)\n", " v = destagger(v_vars[varname], -2)\n", "else:\n", " varname = either(\"U10\", \"UU\")(wrfnc)\n", " u_vars = extract_vars(wrfnc, timeidx, varname, method, squeeze, cache,\n", " meta=True)\n", " u = (u_vars[varname] if varname == \"U10\" else \n", " destagger(u_vars[varname][...,0,:,:], -1)) \n", "\n", " varname = either(\"V10\", \"VV\")(wrfnc)\n", " v_vars = extract_vars(wrfnc, timeidx, varname, method, squeeze, cache,\n", " meta=True)\n", " v = (v_vars[varname] if varname == \"V10\" else \n", " destagger(v_vars[varname][...,0,:,:], -2))\n", "\n", "map_proj_attrs = extract_global_attrs(wrfnc, attrs=\"MAP_PROJ\")\n", "map_proj = map_proj_attrs[\"MAP_PROJ\"]\n", "\n", "# 1 - Lambert\n", "# 2 - Polar Stereographic\n", "# 3 - Mercator\n", "# 6 - Lat/Lon\n", "# Note: NCL has no code to handle other projections (0,4,5) as they \n", "# don't appear to be supported any longer\n", "\n", "if map_proj in (0,3,6):\n", " # No rotation needed for Mercator and Lat/Lon, but still need\n", " # u,v aggregated in to one array\n", "\n", " end_idx = -3 if not ten_m else -2\n", " resdim = (2,) + u.shape[0:end_idx] + u.shape[end_idx:]\n", "\n", " # Make a new output array for the result\n", " res = np.empty(resdim, u.dtype)\n", "\n", " # For 2D array, this makes (0,...,:,:) and (1,...,:,:)\n", " # For 3D array, this makes (0,...,:,:,:) and (1,...,:,:,:)\n", " idx0 = (0,) + (Ellipsis,) + (slice(None),)*(-end_idx)\n", " idx1 = (1,) + (Ellipsis,) + (slice(None),)*(-end_idx)\n", "\n", " res[idx0] = u[:]\n", " res[idx1] = v[:]\n", "\n", " result = res\n", "elif map_proj in (1,2):\n", " lat_attrs = extract_global_attrs(wrfnc, attrs=(\"TRUELAT1\",\n", " \"TRUELAT2\"))\n", " radians_per_degree = Constants.PI/180.0\n", " # Rotation needed for Lambert and Polar Stereographic\n", " true_lat1 = lat_attrs[\"TRUELAT1\"]\n", " true_lat2 = lat_attrs[\"TRUELAT2\"]\n", "\n", " try:\n", " lon_attrs = extract_global_attrs(wrfnc, attrs=\"STAND_LON\")\n", " except AttributeError:\n", " try:\n", " cen_lon_attrs = extract_global_attrs(wrfnc, attrs=\"CEN_LON\")\n", " except AttributeError:\n", " raise RuntimeError(\"longitude attributes not found in NetCDF\")\n", " else:\n", " cen_lon = cen_lon_attrs[\"CEN_LON\"]\n", " else:\n", " cen_lon = lon_attrs[\"STAND_LON\"]\n", "\n", "\n", " varname = either(\"XLAT_M\", \"XLAT\")(wrfnc)\n", " xlat_var = extract_vars(wrfnc, timeidx, varname, \n", " method, squeeze, cache, meta=True)\n", " lat = xlat_var[varname]\n", "\n", " varname = either(\"XLONG_M\", \"XLONG\")(wrfnc)\n", " xlon_var = extract_vars(wrfnc, timeidx, varname, \n", " method, squeeze, cache, meta=False)\n", " lon = xlon_var[varname]\n", "\n", " if map_proj == 1:\n", " if((fabs(true_lat1 - true_lat2) > 0.1) and\n", " (fabs(true_lat2 - 90.) > 0.1)): \n", " cone = (log(cos(true_lat1*radians_per_degree)) \n", " - log(cos(true_lat2*radians_per_degree)))\n", " cone = (cone / \n", " (log(tan((45.-fabs(true_lat1/2.))*radians_per_degree)) \n", " - log(tan((45.-fabs(true_lat2/2.))*radians_per_degree)))) \n", " else:\n", " cone = sin(fabs(true_lat1)*radians_per_degree)\n", " else:\n", " cone = 1\n", " \n", " result = uvmet(u, v, lat, lon, cen_lon, cone, meta=True)\n", " \n", "print (result)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "array([[[ 1284.37878418, 1286.88208008, 1288.14526367, ...,\n", " 1042.98413086, 1043.49230957, 1042.76550293],\n", " [ 1290.37072754, 1305.41650391, 1315.56066895, ...,\n", " 1058.42687988, 1054.85864258, 1048.94299316],\n", " [ 1297.45019531, 1319.68493652, 1332.59887695, ...,\n", " 1067.23571777, 1063.85803223, 1054.76965332],\n", " ..., \n", " [ 2282.65576172, 2248.74243164, 2226.04858398, ...,\n", " 680.19281006, 715.02349854, 752.45947266],\n", " [ 2261.47558594, 2233.76464844, 2212.33129883, ...,\n", " 673.80822754, 712.69897461, 748.10424805],\n", " [ 2241.63647461, 2225.63354492, 2209.28881836, ...,\n", " 665.93286133, 703.76361084, 743.64093018]],\n", "\n", " [[ 1284.37878418, 1286.88208008, 1288.14526367, ...,\n", " 1042.98413086, 1043.49230957, 1042.76550293],\n", " [ 1290.37072754, 1305.41650391, 1315.56066895, ...,\n", " 1058.42687988, 1054.85864258, 1048.94299316],\n", " [ 1297.45019531, 1319.68493652, 1332.59887695, ...,\n", " 1067.23571777, 1063.85803223, 1054.76965332],\n", " ..., \n", " [ 2282.65576172, 2248.74243164, 2226.04858398, ...,\n", " 680.19281006, 715.02349854, 752.45947266],\n", " [ 2261.47558594, 2233.76464844, 2212.33129883, ...,\n", " 673.80822754, 712.69897461, 748.10424805],\n", " [ 2241.63647461, 2225.63354492, 2209.28881836, ...,\n", " 665.93286133, 703.76361084, 743.64093018]]], dtype=float32)\n", "Coordinates:\n", " XLONG (south_north, west_east) float32 -127.749 -127.627 -127.504 ...\n", " XLAT (south_north, west_east) float32 13.69 13.726 13.7617 ...\n", " * Time (Time) datetime64[ns] 2010-06-13T21:00:00 2010-06-13T21:00:00\n", " * south_north (south_north) int64 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...\n", " * west_east (west_east) int64 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...\n", " datetime (Time) datetime64[ns] 2010-06-13T21:00:00 2010-06-13T21:00:00\n", "Attributes:\n", " FieldType: 104\n", " units: Pa\n", " stagger: \n", " coordinates: XLONG XLAT\n", " projection: LambertConformal(bottom_left=(13.69003, -127.74881), top_right=(53.277489, -53.45282), stand_lon=-101.0, moad_cen_lat=39.0000038147, pole_lat=90.0, pole_lon=0.0)\n", " PlotLevelID: 500 m\n", " missing_value: 9.96920996839e+36\n", " _FillValue: 9.96920996839e+36\n", "\n", "\n", "\n", "array([[ 0., 162.],\n", " [ 1., 162.],\n", " [ 2., 162.],\n", " [ 3., 162.],\n", " [ 4., 162.],\n", " [ 5., 162.],\n", " [ 6., 162.],\n", " [ 7., 162.],\n", " [ 8., 162.],\n", " [ 9., 162.],\n", " [ 10., 162.],\n", " [ 11., 162.],\n", " [ 12., 162.],\n", " [ 13., 162.],\n", " [ 14., 162.],\n", " [ 15., 162.],\n", " [ 16., 162.],\n", " [ 17., 162.],\n", " [ 18., 162.],\n", " [ 19., 162.],\n", " [ 20., 162.],\n", " [ 21., 162.],\n", " [ 22., 162.],\n", " [ 23., 162.],\n", " [ 24., 162.],\n", " [ 25., 162.],\n", " [ 26., 162.],\n", " [ 27., 162.],\n", " [ 28., 162.],\n", " [ 29., 162.],\n", " [ 30., 162.],\n", " [ 31., 162.],\n", " [ 32., 162.],\n", " [ 33., 162.],\n", " [ 34., 162.],\n", " [ 35., 162.],\n", " [ 36., 162.],\n", " [ 37., 162.],\n", " [ 38., 162.],\n", " [ 39., 162.],\n", " [ 40., 162.],\n", " [ 41., 162.],\n", " [ 42., 162.],\n", " [ 43., 162.],\n", " [ 44., 162.],\n", " [ 45., 162.],\n", " [ 46., 162.],\n", " [ 47., 162.],\n", " [ 48., 162.],\n", " [ 49., 162.],\n", " [ 50., 162.],\n", " [ 51., 162.],\n", " [ 52., 162.],\n", " [ 53., 162.],\n", " [ 54., 162.],\n", " [ 55., 162.],\n", " [ 56., 162.],\n", " [ 57., 162.],\n", " [ 58., 162.],\n", " [ 59., 162.],\n", " [ 60., 162.],\n", " [ 61., 162.],\n", " [ 62., 162.],\n", " [ 63., 162.],\n", " [ 64., 162.],\n", " [ 65., 162.],\n", " [ 66., 162.],\n", " [ 67., 162.],\n", " [ 68., 162.],\n", " [ 69., 162.],\n", " [ 70., 162.],\n", " [ 71., 162.],\n", " [ 72., 162.],\n", " [ 73., 162.],\n", " [ 74., 162.],\n", " [ 75., 162.],\n", " [ 76., 162.],\n", " [ 77., 162.],\n", " [ 78., 162.],\n", " [ 79., 162.],\n", " [ 80., 162.],\n", " [ 81., 162.],\n", " [ 82., 162.],\n", " [ 83., 162.],\n", " [ 84., 162.],\n", " [ 85., 162.],\n", " [ 86., 162.],\n", " [ 87., 162.],\n", " [ 88., 162.],\n", " [ 89., 162.],\n", " [ 90., 162.],\n", " [ 91., 162.],\n", " [ 92., 162.],\n", " [ 93., 162.],\n", " [ 94., 162.],\n", " [ 95., 162.],\n", " [ 96., 162.],\n", " [ 97., 162.],\n", " [ 98., 162.],\n", " [ 99., 162.],\n", " [ 100., 162.],\n", " [ 101., 162.],\n", " [ 102., 162.],\n", " [ 103., 162.],\n", " [ 104., 162.],\n", " [ 105., 162.],\n", " [ 106., 162.],\n", " [ 107., 162.],\n", " [ 108., 162.],\n", " [ 109., 162.],\n", " [ 110., 162.],\n", " [ 111., 162.],\n", " [ 112., 162.],\n", " [ 113., 162.],\n", " [ 114., 162.],\n", " [ 115., 162.],\n", " [ 116., 162.],\n", " [ 117., 162.],\n", " [ 118., 162.],\n", " [ 119., 162.],\n", " [ 120., 162.],\n", " [ 121., 162.],\n", " [ 122., 162.],\n", " [ 123., 162.],\n", " [ 124., 162.],\n", " [ 125., 162.],\n", " [ 126., 162.],\n", " [ 127., 162.],\n", " [ 128., 162.],\n", " [ 129., 162.],\n", " [ 130., 162.],\n", " [ 131., 162.],\n", " [ 132., 162.],\n", " [ 133., 162.],\n", " [ 134., 162.],\n", " [ 135., 162.],\n", " [ 136., 162.],\n", " [ 137., 162.],\n", " [ 138., 162.],\n", " [ 139., 162.],\n", " [ 140., 162.],\n", " [ 141., 162.],\n", " [ 142., 162.],\n", " [ 143., 162.],\n", " [ 144., 162.],\n", " [ 145., 162.],\n", " [ 146., 162.],\n", " [ 147., 162.],\n", " [ 148., 162.],\n", " [ 149., 162.],\n", " [ 150., 162.],\n", " [ 151., 162.],\n", " [ 152., 162.],\n", " [ 153., 162.],\n", " [ 154., 162.],\n", " [ 155., 162.],\n", " [ 156., 162.],\n", " [ 157., 162.],\n", " [ 158., 162.],\n", " [ 159., 162.],\n", " [ 160., 162.],\n", " [ 161., 162.],\n", " [ 162., 162.],\n", " [ 163., 162.],\n", " [ 164., 162.],\n", " [ 165., 162.],\n", " [ 166., 162.],\n", " [ 167., 162.],\n", " [ 168., 162.],\n", " [ 169., 162.],\n", " [ 170., 162.],\n", " [ 171., 162.],\n", " [ 172., 162.],\n", " [ 173., 162.],\n", " [ 174., 162.],\n", " [ 175., 162.],\n", " [ 176., 162.],\n", " [ 177., 162.],\n", " [ 178., 162.],\n", " [ 179., 162.],\n", " [ 180., 162.],\n", " [ 181., 162.],\n", " [ 182., 162.],\n", " [ 183., 162.],\n", " [ 184., 162.],\n", " [ 185., 162.],\n", " [ 186., 162.],\n", " [ 187., 162.],\n", " [ 188., 162.],\n", " [ 189., 162.],\n", " [ 190., 162.],\n", " [ 191., 162.],\n", " [ 192., 162.],\n", " [ 193., 162.],\n", " [ 194., 162.],\n", " [ 195., 162.],\n", " [ 196., 162.],\n", " [ 197., 162.],\n", " [ 198., 162.],\n", " [ 199., 162.],\n", " [ 200., 162.],\n", " [ 201., 162.],\n", " [ 202., 162.],\n", " [ 203., 162.],\n", " [ 204., 162.],\n", " [ 205., 162.],\n", " [ 206., 162.],\n", " [ 207., 162.],\n", " [ 208., 162.],\n", " [ 209., 162.],\n", " [ 210., 162.],\n", " [ 211., 162.],\n", " [ 212., 162.],\n", " [ 213., 162.],\n", " [ 214., 162.],\n", " [ 215., 162.],\n", " [ 216., 162.],\n", " [ 217., 162.],\n", " [ 218., 162.],\n", " [ 219., 162.],\n", " [ 220., 162.],\n", " [ 221., 162.],\n", " [ 222., 162.],\n", " [ 223., 162.],\n", " [ 224., 162.],\n", " [ 225., 162.],\n", " [ 226., 162.],\n", " [ 227., 162.],\n", " [ 228., 162.],\n", " [ 229., 162.],\n", " [ 230., 162.],\n", " [ 231., 162.],\n", " [ 232., 162.],\n", " [ 233., 162.],\n", " [ 234., 162.],\n", " [ 235., 162.],\n", " [ 236., 162.],\n", " [ 237., 162.],\n", " [ 238., 162.],\n", " [ 239., 162.],\n", " [ 240., 162.],\n", " [ 241., 162.],\n", " [ 242., 162.],\n", " [ 243., 162.],\n", " [ 244., 162.],\n", " [ 245., 162.],\n", " [ 246., 162.],\n", " [ 247., 162.],\n", " [ 248., 162.],\n", " [ 249., 162.],\n", " [ 250., 162.],\n", " [ 251., 162.],\n", " [ 252., 162.],\n", " [ 253., 162.],\n", " [ 254., 162.],\n", " [ 255., 162.],\n", " [ 256., 162.],\n", " [ 257., 162.],\n", " [ 258., 162.],\n", " [ 259., 162.],\n", " [ 260., 162.],\n", " [ 261., 162.],\n", " [ 262., 162.],\n", " [ 263., 162.],\n", " [ 264., 162.],\n", " [ 265., 162.],\n", " [ 266., 162.],\n", " [ 267., 162.],\n", " [ 268., 162.],\n", " [ 269., 162.],\n", " [ 270., 162.],\n", " [ 271., 162.],\n", " [ 272., 162.],\n", " [ 273., 162.],\n", " [ 274., 162.],\n", " [ 275., 162.],\n", " [ 276., 162.],\n", " [ 277., 162.],\n", " [ 278., 162.],\n", " [ 279., 162.],\n", " [ 280., 162.],\n", " [ 281., 162.],\n", " [ 282., 162.],\n", " [ 283., 162.],\n", " [ 284., 162.],\n", " [ 285., 162.],\n", " [ 286., 162.],\n", " [ 287., 162.],\n", " [ 288., 162.],\n", " [ 289., 162.],\n", " [ 290., 162.],\n", " [ 291., 162.],\n", " [ 292., 162.],\n", " [ 293., 162.],\n", " [ 294., 162.],\n", " [ 295., 162.],\n", " [ 296., 162.],\n", " [ 297., 162.],\n", " [ 298., 162.],\n", " [ 299., 162.],\n", " [ 300., 162.],\n", " [ 301., 162.],\n", " [ 302., 162.],\n", " [ 303., 162.],\n", " [ 304., 162.],\n", " [ 305., 162.],\n", " [ 306., 162.],\n", " [ 307., 162.],\n", " [ 308., 162.],\n", " [ 309., 162.],\n", " [ 310., 162.],\n", " [ 311., 162.],\n", " [ 312., 162.],\n", " [ 313., 162.],\n", " [ 314., 162.],\n", " [ 315., 162.],\n", " [ 316., 162.],\n", " [ 317., 162.],\n", " [ 318., 162.],\n", " [ 319., 162.],\n", " [ 320., 162.],\n", " [ 321., 162.],\n", " [ 322., 162.],\n", " [ 323., 162.],\n", " [ 324., 162.],\n", " [ 325., 162.],\n", " [ 326., 162.],\n", " [ 327., 162.],\n", " [ 328., 162.],\n", " [ 329., 162.],\n", " [ 330., 162.],\n", " [ 331., 162.],\n", " [ 332., 162.],\n", " [ 333., 162.],\n", " [ 334., 162.],\n", " [ 335., 162.],\n", " [ 336., 162.],\n", " [ 337., 162.],\n", " [ 338., 162.],\n", " [ 339., 162.],\n", " [ 340., 162.],\n", " [ 341., 162.],\n", " [ 342., 162.],\n", " [ 343., 162.],\n", " [ 344., 162.],\n", " [ 345., 162.],\n", " [ 346., 162.],\n", " [ 347., 162.],\n", " [ 348., 162.],\n", " [ 349., 162.],\n", " [ 350., 162.],\n", " [ 351., 162.],\n", " [ 352., 162.],\n", " [ 353., 162.],\n", " [ 354., 162.],\n", " [ 355., 162.],\n", " [ 356., 162.],\n", " [ 357., 162.],\n", " [ 358., 162.],\n", " [ 359., 162.],\n", " [ 360., 162.],\n", " [ 361., 162.],\n", " [ 362., 162.],\n", " [ 363., 162.],\n", " [ 364., 162.],\n", " [ 365., 162.],\n", " [ 366., 162.],\n", " [ 367., 162.],\n", " [ 368., 162.],\n", " [ 369., 162.],\n", " [ 370., 162.],\n", " [ 371., 162.],\n", " [ 372., 162.],\n", " [ 373., 162.],\n", " [ 374., 162.],\n", " [ 375., 162.],\n", " [ 376., 162.],\n", " [ 377., 162.],\n", " [ 378., 162.],\n", " [ 379., 162.],\n", " [ 380., 162.],\n", " [ 381., 162.],\n", " [ 382., 162.],\n", " [ 383., 162.],\n", " [ 384., 162.],\n", " [ 385., 162.],\n", " [ 386., 162.],\n", " [ 387., 162.],\n", " [ 388., 162.],\n", " [ 389., 162.],\n", " [ 390., 162.],\n", " [ 391., 162.],\n", " [ 392., 162.],\n", " [ 393., 162.],\n", " [ 394., 162.],\n", " [ 395., 162.],\n", " [ 396., 162.],\n", " [ 397., 162.],\n", " [ 398., 162.],\n", " [ 399., 162.],\n", " [ 400., 162.],\n", " [ 401., 162.],\n", " [ 402., 162.],\n", " [ 403., 162.],\n", " [ 404., 162.],\n", " [ 405., 162.],\n", " [ 406., 162.],\n", " [ 407., 162.],\n", " [ 408., 162.],\n", " [ 409., 162.],\n", " [ 410., 162.],\n", " [ 411., 162.],\n", " [ 412., 162.]])\n", "Coordinates:\n", " * x_y (x_y) \n", "array([[ 0., 162.],\n", " [ 1., 162.],\n", " [ 2., 162.],\n", " [ 3., 162.],\n", " [ 4., 162.],\n", " [ 5., 162.],\n", " [ 6., 162.],\n", " [ 7., 162.],\n", " [ 8., 162.],\n", " [ 9., 162.],\n", " [ 10., 162.],\n", " [ 11., 162.],\n", " [ 12., 162.],\n", " [ 13., 162.],\n", " [ 14., 162.],\n", " [ 15., 162.],\n", " [ 16., 162.],\n", " [ 17., 162.],\n", " [ 18., 162.],\n", " [ 19., 162.],\n", " [ 20., 162.],\n", " [ 21., 162.],\n", " [ 22., 162.],\n", " [ 23., 162.],\n", " [ 24., 162.],\n", " [ 25., 162.],\n", " [ 26., 162.],\n", " [ 27., 162.],\n", " [ 28., 162.],\n", " [ 29., 162.],\n", " [ 30., 162.],\n", " [ 31., 162.],\n", " [ 32., 162.],\n", " [ 33., 162.],\n", " [ 34., 162.],\n", " [ 35., 162.],\n", " [ 36., 162.],\n", " [ 37., 162.],\n", " [ 38., 162.],\n", " [ 39., 162.],\n", " [ 40., 162.],\n", " [ 41., 162.],\n", " [ 42., 162.],\n", " [ 43., 162.],\n", " [ 44., 162.],\n", " [ 45., 162.],\n", " [ 46., 162.],\n", " [ 47., 162.],\n", " [ 48., 162.],\n", " [ 49., 162.],\n", " [ 50., 162.],\n", " [ 51., 162.],\n", " [ 52., 162.],\n", " [ 53., 162.],\n", " [ 54., 162.],\n", " [ 55., 162.],\n", " [ 56., 162.],\n", " [ 57., 162.],\n", " [ 58., 162.],\n", " [ 59., 162.],\n", " [ 60., 162.],\n", " [ 61., 162.],\n", " [ 62., 162.],\n", " [ 63., 162.],\n", " [ 64., 162.],\n", " [ 65., 162.],\n", " [ 66., 162.],\n", " [ 67., 162.],\n", " [ 68., 162.],\n", " [ 69., 162.],\n", " [ 70., 162.],\n", " [ 71., 162.],\n", " [ 72., 162.],\n", " [ 73., 162.],\n", " [ 74., 162.],\n", " [ 75., 162.],\n", " [ 76., 162.],\n", " [ 77., 162.],\n", " [ 78., 162.],\n", " [ 79., 162.],\n", " [ 80., 162.],\n", " [ 81., 162.],\n", " [ 82., 162.],\n", " [ 83., 162.],\n", " [ 84., 162.],\n", " [ 85., 162.],\n", " [ 86., 162.],\n", " [ 87., 162.],\n", " [ 88., 162.],\n", " [ 89., 162.],\n", " [ 90., 162.],\n", " [ 91., 162.],\n", " [ 92., 162.],\n", " [ 93., 162.],\n", " [ 94., 162.],\n", " [ 95., 162.],\n", " [ 96., 162.],\n", " [ 97., 162.],\n", " [ 98., 162.],\n", " [ 99., 162.],\n", " [ 100., 162.],\n", " [ 101., 162.],\n", " [ 102., 162.],\n", " [ 103., 162.],\n", " [ 104., 162.],\n", " [ 105., 162.],\n", " [ 106., 162.],\n", " [ 107., 162.],\n", " [ 108., 162.],\n", " [ 109., 162.],\n", " [ 110., 162.],\n", " [ 111., 162.],\n", " [ 112., 162.],\n", " [ 113., 162.],\n", " [ 114., 162.],\n", " [ 115., 162.],\n", " [ 116., 162.],\n", " [ 117., 162.],\n", " [ 118., 162.],\n", " [ 119., 162.],\n", " [ 120., 162.],\n", " [ 121., 162.],\n", " [ 122., 162.],\n", " [ 123., 162.],\n", " [ 124., 162.],\n", " [ 125., 162.],\n", " [ 126., 162.],\n", " [ 127., 162.],\n", " [ 128., 162.],\n", " [ 129., 162.],\n", " [ 130., 162.],\n", " [ 131., 162.],\n", " [ 132., 162.],\n", " [ 133., 162.],\n", " [ 134., 162.],\n", " [ 135., 162.],\n", " [ 136., 162.],\n", " [ 137., 162.],\n", " [ 138., 162.],\n", " [ 139., 162.],\n", " [ 140., 162.],\n", " [ 141., 162.],\n", " [ 142., 162.],\n", " [ 143., 162.],\n", " [ 144., 162.],\n", " [ 145., 162.],\n", " [ 146., 162.],\n", " [ 147., 162.],\n", " [ 148., 162.],\n", " [ 149., 162.],\n", " [ 150., 162.],\n", " [ 151., 162.],\n", " [ 152., 162.],\n", " [ 153., 162.],\n", " [ 154., 162.],\n", " [ 155., 162.],\n", " [ 156., 162.],\n", " [ 157., 162.],\n", " [ 158., 162.],\n", " [ 159., 162.],\n", " [ 160., 162.],\n", " [ 161., 162.],\n", " [ 162., 162.],\n", " [ 163., 162.],\n", " [ 164., 162.],\n", " [ 165., 162.],\n", " [ 166., 162.],\n", " [ 167., 162.],\n", " [ 168., 162.],\n", " [ 169., 162.],\n", " [ 170., 162.],\n", " [ 171., 162.],\n", " [ 172., 162.],\n", " [ 173., 162.],\n", " [ 174., 162.],\n", " [ 175., 162.],\n", " [ 176., 162.],\n", " [ 177., 162.],\n", " [ 178., 162.],\n", " [ 179., 162.],\n", " [ 180., 162.],\n", " [ 181., 162.],\n", " [ 182., 162.],\n", " [ 183., 162.],\n", " [ 184., 162.],\n", " [ 185., 162.],\n", " [ 186., 162.],\n", " [ 187., 162.],\n", " [ 188., 162.],\n", " [ 189., 162.],\n", " [ 190., 162.],\n", " [ 191., 162.],\n", " [ 192., 162.],\n", " [ 193., 162.],\n", " [ 194., 162.],\n", " [ 195., 162.],\n", " [ 196., 162.],\n", " [ 197., 162.],\n", " [ 198., 162.],\n", " [ 199., 162.],\n", " [ 200., 162.],\n", " [ 201., 162.],\n", " [ 202., 162.],\n", " [ 203., 162.],\n", " [ 204., 162.],\n", " [ 205., 162.],\n", " [ 206., 162.],\n", " [ 207., 162.],\n", " [ 208., 162.],\n", " [ 209., 162.],\n", " [ 210., 162.],\n", " [ 211., 162.],\n", " [ 212., 162.],\n", " [ 213., 162.],\n", " [ 214., 162.],\n", " [ 215., 162.],\n", " [ 216., 162.],\n", " [ 217., 162.],\n", " [ 218., 162.],\n", " [ 219., 162.],\n", " [ 220., 162.],\n", " [ 221., 162.],\n", " [ 222., 162.],\n", " [ 223., 162.],\n", " [ 224., 162.],\n", " [ 225., 162.],\n", " [ 226., 162.],\n", " [ 227., 162.],\n", " [ 228., 162.],\n", " [ 229., 162.],\n", " [ 230., 162.],\n", " [ 231., 162.],\n", " [ 232., 162.],\n", " [ 233., 162.],\n", " [ 234., 162.],\n", " [ 235., 162.],\n", " [ 236., 162.],\n", " [ 237., 162.],\n", " [ 238., 162.],\n", " [ 239., 162.],\n", " [ 240., 162.],\n", " [ 241., 162.],\n", " [ 242., 162.],\n", " [ 243., 162.],\n", " [ 244., 162.],\n", " [ 245., 162.],\n", " [ 246., 162.],\n", " [ 247., 162.],\n", " [ 248., 162.],\n", " [ 249., 162.],\n", " [ 250., 162.],\n", " [ 251., 162.],\n", " [ 252., 162.],\n", " [ 253., 162.],\n", " [ 254., 162.],\n", " [ 255., 162.],\n", " [ 256., 162.],\n", " [ 257., 162.],\n", " [ 258., 162.],\n", " [ 259., 162.],\n", " [ 260., 162.],\n", " [ 261., 162.],\n", " [ 262., 162.],\n", " [ 263., 162.],\n", " [ 264., 162.],\n", " [ 265., 162.],\n", " [ 266., 162.],\n", " [ 267., 162.],\n", " [ 268., 162.],\n", " [ 269., 162.],\n", " [ 270., 162.],\n", " [ 271., 162.],\n", " [ 272., 162.],\n", " [ 273., 162.],\n", " [ 274., 162.],\n", " [ 275., 162.],\n", " [ 276., 162.],\n", " [ 277., 162.],\n", " [ 278., 162.],\n", " [ 279., 162.],\n", " [ 280., 162.],\n", " [ 281., 162.],\n", " [ 282., 162.],\n", " [ 283., 162.],\n", " [ 284., 162.],\n", " [ 285., 162.],\n", " [ 286., 162.],\n", " [ 287., 162.],\n", " [ 288., 162.],\n", " [ 289., 162.],\n", " [ 290., 162.],\n", " [ 291., 162.],\n", " [ 292., 162.],\n", " [ 293., 162.],\n", " [ 294., 162.],\n", " [ 295., 162.],\n", " [ 296., 162.],\n", " [ 297., 162.],\n", " [ 298., 162.],\n", " [ 299., 162.],\n", " [ 300., 162.],\n", " [ 301., 162.],\n", " [ 302., 162.],\n", " [ 303., 162.],\n", " [ 304., 162.],\n", " [ 305., 162.],\n", " [ 306., 162.],\n", " [ 307., 162.],\n", " [ 308., 162.],\n", " [ 309., 162.],\n", " [ 310., 162.],\n", " [ 311., 162.],\n", " [ 312., 162.],\n", " [ 313., 162.],\n", " [ 314., 162.],\n", " [ 315., 162.],\n", " [ 316., 162.],\n", " [ 317., 162.],\n", " [ 318., 162.],\n", " [ 319., 162.],\n", " [ 320., 162.],\n", " [ 321., 162.],\n", " [ 322., 162.]])\n", "Coordinates:\n", " * x_y (x_y) \n", "array([[[ 3167.0234375 , 3151.203125 , 3129.890625 , ...,\n", " 1585.2734375 , 1635.03125 , 1629.5234375 ],\n", " [ 3165.59375 , 3140.640625 , 3120.1875 , ...,\n", " 1586.25 , 1633.4140625 , 1623.125 ],\n", " [ 3146.46875 , 3124.3125 , 3105.953125 , ...,\n", " 1571.5234375 , 1615.1171875 , 1610.8828125 ],\n", " ..., \n", " [ 47.16455078, 44.47119141, 44.27294922, ...,\n", " 18.95068359, 19.76757812, 19.65283203],\n", " [ 26.86279297, 24.75195312, 24.64208984, ...,\n", " 10.53710938, 10.97021484, 10.92431641],\n", " [ 9.92041016, 7.88720703, 7.86523438, ...,\n", " 3.37207031, 3.5078125 , 3.48535156]],\n", "\n", " [[ 3167.0234375 , 3151.203125 , 3129.890625 , ...,\n", " 1585.2734375 , 1635.03125 , 1629.5234375 ],\n", " [ 3165.59375 , 3140.640625 , 3120.1875 , ...,\n", " 1586.25 , 1633.4140625 , 1623.125 ],\n", " [ 3146.46875 , 3124.3125 , 3105.953125 , ...,\n", " 1571.5234375 , 1615.1171875 , 1610.8828125 ],\n", " ..., \n", " [ 47.16455078, 44.47119141, 44.27294922, ...,\n", " 18.95068359, 19.76757812, 19.65283203],\n", " [ 26.86279297, 24.75195312, 24.64208984, ...,\n", " 10.53710938, 10.97021484, 10.92431641],\n", " [ 9.92041016, 7.88720703, 7.86523438, ...,\n", " 3.37207031, 3.5078125 , 3.48535156]]], dtype=float32)\n", "Coordinates:\n", " * Time (Time) datetime64[ns] 2010-06-13T21:00:00 2010-06-13T21:00:00\n", " * bottom_top (bottom_top) int64 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...\n", " datetime (Time) datetime64[ns] 2010-06-13T21:00:00 2010-06-13T21:00:00\n", " xy_loc (xy) object CoordPair(x=0.0, y=162.0) ...\n", " * xy (xy) int64 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...\n", "Attributes:\n", " description: perturbation pressure\n", " units: Pa\n", " Orientation: (0.0,162.0) to (322.0,162.0)\n", "\n", "\n", "\n", "array([[ 1398.91162109, 1371.33605957, 1342.515625 , 1284.37878418,\n", " 1155.76074219, 611.89489746],\n", " [ 1398.91162109, 1371.33605957, 1342.515625 , 1284.37878418,\n", " 1155.76074219, 611.89489746]], dtype=float32)\n", "Coordinates:\n", " * Time (Time) datetime64[ns] 2010-06-13T21:00:00 2010-06-13T21:00:00\n", " * z (z) float32 100.0 200.0 300.0 500.0 1000.0 5000.0\n", "Attributes:\n", " _FillValue: 9.96920996839e+36\n", " missing_value: 9.96920996839e+36\n", " description: perturbation pressure\n", " units: Pa\n", "\n", "\n" ] } ], "source": [ "import numpy as np\n", "from wrf import (ALL_TIMES, npvalues, Constants, getvar, extract_vars, destagger, \n", " interp1d, interp2dxy, interpz3d, \n", " slp, tk, td, rh, uvmet, smooth2d, extract_global_attrs, xy)\n", "from math import fabs, log, tan, sin, cos\n", "from wrf.util import either\n", "from netCDF4 import Dataset as nc\n", "\n", "timeidx = None\n", "wrfnc = nc(\"/Users/ladwig/Documents/wrf_files/wrfout_d01_2010-06-13_21:00:00\")\n", "\n", "wrfnc = [wrfnc, wrfnc]\n", "field3d = getvar(wrfnc, \"P\", timeidx, meta=True)\n", "\n", "z = getvar(wrfnc, \"z\", timeidx)\n", "\n", "interp = interpz3d(field3d, z, 500, missingval=Constants.DEFAULT_FILL, meta=True)\n", "print (interp)\n", "print (\"\\n\")\n", "\n", "# 2dxy test\n", "pivot_point = (field3d.shape[-1] / 2, field3d.shape[-2] / 2 ) \n", "angle = 90.0\n", "\n", "start_point = (0, z.shape[-2]/2)\n", "end_point = (-1, z.shape[-2]/2)\n", "\n", "#start_point = (0, 0)\n", "#end_point = (-1, -1)\n", "\n", "_xy = xy(field3d, pivot_point=pivot_point, angle=angle)\n", "print(_xy)\n", "print (\"\\n\")\n", "\n", "_xy = xy(field3d, start_point=start_point, end_point=end_point)\n", "print(_xy)\n", "print (\"\\n\")\n", "\n", "interpxy = interp2dxy(field3d, _xy)\n", "print (interpxy)\n", "print (\"\\n\")\n", "\n", "# 1D test\n", "only_height = [0]*field3d.ndim\n", "only_height[-3] = slice(None)\n", "only_height = (Ellipsis,) + tuple(only_height[-3:])\n", "\n", "v_in = field3d[only_height]\n", "z_in = z[only_height]\n", "z_out = np.asarray([100.,200.,300.,500.,1000.,5000.], field3d.dtype)\n", "\n", "int1d = interp1d(v_in, z_in, z_out, missingval=Constants.DEFAULT_FILL, meta=True)\n", "print(int1d)\n", "print (\"\\n\")\n" ] }, { "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.11" } }, "nbformat": 4, "nbformat_minor": 0 }