Running Molpro

On Unix systems, Molpro is accessed using the molpro unix command. The syntax is

molpro options datafile

Molpro’s execution is controlled by user-prepared data; if datafile is not given on the command line, the data is read from standard input, and program results go to standard output. Otherwise, data is taken from datafile, and the output is written to a file whose name is generated from datafile by removing any trailing suffix, and appending .out. The name datafile must not contain parenthesis, brackets, or other special characters like exclamation marks (!), question marks (?), slashes (/), backslashes (\), blanks( ), equality signs($=$), commas (,), semicolons (;), asterisks (*), or any kind of quotes. If the output file already exists, then the old file is appended to the same name with suffix .out_1, and then deleted. This provides a mechanism for saving old output files from overwriting. Note that the above behaviour can be modified with the -o or -s options.

For example, a serial Molpro calculation is started using

molpro mymolecule.inp

and this creates an output mymolecule.out. For larger calculations, it may be necessary to specify how much dynamic (stack) memory molpro can allocate, using the -m option:

molpro -m100 mymolecule.inp

This allocates 100 MW (megawords) of stack memory. Further options are necessary for parallel excution, see section specifying parallel execution. For parallel excutions, it is very important to read and understand also sections GA Installation notes and memory specifications.

Most options are not required, since sensible system defaults are usually set. Options as detailed below may be given, in order of decreasing priority, on the command line, in the environment variable MOLPRO_OPTIONS, or in the files ./molpro.rc, $HOME/.molprorc, and tuning.rc in the library files directory.

  • -o $|$ --output outfile [option:o] specifies a different output file.
  • -d $|$ --directory directory specifies the scratch directory for the program.
  • --backup nfile enables the saving of previous output files, up to a maximum of nfile. If nfile is omitted, it defaults to infinity. The names of the backup files are constructed by appending _ and a sequence number to the output file name, and both regular and xml-format files are processed, together with any log file.
  • -a $|$ --append-backup Previous output files are concatenated by appending, instead of being kept separate.
  • --directory-backup Backup files are stored in a single separate subdirectory, named datafile.d, with subdirectories 01, 02, $\dots$. --directory-backup and --append-backup are mutually exclusive, and switching one of them on will force the other to be switched off. --no-append-backup --no-directory-backup can also be specified with the same effect, except that they do not also imply --backup.
  • --backup-directory dir In the case of --directory-backup, use dir as the location of backup files instead of the default.
  • -s $|$ --nobackup disables the mechanism whereby an existing output file is saved.
  • -v $|$ --verbose causes the procedure to echo debugging information; --noverbose selects quiet operation (default).
  • -k key where key is the licence key. This is normally not necessary since the key should be installed globally when installing Molpro.
  • -m $|$ --memory memory (in megawords) specifies the working (stack) memory to be assigned to the program, in 8-byte words. For details, see section memory allocation.
  • -M $|$ --memory-per-node M total memory per node (stack + GA, in megawords) For details, see section memory allocation
  • -I $|$ --main-file-repository directory specifies the directory where the permanent copy of any integral file (file 1) resides. This may be a pathname which is absolute or relative to the current directory (e.g., ’.’ would specify the current directory). Normally, the -I directory should be equal to the -d working directory to avoid copying of large integral files, since after completion of the job the file will be copied to the directory given after -I. On some main frames, the scratch directory is erased automatically after a job has terminated, and in such cases a different -I directory, e.g., $HOME/int, can be specified (environment variables will be expanded at run time). In view of the large integral file sizes, this should be used with care, however. Note that in parallel runs with more than 1 processor the integral file will never be copied, and cannot be restarted.
  • -W $|$ --wavefunction-file-repository directory is similar to --main-file-repository except that it refers to the directory for the wavefunction files (2,3 and 4). This determines the destination of permanent wavefunction (dump) files used for storing information like orbitals or CI-vectors etc. These files are essential for restarting a job. As explained for the integral files above, permanent wavefunction files will be copied to directory after completion of the job. The default for directory is $HOME/wfu.
  • -X $|$ --xml-output specifies that an additional XML output file suitable for automatic post-processing will be written, with suffix .xml. Important data such as input, geometries, and results are stored in a marked-up format. --no-xml-output switches off this behaviour.
  • --xml-orbdump If this option is given, more data such as the basis set and the occupied orbitals are dumped to the XML file.
  • --stdout Write the plain-text output to standard output instead of the .out file. The .xml file is unaffected. This option can be useful when using an integrated development environment.
  • -L $|$ --library directory specifies the directory where the basis set library files (LIBMOL*) are found.
  • -t $|$ --omp-thread-limit n Specify the maximum number of OpenMP threads, as if the environment variable OMP_THREAD_LIMIT were set to n.
  • --geometry Use this to obtain an XML output with geometry information, but without performing any electronic structure calculation (e.g. to visualise the geometry). Note that it needs at least one jobstep, e.g. “hf” though this jobstep will not be executed.
  • --no-flush6 Don’t flush the output, this might increase performance on some systems as the expense of being able to poll the output.
  • -g $|$ --use-logfile Use a separate logfile for more in-depth output.
  • --nouse-logfile All output will be in the regular output file.
  • -E $|$ --exclusive-file-implementation Specify file implementation. This is mainly for debugging, eg. reproducing non-shared file problems on a system with shared files, normally the default should be used.
  • --name name=string Set string variable on the command line, eg. --name basis=vtz.
  • -V $|$ --var name=value Set variable on the command line, eg. --var len=1.2.
  • -k $|$ --licence-token Specify licence token on the command line.
  • --version Print Molpro version and exit
  • --database Instead of executing Molpro, instead run one of the database utility scripts as described in section interrogation and manipulation of databases.
  • --sysid For debugging when the getinfo.sh script does not give the correct sysid.

These options are for the molpro shell script which is used to launch the molpro.exe MPI program. These options should be given on the command line or in the MOLPRO_OPTIONS environment variable as both of these are parsed by the shell script and used to launch molpro.exe, they should not be given in .molprorc or any other configuration files since these are not read until after molpro.exe is launched.

  • -n $|$ --tasks tasks/tasks_per_node:smp_threads tasks specifies the number of parallel processes to be set up.
  • -N $|$ --task-specification user1:node1:tasks1,user2:node2:tasks2$\dots$ node1, node2 etc. specify the host names of the nodes on which to run.
  • -x $|$ --executable executable specifies an alternative Molpro executable file.

The options specific to parallel execution are described here.

It is very important to read running Molpro on parallel computers before executing parallel Molpro calculations.

There are a number of other options for tuning and system parameters, but these do not usually concern the general user.

Tuning parameters for blas routines (mxma,, mxmb, mxva, mxvb):

  • --tuning-mpplat n mpp latency in microseconds
  • --tuning-mppspeed n mpp bandwidth in MB/sec
  • --tuning-flopdgm n speed of dgemm in MFLOPS
  • --tuning-flopdgv n speed of dgemv in MFLOPS
  • --tuning-flopmxm n speed of fortran mxma in MFLOPS
  • --tuning-flopmxv n speed of fortran mxva in MFLOPS
  • --tuning-mindgv n use dgemv from mxva/mxvb if matrix dimensions are ge. mindgv
  • --tuning-mindgm n use dgemm from mxma/mxmb if all matrix dimensions are ge. mindgm
  • --tuning-mindgc n use dgemm from mxma/mxmb if column dimension is ge. mindgc and other dimensions larger than mindgm2
  • --tuning-mindgr n use dgemm from mxma/mxmb if row dimension is ge. mindgr and other dimensions larger than mindgm2
  • --tuning-mindgl n use dgemm from mxma/mxmb if link dimension is ge. mindgl and other dimensions larger than mindgm2
  • --tuning-mindgf n for old Fujitsu machines, probably obsolete

Tuning parameters for fortran versions of mxma/mxmb:

  • --tuning-unroll n level of unrolling in (2,3, or 4)
  • -b $|$ --matrix-block-link $|$ --tuning-mxmbln n block dimension for link dimension
  • -B $|$ --matrix-block $|$ --tuning-mxmblk n block dimension for rows and columns of result matrix
  • -K $|$ --cache $|$ --tuning-cache n cache size in words. If the total size of the 3 matrices is smaller than this, no blocking.

It is not usually necessary to specify any of these options as there are sensible defaults. Sometimes installation dependent options can be found in the system configuration file molpro.rc in the same directory as the Molpro library files.