1mpqc(1)                              MPQC                              mpqc(1)
2
3
4

NAME

6       mpqc - The Massively Parallel Quantum Chemistry program (MPQC) computes
7       the properties of molecules from first principles.
8
9       This documentation is divided into the following chapters:
10
11       o MPQC Overview
12       o Running MPQC
13       o MPQC Input
14       o Validating MPQC
15       o Running Psi 3 from MPQC
16       o CCA Components
17       o MPQC License
18       o MPQC Warranty

MPQC Overview

20       The Massively Parallel Quantum Chemistry program (MPQC) computes the
21       properties of molecules, ab initio, on a wide variety of computer
22       architectures.
23       MPQC can compute closed shell and general restricted open-shell
24       Hartree-Fock energies and gradients, second order open-shell
25       perturbation theory (OPT2[2]) and Z-averaged perturbation theory
26       (ZAPT2) energies, and second order closed shell Moeller-Plesset
27       perturbation theory energies and gradients. It also includes methods
28       for optimizing molecules in either Cartesian or internal coordinates.
29       MPQC is designed using object-oriented programming techniques and
30       implemented in the C++ programming language.

Running MPQC

32       This chapter explains how to run MPQC in a variety of environments.
33       The first two sections give general information on running MPQC:
34       o Command Line Options
35       o Environmental Variables
36       The final sections given specific information on running MPQC in
37       different environments:
38       o Shared Memory Multiprocessor with SysV IPC
39       o Shared Memory Multiprocessor with POSIX Threads
40       o Shared or Distributed Memory Multiprocessor with MPI
41       o Special Notes for MP2 Gradients
42       o Special Notes for MP2-R12 energies
43       o Special Notes for CCA Components
44   Command Line Options
45       MPQC can be given options followed by an optional input file name. If
46       the input file name is not given, it will default to 'mpqc.in'. The
47       following command line options are recognized:
48       -o  Gives the name of the output file. The default is the console.
49       -i  Convert a simple input file to an object oriented input file and
50           write the result to the ouput. No calculations are done.
51       -messagegrp
52           A ParsedKeyVal specification of a MessageGrp object. The default
53           depends on how MPQC was compiled.
54       -memorygrp
55           A ParsedKeyVal specification of a MemoryGrp object. The default
56           depends on how MPQC was compiled.
57       -threadgrp
58           A ParsedKeyVal specification of a ThreadGrp object. The default
59           depends on how MPQC was compiled.
60       -integral
61           A ParsedKeyVal specification of an Integral object. The default is
62           IntegralV3. Note that some MolecularEnergy specializations require
63           specific choices of Integral specializations and may not work with
64           IntegralV3.
65       -l  Sets a limit on the number of basis functions. The default is zero,
66           which means an unlimited number of basis functions.
67       -W  Sets the working directory. The default is the current directory.
68       -c  Check the input and exit.
69       -v  Print the version number.
70       -w  Print the warranty information (there is no warranty).
71       -d  If a debugger object was given in the input, start the debugger
72           running as soon as MPQC is started.
73       -h  Print a list of options.
74       -f  The name of an object-oriented input file. The default is mpqc.in.
75           This cannot be used if another input file is specified. This option
76           is deprecated, as both input file formats can be read by given the
77           input file name on the command line without any option flags.
78       -cca-path
79           A colon-separated list of directories in which CCA component
80           libraries may be found.
81       -cca-load
82           A colon-separated list of sidl class names for CCA components which
83           will be instantiated from the libraries found in the path given by
84           -cca-path
85       Some MPI environments do not pass the command line to slave programs,
86       but supply it when MPI_Init is called. To make MPQC call MPI_Init with
87       the correct arguments as early as possible use the configure option
88       --enable-always-use-mpi.
89   Environmental Variables
90       MPQC looks at five environmental variables to set up communication,
91       find library files, and specify the default Integral object. Machine
92       specific libraries and utilities to run programs in parallel might look
93       at other environment variables as well. The five that apply on all
94       platforms are:
95       SCLIBDIR
96           The name of the library directory. See the GaussianBasisSet
97           documentation and look below for more information.
98       MESSAGEGRP
99           A ParsedKeyVal specification of a MessageGrp object. The default
100           depends on how MPQC was compiled. See the MessageGrp class
101           documentation for more information.
102       MEMORYGRP
103           A ParsedKeyVal specification of a MemoryGrp object. The default
104           depends on how MPQC was compiled and the MessageGrp in use.
105       THREADGRP
106           A ParsedKeyVal specification of a ThreadGrp object. The default
107           depends on how MPQC was compiled.
108       INTEGRAL
109           A ParsedKeyVal specification of an Integral object. The default is
110           IntegralV3. Note that some MolecularEnergy specializations require
111           specific choices of Integral specializations and may not work with
112           IntegralV3.
113       By default, MPQC tries to find library files first in the lib
114       subdirectory of the installation directory and then the source code
115       directory. If the library files cannot be found, MPQC must be notified
116       of the new location with the environmental variable SCLIBDIR.
117       For example, if you need to run MPQC on a machine that doesn't have the
118       source code distribution in the same place as it was located on the
119       machine on which MPQC is compiled you must do something like the
120       following on the machine with the source code:
121       cd mpqc/lib
122       tar cvf ../sclib.tar basis atominfo.kv
123       Then transfer sclib.tar to the machine on which you want to run MPQC
124       and do something like
125       mkdir ~/sclib
126       cd ~/sclib
127       tar xvf ../sclib.tar
128       setenv SCLIBDIR ~/sclib
129       The setenv command is specific to the C-shell. You will need to do what
130       is appropriate for your shell.
131       The other three keywords specify objects. This is done by giving a mini
132       ParsedKeyVal input in a string. The object is anonymous, that is, no
133       keyword is associated with it. Here is an example:
134       setenv MESSAGEGRP '<ShmMessageGrp>:(n = 4)'
135   Shared Memory Multiprocessor with SysV IPC
136       By default, MPQC will run on only one CPU. To specify more, you can
137       give a ShmMessageGrp object on the command line. The following would
138       run MPQC in four processes:
139       mpqc -messagegrp '<ShmMessageGrp>:(n = 4)' input_file
140       Alternately, the ShmMessageGrp object can be given as an environmental
141       variable:
142       setenv MESSAGEGRP '<ShmMessageGrp>:(n = 4)'
143       mpqc input_file
144       If MPQC should unexpectedly die, shared memory segments and semaphores
145       will be left on the machine. These should be promptly cleaned up or
146       other jobs may be prevented from running successfully. To see if you
147       have any of these resources allocated, use the ipcs command. The output
148       will look something like:
149       IPC status from /dev/kmem as of Wed Mar 13 14:42:18 1996
150       T     ID     KEY        MODE       OWNER    GROUP
151       Message Queues:
152       Shared Memory:
153       m 288800 0x00000000 --rw-------  cljanss     user
154       Semaphores:
155       s    390 0x00000000 --ra-------  cljanss     user
156       s    391 0x00000000 --ra-------  cljanss     user
157       To remove the IPC resources used by cljanss in the above example on
158       IRIX, type:
159       ipcrm -m 288800
160       ipcrm -s 390
161       ipcrm -s 391
162       And on Linux, type:
163       ipcrm shm 288800
164       ipcrm sem 390
165       ipcrm sem 391
166   Shared Memory Multiprocessor with POSIX Threads
167       By default, MPQC will run with only one thread. To specify more, you
168       can give a PthreadThreadGrp object on the command line. MPQC is not
169       parallelized to as large an extent with threads as it is with the more
170       conventional distributed memory model, so you might not get the best
171       performance using this technique. On the other the memory overhead is
172       lower and no interprocess communication is needed.
173       The following would run MPQC in four threads:
174       mpqc -threadgrp '<PthreadThreadGrp>:(num_threads = 4)' input_file
175       Alternately, the PthreadThreadGrp object can be given as an
176       environmental variable:
177       setenv THREADGRP '<PthreadThreadGrp>:(num_threads = 4)'
178       mpqc input_file
179   Shared or Distributed Memory Multiprocessor with MPI
180       A MPIMessageGrp object is used to run using MPI. The number of nodes
181       used is determined by the MPI run-time and is not specified as input
182       data to MPIMessageGrp.
183       mpqc -messagegrp '<MPIMessageGrp>:()' input_file
184       Alternately, the MPIMessageGrp object can be given as an environmental
185       variable:
186       setenv MESSAGEGRP '<MPIMessageGrp>:()'
187       mpqc input_file
188       Usually, a special command is needed to start MPI jobs; typically it is
189       named mpirun.
190   Special Notes for MP2 Gradients
191       The MP2 gradient algorithm uses MemoryGrp object to access distributed
192       shared memory. The MTMPIMemoryGrp class is the most efficient and
193       reliable implementation of MemoryGrp. It requires a multi-thread aware
194       MPI implementation, which is still not common. To run MP2 gradients on
195       a machine with POSIX threads and an multi-thread aware MPI, use:
196       mpqc -messagegrp '<MPIMessageGrp>:()' \
197            -threadgrp '<PthreadThreadGrp>:()' \
198            -memorygrp '<MTMPIMemoryGrp>:()' \
199            input_file
200       or
201       setenv MESSAGEGRP '<MPIMessageGrp>:()'
202       setenv THREADGRP '<PthreadThreadGrp>:()'
203       setenv MEMORYGRP '<MTMPIMemoryGrp>:()'
204       mpqc input_file
205   Special Notes for MP2-R12 energies
206       Distributed Memory
207       The MP2-R12 energy algorithm is similar to the MP2 energy algorithm
208       that uses MemoryGrp object to access distributed memory. Hence the
209       MTMPIMemoryGrp is the recommended implementation of MemoryGrp for such
210       computations (see Special Notes for MP2 Gradients).
211       Disk I/O
212       In contrast to the MP2 energy and gradient algorithms, the MP2-R12
213       energy algorithm may have to use disk to store transformed MO integrals
214       if a single pass through the AO integrals is not possible due to
215       insufficient memory. The best option in such case is to increase the
216       total amount of memory available to the computation by either
217       increasing the number of tasks or the amount of memory per task or
218       both.
219       When increasing memory further is not possible, the user has to specify
220       which type of disk I/O should be used for the MP2-R12 energy algorithm.
221       It is done through the r12ints keyword in input for the MBPT2_R12
222       object. The default choice is to use POSIX I/O on the node on which
223       task 0 resides. This kind of disk I/O is guaranteed to work on all
224       parallel machines, provided there's enough disk space on the node.
225       However, this is hardly most efficient on machines with some sort of
226       parallel I/O available. On machines which have an efficient
227       implementation of MPI-IO the r12ints should be set instead to mpi-mem.
228       This will force the MBPT2_R12 object to use MPI-IO for disk I/O. It is
229       user's responsibility to make sure that the MO integrals file resides
230       on an MPI-IO-compatible file system. Hence the r12ints_file keyword,
231       which specifies the name of the MO integrals file, should be set to a
232       location which is guaranteed to work properly with MPI-IO. For example,
233       on IBM SP and other IBM machines which have General Parallel File
234       System (GPFS), the user should set r12ints = mpi-mem and r12ints_file
235       to a file on a GPFS file system.
236       Integral object
237       At the moment, MBPT2_R12 objects require specific specialization of
238       Integral, IntegralCints. Thus in order to compute MP2-R12 energies,
239       your version of MPQC needs to be compiled with support for
240       IntegralCints. A free, open-source library called libint is a
241       prerequisite for IntegralCints. In order to use IntegralCints as the
242       default Integral object, add -integral '<IntegralCints>:()' to the
243       command line, or set environmental variable INTEGRAL to
244       '<IntegralCints>:()'.
245   Special Notes for CCA Components
246       Common Component Architecture (CCA)
247       Portions of MPQC functionality are being packaged into CCA components.
248       For general overviews of CCA technology and framework usage, please see
249       www.cca-forum.org (the tutorial in particular) and the cca-chem-apps
250       documentation. MPQC components may be utilized directly within the
251       ccaffeine framework, while some components may be instantiated and used
252       within MPQC itself, making use of an embedded CCA framework.
253       CCA Runtime Environment
254       For MPQC runs utilizing embedded components, the runtime environment
255       for the CCA framework must be specified. The colon-separated path used
256       to locate component libraries must be specified either using the -cca-
257       path command-line option or using the cca_path key within the mpqc
258       section of a keyval input. The colon-separated list of component sidl
259       class names which will be referenced within the input must be specified
260       using either the -cca-load command-line option or using the cca_load
261       key within the mpqc section of a keyval input. If defaults for the cca-
262       path and cca-load options are desired, do_cca must be set to yes in the
263       keyval input.

MPQC Input

265       MPQC supports two input formats. The primary input is an object
266       oriented format which gives users access to all of MPQC's options. The
267       second format allows access to a subset of MPQC's capabilities, but is
268       more intuitive and easier to learn. New users are advised to start with
269       the simplified format. MPQC can be used to convert the simplified
270       format to the full object-oriented format with the -i option.
271       Each of these input formats is described in the following two chapters:
272       o Simple Input
273       o Object-Oriented Input

Simple Input

275       The simple input format consists of keywords followed by a ':' followed
276       by a value. The keywords are case sensitive. The values might be
277       modified by options found in parenthesis. For example, the following
278       input performs an optimization of water using density functional theory
279       with the B3LYP exchange-correlation functional:
280       % B3LYP optimization of water
281       optimize: yes
282       method: KS (xc = B3LYP)
283       basis: 3-21G*
284       molecule: (angstrom)
285           O    0.172   0.000   0.000
286           H    0.745   0.000   0.754
287           H    0.745   0.000  -0.754
288       Comments begin with a % and continue to the end of the line. Basis set
289       names containing special characters, such as a space or parentheses,
290       must be quoted inside a pair of double quotes. The accepted keywords
291       are:
292       molecule
293           Gives the atoms types and coordinates. The following options can be
294           used
295       bohr
296           The coordinates are given in Bohr.
297       angstrom
298           The coordinates are given in Angstroms (the default).
299       charge
300           This option can be given after an 'element x y z' quadruple. This
301           will override the charge on the atom. For example, (charge = 0) can
302           be given for the ghost atoms in a counterpoise correction
303           calculation.
304       multiplicity
305           Gives the multiplicity of the molecule. The default is 1.
306       optimize
307           If yes, then an optimization will be performed. The default is no.
308           The following options can be given.
309       cartesian
310           Use Cartesian coordinates.
311       internal
312           Use internal coordinates.
313       redundant
314           Use redundant internal coordinates.
315       gradient
316           If yes, then a gradient calculation will be performed. The default
317           is no.
318       frequencies
319           If yes, then the frequencies will be obtained. The default is no.
320       charge
321           Specificies the charge on the molecule. The default is 0.
322       method
323           Specifices the method. There is no default and the possible values
324           are:
325       HF  Hartree-Fock. Unrestricted HF is used if multiplicity > 1
326       RHF
327           Restricted Hartree-Fock.
328       UHF
329           Unrestricted Hartree-Fock.
330       KS  Kohn-Sham. Unrestricted KS is used if multiplicity > 1
331       RKS
332           Restricted Kohn-Sham.
333       UKS
334           Unrestricted Kohn-Sham.
335       MP2
336           Second order Moeller-Plesset perturbation theory. Only available
337           for multiplicity = 1.
338       MP2-R12/A
339           The A version of MP2-R12. Only available for multiplicity = 1. An
340           auxiliary basis may be specified. No gradient, optimization, or
341           frequencies are possible.
342       MP2-R12/A'
343           The A' version of MP2-R12. Only available for multiplicity = 1. An
344           auxiliary basis may be specified. No gradient, optimization, or
345           frequencies are possible.
346       ZAPT2
347           Z-averaged perturbation theory. Only available for multiplicity >
348           1. No gradient, optimization, or frequencies are possible.
349       The following options are valid with the KS, RKS, and UKS methods:
350       grid
351           Specifies the grid to be used for numerical integrations. The
352           following values can be given:
353       xcoarse
354       coarse
355       medium
356       fine
357       xfine
358       ultrafine
359       xc  Specifies the exchange-correlation functional. There is no default.
360           See the table in the StdDenFunctional class documentation for the
361           possible values.
362       The following options are valid with the MP2-R12/A and MP2-R12/A'
363       methods. These options are mutually exclusive:
364       abs
365           Use the standard Auxiliary Basis Set method.
366       abs+
367           Use the standard Auxiliary Basis Set method, but use the union of
368           the orbital and the given auxiliary basis as the actual auxiliary
369           basis set used.
370       cabs
371           Use the Complementary Auxiliary Basis Set method.
372       cabs+
373           Use the Complementary Auxiliary Basis Set method, but use the union
374           of the orbital and the given auxiliary basis as the actual
375           auxiliary basis set used.
376       The following options are valid with the MP2-R12/A' method:
377       ebc
378           Assume the Extended Brillion Condition to hold. This is the
379           default.
380       gbc
381           Assume the Generalized Brillion Condition to hold. This is the
382           default.
383       !ebc
384           Do not assume the Extended Brillion Condition to hold.
385       !gbc
386           Do not assume the Generalized Brillion Condition to hold.
387       basis
388           Specifies the basis set. There is no default. See the table in the
389           GaussianBasisSet class documentation for the available basis sets.
390       auxbasis
391           Specifies the auxiliary basis set for MP2-R12 methods. There is no
392           default. See the table in the GaussianBasisSet class documentation
393           for the available basis sets.
394       restart
395           Set to yes to restart an optimization. The default is no.
396       checkpoint
397           Set to no to not save checkpoint files during an optimization. The
398           default is yes.
399       symmetry
400           Specifices the Schoenflies symbol of the point group of the
401           molecule. The default is auto, which will cause to program to find
402           the highest order Abelian subgroup of the molecule.
403       docc
404           Gives the number of doubly occupied orbitals in each each
405           irreducible representation in a parenthesized list. The symmetry
406           must be specified and not be auto. The method must be restricted.
407       socc
408           Gives the number of single occupied orbitals in each each
409           irreducible representation in a parenthesized list. The symmetry
410           must be specified and not be auto. The method must be restricted.
411       alpha
412           Gives the number of alpha occupied orbitals in each each
413           irreducible representation in a parenthesized list. The symmetry
414           must be specified and not be auto. The method must be unrestricted.
415       beta
416           Gives the number of beta occupied orbitals in each each irreducible
417           representation in a parenthesized list. The symmetry must be
418           specified and not be auto. The method must be unrestricted.
419       frozen_docc
420           Gives the number of frozen core orbitals. Can be either a single
421           integer or a parenthesized list giving the frozen core orbitals in
422           each irreducible representation. In the latter case the symmetry
423           must be given and not be auto.
424       frozen_uocc
425           Gives the number of frozen virtual orbitals. Can be either a single
426           integer or a parenthesized list giving the frozen virtual orbitals
427           in each irreducible representation. In the latter case the symmetry
428           must be given and not be auto.
429       memory
430           Gives a hint for the amount of memory in bytes that can be used.
431           This is typically a lower bound, more memory will be used in
432           practice and the exact amount cannot be precisely controlled. The
433           format is a fixed or floating point number optionally followed
434           (without spaces) by one of the following suffixes: KB, MB, GB, KIB,
435           MIB, or GIB.

Object-Oriented Input

437       MPQC is an object-oriented program that directly allows the user to
438       specify objects that MPQC then manipulates to obtain energies,
439       properties, etc. This makes the input very flexible, but very complex.
440       However, most calculations should be quite similar to the one of the
441       examples given later in this chapter. The best way to get started is to
442       use one of the example input files and modify it to meet your needs.
443       The object-oriented input format is described in the following
444       sections:
445       o Overview of the Object-Oriented Input
446       o A Walk-Through of an Object-Oriented Input File
447       o Sample Object-Oriented Input Files
448   Overview of the Object-Oriented Input
449       MPQC starts off by creating a ParsedKeyVal object that parses the input
450       file specified on the command line. The format of the input file is
451       documented in the KeyVal documentation. It is basically a free format
452       input that associates keywords and logical groupings of keywords with
453       values. The values can be scalars, arrays, or objects.
454       The keywords recognized by MPQC begin with the mpqc prefix. That is,
455       they must be nested between an mpqc:( and a ). Alternately, each
456       keyword can be individually prefixed by mpqc:. The primary keywords are
457       given below. Some of the keywords specify objects, in which case the
458       object will require more ParsedKeyVal input. These objects are created
459       from the input by using their ParsedKeyVal constructors. These
460       constructors are documented with the source code documentation for the
461       class.
462       mole
463           This is the most important keyword for MPQC. It specifies the
464           MolecularEnergy object. This is an object that knows how to compute
465           the energy of a molecule. The specializations of MolecularEnergy
466           that are most commonly used are CLKS, HSOSKS, UKS, CLHF, HSOSHF,
467           UHF, and MBPT2.
468       opt
469           This keyword must be specified for optimizations. It specifies an
470           Optimize object. Usually, QNewtonOpt is best for finding minima and
471           EFCOpt is best for transition states.
472       freq
473           This keyword must be specified to compute frequencies. It specifies
474           a MolecularFrequencies object.
475       thread
476           This specifies an object of type ThreadGrp that can be used to
477           advantage on shared-memory multiprocessor machines for certain
478           types of calculations. This keyword can be overridden by giving the
479           ThreadGrp in the environment or command line. See the section on
480           running MPQC for more information.
481       integrals
482           This specifies an object of type Integral that will be used as the
483           default integral evaluator. If MP2-R12 is used, then this should be
484           set to use IntegralCints with a line like integrals<IntegralCints>:
485           ().
486       checkpoint
487           The value of this keyword is boolean.
488       o true and optimization is to be performed
489       opt object will be checkpointed after each iteration. The checkpoint
490       file suffix is '.ckpt'.
491       o true and optimization is not performed
492       mole object will be checkpointed at intermediate points. The manner in
493       which mole will be checkpointed depends on its particular type. The
494       checkpoint file suffix is usually '.wfn', however in general it will
495       depend on the particular specialization of MolecularEnergy.
496       The default is to not checkpoint.
497       checkpoint_freq
498           This specifies how often to checkpoint certain MolecularEnergy
499           specializations which compute iteratively. Currently, mole objects
500           of SCF type can use this keyword. The default is 1, which means to
501           checkpoint after every iteration.
502       savestate
503           The value of this keyword is boolean. If true, then the states of
504           the Optimize and MolecularEnergy objects will be saved after the
505           calculation completes. The output file suffixes are '.ckpt' and
506           '.wfn', respectively. The default is to save state.
507       restart
508           The value of this keyword is boolean. If true, mpqc will attempt to
509           restart the calculation. If the checkpoint file is not found, the
510           calculation will continue as if the value were false. The default
511           is true.
512       restart_file
513           This gives the name of a file from which restart information is
514           read. If the file name ends with '.wfn' then MPQC will try to
515           restore a MolecularEnergy object from it and query for the opt
516           object in the input file. If the file name ends with '.ckpt' MPQC
517           will try to restore an Optimize object from this file. The default
518           file name is formed by appending '.ckpt' to the input file name
519           with the extension removed.
520       do_energy
521           The value of this keyword is boolean. If true a single point energy
522           calculation will be done for the MolecularEnergy object given with
523           the mole keyword. The default is true.
524       do_gradient
525           The value of this keyword is boolean. If true a single point
526           gradient calculation will be done for the MolecularEnergy object
527           given with the mole keyword. The default is false.
528       do_cca
529           The value of this keywork is boolean. If true the cca embedded
530           framework will be initialized. The default is false.
531       cca_path
532           The value of this keyword is a string that provides a colon-
533           separated list of directories in which CCA component libraries may
534           be found.
535       cca_load
536           The value of this keyword is a string that provides a colon-
537           separated list of sidl class names for CCA components which will be
538           instantiated from the libraries found in the path given by
539           cca_path.
540       optimize
541           The value of this keyword is boolean. If true and the opt keyword
542           was set to a valid value, then an optimization will be performed.
543           The default is true.
544       write_pdb
545           The value of this keyword is boolean. If true a PDB file with the
546           molecular coordinates will be written.
547       filename
548           The value of this keyword is a string that gives a name from which
549           checkpoint and other filenames are constructed. The default is the
550           basename of the input file.
551       print_timings
552           If this is true, timing information is printed at the end of the
553           run. The default is true.
554       There are also some utility keywords that tell mpqc some technical
555       details about how to do the calculation:
556       debug
557           This optional keyword gives a Debugger object which can be used to
558           help find the problem if MPQC encounters a catastrophic error.
559       matrixkit
560           This optional keyword gives a SCMatrixKit specialization which is
561           used to produce matrices of the desired type. The default is a
562           ReplSCMatrixKit which replicates matrices on all of the nodes.
563           Other choices are not thoroughly tested.
564   A Walk-Through of an Object-Oriented Input File
565       This example input does a Hartree-Fock calculation on water. Following
566       is the entire input, followed by a breakdown with descriptions.
567       % This input does a Hartree-Fock calculation on water.
568       molecule<Molecule>: (
569         symmetry = C2V
570         unit = angstrom
571         { atoms geometry } = {
572           O     [     0.00000000     0.00000000     0.37000000 ]
573           H     [     0.78000000     0.00000000    -0.18000000 ]
574           H     [    -0.78000000     0.00000000    -0.18000000 ]
575         }
576       )
577       basis<GaussianBasisSet>: (
578         name = 'STO-3G'
579         molecule = $:molecule
580       )
581       mpqc: (
582         mole<CLHF>: (
583           molecule = $:molecule
584           basis = $:basis
585         )
586       )
587       We start with a descriptive comment. Comments begin with a %.
588       Everything from the % to the end of the line is ignored.
589       % This input does a Hartree-Fock calculation on water.
590       Now lets set up a Molecule object. The name of the object comes first,
591       it is molecule. Then, in angle brackets, comes the type of the
592       molecule, which is the class Molecule. The keyword and class name are
593       followed by a : and then several pieces of input grouped between a pair
594       of matching parentheses. These parentheses contain the information that
595       will be given to Molecule KeyVal constructor.
596       molecule<Molecule>: (
597       The point group of the molecule is needed. This is done by assigning
598       symmetry to a case insensitive Schoenflies symbol that is used to
599       initialize a PointGroup object. An Abelian point group should be used.
600         symmetry = C2V
601       The default unit for the Cartesian coordinates is Bohr. You can specify
602       other units by assigned unit to a string that will be used to
603       initialize a Units object.
604         unit = angstrom
605       Finally, the atoms and coordinates are given. This can be given in the
606       shorthand table syntax shown below. The headings of the table are the
607       keywords between the first pair of brackets. These are followed by an =
608       and another pair of brackets that contain the data. The first datum is
609       assigned to the first element of the array that corresponds to the
610       first heading, atom. The second datum is assigned to the first element
611       of the array associated with the second heading, geometry, and so on.
612       Here the second datum is actually a vector: the x, y and z coordinates
613       of the first atom.
614         { atoms                       geometry                   } = {
615           O     [     0.00000000     0.00000000     0.37000000 ]
616           H     [     0.78000000     0.00000000    -0.18000000 ]
617           H     [    -0.78000000     0.00000000    -0.18000000 ]
618         }
619       )
620       Next, a basis set object is given.
621       basis<GaussianBasisSet>: (
622         name = 'STO-3G'
623         molecule = $:molecule
624       )
625       Now we will give the main body of input. All the subsequent keywords
626       will be grouped in the mpqc section of the input (that is, each keyword
627       will be prefixed with mpqc:).
628       mpqc: (
629       Next we give the mole keyword which provides a specialization of the
630       MolecularEnergy class. In this case we will do a closed-shell Hartree-
631       Fock calculation. That is done with an object of type CLHF. The
632       keywords that CLHF accepts are given with the documentation for the
633       CLHF class, usually in the description of the const RefKeyVal&
634       constructor for the class. Also with the CLHF documentation is a list
635       of parent classes. Each of the parent classes may also have input. This
636       input is included with the rest of the input for the child class.
637         mole<CLHF>: (
638       The next line specifies the molecule to be used. There are two things
639       to note, first that this is actually a reference to complete molecule
640       specification elsewhere in the input file. The $ indicates that this is
641       a reference and the keyword following the $ is the actual location of
642       the molecule. The : in front of the keyword means that the keyword is
643       not relative to the current location in the input, but rather relative
644       to the root of the tree of keywords. Thus, this line grabs the molecule
645       that was specified above. The molecule object could have been placed
646       here, but frequently it is necessary that several objects refer to the
647       exact same object and this can only be done using references.
648       The second point is that if you look at the documentation for CLHF, you
649       will see that it doesn't read molecule keyword. However, if you follow
650       its parent classes up to MolecularEnergy, you'll find that molecule is
651       indeed read.
652           molecule = $:molecule
653       Just as we gave molecule, specify the basis set with the basis keyword
654       as follows:
655           basis = $:basis
656       Now we close off the parentheses we opened above and we are finished.
657         )
658       )
659   Sample Object-Oriented Input Files
660       The easiest way to get started with mpqc is to start with one of sample
661       inputs that most nearly matches your problem. The src/bin/mpqc/samples
662       contains all of the sample inputs below:
663       o Hartree-Fock Energy
664       o MP2 Energy
665       o MP2-R12 energy
666       o Hartree-Fock Optimization
667       o Optimization with a Computed Guess Hessian
668       o Optimization Using Newton's Method
669       o Hartree-Fock Frequencies
670       o Giving Coordinates and a Guess Hessian
671       o Optimization with a Hydrogen Bond
672       o Fixed Coordinate Optimization
673       o Transition State Optimization
674       o Transition State Optimization with a Computed Guess Hessian
675       o Hartree-Fock energy with intermediate checkpointing
676       o MP2-R12 energy with intermediate checkpointing
677       o HF gradient computed from a previously computed HF wave funtion
678       o MP2 Energy computed using precomputed Hartree-Fock wave function
679       o CLHF energy using a CCA integrals component
680   Hartree-Fock Energy
681       The following input will compute the Hartree-Fock energy of water.
682       % emacs should use -*- KeyVal -*- mode
683       % molecule specification
684       molecule<Molecule>: (
685         symmetry = C2V
686         unit = angstrom
687         { atoms geometry } = {
688           O     [     0.00000000     0.00000000     0.37000000 ]
689           H     [     0.78000000     0.00000000    -0.18000000 ]
690           H     [    -0.78000000     0.00000000    -0.18000000 ]
691         }
692       )
693       % basis set specification
694       basis<GaussianBasisSet>: (
695         name = 'STO-3G'
696         molecule = $:molecule
697       )
698       mpqc: (
699         checkpoint = no
700         savestate = no
701         % method for computing the molecule's energy
702         mole<CLHF>: (
703           molecule = $:molecule
704           basis = $:basis
705           memory = 16000000
706         )
707       )
708   MP2 Energy
709       The following input will compute the MP2 energy of water.
710       % emacs should use -*- KeyVal -*- mode
711       % molecule specification
712       molecule<Molecule>: (
713         symmetry = C2V
714         unit = angstrom
715         { atoms geometry } = {
716           O     [     0.00000000     0.00000000     0.37000000 ]
717           H     [     0.78000000     0.00000000    -0.18000000 ]
718           H     [    -0.78000000     0.00000000    -0.18000000 ]
719         }
720       )
721       % basis set specification
722       basis<GaussianBasisSet>: (
723         name = 'STO-3G'
724         molecule = $:molecule
725       )
726       mpqc: (
727         checkpoint = no
728         savestate = no
729         % method for computing the molecule's energy
730         mole<MBPT2>: (
731           molecule = $:molecule
732           basis = $:basis
733           memory = 16000000
734           % reference wavefunction
735           reference<CLHF>: (
736             molecule = $:molecule
737             basis = $:basis
738             memory = 16000000
739           )
740         )
741       )
742   MP2-R12 energy
743       The following will compute the MP2-R12 energy of water in standard
744       approximation A' (MP2-R12/A').
745       % emacs should use -*- KeyVal -*- mode
746       % molecule specification
747       molecule<Molecule>: (
748         symmetry = C2V
749         unit = angstrom
750         { atoms geometry } = {
751           O     [     0.00000000     0.00000000     0.37000000 ]
752           H     [     0.78000000     0.00000000    -0.18000000 ]
753           H     [    -0.78000000     0.00000000    -0.18000000 ]
754         }
755       )
756       % basis set specification
757       basis<GaussianBasisSet>: (
758         name = 'cc-pVDZ'
759         molecule = $:molecule
760       )
761       % auxiliary basis set specification
762       abasis<GaussianBasisSet>: (
763         name = 'aug-cc-pVDZ'
764         molecule = $:molecule
765       )
766       mpqc: (
767         checkpoint = no
768         savestate = no
769         % method for computing the molecule's energy
770         mole<MBPT2_R12>: (
771           molecule = $:molecule
772           basis = $:basis
773           aux_basis = $:abasis
774           stdapprox = 'A''
775           nfzc = 1
776           memory = 16000000
777           integrals<IntegralCints>:()
778           % reference wavefunction
779           reference<CLHF>: (
780             molecule = $:molecule
781             basis = $:basis
782             memory = 16000000
783             integrals<IntegralCints>:()
784           )
785         )
786       )
787   Hartree-Fock Optimization
788       The following input will optimize the geometry of water using the
789       quasi-Newton method.
790       % emacs should use -*- KeyVal -*- mode
791       % molecule specification
792       molecule<Molecule>: (
793         symmetry = C2V
794         unit = angstrom
795         { atoms geometry } = {
796           O     [     0.00000000     0.00000000     0.37000000 ]
797           H     [     0.78000000     0.00000000    -0.18000000 ]
798           H     [    -0.78000000     0.00000000    -0.18000000 ]
799         }
800       )
801       % basis set specification
802       basis<GaussianBasisSet>: (
803         name = '6-31G*'
804         molecule = $:molecule
805       )
806       mpqc: (
807         checkpoint = no
808         savestate = no
809         % molecular coordinates for optimization
810         coor<SymmMolecularCoor>: (
811           molecule = $:molecule
812           generator<IntCoorGen>: (
813             molecule = $:molecule
814           )
815         )
816         % method for computing the molecule's energy
817         mole<CLHF>: (
818           molecule = $:molecule
819           basis = $:basis
820           coor = $..:coor
821           memory = 16000000
822         )
823         % optimizer object for the molecular geometry
824         opt<QNewtonOpt>: (
825           function = $..:mole
826           update<BFGSUpdate>: ()
827           convergence<MolEnergyConvergence>: (
828             cartesian = yes
829             energy = $..:..:mole
830           )
831         )
832       )
833   Optimization with a Computed Guess Hessian
834       The following input will optimize the geometry of water using the
835       quasi-Newton method. The guess Hessian will be computed at a lower
836       level of theory.
837       % emacs should use -*- KeyVal -*- mode
838       % molecule specification
839       molecule<Molecule>: (
840         symmetry = C2V
841         unit = angstrom
842         { atoms geometry } = {
843           O     [     0.00000000     0.00000000     0.37000000 ]
844           H     [     0.78000000     0.00000000    -0.18000000 ]
845           H     [    -0.78000000     0.00000000    -0.18000000 ]
846         }
847       )
848       % basis set specification
849       basis<GaussianBasisSet>: (
850         name = '6-31G*'
851         molecule = $:molecule
852       )
853       mpqc: (
854         checkpoint = no
855         savestate = no
856         % molecular coordinates for optimization
857         coor<SymmMolecularCoor>: (
858           molecule = $:molecule
859           generator<IntCoorGen>: (
860             molecule = $:molecule
861           )
862         )
863         % method for computing the molecule's energy
864         mole<CLHF>: (
865           molecule = $:molecule
866           basis = $:basis
867           coor = $..:coor
868           memory = 16000000
869           guess_hessian<FinDispMolecularHessian>: (
870             molecule = $:molecule
871             only_totally_symmetric = yes
872             eliminate_cubic_terms = no
873             checkpoint = no
874             energy<CLHF>: (
875               molecule = $:molecule
876               memory = 16000000
877               basis<GaussianBasisSet>: (
878                 name = '3-21G'
879                 molecule = $:molecule
880               )
881             )
882           )
883         )
884         % optimizer object for the molecular geometry
885         opt<QNewtonOpt>: (
886           function = $..:mole
887           update<BFGSUpdate>: ()
888           convergence<MolEnergyConvergence>: (
889             cartesian = yes
890             energy = $..:..:mole
891           )
892         )
893       )
894   Optimization Using Newton's Method
895       The following input will optimize the geometry of water using the
896       Newton's method. The Hessian will be computed at each step in the
897       optimization. However, Hessian recomputation is usually not worth the
898       cost; try using the computed Hessian as a guess Hessian for a quasi-
899       Newton method before resorting to a Newton optimization.
900       % Emacs should use -*- KeyVal -*- mode
901       % molecule specification
902       molecule<Molecule>: (
903         symmetry = c2v
904         unit = angstrom
905         { atoms geometry } = {
906            O     [     0.00000000     0.00000000     0.36937294 ]
907            H     [     0.78397590     0.00000000    -0.18468647 ]
908            H     [    -0.78397590     0.00000000    -0.18468647 ]
909         }
910       )
911       % basis set specification
912       basis<GaussianBasisSet>: (
913         name = '3-21G'
914         molecule = $:molecule
915       )
916       mpqc: (
917         checkpoint = no
918         savestate = no
919         restart = no
920         % molecular coordinates for optimization
921         coor<SymmMolecularCoor>: (
922           molecule = $:molecule
923           generator<IntCoorGen>: (
924             molecule = $:molecule
925           )
926         )
927         do_energy = no
928         do_gradient = no
929         % method for computing the molecule's energy
930         mole<CLHF>: (
931           molecule = $:molecule
932           basis = $:basis
933           memory = 16000000
934           coor = $..:coor
935           guess_wavefunction<CLHF>: (
936             molecule = $:molecule
937             total_charge = 0
938             basis<GaussianBasisSet>: (
939               molecule = $:molecule
940               name = 'STO-3G'
941             )
942             memory = 16000000
943           )
944           hessian<FinDispMolecularHessian>: (
945             only_totally_symmetric = yes
946             eliminate_cubic_terms = no
947             checkpoint = no
948           )
949         )
950         optimize = yes
951         % optimizer object for the molecular geometry
952         opt<NewtonOpt>: (
953           print_hessian = yes
954           max_iterations = 20
955           function = $..:mole
956           convergence<MolEnergyConvergence>: (
957             cartesian = yes
958             energy = $..:..:mole
959           )
960         )
961       )
962   Hartree-Fock Frequencies
963       The following input will compute Hartree-Fock frequencies by finite
964       displacements. A thermodynamic analysis will also be performed. If
965       optimization input is also provided, then the optimization will be run
966       first, then the frequencies.
967       % emacs should use -*- KeyVal -*- mode
968       % molecule specification
969       molecule<Molecule>: (
970         symmetry = C1
971         { atoms geometry } = {
972           O     [  0.0000000000    0.0000000000    0.8072934188 ]
973           H     [  1.4325589285    0.0000000000   -0.3941980761 ]
974           H     [ -1.4325589285    0.0000000000   -0.3941980761 ]
975         }
976       )
977       % basis set specification
978       basis<GaussianBasisSet>: (
979         name = 'STO-3G'
980         molecule = $:molecule
981       )
982       mpqc: (
983         checkpoint = no
984         savestate = no
985         % method for computing the molecule's energy
986         mole<CLHF>: (
987           molecule = $:molecule
988           basis = $:basis
989           memory = 16000000
990         )
991       % vibrational frequency input
992         freq<MolecularFrequencies>: (
993           molecule = $:molecule
994         )
995       )
996   Giving Coordinates and a Guess Hessian
997       The following example shows several features that are really
998       independent. The variable coordinates are explicitly given, rather than
999       generated automatically. This is especially useful when a guess Hessian
1000       is to be provided, as it is here. This Hessian, as given by the user,
1001       is not complete and the QNewtonOpt object will fill in the missing
1002       values using a guess the Hessian provided by the MolecularEnergy
1003       object. Also, fixed coordinates are given in this sample input.
1004       % emacs should use -*- KeyVal -*- mode
1005       % molecule specification
1006       molecule<Molecule>: (
1007         symmetry = C1
1008         { atoms geometry } = {
1009             H    [ 0.088    2.006    1.438 ]
1010             O    [ 0.123    3.193    0.000 ]
1011             H    [ 0.088    2.006   -1.438 ]
1012             O    [ 4.502    5.955   -0.000 ]
1013             H    [ 2.917    4.963   -0.000 ]
1014             H    [ 3.812    7.691   -0.000 ]
1015         }
1016       )
1017       % basis set specification
1018       basis<GaussianBasisSet>: (
1019         name = 'STO-3G'
1020         molecule = $:molecule
1021       )
1022       mpqc: (
1023         checkpoint = no
1024         savestate = no
1025         % method for computing the molecule's energy
1026         mole<CLHF>: (
1027           molecule = $:molecule
1028           basis = $:basis
1029           coor = $..:coor
1030           memory = 16000000
1031         )
1032         % molecular coordinates for optimization
1033         coor<SymmMolecularCoor>: (
1034           molecule = $:molecule
1035           generator<IntCoorGen>: (
1036             molecule = $:molecule
1037             extra_bonds = [ 2 5 ]
1038           )
1039           % use these instead of generated coordinates
1040           variable<SetIntCoor>: [
1041             <StreSimpleCo>:( atoms = [ 2 5 ] )
1042             <BendSimpleCo>:( atoms = [ 2 5 4 ] )
1043             <OutSimpleCo>: ( atoms = [ 5 2 1 3 ] )
1044             <SumIntCoor>: (
1045               coor: [
1046                 <StreSimpleCo>:( atoms = [ 1 2 ] )
1047                 <StreSimpleCo>:( atoms = [ 2 3 ] )
1048                 ]
1049               coef = [ 1.0 1.0 ]
1050               )
1051             <SumIntCoor>: (
1052               coor: [
1053                 <StreSimpleCo>:( atoms = [ 4 5 ] )
1054                 <StreSimpleCo>:( atoms = [ 4 6 ] )
1055                 ]
1056               coef = [ 1.0 1.0 ]
1057               )
1058             <BendSimpleCo>:( atoms = [ 1 2 3 ] )
1059             <BendSimpleCo>:( atoms = [ 5 4 6 ] )
1060           ]
1061           % these are fixed by symmetry anyway,
1062           fixed<SetIntCoor>: [
1063             <SumIntCoor>: (
1064               coor: [
1065                 <StreSimpleCo>:( atoms = [ 1 2 ] )
1066                 <StreSimpleCo>:( atoms = [ 2 3 ] )
1067                 ]
1068               coef = [ 1.0 -1.0 ]
1069               )
1070             <SumIntCoor>: (
1071               coor: [
1072                 <StreSimpleCo>:( atoms = [ 4 5 ] )
1073                 <StreSimpleCo>:( atoms = [ 4 6 ] )
1074                 ]
1075               coef = [ 1.0 -1.0 ]
1076               )
1077             <TorsSimpleCo>:( atoms = [ 2 5 4 6] )
1078             <OutSimpleCo>:( atoms = [ 3 2 6 4 ] )
1079             <OutSimpleCo>:( atoms = [ 1 2 6 4 ] )
1080           ]
1081         )
1082         % optimizer object for the molecular geometry
1083         opt<QNewtonOpt>: (
1084           function = $..:mole
1085           update<BFGSUpdate>: ()
1086           convergence<MolEnergyConvergence>: (
1087             cartesian = yes
1088             energy = $..:..:mole
1089           )
1090           % give a partial guess hessian in internal coordinates
1091           % the missing elements will be filled in automatically
1092           hessian = [
1093               [  0.0109261670 ]
1094               [ -0.0004214845    0.0102746106  ]
1095               [ -0.0008600592    0.0030051330    0.0043149957 ]
1096               [  0.0             0.0             0.0          ]
1097               [  0.0             0.0             0.0          ]
1098               [  0.0             0.0             0.0          ]
1099               [  0.0             0.0             0.0          ]
1100            ]
1101         )
1102       )
1103   Optimization with a Hydrogen Bond
1104       The automatic internal coordinate generator will fail if it cannot find
1105       enough redundant internal coordinates. In this case, the internal
1106       coordinate generator must be explicitly created in the input and given
1107       extra connectivity information, as is shown below.
1108       % emacs should use -*- KeyVal -*- mode
1109       % molecule specification
1110       molecule<Molecule>: (
1111         symmetry = C1
1112         { atoms geometry } = {
1113             H    [ 0.088    2.006    1.438 ]
1114             O    [ 0.123    3.193    0.000 ]
1115             H    [ 0.088    2.006   -1.438 ]
1116             O    [ 4.502    5.955   -0.000 ]
1117             H    [ 2.917    4.963   -0.000 ]
1118             H    [ 3.812    7.691   -0.000 ]
1119         }
1120       )
1121       % basis set specification
1122       basis<GaussianBasisSet>: (
1123         name = 'STO-3G'
1124         molecule = $:molecule
1125       )
1126       mpqc: (
1127         checkpoint = no
1128         savestate = no
1129         % method for computing the molecule's energy
1130         mole<CLHF>: (
1131           molecule = $:molecule
1132           basis = $:basis
1133           coor = $..:coor
1134           memory = 16000000
1135         )
1136         % molecular coordinates for optimization
1137         coor<SymmMolecularCoor>: (
1138           molecule = $:molecule
1139           % give an internal coordinate generator that knows about the
1140           % hydrogen bond between atoms 2 and 5
1141           generator<IntCoorGen>: (
1142             molecule = $:molecule
1143             extra_bonds = [ 2 5 ]
1144           )
1145         )
1146         % optimizer object for the molecular geometry
1147         opt<QNewtonOpt>: (
1148           function = $..:mole
1149           update<BFGSUpdate>: ()
1150           convergence<MolEnergyConvergence>: (
1151             cartesian = yes
1152             energy = $..:..:mole
1153           )
1154         )
1155       )
1156   Fixed Coordinate Optimization
1157       This example shows how to selectively fix internal coordinates in an
1158       optimization. Any number of linearly independent coordinates can be
1159       given. These coordinates must remain linearly independent throughout
1160       the optimization, a condition that might not hold since the coordinates
1161       can be nonlinear.
1162       By default, the initial fixed coordinates' values are taken from the
1163       cartesian geometry given by the Molecule object; however, the molecule
1164       will be displaced to the internal coordinate values given with the
1165       fixed internal coordinates if have_fixed_values keyword is set to true,
1166       as shown in this example. In this case, the initial cartesian geometry
1167       should be reasonably close to the desired initial geometry and all of
1168       the variable coordinates will be frozen to their original values during
1169       the initial displacement.
1170       % emacs should use -*- KeyVal -*- mode
1171       % molecule specification
1172       molecule<Molecule>: (
1173         symmetry = CS
1174         { atoms geometry } = {
1175           H [  3.04 -0.69 -1.59 ]
1176           H [  3.04 -0.69  1.59 ]
1177           N [  2.09 -0.48 -0.00 ]
1178           C [ -0.58 -0.15  0.00 ]
1179           H [ -1.17  1.82  0.00 ]
1180           H [ -1.41 -1.04 -1.64 ]
1181           H [ -1.41 -1.04  1.64 ]
1182         }
1183       )
1184       % basis set specification
1185       basis<GaussianBasisSet>: (
1186         name = '3-21G*'
1187         molecule = $:molecule
1188       )
1189       mpqc: (
1190         checkpoint = no
1191         savestate = no
1192         % molecular coordinates for optimization
1193         coor<SymmMolecularCoor>: (
1194           molecule = $:molecule
1195           generator<IntCoorGen>: (
1196             molecule = $:molecule
1197           )
1198           have_fixed_values = yes
1199           fixed<SetIntCoor>: [
1200             <OutSimpleCo>: ( value = -0.1
1201                              label = 'N-inversion'
1202                              atoms = [4 3 2 1] )
1203             ]
1204         )
1205         % method for computing the molecule's energy
1206         mole<CLHF>: (
1207           molecule = $:molecule
1208           basis = $:basis
1209           coor = $..:coor
1210           memory = 16000000
1211         )
1212         % optimizer object for the molecular geometry
1213         opt<QNewtonOpt>: (
1214           max_iterations = 20
1215           function = $..:mole
1216           update<BFGSUpdate>: ()
1217           convergence<MolEnergyConvergence>: (
1218             cartesian = yes
1219             energy = $..:..:mole
1220           )
1221         )
1222       )
1223   Transition State Optimization
1224       This example shows a transition state optimization of the N-inversion
1225       in $thrm{CH}_3thrm{NH}_2$ using mode following. The initial geometry
1226       was obtained by doing a few fixed coordinate optimizations along the
1227       inversion coordinate.
1228       % emacs should use -*- KeyVal -*- mode
1229       % molecule specification
1230       molecule<Molecule>: (
1231         symmetry = CS
1232         { atoms geometry } = {
1233           H [  3.045436 -0.697438 -1.596748 ]
1234           H [  3.045436 -0.697438  1.596748 ]
1235           N [  2.098157 -0.482779 -0.000000 ]
1236           C [ -0.582616 -0.151798  0.000000 ]
1237           H [ -1.171620  1.822306  0.000000 ]
1238           H [ -1.417337 -1.042238 -1.647529 ]
1239           H [ -1.417337 -1.042238  1.647529 ]
1240         }
1241       )
1242       % basis set specification
1243       basis<GaussianBasisSet>: (
1244         name = '3-21G*'
1245         molecule = $:molecule
1246       )
1247       mpqc: (
1248         checkpoint = no
1249         savestate = no
1250         % molecular coordinates for optimization
1251         coor<SymmMolecularCoor>: (
1252           molecule = $:molecule
1253           generator<IntCoorGen>: (
1254             molecule = $:molecule
1255           )
1256           followed<OutSimpleCo> = [ 'N-inversion' 4 3 2 1 ]
1257         )
1258         % method for computing the molecule's energy
1259         mole<CLHF>: (
1260           molecule = $:molecule
1261           basis = $:basis
1262           coor = $..:coor
1263           memory = 16000000
1264         )
1265         % optimizer object for the molecular geometry
1266         opt<EFCOpt>: (
1267           transition_state = yes
1268           mode_following = yes
1269           max_iterations = 20
1270           function = $..:mole
1271           update<PowellUpdate>: ()
1272           convergence<MolEnergyConvergence>: (
1273             cartesian = yes
1274             energy = $..:..:mole
1275           )
1276         )
1277       )
1278   Transition State Optimization with a Computed Guess Hessian
1279       This example shows a transition state optimization of the N-inversion
1280       in $thrm{CH}_3thrm{NH}_2$ using mode following. The initial geometry
1281       was obtained by doing a few fixed coordinate optimizations along the
1282       inversion coordinate. An approximate guess Hessian will be computed,
1283       which makes the optimiziation converge much faster in this case.
1284       % emacs should use -*- KeyVal -*- mode
1285       % molecule specification
1286       molecule<Molecule>: (
1287         symmetry = CS
1288         { atoms geometry } = {
1289           H [  3.045436 -0.697438 -1.596748 ]
1290           H [  3.045436 -0.697438  1.596748 ]
1291           N [  2.098157 -0.482779 -0.000000 ]
1292           C [ -0.582616 -0.151798  0.000000 ]
1293           H [ -1.171620  1.822306  0.000000 ]
1294           H [ -1.417337 -1.042238 -1.647529 ]
1295           H [ -1.417337 -1.042238  1.647529 ]
1296         }
1297       )
1298       % basis set specification
1299       basis<GaussianBasisSet>: (
1300         name = '3-21G*'
1301         molecule = $:molecule
1302       )
1303       mpqc: (
1304         checkpoint = no
1305         savestate = no
1306         % molecular coordinates for optimization
1307         coor<SymmMolecularCoor>: (
1308           molecule = $:molecule
1309           generator<IntCoorGen>: (
1310             molecule = $:molecule
1311           )
1312           followed<OutSimpleCo> = [ 'N-inversion' 4 3 2 1 ]
1313         )
1314         % method for computing the molecule's energy
1315         mole<CLHF>: (
1316           molecule = $:molecule
1317           basis = $:basis
1318           coor = $..:coor
1319           memory = 16000000
1320           guess_hessian<FinDispMolecularHessian>: (
1321             molecule = $:molecule
1322             only_totally_symmetric = yes
1323             eliminate_cubic_terms = no
1324             checkpoint = no
1325             energy<CLHF>: (
1326               molecule = $:molecule
1327               memory = 16000000
1328               basis<GaussianBasisSet>: (
1329                 name = '3-21G'
1330                 molecule = $:molecule
1331               )
1332             )
1333           )
1334         )
1335         % optimizer object for the molecular geometry
1336         opt<EFCOpt>: (
1337           transition_state = yes
1338           mode_following = yes
1339           max_iterations = 20
1340           function = $..:mole
1341           update<PowellUpdate>: ()
1342           convergence<MolEnergyConvergence>: (
1343             cartesian = yes
1344             energy = $..:..:mole
1345           )
1346         )
1347       )
1348   Hartree-Fock energy with intermediate checkpointing
1349       The following two sections demonstrate how MPQC can be used to save the
1350       mole object periodically. This input will compute the Hartree-Fock
1351       energy of water while saving the mole object every 3 iterations.
1352       % emacs should use -*- KeyVal -*- mode
1353       % molecule specification
1354       molecule<Molecule>: (
1355         symmetry = C2V
1356         unit = angstrom
1357         { atoms geometry } = {
1358           O     [     0.00000000     0.00000000     0.37000000 ]
1359           H     [     0.78000000     0.00000000    -0.18000000 ]
1360           H     [    -0.78000000     0.00000000    -0.18000000 ]
1361         }
1362       )
1363       % basis set specification
1364       basis<GaussianBasisSet>: (
1365         name = 'STO-3G'
1366         molecule = $:molecule
1367       )
1368       mpqc: (
1369         checkpoint = yes
1370         filename = 'h2o-rhf-STO3G'
1371         checkpoint_freq = 3
1372         savestate = no
1373         % method for computing the molecule's energy
1374         mole<CLHF>: (
1375           molecule = $:molecule
1376           basis = $:basis
1377           memory = 16000000
1378         )
1379       )
1380       The mole object will be saved to files named 'h2o-rhf-
1381       STO3G.wfn.<iter#>.tmp' where <iter#> is the SCF iteration number (3, 6,
1382       etc.). Only the most recent file is kept, files from previous
1383       iterations are removed automatically. Keyword filename here is used to
1384       set the default file name prefix.
1385   MP2-R12 energy with intermediate checkpointing
1386       The following input will compute the MP2-R12 energy of water in
1387       standard approximation A' (MP2-R12/A') while saving the mole object at
1388       intermediate checkpoints.
1389       % emacs should use -*- KeyVal -*- mode
1390       % molecule specification
1391       molecule<Molecule>: (
1392         symmetry = C2V
1393         unit = angstrom
1394         { atoms geometry } = {
1395           O     [     0.00000000     0.00000000     0.37000000 ]
1396           H     [     0.78000000     0.00000000    -0.18000000 ]
1397           H     [    -0.78000000     0.00000000    -0.18000000 ]
1398         }
1399       )
1400       % basis set specification
1401       basis<GaussianBasisSet>: (
1402         name = 'cc-pVDZ'
1403         molecule = $:molecule
1404       )
1405       % auxiliary basis set specification
1406       abasis<GaussianBasisSet>: (
1407         name = 'aug-cc-pVDZ'
1408         molecule = $:molecule
1409       )
1410       mpqc: (
1411         checkpoint = yes
1412         filename = 'h2o-mp2r12ap-vdz-avdz'
1413         savestate = no
1414         % method for computing the molecule's energy
1415         mole<MBPT2_R12>: (
1416           molecule = $:molecule
1417           basis = $:basis
1418           aux_basis = $:abasis
1419           stdapprox = 'A''
1420           nfzc = 1
1421           memory = 16000000
1422           integrals<IntegralCints>:()
1423           % reference wavefunction
1424           reference<CLHF>: (
1425             molecule = $:molecule
1426             basis = $:basis
1427             memory = 16000000
1428             integrals<IntegralCints>:()
1429           )
1430         )
1431       )
1432       The mole object will be saved to a file named h2o-mp2r12ap-vdz-
1433       avdz.wfn". Keyword filename here is used to set the default file name
1434       prefix. Objects of the MBPT2_R12 type are checkpointed after the HF
1435       procedure, after the first integrals (SBS) transformation, and after
1436       the optional second (ABS) transformation.
1437   HF gradient computed from a previously computed HF wave funtion
1438       The following will illustrate how to reuse previously computed
1439       MolecularEnergy objects in subsequent computations. The first input
1440       computes Hartree-Fock energy for water and saves the mole object to
1441       file h2o-rhf-sto3g.wfn.
1442       % emacs should use -*- KeyVal -*- mode
1443       % molecule specification
1444       molecule<Molecule>: (
1445         symmetry = C2V
1446         unit = angstrom
1447         { atoms geometry } = {
1448           O     [     0.00000000     0.00000000     0.37000000 ]
1449           H     [     0.78000000     0.00000000    -0.18000000 ]
1450           H     [    -0.78000000     0.00000000    -0.18000000 ]
1451         }
1452       )
1453       % basis set specification
1454       basis<GaussianBasisSet>: (
1455         name = 'STO-3G'
1456         molecule = $:molecule
1457       )
1458       mpqc: (
1459         checkpoint = no
1460         savestate = yes
1461         filename = 'h2o-rhf-sto3g'
1462         % method for computing the molecule's energy
1463         mole<CLHF>: (
1464           molecule = $:molecule
1465           basis = $:basis
1466           memory = 16000000
1467         )
1468       )
1469       The second input reuses the mole object from the previous run to
1470       compute the gradient of the Hartree-Fock energy.
1471       % emacs should use -*- KeyVal -*- mode
1472       mpqc: (
1473         checkpoint = no
1474         savestate = no
1475         restart = yes
1476         restart_file = 'h2o-rhf-sto3g.wfn'
1477         do_gradient = yes
1478       )
1479   MP2 Energy computed using precomputed Hartree-Fock wave function
1480       The following input will compute the MP2 energy of water using a saved
1481       Hartree-Fock wave function obtained using the first input from HF
1482       gradient computed from a previously computed HF wave funtion.
1483       % emacs should use -*- KeyVal -*- mode
1484       % molecule specification
1485       molecule<Molecule>: (
1486         symmetry = C2V
1487         unit = angstrom
1488         { atoms geometry } = {
1489           O     [     0.00000000     0.00000000     0.37000000 ]
1490           H     [     0.78000000     0.00000000    -0.18000000 ]
1491           H     [    -0.78000000     0.00000000    -0.18000000 ]
1492         }
1493       )
1494       % basis set specification
1495       basis<GaussianBasisSet>: (
1496         name = 'STO-3G'
1497         molecule = $:molecule
1498       )
1499       % wave function file object specification
1500       wfnfile<BcastStateInBin>:file = 'h2o-rhf-sto3g.wfn'
1501       mpqc: (
1502         checkpoint = no
1503         savestate = no
1504         % method for computing the molecule's energy
1505         mole<MBPT2>: (
1506           molecule = $:molecule
1507           basis = $:basis
1508           memory = 16000000
1509           % reference wavefunction
1510           reference<SavableStateProxy>: (
1511             statein = $:wfnfile
1512             object = 'CLHF'
1513           )
1514         )
1515       )
1516       Note that now object reference is of type SavableStateProxy, rather
1517       than CLHF. SavableStateProxy is a special object type that can be
1518       converted at runtime into the desired type (in this case, CLHF, as
1519       indicated by object).
1520   CLHF energy using a CCA integrals component
1521       The following input will compute the CLHF energy of water using a CCA
1522       integrals component via the IntegralCCA adaptor class.
1523       % emacs should use -*- KeyVal -*- mode
1524       % molecule specification
1525       molecule<Molecule>: (
1526         symmetry = C2V
1527         unit = angstrom
1528         { atoms geometry } = {
1529           O     [     0.00000000     0.00000000     0.37000000 ]
1530           H     [     0.78000000     0.00000000    -0.18000000 ]
1531           H     [    -0.78000000     0.00000000    -0.18000000 ]
1532         }
1533       )
1534       % basis set specification
1535       basis<GaussianBasisSet>: (
1536         name = 'STO-3G'
1537         molecule = $:molecule
1538       )
1539       mpqc: (
1540         % path to component libraries
1541         cca_path = /usr/local/lib/cca
1542         % sidl class names of components which will be instantiated
1543         cca_load = MPQC.IntegralEvaluatorFactory
1544         do_cca = yes
1545         checkpoint = no
1546         savestate = no
1547         % method for computing the molecule's energy
1548         mole<CLHF>: (
1549           molecule = $:molecule
1550           basis = $:basis
1551           % cca integrals adaptor class
1552           integrals<IntegralCCA>: (
1553             molecule = $:molecule
1554             % integral buffer type
1555             integral_buffer = opaque
1556             % integral package
1557             integral_package = intv3
1558             % factory component sidl class name
1559             evaluator_factory = MPQC.IntegralEvaluatorFactory
1560           )
1561         )
1562       )

Validating MPQC

1564       After you compile MPQC, you should run the validation suite. You should
1565       also run the validation suite if you upgrade your operating system
1566       software, since this could change shared libraries that are linking
1567       with MPQC and could affect the results. Note that the reference
1568       validation suite has not been verified relative to an independent code,
1569       except for a few spot checks. If you find that MPQC doesn't produce the
1570       same answer as another quantum chemistry program that you trust, then
1571       please promptly notify us and send all the details.
1572       The top-level Makefile has several targets that can be used to check an
1573       MPQC build. MPQC must be built before one of these targets is used:
1574       check
1575           The same as check0 below. This is only available from the top-level
1576           directory and src/bin/mpqc/validate.
1577       check0
1578           Run the smallest MPQC verification suite. It tests basic
1579           functionality. This is only available from the top-level directory
1580           and src/bin/mpqc/validate.
1581       check1
1582           Run the intermediate MPQC verification suite. It runs most of the
1583           tests, only leaving out very expensive runs. This is only available
1584           from the top-level directory and src/bin/mpqc/validate.
1585       check2
1586           Run the complete MPQC verification suite. Depending on the
1587           compilation and runtime environment, tests that are not expected to
1588           work will be omitted. This is only available from the top-level
1589           directory and src/bin/mpqc/validate.
1590       check_clean
1591           Remove MPQC verification suite output files. This is only available
1592           from the top-level directory and src/bin/mpqc/validate.
1593       testbuild
1594           Verify that a variety of small test programs compile. If static
1595           libraries are used, this will require a substantial amount of disk
1596           space.
1597       testrun
1598           Run a variety of small test programs. This will build them if
1599           necessary.
1600       The check targets will run mpqc with the mpqcrun (see mpqcrun) command.
1601       You can give arguments to mpqcrun by setting the MPQCRUN_ARGS variable
1602       on the make command line.
1603       The verification suite is in src/bin/mpqc/validate. After running it,
1604       the output files can be found in src/bin/mpqc/validate/run. The check
1605       targets will compare outputs that your build produced to the reference
1606       files in src/bin/mpqc/validate/ref. The input files can be found with
1607       the reference files. For each comparison, first the status (ok,
1608       missing, or failed) for each file is printed. If both statuses are ok
1609       then an E: is printed followed by the number of digits to which the
1610       energies agree. If they agree to all digits 99 is printed. If a
1611       gradient was computed, then Grad: is printed followed by the number of
1612       digits to which the gradients in least agreement agree. Other
1613       properties checked in this way include frequencies, diagnostics, and
1614       populations.
1615       If two numbers do not agree to the expected accuracy, then an asterisk,
1616       *, is printed after the number of digits in agreement.
1617       Finally, you can do a detailed comparison of the contents of the ref
1618       and run subdirectories by typing make diff.
1619       The input files in the verification suite are divided into several
1620       categories:
1621       h2o
1622           These are simple tests that exercise many of MPQC's features.
1623       h2omp2
1624           Tests that further exercise MP2.
1625       h2ofrq
1626           Tests of H2 O frequencies with a variety of methods.
1627       mbpt
1628           These tests exercise MP2 as well as the open-shell perturbation
1629           theory methods. The various available algorithms are tested as
1630           well.
1631       ckpt
1632           Tests the checkpoint and restart capabilities.
1633       symm1
1634           Tests of point group symmetry.
1635       symm2
1636           More point group symmetry tests. These use basis sets with higher
1637           angular momentum than symm1#.
1638       symm3
1639           Tests automatic point group determination.
1640       basis1
1641           A variety of basis sets are tested for first row atoms along with
1642           hydrogen and helium.
1643       basis2
1644           Basis sets test for second row atoms.
1645       methods
1646           Basic tests of several of MPQC's methods.
1647       clscf
1648           More tests of methods based on CLSCF.
1649       hsosscf
1650           More tests of methods based on HSOSSCF.
1651       uscf
1652           More tests of methods based on UnrestrictedSCF.
1653       dft
1654           More tests of the CLKS method.
1655       mp2r12
1656           More tests of MP2-R12.
1657       ccaintv3
1658           Tests of embedded CCA integrals components using intv3.
1659       ccacints
1660           Tests of embedded CCA integrals components using cints.

Running Psi 3 from MPQC

1662       Psi 3 is a suite of ab initio codes related to the original Psi package
1663       started in Prof. Fritz Schaefer's group at UC Berkeley. Current version
1664       of MPQC works with stable versions of Psi 3 starting with 3.2.0. From
1665       now on we will refer to Psi 3 as simply Psi. Psi is written primarily
1666       in C and executes in serial mode only. The interface between Psi and
1667       MPQC is intended mainly for Psi users who wish to exploit MPQC's
1668       geometry optimization and frequency analyses capabilities with Psi
1669       energies and gradients.
1670       The following sections explain how to use Psi from MPQC:
1671       o How the MPQC-Psi interface works
1672       o Environmental Variables
1673       o Preparing an input file
1674       o Psi Execution Environment
1675       o PsiWavefunction specializations
1676       o More examples
1677   How the MPQC-Psi interface works
1678       The current version of the interface is rather slim. It is only
1679       possible to import energies and gradients computed with Psi into MPQC,
1680       i.e. wave functions cannot be imported. All MPQC-Psi interaction
1681       happens via text files and system calls. MPQC generates input file for
1682       Psi, calls appropriate Psi modules, and then parses the output files
1683       for energies and gradients.
1684   Environmental Variables
1685       Several environmental variables are used to control MPQC-Psi
1686       interaction:
1687       PSIBIN
1688           By default, MPQC will try to find Psi binaries under
1689           /usr/local/psi/bin. Use PSIBIN environmental variable to point to
1690           the right location.
1691       The rest of the Psi environment is job specific and specified in the
1692       input file.
1693   Preparing an input file
1694       As noted above, MPQC parses the input file, and as such the input file
1695       has to be in the MPQC OO input format. All features of usual MPQC input
1696       files are there (mpqc section, mole MolecularEnergy object, etc.). In
1697       addition the following rules apply:
1698
1699       o instead of using MPQC Wavefunction objects (CLHF, MBPT2, etc.), the
1700         Psi specific Wavefunction types (i.e. specializations of
1701         PsiWavefunction) have to be used. Presently the following
1702         specializations are supported: PsiCLHF, PsiHSOSHF, PsiUHF, PsiCCSD,
1703         PsiCCSD_T . The first three are directly analogous to MPQC
1704         Wavefunction types CLHF, HSOSHF, and UHF. The latter two do not have
1705         MPQC analogs yet. See appropriate class documentation on how to
1706         specify them properly.
1707       o each Psi-specific Wavefunction object has to have a member object
1708         psienv of type PsiExEnv. PsiExEnv contains job specific information,
1709         such as the directory in which Psi input, output, and checkpoint
1710         files will be kept, filename prefix, scratch directories, etc. It
1711         makes sense to define one such object and simply refer to it from all
1712         PsiWavefunction objects. See PsiExEnv class documentation for more
1713         info.
1714   Psi Execution Environment
1715       Each PsiWavefunction-derived class has to have a member object called
1716       psienv of type PsiExEnv. The following keywords are used by its KeyVal
1717       constructor:
1718       cwd
1719           The directory where to keep Psi input, checkpoint, stdout, stderr,
1720           and other files. Default is /tmp.
1721       fileprefix
1722           The file prefix to use for Psi checkpoint, scratch, and some ASCII
1723           files. Equivalent to keyword name in Psi psi:files:default section.
1724           Defaults to psi.
1725       stdout
1726           The file into which to redirect standard output of Psi modules.
1727           Defaults to psi.stdout.
1728       stderr
1729           The file into which to redirect standard error of Psi modules.
1730           Defaults to psi.stderr.
1731       nscratch
1732           The number of locations over which to stripe Psi binary files.
1733           Equivalent to keyword nvolume in Psi psi:files:default section.
1734           Default is 1.
1735       scratch
1736           The locations over which to stripe Psi binary files. Equivalent to
1737           keyword volumex in Psi psi:files:default section. There's no
1738           default.
1739       Here's an example:
1740         psienv<PsiExEnv>: (
1741           cwd = ./
1742           fileprefix = psi.test
1743           nscratch = 2
1744           scratch = [ '/scratch1/' '/scratch2/' ]
1745         )
1746   PsiWavefunction specializations
1747       Class PsiWavefunction is derived from class Wavefunction, hence its
1748       KeyVal constructor uses all keywords that Wavefunction's KeyVal
1749       constructor uses (basis, molecule, etc.). In addition,
1750       PsiWavefunction's KeyVal constructor looks for the following keywords
1751       in the input file:
1752       psienv
1753           The PsiExEnv object that provides job specific Psi environment.
1754           There's no default.
1755       docc
1756           An optional array of integers that specifies the number of doubly-
1757           occupied orbitals in each irrep.
1758       socc
1759           An optional array of integers that specifies the number of singly-
1760           occupied orbitals in each irrep.
1761       frozen_docc
1762           An optional array of integers that specifies the number of doubly-
1763           occupied orbitals in each irrep frozen in correlated computations.
1764       frozen_uocc
1765           An optional array of integers that specifies the number of
1766           unoccupied orbitals in each irrep frozen in correlated
1767           computations.
1768       total_charge
1769           The total charge of the system. This keyword is queried only if
1770           neither docc nor socc are given.
1771       multiplicity
1772           The spin multiplicity of the system (2*M_S+1). This keyword is
1773           queried only if neither docc nor socc are given.
1774       memory
1775           The number of bytes of memory Psi modules associated with this
1776           PsiWavefunction are allowed to use. Default is 2000000 (2 million
1777           bytes, approximately 2 MB).
1778       Note that keywords docc, socc, frozen_docc, frozen_uocc, total_charge,
1779       and multiplicity are used by appropriate specializations of
1780       PsiWavefunctions, i.e. PsiCLHF only checks for docc, etc.
1781       PsiWavefunction specializations PsiCCSD and PsiCCSD_T also look for
1782       keyword reference which specifies the reference wave function (an
1783       object of type PsiSCF). All classes for correlated Psi wave functions
1784       will require such an object.
1785       Here are a few examples of PsiWavefunctions:
1786         %
1787         % ROHF DZ on F atom
1788         %
1789         mole<PsiHSOSHF>: (
1790           docc = [ 2 0 0 0 0 1 1 0 ] socc = [ 0 0 0 0 0 0 0 1]
1791           memory = 10000000
1792           % Psi Environment data
1793           psienv<PsiExEnv>: (
1794             cwd = ./
1795             fileprefix = f.dz.test
1796             stdout = f.dz.test.stdout
1797             stderr = f.dz.test.stderr
1798             nscratch = 1
1799             scratch = [ '/scratch/mpqc/' ]
1800           )
1801           % MolecularEnergy input
1802           molecule<Molecule>: (
1803               {atoms geometry} = {
1804                 F  [   0.0  0.0   0.0 ]
1805                }
1806             )
1807           % Basis input
1808           basis<GaussianBasisSet>: (
1809               molecule = $..:molecule
1810               name = 'DZ (Dunning)'
1811             )
1812         )
1813         %
1814         % RHF CCSD/cc-pVDZ on water
1815         %
1816         mole<PsiCCSD>: (
1817           frozen_docc = [1 0 0 0]
1818           memory = 40000000
1819           % Psi Environment data
1820           psienv<PsiExEnv>: (
1821             cwd = ./
1822             fileprefix = h2o.ccpvdz.ccsd.test
1823             nscratch = 1
1824             scratch = [ '/tmp/' ]
1825           )
1826           % MolecularEnergy input
1827           molecule<Molecule>: (
1828               {atoms geometry} = {
1829                 H  [  -1.5  0.0  -0.3 ]
1830                 H  [   1.5  0.0  -0.3 ]
1831                 O  [   0.0  0.0   1.0 ]
1832                }
1833             )
1834           % Basis input
1835           basis<GaussianBasisSet>: (
1836               molecule = $..:molecule
1837               name = 'cc-pVDZ'
1838             )
1839           reference<PsiCLHF>: (
1840             psienv = $..:psienv
1841             molecule = $..:molecule
1842             basis = $..:basis
1843             total_charge = 0
1844             multiplicity = 1
1845           )
1846         )
1847   More examples
1848       This section contains some examples of complete inputs that specify an
1849       MPQC/Psi computations.
1850       Here's an optimization + subsequent frequency analysis on water
1851       molecule at the RHF CCSD 6-311G** level:
1852       % Emacs should use -*- KeyVal -*- mode
1853       % this file was automatically generated
1854       % label: water test series
1855       % molecule specification
1856       molecule<Molecule>: (
1857         symmetry = C2V
1858         unit = angstrom
1859         { atoms geometry } = {
1860            O     [     0.000000000000     0.000000000000     0.369372944000 ]
1861            H     [     0.783975899000     0.000000000000    -0.184686472000 ]
1862            H     [    -0.783975899000     0.000000000000    -0.184686472000 ]
1863         }
1864       )
1865       % basis set specification
1866       basis<GaussianBasisSet>: (
1867         name = '6-311G**'
1868         molecule = $:molecule
1869       )
1870       % Psi environment specification
1871       psienv<PsiExEnv>: (
1872             cwd = ./
1873             fileprefix = mpqcpsi
1874             stdout = mpqcpsi.stdout
1875             stderr = mpqcpsi.stderr
1876             nscratch = 1
1877             scratch = [ '/scratch/evaleev/' ]
1878       )
1879       mpqc: (
1880         checkpoint = no
1881         savestate = no
1882         restart = no
1883         coor<SymmMolecularCoor>: (
1884           molecule = $:molecule
1885           generator<IntCoorGen>: (
1886             molecule = $:molecule
1887           )
1888         )
1889         % molecular coordinates for optimization  do_energy = yes
1890         do_gradient = no
1891         % method for computing the molecule's energy
1892         mole<PsiCCSD>: (
1893           molecule = $:molecule
1894           basis = $:basis
1895           coor = $..:coor
1896           psienv = $:psienv
1897           memory = 32000000
1898           reference<PsiCLHF>: (
1899             psienv = $:psienv
1900             molecule = $:molecule
1901             total_charge = 0
1902             multiplicity = 1
1903             basis = $:basis
1904             memory = 32000000
1905           )
1906           hessian<FinDispMolecularHessian>: (
1907             point_group<PointGroup>: symmetry = C2V
1908             checkpoint = no
1909             restart = no
1910           )
1911         )
1912         optimize = yes
1913         % optimizer object for the molecular geometry
1914         opt<QNewtonOpt>: (
1915           max_iterations = 20
1916           function = $..:mole
1917           update<BFGSUpdate>: ()
1918           convergence<MolEnergyConvergence>: (
1919             cartesian = yes
1920             energy = $..:..:mole
1921           )
1922         )
1923       % vibrational frequency input
1924         freq<MolecularFrequencies>: (
1925           point_group<PointGroup>: symmetry = C2V
1926           molecule = $:molecule
1927         )
1928       )

CCA Components

1930       Common Component Architecture (CCA) component wrappers, conforming to
1931       interfaces developed for the CCA Chemistry Component Toolkit, have been
1932       created to encapsulate some MPQC functionality. The following
1933       components are provided by MPQC:
1934       o MPQC.Chemistry_QC_ModelFactory
1935       o MPQC.ChemistryOpt_CoordinateModel
1936       o MPQC.IntegralEvaluatorFactory
1937   MPQC.Chemistry_QC_ModelFactory
1938       This is an implementation of the Chemistry.QC.ModelFactory interface.
1939       This factory produces model objects (implementing the
1940       Chemistry.QC.Model interface) based on the MPQC package. The MPQC model
1941       allows calculation of molecular energies and energy derivatives using a
1942       variety of methods.
1943   Provides Ports
1944       o Chemistry.QC.ModelFactory ModelFactory
1945   Uses Ports
1946       o Chemistry.QC.MoleculeFactory MoleculeFactory (required)
1947   Parameters
1948       o theory The method for determining the electronic structure. Defaults
1949         to HF.
1950
1951         o HF Hartree-Fock method.
1952         o B3LYP Density Functional Theory (DFT) with B3LYP functional.
1953         o Use keyval input for other options.
1954       o basis The atomic orbital basis set. Defaults to STO-3G.
1955
1956         o Any basis set defined in the MPQC package.
1957         o Use keyval input for mixed basis sets.
1958       o molecule_filename Path to the molecule file (see cca-chem-generic
1959         documentation for format). No default -- required.
1960       o keyval_filename Path to the keyval input file (see below). No default
1961         -- optional.
1962   Keyval Input
1963       The theory and basis parameters allow very basic calculations to be
1964       performed. More complex calculations will require the use of a keyval
1965       input file. The keyval file format is the same as that used to run MPQC
1966       stand-alone, and any valid MPQC options may be used. The molecular
1967       energy object must be named model. The user-supplied keyval cannot
1968       contain a molecule section; the molecule section will be automatically
1969       inserted by the ModelFactory using the required molecule_filename. This
1970       molecule section should be referred to as $:molecule.
1971       Example keyval input:
1972         model<CLHF>:(
1973           molecule=$:molecule
1974           basis<GaussianBasisSet>:(
1975             name = '6-31G'
1976             molecule = $:molecule
1977           )
1978         )
1979   MPQC.ChemistryOpt_CoordinateModel
1980       This is an implementation of the ChemistryOpt.CoordinateModel interface
1981       based on the MPQC package. It supports molecular structure optimization
1982       in cartesian, symmetrized internal, and redundant internal coordinates.
1983       Hessian approximation is supported.
1984   Provides Ports
1985       o ChemistryOpt.CoordinateModel CoordinateModel
1986   Uses Ports
1987       o Chemistry.QC.ModelFactory ModelFactory (required)
1988       o Chemistry.QC.ModelFactory BackupModelFactory (optional)
1989       o Chemistry.MoleculeViewer MoleculeViewer (optional)
1990       A backup model factory may be supplied. If an error is detected in the
1991       primary model, then a model obtained from the backup factory will be
1992       used. The molecule viewer is currently only used to communicate with
1993       the python viewer, in which case component instantiation and connection
1994       is handled automatically.
1995   Parameters
1996       o grad_rms RMS gradient convergence criteria. Defaults to 0.00030.
1997       o grad_max Max gradient convergence criteria. Defaults to 0.00045.
1998       o disp_rms RMS displacement convergence criteria. Defaults to 0.00120.
1999       o disp_max Max displacement convergence criteria. Defaults to 0.00180.
2000       o coordinate_type Optimization coordinate type. Defaults to
2001         symmetrized.
2002
2003         o cartesian Cartesian coordinates.
2004         o symmetrized Symmetrized internal coordinates.
2005         o redundant Redundant internal coordinates.
2006       o multiple_guess_h Compute new guess Hessian at each call to
2007         guess_hessian_solve() (true) or use guess from first iteration only
2008         (false). Only meaningful in conjunction with solvers supporting use
2009         of dense guess Hessians with limited-memory methods. Defaults to
2010         true.
2011       o use_current_geom If multiple_guess_h is true, either use the current
2012         geometry (true) or the geometry at which the earliest correction pair
2013         used by the solver was determined (false) when computing the guess
2014         Hessian. Defaults to false.
2015   MPQC.IntegralEvaluatorFactory
2016       This is an implementation of the
2017       Chemistry.QC.GaussianBasis.IntegralEvaluatorFactory interface. This
2018       factory produces molecular integral evaluator objects based on the MPQC
2019       package. This code is experimental and does not currently support
2020       derivative integrals.
2021   Provides Ports
2022       o Chemistry.QC.GaussianBasis.IntegralEvaluatorFactory
2023         IntegralEvaluatorFactory
2024   Parameters
2025       o package Integral package, either intv3 or cints. Defaults to intv3.
2026       o integral_buffer Integral buffer type, either opaque or array. The
2027         opaque option uses pointers and is therefore higher performance. The
2028         array option may be used by components implemented in languages which
2029         are not pointer-aware.

MPQC License

2031       MPQC is open-source software; you can redistribute it and/or modify it
2032       under the terms of the GNU General Public License as published by the
2033       Free Software Foundation; either version 2 of the License, or (at your
2034       option) any later version.

MPQC Warranty

2036       MPQC is distributed in the hope that it will be useful, but WITHOUT ANY
2037       WARRANTY; without even the implied warranty of MERCHANTABILITY or
2038       FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
2039       for more details.
2040Version 2.3.1                   Thu Dec 9 2010                         mpqc(1)
Impressum