pycontrails.models.dry_advection.DryAdvection

class pycontrails.models.dry_advection.DryAdvection(met=None, params=None, **params_kwargs)

Bases: Model

Simulate “dry advection” of an emissions plume with an elliptical cross section.

The model simulates both horizontal and vertical advection of a weightless plume without any sedimentation effects. Unlike Cocip, humidity is not considered, and radiative forcing is not simulated. The model is therefore useful simulating plume advection and dispersion itself.

Added in version 0.46.0.

This model has two distinct modes of operation:

  • Pointwise only: If azimuth is None, then the model will only advect

    points without any wind shear effects. This mode is useful for testing the advection algorithm itself, and for simulating the evolution of a single point.

  • Wind shear effects: If azimuth is not None, then the model will

    advect points with wind shear effects. At each time step, the model will evolve the plume geometry according to diffusion and wind shear effects. This mode is also used in CocipGrid and Cocip.

Parameters:
  • met (MetDataset) – Meteorological data.

  • params (dict[str, Any]) – Model parameters. See DryAdvectionParams for details.

  • **kwargs (Any) – Additional parameters passed as keyword arguments.

__init__(met=None, params=None, **params_kwargs)

Methods

__init__([met, params])

downselect_met()

Downselect met domain to the max/min bounds of source.

eval([source])

Simulate dry advection (no sedimentation) of arbitrary points.

get_source_param(key[, default, set_attr])

Get source data with default set by parameter key.

require_met()

Ensure that met is a MetDataset.

require_source_type(type_)

Ensure that source is type_.

set_source([source])

Attach original or copy of input source to source.

set_source_met([optional, variable])

Ensure or interpolate each required met_variables on source .

transfer_met_source_attrs([source])

Transfer met source metadata from met to source.

update_params([params])

Update model parameters on params.

Attributes

params

Instantiated model parameters, in dictionary form

met

Meteorology data

source

Data evaluated in model

hash

Generate a unique hash for model instance.

interp_kwargs

Shortcut to create interpolation arguments from params.

long_name

met_required

Require meteorology is not None on __init__()

met_variables

Required meteorology pressure level variables.

name

processed_met_variables

Set of required parameters if processing already complete on met input.

optional_met_variables

Optional meteorology variables

default_params

alias of DryAdvectionParams

eval(source=None, **params)

Simulate dry advection (no sedimentation) of arbitrary points.

Like Cocip, this model adds a “waypoint” column to the source.

Parameters:
  • source (GeoVectorDataset) – Arbitrary points to advect. A Flight instance is not treated any differently than a GeoVectorDataset. In particular, the user must explicitly set flight["azimuth"] = flight.segment_azimuth() if they want to use wind shear effects for a flight. In the current implementation, any existing meteorological variables in the source are ignored. The source will be interpolated against the met dataset.

  • params (Any) – Overwrite model parameters defined in __init__.

Returns:

GeoVectorDataset – Advected points.

long_name = 'Emission plume advection without sedimentation'
met

Meteorology data

met_required = True

Require meteorology is not None on __init__()

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='u', standard_name='eastward_wind', long_name='Eastward Wind', level_type='isobaricInhPa', ecmwf_id=131, grib1_id=33, grib2_id=(0, 2, 2), units='m s**-1', amip='ua', description='"Eastward" indicates a vector component which is positive when directed eastward (negative westward). Wind is defined as a two-dimensional (horizontal) air velocity vector, with no vertical component.'), MetVariable(short_name='v', standard_name='northward_wind', long_name='Northward Wind', level_type='isobaricInhPa', ecmwf_id=132, grib1_id=34, grib2_id=(0, 2, 3), units='m s**-1', amip='va', description='"Northward" indicates a vector component which is positive when directed northward (negative southward). Wind is defined as a two-dimensional (horizontal) air velocity vector, with no vertical component.'), MetVariable(short_name='w', standard_name='lagrangian_tendency_of_air_pressure', long_name='Vertical Velocity (omega)', level_type='isobaricInhPa', ecmwf_id=135, grib1_id=39, grib2_id=(0, 2, 8), units='Pa s**-1', amip='wap', description='The Lagrangian tendency of air pressure, often called "omega", plays the role of the upward component of air velocity when air pressure is being used as the vertical coordinate. If the vertical air velocity is upwards, it is negative when expressed as a tendency of air pressure; downwards is positive. Air pressure is the force per unit area which would be exerted when the moving gas molecules of which the air is composed strike a theoretical surface of any orientation.'))

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 = 'dry_advection'
params

Instantiated model parameters, in dictionary form

source

Data evaluated in model