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:
Book Chapters:
The VBSCF method
The wave function of Valence Bond Self Consistent Field (VBSCF) method is the linear combination of VB structures, as shown below.
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
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
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
which gives weights of all CI structures, or in a more compact way as
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
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
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.gzOnce 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:
Pople basis sets, such as STO-6G, 6-31G, 6-311+G**, etc.
Dunning’s basis sets, including cc-pVXZ and aug-cc-pVXZ (X=D,T,Q,5,6).
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.