Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
general_program_structure [2020/06/15 08:15] – [Defining orbital subspaces] wernergeneral_program_structure [2024/01/08 13:24] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +====== General program structure ======
 +
 +This chapter gives an overview of the most important features of Molpro. For the new user, it is essential to understand the strategies and conventions described in this section, in particular the meaning of //files// and //records//, and the use of //symmetry//. This chapter will focus on general aspects; detailed information about each command will be given in later chapters. Information about commands and parameters can also be obtained using the Molpro help facility (see section [[general program structure#molpro help|molpro help]]).
 +
 +===== Input structure =====
 +
 +A typical ''MOLPRO'' input has the following structure:
 +
 +<code>
 +***,title                    !title (optional)
 +memory,4,                  !memory specification (optional)
 +file,1,name.int              !permanent named integral file (optional)
 +file,2,name.wfu              !permanent named wavefunction file (optional)
 +
 +gprint,options               !global print options (optional)
 +gthresh,options              !global thresholds (optional)
 +gdirect[,options]            !global direct (optional)
 +gexpec,opnames               !global definition of one-electron operators (optional)
 +
 +basis=basisname              !basis specification. If not present, cc-pVDZ is used
 +geometry={...}               !geometry specification
 +
 +var1=value,var2=value,...    !setting variables for geometry and/or wavefunction definitions
 +
 +{command,options             !program or procedure name
 + directive,data,option       !directives for command (optional)
 +...
 +}                            !end of command block
 +---                          !end of input (optional)
 +</code>
 +If the memory card is given, it should be the first card (after the optional title card). If any file cards are given, they should follow immediately. The order of ''basis'', ''geometry'', ''gprint'', ''gdirect'', ''gthresh'', ''%% gexpec%%'', and variable definitions is arbitrary. It is possible to call several programs one after each other. It is also possible to redefine basis set and/or geometry between the call to programs; the program will recognize automatically if the integrals have to be recomputed.
 +
 +===== Files =====
 +
 +Molpro uses three sequential text files, namely the //input file//, the //output file//, and the //punch file//. The punch file is a short form of the output which contains the most important data and results, such as geometries, energies, dipole moments, etc. The punch file can be processed by the separate program //READPUN//, which selects specific results by keywords and is able to produce ordered tables in user supplied format. Furthermore, there are up to 9 binary Molpro files available, each one known to the program simply by its number (1 to 9). By default, they are temporary files, usually allocated dynamically by the program, but they can be connected to permanent files with the ''FILE'' command. Each file is direct access, and word addressable (word=64 bit usually), but is organised in //records// of any length. The name, address and length of each record is held in a directory at the start of the file.
 +
 +File 1 is the //main file//, holding basis set, geometry, and the one and two electron integrals. By default, file 2 is the //dump file// and used to store the wavefunction information, i.e. orbitals, CI coefficients, and density matrices. File 3 is an auxiliary file which can be used in addition to file 2 for restart purposes. Often files 1 and 2 (and 3) are declared as permanent files (see ''FILE'') to enable restarts. Storing the wavefunction information on file 2 is useful, since the integral file is overwritten at each new geometry, while the orbitals and CI coefficients of one calculation can be used as a starting guess for the next calculation at a neighbouring geometry. Files 4 to 8 are used as scratch space, e.g., for sorting the integrals, storage of transformed integrals and of the CI vectors. These files should normally not be made permanent.
 +
 +Note that the file name appearing in molpro input is always converted to lower case on unix machines.
 +
 +===== Records =====
 +
 +Record names are positive integers, and are usually referred to in the format //record.file//, e.g., 2100.2 means the record called 2100 on file 2. Note that these names are quite arbitrary, and their numerical values have nothing to do with the order of the records in the file. Record names $\le$ 2000 are reserved for standard quantities (e.g. integrals, properties etc.) and you should never use these in an input, unless you know exactly what you are doing. Some important default records to remember are
 +
 +  * **2100** RHF dump record (closed and open-shell)
 +  * **2200** UHF dump record
 +  * **2140** MCSCF dump record
 +  * **4100** CPHF restart information
 +  * **5000** MCSCF gradient information
 +  * **5100** CP-MCSCF gradient information
 +  * **5200** MP2 gradient information
 +  * **5300** Hessian restart information
 +  * **5400** Frequencies restart information
 +  * **6300** Domain restart information
 +
 +If an input contains several wavefunction calculations of the same type, e.g., several MCSCF calculations with different active spaces, the record number will be increased by 1 for each calculation of the same type. Thus, the results of the first SCF calculation in an input are stored in dump record 2100.2, the second SCF in record 2101.2, the first MCSCF in 2140.2, the second MCSCF in 2141.2 and so on. Note that these numbers refer to the occurrence in the input and not on the order in which the calculations are performed in the actual run. If an input or part of it is repeated using ''DO'' loops, this ensures that each calculation will start with the orbitals from the corresponding orbitals from the previous cycle, as long as the order of the commands in the input remains unchanged. If for instance the first SCF would be skipped in the second cycle using some ''IF'' / ''ENDIF'' structure, the second SCF would still use record 2101.2. Thus, under most circumstances the program defaults are appropriate, and the user does not have to specify the records.
 +
 +After a restart this logic will still work correctly if the number and sequence of ''SCF'' and ''MCSCF'' commands is kept unchanged. Thus, if you want to skip certain parts of the input after a restart, it is recommended to use ''IF'' / ''ENDIF'' structures or the ''GOTO'' command rather than to delete or comment certain commands. If for some reason this is not possible, the ''START'' and ''ORBITAL'' directives can be used to specify explicitely the records to be used.
 +
 +In general we recommend the use of program defaults whenever possible, since this minimizes the probability of input errors and frustration!
 +
 +After completion of each program step, Molpro prints a summary of the records on each file.
 +
 +===== Restart =====
 +
 +Information from the permanent files is automatically recovered in subsequent calculations. This can be controlled using the ''RESTART'' directive.
 +
 +===== Data set manipulation =====
 +
 +It is possible to truncate files and rename or copy records using the ''DATA'' command. Several standard matrix operations can be performed with ''MATROP'', e.g., printing records, linearly combining or multiplying matrices, or forming the trace of a product of two matrices.
 +
 +===== Memory allocation =====
 +
 +Molpro can allocate memory dynamically as required by the user. Thus it is not necessary to maintain different versions of the program with different memory sizes. There are two ways to specify the memory: (1) ''MEMORY'' card in Molpro input file; (2) options ''-m'' or ''%%--memory%%'' or ''-M'' in the Molpro command line. The latter method is recommended. Please refer to sections [[running Molpro on parallel computers#memory specifications|memory specifications]] for more details and important information regarding parallel processing.
 +
 +If memory is specified using both methods at the same time, ''MEMORY'' card will take precedence. If both ways are omitted, the program will use a default memory size (currently it is $32000000$ words, i.e. 256 MB). Please note that: (1) memory specification is in megawords. 1 word is 8 bytes (i.e., the memory size to store one double precision data). (2) memory specification is for each process.\\
 +
 +
 +==== Memory directive in the input file ====
 +
 +''MEMORY'',[''STACK='']//m//,[''GA=''//G//],[''Total=''//M//],[''GA_PREALLOC=''$0|1$]
 +
 +By default, all memory specifications are in megawords. The numbers (//m, G, M//) can be appended by a scaling unit, which can be ''K'', ''M'', or ''G'' (case insensitive). If the unit is ''K'', the specification is assumed to be in kilowords ($10^3$ words), ''M'' means megawords ($10^6$ words), and ''G'' means gigawords ($10^9$ words). Blanks or commas have to be inserted between the number and the unit, i.e., 100 m or 100,m are possible specifications of the memory size.
 +
 +Examples:
 +
 +  * **''%%MEMORY,90%%''** requests 90 000 000 words of memory
 +  * **''%%MEMORY,500 K%%''** requests 500 000 words of memory
 +  * **''%%MEMORY,2 M%%''** requests 2 000 000 words of memory
 +  * **''%%MEMORY,100,M%%''** requests 100 000 000 words of memory
 +  * **''%%memory,100 m%%''** requests 100 000 000 words of memory
 +  * **''%%MEMORY,1 g%%''** requests $10^9$ words of memory
 +
 +Optionally, the requested GA space or the total allocatable memory (stack memory + GA) can be used. These options have the same meaning and effect as the ''-G'' and ''-M'' command line options, cf. section [[running Molpro on parallel computers#memory specifications|memory specifications]]. ''GA_PREALLOC=0'' or ''GA_PREALLOC=1'' disables or enables GA preallocation, respectively (see sections [[running Molpro on parallel computers#GA Installation notes|GA Installation notes]] and [[running Molpro on parallel computers#memory specifications|memory specifications]]).
 +
 +==== Memory option in command line ====
 +
 +''-m'' $|$ ''%%--memory%%'' //n//''scale''
 +
 +The ''scale'' (''k'', ''m'', ''g'' and ''K'', ''M'', ''G'') is case sensitive, lower case for decimal and upper case for binary. ''%%k, m, g%%'' stand for 1000, 1000 000 and $10^9$; ''%%K, M, G%%'' stand for $2^{10}$, $2^{20}$ and $2^{30}$.
 +
 +Examples:
 +
 +  * **''%%-m 1k%%''** requests 1000 words of memory
 +  * **''%%-m 1K%%''** requests 1024 words of memory
 +  * **''%%-m 1m%%''** requests 1000000 words of memory
 +  * **''%%-m 1M%%''** requests 1048576 words of memory
 +  * **''%%-m 1g%%''** requests $10^9$ words of memory
 +  * **''%%-m 1G%%''** requests $2^{30}$ words of memory
 +
 +For more information please refer to section [[running Molpro on parallel computers#memory specifications|memory specifications]].
 +
 +==== Memory in parallel ====
 +
 +The memory specification is for each process. So the total requested memory in parallel calculation will be the specified memory amount multiplied by the number of compute processes. For example, specifying $100 * 10^6$ words for a job with 4 compute processes:
 +
 +  * **''%%memory,100,m%%''** in input file
 +  * **''%%-m 100m%%''** in command line
 +
 +the total requested memory will be $100 * 10^6 * 8 * 4 = 3.2 * 10^9$ bytes.
 +
 +In addition, some methods need an significant amount of global array (GA) memory. Please refer to sections [[running Molpro on parallel computers#GA Installation notes|GA Installation notes]] and [[running Molpro on parallel computers#memory specifications|memory specifications]] for important information regarding parallel processing.
 +
 +===== Multiple passes through the input =====
 +
 +It is possible to perform loops over parts of the input using ''DO'' loops, very much as in ''FORTRAN'' programs. ''DO'' loops may be nested to any reasonable depth. This can be conveniently used, for instance, to compute automatically whole potential energy surfaces.
 +
 +===== Symmetry =====
 +
 +Molpro can use Abelian point group symmetry only. For molecules with degenerate symmetry, an Abelian subgroup must be used — e.g., $C_{2v}$ or $D_{2h}$ for linear molecules. The symmetry group which is used is defined in the integral input by combinations of the symmetry elements $x$, $y$, and $z$, which specify which coordinate axes change sign under the corresponding generating symmetry operation. It is usually wise to choose $z$ to be the unique axis where appropriate (essential for $C_2$ and $C_{2h}$). The possibilities in this case are shown in Table [[general program structure#symmetry|symmetry]].
 +
 +Normally, Molpro determines the symmetry automatically, and rotates and translates the molecule accordingly. However, explicit symmetry specification is sometimes useful to fix the orientation of the molecule or to use lower symmetries.
 +
 +^  The symmetry generators for the point groups  ^^
 +^Generators                 ^Point group                           ^
 +|(null card)                |$C_1$ (i.e. no point group symmetry)  |
 +|''X'' (or ''Y'' or ''Z'' |$C_s$                                 |
 +|''XY''                     |$C_2$                                 |
 +|''XYZ''                    |$C_i$                                 |
 +|''%%X,Y%%''                |$C_{2v}$                              |
 +|''%%XY,Z%%''               |$C_{2h}$                              |
 +|''%%XZ,YZ%%''              |$D_2$                                 |
 +|''%%X,Y,Z%%''              |$D_{2h}$                              |
 +
 +The irreducible representations of each group are numbered 1 to 8. Their ordering is important and given in the tables below. Also shown in the tables are the transformation properties of products of $x$, $y$, and $z$. $s$ stands for an isotropic function, e.g., $s$ orbital, and for these groups, this gives also the transformation properties of $x^2$, $y^2$, and $z^2$. Orbitals or basis functions are generally referred to in the format  //number.irrep//, i.e. 3.2 means the third orbital in the second irreducible representation of the point group used.
 +
 +^  Numbering of the irreducible representations in $D_{2h}$  ^^^
 +^No.  ^    Name    ^  Function  ^
 +|      $D_{2h}$  ||
 +|1    |  $A_{g}$      $s$     |
 +|2    |  $B_{3u}$  |    $x$     |
 +|3    |  $B_{2u}$  |    $y$     |
 +|4    |  $B_{1g}$  |    $xy$    |
 +|5    |  $B_{1u}$  |    $z$     |
 +|6    |  $B_{2g}$  |    $xz$    |
 +|7    |  $B_{3g}$  |    $yz$    |
 +|8    |  $A_{u}$     $xyz$    |
 +
 +^  Numbering of the irreducible representations in the four-dimensional groups  ^^^^^^^
 +^No.  ^  Name    Function  ^  Name    Function  ^  Name    Function  ^
 +|      $C_{2v}$           ||  $C_{2h}$           ||  $D_2$              ||
 +|1    |  $A_1$  |   $s, z$    $A_g$  |  $s, xy$     $A$      $s$     |
 +|2    |  $B_1$  |  $x, xz$    $A_u$  |    $z$      $B_3$  |  $x, yz$   |
 +|3    |  $B_2$  |  $y, yz$    $B_u$  |   $x, y$    $B_2$  |  $y, xz$   |
 +|4    |  $A_2$  |    $xy$    |  $B_g$  |  $xz, yz$  |  $B_1$  |    $xy$    |
 +
 +^  Numbering of the irreducible representations in the two-dimensional groups  ^^^^^^^
 +^No.  ^    Name    ^    Function      Name  ^     Function      Name        Function       ^
 +|      $C_{s}$                    ||  $C_{2}$                 ||  $C_{i}$                     ||
 +|1    |  $A^{'}$    $s, x, y, xy$  |  $A$      $s, z, xy$    |  $A_g$  |  $s, xy, xz, yz$  |
 +|2    |  $A^{''}$  |   $z, xz, yz$    $B$    $x, y, xz, yz$  |  $A_u$  |     $x, y, z$     |
 +
 +===== Defining the wavefunction (WF) =====
 +
 +In all program modules where such information is required, the total symmetry of the $N$-electron wavefunction is defined on ''WF'' (wavefunction) cards in the following way:
 +
 +''WF'',//nelec,irrep,spin//
 +
 +or, alternatively
 +
 +''WF'',[''NELEC=''//nelec//],[''%%SYM[METRY]=%%''//irrep//],[''spin=''//spin//],[''CHARGE=''//charge//]
 +
 +where //nelec// is the total number of electrons, //irrep// is the number of the irreducible representation, and //spin// equals $2 \times S$, where $S$ is the total spin quantum number. Instead of //nelec// also //charge// can be given, which specifies the total charge of the molecule. For instance, for a calculation in $C_{2v}$ symmetry with 10 electrons, ''%%WF,10,3,0%%'' denotes a $^1B_2$ state, and ''%% WF,10,1,2%%'' a $^3A_1$ state. The charge can also be defined by setting the variable ''CHARGE'':
 +
 +''%%SET,CHARGE%%''=//charge//
 +
 +This charge will be used in all energy calculations following this input. Note that ''SET'' is required, since ''CHARGE'' is a system variable (cf. section [[variables#system variables|system variables]]).
 +
 +Although in principle each program unit requires a ''WF'' command, in practice it is seldom necessary to give it. The program remembers the information on the ''WF'' card, and so one might typically specify the information in an SCF calculation, but then not in subsequent MCSCF or CI calculations; this also applies across restarts. Furthermore, //nelec// defaults to the sum of the nuclear charges, //irrep// to 1 and //spin// to 0 or 1; thus in many cases, it is not necessary to specify a ''WF'' card at all.
 +
 +If the ''WF'' directive is given outside an command input block, it is treated as global, i.e., the given values are used for all subsequent calculations. Setting the variables ''NELEC'', ''SPIN'', or ''SYMMETRY'', has the same effect giving these on a global ''WF'' directive. If the global ''WF'' directive is given after the variable definition, the values of the variables are replaced by the values given on the ''WF'' directive. Vice versa, if a variable definition follows a global ''WF'' directive, the new value of the variable is used in the following. Note that ''WF'' input cards in command blocks have preference over global ''WF'' directives or input variables.
 +
 +===== Defining orbital subspaces (OCC,CLOSED,CORE,FROZEN) =====
 +
 +In the SCF, MCSCF, and CI programs it may be necessary to specify how many orbitals in each symmetry are //occupied// (or //internal// in CI), and which of these are //core// or //closed shell// (doubly occupied in all CSFs). This information is provided on the ''OCC'', ''CORE'', and ''CLOSED'' cards in the following way:
 +
 +''OCC'',$m_1,m_2,\ldots,m_8$; ''CORE'',$co_1,co_2,\ldots,co_8$; ''CLOSED'',$cl_1,cl_2,\ldots,cl_8$; ''FROZEN'',$fr_1,fr_2,\ldots,fr_8$;
 +
 +where $m_i$ is the number of occupied orbitals (including core/frozen and closed), $co_i$ the number of core orbitals, and $cl_i$ is the number of closed-shell orbitals (including the core orbitals) in the irreducible representation $i$. In general, $m_i \ge
 +cl_i$, and $cl_i \ge co_i$. It is assumed that these numbers refer to the first orbitals in each irrep. ''FROZEN'' only exists in the MCSCF program and denotes frozen core orbitals that are not optimized (note that in older Molpro versions frozen core orbitals were denoted ''CORE'').
 +
 +For ''CORE'' the following special input possibilities exists (only in the MRCI and Coupled-Cluster programs):
 +
 +''%%CORE,SMALL%%''\\
 +''%%CORE,MIXED%%''\\
 +''%%CORE,LARGE%%''\\
 +''CORE'',//SYM1=spdf//,//SYM2=spdf//,...
 +
 +''SMALL'' means that all atomic orbitals are correlated for which the cc-pwCVXZ basis are optimized (typically one additional shell of each angular momentum below the valence shell). For $n$d transition metals, the $n$s, $(n+1)$s, $n$p, $n$d orbitals are correlated.
 +
 +''MIXED'' corresponds to ''SMALL'' but the next lower s and p shells of the p-block elements are not correlated.
 +
 +Note that until Molpro 2021.3, the 2s and 2p shells of the second-row elements Al - Ar were correlated with ''MIXED'', but for consistency this has been changed in 2021.4. The old behaviour can be recovered using ''MIXED_OLD''.
 +
 +''LARGE'' means that no inner shells are correlated (default). In transition metals the outermost d-shell and in f-elements the outermost f-shell are treated as valence and always correlated.
 +
 +The most general core definition is possible using the last possibility, where //SYM1, SYM2// etc are atomic symbols and //spdf// are the numbers of core orbitals at the given atom for each angular momentum. For example, for bromine ''%%CORE,Br=21%%'' is equivalent to ''%%CORE,SMALL%%'', ''%%CORE,Br=32%%'' is equivalent to ''%%CORE,MIXED%%'', and ''%%CORE,Br=321%%'' is equivalent to ''%%CORE,LARGE%%''. Trailing zeros are optional, i.e. Br=3200, 320, or 32 are equivalent. Atom-specific core specifications cannot exceed the number of large core orbitals for each angular momentum.
 +
 +Optionally, SMALL, MIXED, or LARGE can be followed by specifications for individual atoms. In this case these default apply to all atoms that are not explicitly specified.
 +
 +The table below summarizes the number of shells that are **not** correlated with the three core-orbital specifications.
 +The cases where mixed and small differ are shown as italic.
 +Note that for the post-d p-block elements "mixed" includes correlation of the outermost d-shell, which is not the case for the large core.
 +For calculations including outer core orbitals the correlation consistent CVXZ or (preferably) wCVXZ basis sets [K. A. Peterson, and T. H. Dunning Jr., [[https://doi.org/10.1063/1.1520138|J. Chem. Phys.]] **117**, 10548--10560 (2002)] should be used. 
 +But note these are not appropriate to correlate inner-shell core electrons.
 +
 +^ ^ ^ ^  Number of shells  ^^^^
 +^  Elements  ^  Outer core  ^  Valence  ^  All occupied  ^  Large core  ^  Small core  ^  Mixed core  ^
 +| | | |(spdf)  |(spdf)  |(spdf)  |(spdf)  |
 +|Z=1, |1s  | |(1000)  |(0000)  |(0000)  |(0000)  |
 +|Z=3-4  |1s  |2s  |(2000)  |(1000)  |(0000)  |(0000)  |
 +|Z=5-10  |1s  |2s2p  |(2100)  |(1000)  |(0000)  |//(1000)//  |
 +|Z=11-12  |2s2p  |3s  |(3100)  |(2100)  |(1000)  |(1000)  |
 +|Z=13-18  |2s2p  |3s3p  |(3200)  |(2100)  |(1000)  |//(2100)//  |
 +|Z=19-20  |3s3p  |4s  |(4200)  |(3200)  |(2100)  |(2100)  |
 +|Z=21-30  |3s3p  |4s3d  |(4210)  |(3200)  |(2100)  |(2100)  |
 +|Z=31-36  |3s3p3d  |4s4p  |(4310)  |(3210)  |(2100)  |//(3200)//  |
 +|Z=37-38  |4s4p  |5s  |(5310)  |(4310)  |(3210)  |(3210)  |
 +|Z=39-48  |4s4p  |5s4d  |(5320)  |(4310)  |(3210)  |(3210)  |
 +|Z=49-54  |4s4p4d  |5s5p  |(5420)  |(4320)  |(3210)  |//(4310)//  |
 +|Z=55-56  |5s5p  |6s  |(6420)  |(5420)  |(4320)  |(4320)  |
 +|Z=57-71  |4s4p4d  |5s6s5p5d4f  |(6431)  |(4320)  |(3210)  |(3210)  |
 +|Z=72-80  |5s5p  |6s5d  |(6431)  |(5421)  |(4321)  |(4321)  |
 +|Z=81-86  |5s5p5d  |6s6p  |(6531)  |(5431)  |(4321)  |//(5421)//  |
 +|Z=87-88  |6s6p  |7s  |(7531)  |(6531)  |(5431)  |(5431)  |
 +|Z=89-103  |5s5p5d  |6s7s6p6d5f  |(7542)  |(5431)  |(4321)  |(4321)  |
 +|Z=104-112  |6s6p  |7s6d  |(7542)  |(6532)  |(5432)  |(5432)  |
 +|Z=113-118  |6s6p6d  |7s7p  |(7642)  |(6542)  |(5432)  |(5432)  |
 +
 +The program automatically checks if the orbitals with the lowest orbital energies correspond to the requested core orbitals, and if necessary orbitals are swapped as required. Within the set of core orbitals, this check can only be performed if ''SMALL'' or ''MIXED'' is given. If one specifies the absolute number of core orbitals the check is not possible since the program does not know which type the core orbitals should have.
 +
 +Note that the ''OCC'' and ''CLOSED'' cards have slightly different meanings in the SCF, MCSCF and CI or CCSD programs. In SCF and MCSCF, //occupied// orbitals are those which occur in any of the CSFs. In electron correlation methods (CI, MPn, CCSD etc), however, ''OCC'' denotes the orbitals which are occupied in any of the //reference// CSFs. In the MCSCF, ''FROZEN'' orbitals are doubly occupied in all CSFs and //frozen// (not optimized), while  //closed// denotes all doubly occupied orbitals (frozen plus optimized). In the CI and CCSD programs, //core// orbitals are those which are not correlated and //closed// orbitals are those which are doubly occupied in all reference CSFs.
 +
 +''OCC'', ''CORE'' and ''CLOSED'' directives are generally required in each program module where they are relevant; however, the program remembers the most recently used values, and so the directives may be omitted if the orbital spaces are not to be changed from their previous values. Note that this information is also preserved across restarts. Note also, as with the ''WF'' information, sensible defaults are assumed for these orbital spaces. For full details, see the appropriate program description.
 +
 +The orbital spaces may also be defined outside command blocks, and then the directive is treated as global, i.e., it is used in all subsequent programs. Spaces specific to certain wavefunction types can be defined by specifiying the program name with a ''CONTEXT'' option, e.g.,
 +
 +''%%OCC,4,2,1,CONTEXT=MULTI%%''
 +
 +Alternatively, the context can be appended to the directive name with an underscore. For example
 +
 +''%%OCC_MULTI,4,2,1%%''
 +
 +is equivalent to the previous form.
 +
 +The occupation and core settings are usually molecule specific and depend on the symmetry and charges. They can also change if dummy atoms are defined. Therefore, global settings should be used with care. In molpro2021.4 or later it is possible to specify global core types (''CORE,SMALL|MIXED|LARGE''); these work also if the molecule or symmetry changes, or if dummy atoms are used. Specifying core orbitals in this way is preferable since the orbitals are appropriately reordered, if necessary (see above). Note that contexts cannot be given if core types are given; also atom-specific core definitions are only possible within command blocks.
 +
 +Local input given within command blocks has preference over global input.
 +
 +
 +===== Selecting orbitals and density matrices (ORBITAL, DENSITY) =====
 +
 +[sec:orbitals] As outlined in section [[general program structure#records|records]], the information for each SCF or MCSCF calculation is stored in a //dump record//. Dump records contain orbitals, density matrices, orbital energies, occupation numbers, fock matrices and other information as wavefunction symmetries etc. Subsequent calculation can access the orbitals and density matrices from a particular record using the ''ORBITAL'' and ''DENSITY'' directives, respectively. These input cards have the same structure in all programs. The general format of the ''ORBITAL'' and ''DENSITY'' directives is as follows:
 +
 +''ORBITAL''[''%%,%%''[''RECORD='']//record//] [''%%,%%''[''TYPE='']//orbtype//] [''%%,STATE=%%''//state//] [''%%,SYM[METRY]=%%''//symmetry//]]
 +
 +''DENSITY''[''%%,%%''[''RECORD='']//record//] [''%%,%%''[''TYPE='']//dentype//] [''%%,STATE[B]=%%''//stateb//] [''%%,SYM[B]=%%''//symb//] [''%%,SPIN[B]=%%''//spinb//] [''%%,MS2[B]=%%''//ms2b//] [''%%,STATEK=%%''//statek//] [''%%,SYMK=%%''//symk//] [''%%,SPINK=%%''//spink//] [''%%,MS2K=%%''//ms2k//] [''%%,[N]ELEC=%%''//nelec//] [''%%,SET=%%''//iset//]
 +
 +where the (optional) specifications can be used to select specific orbitals or densities, if several different orbital sets are stored in the same record. If a specification is not given, it is not checked and the last written set that fullfills all other criteria is used. The meaning of the individual specifications are as follows:
 +
 +  * **//orbtype//** Orbital type. This can be one of\\
 +''CANONICAL'': canonical or pseudo-canonical orbitals;\\
 +''NATURAL'': natural orbitals;\\
 +''LOCAL'': localized orbitals;\\
 +''%%LOCAL(PM)%%'': localized Pipek-Mezey orbitals;\\
 +''%%LOCAL(BOYS)%%'': localized Boys orbitals;\\
 +''PROJECTED'': projected virtual orbitals used in local calculations.\\
 +Without further specification, the most recently computed orbitals of the specified type are used. If the orbital type is not specified, the program will try to find the most suitable orbitals automatically. For instance, in MRCI calculations ''NATURAL'' orbitals will be used preferentially if available; MRPT (CASPT2) calculations will first search for ''CANONICAL'' orbitals, and local calculations will first look for ''LOCAL'' orbitals. Therefore, in most cases the orbital type needs not to be specified.
 +  * **//state//** Specifies a particular state in the form $istate.isym$. For instance, 2.1 refers to the second state in symmetry 1. This can be used if density matrices or natural orbitals have been computed for different states in a state-averaged CASSCF calculation. If not given, the last written orbitals are used. A state-averaged density can be selected using ''%%STATE=AV[ERAGED]%%''. The specification of $isym$ is optional; it can also be defined using the ''SYMMETRY'' key.
 +  * **//dentype//** Density type. This can be one of\\
 +''CHARGE'': charge density;\\
 +''SPIN'': UHF spin density;\\
 +''TRANSITION'': transition density matrix;\\
 +The default is ''CHARGE''.
 +  * **//symmetry//** Specifies a particular state symmetry. Alternatively, the state symmetry can be specified using ''STATE'' (see above).
 +  * **//spin//** Spin quantum number, i.e. 0 for singlet, 1/2 for doublet, 1 for triplet, etc. Alternatively ''MS2'' can be used.
 +  * **//ms2//** $2 M_S$, i.e. 0 for singlet, 1 for doublet, 2 for triplet etc. Alternatively, ''SPIN'' can be used.
 +  * **//nelec//** Number of electrons.
 +  * **//iset//** Set number of orbitals. The orbital sets are numbered in the order they are stored.
 +
 +In some cases (e.g. in ''MATROP'') transition density matrices can be specified. In this case ''STATEB'', ''SYMB'', ''MS2B'', ''SPINB'' refer to the bra state and ''STATEK'', ''SYMK'', ''MS2K'', ''SPINK'' refer to the ket state. If bra and ket differ, ''TYPE=TRANSITION'' is implied, and ''SYMMETRY'' is automatically set to the product symmetry of bra and ket. If ''STATEK'', ''SYMK'', ''MS2K'', ''SPINK'' are not given, they are assumed to be equal to the corresponding bra quantities. See section [[matrix operations]] for examples.
 +
 +If ''OVL'' is specified, the starting orbitals are obtained by maximizing the overlap with previous orbitals. By default, this is used if the basis dimension of the previous orbitals is different then the current one. If ''OVL'' is specified this procedure is used even if the basis dimensions are the same, which is occasionally useful if the contraction scheme changed.
 +
 +If ''NOCHECK'' is specified, some consistency checks for finding correct orbitals are skipped, and error messages like "ORBITALS CORRESPOND TO DIFFERENT GEOMETRY" are ignored.
 +
 +If ''IGNORE_ERROR'' is specified, MPn or triples calculations can be forced with other than canonical orbitals. Note that this can lead to meaningless results! Note that in MULTI ''IGNORE_ERROR'' must be given on the ''START'' directive, since in this program ''ORBITAL'' is used to define the new orbitals.
 +
 +If any of the above options are given, they must be obeyed strictly, i.e., the program aborts if the request cannot be fulfilled.
 +
 +Examples:
 +
 +<code>
 +ORBITAL,2100.2                    !Use SCF orbitals
 +ORBITAL,2140.2                    !Use (state-averaged) MCSCF orbitals
 +ORBITAL,2140.2,CANONICAL          !use canonical MCSCF orbitals
 +ORBITAL,2140.2,NATURAL,STATE=2.1  !use natural MCSCF orbitals for second state in sym. 1
 +</code>
 +===== Plugins =====
 +
 +Molpro can host suitably prepared external programs as “plugins”. They are launched using MPI’s spawn mechanism, and therefore the user must take care of any job-scheduling constraints on the number and placement of MPI processes. The following syntax in the input file will cause the plugin to be launched.
 +
 +''%%PLUGIN,COMMAND=%%''//command//''%%,PROCS=%%''//procs//
 +
 +//command// is the name of the executable of the plugin. It can be given as an absolute path name, or a relative path. If it is a simple name (no ''%%/%%'' characters), it will be searched for in the same directory as Molpro’s executable, and this will be the normal mode of use. If the plugin is not found, and //command// does not have a filename suffix, then the suffix ''.exe'' will be assumed.
 +
 +''PROCS=''//procs// specifies the number of processes for the plugin, and can be omitted, in which case the number is the same as in the host Molpro instance.
 +
 +Example:
 +
 +<code>
 +PLUGIN, COMMAND='Block', PROCS=128
 +</code>
 +Most plugins work by requesting the information they need from Molpro. This is typically information about the molecule and hamiltonian, plus an input file consisting of options. For some plugins, Molpro is aware of the structure of this input file, and will construct it by merging user-specified options with defaults. For example,
 +
 +<code>
 +GLOBAL,FCIQMC,TIME=20,CALCRDMONFLY=3
 +PLUGIN,COMMAND='neci'
 +</code>
 +===== Summary of keywords known to the controlling program =====
 +
 +This is a summary of all keywords presently implemented in the controlling program. Each module knows further keywords, which are described in the chapters about the individual programs. For detailed information about the use of the commands listed below, consult the following chapters.
 +
 +  * **//Program control://** 
 +  * **''%%**%%''** indicates start of a new calculation
 +  * **''MEMORY''** allocates dynamic memory
 +  * **''PUNCH''** opens a punch file
 +  * **''FILE''** connects units to permanent files
 +  * **''RESTART''** recovers file information
 +  * **''INCLUDE''** includes other input files
 +  * **''BASIS''** can be used to define default basis sets
 +  * **''GEOMETRY''** can be used to specify the geometry
 +  * **''ZMAT''** can be used to define the Z-matrix
 +  * **''PARALLEL''** can be used to control parallelization
 +  * **''STATUS''** checks status of program steps
 +  * **''PRINT'',''GPRINT''** controls global print levels
 +  * **''THRESH'',''GTHRESH''** controls global thresholds
 +  * **''DIRECT'',''GDIRECT''** flags direct computation of integrals and for setting direct options
 +  * **''EXPEC'',''GEXPEC''** controls computation of expectation values
 +  * **''TEXT''** prints text
 +  * **''EXIT''** stops execution
 +  * **''DO''** controls do loops
 +  * **''ENDDO''** end of do loops
 +  * **''IF''** controls conditional actions
 +  * **''ELSEIF''** controls conditional actions
 +  * **''ENDIF''** end of ''%%IF block%%''
 +  * **''GOTO''** used to skip part of input and for loops over input
 +  * **''LABEL''** no action
 +  * **''DATA''** data set management
 +  * **''DELETE'', ''ERASE''** data set deletion
 +  * **''MATROP''** performs matrix operations
 +  * **''GRID''** Define grid
 +  * **''CUBE''** Dump data to grid
 +  * **''CARTESIAN''** Use cartesian basis functions
 +  * **''SPHERICAL''** Use spherical harmonic basis functions
 +  * **''USER''** calls user-supplied subroutine
 +  * **''%%---%%''** last line of input\\
 +
 +
 +  * **//Variables://** 
 +  * **''SET''** sets variables (obsolete)
 +  * **''SETI''** sets variables or numbers to their inverse (obsolete)
 +  * **''SETA''** sets variable arrays (obsolete)
 +  * **''CLEAR''** clears variables
 +  * **''CLEARALL''** clears all variables
 +  * **''GETVAR''** recovers variables from file
 +  * **''SHOW''** displays the values of variables
 +  * **''TABLE''** prints tables\\
 +
 +  * **//Wave function optimization://** 
 +  * **''INT''** calls the machine default integral program. This is optional and needs not to be given.
 +  * **''LSINT''** calls the spin-orbit integral program
 +  * **''CPP''** compute core polarization potential integrals
 +  * **''HF'' or ''RHF''** calls spin-restricted Hartree-Fock program (open or closed shell)
 +  * **''UHF''** calls spin-unrestricted Hartree-Fock program
 +  * **''DFT''** calls the density functional program
 +  * **''KS'', ''RKS''** call the Kohn-Sham spin restricted density functional program
 +  * **''UKS''** call the Kohn-Sham spin-unrestricted density functional program
 +  * **''MULTI'', ''MCSCF'', or ''CASSCF''** calls MCSCF/CASSCF program
 +  * **''CASVB''** calls the CASVB valence bond program
 +  * **''CI'', ''MRCI'', or ''CI-PRO''** calls internally contracted MRCI program (only pairs contracted)
 +  * **''CIC'' or ''MRCIC''** calls the faster internally contracted MRCI program (pairs and singles contracted)
 +  * **''CIPT2''** calls internally contracted CIPT2 program
 +  * **''ACPF'', ''AQCC''** calls internally contracted MR-ACPF program
 +  * **''CEPA''** calls single-reference CEPA program (closed- or open-shell)
 +  * **''RS2'', ''RS3''** calls internally contracted multireference perturbation theory program (only pairs contracted)
 +  * **''CASPT2'' or ''RS2C''** calls faster program for internally contracted multireference perturbation theory
 +  * **''NEVPT2''** calls NEVPT2 program
 +  * **''MP2''** calls closed-shell MP2 program
 +  * **''MP3''** calls closed-shell MP3 program
 +  * **''MP4''** calls closed-shell MP4 program
 +  * **''CISD''** calls closed-shell CISD program
 +  * **''CCSD''** calls closed-shell coupled cluster program
 +  * **''DCSD''** calls closed-shell distringusihable cluster program
 +  * **''BCCD''** calls closed-shell Brueckner CCD program
 +  * **''QCI'',''QCSID''** calls closed-shell quadratic configuration interaction program
 +  * **''UCCSD''** calls spin-unrestricted open-shell coupled cluster program (based on RHF reference function)
 +  * **''RCCSD''** calls spin-restricted open-shell coupled cluster program (based on RHF reference function)
 +  * **''FCI'' or ''FULLCI''** calls determinant based full CI program\\
 +
 +  * **//Local correlation methods://** 
 +  * **''LMP2''** calls closed-shell PAO-LMP2 program
 +  * **''LMP3''** calls closed-shell PAO-LMP3 program
 +  * **''LMP4''** calls closed-shell PAO-LMP4 program
 +  * **''LCISD''** calls closed-shell PAO-LCISD program
 +  * **''LCCSD''** calls closed-shell PAO-LCCSD program
 +  * **''PNO-LMP2''** calls PNO-LMP2 program
 +  * **''PNO-LCCSD''** calls PNO-LCCSD program, equivalent to ''PNO-RCCSD''
 +  * **''PNO-RCCSD''** calls PNO-RCCSD program
 +  * **''PNO-UCCSD''** calls PNO-UCCSD program
 +  * **''PNO-CASPT2''** calls PNO-CASPT2 program\\
 +
 +  * **//Explicitly correlated methods://** 
 +  * **''MP2-R12''** calls MP2-R12 program
 +  * **''MP2-F12''** calls MP2-F12 program
 +  * **''CCSD-F12''** calls CCSD-F12 program
 +  * **''LMP2-R12''** calls PAO-LMP2-R12 program
 +  * **''LMP2-F12''** calls PAO-LMP2-F12 program
 +  * **''LCCSD-F12''** calls PAO-LCCSD-F12 program
 +  * **''PNO-LMP2-F12''** calls PNO-LMP2-F12 program
 +  * **''PNO-LCCSD-F12''** calls PNO-LCCSD-F12 program, equivalent to ''PNO-RCCSD-F12''
 +  * **''PNO-RCCSD-F12''** calls PNO-RCCSD-F12 program
 +  * **''PNO-UCCSD-F12''** calls PNO-UCCSD-F12 program
 +  * **''RS2-F12''** calls explicitly correlated multireference perturbation theory program
 +  * **''MRCI-F12''** calls explicitly correlated internally contracted MRCI program\\
 +
 +  * **//Orbital manipulation://** 
 +  * **''LOCALI''** calls orbital localization program
 +  * **''MERGE''** calls orbital manipulation program\\
 +
 +  * **//Properties and wavefunction analysis://** 
 +  * **''POP''** calls population analysis program
 +  * **''DMA''** calls distributed multipole analysis program
 +  * **''IBBA'' or ''IBO''** calls intrinsic bond orbital analysis program
 +  * **''PROPERTY''** calls properties program
 +  * **''DIP''** adds dipole field to $h$
 +  * **''QUAD''** adds quadrupole field to $h$
 +  * **''LATTICE''** read or disable lattice of point charges
 +  * **//Gradients and geometry optimization://** 
 +  * **''FORCES''** calls gradient program
 +  * **''OPTG''** performs automatic geometry optimization
 +  * **''MIN''** performs energy minimization with respect to some parameters
 +  * **''PUT''** print or write geometry to a file
 +  * **''HESSIAN''** calculate Hessian
 +  * **''FREQUENCY''** calculate vibrational frequencies
 +  * **''MASS''** define atomic masses
 +  * **''DDR''** evaluates approximate non-adiabatic coupling matrix elements
 +
 +The command names for single reference coupled cluster methods ''%%QCISD, CCSD, LQCISD, LCCSD, PNO-LCCSD, PNO-RCCSD, PNO-UCCSD%%'' (including the explicitly correlated variants) can be appended by ''%%(T)%%'' and then a perturbative correction for triple excitations will be computed (e.g., ''%%CCSD(T)%%'', ''%%PNO-LCCSD(T)-F12%%'' etc.)
 +
 +''HF'', ''KS'', ''UHF'', ''UKS'', ''MP2'', ''CCSD'', ''MCSCF'', ''RS2'', and all PAO-based local correlation methods can be prepended by ''DF-'' to invoke density fitting (PNO always implies density fitting).
 +
 +''HF'', ''KS'', ''UHF'', ''UKS'' can be pretended by ''LDF-'' to invoke local density fitting approximations.
 +
 +===== Molpro help =====
 +
 +The help command can be used to obtain a short description of commands, input parameters, and variables. The syntax is:
 +
 +''HELP'',//set//,//name//,[//keys//]
 +
 +where //set// is either ''COMMAND'', ''VARIABLE'', or the name of the input set (e.g., ''THRESH'', ''PRINT'', ''LOCAL'', ''EOM'', ''CFIT''), and //name// is the name of the parameter. If //name// is blank, all parameters of the set are shown. Optionally, //keys// can be specified to request specific information (e.g., ''short_description'', ''long_description'', ''default_value'', ''type'', ''program''). If //keys// are not given, ''short_description'' is assumed.
 +<code - examples/help.inp>
 +***,demonstrate help facility in Molpro
 +help,command,help    !print help about help
 +help,thresh,energy   !print help about threshold energy
 +help,thresh,energy,default_value  !print help about threshold energy and its default
 +help,thresh          !print short description of all thresholds
 +help,thresh,nonexistent  !this does not exist and gives an error message
 +</code>
 +Currently, help is only available for a limited number of parameters and commands. However, the database will be extended in the near future.