Persistent contrail regions (PCR = SAC & ISSR).

Equivalent to (SAC & ISSR)


pcr(air_temperature, specific_humidity, ...)

Calculate regions of persistent contrail formation.


PCR([met, params])

Determine points with likely persistent contrails (PCR).

PCRParams([copy_source, ...])

Persistent Contrail Regions (PCR) parameters.

class pycontrails.models.pcr.PCR(met=None, params=None, **params_kwargs)

Bases: Model

Determine points with likely persistent contrails (PCR).

Intersection of Ice Super Saturated Regions (ISSR) with regions in which the Schmidt-Appleman Criteria (SAC) is satisfied.

  • met (MetDataset) – Dataset containing “air_temperature”, “specific_humidity” variables

  • params (dict[str, Any], optional) – Override PCR model parameters with dictionary. See PCRGridParams for model parameters.

  • **params_kwargs – Override PCR model parameters with keyword arguments. See PCRGridParams for model parameters.


alias of PCRParams

eval(source=None, **params)

Evaluate potential contrails regions of the met grid.

  • source (GeoVectorDataset | Flight | MetDataset | None, optional) – Input GeoVectorDataset or Flight. If None, evaluates at the met grid points.

  • **params (Any) – Overwrite model parameters.


GeoVectorDataset | Flight | MetDataset – Returns 1 in potential contrail regions, 0 everywhere else. Returns np.nan if interpolating outside meteorology grid.

long_name = 'Persistent contrail regions'

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 a tuple[MetVariable]. If element is a tuple[MetVariable], the variable depends on the data source. Only one variable in the tuple is required.

name = 'pcr'

Instantiated model parameters, in dictionary form


Data evaluated in model

class pycontrails.models.pcr.PCRParams(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')), rhi_threshold=1.0, humidity_scaling=None, engine_efficiency=0.3, fuel=<factory>)

Bases: SACParams, ISSRParams

Persistent Contrail Regions (PCR) parameters.

pycontrails.models.pcr.pcr(air_temperature, specific_humidity, air_pressure, engine_efficiency, ei_h2o, q_fuel)

Calculate regions of persistent contrail formation.

Ice Super Saturated Regions (ISSR) where the Schmidt-Appleman Criteria (SAC) is satisfied.

Parameters of type ArrayLike must have compatible shapes.

  • air_temperature (ArrayLike) – A sequence or array of temperature values, [\(K\)]

  • specific_humidity (ArrayLike) – A sequence or array of specific humidity values, [\(kg_{H_{2}O} \ kg_{air}^{-1}\)]

  • 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}\)]


  • pcr (ArrayLike) – PCR state of each point indexed by the ArrayLike parameters.

  • sac (ArrayLike) – SAC state

  • issr (ArrayLike) – ISSR state