pycontrails.models.sac¶
Schmidt-Appleman criteria (SAC).
Functions
|
Estimate temperature threshold for persistent contrail formation. |
|
Calculate temperature at which liquid saturation curve has slope G. |
|
Calculate temperature at which liquid saturation curve has slope G. |
|
Calculate critical relative humidity threshold of contrail formation. |
|
Points at which the Schmidt-Appleman Criteria is satisfied. |
|
Calculate the slope of the mixing line in a temperature-humidity diagram. |
Classes
|
Determine points where Schmidt-Appleman Criteria is satisfied. |
|
Parameters for |
- class pycontrails.models.sac.SAC(met=None, params=None, **params_kwargs)¶
Bases:
Model
Determine points where Schmidt-Appleman Criteria is satisfied.
- Parameters:
met (
MetDataset
) – Dataset containing “air_temperature”, “specific_humidity” variables.params (
dict[str
,Any]
, optional) – OverrideSACParams
with dictionary.**params_kwargs – Override
SACParams
with keyword arguments.
- eval(source=None, **params)¶
Evaluate the Schmidt-Appleman criteria along flight trajectory or on meteorology grid.
Changed in version 0.27.0: Humidity scaling now handled automatically. This is controlled by model parameter
humidity_scaling
.Changed in version 0.48.0: If the
source
is aMetDataset
, the returned object will also be aMetDataset
. Previous the “sac”MetDataArray
was returned.- Parameters:
source (
GeoVectorDataset | Flight | MetDataset | None
, optional) – Input GeoVectorDataset or Flight. If None, evaluates at themet
grid points.**params (
Any
) – Overwrite model parameters before eval
- Returns:
GeoVectorDataset | Flight | MetDataset
– Returns 1 where SAC is satisfied, 0 everywhere else. Returnsnp.nan
if interpolating outside meteorology grid.
- long_name = 'Schmidt-Appleman contrail formation criteria'¶
- met¶
Meteorology data
- met_variables = (MetVariable(short_name='t', standard_name='air_temperature', long_name='Air Temperature', level_type='isobaricInhPa', ecmwf_id=130, grib1_id=11, grib2_id=(0, 0, 0), units='K', amip='ta', description='Air temperature is the bulk temperature of the air, not the surface (skin) temperature.'), MetVariable(short_name='q', standard_name='specific_humidity', long_name='Specific Humidity', level_type='isobaricInhPa', ecmwf_id=133, grib1_id=51, grib2_id=(0, 1, 0), units='kg kg**-1', amip='hus', description='Specific means per unit mass. Specific humidity is the mass fraction of water vapor in (moist) air.'))¶
Required meteorology pressure level variables. Each element in the list is a
MetVariable
or atuple[MetVariable]
. If element is atuple[MetVariable]
, the variable depends on the data source. Only one variable in the tuple is required.
- name = 'sac'¶
- params¶
Instantiated model parameters, in dictionary form
- source¶
Data evaluated in model
- class pycontrails.models.sac.SACParams(copy_source=True, interpolation_method='linear', interpolation_bounds_error=False, interpolation_fill_value=nan, interpolation_localize=False, interpolation_use_indices=False, interpolation_q_method=None, verify_met=True, downselect_met=True, met_longitude_buffer=(0.0, 0.0), met_latitude_buffer=(0.0, 0.0), met_level_buffer=(0.0, 0.0), met_time_buffer=(np.timedelta64(0, 'h'), np.timedelta64(0, 'h')), engine_efficiency=0.3, fuel=<factory>, humidity_scaling=None)¶
Bases:
ModelParams
Parameters for
SAC
.- engine_efficiency = 0.3¶
Jet engine efficiency, [\(0 - 1\)]
- fuel¶
Fuel type. Overridden by Fuel provided on input
source
attributes
- humidity_scaling = None¶
Humidity scaling
- pycontrails.models.sac.T_critical_sac(T_LM, relative_humidity, G, maxiter=10)¶
Estimate temperature threshold for persistent contrail formation.
This quantity is defined as
T_LC
in Schumann (see reference below). Equation (11) of this paper implicitly definesT_LC
as the solution to the equationT_LC = T_LM - (e_L(T_LM) - rh * e_L(T_LC)) / G
For relative humidity above 0.999, the corresponding entry from
T_LM
is returned (page 10, top of the right-hand column). Otherwise, the solution to the equation above is approximated via Newton’s method.- Parameters:
T_LM (
ArrayLike
) – Output ofT_sat_liquid()
calculation.relative_humidity (
ArrayLike
) – Relative humidity valuesG (
ArrayLike
) – Slope of the mixing line in a temperature-humidity diagram.maxiter (
int
, optional) – Passed intoscipy.optimize.newton()
. By default, 10.
- Returns:
ArrayLike
– Critical temperature threshold values.
References
- pycontrails.models.sac.T_sat_liquid(G)¶
Calculate temperature at which liquid saturation curve has slope G.
- Parameters:
G (
ArrayLike
) – Slope of the mixing line in a temperature-humidity diagram.- Returns:
ArrayLike
– Maximum threshold temperature for 100% relative humidity with respect to liquid, [\(K\)]. This can also be interpreted as the temperature at which the liquid saturation curve has slope G.
References
See also
Notes
Defined (using notation T_LM) in [Schumann, 1996] in the first full paragraph on page 10 as
for T = T_LC, the mixing line just touches [is tangent to] the saturation curve. See equation (10).
The formula used here is taken from equation (31).
- pycontrails.models.sac.T_sat_liquid_high_accuracy(G, maxiter=5)¶
Calculate temperature at which liquid saturation curve has slope G.
The function
T_sat_liquid()
gives a first order approximation to equation (10) of the Schumann paper referenced below. This function uses Newton’s method to compute the numeric solution to (10).- Parameters:
G (
ArrayLike
) – Slope of the mixing linemaxiter (
int
, optional) – Passed intoscipy.optimize.newton()
. BecauseT_sat_liquid
is already fairly accurate, few iterations are needed for Newton’s method to converge. By default, 5.
- Returns:
ArrayLike
– Maximum threshold temperature for 100% relative humidity with respect to liquid, [\(K\)].
References
See also
T_sat_liquid_high()
- pycontrails.models.sac.rh_critical_sac(air_temperature, T_sat_liquid, G)¶
Calculate critical relative humidity threshold of contrail formation.
- Parameters:
- Returns:
ArrayLike
– Critical relative humidity of contrail formation, [\([0 - 1]\)]
References
- pycontrails.models.sac.sac(rh, rh_crit_sac)¶
Points at which the Schmidt-Appleman Criteria is satisfied.
Parameters of type
ArrayLike
must have compatible shapes.- Parameters:
- Returns:
ArrayLike
– SAC state of each point indexed by theArrayLike
parameters. Returned array has floatingdtype
with values0.0 signifying SAC fails
1.0 signifying SAC holds
NaN entries of parameters propagate into the returned array.
- pycontrails.models.sac.slope_mixing_line(specific_humidity, air_pressure, engine_efficiency, ei_h2o, q_fuel)¶
Calculate the slope of the mixing line in a temperature-humidity diagram.
This quantity is often notated with
G
in the literature.- Parameters:
specific_humidity (
ArrayLike
) – A sequence or array of specific humidity values, [\(kg_{H_{2}O} \ kg_{air}\)]air_pressure (
ArrayLike
) – A sequence or array of atmospheric pressure values, [\(Pa\)].engine_efficiency (
float | ArrayLike
) – Engine efficiency, [\(0 - 1\)]ei_h2o (
float
) – Emission index of water vapor, [\(kg \ kg^{-1}\)]q_fuel (
float
) – Specific combustion heat of fuel combustion, [\(J \ kg^{-1} \ K^{-1}\)]
- Returns:
ArrayLike
– Slope of the mixing line in a temperature-humidity diagram, [\(Pa \ K^{-1}\)]