Copyright © 2004–2016 by A. Miyoshi
BEx1D reference manual - bx1S2HRsol
[Top]

BEx1D reference manual - bx1S2HRsol

Synopsis Description Input Output Program limits

Synopsis

bx1S2HRsol bname

Description

  The bx1S2HRsol program solves steady-state Schrödinger equation for two-dimensional rotor hindered with respect to the colatitude, θ, only.   For a potential energy curve given by a power series of  z (= cos θ), the eigen states are calculated by expanding the wavefunction with a two-dimensional free-rotor basis function set, i.e., the associated Legendre polynomials.
  Using the base file name, bname, specified in command-line, inputs are read from bname.inp and the eigen-state energies and partition functions are stored in files bname_eigen_values.csv and bname_part_funcs.csv, respectively.   Optionally, eigen vectors and corresponding eigen functions can be stored in bname_eigen_vectors_mJ####_p%%.csv and bname_eigen_funcs_mJ####_p%%.csv, respectively, where, #### is the mJ  quantum number and %% is the page number.

Input

  The following parameters can be specified in the input file, bname.inp, for bx1S2HRsol.
1. title and comments (*optional)
2a. solver controls
2b. solver options (*optional)
3. nuclear spin statistics (*optional)
4a. output options (*optional)
4b. vector/function output control (*optional)
5. temperatures for partition function calculation (*optional)
6. potential function
These may appear in any order and as many times as required.   When duplicated, one-value parameter (2, 3, and 4b) is overwritten by the one appearing later, while duplicated values are combined to the existing part for multi-value parameter (4a, 5, and 6).
Title and comments
Title:  Input line beginning with '#' followed by at least one white-space character is a title line and is ignored.   A title line differs from a comment line (a line beginning with '!') in bx1fitPlls input, but is no longer different in the input for solvers; bx1VIBsol bx1HRsol, and bx1S2HRsol.
Comment:  Any text from an exclamation mark, '!', to the end of the line is regarded as comments and ignored.   Any blank line, which consists of white-space characters only, is also skipped by the input parser.
Solver controls
maxJ
maxJ maximum_J_quantum_number
  Sets the size of basis-set by the maximum J quantum number.   The basis functions used by bx1S2HRsol are the latitudinal part solutions of the two-dimensional free rotor, i.e., the associated Legendre functions, PJm(z), with respect to  z (= cos θ), where J = 0, 1, 2, ... and m = 0, ±1, ..., ±J.   The following example input tells the program to use basis functions up to J = 70.
maxJ      70      ! maximum J
Since the azimuthal part is independent and is the pure one-dimensional free rotor, the Hamiltonian matrix is diagonalized for each |m|, and the size of the matrix is 71 × 71 (J = 0–70) for |m| = 0, 70 × 70 (J = 0–69) for |m| = 1, 69 × 69 (J = 0–68) for |m| = 2, and so on.
rotConst
rotConst hbar-square_over_2I
  Specifies the rotational constant, B (= 2 / 2I), of the rotor The unit of rotConst must be cm−1, which is also used as the unit of energy.
Solver options
precAnal
precAnal [yes | no]
  Tells the solver [to perform | not to perform] the precision analysis.   Default is yes (recommended).
rtolEigen
rtolEigen relative_tolerance
  Sets the relative tolerance of the eigenvalues used in the precision analysis.   Default is 0.01 and must be in between 1×10−6 to 0.1.
Nuclear spin statistics
  Similarly to the free rotation of a symmetric molecule, nuclear spin statistics need to be properly considered when evaluating the partition functions.   For example, for the two-dimensional hindered rotation of H2 in the sample problem described in the Quick start: step-4, the rotational states symmetric to the permutation of two identical hydrogen nuclei (even-J states) occur only for the antisymmetric nuclear spin state (para-H2) with T (total nuclear spin) = 0 and thus the statistical weight = 1, while odd-J states occur for ortho-H2 with weight = 3.
  The key nuSpinSt can be used to specify the nuclear statistical weights.   Alternatively, as often used as a good approximation, the partition function may be calculated with the symmetric number specified with symNumbr.
nuSpinSt
nuSpinSt l_period w(1) w(2) ... w(l_period)
  Specifies the periodic alternation of the statistical weight with J.   The first parameter l_period specifies the length of the period, followed by the list of weights.   Below is an example for the internal H2 rotation in the sample problem 3. (see Quick start: step-4)
nuSpinSt  2  1 3  ! period = 2,  1,3,1,3,... (H2)
!nuSpinSt  2  2 1  ! period = 2,  2,1,2,1,... (D2)
The commented-out second line is for the case of D2.
symNumbr
symNumbr symmetry_number
  Sets a symmetry number for partition-function calculations.
Output options
  The 'output' key can be used to control the outputs.   By default, the program creates output files containing eigen values and partition functions only.   The other output files (eigen vectors and eigen functions) are created when specified.
output name_of_output-1 [name_of_output-2]
Valid names (name_of_output-i) are vector, function, and all.   The following three examples are equivalent.
output  all
output  vector function
output  function vector
It should be noted that the calculation of eigen functions often needs much longer computation time than that required for the essential calculation, diagonalization of the Hamiltonian matrix.
Vector/function output control
outJmax
outJmax max-J_for_output
  Specifies the maximum J for eigen vector and eigen function output.   Default is maxJ × 0.3.
Temperatures for partition function calculation
  Temperatures at which the partition functions are calculated can be specified by any combination of the following three types of input.
tempRange T_start T_end T_step
tempRecipRange numer start end step
tempList T(1) T(2) T(3) ...
The key tempRange sets an equally spaced temperature list from T_start to T_end, with the interval T_step.   The next key tempRecipRange sets a list of temperatures equally spaced in its reciprocal numbers, that is, they are equally spaced in Arrhenius plots.   Like a convention used the abscissa of Arrhenius plots, the reciprocal temperature may be specified in the form like 1000 / T, 10000 / T, or etc. by setting the numer (numerator) to 1000, 10000, or etc.   For example,
tempRecipRange 10000 5 40 1
sets a list of temperatures corresponding to 10000 / T = 5, 6, 7, ..., 40.   The last ley tempList sets a list of temperatures as they listed.   The temperature input may appear as many time as requested.   For example, the following input is valid.
tempList 298.15
tempRange 300 900 100
tempRecipRange 10000 5 10 1
The default (used when no temperature specification is found in the input) is equivalent to the following input.
tempRange 300. 1500. 100.
Potential function
  The program assumes a power series potential function (in the unit of cm−1) with respect to  z (= cos θ) in the following format.
potPars{
 order-1 coefficient-1
 order-2 coefficient-2
 order-3 coefficient-3
 ...
}
The order-i must be a nonnegative integer.  

Output

  The results of calculation are stored in the following four types of files.
output file name
1. eigen values bname_eigen_values.csv
2. partition functions bname_part_funcs.csv
3. eigen vectors bname_eigen_vectors_mJ####_p%%.csv
4. eigen functions bname_eigen_funcs_mJ####_p%%.csv
Eigen vectors and eigen functions are written in a separated file for each mJ.   The output may be further separated to avoid too many columns in a file.   In the file names, #### is mJ (#### = 0000, 0001, ...) and %% is the page number (%% = 00, 01, ...).
  Diagnostic messages like below are printed to the console (standard output).
estimated eigenvalue error is <= 0.01 at number = 2555.
estimated partition function error is 0 at 500 K.
The first message tells the error estimate of the eigen values, and the second is that for the partition function calculation.
Table r4-1. Eigen value output
numbereigenValueJmJw
0293.1263700(1/4)
1300.3534310(3/4)
2613.7849511(3/4)
3662.5705421(1/4)
4815.0713420(1/4)
5946.7071422(1/4)
61024.157930(3/4)
...............
2555269239.957070(1/4)(maximum ...
Eigen value output
  A part of the eigen value output for sample problem 3 is shown in Table r4-1.   The third and fourth columns indicate total angular momentum, J, and its projection to z-axis, mJ.   The fifth column shows the nuclear spin statistical weight.   From the result of the precision analysis, the maximum reliable eigenvalue is marked.
Table r4-2. Partition function output
10000/TTQQz
34.4827592900.34787411.4893972
33.3333333000.37500471.5295799
28.5714293500.522075931.7420066
254000.686612651.9706678
22.2222224500.866604312.2123024
205001.06021552.4644241
Partition function output
  An example partition function output is shown in Table r4-2.   The first and the second column show reciprocal number of temperatures and temperatures in K unit, respectively.   The third column shows the calculated values of the partition function without energy shift, while the fourth column shows the partition function calculated by shifting the energy of the lowest eigenstate to be zero.
  If the estimated error in the partition function exceed the predefined threshold (1% relative error), the temperature list is truncated by removing higher temperatures so that the estimate error does not exceed the threshold at all the temperatures in the list.   When the program removed some temperatures from list, it print a warning message to the console.   The estimated error at the maximum temperature calculated is printed to the console.
Table r4-3. Eigen vector output
eigen_values5.4274925.561308...468.7031
eigen_vectorsvec0vec1...vec21
c00.78850...0
c10-0.956...-1.10E-09
c20.60830...0
c30-0.2927...8.10E-09
c40.090880...0
c50-0.01855...4.23E-08
c6-0.001690...0
Eigen vector output
  Table r4-3 shows a part of eigen vector output for mJ = 0.   Each column shows the coefficients for the basis functions in the order of the quantum number J (from m to maxJ).   The eigen vectors up to outJmax are printed in the output.   The output is separated in multiple CSV files when the number of eigen vectors exceeds 250.
  The solver solves the problem with the normalized form of the Hamiltonian,
    (4-1)
and the eigen values printed in these files are normalized.   The eigen state energies (as reported in the eigen value output) can be calculated by multiplying the rotational constant, B.
Table r4-4. Eigen function output
zf0f1...f21
-11.7051.754...-4.637
-0.9809521.6181.662...1.729
-0.9619051.5351.575...-0.6981
-0.9428571.4551.491...-1.327
-0.923811.3791.41...-0.1898
-0.9047621.3061.333...0.9325
-0.8857141.2351.259...1.137
...............
11.705-1.754...4.637
Eigen function output
  A part of eigen function output for mJ = 0 is shown in Table r4-4.   Each column shows an eigen function against z (= cos θ) for J = m to outJmax.   The output is separated in multiple CSV files when the number of eigen functions exceeds 250.
  It should be noted that the eigen functions are given for the Hamiltonian of eq (4-1), i.e., given as a function of z.   In order to obtain the eigen function for the colatitude, θ, they must be properly converted.

Program limits

  Internally, bx1S2HRsol calls DSBEV routine (eigen problem solver for real symmetric band matrix) in LAPACK written by FORTRAN.   Only limitations hard-wired in the source codes are the declaration part of static arrays which are passed to FORTRAN routines.   These can be found in 'libbx1CP2.h' file at the beginning of basisAssocLegendre class declaration;
class basisAssocLegendre {
 public:
  enum { MXNBAS = 2001,  // maximum number of basis functions
         SZWLPK = 6001,  // size of DSBEV work array: max(1, 3*MXNBAS-2)
         MXRWAB = 51 };  // max nbr rows of DSBEV ab mat: max(maxOrder+1)
that is, the maximum number of the basis functions is 2001 and the maximum absolute order of the potential function polynomial is 50.   All the other working variables use dynamically allocated memory and the system resource may limit the program execution.