====== Program control ======
===== Starting a job (***) =====
The first card of each input should be:
''%%***%%'',//text//
where //text// is arbitrary. If file 1 is restarted, //text// must always be the same. The effect of this card is to reset all program counters, etc. If the ''%%***%%'' card is omitted, //text// assumes its default value, which is all blank.
===== Ending a job (---) =====
The end of the input is signaled by either an end of file, or a
''%%---%%''
card. All input following the ''%%---%%'' card is ignored.
Alternatively, a job can be stopped at at some place by inserting an ''EXIT'' card. This could also be in the middle of a ''DO'' loop or an ''IF'' block. If in such a case the ''%%---%%'' card would be used, an error would result, since the ''ENDDO'' or ''ENDIF'' cards would not be found.
===== Restarting a job (RESTART) =====
In contrast to Molpro92 and older versions, the current version of Molpro attempts to recover all information from all permanent files by default. If a restart is unwanted, the ''NEW'' option can be used on the ''FILE'' directive. The ''%% RESTART%%'' directive as described below can still be used as in Molpro92, but is usually not needed.
''RESTART'',$r_1,r_2,r_3,r_4,\ldots$;
The $r_i$ specify which files are restarted. These files must have been allocated before using ''FILE'' cards. There are two possible formats for the $r_i$:
* **a) $0 < r_i < 10$:** Restart file $r_i$ and restore all information.
* **b) $r_i=name.nr$:** Restart file $nr$ but truncate before record //name//.
If all $r_i=0$, then all permanent files are restarted. However, if at least one $r_i$ is not equal to zero, only the specified files are restarted.
Examples:
* **''%%RESTART;%%''** will restart all permanent files allocated with ''FILE'' cards (default)
* **''%%RESTART,1;%%''** will restart file 1 only
* **''%%RESTART,2;%%''** will restart file 2 only
* **''%%RESTART,1,2,3;%%''** will restart files 1-3
* **''%%RESTART,2000.1;%%''** will restart file 1 and truncate before record 2000.
===== Including secondary input files (INCLUDE) =====
''INCLUDE'',//file//[,''ECHO''];
Insert the contents of the specified //file// in the input stream. In most implementations the file name given is used directly in a Fortran open statement. If //file// begins with the character ''%%’/’%%'', then it will be interpreted as an absolute file name. Otherwise, it will be assumed to be a path relative to the directory from which the Molpro has been launched. If, however, the file is not found, an attempt will be made instead to read it relative to the system ''%%lib/include%%'' directory, where any standard procedures may be found.
If the ''ECHO'' option is specified, the included file is echoed to the output in the normal way, but by default its contents are not printed. The included file may itself contain ''INCLUDE'' commands up to a maximum nesting depth of 10.
For the name of the //file// and the characters allowed, similar recommendations hold as for the Molpro input file, see
https://www.molpro.net/develop/manual/doku.php?id=quickstart#how_to_run_molpro .
The include file together with a path to it may however be used.
===== Allocating dynamic memory (MEMORY) =====
''MEMORY'',//n,scale//;
Sets the limit on dynamic memory to $n$ floating point words. For details, see section [[general program structure#memory allocation|memory allocation]].
===== DO loops (DO/ENDDO) =====
''DO'' loops can be constructed using the ''DO'' and ''ENDDO'' commands. The general format of the ''DO'' command is similar to Fortran:
''DO'' //variable//''=''//start, end// %%[[%%,]//increment//] %%[[%%,]//unit//]
where //start, end, increment// may be expressions or variables. The default for //increment// is 1. In contrast to Fortran, these variables can be modified within the loop (to be used with care!). For instance:
DR=0.2
DO R=1.0,6.0,DR,ANG
IF (R.EQ.2) DR=0.5
IF (R.EQ.3) DR=1.0
....
ENDDO
performs the loop for the following values of ''R'': ''%%1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.5, 3.0, 4.0, 5.0, 6.0%%'' Ångstrøm. The same could be achieved as follows:
RVEC=[1.0,1.2,1.4,1.6,1.8,2.0,2.5,3.0,4.0,5.0,6.0] ANG
DO I=1,#RVEC
R=RVEC(I)
....
ENDDO
Up to 20 ''DO'' loops may be nested. Each ''DO'' must end with its own ''ENDDO''.
Jumps into ''DO'' loops are possible if the ''DO'' variables are known. This can be useful in restarts, since it allows to continue an interrupted calculation without changing the input (all variables are recovered in a restart).
See [[introductory_examples#do_loops|introductory examples]] for two examples of using do loops.
===== Branching (IF/ELSEIF/ENDIF) =====
''IF'' blocks and ''%%IF/ELSEIF%%'' blocks can be constructed as in ''FORTRAN''.
==== IF statements ====
''IF'' blocks have the same form as in Fortran:
''%%IF (logical expression) THEN statements ENDIF%%''
If only one statement is needed, the one-line form
''%%IF (logical expression) statement %%''
can be used, except if //statement// is a procedure name.
''ELSE'' and ''%%ELSE IF%%'' can be used exactly as in Fortran. ''IF'' statements may be arbitrarily nested. Jumps into ''IF'' or ''%%ELSE IF%%'' blocks are allowed. In this case no testing is performed; when an ''ELSE'' is reached, control continues after ''ENDIF''.
The logical expression may involve logical comparisons of algebraic expressions or of strings. Examples:
IF(STATUS.LT.0) THEN
TEXT,An error occurred, calculation stopped
STOP
ENDIF
IF($method.eq.'HF') then
...
ENDIF
In the previous example the dollar and the quotes are optional:
IF(METHOD.EQ.HF) then
...
ENDIF
==== GOTO commands ====
''GOTO'' commands can be used to skip over parts of the input. The general form is
''%%GOTO,command,[n],[nrep]%%''
Program control skips to the $|n|$’th occurrence of //command// (Default: $n=1$). //command// must be a keyword in the first field of an input line. If //n// is positive, the search is forward starting from the current position. If //n// is negative, search starts from the top of the input. The ''GOTO'' command is executed at most //nrep// times. The default for //nrep// is 1 if $n \lt 0$ and infinity otherwise. We recommend that ''GOTO'' commands are never used to construct loops.
Alternatively, one can jump to labels using
''%%GOTO,label%%''
Since labels must be unique, the search starts always from the top of the input. It is required that the //label// ends with a colon.
==== Labels (LABEL) ====
''LABEL''
This is a dummy command, sometimes useful in conjunction with ''GOTO''.
===== Procedures (PROC/ENDPROC) =====
Procedures can be defined at any place of the input or in ''INCLUDE'' files as follows:
PROC name
statements
ENDPROC
Alternatively, one can use the form
''%%PROC name[=]{statements}%%''
In the latter case, it is required that the left curly bracket ($\{$) appears on the same line as ''PROC'', but //statements// can consist of several lines. If in the subsequent input //name// is found as a command //in the first field// of a line, it is substituted by the //statements//. Example:
proc runscf1
nogprint,variable
if(#symmetry.ne.0) set,scfsym=symmetry(1)
if(#scfsy.ne.0) set,scfsym=scfsy
if(#scfsymm.ne.0) set,scfsym=scfsymm
if(#scfsymmetry.ne.0) set,scfsym=scfsymmetry
if(#scfsym.eq.0) set,scfsym=1
set,symmetry(1)=scfsym
if(orbital.eq.0) then
hf
else if(lastorb.ne.'RHF'.or.lastspin.ne.spin(1).or.lastsym.ne.scfsym(1).or. \
lastnelec.ne.nelec(1)) then
if(spin(1).eq.0.and.mod(nelec(1),2).ne.0) set,spin(1)=1
hf
end if
if(#spin.eq.0) spin=mod(nelec,2)
endproc
Alternatively, this could be written as
proc runscf2={
nogprint,variable
if(#symmetry.ne.0) set,scfsym=symmetry(1)
if(#scfsy.ne.0) set,scfsym=scfsy
if(#scfsymm.ne.0) set,scfsym=scfsymm
if(#scfsymmetry.ne.0) set,scfsym=scfsymmetry
if(#scfsym.eq.0) set,scfsym=1
set,symmetry(1)=scfsym
if(orbital.eq.0) then
hf
else if(lastorb.ne.'RHF'.or.lastspin.ne.spin(1).or.lastsym.ne.scfsym(1).or. \
lastnelec.ne.nelec(1)) then
if(spin(1).eq.0.and.mod(nelec(1),2).ne.0) set,spin(1)=1
hf
end if
if(#spin.eq.0) spin=mod(nelec,2)
}
Procedures may be nested up to a depth of 10. In the following example ''runscf'' is a procedure:
proc runmp2
runscf
if(spin.eq.0) then
mp2
else
rmp2
end if
nogprint,variable
saveccsd
printdip=0
printresults
endproc
Note: Procedure names are substituted only if found in the first field of an input line. Therefore, they must not be used on one-line ''IF'' statements; please use ''%%IF / ENDIF%%'' structures instead.
If as first statement of a procedure ''ECHO'' is specified, the substituted commands of the present and lower level procedures will be printed. If ''ECHO'' is specified in the main input file, all subsequent procedures are printed.
Certain important input data can be passed to the program using variables. For instance, occupancy patterns, symmetries, number of electrons, and multiplicity can be defined in this way (see section [[variables#special variables|special variables]] for more details). This allows a quite general use of procedures.
Procedures can also be used in geometry optimizations or extrapolations, for example:
geometry={h1;o,h1,r;h2,o,r,h1,theta}
r=1.9
theta=102
runmrci={if(.not.scfdone) hf;multi;mrci}
runmrci
extrapolate,procedure=runmrci,bases=vtz:vqz
symmetry,x
geometry={h1;o,h1,r;h2,o,r,h1,theta}
r=1.9
theta=102
runmp2={{hf;occ,4,1};mp2}
runlmp2={hf;lmp2}
optg,procedure=runmp2
optg,procedure=runlmp2
runccsdt={hf;ccsd(t)}
extrapolate,procedure=runccsdt,basis=vtz:vqz
===== Default Procedures =====
Various procedures for standard calculations can be used with the ''run'' command, see [[introductory_examples#simplified_input|Simplified input]]. They allow to write simple inputs in the most compact way.
Further predefined procedures are available in ''%%lib/include/procedures%%'':
runscf, rundft, runmp2, rundf-hf, rundt-mp2, runldf-hf, runldf-hf, runpno-lmp2, runmp3, runmp4, runmp4sdq, runccsd, runccsdt, runbccd, runbccdt, runqcisd runqcisdt, runuccsd, runuccsdt, runcas, runmrpt, runcaspt2, runcaspt3, runmrci, runacpf, optscf, optdft, optmp2, optcas, optmrci, optccsd, optccsdt, freqscf, freqdft, freqmp2, freqccsd, freqccsdt, freqcas, freqmrci, rundf-lmp2, optdf-lmp2, freqdf-lmp2
A line
include procedures
is necessary to include these procedures. Some procedures use variables SYMMETRY, SPIN, STATE, NELEC to define state symmetries, spins, and charges, respectively. For example, the procedure ''runmrci'' can be used for a calculation of a vertical ionization potential of H$_2$O as follows:
***,h2o IP
include procedures
r=1 ang !set bond distance
theta=104 degree !set bond angle
basis=vtz !define basis set
geometry !geometry input block
o !z-matrix
h1,o,r
h2,o,r,h1,theta
endg !end of geometry input
runmrci !compute mrci energy of water using defaults
eh2o=energy !save mrci energy in variable eh2o
set,nelec=9 !set number of electrons to 9
set,symmetry=2 !set wavefunction symmetry to 2
runmrci !compute mrci energy of h2o+ (2b2 state)
ipci=(energy-eh2o)*toev !compute mrci ionization potential in ev
For further examples see {{:examples:oh_runccsdt.inp}}, {{:examples:oh_runmrci1.inp}}, {{:examples:oh_runmrci2.inp}}, {{:examples:oh_runmrci3.inp}}, {{:examples:oh_runmrci4.inp}}.
Note: At present, all variables are //global//, i.e., variables are commonly known to all procedures and all variables defined in procedures will be subsequently known outside the procedures as well. The reason is that procedures are included into the internal input deck at the beginning of the job and not at execution time; for the same reason, variable substitution of procedure names is not possible, e.g. one cannot use constructs like
method=scf
$method !this does not work!
===== Text cards (TEXT) =====
''TEXT'',//xxxxxx//
will just print //xxxxxx// in the output. If the text contains variables which are preceded by a dollar ($), these are replaced by their actual values, e.g.
r=2.1
text,Results for R=$r
will print
''%%Results for R=2.1%%''
===== Checking the program status (STATUS) =====
''STATUS'',[''ALL|LAST|commands''],[''IGNORE|STOP|CRASH''],[''CLEAR'']
This command checks and prints the status of the specified program steps. //commands// may be a list of commands for wavefunction calculations previously executed in the current job. If no //command// or ''LAST'' is specified, the status of the last step is checked. If ''ALL'' is given, all program steps are checked.
If ''CRASH'' or ''STOP'' is given, the program will crash or stop, respectively, if the status was not o.k. (''STOP'' is default). If ''IGNORE'' is given, any bad status is ignored. If ''CLEAR'' is specified, all status information for the checked program steps is erased, so there will be no crash at subsequent status checks.
Examples:
* **''%%STATUS,HF,CRASH;%%''** will check the status of the last ''HF-SCF'' step and crash if it was not o.k. (i.e. no convergence). ''CRASH'' is useful to avoid that the next program in a chain is executed.
* **''%%STATUS,MULTI,CI,STOP;%%''** will check the status of the most previous ''MULTI'' and ''CI'' steps and stop if something did not converge.
* **''%%STATUS,RHF,CLEAR;%%''** will clear the status flag for last ''%% RHF%%''. No action even if ''RHF'' did not converge.
Note that the status variables are not recovered in a restart.
By default, the program automatically does the following checks:
1.) If an orbital optimization did not converge, and the resulting orbitals are used in a subsequent correlation calculation, an error will result. This error exit can be avoided using the ''IGNORE_ERROR'' option on the ''ORBITAL'' directive.
2.) If a ''CCSD|QCI|BCC|LMPn'' calculation did not converge, further program steps which depend on the solution (e.g, Triples, CPHF, EOM) will not be done and an error will result. This can be avoided using the ''NOCHECK'' option on the command line.
3.) In geometry optimizations or frequency calculations no convergence will lead to immediate error exits.
===== Global Thresholds (GTHRESH) =====
[command:gthresh]
A number of global thresholds can be set using the ''GTHRESH'' command outside the individual programs (the first letter ''G'' is optional, but should be used to avoid confusion with program specific ''THRESH'' cards). The syntax is
''GTHRESH'',//key1=value1//,//key2=value2//,…
//key// can be one of the following.
* **''ZERO''** Numerical zero (default 1.d-12)
* **''ONEINT''** Threshold for one-electron integrals (default 1.d-12, but not used at present)
* **''TWOINT''** Threshold for the neglect of two-electron integrals (default 1.d-12)
* **''PREFAC''** Threshold for test of prefactor in ''TWOINT'' (default 1.d-14)
* **''LOCALI''** Threshold for orbital localization (default 1.d-8)
* **''EORDER''** Threshold for reordering of orbital after localization (default 1.d-4)
* **''ENERGY''** Convergence threshold for energy (default 1.d-6)
* **''GRADIENT''** Convergence threshold for orbital gradient in ''MCSCF'' (default 1.d-2)
* **''STEP''** Convergence threshold for step length in MCSCF orbital optimization (default 1.d-3)
* **''ORBITAL''** Convergence threshold for orbital optimization in the SCF program (default 1.d-5).
* **''CIVEC''** Convergence threshold for CI coefficients in ''MCSCF'' and reference vector in ''CI'' (default 1.-d.5)
* **''COEFF''** Convergence threshold for coefficients in ''CI'' and ''CCSD'' (default 1.d-4)
* **''PRINTCI''** Threshold for printing CI coefficients (default 0.05)
* **''PUNCHCI''** Threshold for punching CI coefficients (default 99 - no punch)
* **''SYMTOL''** Threshold for finding symmetry equivalent atoms (default 1.d-6)
* **''GRADTOL''** Threshold for symmetry in gradient (default 1.d-6).
* **''THROVL''** Threshold for smallest allowed eigenvalue of the overlap matrix (default 1.d-8)
* **''THRORTH''** Threshold for orthonormality check (default 1.d-8)
* **''THRPRINT''** Threshold for printing orbitals (thrprint=-1 : column-wise; thrprint=0 : row-wise, as in Molpro2015 and earlier versions ; thrprint $>0$: print only coefficients that are larger than the threshold together with labels (default: thrprint=0.25)
===== Global Print Options (GPRINT/NOGPRINT) =====
[command:gprint]
Global print options can be set using the ''GPRINT'' command outside the individual programs (the first letter ''G'' is optional, but should be used to avoid confusion with program specific ''PRINT'' cards). The syntax is
''GPRINT'',//key1//[//=value1//],//key2//[//=value2//],…\\
''NOGPRINT'',//key1//,//key2//,…
Normally, //value// can be omitted, but values $\gt 0$ may be used for debugging purposes, giving more information in some cases. The default is no print for all options, except for ''DISTANCE'', ''ANGLES'' (default=0), and ''VARIABLE''. ''NOGPRINT'',//key// is equivalent to ''PRINT'',//key//''=-1''. //key// can be one of the following:
* **''BASIS''** Print basis information
* **''DISTANCE''** Print bond distances (default)
* **''ANGLES''** Print bond angle information (default). If $\gt$ 0, dihedral angles are also printed.
* **''ORBITAL''** Print orbitals in ''SCF'' and ''MCSCF''
* **''ORBEN''** Print orbital energies in ''SCF''
* **''CIVECTOR''** Print ''CI'' vector in ''MCSCF''
* **''PAIRS''** Print pair list in ''%%CI, CCSD%%''
* **''CS''** Print information for singles in ''%%CI, CCSD%%''
* **''CP''** Print information for pairs in ''%%CI, CCSD%%''
* **''REF''** Print reference CSFs and their coefficients in ''CI''
* **''PSPACE''** Print p-space configurations
* **''MICRO''** Print micro-iterations in ''MCSCF'' and ''CI''
* **''CPU''** Print detailed CPU information
* **''IO''** Print detailed I/O information
* **''VARIABLE''** Print variables each time they are set or changed (default).
===== One-electron operators and expectation values (GEXPEC) =====
The operators for which expectation values are requested, are specified by keywords on the global ''GEXPEC'' directive. By default, only dipole moments are computed. The first letter ''G'' is optional, but should be used to avoid confusion with program specific ''EXPEC'' cards, which have the same form as ''GEXPEC''. For all operators specified on the ''GEXPEC'' card, expectation values are computed in all subsequent programs that generate the first-order density matix. This is always the case for variational wavefunctions, i.e., HF, DFT, MCSCF, MRCI. For non-variational wavefunctions such as MP2, MP3, QCISD, QCISD(T), CCSD, or CCSD(T) the density matix is not computed by default, since this requires considerable additional effort (solving z-vector equations). The GEXPEC directive does not affect such programs. In some cases [currently for MP2, MP3, QCISD, QCISD(T), and CCSD] the ''EXPEC'' directive that is specific to those programs can be used to request the property calculation.
For a number of operators it is possible to use //generic// operator names, e.g., ''DM'' for dipole moments, which means that all three components ''DMX'', ''DMY'', and ''DMZ'' are computed. Alternatively, individual components may be requested.
The general format is as follows:
''%%[G]EXPEC%%'',//opname//[,][//icen//,[//x,y,z//]],...
where
* **//opname//** operator name (string), either generic or component.
* **//icen//** z-matrix row number or z-matrix symbol used to determine the origin (x,y,z must not be specified).\\
If //icen//$=0$ or blank, the origin must be specified in //x,y,z//
Several ''GEXPEC'' cards may follow each other, or several operators may be specified on one card.
Examples:
''%%GEXPEC,QM%%'' computes quadrupole moments with origin at (0,0,0),
''%%GEXPEC,QM1%%'' computes quadrupole moments with origin at centre 1.
''%%GEXPEC,QM,O1%%'' computes quadrupole moments with origin at atom ''O1''.
''%%GEXPEC,QM,,1,2,3%%'' computes quadrupole moments with origin at (1,2,3).
The following table summarizes all available operators:
^ One-electron operators and their components ^^^^
^Generic name ^Parity ^Components ^Description ^
|''OV'' | 1 | |Overlap |
|''EKIN'' | 1 | |Kinetic energy |
|''POT'' | 1 | |potential energy |
|''DELTA'' | 1 | |delta function |
|''DEL4'' | 1 | |$\Delta^4$ |
|''DARW'' | 1 | |one-electron Darwin term, i.e., ''DELTA'' with appropriate factors summed over atoms. |
|''MASSV'' | 1 | |mass-velocity term, i.e., ''DEL4'' with appropriate factor. |
|''REL'' | 1 | |total Cowan-Griffin Relativistic correction, i.e., ''DARW''+''MASSV''. |
|''DM'' | 1 |''DMX'', ''DMY'', ''DMZ'' |dipole moments |
|''SM'' | 1 |''XX'', ''YY'', ''ZZ'', ''XY'', ''XZ'', ''YZ'' |second moments |
|''TM'' | 1 |''XXX'', ''XXY'', ''XXZ'', ''XYY'', ''XYZ'', ''XZZ'', ''YYY'', ''YYZ'', ''YZZ'', ''ZZZ'' |third moments |
|''MLTP''//n// | 1 |all unique Cartesian products of order $n$ |multipole moments |
|''QM'' | 1 |''QMXX'', ''QMYY'', ''QMZZ'', ''QMXY'', ''QMXZ'', ''QMYZ'', ''QMRR''=''%%XX + YY + ZZ%%'', ''QMXX''=(3 ''XX'' - ''RR'')/2, ''QMXY''=3 //XY// / 2 etc. |quadrupole moments and $R^2$ |
|''EF'' | 1 |''EFX'', ''EFY'', ''EFZ'' |electric field |
|''FG'' | 1 |''FGXX'', ''FGYY'', ''FGZZ'', ''FGXY'', ''FGXZ'', ''FGYZ'' |electric field gradients |
|''DMS'' | 1 |''DMSXX'', ''DMSYX'', ''DMSZX'', ''DMSXY'', ''DMSYY'', ''DMSZY'', ''DMSXZ'', ''DMSYZ'', ''DMSZZ'' |diamagnetic shielding tensor |
|''LOP'' | -1 |''LX'', ''LY'', ''LZ'' |Angular momentum operators $\hat L_x$, $\hat L_y$, $\hat L_z$ |
|''LOP2'' | 1 |''%%LXLX, LYLY, LZLZ%%'', ''%%LXLY, LXLZ, LYLZ%%'' |one electron parts of products of angular momentum operators. The symmetric combinations $\frac{1}{2} (\hat L_x \hat L_y+\hat L_y \hat L_x)$ etc. are computed. |
|''VELO'' | -1 |''%%D/DX%%'', ''%%D/DY%%'', ''%%D/DZ%%'' |velocity |
|''LS'' | -1 |''LSX'', ''LSY'', ''LSZ'' |spin-orbit operators |
|''ECPLS'' | -1 |''ECPLSX'', ''ECPLSY'', ''ECPLSZ'' |ECP spin-orbit operators |
Expectation values are only nonzero for symmetric operators (parity=1). Other operators can be used to compute transition quantities (spin-orbit operators need a special treatment).
==== Example for computing expectation values ====
The following job computes dipole and quadrupole moments for H$_2$O.
***,h2o properties
geometry={o;h1,o,r;h2,o,r,h1,theta} !Z-matrix geometry input
r=1 ang !bond length
theta=104 !bond angle
gexpec,dm,sm,qm !compute dipole and quarupole moments
$methods=[hf,multi,ci] !do hf, casscf, mrci
do i=1,#methods !loop over methods
$methods(i) !run energy calculation
e(i)=energy
dip(i)=dmz !save dipole moment in variable dip
quadxx(i)=qmxx !save quadrupole momemts
quadyy(i)=qmyy
quadzz(i)=qmzz
smxx(i)=xx !save second momemts
smyy(i)=yy
smzz(i)=zz
enddo
table,methods,dip,smxx,smyy,smzz !print table of first and second moments
table,methods,e,quadxx,quadyy,quadzz !print table of quadrupole moments
This Job produces the following tables
METHODS DIP SMXX SMYY SMZZ
HF 0.82747571 -5.30079792 -3.01408114 -4.20611391
MULTI 0.76285513 -5.29145148 -3.11711397 -4.25941000
CI 0.76868508 -5.32191822 -3.15540500 -4.28542917
METHODS E QUADXX QUADYY QUADZZ
HF -76.02145798 -1.69070039 1.73937477 -0.04867438
MULTI -76.07843443 -1.60318949 1.65831677 -0.05512728
CI -76.23369821 -1.60150114 1.64826869 -0.04676756
==== Example for computing relativistic corrections ====
***,ar2
geometry={ar1;ar2,ar1,r} !geometry definition
r=2.5 ang !bond distance
{hf; !non-relativisitic scf calculation
expec,rel,darwin,massv} !compute relativistic correction using Cowan-Griffin operator
e_nrel=energy !save non-relativistic energy in variable enrel
show,massv,darwin,erel !show individual contribution and their sum
dkroll=1 !use douglas-kroll one-electron integrals
hf; !relativistic scf calculation
e_dk=energy !save relativistic scf energy in variable e_dk.
show,massv,darwin,erel !show mass-velocity and darwin contributions and their sum
show,e_dk-e_nrel !show relativistic correction using Douglas-Kroll
This jobs shows at the end the following variables:
MASSV / AU = -14.84964285
DARWIN / AU = 11.25455679
EREL / AU = -3.59508606
===== XML dump options (XML) =====
This command allows to modify the default behaviour of the XML output.
The general format is as follows:
''%%XML%%'',//key1//[//=value1//],//key2//[//=value2//],…\\
where //key// can be one of the following:
* **''DUMPORB''** Dump occupied orbitals to XML file (default 0, unless the **''--xml-orbdump''** command line option is given).
* **''SKIPVIRT''** Omit virtual orbitals in the XML orbital dumps (default 1).
* **''PRINT''** Print record information to output file, showing from which records the orbitals etc are read (default 0).