Non-LTE¶
NLTEMethod:
T: Treanor distribution using two different temperatures Tvib and Trot.
D: Vibronic distribution using Trot and custom vibrational density \(n_{\textrm{vib}}\). After D, please give the custom vibrational density file path. Ignore Tvib.
P: Using custom rovibrational population. After P, please give the custom rovibrational population file path. Ignore Tvib and Trot.
QNsVibLabel: Please provide vibrational quantum number labels seperated by ,.
QNsRotLabel: Please provide rotational quantum number labels seperated by ,.
Temperatures¶
Tvib: Please provide vibrational temperatures in unit of K.
Trot: Please provide rotational temperatures in unit of K.
|
T = ? |
|
|---|---|---|
296 |
✅ |
296 K |
300,1000,3000,8000 |
✅ |
300 K, 1000 K, 3000 K, 8000 K |
1000:5000:1000 |
✅ |
1000 K, 2000 K, 3000 K, 4000 K, 5000 K |
300, 3000 |
❌ |
|
1000: 3000: 500 |
❌ |
|
[300,3000] |
❌ |
|
[300, 3000] |
❌ |
\(N_{T_\textrm{vib}}\) and \(N_{T_\textrm{rot}}\) and \(N_P\) can be different. The total number of result files should be:
Here \(N_P\) is the number of pressures if required.
Two temperatures Treanor distribution¶
The state energy is the sum of the rotational and vibrational state energy:
The non-LTE partition function equation is:
The intensity equation is:
The emissivity equation is:
Example
# Data source #
Database ExoMol
Molecule MgH
Isotopologue 24Mg-1H
Dataset XAB
SpeciesID 501
# File path #
ReadPath /mnt/data/exomol/exomol3_data/
SavePath /home/jingxin/data/pyexocross/
LogFilePath /home/jingxin/data/pyexocross/log/MgH_ExoMol_nlte.log
# Functions #
Conversion 0
PartitionFunctions 0
SpecificHeats 0
CoolingFunctions 0
Lifetimes 0
OscillatorStrengths 0
StickSpectra 1
CrossSections 1
# Cores and chunks #
NCPUtrans 4
NCPUfiles 1
ChunkSize 1000000
RunMode CPU # CPU(default) or GPU
GPUBackend AUTO # AUTO(default), CUDA, PyTorch-CUDA, CuPy-CUDA, or MPS (used only when RunMode=GPU)
GPUBatchLines 8192 # GPU line-batch size (only used when RunMode=GPU)
GPUBatchGrid 256 # GPU grid-batch size (only used when RunMode=GPU)
# Quantum numbers for conversion, stick spectra and cross sections #
QNslabel +/- e/f ElecState v Lambda Sigma Omega
QNsformat %1s %1s %12s %3d %3d %5.1f %5.1f
# Calculate stick spectra or cross sections #
LTE/Non-LTE Non-LTE # 'LTE' or 'Non-LTE'
Temperatures 300,3000 # Temperatures in unit of K
WnWlUnit wn cm-1 # Wavenumber (wn in unit of cm-1) or wavelength (wl in unit of um or nm)
Range 0 30000 # Same unit as WnWlUnit
Absorption/Emission Absorption # 'Absorption' or 'Emission'
UncFilter(Y/N) N 0.01 # If Y, default value 0.01 cm-1
Threshold(Y/N) Y 1e-30 # If Y, default value 1e-30 cm/molecule
QNsFilter(Y/N) N e/f[] v[0,;1,;2,;3,;4,;,0;,1;,2;,3;,4]
# Calculate non-LTE #
NLTEMethod T # 'T'(TvibTrot) or 'D'(Density) or 'P'(Population)
Tvib 300,3000,5000
Trot 300,500
QNsVibLabel v,ElecState
QNsRotLabel J,e/f
# Calculate stick spectra #
PlotStickSpectra(Y/N) Y
PlotStickSpectraMethod log # Plot in linear (lin) or logarithm (log)
PlotStickSpectraWnWl wn cm-1 # Wavenumber (wn in unit cm-1) or wavelength (wl in unit[nm or um])
Y-axisLimitStickSpectra 1e-30 # Default value is 1e-30 cm/molecule
# Calculate cross sections #
Pressures 1,10 # Pressures in unit bar
Npoints/BinSize BinSize 0.1 # Same unit as WnWlUnit
Broadeners Default
Ratios 1.0
Profile Gaussian
PredissocXsec(Y/N) N
Cutoff(Y/N) Y 25 # If Y, default value 25 cm-1
DopplerHWHM(Y/N) Y 3 # Set Doppler HWHM as a constant
LorentzianHWHM(Y/N) N 0.5 # Set Lorentzian HWHM as a constant
PlotCrossSection(Y/N) Y
PlotCrossSectionMethod log # Plot in linear (lin) or logarithm (log)
PlotCrossSectionWnWl wn cm-1 # Wavenumber (wn in unit cm-1) or wavelength (wl in unit[nm or um])
Y-axisLimitXsec 1e-30 # Default value is 1e-30 cm2/molecule
# Data source #
Database ExoMolHR
Molecule NO
Isotopologue 14N-16O
SpeciesID 81
# File path #
ReadPath /mnt/data/exomolhr/exomolhr_results/
SavePath /home/jingxin/data/pyexocross/
LogFilePath /home/jingxin/data/pyexocross//log/NO_ExoMolHR_nlte.log
# Functions #
Conversion 0
PartitionFunctions 0
SpecificHeats 0
CoolingFunctions 0
Lifetimes 0
OscillatorStrengths 0
StickSpectra 1
CrossSections 1
# Cores and chunks #
NCPUtrans 4
NCPUfiles 1
ChunkSize 1000000
RunMode CPU # CPU(default) or GPU
GPUBackend AUTO # AUTO(default), CUDA, PyTorch-CUDA, CuPy-CUDA, or MPS (used only when RunMode=GPU)
GPUBatchLines 8192 # GPU line-batch size (only used when RunMode=GPU)
GPUBatchGrid 256 # GPU grid-batch size (only used when RunMode=GPU)
# Calculate stick spectra or cross sections #
LTE/Non-LTE LTE # 'LTE' or 'Non-LTE'
Temperatures 296,1000 # Temperature in unit of K
WnWlUnit wn cm-1 # Wavenumber (wn in unit of cm-1) or wavelength (wl in unit of um or nm)
Range 24 53452 # Same unit as WnWlUnit
Absorption/Emission Absorption # 'Absorption' or 'Emission'
UncFilter(Y/N) N 0.01 # If Y, default value 0.01 cm-1
Threshold(Y/N) Y 1e-30 # If Y, default value 1e-30 cm/molecule
QNsFilter(Y/N) N
# Calculate non-LTE #
NLTEMethod T # 'T'(TvibTrot) or 'D'(Density) or 'P'(Population)
Tvib 1000,2000
Trot 296
QNsVibLabel v,ElecState
QNsRotLabel J,e/f
# Calculate stick spectra #
PlotStickSpectra(Y/N) Y
PlotStickSpectraMethod log # Plot in linear (lin) or logarithm (log)
PlotStickSpectraWnWl wn cm-1 # Wavenumber (wn in unit cm-1) or wavelength (wl in unit[nm or um])
Y-axisLimitStickSpectra 1e-30 # Default value is 1e-30 cm/molecule
# Calculate cross sections #
Pressures 1 # Pressure in unit bar
Npoints/BinSize BinSize 1 # Same unit as WnWlUnit
Broadeners Default
Ratios 0.1
Profile SciPyVoigt
PredissocXsec(Y/N) N
Cutoff(Y/N) N 25 # If Y, default value 25 cm-1
DopplerHWHM(Y/N) Y 3 # Set Doppler HWHM as a constant
LorentzianHWHM(Y/N) N 0.5 # Set Lorentzian HWHM as a constant
PlotCrossSection(Y/N) Y
PlotCrossSectionMethod log # Plot in linear (lin) or logarithm (log)
PlotCrossSectionWnWl wn cm-1 # Wavenumber (wn in unit cm-1) or wavelength (wl in unit[nm or um])
Y-axisLimitXsec 1e-30 # Default value is 1e-30 cm2/molecule
# Data source #
Database HITRAN
Molecule NO
Isotopologue 14N-16O
Dataset NO-HITRAN
SpeciesID 81
# File path #
ReadPath /home/jingxin/data/HITRAN/
SavePath /home/jingxin/data/pyexocross/
LogFilePath /home/jingxin/data/pyexocross/log/NO_HITRAN_nlte.log
# Functions #
Conversion 0
PartitionFunctions 0
SpecificHeats 0
CoolingFunctions 0
Lifetimes 0
OscillatorStrengths 0
StickSpectra 1
CrossSections 1
# Cores and chunks #
NCPUtrans 32
NCPUfiles 1
ChunkSize 1000000
RunMode CPU # CPU(default) or GPU
GPUBackend AUTO # AUTO(default), CUDA, PyTorch-CUDA, CuPy-CUDA, or MPS (used only when RunMode=GPU)
GPUBatchLines 8192 # GPU line-batch size (only used when RunMode=GPU)
GPUBatchGrid 256 # GPU grid-batch size (only used when RunMode=GPU)
# Quantum numbers for conversion, stick spectra and cross sections #
QNslabel J X Omega v1 Sym F
QNsformat %5.1f %2s %3s %2d %1s %5s
# Calculate stick spectra or cross sections #
LTE/Non-LTE Non-LTE # 'LTE' or 'Non-LTE'
Temperatures 1000,2000 # Temperature in unit of K
WnWlUnit wn cm-1 # Wavenumber (wn in unit of cm-1) or wavelength (wl in unit of um or nm)
Range 0 30000 # Same unit as WnWlUnit
Absorption/Emission Absorption # 'Absorption' or 'Emission'
UncFilter(Y/N) Y 0.01 # If Y, default value 0.01
Threshold(Y/N) Y 1e-30 # If Y, default value 1e-30
QNsFilter(Y/N) N X[] Omega[] v1[1,0;2,]
# Calculate non-LTE #
NLTEMethod T # 'T'(TvibTrot) or 'D'(Density) or 'P'(Population)
Tvib 1000:2000:1000
Trot 300,400
QNsVibLabel v1,X
QNsRotLabel J
# Calculate stick spectra #
PlotStickSpectra(Y/N) Y
PlotStickSpectraMethod log # Plot in linear (lin) or logarithm (log)
PlotStickSpectraWnWl wn cm-1 # Wavenumber (wn in unit cm-1) or wavelength (wl in unit[nm or um])
Y-axisLimitStickSpectra 1e-30 # Default value is 1e-30 cm/molecule
# Calculate cross sections #
Pressures 1 # Pressures in unit bar
Npoints/BinSize BinSize 0.1 # Same unit as WnWlUnit
Broadeners Air Self
Ratios 0.7 0.3
Profile SciPyVoigt
PredissocXsec(Y/N) N
Cutoff(Y/N) Y 25 # If Y, default value 25 cm-1
DopplerHWHM(Y/N) Y 3 # Set Doppler HWHM as a constant
LorentzianHWHM(Y/N) Y 0.5 # Set Lorentzian HWHM as a constant
PlotCrossSection(Y/N) Y
PlotCrossSectionMethod log # Plot in linear (lin) or logarithm (log)
PlotCrossSectionWnWl wn cm-1 # Wavenumber (wn in unit cm-1) or wavelength (wl in unit[nm or um])
Y-axisLimitXsec 1e-30 # Default value is 1e-30 cm2/molecule
Custom Vibrational density¶
The sum of the custom vibrational density \(n_{\textrm{vib}}\) is normalized to one.
Example
# Data source #
Database ExoAtom
Atom Ar
Dataset NIST
# File path #
ReadPath /home/jingxin/data/NLTE/ #/mnt/data/exoatom/exoatom_data/
SavePath /home/jingxin/data/pyexocross/
LogFilePath /home/jingxin/data/pyexocross/log/Ar_QDB_nlte_density.log
# Functions #
Conversion 0
PartitionFunctions 0
SpecificHeats 0
CoolingFunctions 0
Lifetimes 0
OscillatorStrengths 0
StickSpectra 1
CrossSections 1
# Cores and chunks #
NCPUtrans 1
NCPUfiles 1
ChunkSize 1000000
RunMode CPU # CPU(default) or GPU
GPUBackend AUTO # AUTO(default), CUDA, PyTorch-CUDA, CuPy-CUDA, or MPS (used only when RunMode=GPU)
GPUBatchLines 8192 # GPU line-batch size (only used when RunMode=GPU)
GPUBatchGrid 256 # GPU grid-batch size (only used when RunMode=GPU)
# Quantum numbers for conversion, stick spectra, and cross sections#
QNslabel configuration Multiple parity
QNsformat %50s %30s %2s
# Calculate stick spectra or cross sections #
LTE/Non-LTE Non-LTE # LTE or Non-LTE
Temperatures 2000 # Temperatures in unit of K
WnWlUnit wn cm-1 # Wavenumber (wn in unit of cm-1) or wavelength (wl in unit of um or nm)
Range 8000 15500 # Same unit as WnWlUnit
Absorption/Emission Emission # 'Absorption' or 'Emission'
UncFilter(Y/N) N 0.01 # If Y, default value 0.01 cm-1
Threshold(Y/N) N 1e-30 # If Y, default value 1e-30 cm/molecule
QNsFilter(Y/N) Y configuration[] Multiple[] parity[]
# Calculate non-LTE #
NLTEMethod D /home/jingxin/data/NLTE/Ar/NIST/Ar_density.csv # 'T'(TvibTrot) or 'D'(Density) or 'P'(Population)
Tvib 2000
Trot 296
QNsVibLabel nan
QNsRotLabel nan
# Calculate stick spectra #
PlotStickSpectra(Y/N) Y
PlotStickSpectraMethod log # Plot in linear (lin) or logarithm (log)
PlotStickSpectraWnWl wn cm-1 # Wavenumber (wn in unit cm-1) or wavelength (wl in unit[nm or um])
Y-axisLimitStickSpectra 1e-30 # Default value is 1e-30 cm/molecule
# Calculate cross sections #
Pressures 1 # Pressures in unit bar
Npoints/BinSize BinSize 0.01 # Same unit as WnWlUnit
Broadeners Default
Ratios 1.0
Profile SciPyVoigt
PredissocXsec(Y/N) N
Cutoff(Y/N) N 25 # If Y, default value 25 cm-1
DopplerHWHM(Y/N) N 0.1 # Set Doppler HWHM as a constant
LorentzianHWHM(Y/N) N 0.5 # Set Lorentzian HWHM as a constant
PlotCrossSection(Y/N) Y
PlotCrossSectionMethod log # Plot in linear (lin) or logarithm (log)
PlotCrossSectionWnWl wn cm-1 # Wavenumber (wn in unit cm-1) or wavelength (wl in unit[nm or um])
Y-axisLimitXsec 1e-30 # Default value is 1e-30 cm2/molecule
Custom rovibrational population¶
Example
# Data source #
Database ExoAtom
Atom Ar
Dataset NIST
# File path #
ReadPath /home/jingxin/data/NLTE/ #/mnt/data/exoatom/exoatom_data/
SavePath /home/jingxin/data/pyexocross/
LogFilePath /home/jingxin/data/pyexocross/log/Ar_QDB_nlte_pop.log
# Functions #
Conversion 0
PartitionFunctions 0
SpecificHeats 0
CoolingFunctions 0
Lifetimes 0
OscillatorStrengths 0
StickSpectra 1
CrossSections 1
# Cores and chunks #
NCPUtrans 1
NCPUfiles 1
ChunkSize 1000000
RunMode CPU # CPU(default) or GPU
GPUBackend AUTO # AUTO(default), CUDA, PyTorch-CUDA, CuPy-CUDA, or MPS (used only when RunMode=GPU)
GPUBatchLines 8192 # GPU line-batch size (only used when RunMode=GPU)
GPUBatchGrid 256 # GPU grid-batch size (only used when RunMode=GPU)
# Quantum numbers for conversion, stick spectra, and cross sections#
QNslabel configuration Multiple parity
QNsformat %50s %30s %2s
# Calculate stick spectra or cross sections #
LTE/Non-LTE Non-LTE # LTE or Non-LTE
Temperatures 2000 # Temperatures in unit of K
WnWlUnit wn cm-1 # Wavenumber (wn in unit of cm-1) or wavelength (wl in unit of um or nm)
Range 8000 15500 # Same unit as WnWlUnit
Absorption/Emission Emission # 'Absorption' or 'Emission'
UncFilter(Y/N) N 0.01 # If Y, default value 0.01 cm-1
Threshold(Y/N) N 1e-30 # If Y, default value 1e-30 cm/molecule
QNsFilter(Y/N) Y configuration[] Multiple[] parity[]
# Calculate non-LTE #
NLTEMethod P /home/jingxin/data/NLTE/Ar/NIST/Ar_Ids.csv # 'T'(TvibTrot) or 'D'(Density) or 'P'(Population)
Tvib 2000
Trot 296
QNsVibLabel nan
QNsRotLabel nan
# Calculate stick spectra #
PlotStickSpectra(Y/N) Y
PlotStickSpectraMethod log # Plot in linear (lin) or logarithm (log)
PlotStickSpectraWnWl wn cm-1 # Wavenumber (wn in unit cm-1) or wavelength (wl in unit[nm or um])
Y-axisLimitStickSpectra 1e-30 # Default value is 1e-30 cm/molecule
# Calculate cross sections #
Pressures 1 # Pressures in unit bar
Npoints/BinSize BinSize 0.01 # Same unit as WnWlUnit
Broadeners Default
Ratios 1.0
Profile SciPyVoigt
PredissocXsec(Y/N) N
Cutoff(Y/N) N 25 # If Y, default value 25 cm-1
DopplerHWHM(Y/N) N 0.1 # Set Doppler HWHM as a constant
LorentzianHWHM(Y/N) N 0.5 # Set Lorentzian HWHM as a constant
PlotCrossSection(Y/N) Y
PlotCrossSectionMethod log # Plot in linear (lin) or logarithm (log)
PlotCrossSectionWnWl wn cm-1 # Wavenumber (wn in unit cm-1) or wavelength (wl in unit[nm or um])
Y-axisLimitXsec 1e-40 # Default value is 1e-30 cm2/molecule