CO2

NTECARS.CO2SpeciesType
CO2Species(; molar_fraction, distribution, v_max=(1,2,1), J_max=100,
             chi_non_resonant=4.5e-51, use_collisional_narrowing=true) -> CO2Species

Generates the transition database and then constructs a CO2Species and returns it.

Constructor Arguments

  • molar_fraction::Float64: Molar fraction of CO₂ in the gas mixture.
  • distribution::CO2Distribution: Rovibrational population distribution, e.g. CO2.MultiTemperatureDistribution.
  • v_max::Tuple{Int64,Int64,Int64}: Maximum vibrational quantum numbers (v1_max, v2_max, v3_max) used to truncate the transition database. Higher. values increase accuracy at high temperatures at the cost of computation time.
  • J_max::Int: Maximum rotational quantum number in the transition database.
  • chi_non_resonant: Non-resonant susceptibility in m²V²/m³.
  • use_collisional_narrowing::Bool: Whether to apply collisional narrowing.

Fields of returned type

  • molar_fraction::Float64: Molar fraction of CO₂ in the gas mixture.
  • χ_non_resonant::Float64: Non-resonant susceptibility in m²V²/m³.
  • transitions::Dict{String, Vector{CO2Transition}}: Transition database generated from v_max and J_max at construction time.
  • distribution::CO2Distribution: Rovibrational population distribution.
  • use_collisional_narrowing::Bool: Whether collisional narrowing is applied.
  • name::String: Species identifier, always "CO2". Required internally for constructing molar fraction dictionaries.

Notes

  • The transition database is computed once at construction via CO2.get_transition_database_CO2 and stored in transitions. Increasing v_max can cause significant comuptation times since large hamiltonians have to be solved.
  • name is always set to "CO2" and cannot be changed.

Examples

co2 = CO2Species(
    molar_fraction = 0.1,
    distribution   = CO2.MultiTemperatureDistribution(T_12 = 300.0, T_3 = 1800.0, T_rot = 300.0),
    v_max          = (1, 2, 1),
)
source
NTECARS.CO2.MultiTemperatureDistributionType
CO2.MultiTemperatureDistribution(; T_12, T_3, T_rot, iso_ID=:O16C12O16) -> df

Constructs a MultiTemperatureDistribution and returns it.

Constructor Arguments

  • T_12::AbstractFloat: Temperature of the v₁/v₂ vibrational modes in K.
  • T_3::AbstractFloat: Temperature of the v₃ vibrational mode in K.
  • T_rot::AbstractFloat: Rotational temperature in K.
  • iso_ID::Symbol: Isotopologue identifier. Defaults to :O16C12O16 which is the only one supported.

Fields of returned type

  • T_12::AbstractFloat: Temperature of the v₁/v₂ (symmetric stretch / bending)vibrational modes in K
  • T_3::AbstractFloat: Temperature of the v₃ (asymmetric stretch) vibrationalmode in K.
  • T_rot::AbstractFloat: Rotational temperature in K.
  • Q::AbstractFloat: Partition sum, computed from the other fields at construction. Should not be set manually.
  • iso_ID::Symbol: Isotopologue identifier. Defaults to :O16C12O16 which is the only one supported.

Notes

  • For a system in full thermal equilibrium, set all three temperatures equal to the gas temperature.
  • Q is computed via partition_sum and stored in the struct. It is recomputed automatically if you reconstruct the object with new temperatures.

Examples

    # Thermal equilibrium
    dist = CO2.MultiTemperatureDistribution(T_12=1500.0, T_3=1500.0, T_rot=1500.0)

    # Non-equilibrium: vibrationally excited ν₃ mode
    dist = CO2.MultiTemperatureDistribution(T_12=300.0, T_3=1800.0, T_rot=300.0)
source