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/12 13:44]
qianli [Symmetry] Fix tables
general_program_structure [2020/10/13 10:03] (current)
werner
Line 171: Line 171:
 |2    |  $A^{''}$  |   $z, xz, yz$    $B$    $x, y, xz, yz$  |  $A_u$  |     $x, y, z$     | |2    |  $A^{''}$  |   $z, xz, yz$    $B$    $x, y, xz, yz$  |  $A_u$  |     $x, y, z$     |
  
-===== Defining the wavefunction =====+===== 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: 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:
Line 191: Line 191:
 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. 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 =====+===== 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: 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:
Line 200: Line 200:
 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''). 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:+For ''CORE'' the following special input possibilities exists (only in the MRCI and Coupled-Cluster programs):
  
 ''%%CORE,SMALL%%''\\ ''%%CORE,SMALL%%''\\
Line 213: Line 213:
 ''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. ''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 anular 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.+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 anular 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. 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 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 (this check is not carried out for ''%%CORE,LARGE%%'').+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 large 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. 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.
Line 223: Line 223:
 ''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. ''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.,+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 (note that core types can only specified inside command blocks). 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%%'' ''%%OCC,4,2,1,CONTEXT=MULTI%%''
Line 310: Line 310:
   * **//Program control://**    * **//Program control://** 
   * **''%%**%%''** indicates start of a new calculation   * **''%%**%%''** indicates start of a new calculation
-  * **''MEMORY''command:memory** allocates dynamic memory +  * **''MEMORY''** allocates dynamic memory 
-  * **''PUNCH''command:punch** opens a punch file +  * **''PUNCH''** opens a punch file 
-  * **''FILE''command:file** connects units to permanent files +  * **''FILE''** connects units to permanent files 
-  * **''RESTART''command:restart** recovers file information +  * **''RESTART''** recovers file information 
-  * **''INCLUDE''command:include** includes other input files +  * **''INCLUDE''** includes other input files 
-  * **''BASIS''command:basis** can be used to define default basis sets +  * **''BASIS''** can be used to define default basis sets 
-  * **''GEOMETRY''command:geometry** can be used to specify the geometry +  * **''GEOMETRY''** can be used to specify the geometry 
-  * **''ZMAT''command:zmat** can be used to define the Z-matrix+  * **''ZMAT''** can be used to define the Z-matrix
   * **''PARALLEL''** can be used to control parallelization   * **''PARALLEL''** can be used to control parallelization
-  * **''STATUS''command:status** checks status of program steps +  * **''STATUS''** checks status of program steps 
-  * **''PRINT'',''GPRINT''command:gprint** controls global print levels +  * **''PRINT'',''GPRINT''** controls global print levels 
-  * **''THRESH'',''GTHRESH''command:gthresh** controls global thresholds +  * **''THRESH'',''GTHRESH''** controls global thresholds 
-  * **''DIRECT'',''GDIRECT''sec:gdirect** flags direct computation of integrals and for setting direct options +  * **''DIRECT'',''GDIRECT''** flags direct computation of integrals and for setting direct options 
-  * **''EXPEC'',''GEXPEC''sec:gexpec** controls computation of expectation values +  * **''EXPEC'',''GEXPEC''** controls computation of expectation values 
-  * **''TEXT''command:text** prints text +  * **''TEXT''** prints text 
-  * **''EXIT''command:threedash** stops execution +  * **''EXIT''** stops execution 
-  * **''DO''command:do** controls do loops +  * **''DO''** controls do loops 
-  * **''ENDDO''command:do** end of do loops +  * **''ENDDO''** end of do loops 
-  * **''IF''command:if** controls conditional actions +  * **''IF''** controls conditional actions 
-  * **''ELSEIF''command:if** controls conditional actions +  * **''ELSEIF''** controls conditional actions 
-  * **''ENDIF''command:if** end of ''%%IF block%%'' +  * **''ENDIF''** end of ''%%IF block%%'' 
-  * **''GOTO''command:goto** used to skip part of input and for loops over input +  * **''GOTO''** used to skip part of input and for loops over input 
-  * **''LABEL''command:label** no action +  * **''LABEL''** no action 
-  * **''DATA''command:data** data set management +  * **''DATA''** data set management 
-  * **''DELETE''command:delete, ''%% ERASE%%''command:erase** data set deletion+  * **''DELETE'', ''ERASE''** data set deletion
   * **''MATROP''** performs matrix operations   * **''MATROP''** performs matrix operations
-  * **''GRID''command:grid** Define grid +  * **''GRID''** Define grid 
-  * **''CUBE''command:cube** Dump data to grid +  * **''CUBE''** Dump data to grid 
-  * **''CARTESIAN''command:cartesian** Use cartesian basis functions +  * **''CARTESIAN''** Use cartesian basis functions 
-  * **''SPHERICAL''command:spherical** Use spherical harmonic basis functions+  * **''SPHERICAL''** Use spherical harmonic basis functions
   * **''USER''** calls user-supplied subroutine   * **''USER''** calls user-supplied subroutine
-  * **''%%---%%''command:threedash** last line of input\\+  * **''%%---%%''** last line of input\\ 
  
   * **//Variables://**    * **//Variables://** 
Line 391: Line 392:
   * **''LCCSD''** calls closed-shell PAO-LCCSD program   * **''LCCSD''** calls closed-shell PAO-LCCSD program
   * **''PNO-LMP2''** calls PNO-LMP2 program   * **''PNO-LMP2''** calls PNO-LMP2 program
-  * **''PNO-LCCSD''** calls PNO-LCCSD 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\\   * **''PNO-CASPT2''** calls PNO-CASPT2 program\\
  
Line 402: Line 405:
   * **''LCCSD-F12''** calls PAO-LCCSD-F12 program   * **''LCCSD-F12''** calls PAO-LCCSD-F12 program
   * **''PNO-LMP2-F12''** calls PNO-LMP2-F12 program   * **''PNO-LMP2-F12''** calls PNO-LMP2-F12 program
-  * **''PNO-LCCSD-F12''** calls PNO-LCCSD-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   * **''RS2-F12''** calls explicitly correlated multireference perturbation theory program
   * **''MRCI-F12''** calls explicitly correlated internally contracted MRCI program\\   * **''MRCI-F12''** calls explicitly correlated internally contracted MRCI program\\
Line 428: Line 433:
   * **''DDR''** evaluates approximate non-adiabatic coupling matrix elements   * **''DDR''** evaluates approximate non-adiabatic coupling matrix elements
  
-The command names for single reference coupled cluster methods ''%%QCISD, CCSD, LQCISD, LCCSD, PNO-LCCSD%%'' 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.)+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'', ''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).
Line 441: Line 446:
  
 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. 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. Currently, help is only available for a limited number of parameters and commands. However, the database will be extended in the near future.