LineStrength

Calculate Raman linestrength for common gas species.

class carspy.line_strength.LineStrength(species='N2', custom_dict=None)[source]

A collection of methods concerning line strength in CARS Spectrum.

Input molecular constants.

Parameters
speciesstr, optional

Specify the molecule, by default ‘N2’. Currently only supports ‘N2’.

custom_dictdict, optional

Specify custom molecular constants, by default None. This can be used to modify default molecular constants and/or add custom species. The dictionary should contain all the necessary keys as in the default:

['we', 'wx', 'wy', 'wz', 'Be', 'De', 'alpha_e', 'beta_e',
'gamma_e', 'H0', 'He', 'mu', 'MW', 'Const_Raman', 'G/A']
doppler_lw(temperature, nu_0=2300.0)[source]

Calculate the Doppler broadening FWHM of the transitions.

Warning

This simple implementation for Doppler broadening may not be accurate enough for Dualpump- or Wide-CARS.

Parameters
temperaturefloat

Translational (equilibrium) temperature of the measurement volume.

nu_0float, optional

Transition center frequency, by default 2300 in [\(\mathrm{cm}^{-1}\)]. It should actually be caclulated with line_pos for each single rotational transition. But to speed up computation, a single value is assumed for the entire CARS spectrum.

Returns
float

FWHM of the Doppler broadening

int_corr(j, branch=0)[source]

Intensity corrections Q, S and O-branches.

  • Placzek-Teller coefficient.

  • Centrifugal distortion caused by vibration-rotation interaction.

Warning

The Herman-Wallis factor for centrifugal distortion may need to be updated. It seems the commonly used James-Klemperer expression (as used in this code) for Q-branch is not correct. This matters more for lighter molecules like H2. See [Mar07] for more details.

Note

It seems CARSFT [Pal89] has set cd_corr=1 for Q-branch transitions. Here the formula from NRC [PS88] is taken. This causes a relative intensity change in Q- vs O/S-braches. Since O/S-branches are significantly weaker around v=0-1, 1-2 transitions for N2 (~2330 \(\mathrm{cm}^{-1}\)), this difference is unlikely to raise any issue.

Parameters
jint

Rotational quantum number.

branchint, optional

Q, S or O-branch with a value of 0, 2 or -2, by default 0.

Returns
pt_coeff, cd_corrfloat

Placzek-Teller coefficient and centrifugal distortion correction for the specific j-branch combination.

line_pos(v, j, branch=0)[source]

Line position of anti-Stokes transitions.

Note

Validated against information from NRC Report TR-GD-013 (B21 Tabel B-1).

Parameters
vint

Vibrational quantum number

jint

Rotational quantum number

branch0, int, optional

Q, S or O-branch with a value of 0, 2 or -2

Returns
float

Line position in wavenumber cm^(-1) for the given species at specified ro-vibrational levels

pop_factor(temperature, v, j, branch=0, **kwargs)[source]

Calculate population factor in the line intensity weight factor.

This is the population difference between the lower and upper states for the specified transition (v, j, branch) at the given temperature.

Note

Validated against information from NRC Report TR-GD-013 (D4).

Parameters
temperaturefloat

Translational (equilibrium) temperature of the measurement volume.

vint

Vibrational quantum number.

jint or array of int

Rotational quantum number. Recommended here to use an array if multiple j-levels need to be computed. This reduces the necessity of extra for-loops for j when synthesizing spectrum.

branchint, optional

Q, S or O-branch with a value of 0, 2 or -2, by default 0.

Returns
float

Fractional population difference between the lower and upper states.

Other Parameters
All keyword arguments from ``pop_frac``.
pop_frac(temperature, v, j, del_Tv=0.0, vs=20, js=100)[source]

Calculate ro-vibrational partition functions.

Parameters
temperaturefloat

Translational (equilibrium) temperature of the measurement volume in [K].

vint

Vibrational quantum number.

jint

Rotational quantum number.

del_Tvfloat

The amount Tv exceeds Tr, by default 0.0.This is only used when stimulated Raman process competes with CARS and Tv becomes obviously higher than Tr.

vsint, optional

Total number of vibrational levels to be considered, by default 20.

jsint, optional

Total number of rotational levels to be considered, by default 100.

Returns
fvjfloat

Population fraction of (v, j) state at the given temperature.

term_values(v, j, mode='sum')[source]

Calculate the term values for an anharmonic vibrating rotor.

Parameters
vint

Vibrational quantum number.

jint

Rotational quantum number.

modestr, optional

Determine what to return, by default ‘sum’:

  • ‘sum’ returns the total term values Gv + Fv

  • ‘Gv’ returns only Gv

  • ‘Fv’ returns only Fv

Returns
float

Term values for the specified ro-vibrational level depending on the mode selected.

carspy.line_strength.linewidth_isolated(pressure, temperature, j)[source]

Temperature-dependent Raman linewidths of N2 from [FMR82].

Deprecated

Use the MEG to calculate rate matrix and isolated linewidth.

Parameters
pressurefloat

Pressure in [bar].

temperaturefloat

Temperature in [K].

jint

Rotational quantum number.

Returns
Gamma_jfloat

Raman linewidth (FWHM) in [\(\mathrm{cm}^{-1}\)].