.. index:: single: Program; MBPT2 single: MBPT2 .. _UG\:sec\:mbpt2: :program:`mbpt2` ================ .. only:: html .. contents:: :local: :backlinks: none .. xmldoc:: %%Description: This program computes the second order Many Body Perturbation Theory correction to an SCF wavefunction. .. _UG\:sec\:mbpt2_description: Description ----------- The :program:`MBPT2` program of the |molcas| program system computes the second order correlation energy and the reference weight for a closed-shell Hartree--Fock reference wave function, based on a Møller--Plesset partitioning of the Hamiltonian and canonical orbitals. If :program:`SEWARD` performed a Cholesky decomposition of the two-electron integrals prior to running the :program:`MBPT2` program, Cholesky vectors will be employed for computing the second order energy correction. This is done by first transforming the Cholesky vectors to MO basis and subsequently computing the :math:`(ai|bj)` integrals. These integrals are either computed, stored on disk, and then read back in to memory during the energy evaluation (i.e. mimicking a conventional calculation) or they may be computed on-the-fly. The user may choose either algorithm through the Cholesky-specific options described below. If :program:`SEWARD` did not perform a Cholesky decomposition, the transformation of the two-electron integrals in AO basis (:math:`\mathcal{O}(N^4)`, where :math:`N` is the number of basis functions) to the exchange operator matrices :math:`\mat{K}^{ij}` in MO basis (:math:`\mathcal{O}(O^2)` matrices of size :math:`V^2`, where :math:`O` and :math:`V` denote the number of occupied and virtual orbitals, respectively), is either done conventionally, using the two-electron integral file :file:`ORDINT`, which was generated in a previous step by the :program:`SEWARD` integral code. .. _UG\:sec\:mbpt2_dependencies: Dependencies ------------ The :program:`MBPT2` program requires the communications file :file:`RUNFILE`. It contains specifications processed by :program:`SEWARD`, the Hartree--Fock canonical orbitals, eigenvalues and energy generated by :program:`SCF`. For Cholesky-based calculations, all Cholesky related files (see the manual pages for :program:`SEWARD`) must be available, whereas for conventional (not integral-direct) calculations the two-electron integral file :file:`ORDINT` is required. Hence, before running :program:`MBPT2`, a :program:`SEWARD` and a :program:`SCF` run have to be performed. .. index:: pair: Files; MBPT2 .. _UG\:sec\:mbpt2_files: Files ----- Input files ........... :program:`MBPT2` will use the following input files: :file:`ONEINT`, :file:`ORDINT`, :file:`RUNFILE`. For Cholesky runs: :file:`CHVEC`, :file:`CHORST`, :file:`CHRED` and :file:`CHOR2F` (for more information see :numref:`UG:sec:files_list`). .. Intermediate files .................. All the intermediate files are created, used and removed automatically, unless you yourself create a link or a file with the specified name. .. class:: filelist :file:`MOLINT*` Resulting file of transformed integrals. Scratch file; conventional calculation only. :file:`LUHLFn*` :math:`n`\=1 to 3. Intermediate files used in the 1st, 2nd, and 3rd, respectively, transformation step. Conventional calculation only. Output files ............ .. class:: filelist :file:`RUNFILE` File for communication of auxiliary information. .. _UG\:sec\:mbpt2_input: Input ----- Below follows a description of the input to :program:`MBPT2`. The input for each module is preceded by its name like: :: &MBPT2 No compulsory keywords are required for :program:`MBPT2`. The reference statement mentioned above is sufficient for a default :program:`MBPT2` run. Optional keywords ................. .. class:: keywordlist :kword:`TITLe` The line following this line is regarded as a title line .. xmldoc:: Print a title line %%Keyword: Title The line following this line is regarded as a title line :kword:`PRINt` Specifies the general print level of the calculation. An integer has to be supplied as argument. The default value, 0, is recommended for production calculations. .. xmldoc:: %%Keyword: Print Specifies the general print level of the calculation. An integer has to be supplied as argument. The default value, 0, is recommended for production calculations. :kword:`FREEze` Specifies the total number of frozen occupied orbitals. The lowest-energy occupied orbitals are then automatically identified and frozen. The keyword takes as argument one integer. Incompatible with the :kword:`FROZen` keyword. .. xmldoc:: :kword:`DELEted` Specifies the number of deleted orbitals in each of the irreducible representations (irreps) of the subgroup of :math:`D_{2h}` in which the system is represented. The counting of the orbitals follows the *decreasing* orbital energy within each irrep, with those orbitals being deleted first that correspond to highest orbital energies. The keyword takes as argument *nIrrep* (# of irreps) integers. **NOTE:** Those orbitals, which have been deleted already in the :program:`SCF` calculation (cf. :kword:`SPDElete`, :kword:`OVLDelete` of the :program:`SCF` program description) are never seen by the :program:`MBPT2` program and hence are **not** to be deleted again with the present option. .. xmldoc:: %%Keyword: Deleted Specifies the number of deleted orbitals in each irrep of the point group. The orbitals with the highest energies are deleted. The keyword takes as argument nIrrep (# of irreps) integers. NOTE: Those orbitals, which have been deleted already in the SCF calculation (cf. SPDElete, OVLDelete of the SCF program description) are never seen by the MBPT2 program and hence are not to be deleted again with the present option. :kword:`SFROzen` Allows to specify specific orbitals to freeze in each of the irreducible representations (irreps) of the subgroup of :math:`D_{2h}` in which the system is represented. In the 1st line after the keyword the number of orbitals to freeze for each irrep is specified (*nIrrep* (# of irreps) integers). The next :math:`\leq` *nIrrep* lines reference the orbitals to freeze for the related irrep, following an enumeration of the individual orbitals of 1, 2, 3,... according to *increasing* orbital energy. Note that the orbital reference numbers obey the original ordering and also include those orbitals which may have been frozen already by the :kword:`FROZen` or :kword:`FREEze` options. If the corresponding irrep does not contain any specific orbitals to freeze (i.e. a zero was supplied for this irrep in the 1st line), no line orbital reference input line is supplied for that irrep. .. xmldoc:: %%Keyword: Sfrozen Allows to specify specific orbitals to freeze in each of the irreducible representations (irreps) of the subgroup of D2h in which the system is represented. In the 1st line after the keyword the number of orbitals to freeze for each irrep is specified (nIrrep (# of irreps) integers). The next <= nIrrep lines reference the orbitals to freeze for the related irrep, following an enumeration of the individual orbitals of 1, 2, 3,... according to increasing orbital energy. Note that the orbital reference numbers obey the original ordering and also include those orbitals which may have been frozen already by the FROZEN option. If the corresponding irrep does not contain any specific orbitals to freeze (i.e. a zero was supplied for this irrep in the 1st line), no line orbital reference input line is supplied for that irrep. :kword:`SDELeted` Allows to specify specific orbitals to delete in each of the irreducible representations (irreps) of the subgroup of :math:`D_{2h}` in which the system is represented. In the 1st line after the keyword the number of orbitals to delete for each irrep is specified (*nIrrep* (# of irreps) integers). The next :math:`\leq` *nIrrep* lines reference the orbitals to delete for the related irrep, following an enumeration of the individual orbitals of 1, 2, 3,... according to *increasing* orbital energy. Note that the orbital reference numbers obey the original ordering. If the corresponding irrep does not contain any specific orbitals to freeze (i.e. a zero was supplied for this irrep in the 1st line), no line orbital reference input line is supplied for that irrep. .. xmldoc:: %%Keyword: Sdeleted Allows to specify specific orbitals to delete in each of the irreducible representations (irreps) of the subgroup of D2h in which the system is represented. In the 1st line after the keyword the number of orbitals to delete for each irrep is specified (nIrrep (# of irreps) integers). The next <= nIrrep lines reference the orbitals to delete for the related irrep, following an enumeration of the individual orbitals of 1, 2, 3,... according to increasing orbital energy. Note that the orbital reference numbers obey the original ordering. If the corresponding irrep does not contain any specific orbitals to freeze (i.e. a zero was supplied for this irrep in the 1st line), no line orbital reference input line is supplied for that irrep. :kword:`GHOStdelete` Excludes from PT2 treatment orbitals localized on ghost atoms. A threshold for this selection must be specified. .. xmldoc:: %%Keyword: GHOS Excludes from PT2 treatment orbitals localized on ghost atoms. A threshold for this selection must be specified. :kword:`LUMOrb` Molecular orbital coefficients and energies read from :file:`INPORB` file rather than :file:`RunFile`. .. xmldoc:: %%Keyword: LUMO Molecular orbital coefficients and energies read from INPORB file rather than RunFile. :kword:`EREF` Specifies the value of the reference energy. Available only in combination with :kword:`LumOrb`. Default value of the reference energy is set to zero. .. xmldoc:: %%Keyword: EREF Specifies the value of the reference energy. Available only in combination with LumOrb. Default value of the reference energy is set to zero. :kword:`TEST` If this keyword is specified the input is checked without performing any calculation. .. xmldoc:: %%Keyword: TEST If this keyword is specified the input is checked without performing any calculation. :kword:`T1AM` Singles amplitudes/energy introduced according to Thouless formula. An INPORB file containing MOs different from HF orbitals is required. .. xmldoc:: %%Keyword: T1AM Singles amplitudes/energy introduced according to Thouless formula. An INPORB file containing MOs different from HF orbitals is required. :kword:`LOVMp2` "Freeze-and-Delete" type of MP2, available only in connection with Cholesky or RI. An example of input for the keyword :kword:`LOVM` is the following: :: LovMP2 2 0.2 (nCenters,thrs) C1 N (Center labels) DoMP2 In this case, both occupied and virtual orbitals (localized by the program) are divided in two groups: those (A) mainly located on the two (symmetry independent) centers C1 and C2, and the remaining ones (B), which are obviously "outside" this region. The value of the threshold (between 0 and 1) is used to perform this selection (in the example, 20% of the gross Mulliken population of a given orbital on the specified atoms). By default, the MP2 calculation is performed only for the correlating orbitals associated with the region A ("active site"). The keyword :kword:`DoMP2` is optional and forces the program to perform also an independent MP2 calculation on the "frozen region" (B). Alternatively, one can specify the keyword :kword:`VirAll` in order to use all virtual orbitals as correlating space for the occupied orbitals of the active site. .. xmldoc:: %%Keyword: LOVM "Freeze-and-Delete" type of MP2, available only in connection with Cholesky or RI. An example of input for the keyword LOVM is the following: LovMP2 2 0.2 (nCenters,thrs) C1 N (Center labels) DoMP2 In this case, both occupied and virtual orbitals (localized by the program) are divided in two groups: those (A) mainly located on the two (symmetry independent) centers C1 and N, and the remaining ones (B), which are obviously "outside" this region. The value of the threshold (between 0 and 1) is used to perform this selection (in the example, 20% of the gross Mulliken population of a given orbital on the specified atoms). By default, the MP2 calculation is performed only for the correlating orbitals associated with the region A ("active site"). The keyword DoMP2 is optional and forces the program to perform also an independent MP2 calculation on the "frozen region" (B). Alternatively, one can specify the keyword VirAll in order to use all virtual orbitals as correlating space for the occupied orbitals of the active site. .. xmldoc:: .. xmldoc:: :kword:`FNOMp2` Performs a Frozen Natural Orbital (FNO) MP2 calculation, available only in combination with Cholesky or RI integral representation. An example of input for the keyword :kword:`FNOM` is the following: :: FNOMp2 0.4 DoMP2 The keyword :kword:`FNOM` has one compulsory argument (real number in ]0,1]) specifying the fraction of virtual orbitals (in each irrep) to be retained in the FNO-MP2 calculation. The keyword :kword:`DoMP2` is optional and used to compute the (estimated) correction for the truncation error. .. xmldoc:: %%Keyword: FNOM Performs a Frozen Natural Orbital (FNO) MP2 calculation, available only in combination with Cholesky or RI integral representation An example of input for the keyword FNOM is the following: FNOMp2 0.4 DoMP2 The keyword FNOM has one compulsory argument (real number in ]0,1]) specifying the fraction of virtual orbitals (in each irrep) to be retained in the FNO-MP2 calculation. The keyword DoMP2 is optional and used to compute the (estimated) correction for the truncation error. :kword:`PRPT` Multipole moments (dipoles and quadrupoles) are calculated and printed. The moments are calculated by using a variational one-particle MP2 density matrix. The calculation of the density matrix substantially increases the computational effort compared to an ordinary energy calculation. If the call to :program:`MBPT2` is followed by a :program:`LoProp` call the variational MP2 density matrix will automatically be passed on to that module when this keyword is active. .. xmldoc:: Multipole moments are calculated and printed. %%Keyword: PrPt Multipole moments (dipoles and quadrupoles) are calculated and printed. The computational effort is increased substantially compared to an energy-only calculation. :kword:`GRDT` Variational one and two-particle MP2 densities are calculated to prepare for analytical gradient calculations. The default for subsequent gradient calculations are changed from numerical to analytical when this keyword is invoked. When using :program:`mbpt2` in a :program:`slapaf`\-loop with only :math:`C_1` symmetry analytical gradients are automatically default and this keyword is not needed. :kword:`grdt` prints Multipole moments and prepare for :program:`LoProp` in the exact same way as :kword:`prpt`. Use of this keyword therefore makes it redundant (but harmless) to also specify the keyword :kword:`prpt`. .. xmldoc:: %%Keyword: Grdt Analytical gradients are used in subsequent gradient calculations. :kword:`NOGRdt` Disables the calculation of variational densities for analytical gradients. This is useful to cancel the implicit :kword:`grdt` added when using :program:`mbpt2` inside a :program:`slapaf`\-loop, if no analytical gradients are actually needed. Note that using the :kword:`Numerical` keyword in :program:`gateway` already disables :kword:`grdt`, so :kword:`nogrdt` is only needed in some advanced situations. .. xmldoc:: %%Keyword: NoGrdt Disables calculation of variational densities for analytical gradients. Optional keywords specific to Cholesky calculations ................................................... *Observe* that these keywords are disregarded if the integrals were not Cholesky decomposed by :program:`SEWARD`. Furthermore, they are disregarded for algorithm 0 (see below). .. class:: keywordlist :kword:`CHOAlgorithm` Takes as argument one positive integer specifying the algorithm to use for Cholesky MP2. Options: 0 [generate MO integrals on disk from Cholesky vectors], 1 [compute integrals on-the-fly, minimal operation count, level 2 BLAS], 2 [compute integrals on-the-fly, not minimal operation count, level 3 BLAS], Default is 2. .. xmldoc:: .. xmldoc:: %%Keyword: ChoAlgorithm Specifies the algorithm to use for Cholesky MP2. Options: 0 -- generate MO integrals on disk from Cholesky vectors 1 -- compute integrals on-the-fly, minimal operation count 2 -- compute integrals on-the-fly, minimal disk access (default) :kword:`VERBose` Increases printing from the Cholesky MP2 routines, although not by much. Default is (almost) no printing. .. xmldoc:: %%Keyword: Verbose Increases printing from the Cholesky MP2 routines. :kword:`DECOmpose` Requests Cholesky decomposition of the :math:`(ai|bj)` integrals. Unless user-defined (see below), the threshold used is identical to that used by :program:`SEWARD` for decomposing the two-electron integrals. Default is to not decompose. .. xmldoc:: %%Keyword: Decompose Requests Cholesky decomposition of the (ai|bj) integrals. :kword:`THRCholesky` Specifies the threshold for :math:`(ai|bj)` Cholesky decomposition. Takes as argument one real number. Default is the threshold used by :program:`SEWARD` for decomposing the two-electron integrals. .. xmldoc:: %%Keyword: ThrCholesky Specifies the threshold for (ai|bj) Cholesky decomposition. .. xmldoc:: :kword:`NODEcompose` Turns off Cholesky decomposition of the :math:`(ai|bj)` integrals. Default is to not decompose. .. xmldoc:: %%Keyword: Nodecompose Turns off Cholesky decomposition of the (ai|bj) integrals. :kword:`SPAN` Specifies the span factor used for :math:`(ai|bj)` Cholesky decomposition. Takes as argument one real number. Default is the span factor used by :program:`SEWARD` for decomposing the two-electron integrals. .. xmldoc:: %%Keyword: Span Specifies the span factor used for (ai|bj) Cholesky decomposition. :kword:`MXQUal` Specifies the max. number of qualified diagonals treated during :math:`(ai|bj)` Cholesky decomposition. Takes as argument one integer. Default is 10% of the max. rank of :math:`(ai|bj)`, although never more than 200. .. xmldoc:: %%Keyword: MxQual Specifies the max. number of qualified diagonals treated during (ai|bj) Cholesky decomposition. :kword:`PRESort` Presort the MO Cholesky vectors according to the batches over occupied orbitals. This will reduce the amount of I/O performed during on-the-fly assembly of the :math:`(ai|bj)` integrals. This keyword is obsolete. .. Default is to sort when more than 2 batches over occupied orbitals are required. .. xmldoc:: %%Keyword: Presort Presort the MO Cholesky vectors according to the batches over occupied orbitals. Limitations ........... The limitations on the number of basis functions are the same as specified for :program:`SEWARD`. Input example ............. :: &MBPT2 Title H2O: O(9.5/4.2), H(4/2) * The lowest energy occupied orbital in the repr. no.1 will be frozen in * MBPT2 calculations. The number of representations is 4 and all zeros * must be explicitly given Frozen 1 0 0 0 * Two highest energy external orbitals in the repr. no.3 will be deleted * in MBPT2 calculations. The number of representations is 4 and all * zeros must be explicitly given Deleted 0 0 2 0 * One occupied orbital in symmetry no.1 will be additionally frozen by * using the SFRO option. Let it be the third SCF occupied orbital in * this symmetry sFrozen 1 0 0 0 // Gives the number of frozen orbitals in each symmetry 3 // Gives the frozen orbital reference number in symmetry no. 1 * Two external orbitals in symmetry no.1 and one external orbital in * symmetry 3 will be deleted. In symmetry 1 let it be the second and * third external orbitals, and in symmetry 3 the third (already deleted * in by using the option DELE) external orbital sDeleted 2 0 1 0 // Gives the number of orbitals to be deleted in each symmetry 2 3 // Gives the reference numbers of external orbitals in sym. 1 3 // Gives the reference number of the external orb. in sym. 3 .. xmldoc:: .. xmldoc:: .. xmldoc:: .. xmldoc:: .. xmldoc::