optmat.vocabulary#

The vocabulary of the curated data: quantities, abscissae, parts, conventions.

Every dataset states one quantity from QUANTITIES. The quantity fixes:

  • the family of the data, which is also the directory of its files (data/values/<family>/<material>/);

  • the units its values may carry (after the dataset’s scale);

  • the abscissae its values may be tabulated against (ABSCISSAE): a wavelength, the order of a moment, a temperature, a pressure, a density, an intensity, an electric field, a free label, or none;

  • whether it needs the state (pressure, temperature) it refers to;

  • the parameters it must state;

  • the extra per-row columns its files must carry (the upper edge of an interval).

Third-order values also state their process (PROCESSES), the contributions they contain (PARTS) and, for a hyperpolarizability or susceptibility, the convention of its definition (CONVENTIONS). The documentation page The curated data lists everything here.

Module Attributes

FAMILIES

The families of quantities, each a directory of data/values/.

ABSCISSAE

The kinds of abscissa, each with its units.

QUANTITIES

Every quantity a dataset may hold.

POLARIZABILITY_QUANTITIES

Quantities that each determine the polarizability at their frequency.

PROCESSES

Third-order processes: static, the intensity-dependent index gamma(-w; w, w, -w) ("kerr"), gamma(-2w; w, w, 0) ("eshg"), gamma(-w; w, 0, 0) ("dc_kerr"), gamma(-3w; w, w, w) ("thg"), coherent anti-Stokes Raman gamma(-w_as; w_p, w_p, -w_s) ("cars").

PARTS

Which contributions a third-order value contains.

POLARIZABILITY_CORRECTIONS

The parts of a polarizability_correction: the zero-point vibrational average, the pure vibrational polarizability, their sum, and a thermal (rovibrational) correction at parameters.temperature_k.

CONVENTIONS

The definitions a third-order value may be printed in (parameters.convention).

Classes

Quantity(meaning, family[, units, ...])

What a dataset's values are, and what a dataset of them must state.

optmat.vocabulary.ABSCISSAE: Final = mappingproxy({'wavelength': frozenset({'hartree', 'um-1', 'um', 'rydberg', 'cm-1', 'eV', 'nm', 'angstrom', 'm'}), 'order': frozenset({'1'}), 'temperature': frozenset({'K', 'C'}), 'pressure': frozenset({'kPa', 'MPa', 'atm', 'psia', 'bar', 'Pa', 'torr'}), 'density': frozenset({'mol/cm3', 'm-3', 'cm-3', 'mol/L', 'mol/m3', 'amagat'}), 'intensity': frozenset({'W/cm2', 'W/m2'}), 'field': frozenset({'V/m', 'au', 'V/cm'}), 'duration': frozenset({'ps', 'fs', 'ns', 's'}), 'label': frozenset({''}), 'none': frozenset({''})})#

The kinds of abscissa, each with its units.

wavelength is a wavelength, a vacuum (or air) wavenumber or a photon energy; the cell inf is the static limit and not stated a wavelength the source does not give. order is the order of a moment. duration is a pulse duration (a laser-damage threshold against pulse length). field is the amplitude of a static (or peak) electric field; au is the atomic unit of field, E_h / (e a_0). A label abscissa is not a number: its cells name the rows (a transition, a state). none has empty cells: the value stands alone (an ionisation energy), described by its parameters.

optmat.vocabulary.CONVENTIONS: Final = mappingproxy({'T': 'Taylor series (Buckingham-Orr; Shelton & Rice 1994): p = ... + gamma E^3 / 6', 'ward_1969': "Ward's per-molecule chi in esu (Ward & New 1969, Ward & Miller 1979, Ward & Elliott 1984, Lundeen et al. 1983): gamma_T = 6 chi", 'lehmeier_1985': "Lehmeier et al.'s gamma, P = 4 eps0 chi E E E: gamma_T = 24 gamma", 'chi_cars_per_amagat': 'CARS chi(3) per amagat (Farrow et al., Hahn & Lee): gamma_T = 2 chi / N0', 'rosasco_1985_hellwarth': "Rosasco & Hurst's 3 sigma / 24 per amagat, Hellwarth's sigma = N gamma_T / 3", 'hellwarth_sigma': "Hellwarth's electronic sigma of P = (1/2) sigma E E^2 (Gaussian esu)", 'maker_terhune_c': "Maker & Terhune's c tensor (Gaussian esu), as used by Hellwarth 1990", 'bjorklund_1975': "Bjorklund's chi(3) for harmonic generation in esu (Mahon et al. 1979)"})#

The definitions a third-order value may be printed in (parameters.convention).

optmat.vocabulary.FAMILIES: Final = ('refractive', 'absorption', 'third_order', 'raman', 'ionisation', 'damage', 'composition', 'transport', 'thermodynamic')#

The families of quantities, each a directory of data/values/.

optmat.vocabulary.PARTS: Final = frozenset({'electronic', 'electronic_vibrational', 'instantaneous', 'rotational', 'total', 'unknown', 'vibrational', 'vibrational_rotational'})#

Which contributions a third-order value contains. vibrational_rotational is Shelton’s gamma^vR; instantaneous a pulse-dependent mixture (Nibbering’s).

optmat.vocabulary.POLARIZABILITY_CORRECTIONS: Final = frozenset({'pure_vibrational', 'thermal', 'vibrational', 'zero_point_vibrational'})#

The parts of a polarizability_correction: the zero-point vibrational average, the pure vibrational polarizability, their sum, and a thermal (rovibrational) correction at parameters.temperature_k.

optmat.vocabulary.POLARIZABILITY_QUANTITIES: Final = frozenset({'molar_refractivity', 'polarizability', 'refractivity', 'refractivity_per_density'})#

Quantities that each determine the polarizability at their frequency.

optmat.vocabulary.PROCESSES: Final = frozenset({'cars', 'dc_kerr', 'eshg', 'kerr', 'other', 'static', 'thg'})#

Third-order processes: static, the intensity-dependent index gamma(-w; w, w, -w) (“kerr”), gamma(-2w; w, w, 0) (“eshg”), gamma(-w; w, 0, 0) (“dc_kerr”), gamma(-3w; w, w, w) (“thg”), coherent anti-Stokes Raman gamma(-w_as; w_p, w_p, -w_s) (“cars”).

optmat.vocabulary.QUANTITIES: Final = mappingproxy({'refractivity': Quantity(meaning="n - 1 at the dataset's state", family='refractive', units=frozenset({'1'}), abscissae=frozenset({'wavelength'}), needs_state=True, required=(), columns=()), 'polarizability': Quantity(meaning='per-particle dipole polarizability; parameters.temperature_k for a temperature-dependent (rotationally averaged) value', family='refractive', units=frozenset({'angstrom3', 'cm3', 'SI', 'au'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=(), columns=()), 'molar_refractivity': Quantity(meaning='A_R = N_A alpha / (3 eps0); parameters.temperature_k where stated', family='refractive', units=frozenset({'cm3/mol'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=(), columns=()), 'refractivity_per_density': Quantity(meaning="(n - 1) / N at the dataset's state", family='refractive', units=frozenset({'cm3'}), abscissae=frozenset({'wavelength'}), needs_state=True, required=(), columns=()), 'refractivity_ratio': Quantity(meaning='(n - 1) of the gas over (n - 1) of parameters.reference_material at the same density', family='refractive', units=frozenset({'1'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=('reference_material',), columns=()), 'refractivity_difference': Quantity(meaning="n(lambda) - n(parameters.reference_wavelength_nm) at the dataset's state", family='refractive', units=frozenset({'1'}), abscissae=frozenset({'wavelength'}), needs_state=True, required=('reference_wavelength_nm',), columns=()), 'partial_refractivity': Quantity(meaning="one stated contribution to n - 1 at the dataset's state (parameters.contribution: what it is and how it was obtained)", family='refractive', units=frozenset({'1'}), abscissae=frozenset({'wavelength'}), needs_state=True, required=('contribution',), columns=()), 'polarizability_correction': Quantity(meaning='a correction to the electronic polarizability (parameters.part, one of POLARIZABILITY_CORRECTIONS), never a total', family='refractive', units=frozenset({'angstrom3', 'cm3', 'SI', 'au'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=('part',), columns=()), 'magnetic_susceptibility': Quantity(meaning='the diamagnetic (or paramagnetic) susceptibility: per particle (au, the magnetizability chi_0) or molar (cm3/mol, m3/mol: A_mu or chi_M)', family='refractive', units=frozenset({'cm3/mol', 'm3/mol', 'au'}), abscissae=frozenset({'wavelength', 'none'}), needs_state=False, required=(), columns=()), 'cauchy_moment': Quantity(meaning='dipole-oscillator-strength sum S(k), the order k as the abscissa', family='refractive', units=frozenset({'au'}), abscissae=frozenset({'order'}), needs_state=False, required=(), columns=()), 'phase_match_density_ratio': Quantity(meaning='density ratio rho_gas / rho_reference at which two gases phase-match a harmonic (parameters.reference_material, .harmonic)', family='refractive', units=frozenset({'1'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=('reference_material', 'harmonic'), columns=()), 'phase_match_density': Quantity(meaning='density at which a harmonic is phase-matched against a stated mismatch (parameters.harmonic, .phase_mismatch_per_m)', family='refractive', units=None, abscissae=frozenset({'wavelength'}), needs_state=False, required=('harmonic', 'phase_mismatch_per_m'), columns=()), 'phase_mismatch_per_density': Quantity(meaning='wave-vector mismatch of a harmonic per particle, Delta k / N (parameters.harmonic)', family='refractive', units=None, abscissae=frozenset({'wavelength'}), needs_state=False, required=(), columns=()), 'group_delay': Quantity(meaning="group delay per unit length at the dataset's state", family='refractive', units=frozenset({'fs/m'}), abscissae=frozenset({'wavelength'}), needs_state=True, required=(), columns=()), 'group_delay_dispersion': Quantity(meaning="GDD per unit length at the dataset's state", family='refractive', units=frozenset({'fs2/m'}), abscissae=frozenset({'wavelength'}), needs_state=True, required=(), columns=()), 'third_order_dispersion': Quantity(meaning="TOD per unit length at the dataset's state", family='refractive', units=frozenset({'fs3/m'}), abscissae=frozenset({'wavelength'}), needs_state=True, required=(), columns=()), 'dispersion_kappa': Quantity(meaning="kappa = -lambda^2 d/dlambda[(n - 1)/lambda] at the dataset's state", family='refractive', units=frozenset({'1'}), abscissae=frozenset({'wavelength'}), needs_state=True, required=(), columns=()), 'verdet_constant': Quantity(meaning="Verdet constant at the dataset's state (unit as printed)", family='refractive', units=None, abscissae=frozenset({'wavelength'}), needs_state=True, required=(), columns=()), 'verdet_constant_ratio': Quantity(meaning="Verdet constant over its value at parameters.reference_wavelength_nm (the medium of the reference wavelength as the dataset's)", family='refractive', units=frozenset({'1'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=('reference_wavelength_nm',), columns=()), 'rayleigh_cross_section': Quantity(meaning='Rayleigh scattering cross section per particle (parameters.king_factor as used)', family='refractive', units=frozenset({'cm2'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=(), columns=()), 'rayleigh_cross_section_ratio': Quantity(meaning='Rayleigh cross section of the gas over that of parameters.reference_material', family='refractive', units=frozenset({'1'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=('reference_material',), columns=()), 'refractivity_virial_coefficient': Quantity(meaning='refractivity (or dielectric) virial coefficient of parameters.order (2 for B_R, the default; 3 for C_R; 4 for D_R); parameters.temperature_k', family='refractive', units=frozenset({'cm12/mol4', 'cm9/mol3', 'cm6/mol2'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=(), columns=()), 'unlike_pair_refractivity_virial_coefficient': Quantity(meaning="the refractivity (or dielectric) virial coefficient B_st of the dataset's material with parameters.partner, the first in sorted order (the cell inf is static); parameters.temperature_k, .contribution (induced, or total including orientation)", family='refractive', units=frozenset({'cm6/mol2'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=('partner', 'temperature_k', 'contribution'), columns=()), 'refractive_index': Quantity(meaning="n, the real part of a solid's complex index n + ik (parameters.axis for an anisotropic crystal; .temperature_k, .grade, .form where stated)", family='refractive', units=frozenset({'1'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=(), columns=()), 'permittivity_real': Quantity(meaning="epsilon_1, the real part of a solid's relative permittivity epsilon_1 + i epsilon_2 = (n + ik)^2 (parameters as for refractive_index)", family='refractive', units=frozenset({'1'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=(), columns=()), 'refractive_index_decrement': Quantity(meaning="delta = 1 - n, the decrement of the real part of a solid's complex index below 1, as x-ray tables print it (parameters as for refractive_index)", family='refractive', units=frozenset({'1'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=(), columns=()), 'refractive_index_deviation': Quantity(meaning="a solid's measured n minus the value of the formula parameters.reference (a formula id, source/formula) at the same wavelength", family='refractive', units=frozenset({'1'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=('reference',), columns=()), 'thermo_optic_coefficient': Quantity(meaning='dn/dT of a solid (parameters.temperature_k)', family='refractive', units=frozenset({'1/K'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=(), columns=()), 'absorption_cross_section': Quantity(meaning='total photoabsorption cross section per particle, below or above the ionisation threshold (parameters.temperature_k)', family='absorption', units=frozenset({'Mb', 'cm2'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=(), columns=()), 'photoionization_cross_section': Quantity(meaning='photoionisation cross section per particle, above the ionisation threshold', family='absorption', units=frozenset({'Mb', 'cm2'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=(), columns=()), 'excited_state_photoionization_cross_section': Quantity(meaning="one-photon photoionisation cross section of an excited level of the atom or molecule (parameters.initial_level: its configuration, term and J, or the source's label), against the photon's wavelength", family='absorption', units=frozenset({'Mb', 'cm2'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=('initial_level',), columns=()), 'photodissociation_quantum_yield': Quantity(meaning="number of a stated product (or of a channel's events) formed per photon absorbed, against the photon's wavelength (parameters.product; .temperature_k where stated)", family='absorption', units=frozenset({'1'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=('product',), columns=()), 'transition_dipole_moment': Quantity(meaning="electronic transition dipole moment between two states of the dataset's species (parameters.states: the pair, the row label; .geometry: the nuclear geometry, e.g. a bond length, where the source gives more than one; .component: parallel or perpendicular to the axis, where stated)", family='absorption', units=frozenset({'au', 'D'}), abscissae=frozenset({'none', 'label'}), needs_state=False, required=('states',), columns=()), 'two_photon_transition_strength': Quantity(meaning="rotationally averaged two-photon transition strength delta^TP of the bound transition from the ground state to the labelled final level, in atomic units (parameters.polarization: linear_parallel or circular; .frequencies: degenerate, or the second photon's energy; .rotational_average: the rotational average's F, G and H as the source states them)", family='absorption', units=frozenset({'au'}), abscissae=frozenset({'label'}), needs_state=False, required=('polarization', 'frequencies', 'rotational_average'), columns=()), 'two_photon_transition_amplitude': Quantity(meaning="signed second-order amplitude of the bound two-photon transition from the ground state to a stated final level, both photons polarised along z and both orderings summed, against the first photon's energy (the second's is the level energy less it), as the source defines it (parameters.final_level; .gauge; .polarization; .definition: the source's equation; .m_zz_per_unit: the zz element of the two-photon kernel M_zz, in atomic units, per unit of the printed amplitude; .method). Bound final levels only", family='absorption', units=frozenset({'1', 'au'}), abscissae=frozenset({'wavelength', 'label'}), needs_state=False, required=('final_level', 'gauge', 'polarization', 'definition', 'm_zz_per_unit', 'method'), columns=()), 'two_photon_excitation_cross_section': Quantity(meaning="frequency-integrated generalised cross section sigma_0^(2) of the two-photon excitation of a bound level from the ground state, W = sigma_0^(2) g Phi^2 with Phi the photon flux and g the line profile normalised to one (parameters.frequency_variable: angular or ordinary, the variable g is normalised in; .polarization; .photon_statistics: corrected, or the G2(0) of the measurement); a label names the final level, a wavelength is the exciting photon's", family='absorption', units=frozenset({'m4', 'cm4'}), abscissae=frozenset({'wavelength', 'label'}), needs_state=False, required=('frequency_variable', 'polarization', 'photon_statistics'), columns=()), 'integrated_cross_section': Quantity(meaning='absorption cross section integrated from the abscissa to the x_upper column (unit as printed: cm2 nm, cm2 cm-1)', family='absorption', units=None, abscissae=frozenset({'wavelength'}), needs_state=False, required=(), columns=('x_upper',)), 'polarizability_imaginary': Quantity(meaning='imaginary part of the polarizability above threshold', family='absorption', units=frozenset({'angstrom3', 'cm3', 'SI', 'au'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=(), columns=()), 'oscillator_strength': Quantity(meaning='absorption oscillator strength of the transition at the abscissa, or of the labelled transition', family='absorption', units=frozenset({'1'}), abscissae=frozenset({'wavelength', 'label'}), needs_state=False, required=(), columns=()), 'transition_probability': Quantity(meaning='Einstein coefficient A_ki of spontaneous emission from the upper level k to the lower level i of the transition at the abscissa, or of the labelled transition (parameters.notation: the level notation of the labels, e.g. paschen or racah)', family='absorption', units=frozenset({'1/s'}), abscissae=frozenset({'wavelength', 'label'}), needs_state=False, required=('notation',), columns=()), 'radiative_lifetime': Quantity(meaning='radiative lifetime of the labelled level of the atom or molecule, the inverse of its total rate of spontaneous decay in the absence of collisions (parameters.method: how it was obtained, e.g. measured and extrapolated to zero pressure, semiempirical or calculated)', family='absorption', units=frozenset({'ps', 'fs', 'ns', 's'}), abscissae=frozenset({'label'}), needs_state=False, required=('method',), columns=()), 'level_polarizability': Quantity(meaning="dipole polarizability of a stated level of the atom (parameters.configuration, .term, .j), at the abscissa's wavelength or static (inf): the level shifts by -(1/2) alpha F^2 in a static field F and by -(1/4) alpha F^2 in an oscillating field of amplitude F (parameters.component: scalar, vector or tensor, with .definition the source's shift formula for a vector or tensor part; .complex_part: real or imaginary; .method). Not the gas's polarizability, which is polarizability", family='absorption', units=frozenset({'SI', 'cm3', 'angstrom3', 'kHz/(kV/cm)2', 'au'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=('configuration', 'term', 'j', 'component', 'complex_part', 'method'), columns=()), 'light_shift_coefficient': Quantity(meaning="shift of the frequency of the multiphoton transition from the ground level to a stated final level per unit laser intensity, in the linear regime, positive to the blue, against the exciting photon's wavelength (parameters.final_level; .photons; .intensity_definition: how the source defines the intensity; .polarization where stated)", family='absorption', units=frozenset({'Hz/(W/cm2)'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=('final_level', 'photons', 'intensity_definition'), columns=()), 'pressure_line_coefficient': Quantity(meaning="collisional (pressure) broadening or shift of a bound line of the atom, per unit perturber pressure or number density, in the impact regime (parameters.effect: broadening, or shift, positive to the blue; .transition: the line in the source's notation; .photons: 1 or 2; .frequency_scale: transition, the line's own frequency, laser, the exciting photon's, or not stated; .width: fwhm, hwhm, not stated, or none for a shift; .frequency_variable: ordinary or angular; .perturber: self or a gas; .temperature_k where stated). A two-photon line's broadening is the decay of the ground-to-final coherence: its pure dephasing is what remains after the radiative and quenching parts", family='absorption', units=frozenset({'MHz/mbar', 'cm3/s', 'GHz/amagat', 'cm-1/amagat', 'MHz/torr'}), abscissae=frozenset({'label', 'temperature'}), needs_state=False, required=('effect', 'transition', 'photons', 'frequency_scale', 'width', 'frequency_variable', 'perturber'), columns=()), 'collisional_quenching_rate_coefficient': Quantity(meaning='rate coefficient of the collisional removal of the labelled excited level of the atom or molecule by a perturber, from 1/tau = 1/tau_rad + k2 [M] + k3 [M]^2 (parameters.perturber: a gas, or self; .order: 2, bimolecular, or 3, termolecular; .channel: total, or the product level of a state-to-state coefficient; .temperature_k where stated). A loss of population, not the pure dephasing of the level', family='absorption', units=frozenset({'cm6/s', 'm6/s', 'm3/s', 'cm3/s'}), abscissae=frozenset({'label'}), needs_state=False, required=('perturber', 'order', 'channel'), columns=()), 'interval_oscillator_strength': Quantity(meaning='oscillator strength integrated from the abscissa to the x_upper column', family='absorption', units=frozenset({'1'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=(), columns=('x_upper',)), 'partial_cauchy_moment': Quantity(meaning='S(parameters.order) of the oscillator strength from the abscissa to the x_upper column', family='absorption', units=frozenset({'au'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=('order',), columns=('x_upper',)), 'differential_oscillator_strength': Quantity(meaning='df/dE of the continuum at the photon energy', family='absorption', units=frozenset({'1/hartree', '1/rydberg', '1/eV'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=(), columns=()), 'extinction_coefficient': Quantity(meaning="k, the imaginary part of a solid's complex index n + ik (k > 0 absorbs; parameters as for refractive_index)", family='absorption', units=frozenset({'1'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=(), columns=()), 'permittivity_imaginary': Quantity(meaning="epsilon_2, the imaginary part of a solid's relative permittivity (epsilon_2 > 0 absorbs; parameters as for refractive_index)", family='absorption', units=frozenset({'1'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=(), columns=()), 'internal_transmittance': Quantity(meaning='the fraction of the light entering a sample that reaches its far surface, reflection losses excluded, as a glass catalogue prints it (parameters.thickness_mm: the path length)', family='absorption', units=frozenset({'1'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=('thickness_mm',), columns=()), 'absorption_coefficient': Quantity(meaning='attenuation coefficient of the intensity per length in a solid (parameters.base: e for I = I0 exp(-a z), 10 for I = I0 10^(-a z))', family='absorption', units=frozenset({'m-1', 'cm-1'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=('base',), columns=()), 'band_gap': Quantity(meaning='band-gap energy of a solid (parameters.kind: optical, tauc, urbach, photoconductivity, exciton, mobility, effective (fitted to a model), assumed for a value a model takes as input, or not stated)', family='absorption', units=frozenset({'eV'}), abscissae=frozenset({'none', 'label'}), needs_state=False, required=('kind',), columns=()), 'hyperpolarizability': Quantity(meaning='second hyperpolarizability gamma per molecule (parameters.process, .convention, .part)', family='third_order', units=frozenset({'SI', 'esu', 'au'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=('process', 'convention', 'part'), columns=()), 'hyperpolarizability_ratio': Quantity(meaning='gamma of the gas over gamma of parameters.reference_material (parameters.process, .part)', family='third_order', units=frozenset({'1'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=('reference_material', 'process', 'part'), columns=()), 'nonlinear_index': Quantity(meaning="n2, n = n0 + n2 I, at the dataset's state for a gas (parameters.part, .coefficient; for a solid also .pulse_fs, .technique, .polarization where stated)", family='third_order', units=frozenset({'m2/W', 'cm2/W'}), abscissae=frozenset({'wavelength'}), needs_state=True, required=('part', 'coefficient'), columns=()), 'nonlinear_index_field': Quantity(meaning="n2 per squared field, n = n0 + n2 <E^2> (the esu n2 of the solid-state literature; parameters.definition: the source's field average, e.g. '<E^2>' of the real field, or the squared amplitude; .part, .coefficient)", family='third_order', units=frozenset({'m2/V2', 'esu'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=('definition', 'part', 'coefficient'), columns=()), 'nonlinear_index_ratio': Quantity(meaning='n2 of the gas over n2 of parameters.reference_material at the same density (parameters.part)', family='third_order', units=frozenset({'1'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=('reference_material', 'part'), columns=()), 'nonlinear_susceptibility': Quantity(meaning="third-order susceptibility chi(3), per volume at the dataset's state or per unit density as printed (parameters.process, .convention, .part)", family='third_order', units=None, abscissae=frozenset({'wavelength'}), needs_state=False, required=('process', 'convention', 'part'), columns=()), 'kerr_constant': Quantity(meaning="dc Kerr constant at the dataset's state, as printed (parameters.temperature_k)", family='third_order', units=None, abscissae=frozenset({'wavelength'}), needs_state=True, required=(), columns=()), 'molar_kerr_constant': Quantity(meaning='the zero-density molar Kerr constant A_K (parameters.temperature_k; against temperature, parameters.wavelength_nm)', family='third_order', units=None, abscissae=frozenset({'wavelength', 'temperature'}), needs_state=False, required=(), columns=()), 'kerr_virial_coefficient': Quantity(meaning='Kerr virial coefficient, B_K (parameters.order 2, the default) or C_K (order 3) (parameters.temperature_k; against temperature, parameters.wavelength_nm)', family='third_order', units=None, abscissae=frozenset({'wavelength', 'temperature'}), needs_state=False, required=(), columns=()), 'hyperpolarizability_density_coefficient': Quantity(meaning='the density (pair) coefficient of chi(3) per molecule, chi(3)/N = gamma-term [1 + b N + ...] (parameters.process, .part; parameters.pair for a mixture)', family='third_order', units=None, abscissae=frozenset({'wavelength'}), needs_state=False, required=('process', 'part'), columns=()), 'two_photon_absorption_coefficient': Quantity(meaning='two-photon absorption coefficient beta of a solid, dI/dz = -alpha I - beta I^2 (parameters.pulse_fs, .technique where stated)', family='third_order', units=frozenset({'m/W', 'cm/GW', 'cm/W', 'cm/MW'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=(), columns=()), 'multiphoton_absorption_coefficient': Quantity(meaning='N-photon absorption coefficient of a solid, dI/dz = -beta_N I^N (parameters.photons; unit as printed)', family='third_order', units=None, abscissae=frozenset({'wavelength'}), needs_state=False, required=('photons',), columns=()), 'critical_power': Quantity(meaning='critical power for self-focusing (parameters.definition: the formula the source uses, or measured)', family='third_order', units=frozenset({'W', 'MW'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=('definition',), columns=()), 'polarizability_anisotropy': Quantity(meaning='polarizability anisotropy Delta alpha per molecule', family='raman', units=frozenset({'angstrom3', 'cm3', 'SI', 'au'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=(), columns=()), 'polarizability_derivative': Quantity(meaning='derivative of the polarizability with respect to a normal coordinate (parameters.component: mean or anisotropy; .mode; .coordinate where it is not the mass-weighted normal coordinate: a bond length or a symmetry coordinate, as the source defines it; unit as printed)', family='raman', units=None, abscissae=frozenset({'wavelength'}), needs_state=False, required=('component', 'mode'), columns=()), 'depolarization_ratio': Quantity(meaning='depolarization ratio of scattered light (parameters.kind: rayleigh, raman, rotational_raman; .polarization: linear or natural)', family='raman', units=frozenset({'1'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=('kind', 'polarization'), columns=()), 'raman_shift': Quantity(meaning='Raman shift or band origin of the labelled transition (parameters.transition when not per row)', family='raman', units=frozenset({'cm-1'}), abscissae=frozenset({'none', 'label'}), needs_state=False, required=(), columns=()), 'rotational_constant': Quantity(meaning='spectroscopic constant of the rotational ladder (parameters.constant: B, D, H, alpha_e, ...; .vibrational_state_v)', family='raman', units=frozenset({'GHz', 'MHz', 'cm-1'}), abscissae=frozenset({'none', 'label'}), needs_state=False, required=('constant',), columns=()), 'vibrational_term_value': Quantity(meaning='vibrational energy G(v) of the level labelled by the row (the vibrational quantum number v), from parameters.reference: v0 (the ground level) or minimum (the potential minimum); .electronic_state', family='raman', units=frozenset({'cm-1'}), abscissae=frozenset({'none', 'label'}), needs_state=False, required=('reference',), columns=()), 'raman_scattering_activity': Quantity(meaning="Raman scattering activity of a normal mode, the invariant combination g (45 a'^2 + 7 g'^2) of the derivatives of the mean (a') and anisotropic (g') polarizability with respect to the mass-weighted normal coordinate, g the mode's degeneracy (parameters.mode; unit as printed, e.g. angstrom4/amu)", family='raman', units=None, abscissae=frozenset({'wavelength', 'none', 'label'}), needs_state=False, required=('mode',), columns=()), 'raman_cross_section_ratio': Quantity(meaning="Raman scattering cross section of a transition relative to that of parameters.reference_material's reference transition (.reference_transition, usually the N2 Q branch) at the same excitation (parameters.transition; .geometry: how the scattering was observed)", family='raman', units=frozenset({'1'}), abscissae=frozenset({'wavelength', 'none', 'label'}), needs_state=False, required=('transition', 'reference_material'), columns=()), 'raman_cross_section': Quantity(meaning='differential Raman scattering cross section of a transition (parameters.transition; unit as printed, e.g. cm2/sr)', family='raman', units=None, abscissae=frozenset({'wavelength'}), needs_state=False, required=('transition',), columns=()), 'raman_linewidth': Quantity(meaning='linewidth of a Raman transition, or its pressure-broadening coefficient (parameters.transition, .width: hwhm, fwhm or not stated; .perturber for a coefficient: self, a gas id or air; .term for one term of a width law, e.g. the Dicke coefficient A of A/rho; .temperature_k where stated; unit as printed)', family='raman', units=None, abscissae=frozenset({'pressure', 'none', 'density', 'temperature', 'label'}), needs_state=False, required=('transition', 'width'), columns=()), 'raman_line_shift': Quantity(meaning='pressure (collisional) shift of a Raman line, or its coefficient (parameters.transition, .perturber, .temperature_k where stated; unit as printed)', family='raman', units=None, abscissae=frozenset({'pressure', 'none', 'density', 'temperature', 'label'}), needs_state=False, required=('transition', 'perturber'), columns=()), 'broadening_temperature_exponent': Quantity(meaning="exponent N of a broadening coefficient's temperature law gamma(T) = gamma(T0) (T0 / T)^N (parameters.transition, .perturber, .reference_temperature_k)", family='raman', units=frozenset({'1'}), abscissae=frozenset({'none', 'label'}), needs_state=False, required=('transition', 'perturber'), columns=()), 'raman_transition_polarizability': Quantity(meaning='matrix element of a polarizability invariant between the two states of a Raman transition, alpha_if (parameters.transition, .invariant: mean or anisotropy, or the component parallel or perpendicular to the molecular axis)', family='raman', units=frozenset({'angstrom3', 'cm3', 'SI', 'au'}), abscissae=frozenset({'wavelength', 'none', 'label'}), needs_state=False, required=('transition', 'invariant'), columns=()), 'raman_gain': Quantity(meaning="steady-state stimulated Raman gain coefficient of a transition at the dataset's state (parameters.transition, .pump_nm when not the abscissa; unit as printed, e.g. cm/GW)", family='raman', units=None, abscissae=frozenset({'pressure', 'wavelength', 'none', 'density', 'label'}), needs_state=True, required=('transition',), columns=()), 'dephasing_time': Quantity(meaning='coherence (T2) time of a Raman transition (parameters.transition; unit as printed)', family='raman', units=None, abscissae=frozenset({'pressure', 'none', 'density', 'temperature', 'label'}), needs_state=False, required=('transition',), columns=()), 'raman_fraction': Quantity(meaning="fraction f_R of the delayed (Raman) response in a solid's nonlinear response (parameters.definition: how the source defines it)", family='raman', units=frozenset({'1'}), abscissae=frozenset({'none', 'label'}), needs_state=False, required=('definition',), columns=()), 'raman_mode': Quantity(meaning='one mode of a multi-mode Raman response of a solid: its amplitude, with the columns shift (cm-1) and the gaussian_width and lorentzian_width (as printed, parameters.width: fwhm or hwhm)', family='raman', units=None, abscissae=frozenset({'none', 'label'}), needs_state=False, required=('width',), columns=('shift', 'gaussian_width', 'lorentzian_width')), 'raman_response_time': Quantity(meaning='a time constant of a model Raman response (parameters.constant: tau1, tau2, ...; .model)', family='raman', units=frozenset({'ps', 'fs', 'ns', 's'}), abscissae=frozenset({'none', 'label'}), needs_state=False, required=('constant', 'model'), columns=()), 'ionization_energy': Quantity(meaning='ionisation energy (parameters.kind: adiabatic or vertical; .final_state)', family='ionisation', units=frozenset({'hartree', 'cm-1', 'eV'}), abscissae=frozenset({'none', 'label'}), needs_state=False, required=('kind',), columns=()), 'level_energy': Quantity(meaning='energy of a level of an atom or ion above its ground level (parameters.configuration, .term, .j)', family='ionisation', units=frozenset({'cm-1', 'eV'}), abscissae=frozenset({'none', 'label'}), needs_state=False, required=('configuration', 'term', 'j'), columns=()), 'electronic_state_energy': Quantity(meaning='energy of an excited electronic state of a molecule above its ground state (parameters.state; .kind: Te, the potential minimum, T0, the lowest vibrational level, or onset, the long-wavelength onset of a band; .one_photon and .two_photon from the ground state: allowed, forbidden or spin_forbidden, where stated)', family='ionisation', units=frozenset({'cm-1', 'eV'}), abscissae=frozenset({'none', 'label'}), needs_state=False, required=('state', 'kind'), columns=()), 'appearance_energy': Quantity(meaning='appearance energy of a fragment ion (parameters.fragment)', family='ionisation', units=frozenset({'cm-1', 'eV'}), abscissae=frozenset({'none', 'label'}), needs_state=False, required=('fragment',), columns=()), 'dissociation_energy': Quantity(meaning="energy of a dissociation limit of the dataset's species (neutral or ion) into the stated products (parameters.products, with their states where stated; .kind: D0 from the lowest level, De from the potential minimum, or threshold: the limit measured from the ground state of parameters.reference_state, e.g. the neutral molecule for a dication's limit)", family='ionisation', units=frozenset({'hartree', 'cm-1', 'eV', 'kJ/mol'}), abscissae=frozenset({'none', 'label'}), needs_state=False, required=('products', 'kind'), columns=()), 'ionic_state_population': Quantity(meaning='population of an electronic state of the molecular ion that a pulse leaves, as a fraction of the ions or of the molecules (parameters.state; .normalisation: ions or molecules; .wavelength_nm, .pulse_fs, .polarization: the pulse; .intensity_w_cm2 where one number; .method: measured, or the calculation), against peak intensity or as one number', family='ionisation', units=frozenset({'1'}), abscissae=frozenset({'intensity', 'none', 'label'}), needs_state=False, required=('state', 'normalisation', 'wavelength_nm', 'pulse_fs', 'polarization'), columns=()), 'fragmentation_branching_ratio': Quantity(meaning="yield of one fragmentation channel of the dataset's species over that of a reference (parameters.channel: the products; .reference: the parent ion, all ions, all channels, or another channel; .excitation: photoionisation at the abscissa's photon energy, or a strong-field pulse with .wavelength_nm, .pulse_fs, .polarization; .detection_correction: how the detector's efficiency was treated), against intensity, the photon's wavelength or energy, or as one number", family='ionisation', units=frozenset({'1'}), abscissae=frozenset({'intensity', 'wavelength', 'none', 'label'}), needs_state=False, required=('channel', 'reference', 'excitation', 'detection_correction'), columns=()), 'kinetic_energy_release': Quantity(meaning='total kinetic energy the fragments of a channel carry away (parameters.channel; .kind: peak, mean, asymptotic or calculated; .state: the parent state where assigned; the pulse where measured)', family='ionisation', units=frozenset({'eV'}), abscissae=frozenset({'none', 'label'}), needs_state=False, required=('channel', 'kind'), columns=()), 'dissociation_time': Quantity(meaning="time constant of a dissociation of the dataset's species (parameters.channel; .kind: lifetime of the dissociating state, appearance time of a fragment, or calculated; a collisional time states its .pressure and partner)", family='ionisation', units=frozenset({'ps', 'fs', 'ns', 's'}), abscissae=frozenset({'label', 'none', 'pressure'}), needs_state=False, required=('channel', 'kind'), columns=()), 'dissociative_recombination_rate_coefficient': Quantity(meaning="rate coefficient of the dissociative recombination of the dataset's molecular ion with an electron, k in dn_e/dt = -k n_e n_ion (parameters.products, or all channels; .law: value, the coefficient at the abscissa's electron temperature, or power_law, the value at .reference_temperature_k scaled by (T_ref/T_e)^.exponent; .temperature_range_k where stated)", family='ionisation', units=frozenset({'m3/s', 'cm3/s'}), abscissae=frozenset({'none', 'label', 'temperature'}), needs_state=False, required=('products', 'law'), columns=()), 'ionization_rate': Quantity(meaning='field-ionisation rate against intensity or field (parameters.wavelength_nm, inf for a static field; .polarization: linear, circular or static; unit as printed)', family='ionisation', units=None, abscissae=frozenset({'intensity', 'field'}), needs_state=False, required=('wavelength_nm', 'polarization'), columns=()), 'ionization_yield': Quantity(meaning='ion yield or probability against intensity (parameters.wavelength_nm, .pulse_fs, .polarization; .pulse_envelope and .cep where stated; unit as printed)', family='ionisation', units=None, abscissae=frozenset({'intensity'}), needs_state=False, required=('wavelength_nm', 'pulse_fs', 'polarization'), columns=()), 'ground_state_survival': Quantity(meaning='probability that a pulse leaves the atom in its initial (ground) state, against the peak intensity, read at a stated time; its complement counts excitation as well as ionisation (parameters.wavelength_nm, .pulse_fs, .polarization, .read_at: when the population is read; .pulse_envelope and .cep where stated)', family='ionisation', units=frozenset({'1'}), abscissae=frozenset({'intensity'}), needs_state=False, required=('wavelength_nm', 'pulse_fs', 'polarization', 'read_at'), columns=()), 'ionization_yield_spectrum': Quantity(meaning="ion yield or probability against the photon energy or wavelength at a fixed peak intensity (parameters.intensity_w_cm2, .pulse_cycles: the pulse's length in optical cycles, which fixes its duration at each wavelength, .polarization; .pulse_envelope and .cep where stated; unit as printed)", family='ionisation', units=None, abscissae=frozenset({'wavelength'}), needs_state=False, required=('intensity_w_cm2', 'pulse_cycles', 'polarization'), columns=()), 'ionization_yield_ratio': Quantity(meaning="ratio of the material's ionisation yield, as the source defines it (singly charged ions, or all channels, or electrons), to a companion species' measured with it, against intensity, wavelength or as one number (parameters.companion; .wavelength_nm, .pulse_fs, .polarization where one value; .detection_correction: how the ion detector's efficiency was treated, e.g. none, Z/sqrt(M), optical)", family='ionisation', units=frozenset({'1'}), abscissae=frozenset({'intensity', 'wavelength', 'label'}), needs_state=False, required=('companion', 'polarization', 'detection_correction'), columns=()), 'ionization_phase_shift': Quantity(meaning="phase shift of a probe beam from the electrons a pump pulse leaves, averaged over the probe's profile and normalised to a gas pressure, against the pump's peak intensity (parameters.wavelength_nm, .pulse_fs, .polarization: the pump; .probe_wavelength_nm; .pressure_atm: the pressure normalised to; the beams' sizes where stated)", family='ionisation', units=frozenset({'rad'}), abscissae=frozenset({'intensity'}), needs_state=False, required=('wavelength_nm', 'pulse_fs', 'polarization', 'probe_wavelength_nm', 'pressure_atm'), columns=()), 'tunnelling_structure_coefficient': Quantity(meaning='asymptotic coefficient of the ionising orbital in a tunnelling theory, one per partial wave l, the row label (parameters.model: moadk, adk or wfat; .orbital; .m; .normalisation: how the coefficient is defined)', family='ionisation', units=frozenset({'1'}), abscissae=frozenset({'none', 'label'}), needs_state=False, required=('model', 'orbital', 'm', 'normalisation'), columns=()), 'ionization_model_parameter': Quantity(meaning='a constant fitted within a named ionisation-rate model, not a property of the material alone (parameters.model, .parameter: its symbol; unit as printed)', family='ionisation', units=None, abscissae=frozenset({'none', 'label'}), needs_state=False, required=('model', 'parameter'), columns=()), 'saturation_intensity': Quantity(meaning='peak intensity at which a pulse saturates the ionisation of an atom, as the source defines it (parameters.definition; .photons, .pulse_fs, .pulse_shape: the pulse)', family='ionisation', units=frozenset({'W/cm2', 'W/m2'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=('definition', 'pulse_fs'), columns=()), 'multiphoton_ionization_cross_section': Quantity(meaning='generalised N-photon ionisation cross section (parameters.photons; unit as printed, cm^2N s^(N-1))', family='ionisation', units=None, abscissae=frozenset({'wavelength'}), needs_state=False, required=('photons',), columns=()), 'multiphoton_ionization_polarization_ratio': Quantity(meaning='ratio of the generalised N-photon ionisation cross section for circular polarisation to that for linear (parameters.photons)', family='ionisation', units=frozenset({'1'}), abscissae=frozenset({'wavelength'}), needs_state=False, required=('photons',), columns=()), 'effective_mass': Quantity(meaning="effective mass of a solid's carriers, in electron masses (parameters.carrier: electron, hole, reduced or not stated)", family='ionisation', units=frozenset({'m_e'}), abscissae=frozenset({'none', 'label'}), needs_state=False, required=('carrier',), columns=()), 'electron_collision_time': Quantity(meaning="momentum-relaxation (collision) time of a solid's conduction electrons in a Drude model", family='ionisation', units=frozenset({'ps', 'fs', 'ns', 's'}), abscissae=frozenset({'none', 'label'}), needs_state=False, required=(), columns=()), 'electron_trapping_time': Quantity(meaning='decay (trapping or recombination) time of the conduction-electron density', family='ionisation', units=frozenset({'ps', 'fs', 'ns', 's'}), abscissae=frozenset({'none', 'label'}), needs_state=False, required=(), columns=()), 'avalanche_coefficient': Quantity(meaning='impact-ionisation (avalanche) coefficient of a solid (unit as printed: cm2/J, 1/s, ...; parameters.definition)', family='ionisation', units=None, abscissae=frozenset({'wavelength', 'none', 'label'}), needs_state=False, required=('definition',), columns=()), 'atom_density': Quantity(meaning='density of the particles available for ionisation in a solid (parameters.counts: molecules, atoms or valence_electrons)', family='ionisation', units=frozenset({'m-3', 'cm-3'}), abscissae=frozenset({'none', 'label'}), needs_state=False, required=('counts',), columns=()), 'damage_threshold_fluence': Quantity(meaning='laser-induced damage or breakdown threshold fluence (parameters.site: bulk or surface; .criterion; .shots; the pulse length as the abscissa (duration, with .wavelength_nm) or as .pulse_fs)', family='damage', units=frozenset({'J/cm2', 'J/m2'}), abscissae=frozenset({'wavelength', 'duration'}), needs_state=False, required=('site',), columns=()), 'damage_threshold_intensity': Quantity(meaning='laser-induced damage or breakdown threshold intensity (parameters as for damage_threshold_fluence)', family='damage', units=frozenset({'W/cm2', 'W/m2'}), abscissae=frozenset({'wavelength', 'duration'}), needs_state=False, required=('site',), columns=()), 'damage_threshold_energy': Quantity(meaning='pulse energy at the damage or breakdown threshold for a stated focusing (parameters as for damage_threshold_fluence, and .numerical_aperture)', family='damage', units=frozenset({'J', 'uJ', 'nJ'}), abscissae=frozenset({'wavelength', 'duration'}), needs_state=False, required=('site',), columns=()), 'mole_fraction': Quantity(meaning="amount-of-substance fraction of the material (a gas) in a mixture (parameters.mixture: the mixture, as the source defines it, such as 'dry air')", family='composition', units=frozenset({'ppm', 'mol/mol', '1'}), abscissae=frozenset({'none'}), needs_state=False, required=('mixture',), columns=()), 'dilute_viscosity': Quantity(meaning='the shear viscosity of the gas in the limit of zero density, a function of temperature alone', family='transport', units=frozenset({'Pa s'}), abscissae=frozenset({'temperature'}), needs_state=False, required=(), columns=()), 'ideal_gas_heat_capacity': Quantity(meaning='the molar isobaric heat capacity of the ideal gas, c_p0(T)', family='transport', units=frozenset({'J/(mol K)'}), abscissae=frozenset({'temperature'}), needs_state=False, required=(), columns=()), 'second_virial_coefficient': Quantity(meaning='the second (pressure, density) virial coefficient B(T) of the pure gas, Z = 1 + B rho + ...', family='thermodynamic', units=frozenset({'cm3/mol'}), abscissae=frozenset({'temperature'}), needs_state=False, required=(), columns=()), 'cross_second_virial_coefficient': Quantity(meaning="the unlike-pair second virial coefficient B_12(T) of the dataset's material with parameters.partner, B_mix = sum_st x_s x_t B_st", family='thermodynamic', units=frozenset({'cm3/mol'}), abscissae=frozenset({'temperature'}), needs_state=False, required=('partner',), columns=()), 'excess_second_virial_coefficient': Quantity(meaning="the excess second virial coefficient E = B_12 - (B_11 + B_22)/2 of the dataset's material with parameters.partner", family='thermodynamic', units=frozenset({'cm3/mol'}), abscissae=frozenset({'temperature'}), needs_state=False, required=('partner',), columns=()), 'mixture_second_virial_coefficient': Quantity(meaning="the second virial coefficient B_mix(T) of a binary mixture of the dataset's material, at mole fraction parameters.mole_fraction, with parameters.partner", family='thermodynamic', units=frozenset({'cm3/mol'}), abscissae=frozenset({'temperature'}), needs_state=False, required=('partner', 'mole_fraction'), columns=()), 'mixture_compressibility_factor': Quantity(meaning="Z = p / (rho R T) of a binary mixture of the dataset's material, at mole fraction parameters.mole_fraction, with parameters.partner; parameters.temperature_k", family='thermodynamic', units=frozenset({'1'}), abscissae=frozenset({'pressure', 'density'}), needs_state=False, required=('partner', 'mole_fraction', 'temperature_k'), columns=()), 'mixture_density': Quantity(meaning="the molar (or mass) density of a binary mixture of the dataset's material, at mole fraction parameters.mole_fraction, with parameters.partner; parameters.temperature_k", family='thermodynamic', units=frozenset({'mol/cm3', 'mol/L', 'mol/m3', 'g/cm3', 'kg/m3'}), abscissae=frozenset({'pressure'}), needs_state=False, required=('partner', 'mole_fraction', 'temperature_k'), columns=())})#

Every quantity a dataset may hold.

class optmat.vocabulary.Quantity(meaning, family, units=None, abscissae=frozenset({'wavelength'}), needs_state=False, required=(), columns=())[source]#

Bases: object

What a dataset’s values are, and what a dataset of them must state.

Attributes:
meaningstr

The definition, with its parameters.

familystr

One of FAMILIES.

unitsfrozenset of str or None

The units the values may carry after scale; None for any unit (stated as printed, the quantity’s meaning says how to read it).

abscissaefrozenset of str

The abscissae the values may be tabulated against.

needs_statebool

Whether the values refer to a state (they depend on density).

requiredtuple of str

Parameters every dataset of the quantity must state.

columnstuple of str

Extra per-row columns every data file of the quantity must carry.

abscissae: frozenset[str] = frozenset({'wavelength'})#
columns: tuple[str, ...] = ()#
family: str#
meaning: str#
needs_state: bool = False#
required: tuple[str, ...] = ()#
units: frozenset[str] | None = None#