pycontrails.models.cocip.wake_vortex¶
Wave-vortex downwash functions.
This module includes equations from the original CoCiP model
[Schumann, 2012]. An alternative set of equations based on
[Unterstrasser, 2016] is available in
unterstrasser_wake_vortex
.
Unterstrasser Notes¶
Improved estimation of the survival fraction of the contrail ice crystal number f_surv
during the wake-vortex phase. This is a parameterised model that is developed based on
outputs provided by large eddy simulations.
For comparison, CoCiP assumes that f_surv
is equal to the change in the contrail ice water
content (by mass) before and after the wake vortex phase. However, for larger (smaller) ice
particles, their survival fraction by number could be smaller (larger) than their survival fraction
by mass. This is particularly important in the “soot-poor” scenario, for example, in cleaner
lean-burn engines where their soot emissions can be 3-4 orders of magnitude lower than conventional
RQL engines.
Functions
Calculate the maximum contrail downward displacement under strongly stratified conditions. |
|
Calculate the maximum contrail downward displacement under weakly/stably stratified conditions. |
|
|
Calculate the effective time scale of the wake vortex. |
|
Calculate the initial contrail depth. |
|
Calculate the initial contrail width. |
|
Calculate the maximum contrail downward displacement after the wake vortex phase. |
|
Calculate the normalized dissipation rate of the sinking wake vortex. |
Calculate the turbulent kinetic energy dissipation rate (epsilon). |
|
|
Calculate the wake vortex separation. |
- pycontrails.models.cocip.wake_vortex.downward_displacement_strongly_stratified(wingspan, true_airspeed, aircraft_mass, rho_air, n_bv)¶
Calculate the maximum contrail downward displacement under strongly stratified conditions.
- Parameters:
wingspan (
npt.NDArray[np.float64] | float
) – aircraft wingspan, [\(m\)]true_airspeed (
npt.NDArray[np.float64]
) – true airspeed for each waypoint, [\(m s^{-1}\)]aircraft_mass (
npt.NDArray[np.float64] | float
) – aircraft mass for each waypoint, [\(kg\)]rho_air (
npt.NDArray[np.float64]
) – density of air for each waypoint, [\(kg m^{-3}\)]n_bv (
npt.NDArray[np.float64]
) – Brunt-Vaisaila frequency, [\(s^{-1}\)]
- Returns:
npt.NDArray[np.float64]
– Maximum contrail downward displacement, strongly stratified conditions, [\(m\)]
Notes
See section 2.5 (pg 547 - 548) of [Schumann, 2012].
References
- pycontrails.models.cocip.wake_vortex.downward_displacement_weakly_stratified(wingspan, true_airspeed, aircraft_mass, rho_air, n_bv, dz_max_strong, ds_dz, t_0, effective_vertical_resolution, wind_shear_enhancement_exponent)¶
Calculate the maximum contrail downward displacement under weakly/stably stratified conditions.
- Parameters:
wingspan (
npt.NDArray[np.float64] | float
) – aircraft wingspan, [\(m\)]true_airspeed (
npt.NDArray[np.float64]
) – true airspeed for each waypoint, [\(m s^{-1}\)]aircraft_mass (
npt.NDArray[np.float64] | float
) – aircraft mass for each waypoint, [\(kg\)]rho_air (
npt.NDArray[np.float64]
) – density of air for each waypoint, [\(kg m^{-3}\)]n_bv (
npt.NDArray[np.float64]
) – Brunt-Vaisaila frequency, [\(s^{-1}\)]dz_max_strong (
npt.NDArray[np.float64]
) – Max contrail downward displacement under strongly stratified conditions, [\(m\)]ds_dz (
npt.NDArray[np.float64]
) – Difference in wind speed over dz in the atmosphere, [\(m s^{-1} / m\)]t_0 (
npt.NDArray[np.float64]
) – Wake vortex effective time scale, [\(s\)]effective_vertical_resolution (
float
) – Passed through towind_shear.wind_shear_enhancement_factor()
, [\(m\)]wind_shear_enhancement_exponent (
npt.NDArray[np.float64] | float
) – Passed through towind_shear.wind_shear_enhancement_factor()
- Returns:
npt.NDArray[np.float64]
– Maximum contrail downward displacement, weakly/stably stratified conditions, [\(m\)]
Notes
See section 2.5 (pg 548) of [Schumann, 2012].
References
- pycontrails.models.cocip.wake_vortex.effective_time_scale(wingspan, true_airspeed, aircraft_mass, rho_air)¶
Calculate the effective time scale of the wake vortex.
- Parameters:
wingspan (
npt.NDArray[np.float64]
) – aircraft wingspan, [\(m\)]true_airspeed (
npt.NDArray[np.float64]
) – true airspeed for each waypoint, [\(m \ s^{-1}\)]aircraft_mass (
npt.NDArray[np.float64]
) – aircraft mass for each waypoint, [\(kg\)]rho_air (
npt.NDArray[np.float64]
) – density of air for each waypoint, [\(kg \ m^{-3}\)]
- Returns:
npt.NDArray[np.float64]
– Wake vortex effective time scale, [\(s\)]
Notes
See section 2.5 (pg 547) of [Schumann, 2012].
References
- pycontrails.models.cocip.wake_vortex.initial_contrail_depth(dz_max, initial_wake_vortex_depth)¶
Calculate the initial contrail depth.
- Parameters:
dz_max (
npt.NDArray[np.float64]
) – Max contrail downward displacement after the wake vortex phase, [\(m\)]initial_wake_vortex_depth (
float | npt.NDArray[np.float64]
) – Initial wake vortex depth scaling factor. Denoted C_D0 in eq (14) in [Schumann, 2012].
- Returns:
npt.NDArray[np.float64]
– Initial contrail depth, [\(m\)]
- pycontrails.models.cocip.wake_vortex.initial_contrail_width(wingspan, dz_max)¶
Calculate the initial contrail width.
- Parameters:
wingspan (
npt.NDArray[np.float64] | float
) – aircraft wingspan, [\(m\)]dz_max (
npt.NDArray[np.float64]
) – Max contrail downward displacement after the wake vortex phase, [\(m\)] Only the size of this array is used; the values are ignored.
- Returns:
npt.NDArray[np.float64]
– Initial contrail width, [\(m\)]
- pycontrails.models.cocip.wake_vortex.max_downward_displacement(wingspan, true_airspeed, aircraft_mass, air_temperature, dT_dz, ds_dz, air_pressure, effective_vertical_resolution, wind_shear_enhancement_exponent)¶
Calculate the maximum contrail downward displacement after the wake vortex phase.
- Parameters:
wingspan (
npt.NDArray[np.float64] | float
) – aircraft wingspan, [\(m\)]true_airspeed (
npt.NDArray[np.float64]
) – true airspeed for each waypoint, [\(m s^{-1}\)]aircraft_mass (
npt.NDArray[np.float64] | float
) – aircraft mass for each waypoint, [\(kg\)]air_temperature (
npt.NDArray[np.float64]
) – ambient temperature for each waypoint, [\(K\)]dT_dz (
npt.NDArray[np.float64]
) – potential temperature gradient, [\(K m^{-1}\)]ds_dz (
npt.NDArray[np.float64]
) – Difference in wind speed over dz in the atmosphere, [\(m s^{-1} / m\)]air_pressure (
npt.NDArray[np.float64]
) – pressure altitude at each waypoint, [\(Pa\)]effective_vertical_resolution (
float
) – Passed through towind_shear.wind_shear_enhancement_factor()
, [\(m\)]wind_shear_enhancement_exponent (
npt.NDArray[np.float64] | float
) – Passed through towind_shear.wind_shear_enhancement_factor()
- Returns:
npt.NDArray[np.float64]
– Max contrail downward displacement after the wake vortex phase, [\(m\)]
References
- pycontrails.models.cocip.wake_vortex.normalized_dissipation_rate(epsilon, wingspan, true_airspeed, aircraft_mass, rho_air)¶
Calculate the normalized dissipation rate of the sinking wake vortex.
- Parameters:
epsilon (
npt.NDArray[np.float64]
) – turbulent kinetic energy dissipation rate, [\(m^{2} s^{-3}\)]wingspan (
npt.NDArray[np.float64] | float
) – aircraft wingspan, [\(m\)]true_airspeed (
npt.NDArray[np.float64]
) – true airspeed for each waypoint, [\(m s^{-1}\)]aircraft_mass (
npt.NDArray[np.float64]
) – aircraft mass for each waypoint, [\(kg\)]rho_air (
npt.NDArray[np.float64]
) – density of air for each waypoint, [\(kg m^{-3}\)]
- Returns:
npt.NDArray[np.float64]
– Normalized dissipation rate of the sinking wake vortex
Notes
See page 548 of [Schumann, 2012].
References
- pycontrails.models.cocip.wake_vortex.turbulent_kinetic_energy_dissipation_rate(ds_dz, shear_enhancement_factor=1.0)¶
Calculate the turbulent kinetic energy dissipation rate (epsilon).
The shear enhancement factor is used to account for any sub-grid scale turbulence.
- Parameters:
ds_dz (
npt.NDArray[np.float64]
) – Difference in wind speed over dz in the atmosphere, [\(m s^{-1} / m\)]shear_enhancement_factor (
npt.NDArray[np.float64] | float
) – Multiplication factor to enhance the wind shear
- Returns:
npt.NDArray[np.float64]
– turbulent kinetic energy dissipation rate, [\(m^{2} s^{-3}\)]
Notes
See eq. (37) in [Schumann, 2012].
In a personal correspondence, Dr. Schumann identified a print error in Eq. (37) of the 2012 paper where the shear term should not be squared. The correct equation is listed in Eq. (13) [Schumann and Gerz, 1995].
References
- pycontrails.models.cocip.wake_vortex.wake_vortex_separation(wingspan)¶
Calculate the wake vortex separation.
- Parameters:
wingspan (
npt.NDArray[np.float64] | float
) – aircraft wingspan, [\(m\)]- Returns:
npt.NDArray[np.float64]
– wake vortex separation, [\(m\)]