forked from 3rdparty/wrf-python
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
2.0 KiB
62 lines
2.0 KiB
from __future__ import (absolute_import, division, print_function, |
|
unicode_literals) |
|
|
|
from .extension import computeavo, computepvo |
|
from .util import extract_vars, extract_global_attrs |
|
from .metadecorators import copy_and_set_metadata |
|
|
|
|
|
@copy_and_set_metadata(copy_varname="T", name="avo", |
|
description="absolute vorticity", |
|
units="10-5 s-1") |
|
def get_avo(wrfnc, timeidx=0, method="cat", squeeze=True, cache=None, |
|
meta=True): |
|
ncvars = extract_vars(wrfnc, timeidx, ("U", "V", "MAPFAC_U", |
|
"MAPFAC_V", "MAPFAC_M", |
|
"F"), |
|
method, squeeze, cache, meta=False) |
|
|
|
attrs = extract_global_attrs(wrfnc, attrs=("DX", "DY")) |
|
u = ncvars["U"] |
|
v = ncvars["V"] |
|
msfu = ncvars["MAPFAC_U"] |
|
msfv = ncvars["MAPFAC_V"] |
|
msfm = ncvars["MAPFAC_M"] |
|
cor = ncvars["F"] |
|
|
|
dx = attrs["DX"] |
|
dy = attrs["DY"] |
|
|
|
return computeavo(u, v, msfu, msfv, msfm, cor, dx, dy) |
|
|
|
|
|
@copy_and_set_metadata(copy_varname="T", name="pvo", |
|
description="potential vorticity", |
|
units="PVU") |
|
def get_pvo(wrfnc, timeidx=0, method="cat", squeeze=True, cache=None, |
|
meta=True): |
|
ncvars = extract_vars(wrfnc, timeidx, ("U", "V", "T", "P", |
|
"PB", "MAPFAC_U", |
|
"MAPFAC_V", "MAPFAC_M", |
|
"F"), |
|
method, squeeze, cache, meta=False) |
|
attrs = extract_global_attrs(wrfnc, attrs=("DX", "DY")) |
|
|
|
u = ncvars["U"] |
|
v = ncvars["V"] |
|
t = ncvars["T"] |
|
p = ncvars["P"] |
|
pb = ncvars["PB"] |
|
msfu = ncvars["MAPFAC_U"] |
|
msfv = ncvars["MAPFAC_V"] |
|
msfm = ncvars["MAPFAC_M"] |
|
cor = ncvars["F"] |
|
|
|
dx = attrs["DX"] |
|
dy = attrs["DY"] |
|
|
|
full_t = t + 300 |
|
full_p = p + pb |
|
|
|
return computepvo(u, v, full_t, full_p, msfu, msfv, msfm, cor, dx, dy) |
|
|