Langage Choice:

ZN formulas

Fortran code for the Zhu-Nakamura formulas [Original paper]

Download

The attached routines written in Fortan are used for ZN-TSH computation. The main subroutine for the ZN formulas is "hop.f" at the top of the hierarchy structure shown below. This routine returns the hopping probability between the two potential energy surfaces and the corresponding phase induced by the transition.

program_structure
Fig. 1 Hierarchy of subroutines to compute nonadiabatic transition probabilities and phases.

Fig. 1 shows all the routines and their hierarchy. The "run_molpro.f" in red represents the routine that should be supplied by the user. Here, it is assumed that the Molpro (version 2012)[Molpro12] is employed for the on-the-fly ab initio computation. Executing "call system("molpro input.com")" in Fortran code, the user can run the ab initio program. If the user-supply main program reads the output file and gives all data in the subroutine "hop.f", the code starts to compute the hopping probability. The interfaces of the main subroutine (hop.f) and the user-supply subroutine run_molpro.f are shown in the sections A and B below.

Some of the main subroutines are explained below with the information of the corresponding section and page number in the text.

  1. findR0_LZ_NT.f finds \(R_0\) as shown in Fig. 1 in Section 2 on page 6.
  2. LZ.f computes the quantities in Sections 2.1.1 and 2.2.1 on pages 6-8 and 10-11.
    • the transition probability, \(p_{\rm ZN}\) [Eqs.(2.11) and (2.41)]
    • the phases, \(\psi_{\rm ZN}\) [Eqs.(2.15) and (2.46)], \(\sigma_{\rm ZN}\) [Eqs.(2.15), (2.50) and (2.52)] and \(\delta_{\rm ZN}\) [Eqs.(2.25), (2.51) and (2.53)]
  3. NT.f computes the quantities in Sections 2.1.2 and 2.2.2 on pages 8-9 and 11-12.
    • the transition probability, \(P_{\rm 12}\) [Eqs.(2.27), (2.54) and (2.59)]
    • the phases, \(\bar{\phi_{S}}\) [Eq.(2.29)], \(\phi\) [Eq.(2.67)], \(\sigma_{\rm ZN}\) [Eqs.(2.28), (2.69) and (2.62)], \(\delta_{\rm ZN}\) [Eqs.(2.32), (2.70) and (2.61)], \(\Delta_{12, 11, 22}\) [Eqs.(2.36), (2.37), (2.38), (2.64) and (2.71)] and \(U_{1, 2}\) [Eqs.(2.40), (2.35) and (2.66)]

Note that the main subroutine (hop.f) returns the only hopping probability in the argument of "prob", but the phases listed above are shown on standard output (stdout) in computer (The default destination of stdout is the display screen on computer.). If the phases are required to be stored in arrays, users need to improve the arguments in "hop.f", "LZ.f" and "NT.f."

A. The interface of the main subroutine "hop.f"

subroutine hop(etot1d,ek1d,v1d,dir,r,v,ead,prob,natom,nsurf,is0,is1,keyhop,kavail)

Cartesian coordinates are employed for these arguments; the input/output is indicated in parentheses.

The sizes of dimension of the arguments are as follows;

B. The interface of the user-supplied subroutine "run_molpro.f"

subroutine run_molpro(r_c,v_c,dvdx_c,nacme_c,tdm_c,natom,nsurf,isurf1,isurf2,indgna)

Cartesian coordinates are employed for the arguments; the input/output is indicated in parentheses. This routine controls the ab initio calculation with the argument of "indgna" by 0, 1 and 2.

The sizes of dimension for the arguments are as follows;

References