User-supplied GRID profiles¶
A PROFILES block selects a line profile supplied as a table of wavenumber
offsets and normalized densities. Each entry specifies a temperature in K,
a band-symmetry label, and a filename. Band symmetry is the direct product of
the upper- and lower-state irreps:
Temperature 1000
Range 0 10000
Npoints 10001
absorption
Symmetry C2v
Nirreps = 4
QN
IRREP 9
END
PROFILES
1000 A1 profile_H2S_A1_T1000K.prof
1000 B2 profile_H2S_B2_T1000K.prof
END
cutoff 1000
output H2S_grid_T1000
States i-H2S_p24_linearised_0_0.states
Transitions i-H2S_p24_linearised_0_0.trans
The top-level SYMMETRY selects the group. Inside QN, IRREP and
SYMMETRY are aliases for the state-file column. That column is read for
both states. The column number counts from the state ID in column 1 and must
be at least 5. The former UPPER/LOWER selection is not used. Labels can contain
up to 20 characters, matching the existing QN storage.
Supported groups are C2v (alias C2v(M), irreps A1, A2, B1, B2), C3v
(alias C3v(M), irreps A1, A2, E), and Cs (alias Cs(M), irreps A’, A”).
Cs also accepts two apostrophes, A’’, for double prime. Group and irrep names
are case-insensitive. Nirreps is inferred as 4, 3 or 2 respectively; the
optional Nirreps = 4 or Nirreps 4 checks the count. The group and count
may appear before or after PROFILES and QN.
The internal profile name is GRID, but no standalone GRID keyword should
be added: that keyword is already an alias for the existing multiple-output-grid
block. A PROFILES block selects this profile automatically. HWHM is unused.
Temperature arrays¶
For TEMPERATURE-LIST or TEMPERATURE-ARRAY, provide one profile for every
requested temperature and every profile label, for example:
temperature-list
1000
2000
end
PROFILES
1000 A1 profile_H2S_A1_T1000K.prof
2000 A1 profile_H2S_A1_T2000K.prof
1000 B2 profile_H2S_B2_T1000K.prof
2000 B2 profile_H2S_B2_T2000K.prof
END
Profile entries may occur in any order. Output columns follow the temperature list. Duplicate or missing temperature/label pairs and unrequested temperatures are errors. Matching uses a relative temperature tolerance of 1e-10; no temperature interpolation or extrapolation is performed. An unknown state irrep or a missing product-component profile is an error if used by a retained transition. Only the band irreps actually needed require profiles; a state irrep need not have a profile under its own label.
Irrep products and degenerate bands¶
The product table for C2v is:
x |
A1 |
A2 |
B1 |
B2 |
|---|---|---|---|---|
A1 |
A1 |
A2 |
B1 |
B2 |
A2 |
A2 |
A1 |
B2 |
B1 |
B1 |
B1 |
B2 |
A1 |
A2 |
B2 |
B2 |
B1 |
A2 |
A1 |
For C3v, A1 is the identity, A2 x A2 = A1, A2 x E = E, and E x E = A1 + A2 + E. For Cs, A’ is the identity and A” x A” = A’.
For the reducible E x E product, the initial profile prescription is the equal
average (f_A1 + f_A2 + f_E)/3. Each component is interpolated on its own
grid. All three component profiles must be supplied at every requested
temperature. Their weights sum to one, preserving the original line intensity;
the E profile is not given an additional degeneracy factor.
This average is a provisional shape model. Group theory supplies the product decomposition, not the relative transition strengths. No additional dipole selection rules or physical branch weights are inferred.
The new symmetry.f90 module follows TROVE’s SymmetryT structure. It stores
sym%Nirreps, sym%label, sym%degen and integer product multiplicities
sym%product(gamma,upper,lower). gamma_lookup(upper,lower) returns the
multiplicity vector; for C3v E x E it returns [1,1,1] in A1,A2,E order.
The profile averaging policy is separate, in configure_band_weights in
grid_profiles.f90, so a future physical weighting can replace it without
changing the group algebra.
Profile files and sampling¶
Files have two whitespace-separated columns: offset in cm-1 and profile density per unit wavenumber. Offsets must strictly increase and span zero; values must be finite and nonnegative. At least two points are required. All files must have the same point count, but their grids may differ and may be nonuniform. Asymmetric profiles are allowed; they are not automatically recentered. Blank lines and parenthesised comments are allowed. Paths are relative to the working directory and should be quoted when they contain spaces.
The trapezoidal integral must be positive and within 1e-3 of one. The original integral is printed, and accepted profiles are divided by that integral. Profiles are then evaluated by linear interpolation at output wavenumber minus line centre. No extrapolation is made beyond the supplied support.
Uniform grids use direct arithmetic indexing with spacing determined once when each profile is loaded. Nonuniform profiles use binary search when a new interpolation interval cannot be reached by advancing one neighbouring interval. Both paths interpolate using the actual tabulated wavenumbers and values.
An explicit CUTOFF is in cm-1. If omitted, the tables’ full support is used. Lines centred outside RANGE are included when their wings can overlap it. Truncation by CUTOFF or RANGE does not cause renormalization. This is point sampling: an output grid too coarse to resolve a profile need not preserve its integral exactly.
Supported calculations¶
The initial implementation supports LTE absorption using ExoMol states and transitions, one uniform output grid in cm-1, scalar or array temperatures, and constant intensity thresholds. The existing restriction on combining temperature arrays and filters remains. Pressure lists, super-lines, additional analytic broadening, non-LTE, emission, HITRAN/SPECTRA input, and multiple or resolving-power output grids are not supported.