Overview

Methods

XMVB provides an ab initio computing platform for various VB approaches, including classical VB methods, such as VBSCF, BOVB, VBCI, VBPT2, modern VB methods, such as SCVB and GVB, and molecular orbitals based VB method, BLW. Combined with solvation models, it can perform VBPCM, VBEFP, and VBSMD to account for solvent effects. Incorporating XMVB with KS-DFT code, it can be applied to hybrid DFVB calculation. In this manual, only a brief introduction to classical VB methods is provided. Please read the following references for details:

Articles:

  1. Wu, W.; Su, P.; Shaik, S.; Hiberty, P. C. Classical Valence Bond Approach by Modern Methods. Chemical Reviews 2011, 111 (11), 7557–7593.

  2. Su, P.; Wu, W. Ab Initio Nonorthogonal Valence Bond Methods. WIREs Computational Molecular Science 2013, 3 (1), 56–68.

  3. Chen, Z.; Wu, W. Ab Initio Valence Bond Theory: A Brief History, Recent Developments, and near Future. J. Chem. Phys. 2020, 153 (9), 090902.

Book Chapters:

  1. Shurki, A.; Braïda, B.; Wu, W. 7 Valence Bond Theory with XMVB. In 7 Valence bond theory with XMVB; De Gruyter, 2021; pp 157–198.

  2. Zhou, C.; Ying, F.; Wu, W.; Su, P. Valence Bond Methods for Molecules in Solution. In Reference Module in Chemistry, Molecular Sciences and Chemical Engineering; Elsevier, 2022.

  3. Ying, F.; Zhou, C.; Shurki, A.; Danovich, D.; Stuyver, T.; Braïda, B.; Wu, W. A Tutorial on XMVB. In Reference Module in Chemistry, Molecular Sciences and Chemical Engineering; Elsevier, 2022.

The VBSCF method

The wave function of Valence Bond Self Consistent Field (VBSCF) method is the linear combination of VB structures, as shown below.

\[\Psi = \sum_{K}C_K\Phi_K\]

In VBSCF method, All VB structures share the same set of VB orbitals, and both sets of the structure coefficients and VB orbitals are optimized simultaneously to minimize the total energy. This is comparable to the MCSCF method in the MO theory. VBSCF method takes care of the static electron correlation and gives equivalent results to the MO-based CASSCF calculations. It should be noted that the dynamic electron correlation is not accounted for in the VBSCF method. In XMVB, VBSCF method is the default method, thus this keyword can be ignored.

VB Methods including Dynamic Correlation

The VBSCF result includes only static correlation energy, which makes VBSCF results not accurate enough for quantitative researches. The purpose of post-VBSCF methods is to take dynamic correlation into account as much as possible to get accurate enough results. There are several post-VBSCF methods developed so far and will be introduced in this section. It is strongly recommended to perform post-VBSCF calculations with initial guesses from a pre-proceeded VBSCF calculation. As to VBCI and VBPT2, this is enforced.

The BOVB method

The orbitals of Breathing Orbital Valence Bond (BOVB) method are also optimized by SCF procedure, as VBSCF does. The difference between VBSCF and BOVB methods is that BOVB provides an extra degree of freedom during orbital optimization. In BOVB method, each VB structure has its own set of orbitals and are optimized independently

\[\Psi^{\textrm{VBSCF}} = C_1\left( \vert \phi_a\overline{\phi_b} \vert - \vert \phi_b\overline{\phi_a} \vert \right) + C_2\vert \phi_a\overline{\phi_a} \vert + C_3 \vert \phi_b\overline{\phi_b} \vert\]
\[\Psi^{\textrm{BOVB}} = B_1\left( \vert \phi_a\overline{\phi_b} \vert - \vert \phi_b\overline{\phi_a} \vert \right) + B_2\vert \phi'_a\overline{\phi'_a} \vert + C_3 \vert \phi'_b\overline{\phi'_b} \vert\]

Thus, the orbitals adopt themselves to the instantaneous field of the VB structures, rather than to the mean field of all the structures in VBSCF. This degree of freedom makes the orbitals in BOVB “breathing” in different structures, introduces dynamic correlation, and thereby improves considerably the accuracy of VB computations.

The VBCI method

The VBCI method is based on localized VB orbitals. In this method VB orbitals are divided to several blocks (occupied and virtual orbitals). Excited VB structures are generated by replacing occupied VB orbitals with virtual orbitals that are localized on the same block. The wave function of VBCI is the linear combination of all reference and excited VB structures

\[\Psi^{\textrm{VBCI}} = \sum_K\sum_iC_{Ki}\Phi^i_K\]

where \(\Phi^i_K\)is CI structure coming from VBSCF structure K, including reference and excited structures, and the coefficients \({C_{Ki}}\) are obtained by solving the secular equation. The VBCI weight can be given either with equation

\[W_K = C_K\sum_LC_LM_{KL}\]

which gives weights of all CI structures, or in a more compact way as

\[W_K = \sum_iW_{Ki}\]

where \(W_K\) is the contracted weights of reference structure K, including weights of all CI structures coming from structure K.

Allowing for different excitations for different electronic shells, currently the VBCI method consists of the following calculation levels:

  • VBCI(S,S): only single excitations are involved in either active electron or inactive electron. In brief, this is a VBCIS procedure.

  • VBCI(D,S): the active shell is treated by single and double excitations, whereas the inactive shell by single excitations only. Also included in this level are double excitations which consist of a single excitation from each shell.

  • VBCI(D,D): single and double excitations are involved for both active and inactive electrons, in short, VBCISD.

The VBPT2 Method

Another post-VBSCF method is Valence Bond second-order Perturbation Theory (VBPT2) method. The wave function of VBPT2 can be separated into 2 parts as

\[\Psi^{\textrm{VBPT2}} = \Psi^0 + \Psi^1\]

where VBSCF wave function is taken as the zeroth-order wave function \(\Psi^0\), and the first-order part is the combination of singly and doubly excited wave functions

\[\Psi^1 = \sum_{R\in V^{SD}}C^1_R\Phi_R\]

To enhance the efficiency of VBPT2, the virtual orbitals are delocalized and orthogonal to the occupied space, and the excitations include all virtual orbitals. In this manner, the excited structures in VBPT2 don’t belong to any fundamental structure, and the matrix elements can be calculated easily with Coulson-Slater rules.

Installation

Both distributions of XMVB are currently available for LINUX platform. 1.5GB RAM is required. Followings are the instructions for installation. Note that the source code will NEVER be released to the users. Only compiled object file or executable files are available for users.

XMVB 4.0 is released as a package of compiled executable files. To install the stand-alone distribution, the users should unpack the compressed tar file by using the following command,

tar xvfz xmvb.tar.gz

Once the file is unpacked successfully, a new directory xmvb/ will be created.

Running a job

The user may run XMVB job with simple command

xmvb.exe file.xmi

The output will be printed to the screen. To redirect the output to an output file, the user may use pipeline like:

xmvb.exe file.xmi > file.xmo

or

xmvb.exe file.xmi | tee file.xmo

For the parallelization in XMVB, see below.

Parallelization in XMVB

The OpenMP parallelization is supported by XMVB. It provides efficient parallelization in the node. By default, XMVB runs jobs in serial. To run XMVB with multiple cores, the user may run the job with command

xmvb.exe -n NP file.xmi

where NP is the number of processors / cores for parallelization.

For large systems, OpenMP parallelzation may proceed a strange “segmentation fault”. This is because the stack size of threads is not large enough. This can be avoided by setting the stack size to a certain number to avoid this error. In OpenMP parallelization, the stack size of master and slave threads are set in different ways. The stack size of master thread is set by command ulimit as shown

ulimit -s stack_size

The default stack size is 8192. Setting a larger value or simply

ulimit -s unlimited

The stack size of slave threads are controlled by environment variable $OMP_STACKSIZE. Following command will set the stack size of each slave threads to 1GB

export OMP_STACKSIZE=1G

Basis sets in XMVB

Currently user-defined basis sets and pseudopotential are not supported by XMVB yet. Users can only define one basis set in the computation. Following basis sets are supported by XMVB so far:

  1. Pople basis sets, such as STO-6G, 6-31G, 6-311+G**, etc.

  2. Dunning’s basis sets, including cc-pVXZ and aug-cc-pVXZ (X=D,T,Q,5,6).

  3. Ahlrich’s basis sets, including def2-SVP, def2-SVPD, def2-TZVP, def2-TZVPD, def2-TZVPP, def2-TZVPPD, def2-QZVP, def2-QZVPD, def2-QZVPP, def2-QZVPPD.

Utilities

Tip

This utilities in this section is not provided on the XACS cloud computing platform.

Viewing VB orbitals: Moldendat

Viewing VB orbitals is available. To do that, you need to run a utility, called “moldendat”:

moldendat.exe MOfile vbdat [denfile] >&vbfile

where MOfile is an output file of Gaussian or GAMESS-US, or formatted Gaussian checkpoint file (.fchk); vbdat is a XMVB xdat file; if .fchk file is inputted, an optional XMVB density file with extension “.den” is also supported. The program will produce an NEW output file (vbfile) with the same format as input MO files, with which you can view VB orbitals with MOLDEN or MacMolPlt (for GAMESS-US only) packages.

Cartesian to spheric integral transformation: 6D25D

This utility transforms integrals from cartesian type to spheric (harmonic) type. Currently the utility supports D and F transformation only and not available for higher basis functions.

To run the utility, typing the command as following:

6d25d.exe [-if gau/gms/lib] [-of gau/std]

where option -if defines the sequential of cartesian F functions. Argument gau means the sequential in Gaussian, gms means the sequential in GAMESS-US. Option and “lib” means the sequential by LIBCINT; -of defines the output format of spheric F basis functions. Argument gau means the spheric F functions used in Gaussian package and std means standard spheric F function, which is different from the definition in Gaussian. By default, 6d25d will use Gaussian type for both input and output format.

After running 6d25d, the original cartesian integral files x1e.int, x2e.int and INFO will be overwritten by the spheric integrals. Make a backup of your cartesian integral files if you need them later.

Use NBOs as XMVB initial guess: NBOPREP

This utility read the NBOs obtianed from a previous GAMESS/Gaussian calculation, and transfer them to the XMVB readable formats so that user may use them as initial guess in later XMVB calculations with keyword GUESS=NBO.

The user need to run a GAMESS/Gaussian calculations with keyword

$NBO PLOT $END

to get files with name FILE.36 and FILE.37 which stores NBOs and PNBOs. Then run NBOPREP as following:

nboprep.exe outfile [NBO/PNBO]

where “outfile” refers to the output file of GAMESS/Gaussian program, and “NBO/PNBO” tells the program which kind of NBOs should be prepared for later XMVB calculation. The user may be able to use keyword GUESS=NBO by copying file “orb.nbo” generated by NBOPREP to the directory where the XMVB job will be proceeded.

Generate cube file for XMVB computation: vbcubegen

This utility generates cube grid file to visualize VB orbitals with other programs. It supports module distribution or stand-alone XMVB with keyword INT=CALC or INT=LIBCINT since basis function information is essential for generating grids. The syntax of this utility is

vbcubegen.exe xmofile

where xmofile refers to the XMO output file of the XMVB computation. After that, a cube grid file with the same file name as the xmo file will be generated, with which the user may visualize VB orbitals with programs such as GaussView, Multiwfn etc.