Skip to content

Commit

Permalink
v3.0.3 Update
Browse files Browse the repository at this point in the history
  • Loading branch information
kylejgillett committed Mar 24, 2024
1 parent d086a62 commit d638dfe
Show file tree
Hide file tree
Showing 56 changed files with 314 additions and 2,454 deletions.
4 changes: 2 additions & 2 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2024 Kyle J Gillett
Copyright (c) [2024] [KYLE J GILLETT]

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand All @@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
SOFTWARE.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
</div>

# SounderPy, the vertical profile data retrieval and analysis tool for Python
LATEST VERSION: v3.0.2 | RELEASED: March, 2024 | COPYRIGHT Kyle J Gillett, 2023, 2024
LATEST VERSION: v3.0.3 | RELEASED: March, 2024 | COPYRIGHT Kyle J Gillett, 2023, 2024

A Python package that helps you to access and plot vertical profile data for meteorological analysis

Expand Down Expand Up @@ -157,7 +157,7 @@ SounderPy has been used by several institutions. For example, this tool has been

in AMS format:

- Gillett, K., 2024: SounderPy: Vertical Profile Data Retrieval & Analysis Tool for Python (Version 3.0.2). Py-Pi, https://pypi.org/project/sounderpy/
- Gillett, K., 2024: SounderPy: Vertical Profile Data Retrieval & Analysis Tool for Python (Version 3.0.3). Py-Pi, https://pypi.org/project/sounderpy/

------

Expand Down
68 changes: 41 additions & 27 deletions build/lib/sounderpy/plot.py
Original file line number Diff line number Diff line change
Expand Up @@ -343,7 +343,8 @@ def mag_round(param, dec):
trans, _, _ = skew.ax.get_yaxis_text1_transform(0)
skew.ax.text(0.048, intrp['pINTRP'][key], f"{int(intrp['zINTRP'][key]/1000)}km",
fontsize=13, transform=trans, alpha=0.6, weight='bold', color=gen_txt_clr)


trans, _, _ = skew.ax.get_yaxis_text1_transform(0)
sfc = mpcalc.height_to_pressure_std(general['elevation']*units.m)
skew.ax.text(0.048, p[0], '-SFC-', fontsize=13, transform=trans, alpha=0.6, weight='bold', color=gen_txt_clr) # plot 'SFC' @ surface pressure

Expand Down Expand Up @@ -624,12 +625,13 @@ def mag_round(param, dec):
#################################################################
### ADD HODOGRAPH ANNOTATION ###
#################################################################
if ma.is_masked(kinem['sm_u']) == False:
if ma.is_masked(kinem['sm_rm']) == False:
# BUNKERS STORM MOTION
h.ax.text((kinem['sm_rm'][0]+0.5), (kinem['sm_rm'][1]-0.5), 'RM', weight='bold', ha='left', fontsize=14, alpha=0.9, color=gen_txt_clr)
h.ax.text((kinem['sm_lm'][0]+0.5), (kinem['sm_lm'][1]-0.5), 'LM', weight='bold', ha='left', fontsize=14, alpha=0.9, color=gen_txt_clr)
h.ax.text((kinem['sm_mw'][0]+0.5), (kinem['sm_mw'][1]-0.5), 'MW', weight='bold', ha='left', fontsize=14, alpha=0.9, color=gen_txt_clr)

if ma.is_masked(kinem['sm_u']) == False:
# DEVIANT TORNADO MOTION
h.ax.text(kinem['dtm'][0], (kinem['dtm'][1] + 2), 'DTM', weight='bold', fontsize=10, color='brown', ha='center')
h.plot(kinem['dtm'][0], kinem['dtm'][1], marker='v', color='brown', markersize=8, alpha=0.8, ls='', label='DEVIANT TORNADO MOTION')
Expand Down Expand Up @@ -1341,6 +1343,7 @@ def mag_round(param, dec):
skew.ax.text(0.048, intrp['pINTRP'][key], f"{int(intrp['zINTRP'][key]/1000)}km",
fontsize=13, transform=trans, alpha=0.6, weight='bold', color=gen_txt_clr)

trans, _, _ = skew.ax.get_yaxis_text1_transform(0)
sfc = mpcalc.height_to_pressure_std(general['elevation']*units.m)
skew.ax.text(0.048, p[0], '-SFC-', fontsize=13, transform=trans, alpha=0.6, weight='bold', color=gen_txt_clr) # plot 'SFC' @ surface pressure

Expand Down Expand Up @@ -1523,12 +1526,13 @@ def mag_round(param, dec):
#################################################################
### ADD HODOGRAPH ANNOTATION ###
#################################################################
if ma.is_masked(kinem['sm_u']) == False:
if ma.is_masked(kinem['sm_rm']) == False:
# BUNKERS STORM MOTION
h.ax.text((kinem['sm_rm'][0]+0.5), (kinem['sm_rm'][1]-0.5), 'RM', weight='bold', ha='left', fontsize=10, alpha=0.9, color=gen_txt_clr)
h.ax.text((kinem['sm_lm'][0]+0.5), (kinem['sm_lm'][1]-0.5), 'LM', weight='bold', ha='left', fontsize=10, alpha=0.9, color=gen_txt_clr)
h.ax.text((kinem['sm_mw'][0]+0.5), (kinem['sm_mw'][1]-0.5), 'MW', weight='bold', ha='left', fontsize=10, alpha=0.9, color=gen_txt_clr)

if ma.is_masked(kinem['sm_u']) == False:
# DEVIANT TORNADO MOTION
h.ax.text(kinem['dtm'][0], (kinem['dtm'][1] + 2), 'DTM', weight='bold', fontsize=8, color='brown', ha='center')
h.plot(kinem['dtm'][0], kinem['dtm'][1], marker='v', color='brown', markersize=5, alpha=0.8, ls='', label='DEVIANT TORNADO MOTION')
Expand Down Expand Up @@ -1923,32 +1927,37 @@ def mag_round(param, dec):
#################################################################
### ADD HODOGRAPH ANNOTATION ###
#################################################################
if ma.is_masked(kinem['sm_u']) == False:
if ma.is_masked(kinem['sm_rm']) == False:
# BUNKERS STORM MOTION
if sr_hodo == False:
h.ax.text((kinem['sm_rm'][0]+0.5), (kinem['sm_rm'][1]-0.5), 'RM', weight='bold', ha='left', fontsize=14, alpha=0.9, color=gen_txt_clr)
h.ax.text((kinem['sm_lm'][0]+0.5), (kinem['sm_lm'][1]-0.5), 'LM', weight='bold', ha='left', fontsize=14, alpha=0.9, color=gen_txt_clr)
h.ax.text((kinem['sm_mw'][0]+0.5), (kinem['sm_mw'][1]-0.5), 'MW', weight='bold', ha='left', fontsize=14, alpha=0.9, color=gen_txt_clr)
elif sr_hodo == True:
h.ax.text((kinem['sm_lm'][0] - kinem['sm_u'] +0.5), (kinem['sm_lm'][1] - kinem['sm_v'] -0.5), 'LM', weight='bold', ha='left', fontsize=14, alpha=0.9, color=gen_txt_clr)
h.ax.text((kinem['sm_mw'][0] - kinem['sm_u'] +0.5), (kinem['sm_mw'][1] - kinem['sm_v'] -0.5), 'MW', weight='bold', ha='left', fontsize=14, alpha=0.9, color=gen_txt_clr)


if ma.is_masked(kinem['sm_u']) == False:
# ADD SM POINT IF ITS A CUSTOM STORM MOTION
if str(type(storm_motion)) == "<class 'list'>":
h.ax.text((kinem['sm_u']+0.5), (kinem['sm_v']-0.5), 'SM', weight='bold', ha='left', fontsize=14, alpha=0.9, color=gen_txt_clr)

h.ax.arrow(0,0,kinem['sm_u']-0.3, kinem['sm_v']-0.3, linewidth=3, color=gen_txt_clr, alpha=0.2,
label='SM Vector', length_includes_head=True, head_width=0.5)

# ADD SM POINT IF ITS A CUSTOM STORM MOTION
if str(type(storm_motion)) == "<class 'list'>":
h.ax.text((kinem['sm_u']+0.5), (kinem['sm_v']-0.5), 'SM', weight='bold', ha='left', fontsize=14, alpha=0.9, color=gen_txt_clr)

h.ax.arrow(0,0,kinem['sm_u']-0.3, kinem['sm_v']-0.3, linewidth=3, color=gen_txt_clr, alpha=0.2,
label='SM Vector', length_includes_head=True, head_width=0.5)

if sr_hodo == False:
# DEVIANT TORNADO MOTION
h.ax.text(kinem['dtm'][0], (kinem['dtm'][1] + 2), 'DTM', weight='bold', fontsize=10, color='brown', ha='center')
h.plot(kinem['dtm'][0], kinem['dtm'][1], marker='v', color='brown', markersize=8, alpha=0.8, ls='', label='DEVIANT TORNADO MOTION')

elif sr_hodo == True:
h.ax.text((kinem['sm_lm'][0] - kinem['sm_u'] +0.5), (kinem['sm_lm'][1] - kinem['sm_v'] -0.5), 'LM', weight='bold', ha='left', fontsize=14, alpha=0.9, color=gen_txt_clr)
h.ax.text((kinem['sm_mw'][0] - kinem['sm_u'] +0.5), (kinem['sm_mw'][1] - kinem['sm_v'] -0.5), 'MW', weight='bold', ha='left', fontsize=14, alpha=0.9, color=gen_txt_clr)
# DEVIANT TORNADO MOTION
h.ax.text(kinem['dtm'][0] - kinem['sm_u'], (kinem['dtm'][1] - kinem['sm_v'] + 2), 'DTM', weight='bold', fontsize=10, color='brown', ha='center')
h.plot(kinem['dtm'][0] - kinem['sm_u'], kinem['dtm'][1] - kinem['sm_v'], marker='v', color='brown', markersize=8, alpha=0.8, ls='', label='DEVIANT TORNADO MOTION')



# EFFECTIVE INFLOW LAYER SRH FILL
if sr_hodo == False:
if ma.is_masked(kinem['eil_z'][0]) == False:
Expand Down Expand Up @@ -2298,10 +2307,10 @@ def sm_str(storm_motion, speeds, directions):
plt.figtext( 1.116, 0.59, f"{mag(thermo['mu3cape'])} J/kg", fontsize=15, color='red', weight='bold')
#MLCAPE
plt.figtext( 0.815, 0.56, f'ML:', weight='bold', fontsize=15, color=gen_txt_clr)
plt.figtext( 0.86, 0.56, f"{mag(thermo['mu_ecape'])} J/kg", fontsize=15, color='darkred', weight='bold')
plt.figtext( 0.95, 0.56, f"{mag(thermo['mucape'])} J/kg", fontsize=15, color='darkred', weight='bold')
plt.figtext( 1.035, 0.56, f"{mag(thermo['mu6cape'])} J/kg", fontsize=15, color='darkred', weight='bold')
plt.figtext( 1.116, 0.56, f"{mag(thermo['mu3cape'])} J/kg", fontsize=15, color='darkred', weight='bold')
plt.figtext( 0.86, 0.56, f"{mag(thermo['ml_ecape'])} J/kg", fontsize=15, color='darkred', weight='bold')
plt.figtext( 0.95, 0.56, f"{mag(thermo['mlcape'])} J/kg", fontsize=15, color='darkred', weight='bold')
plt.figtext( 1.035, 0.56, f"{mag(thermo['ml6cape'])} J/kg", fontsize=15, color='darkred', weight='bold')
plt.figtext( 1.116, 0.56, f"{mag(thermo['ml3cape'])} J/kg", fontsize=15, color='darkred', weight='bold')
# NCAPE
plt.figtext( 0.86, 0.49, f"MUNCAPE:", weight='bold', fontsize=15, color=gen_txt_clr)
plt.figtext( 0.943, 0.49, f" {mag(thermo['mu_ncape'])} J/kg", fontsize=15, color='brown', alpha=0.7, weight='bold')
Expand Down Expand Up @@ -2933,32 +2942,37 @@ def mag_round(param, dec):
#################################################################
### ADD HODOGRAPH ANNOTATION ###
#################################################################
if ma.is_masked(kinem['sm_u']) == False:
if ma.is_masked(kinem['sm_rm']) == False:
# BUNKERS STORM MOTION
if sr_hodo == False:
h.ax.text((kinem['sm_rm'][0]+0.5), (kinem['sm_rm'][1]-0.5), 'RM', weight='bold', ha='left', fontsize=14, alpha=0.9, color=gen_txt_clr)
h.ax.text((kinem['sm_lm'][0]+0.5), (kinem['sm_lm'][1]-0.5), 'LM', weight='bold', ha='left', fontsize=14, alpha=0.9, color=gen_txt_clr)
h.ax.text((kinem['sm_mw'][0]+0.5), (kinem['sm_mw'][1]-0.5), 'MW', weight='bold', ha='left', fontsize=14, alpha=0.9, color=gen_txt_clr)
elif sr_hodo == True:
h.ax.text((kinem['sm_lm'][0] - kinem['sm_u'] +0.5), (kinem['sm_lm'][1] - kinem['sm_v'] -0.5), 'LM', weight='bold', ha='left', fontsize=14, alpha=0.9, color=gen_txt_clr)
h.ax.text((kinem['sm_mw'][0] - kinem['sm_u'] +0.5), (kinem['sm_mw'][1] - kinem['sm_v'] -0.5), 'MW', weight='bold', ha='left', fontsize=14, alpha=0.9, color=gen_txt_clr)


if ma.is_masked(kinem['sm_u']) == False:
# ADD SM POINT IF ITS A CUSTOM STORM MOTION
if str(type(storm_motion)) == "<class 'list'>":
h.ax.text((kinem['sm_u']+0.5), (kinem['sm_v']-0.5), 'SM', weight='bold', ha='left', fontsize=14, alpha=0.9, color=gen_txt_clr)

h.ax.arrow(0,0,kinem['sm_u']-0.3, kinem['sm_v']-0.3, linewidth=3, color=gen_txt_clr, alpha=0.2,
label='SM Vector', length_includes_head=True, head_width=0.5)

# ADD SM POINT IF ITS A CUSTOM STORM MOTION
if str(type(storm_motion)) == "<class 'list'>":
h.ax.text((kinem['sm_u']+0.5), (kinem['sm_v']-0.5), 'SM', weight='bold', ha='left', fontsize=14, alpha=0.9, color=gen_txt_clr)

h.ax.arrow(0,0,kinem['sm_u']-0.3, kinem['sm_v']-0.3, linewidth=3, color=gen_txt_clr, alpha=0.2,
label='SM Vector', length_includes_head=True, head_width=0.5)

if sr_hodo == False:
# DEVIANT TORNADO MOTION
h.ax.text(kinem['dtm'][0], (kinem['dtm'][1] + 2), 'DTM', weight='bold', fontsize=10, color='brown', ha='center')
h.plot(kinem['dtm'][0], kinem['dtm'][1], marker='v', color='brown', markersize=8, alpha=0.8, ls='', label='DEVIANT TORNADO MOTION')

elif sr_hodo == True:
h.ax.text((kinem['sm_lm'][0] - kinem['sm_u'] +0.5), (kinem['sm_lm'][1] - kinem['sm_v'] -0.5), 'LM', weight='bold', ha='left', fontsize=14, alpha=0.9, color=gen_txt_clr)
h.ax.text((kinem['sm_mw'][0] - kinem['sm_u'] +0.5), (kinem['sm_mw'][1] - kinem['sm_v'] -0.5), 'MW', weight='bold', ha='left', fontsize=14, alpha=0.9, color=gen_txt_clr)
# DEVIANT TORNADO MOTION
h.ax.text(kinem['dtm'][0] - kinem['sm_u'], (kinem['dtm'][1] - kinem['sm_v'] + 2), 'DTM', weight='bold', fontsize=10, color='brown', ha='center')
h.plot(kinem['dtm'][0] - kinem['sm_u'], kinem['dtm'][1] - kinem['sm_v'], marker='v', color='brown', markersize=8, alpha=0.8, ls='', label='DEVIANT TORNADO MOTION')



# EFFECTIVE INFLOW LAYER
if sr_hodo == False:
ebot = h.ax.plot((kinem['sm_u'], intrp['uINTRP'][0]), (kinem['sm_v'], intrp['vINTRP'][0]),
Expand Down
4 changes: 2 additions & 2 deletions build/lib/sounderpy/sounderpy.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
THIS RELEASE
-------
Version: 3.0.2 | March 2024
Version: 3.0.3 | March 2024
DOCUMENTATION
-------
Expand All @@ -66,7 +66,7 @@
citation_text = f"""
## ---------------------------------- SOUNDERPY ----------------------------------- ##
## Vertical Profile Data Retrieval and Analysis Tool For Python ##
## v3.0.2 | Mar. 2024 | (C) Kyle J Gillett ##
## v3.0.3 | Mar. 2024 | (C) Kyle J Gillett ##
## Docs: https://kylejgillett.github.io/sounderpy/ ##
## --------------------- THANK YOU FOR USING THIS PACKAGE! ------------------------ ##
"""
Expand Down
2 changes: 1 addition & 1 deletion docs/.buildinfo
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 342e2972998d3aedf0d6561c14ec40bc
config: 5507d37a6a56424e8fe8ee5586070556
tags: 645f666f9bcd5a90fca523b33c5a78b7
2 changes: 1 addition & 1 deletion docs/_sources/about.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ Citing SounderPy


in AMS format:
Gillett, K., 2024: SounderPy: Vertical Profile Data Retrieval & Analysis Tool for Python (Version 3.0.2). Py-Pi, https://pypi.org/project/sounderpy/
Gillett, K., 2024: SounderPy: Vertical Profile Data Retrieval & Analysis Tool for Python (Version 3.0.3). Py-Pi, https://pypi.org/project/sounderpy/


***************************************************************
Expand Down
2 changes: 1 addition & 1 deletion docs/_sources/acars_data_example.ipynb.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
"\n",
"## ---------------------------------- SOUNDERPY ----------------------------------- ##\n",
"## Vertical Profile Data Retrieval and Analysis Tool For Python ##\n",
"## v3.0.2 | Mar. 2024 | (C) Kyle J Gillett ##\n",
"## v3.0.3 | Mar. 2024 | (C) Kyle J Gillett ##\n",
"## Docs: https://kylejgillett.github.io/sounderpy/ ##\n",
"## --------------------- THANK YOU FOR USING THIS PACKAGE! ------------------------ ##\n",
"\n"
Expand Down
2 changes: 1 addition & 1 deletion docs/_sources/bufkit_data_example.ipynb.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
"\n",
"## ---------------------------------- SOUNDERPY ----------------------------------- ##\n",
"## Vertical Profile Data Retrieval and Analysis Tool For Python ##\n",
"## v3.0.2 | Mar. 2024 | (C) Kyle J Gillett ##\n",
"## v3.0.3 | Mar. 2024 | (C) Kyle J Gillett ##\n",
"## Docs: https://kylejgillett.github.io/sounderpy/ ##\n",
"## --------------------- THANK YOU FOR USING THIS PACKAGE! ------------------------ ##\n",
"\n"
Expand Down
2 changes: 1 addition & 1 deletion docs/_sources/composite_example.ipynb.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
"\n",
"## ---------------------------------- SOUNDERPY ----------------------------------- ##\n",
"## Vertical Profile Data Retrieval and Analysis Tool For Python ##\n",
"## v3.0.2 | Mar. 2024 | (C) Kyle J Gillett ##\n",
"## v3.0.3 | Mar. 2024 | (C) Kyle J Gillett ##\n",
"## Docs: https://kylejgillett.github.io/sounderpy/ ##\n",
"## --------------------- THANK YOU FOR USING THIS PACKAGE! ------------------------ ##\n",
"\n"
Expand Down
2 changes: 1 addition & 1 deletion docs/_sources/custom_data_example.ipynb.txt
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@
"\n",
"## ---------------------------------- SOUNDERPY ----------------------------------- ##\n",
"## Vertical Profile Data Retrieval and Analysis Tool For Python ##\n",
"## v3.0.2 | Mar. 2024 | (C) Kyle J Gillett ##\n",
"## v3.0.3 | Mar. 2024 | (C) Kyle J Gillett ##\n",
"## Docs: https://kylejgillett.github.io/sounderpy/ ##\n",
"## --------------------- THANK YOU FOR USING THIS PACKAGE! ------------------------ ##\n",
"\n"
Expand Down
2 changes: 1 addition & 1 deletion docs/_sources/hodograph_example.ipynb.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
"\n",
"## ---------------------------------- SOUNDERPY ----------------------------------- ##\n",
"## Vertical Profile Data Retrieval and Analysis Tool For Python ##\n",
"## v3.0.2 | Mar. 2024 | (C) Kyle J Gillett ##\n",
"## v3.0.3 | Mar. 2024 | (C) Kyle J Gillett ##\n",
"## Docs: https://kylejgillett.github.io/sounderpy/ ##\n",
"## --------------------- THANK YOU FOR USING THIS PACKAGE! ------------------------ ##\n",
"\n"
Expand Down
12 changes: 6 additions & 6 deletions docs/_sources/plottingdata.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -308,7 +308,7 @@ Custom Storm Motions
Parcel Logic
------------

New to v3.0.2, the 'parcel-update', is a complex scheme for computing and plotting advanced parcels using various adiabatic ascent schemes and entrainment schemes. This toolkit comes from `Amelia Urquhart's <https://github.com/a-urq/ecape-parcel-py>`_ ``ecape-parcels`` Python package, which is based on work by `Peters et. al. 2022 <https://journals.ametsoc.org/view/journals/atsc/79/3/JAS-D-21-0118.1.xml>`_.
New to v3.0.2+, the 'parcel-update', is a complex scheme for computing and plotting advanced parcels using various adiabatic ascent schemes and entrainment schemes. This toolkit comes from `Amelia Urquhart's <https://github.com/a-urq/ecape-parcel-py>`_ ``ecape-parcels`` Python package, which is based on work by `Peters et. al. 2022 <https://journals.ametsoc.org/view/journals/atsc/79/3/JAS-D-21-0118.1.xml>`_.

When plotting soundings, users can choose from a number of parcel types to compute and plot, such as...

Expand All @@ -334,7 +334,7 @@ When plotting a `full` sounding using the ``build_sounding()`` function, use the

.. code-block:: python
special_parcels = [[sb_ia_ecape], [sb_ps_ecape, sb_ps_cape]]
special_parcels = [["sb_ia_ecape"], ["sb_ps_ecape", "sb_ps_cape"]]
By default, SounderPy will plot normal MU/ML/SB-CAPE parcels and an mu_ia_ecape parcel. You can override this by setting ``special_parcels`` to 'simple', which only plots the common MU/ML/SB-CAPE parcels. This is greatly reduce the plot-time!
Expand Down Expand Up @@ -362,10 +362,10 @@ Note the struture of the 'parcel key': ``sb_ia_ecape``. This is broken into thre


- Examples:
- ``sb_ia_ecape``: surface-based irreversible adiabatic entraining CAPE
- ``mu_ps_cape``: most-unstable pseudoadiabatic CAPE
- ``ml_ia_cape``: mixed-layer irreversible adiabatic CAPE
- ``sb_ps_ecape``: surface-based pseudoadiabatic entraining CAPE
- ``'sb_ia_ecape'``: surface-based irreversible adiabatic entraining CAPE
- ``'mu_ps_cape'``: most-unstable pseudoadiabatic CAPE
- ``'ml_ia_cape'``: mixed-layer irreversible adiabatic CAPE
- ``'sb_ps_ecape'``: surface-based pseudoadiabatic entraining CAPE



Expand Down

0 comments on commit d638dfe

Please sign in to comment.