Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
the_vb_program_casvb [2021/11/20 10:32] – dlc | the_vb_program_casvb [2024/07/12 08:37] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== The VB program CASVB ====== | ||
+ | |||
+ | //CASVB// is a general program for valence bond calculations\\ | ||
+ | written by T. Thorsteinsson and D. L. Cooper (1996–2005).\\ | ||
+ | |||
+ | |||
+ | This program can be used in two basic modes: | ||
+ | |||
+ | * variational optimization of quite general types of nonorthogonal MCSCF or so-called modern valence bond wavefunctions; | ||
+ | * representation of CASSCF wavefunctions in modern valence form, using overlap- (// | ||
+ | |||
+ | In general, as in the spin-coupled generalized valence bond (SCGVB) approach, active orbitals are expanded in the full molecular basis set without locality constraints. | ||
+ | |||
+ | Key references: | ||
+ | |||
+ | T. Thorsteinsson, | ||
+ | D. L. Cooper, T. Thorsteinsson and J. Gerratt, | ||
+ | D.L. Cooper, T. Thorsteinsson and J. Gerratt, [[https:// | ||
+ | |||
+ | All publications resulting from use of this program should acknowledge relevant publications. There is a somewhat more complete //CASVB// bibliography at [[https:// | ||
+ | |||
+ | For a review of applications of SCGVB and SCGVB(// | ||
+ | |||
+ | |||
+ | ===== Structure of the input ===== | ||
+ | |||
+ | Most //CASVB// sub-commands may be abbreviated by four letters. The general input structure can be summarized as follows: | ||
+ | |||
+ | * For generating representations of CASSCF wavefunctions, | ||
+ | * Definition of the CASSCF wavefunction (not generally required). | ||
+ | * Definition of the valence bond wavefunction. | ||
+ | * Recovery and/or storage of orbitals and vectors. | ||
+ | * Manual input of starting guess (optional). | ||
+ | * Optimization control. | ||
+ | * Definition of molecular symmetry and possible constraints on the VB wavefunction. | ||
+ | * Wavefunction analysis. | ||
+ | * Further general options. | ||
+ | |||
+ | Items a) and b) should precede everything else in the input; apart from this, commands may come in any order. | ||
+ | |||
+ | ===== Defining the CASSCF wavefunction ===== | ||
+ | |||
+ | When //MULTI// is run prior to //CASVB//, the CI vector must dumped using one of the directives '' | ||
+ | ==== The VBDUMP directive ==== | ||
+ | |||
+ | '' | ||
+ | |||
+ | If present, the '' | ||
+ | |||
+ | Note that in the majority of cases (//e.g.//, if a //CASVB// run occurs immediately after //MULTI//, or for variational calculations), | ||
+ | |||
+ | Wavefunction definitions may be restored here using '' | ||
+ | |||
+ | ===== Other wavefunction directives ===== | ||
+ | |||
+ | The definitions of the CASSCF wavefunction may also be specified manually using some or all of the directives: | ||
+ | |||
+ | * **'' | ||
+ | * **'' | ||
+ | * **'' | ||
+ | * **'' | ||
+ | * **'' | ||
+ | * **'' | ||
+ | |||
+ | For the exact definition of these cards see sections [[the MCSCF program MULTI# | ||
+ | |||
+ | ===== Defining the valence bond wavefunction ===== | ||
+ | |||
+ | ==== Specifying orbital configurations ==== | ||
+ | |||
+ | The number of core and active orbitals (mcore, mact), active electrons (Nact), and the value of the total spin will be identical to that defined for the CASSCF wavefunction. The spatial VB configurations are defined in terms of the active orbitals only, and may be specified using one or more '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | The configurations can be specified by occupation numbers, exactly as in //MULTI// (see section [[the MCSCF program MULTI# | ||
+ | |||
+ | If no configurations are specified the single covalent configuration ϕ1ϕ2⋯ϕNact is assumed (SCGVB wavefunction). | ||
+ | |||
+ | Multiple configurations are most likely to be used for SCGVB(// | ||
+ | |||
+ | ==== Selecting the spin basis ==== | ||
+ | |||
+ | '' | ||
+ | |||
+ | //key// may be chosen from '' | ||
+ | |||
+ | ===== Recovering CASSCF CI vector and VB wavefunction ===== | ||
+ | |||
+ | The appropriate Molpro records may be specified explicitly using the '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | //ci:// record name for the CASSCF CI vector. The CI vector must have been dumped previously using either of the '' | ||
+ | |||
+ | Note that if the //ci// record is not found, only an energy-based optimization of the VB wavefunction can be carried out. | ||
+ | |||
+ | //vb:// record name for the valence bond orbitals and structure coefficients, | ||
+ | |||
+ | //orb:// record name for the molecular orbitals defining the CASSCF wavefunction. This information is necessary if one wants to output the valence bond orbitals in the atomic orbital basis. | ||
+ | |||
+ | //trnint:// record name for the transformed CASSCF integrals. These are required for the energy-based criteria (i.e., if '' | ||
+ | |||
+ | ===== Saving the VB wavefunction ===== | ||
+ | |||
+ | '' | ||
+ | |||
+ | //vb:// record name for VB wavefunction (default is first available record after 3200.2), i.e., orbitals and structure coefficients. | ||
+ | |||
+ | //civb:// record name for valence bond full CI vector defined in terms of the CASSCF MOs (default is 3300.2). Saving this vector is necessary for the calculation of further properties, geometry optimization, | ||
+ | |||
+ | It is normally advisable to use records on file 2 for //vb// and //civb//. | ||
+ | |||
+ | ===== Specifying a guess ===== | ||
+ | |||
+ | '' | ||
+ | |||
+ | The '' | ||
+ | |||
+ | ==== Orbital guess ==== | ||
+ | |||
+ | '' | ||
+ | |||
+ | Specifies a starting guess for valence bond orbital number i. The guess is specified in terms of the mact active MOs defining the CASSCF wavefunction. (Note that the definition of these MOs will depend on how the CI vector was dumped – i.e. which of the '' | ||
+ | |||
+ | ==== Guess for structure coefficients ==== | ||
+ | |||
+ | '' | ||
+ | |||
+ | Specifies a starting guess for the NVB structure coefficients. If this card is not provided, and no guess specified by '' | ||
+ | |||
+ | ==== Read orbitals or structure coefficients ==== | ||
+ | |||
+ | The '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | In this way a subset of orbitals and/or structure coefficients may be picked out from a previous calculation. Renumbering of orbitals or structures can be done using the “'' | ||
+ | |||
+ | Default for //record// is the //vb// record name specified in keyword '' | ||
+ | |||
+ | ===== Permuting orbitals ===== | ||
+ | |||
+ | '' | ||
+ | |||
+ | Permutes the orbitals in the valence bond wavefunction and changes their phases according to ϕ′j=sign(ij)ϕabs(ij). The guess may be further modified using the '' | ||
+ | |||
+ | ===== Optimization control ===== | ||
+ | |||
+ | ==== Optimization criterion ==== | ||
+ | |||
+ | '' | ||
+ | |||
+ | Specifies the criterion for the optimization. //method// can be '' | ||
+ | |||
+ | ==== Number of iterations ==== | ||
+ | |||
+ | '' | ||
+ | |||
+ | Specifies the maximum number of iterations in the second order optimizations. Default is Niter=50. | ||
+ | |||
+ | ==== CASSCF-projected structure coefficients ==== | ||
+ | |||
+ | ('' | ||
+ | |||
+ | 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. | ||
+ | |||
+ | ==== Saddle-point optimization ==== | ||
+ | |||
+ | '' | ||
+ | |||
+ | Defines optimization onto an //n//th-order saddle point. See also T. Thorsteinsson and D. L. Cooper, [[http:// | ||
+ | |||
+ | ==== Defining several optimizations ==== | ||
+ | |||
+ | More than one optimization may be performed in the same //CASVB// deck, by the use of '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | The subcommands may be any optimization declarations defined in this section, as well as any symmetry or constraints specifications described in section [[the VB program CASVB#point group symmetry and constraints|point group symmetry and constraints]]. Commands given as arguments to '' | ||
+ | |||
+ | If only one optimization step is required, the '' | ||
+ | |||
+ | When only a machine-generated guess is available, //CASVB// will attempt to define a sequence of optimization steps chosen such as to maximize the likelihood of successful convergence and to minimize CPU usage. To override this behaviour, simply specify one or more '' | ||
+ | |||
+ | ==== Multi-step optimization ==== | ||
+ | |||
+ | A loop over two or more optimization steps may be specified using: | ||
+ | |||
+ | '' | ||
+ | |||
+ | With this specification the program will repeat the enclosed optimization steps until either all optimizations have converged, or the maximum iteration count, //Niter//, has been reached. | ||
+ | |||
+ | ===== Point group symmetry and constraints ===== | ||
+ | |||
+ | The problems associated with symmetry-adapting valence bond wavefunctions are considered, for example, in: T. Thorsteinsson, | ||
+ | |||
+ | ==== Symmetry operations ==== | ||
+ | |||
+ | '' | ||
+ | |||
+ | 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 operator is defined in terms of its action on the active MOs as specified by one or more of the keywords '' | ||
+ | |||
+ | ==== The IRREPS keyword ==== | ||
+ | |||
+ | '' | ||
+ | |||
+ | The list //i1, i2,…// 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. | ||
+ | |||
+ | ==== The COEFFS keyword ==== | ||
+ | |||
+ | '' | ||
+ | |||
+ | The list //i1, i2,…// 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. | ||
+ | |||
+ | ==== The TRANS keyword ==== | ||
+ | |||
+ | '' | ||
+ | |||
+ | Specifies a general ndim×ndim transformation involving the MOs //i1, …indim//, | ||
+ | |||
+ | ==== Symmetry relations between orbitals ==== | ||
+ | |||
+ | In general, for a VB wavefunction to be symmetry-pure, | ||
+ | |||
+ | '' | ||
+ | |||
+ | Orbital i1 is related to orbital i2 by the sequence of operations defined by the //label// specifications (defined previously using '' | ||
+ | |||
+ | ==== The SYMPROJ keyword ==== | ||
+ | |||
+ | As an alternative to incorporating constraints, | ||
+ | |||
+ | ('' | ||
+ | |||
+ | The effect of this keyword is to set to zero coefficients in unwanted irreducible representations. For this purpose the symmetry group defined for the CASSCF wavefunction is used (always a subgroup of D2h). 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, | ||
+ | |||
+ | ==== Freezing orbitals in the optimization ==== | ||
+ | |||
+ | '' | ||
+ | |||
+ | Freezes the specified orbitals to be those in the starting guess. Alternatively the special keywords '' | ||
+ | |||
+ | ==== Freezing structure coefficients in the optimization ==== | ||
+ | |||
+ | '' | ||
+ | |||
+ | Freezes the coefficients for the specified structures to be those in the starting guess. Alternatively the special keywords '' | ||
+ | |||
+ | ==== Deleting structures from the optimization ==== | ||
+ | |||
+ | '' | ||
+ | |||
+ | Deletes the specified structures from the wavefunction. The special keywords '' | ||
+ | |||
+ | ==== Orthogonality constraints ==== | ||
+ | |||
+ | '' | ||
+ | |||
+ | The '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | Specifies a list of orbitals to be orthogonalized. All overlaps between pairs of orbitals in the list are set to zero. | ||
+ | |||
+ | '' | ||
+ | |||
+ | Specifies a simple list of orthogonalization pairs. Orbital i1 is made orthogonal to i2, i3 to i4, etc. | ||
+ | |||
+ | '' | ||
+ | |||
+ | Defines an orbital group to be used with the '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | This keyword is short-hand for strong orthogonality. The only allowed non-zero overlaps are between pairs of orbitals (2n−1, | ||
+ | |||
+ | '' | ||
+ | |||
+ | This keyword is short-hand for full orthogonality. This is mainly likely to be useful for testing purposes. | ||
+ | |||
+ | ===== Wavefunction analysis ===== | ||
+ | |||
+ | ==== Spin correlation analysis ==== | ||
+ | |||
+ | ('' | ||
+ | |||
+ | With this option, expectation values of the spin operators (ˆsμ+ˆsν)2 are evaluated for all pairs of μ and ν. Default is '' | ||
+ | |||
+ | This analysis has been implemented only for single configurations of singly-occupied active orbitals (as in SCGVB wavefunctions). | ||
+ | |||
+ | ==== Printing weights of the valence bond structures ==== | ||
+ | |||
+ | For further details regarding the calculation of weights in //CASVB//, see T. Thorsteinsson and D. L. Cooper, [[https:// | ||
+ | |||
+ | '' | ||
+ | |||
+ | Calculates and outputs weights of the structures in the valence bond wavefunction ΨVB. //key// specifies the definition of nonorthogonal weights to be used, and can be one of: | ||
+ | |||
+ | * **'' | ||
+ | * **'' | ||
+ | * **'' | ||
+ | * **'' | ||
+ | * **'' | ||
+ | |||
+ | The commands '' | ||
+ | |||
+ | ==== Printing weights of the CASSCF wavefunction in the VB basis ==== | ||
+ | |||
+ | For further details regarding the calculation of weights in //CASVB//, see T. Thorsteinsson and D. L. Cooper, [[https:// | ||
+ | |||
+ | '' | ||
+ | |||
+ | Prints weights of the CASSCF wavefunction transformed to the basis of nonorthogonal VB structures. For the //key// options see '' | ||
+ | |||
+ | ===== Controlling the amount of output ===== | ||
+ | |||
+ | '' | ||
+ | |||
+ | 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: | ||
+ | |||
+ | * **i1** Print of input parameters, wavefunction definitions, | ||
+ | * **i2** Print of information associated with symmetry constraints. | ||
+ | * **i3** General convergence progress. | ||
+ | * **i4** Progress of the 2nd order optimization procedure. | ||
+ | * **i5** Print of converged solution and analysis. | ||
+ | * **i6** Progress of variational optimization. | ||
+ | * **i7** Usage of record numbers on file 2. | ||
+ | |||
+ | For all, the default output level is +1. If i5≥2 VB orbitals will be printed in the AO basis (provided that the definition of MOs is available); such output may be especially useful for plotting of orbitals. | ||
+ | |||
+ | ===== Further facilities ===== | ||
+ | |||
+ | Calculations can also be performed for various types of direct product wavefunctions and/or with strictly localized orbitals. Details are available from the authors. These facilities will be documented in a later release. | ||
+ | |||
+ | ===== Service mode ===== | ||
+ | |||
+ | '' | ||
+ | This keyword takes precedence over any others previously defined to //CASVB//. It provides simple facilities for retrieving orbital coefficients and VB structure coefficients. It should not be used during a run of //CASVB// that has been invoked from inside //MULTI//. | ||
+ | |||
+ | '' | ||
+ | Coefficients are taken from // | ||
+ | |||
+ | '' | ||
+ | Vectors in the symmetry orbital basis are written to channel // | ||
+ | |||
+ | '' | ||
+ | If present, this keyword must come last. The program attempts to retrieve from // | ||
+ | |||
+ | ===== Examples ===== | ||
+ | |||
+ | < | ||
+ | ***, ch2 ! A1 singlet state | ||
+ | geometry={angstrom | ||
+ | c | ||
+ | h1,c,1.117 | ||
+ | h2, | ||
+ | hf | ||
+ | {multi; | ||
+ | natorb,, | ||
+ | {casvb | ||
+ | save, | ||
+ | {casvb | ||
+ | start,, | ||
+ | crit, | ||
+ | {multi; | ||
+ | {vb; | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | ***,n2s2 (model a) ! Variational calculation for N2S2. | ||
+ | v=2.210137753 bohr | ||
+ | geometry={ n, -v, 0, 0; ! NOTE: other choices of active space | ||
+ | n, +v, 0, 0; ! give alternative (competing) models. | ||
+ | s, 0, -v, 0; | ||
+ | s, 0, +v, 0} | ||
+ | basis=VTZ | ||
+ | {rhf; occ, | ||
+ | {multi; occ, | ||
+ | {multi; occ, | ||
+ | {vb; start, | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | ***, lih ! Fully-variational SCGVB calculation | ||
+ | r=2.8 bohr ! and geometry optimization. | ||
+ | geometry={li; | ||
+ | basis={ | ||
+ | s, | ||
+ | c, | ||
+ | s, | ||
+ | p, | ||
+ | c, | ||
+ | s, | ||
+ | c, | ||
+ | hf | ||
+ | {multi; occ, | ||
+ | {multi; occ, | ||
+ | {vb; start, | ||
+ | optg | ||
+ | </ | ||