 Procedures Details

# J Range and Partition Functions

The range of J used for simulating spectra and calculating partition functions can require some consideration for certain values of the constants, particularly if centrifugal distortion is large. (This can be a particular problem when fitting as intermediate values used as part of the normal trial and error process can cause problems even if the final values are fine.) The symptoms are either the error message "Overflow in Boltzmann for xxxx: E=-nnnn" or a very strange simulated spectrum consisting of just a few high J lines.
The problem typically arises because the standard rotational energy expression involving centrifugal distortion:
B J(J+1) - D J(J+1)
will always lead to physically unreasonable increasingly negative energies at high enough J. (The same is true for non-linear molecules, though the energy expressions are more complicated.) Typical values for J range and centrifugal distortion mean that this is not normally a problem, but it is fairly easy to use values that give this effect. Large negative energies will either cause the the Boltzmann expression exp(-E/kT) to overflow, or to put all the population in the highest J levels. The problem is most likely to show in evaluating the partition function sum as this is where PGOPHER normally uses the highest J values. To fix try one or more of the following:
1. If the problem is only in the calculation of the partition function, then simply using a partition function of 1 provides a quick fix. You can force this behavior by setting IntensityUnits to Arbitrary for the simulation as a whole. This is not unrecommended for general use, as it can give very misleading relative intensities in simulations.
2. Check the centrifugal distortion constants are reasonable - an energy level plot including high J values can be particularly helpful in showing this.
3. If the problem only occurs in evaluating the partition function, set AutoQConverge in the affected manifold to false. This may need to be combined with the following two points.
4. Adjust the maximum J used in the calculation (See Determining Colours and J ranges).
5. If the centrifugal distortion is particularly problematic, perhaps as a result of perturbations, it may be necessary to add higher terms. A small positive value for a very high order constant can be used for this; given the high power of J it can be set to have a negligible effect at low J and to force the correct limiting behavior at high J.
6. Use an external table of partition function values as a function of temperature; see InterpolatedPartitionFunction for how to do this. Unless several ground state vibrational levels are included in the calculation, this approach is anyway likely to be necessary for full accuracy in absolute intensities.
7. For some molecules this can be triggered at very low temperatures (~0.1 K or below) as an assumed origin is used in calculating the Boltzmann factor, which can be significantly above the lowest energy level of the system. This is only likely for linear molecules with large rotational constants, in which case the AssumedOrigin should be set manually.

### Evaluating the Partition Function

The partition function sum for a molecule, Q,
Q = Σ gi exp(-Ei/kT)
is needed to calculate relative intensities and is evaluated unless the IntensityUnits are set to Arbitrary for the simulation as a whole (or unless the sum overflows as discussed above). The sum extends over all manifolds where Initial is true, and by default continues until the highest 8 J  values have contributed < 10-4 of the overall sum. This behavior can be controlled by the AutoQConverge in  individual manifolds; if this is set to false then the sum stops at the maximum J set for the manifold (See Determining Colours and J ranges for a discussion of how this is determined). To verify that the partition function sum has been calculated correctly after adjusting these settings, the contributions to the sum from individual manifolds and J can be seen by going to the Energy Level Plot Window and pressing the "List" button.
It is possible to skip evaluating the partition function by setting IntensityUnits to Arbitrary, but note this can give misleading relative intensities. (Relative intensities between isotopologues such as  35Cl2 and 35Cl37Cl will come out wrong, for example.)
The origin used for the energy level values can also be important in avoiding arithmetic overflows, and some special logic is used for linear molecules to estimate the energy of the lowest Ω. All energies are then taken as relative to this in evaluating the sum. This value is printed out (if non zero) when displaying the details of the partition function sum.