热力诊断分析计算thermal
<p>[TOC]</p>
<h1>位温计算</h1>
<p>利用压强和温度计算位温,代码示例如下:</p>
<pre><code class="language-python">potential_temperature(pres, tmp)</code></pre>
<p><font size="4"><b>参数说明</b></font></p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">pres</td>
<td style="text-align: left;"><font color="red">是</font></td>
<td style="text-align: left;">stda</td>
<td style="text-align: left;">total atmospheric pressure</td>
</tr>
<tr>
<td style="text-align: left;">tmp</td>
<td style="text-align: left;"><font color="red">是</font></td>
<td style="text-align: left;">stda</td>
<td style="text-align: left;">air temperature</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th style="text-align: left;">返回值</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">stda</td>
<td style="text-align: left;">STDA标准格式的位温数据</td>
</tr>
</tbody>
</table>
<p><font size="4"><b>调用示例</b></font></p>
<pre><code class="language-python">import datetime
from metdig.io.cassandra import get_model_grid
from metdig.utl import utl_stda_grid
from metdig.cal import thermal
init_time = datetime.datetime(2020, 7, 25, 8)
fhour = 0
tmp = get_model_grid(init_time=init_time, fhour=fhour, model_name=&#039;ecmwf&#039;, var_name=&#039;tmp&#039;, level=500)
pres = utl_stda_grid.gridstda_full_like(tmp, 500, var_name=&#039;pres&#039;)
thta = thermal.potential_temperature(pres, tmp)
print(thta)</code></pre>
<p><font size="4"><b>输出信息</b></font></p>
<pre><code class="language-python">&lt;xarray.DataArray (member: 1, level: 1, time: 1, dtime: 1, lat: 451, lon: 901)&gt;
array([[[[[[52.90152 , 52.939606, 52.95865 , ..., 52.5968 ,
52.634888, 52.615845],
[53.03485 , 53.03485 , 53.03485 , ..., 52.539642,
52.57773 , 52.5968 ],
[53.168182, 53.111023, 53.072937, ..., 52.5968 ,
52.692017, 52.730103],
...,
[40.21692 , 40.197845, 40.197845, ..., 31.20813 ,
31.151001, 31.093872],
[40.178802, 40.15976 , 40.15976 , ..., 30.808167,
30.789124, 30.77008 ],
[40.083588, 40.10263 , 40.10263 , ..., 30.503448,
30.44629 , 30.370117]]]]]], dtype=float32)
Coordinates:
* member (member) int32 0
* level (level) int32 500
* time (time) datetime64[ns] 2020-07-25T08:00:00
* dtime (dtime) int32 0
* lat (lat) float64 -10.0 -9.8 -9.6 -9.4 -9.2 ... 79.4 79.6 79.8 80.0
* lon (lon) float64 0.0 0.2 0.4 0.6 0.8 ... 179.2 179.4 179.6 179.8 180.0
Attributes:
var_name: thta
var_cn_name: 位温
var_units: degC
valid_time: 0
data_source:
data_type:
model_name: </code></pre>
<h1>相当位温计算</h1>
<p>利用压强、温度和露点温度计算相当位温,代码示例如下:</p>
<pre><code class="language-python">equivalent_potential_temperature(pres, tmp, td)</code></pre>
<p><font size="4"><b>参数说明</b></font></p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">pres</td>
<td style="text-align: left;"><font color="red">是</font></td>
<td style="text-align: left;">stda</td>
<td style="text-align: left;">total atmospheric pressure</td>
</tr>
<tr>
<td style="text-align: left;">tmp</td>
<td style="text-align: left;"><font color="red">是</font></td>
<td style="text-align: left;">stda</td>
<td style="text-align: left;">temperature of parcel</td>
</tr>
<tr>
<td style="text-align: left;">td</td>
<td style="text-align: left;"><font color="red">是</font></td>
<td style="text-align: left;">stda</td>
<td style="text-align: left;">dewpoint of parcel</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th style="text-align: left;">返回值</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">stda</td>
<td style="text-align: left;">STDA标准格式的相当位温数据</td>
</tr>
</tbody>
</table>
<p><font size="4"><b>调用示例</b></font></p>
<pre><code class="language-python">import datetime
from metdig.io.cassandra import get_model_grid
from metdig.utl import utl_stda_grid
from metdig.cal import thermal
from metdig.cal import moisture
init_time = datetime.datetime(2020, 7, 25, 8)
fhour = 0
tmp = get_model_grid(init_time=init_time, fhour=fhour, model_name=&#039;ecmwf&#039;, var_name=&#039;tmp&#039;, level=500)
rh = get_model_grid(init_time=init_time, fhour=fhour, model_name=&#039;ecmwf&#039;, var_name=&#039;rh&#039;, level=500)
pres = utl_stda_grid.gridstda_full_like(tmp, 500, var_name=&#039;pres&#039;)
td = moisture.dewpoint_from_relative_humidity(tmp, rh)
thetae = thermal.equivalent_potential_temperature(pres, tmp, td)
print(thetae)</code></pre>
<p><font size="4"><b>输出信息</b></font></p>
<pre><code class="language-python">&lt;xarray.DataArray (member: 1, level: 1, time: 1, dtime: 1, lat: 451, lon: 901)&gt;
array([[[[[[326.93408, 326.97437, 326.99448, ..., 331.08023,
331.29755, 331.4378 ],
[327.07486, 327.07486, 327.07486, ..., 330.33978,
330.38907, 330.58075],
[327.21567, 327.15536, 327.11508, ..., 329.7424 ,
329.86166, 330.0792 ],
...,
[317.81677, 317.79193, 317.86267, ..., 307.48883,
307.4553 , 307.38504],
[317.69632, 317.74222, 317.74222, ..., 306.92703,
306.90387, 306.91632],
[317.50223, 317.52686, 317.52686, ..., 306.8708 ,
306.90405, 306.9126 ]]]]]], dtype=float32)
Coordinates:
* member (member) int32 0
* level (level) int32 500
* time (time) datetime64[ns] 2020-07-25T08:00:00
* dtime (dtime) int32 0
* lat (lat) float64 -10.0 -9.8 -9.6 -9.4 -9.2 ... 79.4 79.6 79.8 80.0
* lon (lon) float64 0.0 0.2 0.4 0.6 0.8 ... 179.2 179.4 179.6 179.8 180.0
Attributes:
var_name: thetae
var_cn_name: 相当位温
var_units: K
valid_time: 0
data_source:
data_type:
model_name: </code></pre>
<h1>体感温度计算</h1>
<p>利用温度、风速和水汽压计算体感温度,代码示例如下:</p>
<pre><code class="language-python">apparent_temperature(tmp, wsp, p_vapor)</code></pre>
<p><font size="4"><b>参数说明</b></font></p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">tmp</td>
<td style="text-align: left;"><font color="red">是</font></td>
<td style="text-align: left;">stda</td>
<td style="text-align: left;">temperature</td>
</tr>
<tr>
<td style="text-align: left;">wsp</td>
<td style="text-align: left;"><font color="red">是</font></td>
<td style="text-align: left;">stda</td>
<td style="text-align: left;">wind speed</td>
</tr>
<tr>
<td style="text-align: left;">p_vapor</td>
<td style="text-align: left;"><font color="red">是</font></td>
<td style="text-align: left;">stda</td>
<td style="text-align: left;">水汽压</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th style="text-align: left;">返回值</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">stda</td>
<td style="text-align: left;">STDA标准格式的体感温度数据</td>
</tr>
</tbody>
</table>
<p><font size="4"><b>调用示例</b></font></p>
<pre><code class="language-python">import datetime
from metdig.io.cassandra import get_model_grid
from metdig.utl import utl_stda_grid
from metdig.cal import thermal
from metdig.cal import moisture
from metdig.cal import other
init_time = datetime.datetime(2020, 7, 25, 8)
fhour = 0
tmp = get_model_grid(init_time=init_time, fhour=fhour, model_name=&#039;ecmwf&#039;, var_name=&#039;tmp&#039;, level=500)
rh = get_model_grid(init_time=init_time, fhour=fhour, model_name=&#039;ecmwf&#039;, var_name=&#039;rh&#039;, level=500)
u = get_model_grid(init_time=init_time, fhour=fhour, model_name=&#039;ecmwf&#039;, var_name=&#039;u&#039;, level=850)
v = get_model_grid(init_time=init_time, fhour=fhour, model_name=&#039;ecmwf&#039;, var_name=&#039;v&#039;, level=850)
p_vapor = moisture.cal_p_vapor(tmp, rh)
wsp = other.wind_speed(u, v)
at = thermal.apparent_temperature(tmp, wsp, p_vapor)
print(at)</code></pre>
<p><font size="4"><b>输出信息</b></font></p>
<pre><code class="language-python">&lt;xarray.DataArray (member: 1, level: 1, time: 1, dtime: 1, lat: 451, lon: 901)&gt;
array([[[[[[-10.699457, -10.787619, -10.929387, ..., -16.126759,
-16.103258, -16.150576],
[-10.773366, -10.919338, -11.126129, ..., -16.245356,
-16.248705, -16.283503],
[-10.85458 , -11.04358 , -11.243871, ..., -16.20225 ,
-16.238228, -16.318213],
...,
[-20.131031, -20.21096 , -20.289492, ..., -28.619764,
-28.68613 , -28.815514],
[-19.930542, -20.036661, -20.166481, ..., -29.087196,
-29.197119, -29.319246],
[-20.466015, -20.504986, -20.569614, ..., -30.18594 ,
-30.32087 , -30.474678]]]]]], dtype=float32)
Coordinates:
* member (member) int32 0
* level (level) int32 500
* time (time) datetime64[ns] 2020-07-25T08:00:00
* dtime (dtime) int32 0
* lat (lat) float64 -10.0 -9.8 -9.6 -9.4 -9.2 ... 79.4 79.6 79.8 80.0
* lon (lon) float64 0.0 0.2 0.4 0.6 0.8 ... 179.2 179.4 179.6 179.8 180.0
Attributes:
var_name: at
var_cn_name: 体感温度
var_units:
valid_time: 0
data_source:
data_type:
model_name: </code></pre>
<h1>饱和相当位温计算</h1>
<p>利用压强和温度计算饱和相当位温,代码示例如下:</p>
<pre><code class="language-python">saturation_equivalent_potential_temperature(pres, tmp)</code></pre>
<p><font size="4"><b>参数说明</b></font></p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">pres</td>
<td style="text-align: left;"><font color="red">是</font></td>
<td style="text-align: left;">stda</td>
<td style="text-align: left;">total atmospheric pressure</td>
</tr>
<tr>
<td style="text-align: left;">tmp</td>
<td style="text-align: left;"><font color="red">是</font></td>
<td style="text-align: left;">stda</td>
<td style="text-align: left;">air temperature</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th style="text-align: left;">返回值</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">stda</td>
<td style="text-align: left;">STDA标准格式的位温数据</td>
</tr>
</tbody>
</table>
<p><font size="4"><b>调用示例</b></font></p>
<pre><code class="language-python">import metdig
from datetime import datetime
import metdig.utl.utl_stda_grid as utl_stda_grid
from metdig.cal.thermal import saturation_equivalent_potential_temperature
tmp=metdig.io.get_model_grids(init_time=datetime(2022,1,7,8),fhours=[12,18],
data_source=&#039;cassandra&#039;,data_name=&#039;ecmwf&#039;,var_name=&#039;tmp&#039;,level=500)
pressure = utl_stda_grid.gridstda_full_like_by_levels(tmp, tmp.level.values.tolist())
thetaes=saturation_equivalent_potential_temperature(pressure,tmp)
print(thetaes)</code></pre>
<p><font size="4"><b>输出信息</b></font></p>
<pre><code class="language-python"></code></pre>
<h1>干静力能计算</h1>
<p>代码示例如下:</p>
<pre><code class="language-python">dry_static_energy(hgt,tmp)</code></pre>
<p><font size="4"><b>参数说明</b></font></p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">hgt</td>
<td style="text-align: left;"><font color="red">是</font></td>
<td style="text-align: left;">stda</td>
<td style="text-align: left;">Atmospheric height</td>
</tr>
<tr>
<td style="text-align: left;">tmp</td>
<td style="text-align: left;"><font color="red">是</font></td>
<td style="text-align: left;">stda</td>
<td style="text-align: left;">air temperature</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th style="text-align: left;">返回值</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">stda</td>
<td style="text-align: left;">STDA标准格式的干静力能数据</td>
</tr>
</tbody>
</table>
<p><font size="4"><b>调用示例</b></font></p>
<pre><code class="language-python">import metdig
from datetime import datetime,timedelta
# 起报时间
init_time = datetime(2023,5,4,8)
# 预报时效
fhours = [24]
# 层次
levels = [500]
hgt = metdig_io.cmadaas.get_model_3D_grids(data_name=&#039;ecmwf_hr&#039;,var_name=&#039;hgt&#039;,
init_time=init_time,fhours=fhours, extent = [70,140,10,60], levels=levels)
tmp = metdig_io.cmadaas.get_model_3D_grids(data_name=&#039;ecmwf_hr&#039;,var_name=&#039;tmp&#039;,
init_time=init_time,fhours=fhours, extent = [70,140,10,60], levels=levels)
dse = metdig.cal.thermal.dry_static_energy(hgt, tmp)
print(dse)</code></pre>
<p><font size="4"><b>输出信息</b></font></p>
<pre><code class="language-python">&lt;xarray.DataArray &#039;drsteg&#039; (member: 1, level: 1, time: 1, dtime: 1, lat: 251,
lon: 351)&gt;
array([[[[[[328.51773, 328.39215, 328.2352 , ..., 327.99664,
327.9604 , 327.6935 ],
[328.62274, 328.51285, 328.29303, ..., 328.05457,
328.08594, 327.9506 ],
[328.65414, 328.6384 , 328.42944, ..., 328.07025,
328.12323, 328.0663 ],
...,
[308.3468 , 308.26242, 308.22025, ..., 302.75452,
302.93213, 303.1617 ],
[308.41357, 308.33997, 308.235 , ..., 302.84872,
303.042 , 303.24017],
[308.2556 , 308.3233 , 308.2968 , ..., 303.0685 ,
303.24606, 303.38147]]]]]], dtype=float32)
Coordinates:
* level (level) int64 500
* dtime (dtime) int32 24
* time (time) datetime64[ns] 2023-05-04T08:00:00
* member (member) object &#039;ecmwf_hr&#039;
* lat (lat) float64 10.0 10.2 10.4 10.6 10.8 ... 59.2 59.4 59.6 59.8 60.0
* lon (lon) float64 70.0 70.2 70.4 70.6 70.8 ... 139.4 139.6 139.8 140.0
Attributes:
data_source:
level_type:
...
var_cn_name: 干静力能
var_units: kJ/kg
valid_time: 0</code></pre>
<h1>湿静力能计算</h1>
<p>代码示例如下:</p>
<pre><code class="language-python">moist_static_energy(hgt,tmp, spfh)</code></pre>
<p><font size="4"><b>参数说明</b></font></p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">hgt</td>
<td style="text-align: left;"><font color="red">是</font></td>
<td style="text-align: left;">stda</td>
<td style="text-align: left;">Atmospheric height</td>
</tr>
<tr>
<td style="text-align: left;">tmp</td>
<td style="text-align: left;"><font color="red">是</font></td>
<td style="text-align: left;">stda</td>
<td style="text-align: left;">air temperature</td>
</tr>
<tr>
<td style="text-align: left;">spfh</td>
<td style="text-align: left;"><font color="red">是</font></td>
<td style="text-align: left;">stda</td>
<td style="text-align: left;">specific_humidity</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th style="text-align: left;">返回值</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">stda</td>
<td style="text-align: left;">STDA标准格式的湿静力能数据</td>
</tr>
</tbody>
</table>
<p><font size="4"><b>调用示例</b></font></p>
<pre><code class="language-python">import metdig
from datetime import datetime,timedelta
# 起报时间
init_time = datetime(2023,5,4,8)
# 预报时效
fhours = [24]
# 层次
levels = [500]
hgt = metdig_io.cmadaas.get_model_3D_grids(data_name=&#039;ecmwf_hr&#039;,var_name=&#039;hgt&#039;,
init_time=init_time,fhours=fhours, extent = [70,140,10,60], levels=levels)
tmp = metdig_io.cmadaas.get_model_3D_grids(data_name=&#039;ecmwf_hr&#039;,var_name=&#039;tmp&#039;,
init_time=init_time,fhours=fhours, extent = [70,140,10,60], levels=levels)
rh = metdig_io.cmadaas.get_model_3D_grids(data_name=&#039;ecmwf_hr&#039;,var_name=&#039;rh&#039;,
init_time=init_time,fhours=fhours, extent = [70,140,10,60], levels=levels)
td = metdig.cal.dewpoint_from_relative_humidity(tmp, rh)
pres = metdig.utl.gridstda_full_like_by_levels(tmp, tmp[&#039;level&#039;].values)
spfh = metdig.cal.specific_humidity_from_dewpoint(pres, td)
mse = metdig.cal.thermal.moist_static_energy(hgt, tmp, spfh)
print(mse)</code></pre>
<p><font size="4"><b>输出信息</b></font></p>
<pre><code class="language-python">&lt;xarray.DataArray &#039;mosteg&#039; (member: 1, level: 1, time: 1, dtime: 1, lat: 251,
lon: 351)&gt;
array([[[[[[329.34653, 329.43677, 329.8569 , ..., 337.9237 ,
337.7213 , 338.59152],
[329.3825 , 329.41684, 329.70032, ..., 337.59686,
337.36243, 337.49734],
[329.26373, 329.47495, 329.62726, ..., 337.04797,
337.28775, 336.69434],
...,
[310.54642, 310.44412, 310.39304, ..., 303.0698 ,
303.15903, 303.3795 ],
[310.76086, 310.54858, 310.37054, ..., 303.07404,
303.25766, 303.48685],
[310.8465 , 310.78748, 310.6138 , ..., 303.27127,
303.4794 , 303.6867 ]]]]]], dtype=float32)
Coordinates:
* level (level) int64 500
* dtime (dtime) int32 24
* time (time) datetime64[ns] 2023-05-04T08:00:00
* member (member) object &#039;ecmwf_hr&#039;
* lat (lat) float64 10.0 10.2 10.4 10.6 10.8 ... 59.2 59.4 59.6 59.8 60.0
* lon (lon) float64 70.0 70.2 70.4 70.6 70.8 ... 139.4 139.6 139.8 140.0
Attributes:
data_source:
...
var_cn_name: 湿静力能
var_units: kJ/kg
valid_time: 0</code></pre>