NST: Nonadiabatic Statistical Theory A minimum-on-the-seam-of-crossings (MSX) optimizer and nonadiabatic flux calculator A. W. Jasper and M. Pfeifle (2023) https://tcg.cse.anl.gov/papr/codes/nst.html This code can be used to (1) refine the geometry of an MSX (often called MECP) guess, (2) compute Landau-Zener NST (often called NA TST) rates, and (3) generate the requisite data files for use in MESS and VariFlex. I. References The MSX optimization strategy is from M. J. Bearpark, M. A. Robb, and H. B. Schlegel, Chem. Phys. Lett. 223, 269 (1994). The step-size control in the MSX optimizer is adapted from J. Barzilai and J. M. Borwein, IMA J. Numer. Anal. 8, 141 (1988). The effective Hessian used in the NST calculation is from J. N. Harvey and M. Aschi, Phys. Chem. Chem. Phys. 1, 5555 (1999). NST (often called NA TST) has been described in J. N. Harvey, Phys. Chem. Chem. Phys. 9, 331 (2007) and A. W. Jasper, J. Phys. Chem. A 119, 7339 (2015). V. D. Dergachev, M. Rooein, I. D. Dergachev, A. O. Lykhin, R. C. Mauban, and S. A. Varganov, Topics in Current Chem. 380, 15 (2022) The "weak coupling" curve crossing transition probability is from J. B. Delos, J. Chem. Phys. 59, 2365 (1973). II. Notes A good geometry guess will greatly aid in convergence. By default, the Barzilai-Borwein step-size control is used in the gradient descent search. This usually leads to faster convergence, but it may fail in some cases. Appending the command-line argument "nobb" to the executable turns off this algorithm. The code can be set up to call either Gaussian or Molpro. The code assumes a nonlinear seam crossing point when counting states; linear structures will (likely) be detected and accounted for based on the magnitude of the moments of inertia. The "double passsage" Landau-Zener formula is used by defuault, but the weak-coupling formula can be used via a simple edit of the source code. III. Description of the Distribution Compilation and execution src/makefile ! Type 'make gaussian' to create ../exe/nst-g.x ! Type 'make molpro' to create ../exe/nst-m.x exe/nst-m.x ! Executable usage: ./nst-m.x < [std input] > [std output] exe/nst-g.x ! Executable usage: ./nst-g.x < [std input] > [std output] Source files src/nst.f ! Driver, performs the MSX search src/msxfreq.f ! Computes the effective hessian and MSX ! frequencies, creates nej.dat and ne.dat files ! for MESS src/dd-g.f ! Direct dynamics interface for Gaussian src/dd-m.f ! Direct dynamics interface for Molpro src/proj.f ! Projects out translations, rotations, and the ! gradient of the gap Input files (see runs/* for examples) Note: These should all be in the run time directory. input (std input) ! Main input file, see next section for formatting g.x or m.x ! System call that runs Gaussian or Molpro qcg.1 or qcm.1 ! Gaussian or Molpro template for state 1 qcg.2 or qcm.2 ! Gaussian or Molpro template for state 2 Output files (see runs/* for examples) output ! Standard output, prints code progress, the optimized ! MSX geometry, rotational constants and frequencies ! Note: Setting ldebug = .true. in msxfreq.f will ! produce additional output. fort.80 ! A Molden-style optimization movie nej.dat ! NST state counts in 2D VariFlex format using ! Landau-Zener transition probabilities ne.dat ! NST state counts in 1D MESS format using Landau-Zener ! transition probabilities IV. Standard Input Formatting The following example is for O+SO2. See runs/*. O+SO2 example, PT2/ATZ, Molpro 4 0. 100 ! number of atoms, zero of energy, maximum number of optimization steps S 31.9721 0.0000 -0.1301 0.2772 ! atoms, masses, and coordinates (A) O 15.9949 -0.0001 1.4583 -0.1263 O 15.9949 -1.2961 -0.5991 -0.2139 O 15.9949 1.2962 -0.5989 -0.2139 T ! T = calculate Hessians and write nej.dat and ne.dat; F = don't, just optimize the MSX 50. 50000. ! Energy step size, maximum energy (cm-1) 2 200 ! Angular momentum step size, maximum angular momentum (hbar) 65. 1. ! SO coupling (cm-1), state count scaling factor