mirror of
https://github.com/meteoinfo/MeteoInfo.git
synced 2025-12-08 20:36:05 +00:00
update meteolib functions
This commit is contained in:
parent
45ca566145
commit
d2de12c825
@ -1,30 +1,30 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<MeteoInfo File="milconfig.xml" Type="configurefile">
|
<MeteoInfo File="milconfig.xml" Type="configurefile">
|
||||||
<Path OpenPath="D:\Working\MIScript\Jython\mis\io\grib">
|
<Path OpenPath="D:\Working\MIScript\Jython\mis\meteo\wrf">
|
||||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\volume"/>
|
|
||||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\city"/>
|
|
||||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\contour"/>
|
|
||||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\streamplot"/>
|
|
||||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\isosurface"/>
|
|
||||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\surf"/>
|
|
||||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d"/>
|
|
||||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types"/>
|
|
||||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\io\burf"/>
|
|
||||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\io"/>
|
|
||||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\bar"/>
|
|
||||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl"/>
|
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl"/>
|
||||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\geoshow"/>
|
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\geoshow"/>
|
||||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d_earth"/>
|
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d_earth"/>
|
||||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\io\grib"/>
|
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\io\grib"/>
|
||||||
|
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\io"/>
|
||||||
|
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types"/>
|
||||||
|
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\contour"/>
|
||||||
|
<RecentFolder Folder="D:\Working\MIScript\Jython\mis"/>
|
||||||
|
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\satellite"/>
|
||||||
|
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\satellite\FY"/>
|
||||||
|
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\meteo\calc"/>
|
||||||
|
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\meteo\interpolation"/>
|
||||||
|
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\meteo\data"/>
|
||||||
|
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\meteo"/>
|
||||||
|
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\meteo\wrf"/>
|
||||||
</Path>
|
</Path>
|
||||||
<File>
|
<File>
|
||||||
<OpenedFiles>
|
<OpenedFiles>
|
||||||
<OpenedFile File="D:\Working\MIScript\Jython\mis\plot_types\3d_earth\CALIPSO_L1_3d_axis.py"/>
|
<OpenedFile File="D:\Working\MIScript\Jython\mis\meteo\vort_advection_2.py"/>
|
||||||
<OpenedFile File="D:\Working\MIScript\Jython\mis\io\grib\grib_ensemble.py"/>
|
<OpenedFile File="D:\Working\MIScript\Jython\mis\meteo\wrf\typhoon_path_trace.py"/>
|
||||||
</OpenedFiles>
|
</OpenedFiles>
|
||||||
<RecentFiles>
|
<RecentFiles>
|
||||||
<RecentFile File="D:\Working\MIScript\Jython\mis\plot_types\3d_earth\CALIPSO_L1_3d_axis.py"/>
|
<RecentFile File="D:\Working\MIScript\Jython\mis\meteo\vort_advection_2.py"/>
|
||||||
<RecentFile File="D:\Working\MIScript\Jython\mis\io\grib\grib_ensemble.py"/>
|
<RecentFile File="D:\Working\MIScript\Jython\mis\meteo\wrf\typhoon_path_trace.py"/>
|
||||||
</RecentFiles>
|
</RecentFiles>
|
||||||
</File>
|
</File>
|
||||||
<Font>
|
<Font>
|
||||||
@ -32,5 +32,5 @@
|
|||||||
</Font>
|
</Font>
|
||||||
<LookFeel DockWindowDecorated="true" LafDecorated="true" Name="FlatDarkLaf"/>
|
<LookFeel DockWindowDecorated="true" LafDecorated="true" Name="FlatDarkLaf"/>
|
||||||
<Figure DoubleBuffering="true"/>
|
<Figure DoubleBuffering="true"/>
|
||||||
<Startup MainFormLocation="-7,0" MainFormSize="1361,845"/>
|
<Startup MainFormLocation="-7,0" MainFormSize="1364,783"/>
|
||||||
</MeteoInfo>
|
</MeteoInfo>
|
||||||
|
|||||||
Binary file not shown.
@ -1,9 +1,10 @@
|
|||||||
from .meteo import *
|
from .meteo import *
|
||||||
import wrf
|
from . import wrf
|
||||||
|
from . import constants
|
||||||
from .calc import *
|
from .calc import *
|
||||||
from .interpolate import *
|
from .interpolate import *
|
||||||
|
|
||||||
__all__ = []
|
__all__ = ['wrf','constants','meteo','calc','interpolate']
|
||||||
__all__ += meteo.__all__
|
__all__ += meteo.__all__
|
||||||
__all__ += calc.__all__
|
__all__ += calc.__all__
|
||||||
__all__ += interpolate.__all__
|
__all__ += interpolate.__all__
|
||||||
Binary file not shown.
@ -7,7 +7,7 @@ Ported from MetPy.
|
|||||||
from org.meteoinfo.math.meteo import MeteoMath
|
from org.meteoinfo.math.meteo import MeteoMath
|
||||||
import mipylib.numeric as np
|
import mipylib.numeric as np
|
||||||
from mipylib.numeric.core import NDArray, DimArray
|
from mipylib.numeric.core import NDArray, DimArray
|
||||||
from .tools import first_derivative, gradient, get_layer_heights
|
from .tools import first_derivative, gradient, get_layer_heights, lat_lon_grid_deltas
|
||||||
from .basic import coriolis_parameter
|
from .basic import coriolis_parameter
|
||||||
from .. import constants
|
from .. import constants
|
||||||
|
|
||||||
@ -77,13 +77,34 @@ def vorticity(u, v, dx=None, dy=None, x_dim=-1, y_dim=-2):
|
|||||||
if dx is None:
|
if dx is None:
|
||||||
xx = u.dimvalue(x_dim)
|
xx = u.dimvalue(x_dim)
|
||||||
yy = u.dimvalue(y_dim)
|
yy = u.dimvalue(y_dim)
|
||||||
xx,yy = np.meshgrid(xx, yy)
|
xx, yy = np.meshgrid(xx, yy)
|
||||||
dudy = first_derivative(u, x=yy, axis=y_dim)
|
if u.proj.isLonLat():
|
||||||
dvdx = first_derivative(v, x=xx, axis=x_dim)
|
dx, dy = lat_lon_grid_deltas(xx, yy)
|
||||||
|
if dx.ndim < u.ndim:
|
||||||
|
ea = range(u.ndim - dx.ndim)
|
||||||
|
dx = np.expand_dims(dx, axis=ea)
|
||||||
|
dy = np.expand_dims(dy, axis=ea)
|
||||||
|
dudy = first_derivative(u, delta=dy, axis=y_dim)
|
||||||
|
dvdx = first_derivative(v, delta=dx, axis=x_dim)
|
||||||
|
else:
|
||||||
|
if xx.ndim < u.ndim:
|
||||||
|
ea = range(u.ndim - xx.ndim)
|
||||||
|
xx = np.expand_dims(xx, axis=ea)
|
||||||
|
yy = np.expand_dims(yy, axis=ea)
|
||||||
|
dudy = first_derivative(u, x=yy, axis=y_dim)
|
||||||
|
dvdx = first_derivative(v, x=xx, axis=x_dim)
|
||||||
else:
|
else:
|
||||||
|
if dx.ndim < u.ndim:
|
||||||
|
ea = range(u.ndim - dx.ndim)
|
||||||
|
dx = np.expand_dims(dx, axis=ea)
|
||||||
|
dy = np.expand_dims(dy, axis=ea)
|
||||||
dudy = first_derivative(u, delta=dy, axis=y_dim)
|
dudy = first_derivative(u, delta=dy, axis=y_dim)
|
||||||
dvdx = first_derivative(v, delta=dx, axis=x_dim)
|
dvdx = first_derivative(v, delta=dx, axis=x_dim)
|
||||||
return dvdx - dudy
|
r = dvdx - dudy
|
||||||
|
if isinstance(u, DimArray):
|
||||||
|
return DimArray(r, u.dims, u.fill_value, u.proj)
|
||||||
|
else:
|
||||||
|
return r
|
||||||
|
|
||||||
def vorticity_bak(u, v, x=None, y=None):
|
def vorticity_bak(u, v, x=None, y=None):
|
||||||
"""
|
"""
|
||||||
@ -165,13 +186,35 @@ def divergence(u, v, dx=None, dy=None, x_dim=-1, y_dim=-2):
|
|||||||
if dx is None:
|
if dx is None:
|
||||||
xx = u.dimvalue(x_dim)
|
xx = u.dimvalue(x_dim)
|
||||||
yy = u.dimvalue(y_dim)
|
yy = u.dimvalue(y_dim)
|
||||||
xx,yy = np.meshgrid(xx, yy)
|
xx, yy = np.meshgrid(xx, yy)
|
||||||
dudx = first_derivative(u, x=xx, axis=x_dim)
|
if u.proj.isLonLat():
|
||||||
dvdy = first_derivative(v, x=yy, axis=y_dim)
|
dx, dy = lat_lon_grid_deltas(xx, yy)
|
||||||
|
if dx.ndim < u.ndim:
|
||||||
|
ea = range(u.ndim - dx.ndim)
|
||||||
|
dx = np.expand_dims(dx, axis=ea)
|
||||||
|
dy = np.expand_dims(dy, axis=ea)
|
||||||
|
dudx = first_derivative(u, delta=dx, axis=x_dim)
|
||||||
|
dvdy = first_derivative(v, delta=dy, axis=y_dim)
|
||||||
|
else:
|
||||||
|
if xx.ndim < u.ndim:
|
||||||
|
ea = range(u.ndim - xx.ndim)
|
||||||
|
xx = np.expand_dims(xx, axis=ea)
|
||||||
|
yy = np.expand_dims(yy, axis=ea)
|
||||||
|
dudx = first_derivative(u, x=xx, axis=x_dim)
|
||||||
|
dvdy = first_derivative(v, x=yy, axis=y_dim)
|
||||||
else:
|
else:
|
||||||
|
if dx.ndim < u.ndim:
|
||||||
|
ea = range(u.ndim - dx.ndim)
|
||||||
|
dx = np.expand_dims(dx, axis=ea)
|
||||||
|
dy = np.expand_dims(dy, axis=ea)
|
||||||
dudx = first_derivative(u, delta=dx, axis=x_dim)
|
dudx = first_derivative(u, delta=dx, axis=x_dim)
|
||||||
dvdy = first_derivative(v, delta=dy, axis=y_dim)
|
dvdy = first_derivative(v, delta=dy, axis=y_dim)
|
||||||
return dudx + dvdy
|
r = dudx + dvdy
|
||||||
|
if isinstance(u, DimArray):
|
||||||
|
return DimArray(r, u.dims, u.fill_value, u.proj)
|
||||||
|
else:
|
||||||
|
return r
|
||||||
|
|
||||||
|
|
||||||
def divergence_bak(u, v, x=None, y=None):
|
def divergence_bak(u, v, x=None, y=None):
|
||||||
'''
|
'''
|
||||||
|
|||||||
Binary file not shown.
@ -4,6 +4,7 @@ Contains a collection of thermodynamic calculations.
|
|||||||
Ported from MetPy.
|
Ported from MetPy.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import warnings
|
||||||
from .. import constants
|
from .. import constants
|
||||||
from ..cbook import broadcast_indices
|
from ..cbook import broadcast_indices
|
||||||
from .tools import find_bounding_indices, _less_or_close
|
from .tools import find_bounding_indices, _less_or_close
|
||||||
@ -16,31 +17,39 @@ __all__ = [
|
|||||||
'mixing_ratio','mixing_ratio_from_specific_humidity','potential_temperature',
|
'mixing_ratio','mixing_ratio_from_specific_humidity','potential_temperature',
|
||||||
'relative_humidity_from_specific_humidity',
|
'relative_humidity_from_specific_humidity',
|
||||||
'saturation_mixing_ratio','saturation_vapor_pressure','temperature_from_potential_temperature',
|
'saturation_mixing_ratio','saturation_vapor_pressure','temperature_from_potential_temperature',
|
||||||
'virtual_temperature','dry_static_energy','isentropic_interpolation'
|
'virtual_temperature','dry_static_energy','isentropic_interpolation',
|
||||||
|
'dewpoint','dewpoint_from_relative_humidity','specific_humidity_from_dewpoint',
|
||||||
|
'specific_humidity_from_mixing_ratio','specific_humidity_from_relative_humidity'
|
||||||
]
|
]
|
||||||
|
|
||||||
def saturation_vapor_pressure(temperature):
|
def saturation_vapor_pressure(temperature):
|
||||||
r"""Calculate the saturation water vapor (partial) pressure.
|
r"""Calculate the saturation water vapor (partial) pressure.
|
||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
temperature : `float`
|
temperature : `float`
|
||||||
The temperature (celsius)
|
The temperature (kelvin)
|
||||||
|
|
||||||
Returns
|
Returns
|
||||||
-------
|
-------
|
||||||
`float`
|
`float`
|
||||||
The saturation water vapor (partial) pressure
|
The saturation water vapor (partial) pressure
|
||||||
|
|
||||||
See Also
|
See Also
|
||||||
--------
|
--------
|
||||||
vapor_pressure, dewpoint
|
vapor_pressure, dewpoint
|
||||||
|
|
||||||
Notes
|
Notes
|
||||||
-----
|
-----
|
||||||
Instead of temperature, dewpoint may be used in order to calculate
|
Instead of temperature, dewpoint may be used in order to calculate
|
||||||
the actual (ambient) water vapor (partial) pressure.
|
the actual (ambient) water vapor (partial) pressure.
|
||||||
The formula used is that from [Bolton1980]_ for T in degrees Celsius:
|
The formula used is that from [Bolton1980]_ for T in degrees Celsius:
|
||||||
|
|
||||||
.. math:: 6.112 e^\frac{17.67T}{T + 243.5}
|
.. math:: 6.112 e^\frac{17.67T}{T + 243.5}
|
||||||
"""
|
"""
|
||||||
# Converted from original in terms of C to use kelvin.
|
# Converted from original in terms of C to use kelvin.
|
||||||
return constants.sat_pressure_0c * np.exp(17.67 * (temperature - 273.15) / (temperature - 29.65))
|
return constants.sat_pressure_0c * np.exp(17.67 * (temperature - 273.15) /
|
||||||
|
(temperature - 29.65))
|
||||||
|
|
||||||
def mixing_ratio_from_specific_humidity(specific_humidity):
|
def mixing_ratio_from_specific_humidity(specific_humidity):
|
||||||
r"""Calculate the mixing ratio from specific humidity.
|
r"""Calculate the mixing ratio from specific humidity.
|
||||||
@ -68,18 +77,22 @@ def mixing_ratio(part_press, tot_press):
|
|||||||
"""
|
"""
|
||||||
Calculates the mixing ratio of gas given its partial pressure
|
Calculates the mixing ratio of gas given its partial pressure
|
||||||
and the total pressure of the air.
|
and the total pressure of the air.
|
||||||
|
|
||||||
There are no required units for the input arrays, other than that
|
There are no required units for the input arrays, other than that
|
||||||
they have the same units.
|
they have the same units.
|
||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
part_press : array_like
|
part_press : array_like
|
||||||
Partial pressure of the constituent gas
|
Partial pressure of the constituent gas
|
||||||
tot_press : array_like
|
tot_press : array_like
|
||||||
Total air pressure
|
Total air pressure
|
||||||
|
|
||||||
Returns
|
Returns
|
||||||
-------
|
-------
|
||||||
array_like
|
array_like
|
||||||
The (mass) mixing ratio, dimensionless (e.g. Kg/Kg or g/g)
|
The (mass) mixing ratio, dimensionless (e.g. Kg/Kg or g/g)
|
||||||
|
|
||||||
See Also
|
See Also
|
||||||
--------
|
--------
|
||||||
vapor_pressure
|
vapor_pressure
|
||||||
@ -91,17 +104,22 @@ def saturation_mixing_ratio(tot_press, temperature):
|
|||||||
"""
|
"""
|
||||||
Calculates the saturation mixing ratio given total pressure
|
Calculates the saturation mixing ratio given total pressure
|
||||||
and the temperature.
|
and the temperature.
|
||||||
|
|
||||||
The implementation uses the formula outlined in [4]
|
The implementation uses the formula outlined in [4]
|
||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
tot_press: array_like
|
tot_press: array_like
|
||||||
Total atmospheric pressure (hPa)
|
Total atmospheric pressure (hPa)
|
||||||
|
|
||||||
temperature: array_like
|
temperature: array_like
|
||||||
The temperature (celsius)
|
The temperature (kelvin)
|
||||||
|
|
||||||
Returns
|
Returns
|
||||||
-------
|
-------
|
||||||
array_like
|
array_like
|
||||||
The saturation mixing ratio, dimensionless
|
The saturation mixing ratio, dimensionless
|
||||||
|
|
||||||
References
|
References
|
||||||
----------
|
----------
|
||||||
.. [4] Hobbs, Peter V. and Wallace, John M., 1977: Atmospheric Science, an Introductory
|
.. [4] Hobbs, Peter V. and Wallace, John M., 1977: Atmospheric Science, an Introductory
|
||||||
@ -176,95 +194,110 @@ def exner_function(pressure, reference_pressure=constants.P0):
|
|||||||
def potential_temperature(pressure, temperature):
|
def potential_temperature(pressure, temperature):
|
||||||
"""
|
"""
|
||||||
Calculate the potential temperature.
|
Calculate the potential temperature.
|
||||||
|
|
||||||
Uses the Poisson equation to calculation the potential temperature
|
Uses the Poisson equation to calculation the potential temperature
|
||||||
given `pressure` and `temperature`.
|
given `pressure` and `temperature`.
|
||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
pressure : array_like
|
pressure : array_like
|
||||||
The total atmospheric pressure
|
The total atmospheric pressure
|
||||||
temperature : array_like
|
temperature : array_like
|
||||||
The temperature
|
The temperature
|
||||||
|
|
||||||
Returns
|
Returns
|
||||||
-------
|
-------
|
||||||
array_like
|
array_like
|
||||||
The potential temperature corresponding to the the temperature and
|
The potential temperature corresponding to the the temperature and
|
||||||
pressure.
|
pressure.
|
||||||
|
|
||||||
See Also
|
See Also
|
||||||
--------
|
--------
|
||||||
dry_lapse
|
dry_lapse
|
||||||
|
|
||||||
Notes
|
Notes
|
||||||
-----
|
-----
|
||||||
Formula:
|
Formula:
|
||||||
|
|
||||||
.. math:: \Theta = T (P_0 / P)^\kappa
|
.. math:: \Theta = T (P_0 / P)^\kappa
|
||||||
"""
|
"""
|
||||||
return temperature * (constants.P0 / pressure)**constants.kappa
|
return temperature / exner_function(pressure)
|
||||||
|
|
||||||
def temperature_from_potential_temperature(pressure, theta):
|
def temperature_from_potential_temperature(pressure, potential_temperature):
|
||||||
r"""Calculate the temperature from a given potential temperature.
|
r"""Calculate the temperature from a given potential temperature.
|
||||||
|
|
||||||
Uses the inverse of the Poisson equation to calculate the temperature from a
|
Uses the inverse of the Poisson equation to calculate the temperature from a
|
||||||
given potential temperature at a specific pressure level.
|
given potential temperature at a specific pressure level.
|
||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
pressure : `pint.Quantity`
|
pressure : `array`
|
||||||
The total atmospheric pressure
|
The total atmospheric pressure (hPa)
|
||||||
theta : `pint.Quantity`
|
potential_temperature : `array`
|
||||||
The potential temperature
|
The potential temperature (Kelvin)
|
||||||
|
|
||||||
Returns
|
Returns
|
||||||
-------
|
-------
|
||||||
`pint.Quantity`
|
`array` (kelvin)
|
||||||
The temperature corresponding to the potential temperature and pressure.
|
The temperature corresponding to the potential temperature and pressure.
|
||||||
|
|
||||||
See Also
|
See Also
|
||||||
--------
|
--------
|
||||||
dry_lapse
|
dry_lapse
|
||||||
potential_temperature
|
potential_temperature
|
||||||
|
|
||||||
Notes
|
Notes
|
||||||
-----
|
-----
|
||||||
Formula:
|
Formula:
|
||||||
|
|
||||||
.. math:: T = \Theta (P / P_0)^\kappa
|
.. math:: T = \Theta (P / P_0)^\kappa
|
||||||
"""
|
"""
|
||||||
return theta * exner_function(pressure)
|
return potential_temperature * exner_function(pressure)
|
||||||
|
|
||||||
def equivalent_potential_temperature(pressure, temperature, dewpoint):
|
def equivalent_potential_temperature(pressure, temperature, dewpoint):
|
||||||
r"""Calculate equivalent potential temperature.
|
r"""Calculate equivalent potential temperature.
|
||||||
|
|
||||||
This calculation must be given an air parcel's pressure, temperature, and dewpoint.
|
This calculation must be given an air parcel's pressure, temperature, and dewpoint.
|
||||||
The implementation uses the formula outlined in [Bolton1980]_:
|
The implementation uses the formula outlined in [Bolton1980]_:
|
||||||
First, the LCL temperature is calculated:
|
First, the LCL temperature is calculated:
|
||||||
|
|
||||||
.. math:: T_{L}=\frac{1}{\frac{1}{T_{D}-56}+\frac{ln(T_{K}/T_{D})}{800}}+56
|
.. math:: T_{L}=\frac{1}{\frac{1}{T_{D}-56}+\frac{ln(T_{K}/T_{D})}{800}}+56
|
||||||
Which is then used to calculate the potential temperature at the LCL:
|
Which is then used to calculate the potential temperature at the LCL:
|
||||||
|
|
||||||
.. math:: \theta_{DL}=T_{K}\left(\frac{1000}{p-e}\right)^k
|
.. math:: \theta_{DL}=T_{K}\left(\frac{1000}{p-e}\right)^k
|
||||||
\left(\frac{T_{K}}{T_{L}}\right)^{.28r}
|
\left(\frac{T_{K}}{T_{L}}\right)^{.28r}
|
||||||
|
|
||||||
Both of these are used to calculate the final equivalent potential temperature:
|
Both of these are used to calculate the final equivalent potential temperature:
|
||||||
.. math:: \theta_{E}=\theta_{DL}\exp\left[\left(\frac{3036.}{T_{L}}
|
.. math:: \theta_{E}=\theta_{DL}\exp\left[\left(\frac{3036.}{T_{L}}
|
||||||
-1.78\right)*r(1+.448r)\right]
|
-1.78\right)*r(1+.448r)\right]
|
||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
pressure: `float`
|
pressure: `float`
|
||||||
Total atmospheric pressure (hPa)
|
Total atmospheric pressure (hPa)
|
||||||
temperature: `float`
|
temperature: `float`
|
||||||
Temperature of parcel (celsius)
|
Temperature of parcel (kelvin)
|
||||||
dewpoint: `float`
|
dewpoint: `float`
|
||||||
Dewpoint of parcel (celsius)
|
Dewpoint of parcel (kelvin)
|
||||||
|
|
||||||
Returns
|
Returns
|
||||||
-------
|
-------
|
||||||
`float`
|
`float`
|
||||||
The equivalent potential temperature of the parcel (celsius)
|
The equivalent potential temperature of the parcel (kelvin)
|
||||||
Notes
|
Notes
|
||||||
-----
|
-----
|
||||||
[Bolton1980]_ formula for Theta-e is used, since according to
|
[Bolton1980]_ formula for Theta-e is used, since according to
|
||||||
[DaviesJones2009]_ it is the most accurate non-iterative formulation
|
[DaviesJones2009]_ it is the most accurate non-iterative formulation
|
||||||
available.
|
available.
|
||||||
"""
|
"""
|
||||||
t = temperature + 273.15
|
t = temperature
|
||||||
td = dewpoint + 273.15
|
td = dewpoint
|
||||||
p = pressure
|
|
||||||
e = saturation_vapor_pressure(dewpoint)
|
e = saturation_vapor_pressure(dewpoint)
|
||||||
r = saturation_mixing_ratio(pressure, dewpoint)
|
r = saturation_mixing_ratio(pressure, dewpoint)
|
||||||
|
|
||||||
t_l = 56 + 1. / (1. / (td - 56) + np.log(t / td) / 800.)
|
t_l = 56 + 1. / (1. / (td - 56) + np.log(t / td) / 800.)
|
||||||
th_l = t * (1000 / (p - e)) ** constants.kappa * (t / t_l) ** (0.28 * r)
|
th_l = potential_temperature(pressure - e, temperature) * (t / t_l) ** (0.28 * r)
|
||||||
th_e = th_l * np.exp((3036. / t_l - 1.78) * r * (1 + 0.448 * r))
|
return th_l * np.exp(r * (1 + 0.448 * r) * (3036. / t_l - 1.78))
|
||||||
|
|
||||||
return th_e - 273.15
|
|
||||||
|
|
||||||
def virtual_temperature(temperature, mixing, molecular_weight_ratio=constants.epsilon):
|
def virtual_temperature(temperature, mixing, molecular_weight_ratio=constants.epsilon):
|
||||||
r"""Calculate virtual temperature.
|
r"""Calculate virtual temperature.
|
||||||
@ -472,4 +505,123 @@ def isentropic_interpolation(levels, pressure, temperature, *args, **kwargs):
|
|||||||
axis=vertical_dim, return_list_always=True)
|
axis=vertical_dim, return_list_always=True)
|
||||||
ret.extend(others)
|
ret.extend(others)
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
def dewpoint_from_relative_humidity(temperature, rh):
|
||||||
|
r"""Calculate the ambient dewpoint given air temperature and relative humidity.
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
temperature : `float`
|
||||||
|
Air temperature (celsius)
|
||||||
|
rh : `float`
|
||||||
|
Relative humidity expressed as a ratio in the range 0 < rh <= 1
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
`float`
|
||||||
|
The dew point temperature (celsius)
|
||||||
|
See Also
|
||||||
|
--------
|
||||||
|
dewpoint, saturation_vapor_pressure
|
||||||
|
"""
|
||||||
|
if np.any(rh > 1.2):
|
||||||
|
warnings.warn('Relative humidity >120%, ensure proper units.')
|
||||||
|
return dewpoint(rh * saturation_vapor_pressure(temperature))
|
||||||
|
|
||||||
|
def dewpoint(vapor_pressure):
|
||||||
|
r"""Calculate the ambient dewpoint given the vapor pressure.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
vapor_pressure : `array`
|
||||||
|
Water vapor partial pressure
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
`array`
|
||||||
|
Dew point temperature
|
||||||
|
|
||||||
|
See Also
|
||||||
|
--------
|
||||||
|
dewpoint_rh, saturation_vapor_pressure, vapor_pressure
|
||||||
|
|
||||||
|
Notes
|
||||||
|
-----
|
||||||
|
This function inverts the [Bolton1980]_ formula for saturation vapor
|
||||||
|
pressure to instead calculate the temperature. This yield the following
|
||||||
|
formula for dewpoint in degrees Celsius:
|
||||||
|
|
||||||
|
.. math:: T = \frac{243.5 log(e / 6.112)}{17.67 - log(e / 6.112)}
|
||||||
|
"""
|
||||||
|
val = np.log(vapor_pressure / constants.nounit.sat_pressure_0c)
|
||||||
|
return constants.nounit.zero_degc + 243.5 * val / (17.67 - val)
|
||||||
|
|
||||||
|
def specific_humidity_from_mixing_ratio(mixing_ratio):
|
||||||
|
r"""Calculate the specific humidity from the mixing ratio.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
mixing_ratio: `array`
|
||||||
|
Mixing ratio
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
`array`
|
||||||
|
Specific humidity
|
||||||
|
|
||||||
|
See Also
|
||||||
|
--------
|
||||||
|
mixing_ratio, mixing_ratio_from_specific_humidity
|
||||||
|
|
||||||
|
Notes
|
||||||
|
-----
|
||||||
|
Formula from [Salby1996]_ pg. 118.
|
||||||
|
|
||||||
|
.. math:: q = \frac{w}{1+w}
|
||||||
|
|
||||||
|
* :math:`w` is mixing ratio
|
||||||
|
|
||||||
|
* :math:`q` is the specific humidity
|
||||||
|
"""
|
||||||
|
return mixing_ratio / (1 + mixing_ratio)
|
||||||
|
|
||||||
|
def specific_humidity_from_dewpoint(pressure, dewpoint):
|
||||||
|
r"""Calculate the specific humidity from the dewpoint temperature and pressure.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
dewpoint: `array`
|
||||||
|
Dewpoint temperature
|
||||||
|
pressure: `array`
|
||||||
|
Pressure
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
`array`
|
||||||
|
Specific humidity
|
||||||
|
|
||||||
|
See Also
|
||||||
|
--------
|
||||||
|
mixing_ratio, saturation_mixing_ratio
|
||||||
|
"""
|
||||||
|
mixing_ratio = saturation_mixing_ratio(pressure, dewpoint)
|
||||||
|
return specific_humidity_from_mixing_ratio(mixing_ratio)
|
||||||
|
|
||||||
|
def specific_humidity_from_relative_humidity(pressure, temperature, rh):
|
||||||
|
"""Calculate specific humidity from relative humidity, pressure and temperature.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
pressure: `array`
|
||||||
|
Pressure
|
||||||
|
temperature: `array`
|
||||||
|
temperature
|
||||||
|
rh: `array`
|
||||||
|
relative humidity
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
`array`
|
||||||
|
Specific humidity
|
||||||
|
"""
|
||||||
|
dp = dewpoint_from_relative_humidity(temperature, rh)
|
||||||
|
return specific_humidity_from_dewpoint(pressure, dp)
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
from . import nounit
|
||||||
|
from .default import *
|
||||||
@ -1,10 +1,3 @@
|
|||||||
#-----------------------------------------------------
|
|
||||||
# Author: Yaqiang Wang
|
|
||||||
# Date: 2018-11-23
|
|
||||||
# Purpose: MeteoInfoLab constants module
|
|
||||||
# Note: Jython
|
|
||||||
#-----------------------------------------------------
|
|
||||||
|
|
||||||
P0 = 1000. #reference pressure for potential temperature (hPa)
|
P0 = 1000. #reference pressure for potential temperature (hPa)
|
||||||
R = 8.3144598 #molar gas constant (J / K / mol)
|
R = 8.3144598 #molar gas constant (J / K / mol)
|
||||||
Mw = 18.01528 #Molecular weight of water (g / mol)
|
Mw = 18.01528 #Molecular weight of water (g / mol)
|
||||||
@ -16,6 +9,6 @@ epsilon = Mw / Md
|
|||||||
kappa = 0.286
|
kappa = 0.286
|
||||||
degCtoK = 273.15 # Temperature offset between K and C (deg C)
|
degCtoK = 273.15 # Temperature offset between K and C (deg C)
|
||||||
g = 9.8 # Gravitational acceleration (m / s^2)
|
g = 9.8 # Gravitational acceleration (m / s^2)
|
||||||
sat_pressure_0c = 6.112 #Saturation presssure at 0 degree (hPa)
|
sat_pressure_0c = 6.112 #Saturation pressure at 0 degree (hPa)
|
||||||
T_BASE = 300.
|
T_BASE = 300.
|
||||||
omega = 7292115e-11 # Avg. angular velocity of Earth (rad / s)
|
omega = 7292115e-11 # Avg. angular velocity of Earth (rad / s)
|
||||||
4
meteoinfo-lab/pylib/mipylib/meteolib/constants/nounit.py
Normal file
4
meteoinfo-lab/pylib/mipylib/meteolib/constants/nounit.py
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
from . import default
|
||||||
|
|
||||||
|
zero_degc = 273.15 # K
|
||||||
|
sat_pressure_0c = default.sat_pressure_0c * 100 # Pa
|
||||||
Binary file not shown.
@ -258,50 +258,7 @@ def rh2dewpoint(rh, temp):
|
|||||||
r = DimArray(r, rh.dims, rh.fill_value, rh.proj)
|
r = DimArray(r, rh.dims, rh.fill_value, rh.proj)
|
||||||
return r
|
return r
|
||||||
else:
|
else:
|
||||||
return MeteoMath.rh2dewpoint(rh, temp)
|
return MeteoMath.rh2dewpoint(rh, temp)
|
||||||
|
|
||||||
def dewpoint(e):
|
|
||||||
r"""Calculate the ambient dewpoint given the vapor pressure.
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
e : `pint.Quantity`
|
|
||||||
Water vapor partial pressure
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
`pint.Quantity`
|
|
||||||
Dew point temperature
|
|
||||||
See Also
|
|
||||||
--------
|
|
||||||
dewpoint_rh, saturation_vapor_pressure, vapor_pressure
|
|
||||||
Notes
|
|
||||||
-----
|
|
||||||
This function inverts the [Bolton1980]_ formula for saturation vapor
|
|
||||||
pressure to instead calculate the temperature. This yield the following
|
|
||||||
formula for dewpoint in degrees Celsius:
|
|
||||||
.. math:: T = \frac{243.5 log(e / 6.112)}{17.67 - log(e / 6.112)}
|
|
||||||
"""
|
|
||||||
val = np.log(e / constants.sat_pressure_0c)
|
|
||||||
return 243.5 * val / (17.67 - val)
|
|
||||||
|
|
||||||
def dewpoint_from_relative_humidity(temperature, rh):
|
|
||||||
r"""Calculate the ambient dewpoint given air temperature and relative humidity.
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
temperature : `float`
|
|
||||||
Air temperature (celsius)
|
|
||||||
rh : `float`
|
|
||||||
Relative humidity expressed as a ratio in the range 0 < rh <= 1
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
`float`
|
|
||||||
The dew point temperature (celsius)
|
|
||||||
See Also
|
|
||||||
--------
|
|
||||||
dewpoint, saturation_vapor_pressure
|
|
||||||
"""
|
|
||||||
#if np.any(rh > 1.2):
|
|
||||||
# warnings.warn('Relative humidity >120%, ensure proper units.')
|
|
||||||
return dewpoint(rh * saturation_vapor_pressure(temperature))
|
|
||||||
|
|
||||||
def dewpoint_rh(temperature, rh):
|
def dewpoint_rh(temperature, rh):
|
||||||
r"""Calculate the ambient dewpoint given air temperature and relative humidity.
|
r"""Calculate the ambient dewpoint given air temperature and relative humidity.
|
||||||
@ -424,16 +381,20 @@ def vapor_pressure(pressure, mixing):
|
|||||||
def cumsimp(y):
|
def cumsimp(y):
|
||||||
"""
|
"""
|
||||||
Simpson-rule column-wise cumulative summation.
|
Simpson-rule column-wise cumulative summation.
|
||||||
|
|
||||||
Numerical approximation of a function F(x) such that
|
Numerical approximation of a function F(x) such that
|
||||||
Y(X) = dF/dX. Each column of the input matrix Y represents
|
Y(X) = dF/dX. Each column of the input matrix Y represents
|
||||||
the value of the integrand Y(X) at equally spaced points
|
the value of the integrand Y(X) at equally spaced points
|
||||||
X = 0,1,...size(Y,1).
|
X = 0,1,...size(Y,1).
|
||||||
|
|
||||||
The output is a matrix F of the same size as Y.
|
The output is a matrix F of the same size as Y.
|
||||||
The first row of F is equal to zero and each following row
|
The first row of F is equal to zero and each following row
|
||||||
is the approximation of the integral of each column of matrix
|
is the approximation of the integral of each column of matrix
|
||||||
Y up to the givem row.
|
Y up to the given row.
|
||||||
|
|
||||||
CUMSIMP assumes continuity of each column of the function Y(X)
|
CUMSIMP assumes continuity of each column of the function Y(X)
|
||||||
and uses Simpson rule summation.
|
and uses Simpson rule summation.
|
||||||
|
|
||||||
Similar to the command F = CUMSUM(Y), exept for zero first
|
Similar to the command F = CUMSUM(Y), exept for zero first
|
||||||
row and more accurate summation (under the assumption of
|
row and more accurate summation (under the assumption of
|
||||||
continuous integrand Y(X)).
|
continuous integrand Y(X)).
|
||||||
|
|||||||
Binary file not shown.
@ -104,7 +104,7 @@ def get_rh(wrfin, timeidx=0):
|
|||||||
full_p = p + pb
|
full_p = p + pb
|
||||||
qvapor[qvapor < 0] = 0.
|
qvapor[qvapor < 0] = 0.
|
||||||
tk = temperature_from_potential_temperature(full_p * 0.01, full_t)
|
tk = temperature_from_potential_temperature(full_p * 0.01, full_t)
|
||||||
rh = relative_humidity_from_specific_humidity(qvapor, tk - 273.15, full_p * 0.01) * 100
|
rh = relative_humidity_from_specific_humidity(full_p * 0.01, tk, qvapor)
|
||||||
|
|
||||||
return rh
|
return rh
|
||||||
|
|
||||||
@ -124,6 +124,6 @@ def get_rh2m(wrfin, timeidx=0):
|
|||||||
psfc = wrfin['PSFC'][timeidx,:,:]
|
psfc = wrfin['PSFC'][timeidx,:,:]
|
||||||
q2 = wrfin['Q2'][timeidx,:,:]
|
q2 = wrfin['Q2'][timeidx,:,:]
|
||||||
q2[q2 < 0] = 0.
|
q2[q2 < 0] = 0.
|
||||||
rh = relative_humidity_from_specific_humidity(q2, t2 - 273.15, psfc * 0.01) * 100
|
rh = relative_humidity_from_specific_humidity(psfc * 0.01, t2, q2)
|
||||||
|
|
||||||
return rh
|
return rh
|
||||||
Binary file not shown.
@ -14,10 +14,9 @@ from . import signal
|
|||||||
from . import spatial
|
from . import spatial
|
||||||
from . import special
|
from . import special
|
||||||
|
|
||||||
__all__ = []
|
__all__ = ['linalg', 'fitting', 'random', 'ma', 'stats', 'interpolate', 'optimize', 'signal', 'spatial',
|
||||||
|
'special']
|
||||||
__all__.extend(['__version__'])
|
__all__.extend(['__version__'])
|
||||||
__all__.extend(core.__all__)
|
__all__.extend(core.__all__)
|
||||||
__all__.extend(lib.__all__)
|
__all__.extend(lib.__all__)
|
||||||
__all__.extend(['linalg', 'fitting', 'random', 'ma', 'stats', 'interpolate', 'optimize', 'signal', 'spatial',
|
|
||||||
'special'])
|
|
||||||
__all__.extend(['griddata'])
|
__all__.extend(['griddata'])
|
||||||
@ -12,100 +12,17 @@
|
|||||||
<orderEntry type="inheritedJdk" />
|
<orderEntry type="inheritedJdk" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
<orderEntry type="module" module-name="meteoinfo-chart" />
|
<orderEntry type="module" module-name="meteoinfo-chart" />
|
||||||
|
<orderEntry type="module" module-name="meteoinfo-console" />
|
||||||
<orderEntry type="module" module-name="meteoinfo-geo" />
|
<orderEntry type="module" module-name="meteoinfo-geo" />
|
||||||
<orderEntry type="module" module-name="meteoinfo-math" />
|
|
||||||
<orderEntry type="module" module-name="meteoinfo-ndarray" />
|
|
||||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-math3:3.6.1" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:2.0.0" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.ejml:ejml-experimental:0.40" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.ejml:ejml-core:0.40" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.ejml:ejml-ddense:0.40" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.ejml:ejml-dsparse:0.40" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.ejml:ejml-zdense:0.40" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.ejml:ejml-simple:0.40" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.ejml:ejml-fdense:0.40" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.ejml:ejml-cdense:0.40" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.ejml:ejml-fsparse:0.40" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.ojalgo:ojalgo:48.4.1" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.github.haifengl:smile-interpolation:2.6.0" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.github.haifengl:smile-math:2.6.0" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp-platform:1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:android-arm:1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:android-arm64:1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:android-x86:1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:android-x86_64:1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:ios-arm64:1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:ios-x86_64:1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:linux-armhf:1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:linux-arm64:1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:linux-ppc64le:1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:linux-x86:1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:linux-x86_64:1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:macosx-x86_64:1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:windows-x86:1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:windows-x86_64:1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas-platform:0.3.10-1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas:0.3.10-1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas:android-arm:0.3.10-1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas:android-arm64:0.3.10-1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas:android-x86:0.3.10-1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas:android-x86_64:0.3.10-1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas:ios-arm64:0.3.10-1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas:ios-x86_64:0.3.10-1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas:linux-x86:0.3.10-1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas:linux-x86_64:0.3.10-1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas:linux-armhf:0.3.10-1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas:linux-arm64:0.3.10-1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas:linux-ppc64le:0.3.10-1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas:macosx-x86_64:0.3.10-1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas:windows-x86:0.3.10-1.5.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.bytedeco:openblas:windows-x86_64:0.3.10-1.5.4" level="project" />
|
|
||||||
<orderEntry type="module" module-name="meteoinfo-geometry" />
|
|
||||||
<orderEntry type="library" name="Maven: org.locationtech.jts:jts-core:1.17.0" level="project" />
|
|
||||||
<orderEntry type="module" module-name="meteoinfo-table" />
|
|
||||||
<orderEntry type="module" module-name="meteoinfo-image" />
|
|
||||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-imaging:1.0-alpha2" level="project" />
|
|
||||||
<orderEntry type="module" module-name="meteoinfo-data" />
|
|
||||||
<orderEntry type="module" module-name="meteoinfo-projection" />
|
|
||||||
<orderEntry type="library" name="Maven: org.locationtech.proj4j:proj4j:1.1.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: net.sf.geographiclib:GeographicLib-Java:1.52" level="project" />
|
|
||||||
<orderEntry type="module" module-name="meteoinfo-dataframe" />
|
|
||||||
<orderEntry type="library" name="Maven: edu.ucar:netcdfAll:5.5.3-SNAPSHOT" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.github.albfernandez:juniversalchardet:2.4.0" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: commons-io:commons-io:2.11.0" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.formdev:flatlaf:2.0.1" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.formdev:flatlaf-extras:2.0.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="RUNTIME" name="Maven: com.formdev:svgSalamander:1.1.3" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.itextpdf:itextpdf:5.5.13.2" level="project" />
|
|
||||||
<orderEntry type="module" module-name="meteoinfo-ui" />
|
<orderEntry type="module" module-name="meteoinfo-ui" />
|
||||||
<orderEntry type="module" module-name="meteoinfo-common" />
|
|
||||||
<orderEntry type="library" name="Maven: com.google.guava:guava:30.1.1-jre" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.checkerframework:checker-qual:3.8.0" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.5.1" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.toedter:jcalendar:1.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.meteothink:wContour:1.7.1" level="project" />
|
<orderEntry type="library" name="Maven: org.meteothink:wContour:1.7.1" level="project" />
|
||||||
<orderEntry type="library" name="Maven: org.scilab.forge:jlatexmath:1.0.7" level="project" />
|
<orderEntry type="library" name="Maven: org.scilab.forge:jlatexmath:1.0.7" level="project" />
|
||||||
<orderEntry type="library" name="Maven: org.scilab.forge:jlatexmath-font-greek:1.0.7" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.scilab.forge:jlatexmath-font-cyrillic:1.0.7" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.12.0" level="project" />
|
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.12.0" level="project" />
|
||||||
<orderEntry type="library" name="Maven: com.l2fprod:l2fprod-common-all:0.1" level="project" />
|
<orderEntry type="library" name="Maven: com.l2fprod:l2fprod-common-all:0.1" level="project" />
|
||||||
<orderEntry type="library" name="Maven: org.freehep:freehep-util:2.0.2" level="project" />
|
<orderEntry type="library" name="Maven: org.freehep:freehep-util:2.0.2" level="project" />
|
||||||
<orderEntry type="library" name="Maven: org.netbeans:openide-lookup:1.9-patched-1.0" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio-emf:2.4" level="project" />
|
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio-emf:2.4" level="project" />
|
||||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio:2.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.freehep:freehep-io:2.2.2" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio-tests:2.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsbase:2.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio-pdf:2.4" level="project" />
|
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio-pdf:2.4" level="project" />
|
||||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphics2d:2.4" level="project" />
|
<orderEntry type="library" name="Maven: org.freehep:freehep-graphics2d:2.4" level="project" />
|
||||||
<orderEntry type="library" name="Maven: junit:junit:4.10" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.1" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio-ps:2.4" level="project" />
|
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio-ps:2.4" level="project" />
|
||||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:v2.4.0-rc4" level="project" />
|
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all:v2.4.0-rc4" level="project" />
|
||||||
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all-natives-linux-aarch64:v2.4.0-rc4" level="project" />
|
<orderEntry type="library" name="Maven: org.jogamp.jogl:jogl-all-natives-linux-aarch64:v2.4.0-rc4" level="project" />
|
||||||
@ -124,9 +41,92 @@
|
|||||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt-natives-windows-amd64:v2.4.0-rc4" level="project" />
|
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt-natives-windows-amd64:v2.4.0-rc4" level="project" />
|
||||||
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt-natives-windows-i586:v2.4.0-rc4" level="project" />
|
<orderEntry type="library" name="Maven: org.jogamp.gluegen:gluegen-rt-natives-windows-i586:v2.4.0-rc4" level="project" />
|
||||||
<orderEntry type="library" name="Maven: org.joml:joml:1.9.25" level="project" />
|
<orderEntry type="library" name="Maven: org.joml:joml:1.9.25" level="project" />
|
||||||
<orderEntry type="module" module-name="meteoinfo-console" />
|
|
||||||
<orderEntry type="library" name="Maven: org.python:jython-standalone:2.7.2" level="project" />
|
<orderEntry type="library" name="Maven: org.python:jython-standalone:2.7.2" level="project" />
|
||||||
<orderEntry type="library" name="Maven: com.fifesoft:rsyntaxtextarea:3.1.1" level="project" />
|
<orderEntry type="library" name="Maven: com.fifesoft:rsyntaxtextarea:3.1.1" level="project" />
|
||||||
<orderEntry type="library" name="Maven: com.fifesoft:autocomplete:3.1.0" level="project" />
|
<orderEntry type="library" name="Maven: com.fifesoft:autocomplete:3.1.0" level="project" />
|
||||||
|
<orderEntry type="module" module-name="meteoinfo-math" />
|
||||||
|
<orderEntry type="module" module-name="meteoinfo-geometry" />
|
||||||
|
<orderEntry type="module" module-name="meteoinfo-table" />
|
||||||
|
<orderEntry type="module" module-name="meteoinfo-image" />
|
||||||
|
<orderEntry type="module" module-name="meteoinfo-data" />
|
||||||
|
<orderEntry type="library" name="Maven: com.formdev:flatlaf:2.0.1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.formdev:flatlaf-extras:2.0.1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.itextpdf:itextpdf:5.5.13.2" level="project" />
|
||||||
|
<orderEntry type="module" module-name="meteoinfo-common" />
|
||||||
|
<orderEntry type="library" name="Maven: com.toedter:jcalendar:1.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.scilab.forge:jlatexmath-font-greek:1.0.7" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.scilab.forge:jlatexmath-font-cyrillic:1.0.7" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.netbeans:openide-lookup:1.9-patched-1.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio:2.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsio-tests:2.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.freehep:freehep-graphicsbase:2.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: junit:junit:4.10" level="project" />
|
||||||
|
<orderEntry type="module" module-name="meteoinfo-ndarray" />
|
||||||
|
<orderEntry type="library" name="Maven: org.ejml:ejml-experimental:0.40" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.ejml:ejml-simple:0.40" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.ojalgo:ojalgo:48.4.1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.github.haifengl:smile-interpolation:2.6.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:javacpp-platform:1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:openblas-platform:0.3.10-1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.locationtech.jts:jts-core:1.17.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.apache.commons:commons-imaging:1.0-alpha2" level="project" />
|
||||||
|
<orderEntry type="module" module-name="meteoinfo-projection" />
|
||||||
|
<orderEntry type="module" module-name="meteoinfo-dataframe" />
|
||||||
|
<orderEntry type="library" name="Maven: edu.ucar:netcdfAll:5.5.3-SNAPSHOT" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.github.albfernandez:juniversalchardet:2.4.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: commons-io:commons-io:2.11.0" level="project" />
|
||||||
|
<orderEntry type="library" scope="RUNTIME" name="Maven: com.formdev:svgSalamander:1.1.3" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.google.guava:guava:30.1.1-jre" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.freehep:freehep-io:2.2.2" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.apache.commons:commons-math3:3.6.1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:2.0.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.ejml:ejml-core:0.40" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.ejml:ejml-ddense:0.40" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.ejml:ejml-dsparse:0.40" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.ejml:ejml-zdense:0.40" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.ejml:ejml-fdense:0.40" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.ejml:ejml-cdense:0.40" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.ejml:ejml-fsparse:0.40" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.github.haifengl:smile-math:2.6.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:android-arm:1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:android-arm64:1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:android-x86:1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:android-x86_64:1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:ios-arm64:1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:ios-x86_64:1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:linux-armhf:1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:linux-arm64:1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:linux-ppc64le:1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:linux-x86:1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:linux-x86_64:1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:macosx-x86_64:1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:windows-x86:1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:windows-x86_64:1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:openblas:0.3.10-1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:openblas:android-arm:0.3.10-1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:openblas:android-arm64:0.3.10-1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:openblas:android-x86:0.3.10-1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:openblas:android-x86_64:0.3.10-1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:openblas:ios-arm64:0.3.10-1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:openblas:ios-x86_64:0.3.10-1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:openblas:linux-x86:0.3.10-1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:openblas:linux-x86_64:0.3.10-1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:openblas:linux-armhf:0.3.10-1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:openblas:linux-arm64:0.3.10-1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:openblas:linux-ppc64le:0.3.10-1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:openblas:macosx-x86_64:0.3.10-1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:openblas:windows-x86:0.3.10-1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bytedeco:openblas:windows-x86_64:0.3.10-1.5.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.locationtech.proj4j:proj4j:1.1.4" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: net.sf.geographiclib:GeographicLib-Java:1.52" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.checkerframework:checker-qual:3.8.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.5.1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
|
||||||
</component>
|
</component>
|
||||||
</module>
|
</module>
|
||||||
@ -5669,6 +5669,7 @@ public class ArrayMath {
|
|||||||
while (iter.hasNext()) {
|
while (iter.hasNext()) {
|
||||||
list.add(iter.getIntNext());
|
list.add(iter.getIntNext());
|
||||||
}
|
}
|
||||||
|
shape[i] = list.size();
|
||||||
} else {
|
} else {
|
||||||
list = (List<Integer>) k;
|
list = (List<Integer>) k;
|
||||||
shape[i] = list.size();
|
shape[i] = list.size();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user