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.
- Pointwise only: If
- 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
andCocip
.
- Wind shear effects: If
- Parameters:
met (
MetDataset
) – Meteorological data.params (
dict[str
,Any]
) – Model parameters. SeeDryAdvectionParams
for details.**kwargs (
Any
) – Additional parameters passed as keyword arguments.
- __init__(met=None, params=None, **params_kwargs)¶
Methods
__init__
([met, params])downselect_met
()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
istype_
.set_source
([source])Attach original or copy of input
source
tosource
.set_source_met
([optional, variable])Ensure or interpolate each required
met_variables
onsource
.transfer_met_source_attrs
([source])Transfer met source metadata from
met
tosource
.update_params
([params])Update model parameters on
params
.Attributes
Instantiated model parameters, in dictionary form
Meteorology data
Data evaluated in model
hash
Generate a unique hash for model instance.
interp_kwargs
Shortcut to create interpolation arguments from
params
.Require meteorology is not None on __init__()
Required meteorology pressure level variables.
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 thesource
.- Parameters:
source (
GeoVectorDataset
) – Arbitrary points to advect. AFlight
instance is not treated any differently than aGeoVectorDataset
. In particular, the user must explicitly setflight["azimuth"] = flight.segment_azimuth()
if they want to use wind shear effects for a flight. In the current implementation, any existing meteorological variables in thesource
are ignored. Thesource
will be interpolated against themet
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 atuple[MetVariable]
. If element is atuple[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