4.2.4. CASVB

This program can be used in two basic modes:

  1. variational optimization of quite general types of nonorthogonal MCSCF or modern valence bond wavefunctions

  2. representation of CASSCF wavefunctions in modern valence form, using overlap- (relatively inexpensive) or energy-based criteria.

For generating representations of CASSCF wavefunctions, the program is invoked by the command CASVB. For variational optimization of wavefunctions it is normally invoked inside RASSCF by the sub-command VB (see the RASSCF documentation).

Bibliography: see [51, 52, 53, 54]. Dependencies

The CASVB program needs the JOBIPH file from a RASSCF calculation, and in addition also the ONEINT and ORDINT files from SEWARD. Files Input files

CASVB will use the following input files: ONEINT, ORDINT, RUNFILE, JOBIPH, (for more information see Section, and VBWFN with valence bond wavefunction information (orbital and structure coefficients). Output files


On exit, the RASSCF interface file is overwritten with the CASVB wavefunction.


Valence bond wavefunction information (orbital and structure coefficients). Input

This section describes the input to the CASVB program. The input for each module is preceded by its name like:

&CASVB Keywords

Optional keywords

END of Input

This marks the end of the input to the program.

Optional keywords to define the CASSCF wavefunction. Not generally required because values stored in the job interface file or used by the RASSCF program will normally be appropriate.


Specifies frozen orbitals, as in the RASSCF program.


Specifies inactive orbitals, as in the RASSCF program.


Specifies the number of active electrons, as in the RASSCF program.


Specifies RAS2 orbitals, as in the RASSCF program.


Specifies the total spin, as in the RASSCF program.


Specifies the CASSCF wavefunction symmetry, as in the RASSCF program.

Optional keywords to define the VB wavefunction


The spatial VB configurations are defined in terms of the active orbitals, and may be specified using one or more CON keywords:

n1 n2 n3 n4 ...

The configurations can be specified by occupation numbers, so that \(n_i\) is the occupation of the \(i\)th valence bond orbital. Alternatively a list of \(N_{\text{act}}\) orbital numbers (in any order) may be provided — the program determines which definition applies. The two specifications 1 0 1 2 and 1 3 4 4 are thus equivalent.

Input configurations are reordered by CASVB, so that configurations have non-decreasing double occupancies. Configurations that are inconsistent with the value for the total spin are ignored.

If no configurations are specified the single “covalent” configuration \(\phi_1\phi_2\cdots\phi_{N_{\text{act}}}\) is assumed.


key may be chosen from KOTANI (default), SERBER, RUMER, PROJECT or LTRUMER, specifying the scheme for constructing the spin eigenfunctions used in the definition of valence bond structures. PROJECT refers to spin functions generated using a spin projection operator, LTRUMER to Rumer functions with the so-called “leading term” phase convention.

N S1 S2 ...

This keyword can be used to specify explicitly the number of electrons and spin(s) to be used with a configuration list. If \(N\) is less than the present number of active electrons, the input wavefunction fragment is assumed to form part of a direct product. Otherwise, the spins specified may be greater than or equal to the SPIN value specified as input to the RASSCF program. Defaults, for both \(N\) and \(S\), are the values used by RASSCF.

Optional keywords for the recovery and/or storage of orbitals and vectors


Specifies input files for VB wavefunction (key-i=VB), CASSCF CI vector (key-i=CI) and/or CASSCF molecular orbitals (key-i=MO). By default, the required information is taken from the file JOBOLD.


Specifies output files for VB wavefunction (key-i=VB) and/or the VB CI vector (key-i=VBCI). By default, the VB CI vector is written to the file JOBIPH.

Optional keywords to override the starting guess

key-1 ...
key-2 ...

The GUESS keyword initiates the input of a guess for the valence bond orbitals and/or structure coefficients. key-i can be either ORB or STRUC. These keywords modify the guess provided by the program. It is thus possible to modify individual orbitals in a previous solution so as to construct the starting guess. The ENDGUESs keyword terminates the guess input.

i c1 c2 ... cmact

Specifies a starting guess for valence bond orbital number \(i\). The guess is specified in terms of the \(m_{\text{act}}\) active MOs defining the CASSCF wavefunction.

c1 c2 ... cNVB

Specifies a starting guess for the \(N_{\text{VB}}\) structure coefficients. If this keyword is not provided, the perfect-pairing mode of spin coupling is assumed for the spatial configuration having the least number of doubly occupied orbitals. Note that the definition of structures depends on the value of COUPLE. Doubly occupied orbitals occur first in all configurations, and the spin eigenfunctions are based on the singly occupied orbitals being in ascending order.

i1 ... imact

Permutes the orbitals in the valence bond wavefunction and changes their phases according to \(\phi_j'=\sign(i_j)\phi_{\abs(i_j)}\). The guess may be further modified using the GUESS keyword. Additionally, the structure coefficients will be transformed according to the given permutation (note that the configuration list must be closed under the orbital permutation for this to be possible).

Optional keywords for optimization control


Specifies the criterion for the optimization. method can be OVERLAP or ENERGY (OVERLAP is default). The former maximizes the normalized overlap with the CASSCF wavefunction:

\[\max\left(\frac{\braket{\Psi_{\text{CAS}}}{\Psi_{\text{VB}}}} {\left(\braket{\Psi_{\text{VB}}}{\Psi_{\text{VB}}}\right)^{1/2}}\right)\]

and the latter simply minimizes the energy:


Specifies the maximum number of iterations in the second-order optimizations. Default is \(N_{\text{iter}}\)=50.


With this keyword the structure coefficients are picked from the transformed CASSCF CI vector, leaving only the orbital variational parameters. For further details see the bibliography. This option may be useful to aid convergence.


Defines optimization onto an \(n\)th-order saddle point. See also [55].


Requests a sequence of preliminary optimizations which aim to minimize the computational cost while maximizing the likelihood of stable convergence. This feature is the default if no wavefunction guess is available and no OPTIM keyword specified in the input.


Selects the optimization algorithm to be used. key can be one of: FLETCHER, TRIM, TRUSTOPT, DAVIDSON, STEEP, VB2CAS, AUGHESS, AUG2, CHECK, DFLETCH, NONE, or SUPER. Recommended are the direct procedures DFLETCH or AUGHESS. For general saddle-point optimization TRIM is used. Linear (CI only) optimization problems use DAVIDSON. NONE suspends optimization, while CHECK carries out a finite-difference check of the gradient and Hessian.

The default algorithm chosen by CASVB will be usually be adequate.


Enables the input of individual parameters to be used in the optimization procedure (e.g. for controlling step-size selection and convergence testing). Details of the values used are output if print(3) \(\geq\) 3 is specified. For expert use only.


More than one optimization may be performed in the same CASVB run, by the use of OPTIM keywords:


The subcommands may be any optimization declarations defined in this section, as well as any symmetry or constraints specifications. Commands given as arguments to OPTIM will apply only to this optimization step, whereas commands specified outside will act as default definitions for all subsequent OPTIM specifications.

The OPTIM keyword need not be specified if only one optimization step is required,

When only a machine-generated guess is available, CASVB will attempt to define a sequence of optimization steps that aims to maximize the likelihood of successful convergence (while minimizing CPU usage). To override this behaviour, simply specify one or more OPTIM keywords. The ENDOPTIm keyword marks the end of the specifications of an optimization step.


A loop over two or more optimization steps may be specified using:


The program will repeat the specified optimization steps until either all optimizations have converged, or the maximum iteration count, \(N_{\text{iter}}\), has been reached. The ENDALTErn keyword marks the end of the specification of an ALTERN loop.

Optional keywords for definitions of molecular symmetry and any constraints on the VB wavefunction


Various issues associated with symmetry-adapting valence bond wavefunctions are considered, for example, in [56].

label sign

Initiates the definition of a symmetry operation referred to by label (any three characters). sign can be \(+\) or \(-\); it specifies whether the total wavefunction is symmetric or antisymmetric under this operation, respectively. A value for sign is not always necessary but, if provided, constraints will be put on the structure coefficients to ensure that the wavefunction has the correct overall symmetry (note that the configuration list must be closed under the orbital permutation induced by label for this to be possible). The default for label is the identity.

The operator is defined in terms of its action on the active MOs as specified by one or more of the keywords IRREPS, COEFFS, or TRANS. Any other keyword, including optional use of the ENDSYMElm keyword, will terminate the definition of this symmetry operator.

i1 i2 ...

The list \(i_1, i_2 \ldots\) specifies which irreducible representations (as defined in the CASSCF wavefunction) are antisymmetric with respect to the label operation. If an irreducible representation is not otherwise specified it is assumed to be symmetric under the symmetry operation.

i1 i2 ...

The list \(i_1, i_2 \ldots\) specifies which individual CASSCF MOs are antisymmetric with respect to the label operation. If an MO is not otherwise specified, it is assumed to be symmetric under the symmetry operation. This specification may be useful if, for example, the molecule possesses symmetry higher than that exploited in the CASSCF calculation.

ndim i1 ... indim c1,1 c1,2 ... cndim,ndim

Specifies a general \(n_{\text{dim}}\times n_{\text{dim}}\) transformation involving the MOs \(i_1, \ldots i_{n_{\text{dim}}}\), specified by the \(c\) coefficients. This may be useful for systems with a two- or three-dimensional irreducible representation, or if localized orbitals define the CASSCF wavefunction. Note that the specified transformation must always be orthogonal.


In general, for a VB wavefunction to be symmetry-pure, the orbitals must form a representation (not necessarily irreducible) of the symmetry group. Relations between orbitals under the symmetry operations defined by SYMELM may be specified according to:

i1 i2 label-1 label-2 ...

Orbital \(i_1\) is related to orbital \(i_2\) by the sequence of operations defined by the label specifications (defined previously using SYMELM). The operators operate right to left. Note that \(i_1\) and \(i_2\) may coincide. Only the minimum number of relations required to define all the orbitals should be provided; an error exit will occur if redundant ORBREL specifications are found.


As an alternative to incorporating constraints, one may also ensure correct symmetry of the wavefunction by use of a projection operator:

[irrep-1 irrep-2 ...]

The effect of this keyword is to set to zero the coefficients in unwanted irreducible representations. For this purpose, the symmetry group defined for the CASSCF wavefunction is used (always a subgroup of \(D_{2h}\)). The list of irreps in the command specifies which components of the wavefunction should be kept. If no irreducible representations are given, the current wavefunction symmetry is assumed. In a state-averaged calculation, all irreps are retained for which a non-zero weight has been specified in the wavefunction definition. The SYMPROJ keyword may also be used in combination with constraints.

i1 i2 ...

This command freezes the orbitals specified in the list \(i_1, i_2 \ldots\) to that of the starting guess. Alternatively the special keywords ALL or NONE may be used. These orbitals are eliminated from the optimization procedure, but will still be normalized and symmetry-adapted according to any ORBREL keywords given.

i1 i2 ...

Freezes the coefficients for structures \(i_1, i_2 \ldots\). Alternatively the special keywords ALL or NONE may be used. The structures are eliminated from the optimization procedure, but may still be affected by normalization or any symmetry keywords present.

i1 i2 ...

Deletes the specified structures from the wavefunction. The special keywords ALL or NONE may be used. This specification should be compatible with the other structure constraints present, as defined by SYMELM and ORBREL.

key-1 ...
key-2 ...

The ORTHCON keyword initiates the input of orthogonality constraints between pairs/groups of valence bond orbitals. The sub-keywords key-i can be any of ORTH, PAIRS, GROUP, STRONG or FULL. Orthogonality constraints should be used with discretion. Note that orthogonality constraints for an orbital generated from another by symmetry operations (using the ORBREL keyword) cannot in general be satisfied. The ENDORTHcon keyword can be used to terminate the input of orthogonality constraints.

i1 i2 ...

Specifies a list of orbitals to be orthogonalized. All overlaps between pairs of orbitals in the list are set to zero.

PAIRS i1 i2 ...

Specifies a simple list of orthogonalization pairs. Orbital \(i_1\) is made orthogonal to \(i_2\), \(i_3\) to \(i_4\), etc.

GROUP label i1 i2 ...

Defines an orbital group to be used with the ORTH or PAIRS keyword. The group is referred to by label which can be any three characters beginning with a letter a–z. Labels defining different groups can be used together or in combination with orbital numbers in ORTH or PAIRS. \(i_1, i_2 \ldots\) specifies the list of orbitals in the group. Thus the combination GROUP AAA 1 2 GROUP BBB 3 4 ORTH AAA BBB will orthogonalize the pairs of orbitals 1–3, 1–4, 2–3 and 2–4.


This keyword is short-hand for strong orthogonality. The only allowed non-zero overlaps are between pairs of orbitals (\(2n-1\), \(2n\)).


This keyword is short-hand for full orthogonality and is mainly useful for testing purposes.

Optional keywords for wavefunction analysis


For further details regarding the calculation of weights in CASVB, see [57].

key-1 key-2 ... [Nconf]

Prints weights of the CASSCF wavefunction transformed to the basis of nonorthogonal VB structures. For the key-i options see VBWEIGHTS below. Note that the evaluation of inverse overlap weights involves an extensive computational overhead for large active spaces. Weights are given for the total CASSCF wavefunction, as well as the orthogonal complement to \(\Psi_{\text{VB}}\). The default for the number of configurations requested, \(N_{\text{conf}}\), is 10. If \(N_{\text{conf}} = -1\) all configurations are included.


Outputs orbital/structure coefficients and derived information. The ENDREPOrt keyword can be used to mark the end of the specification of a report step.


With this option, expectation values of the spin operators \((\hat{s}_\mu+\hat{s}_\nu)^2\) are evaluated for all pairs of \(\mu\) and \(\nu\). Default is NOSCORR. The procedure is described in [58, 59, 60].

This analysis is currently only implemented for spin-coupled wavefunctions.


For further details regarding the calculation of weights in CASVB, see [57].

key-1 key-2 ...

Calculates and outputs weights of the structures in the valence bond wavefunction \(\Psi_{\text{VB}}\). key-i specifies the definition of nonorthogonal weights to be used, and can be one of:


Evaluates Chirgwin–Coulson weights (see [61]).


Performs a symmetric orthogonalization of the structures and outputs the subsequent weights.


Outputs “inverse overlap populations” as in [62].


All of the above.


Suspends calculation of structure weights.

The commands LOWDIN and INVERSE require the overlap matrix between valence bond structures, so that some additional computational overhead is involved.

Optional keywords for further general options

iprec iwidth

Adjusts the precision for printed quantities. In most cases, iprec simply refers to the number of significant digits after the decimal point. Default is iprec=+8. iwidth specifics the maximum width of printed output, used when determining the format for printing arrays.

i1 i2 ...

Each number specifies the level of output required at various stages of the execution, according to the following convention:

-1 No output except serious, or fatal, error messages.

0 Minimal output.

1 Standard level of output.

2 Extra output.

The areas for which output can be controlled are: \(i_1\)

\(i_1\) Print of input parameters, wavefunction definitions, etc.

\(i_2\) Print of information associated with symmetry constraints.

\(i_3\) General convergence progress.

\(i_4\) Progress of the 2nd-order optimization procedure.

\(i_5\) Print of converged solution and analysis.

\(i_6\) Progress of variational optimization.

\(i_7\) File usage.

For all, the default output level is +1. If \(i_5 \geq 2\) VB orbitals will be printed in the AO basis (provided that the definition of MOs is available).


Prints overlap and Hamiltonian matrices between VB structures.


Prints timing and usage statistics. Input example

x y
basis set
c 0 0 -0.190085345
end of basis
basis set
h 0 1.645045225 1.132564974
end of basis
3 0 1 0
1 0 0 0
3 1 2 0
6 0 0
&casvb Viewing and plotting VB orbitals

In many cases it can be helpful to view the shape of the converged valence bond orbitals, and Molcas therefore provides two facilities for doing this. For the Molden program, an interface file is generated at the end of each CASVB run (see also Section 4.3.1). Alternatively a CASVB run may be followed by RASSCF to get orbitals (Section 4.2.47) and GRID_IT with the VB specification (Section 4.2.23), in order to generate a three-dimensional grid, for viewing, for example, with LUSCUS program.