| doc/manual/qchem.htp | [new file with mode: 0644] | patch | blob |
| examples/qchem/basisspec.chm | [new file with mode: 0644] | patch | blob |
| examples/qchem/dispersion_energy.chm | [new file with mode: 0644] | patch | blob |
| examples/qchem/dispersion_gradient.chm | [new file with mode: 0644] | patch | blob |
| examples/qchem/h2o_dimer_elec.chm | [new file with mode: 0644] | patch | blob |
| examples/qchem/hf.chm | [new file with mode: 0644] | patch | blob |
| examples/qchem/qchemrc | [new file with mode: 0755] | patch | blob |
diff --git a/doc/manual/qchem.htp b/doc/manual/qchem.htp
--- /dev/null
+++ b/doc/manual/qchem.htp
@@ -0,0 +1,290 @@
+<set title="The Q-Chem Interface">
+<set tag="quantum">
+<set tag2="q-chem">
+
+<file include="head.htp">
+
+
+<h2>Introduction</H2>
+
+The interface is designed to access basic functionality of the <A HREF="http://www.q-chem.com/" TARGET="_blank"> Q-Chem program
+package</A>. It is capable of calculating ground state energies and gradients
+on the restricted closed-shell Hartree-Fock, DFT (BLYP, BP86, BPW91, B3PW91, S-VWN-LDA)
+and RI-MP2 level of theory. The interface creates the necessary input
+files for the Q-Chem run, executes Q-Chem and finally extracts the QM-results.<br><br>
+
+In order to use the interface, the environment must be set up as
+required for a Q-Chem standard run depending on the Q-Chem version .
+Commonly, at least the shell environment
+variables<br><br>
+
+<TABLE CELLPADDING=3 BORDER="1">
+<TR>
+<TD>QC </TD> <TD>Path to Q-Chem main directory </TD>
+</TR>
+<TR>
+<TD>QCAUX </TD> <TD>Path to Q-Chem basis set directory </TD>
+</TR>
+<TR>
+<TD>QCSCRATCH </TD> <TD>Path to scratch directory for Q-Chem scratch output</TD>
+</TR>
+</TABLE>
+<br>
+
+need to be set (see <A HREF="http://www.q-chem.com/doc_for_web/qchem_manual_3.2.pdf" TARGET="_blank">Q-Chem manual</A>).
+For an example see the qchemrc in the example/qchem folder.
+
+<a name="args"></a>
+<H2>Command Line Arguments</H2>
+Currently the following ChemShell command line arguments are available:<br><br>
+
+<TABLE CELLPADDING=3 BORDER="1">
+<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=$cw1>Argument</TD>
+<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=$cw2>Argument type</TD>
+<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=$cw3>Mandatory</TD>
+<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=$cw4>Default</TD>
+<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=$cw5>Description</TD>
+</TR>
+
+<TR>
+<TD ALIGN="LEFT" VALIGN="TOP">basis</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">keyword</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">no</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">STO-3G</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">Required basis set (qchem library <A HREF="#Notes">[1]</A>)</TD>
+</TR>
+
+<TR>
+<TD ALIGN="LEFT" VALIGN="TOP">basisspec</TD>
+<TD ALIGN="LEFT" VALIGN="TOP"><use list_link></TD>
+<TD ALIGN="LEFT" VALIGN="TOP">no</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">sto-3g all</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">Required basis set (ChemShell library)</TD>
+</TR>
+
+<TR>
+<TD ALIGN="LEFT" VALIGN="TOP">charge</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">integer</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">no</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">0</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">Total charge</TD>
+</TR>
+
+<TR>
+<TD ALIGN="LEFT" VALIGN="TOP">accuracy</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">keyword</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">no</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">medium</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">Determines accuracy of SCF calculation <A HREF="#Notes">[2]</A>: debug, lowest, low, medium, high, highest </TD>
+</TR>
+
+<TR>
+<TD ALIGN="LEFT" VALIGN="TOP">grid</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">integer</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">no</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">undefined</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">Determines accuracy of DFT grid in Q-Chem notation <A HREF="#Notes">[3]</A>.</TD>
+</TR>
+
+<TR>
+<TD ALIGN="LEFT" VALIGN="TOP">jobname</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">string</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">no</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">qchem</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">Determines the name of qchem input (jobname.com), output (jobname.log) and scratch (jobname.scr <A HREF="#Notes">[4]</A>).</TD>
+</TR>
+<TR>
+<TD ALIGN="LEFT" VALIGN="TOP">hamiltonian</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">keyword</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">no</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">hf</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">Choice of QM Hamiltonian: hf, blyp, bp86, b3lyp <A HREF="#Notes">[5]</A>, b3lyp5 <A HREF="#Notes">[5]</A>, b3pw91, bpw91, s-vwn-lda, rimp2, rimp2_svp <A HREF="#Notes">[6]</A></TD>
+</TR>
+<TR>
+<TD ALIGN="LEFT" VALIGN="TOP">mem_total</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">integer</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">no</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">2000</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">Sets the total memory available to Q-Chem, in megabytes <A HREF="#Notes">[7]</A>.</TD>
+</TR>
+<TR>
+<TD ALIGN="LEFT" VALIGN="TOP">mem_static</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">integer</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">no</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">100</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">Sets the memory for individual Q-Chem program modules, in megabytes <A HREF="#Notes">[8]</A>.</TD>
+</TR>
+<TR>
+<TD ALIGN="LEFT" VALIGN="TOP">harmonic</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">bool</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">no</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">undefined</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">Specifies if either cartesian GTOs (1) or pure spherical harmonics (0) are used.</TD>
+</TR>
+<TR>
+<TD ALIGN="LEFT" VALIGN="TOP">purecart</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">integer</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">no</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">undefined</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">Allows for specification of cartesian GTOs vs. pure sherical harmonics by Q-Chem nomenclature <A HREF="#Notes">[9]</A>.</TD>
+</TR>
+
+<TR>
+<TD ALIGN="LEFT" VALIGN="TOP">guess</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">keyword</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">no</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">sad</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">Initial guess for the one-particle density matrix: SAD, CORE, GWH or READ <A HREF="#Notes">[10]</A>.</TD>
+</TR>
+
+<TR>
+<TD ALIGN="LEFT" VALIGN="TOP">separate_jk</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">bool</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">no</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">1</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">Switch on/off the separate formation of Coulomb and exchange part <A HREF="#Notes">[11]</A>.</TD>
+</TR>
+
+<TR>
+<TD ALIGN="LEFT" VALIGN="TOP">grain</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">integer</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">no</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">-1</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">Controls the number of lowest-level boxes in one dimension for CFMM <A HREF="#Notes">[12]</A>: -1, 1 , >=8 <A HREF="#Notes">[13]</A>.
+</TD>
+</TR>
+
+<TR>
+<TD ALIGN="LEFT" VALIGN="TOP">lin_k</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">bool</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">no</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">0</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">Switch on/off linear scaling screening for the exchange part (LinK <A HREF="#Notes">[14]</A>) <A HREF="#Notes">[15]</A>.</TD>
+</TR>
+
+<TR>
+<TD ALIGN="LEFT" VALIGN="TOP">dft_d</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">keyword</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">no</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">undefined</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">Switch on Grimme's dispersion type correction: EMPIRICAL_GRIMME <A HREF="#Notes">[16]</A>.</TD>
+</TR>
+
+<TR>
+<TD ALIGN="LEFT" VALIGN="TOP">verbose</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">keyword</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">no</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">yes</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">Choose verbosity.</TD>
+</TR>
+
+<TR>
+<TD ALIGN="LEFT" VALIGN="TOP">add</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">Q-Chem notation</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">no</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">undefined</TD>
+<TD ALIGN="LEFT" VALIGN="TOP">Set additional Q-Chem input. Use with care <A HREF="#Notes">[17]</A> !</TD>
+</TR>
+
+</TABLE>
+
+
+<H3>
+Examples</H3>
+Single point MP2 energy of a charged species:<br>
+<tt>energy coords=start.c energy=e theory=turbomole : { hamiltonian=mp2 ri_memory=1000 basis=TZVPP charge=-3 }
+print_matrix matrix=e</tt><br>
+
+Parallel geometry optimisation, using an already existing control file:<br>
+<tt>hdlcopt coords=start.c result=final.c theory=turbomole : { hamiltonian=bp86
+ri_memory=1000 nproc=4 read_control=yes } <A HREF="#Notes">3</A></tt>
+
+<H3>
+<A NAME="Notes">Notes</A></H3>
+
+<OL>
+<LI>
+Using the argument "basis" the basis set needs to be specified in Q-Chem nomenclature. Especially note that Ahlrichs SVP is denoted VDZ**.
+
+
+<LI>
+The different levels determine the SCF accuracy concerning
+the SCF convergence (A), the threshold for density based Schwarz screening
+of electron repulsion integrals (B) and the DFT grid size (C).
+<TABLE CELLPADDING=3 BORDER="1" >
+<TR><TD> keyword</TD><TD ALIGN="CENTER"> (A) </TD><TD ALIGN="CENTER"> (B) </TD><TD ALIGN="CENTER"> (C) </TD></TR>
+<TR><TD> debug </TD><TD ALIGN="CENTER"> 10<sup>-3</sup></TD><TD ALIGN="CENTER"> 10<sup>-6</sup></TD><TD ALIGN="CENTER">"Low quality" grid </TD></TR>
+<TR><TD> lowest </TD><TD ALIGN="CENTER"> 10<sup>-4</sup></TD><TD ALIGN="CENTER"> 10<sup>-7</sup></TD><TD ALIGN="CENTER"> SG-0 </TD></TR>
+<TR><TD> low </TD><TD ALIGN="CENTER"> 10<sup>-5</sup></TD><TD ALIGN="CENTER"> 10<sup>-8</sup></TD><TD ALIGN="CENTER"> SG-0 </TD></TR>
+<TR><TD> medium </TD><TD ALIGN="CENTER"> 10<sup>-6</sup></TD><TD ALIGN="CENTER"> 10<sup>-9</sup></TD><TD ALIGN="CENTER"> SG-1 </TD></TR>
+<TR><TD> high </TD><TD ALIGN="CENTER"> 10<sup>-7</sup></TD><TD ALIGN="CENTER"> 10<sup>-10</sup></TD><TD ALIGN="CENTER"> 75/302 </TD></TR>
+<TR><TD> highest</TD><TD ALIGN="CENTER"> 10<sup>-8</sup></TD><TD ALIGN="CENTER"> 10<sup>-11</sup></TD><TD ALIGN="CENTER"> 110/590 </TD></TR>
+</TABLE>
+Use the largest affordable accuracy. Typically "medium" is sufficient
+for standard SCF energetics but you might need to choose "high" for RI-MP2,
+gradients or also for large QM regions! For details concerning the grid abbreviations see the <A HREF="http://www.q-chem.com/doc_for_web/qchem_manual_3.2.pdf" TARGET="_blank">Q-Chem manual</A>.
+
+<LI>
+If not specified the DFT grid is chosen according to the argument "accuracy".
+
+<LI>
+The Q-Chem scratch then is written to $QCSCRATCH/jobname.scr/
+
+<LI>
+B3LYP and B3LYP5 differ in the correlation functional:
+<TABLE BORDER=0>
+<TR><TD>B3LYP </TD><TD>(correlation: 0.8100 LYP + 0.1900 VWN1RPA)</TD></TR>
+<TR><TD>B3LYP5</TD><TD>(correlation: 0.1900 VWN + 0.8100 LYP)</TD></TR>
+</TABLE>
+See <A HREF="http://www.q-chem.com/doc_for_web/qchem_manual_3.2.pdf" TARGET="_blank">Q-Chem manual</A>.
+
+<LI>
+For RI-MP2 calculation with Ahlrichs SVP basis set and corresponding auxiliary basis set.
+
+<LI>
+Make sure you physically provide the specified memory. For large QM regions the default (2GB) needs to be increased. See <A HREF="http://www.q-chem.com/doc_for_web/qchem_manual_3.2.pdf" TARGET="_blank">Q-Chem manual</A> for details.
+
+<LI>
+Make sure you physically provide the specified memory. For large QM regions the default (100MB) needs to be increased. See <A HREF="http://www.q-chem.com/doc_for_web/qchem_manual_3.2.pdf" TARGET="_blank">Q-Chem manual for details</A>.
+
+<LI>
+If the "purecart" argument is used the specifications by "harmonic" are overwritten. See <A HREF="http://www.q-chem.com/doc_for_web/qchem_manual_3.2.pdf" TARGET="_blank">Q-Chem manual</A> for the purecart variable.
+
+<LI>
+Q-Chem provides the core hamiltonian guess (CORE), the superposition of atomic densities (SAD, default), and
+the generalized Wolfsberg-Helmholtz guess (GWH). Addidionally by the keyword "READ" an adequate guess can be read in from file. For this purpose, the file containing the guess
+needs to be located in the scratch directory, i.e. $QCSCRATCH/jobname.scr/. See <A HREF="http://www.q-chem.com/doc_for_web/qchem_manual_3.2.pdf" TARGET="_blank">Q-Chem manual</A> for details.
+
+<LI>
+Switch on for large QM systems as "separate_jk" is required to make use of
+CFMM <A HREF="#Notes">[12]</A> and LinK <A HREF="#Notes">[14]</A>.
+
+<LI>
+C. A. White, B. G. Johnson and M. Head-Gordon, The Continuous Fast Multipole Method, <em>Chem. Phys. Letters</em>, <strong>230</strong>, 8 (1994).
+
+<LI>Use the default (-1) unless you really want to change the CFMM behavior (-1: Program decides best value turning on CFMM when useful, 1: Do not use CFMM, n >=8: Use CFMM with n lowest-level boxes in one dimension).
+
+<LI>
+C. Ochsenfeld, C. A. White, and M. Head-Gordon, Linear and sublinear scaling of Hartree-Fock-type exchange matrices, <em>J. Chem. Phys.</em>, <strong>109</strong>, 1663 (1998).
+
+<LI>
+Switch on for large QM systems (several hundreds of atoms).
+
+<LI>
+For further information (D2 or D3, damping function etc.) and other options see <A HREF="http://www.q-chem.com/doc_for_web/qchem_manual_3.2.pdf" TARGET="_blank">Q-Chem manual</A>.
+
+<LI>
+Set any additional input designated for the $rem-section of Q-Chem (see <A HREF="http://www.q-chem.com/doc_for_web/qchem_manual_3.2.pdf" TARGET="_blank">Q-Chem manual</A>) by specifying<br>
+<TABLE BORDER=0 style="font-size:12">
+<TR><TD>add =</TD><TD>{</TD><TD>[rem_name1]</TD><TD>[rem_value1]</TD></TR>
+<TR><TD> </TD><TD> </TD><TD>[rem_name2]</TD><TD>[rem_value2]</TD></TR>
+<TR><TD> </TD><TD> </TD><TD>. </TD><TD> </TD></TR>
+<TR><TD> </TD><TD> </TD><TD>. </TD><TD> </TD></TR>
+<TR><TD> </TD><TD> </TD><TD>. </TD><TD> </TD></TR>
+<TR><TD> </TD><TD>}</TD><TD> </TD><TD> </TD></TR>
+</TABLE>
+Be aware, of course, that by this the Q-Chem output may be modified in such a way that the proper extraction of QM results fails!
+
+</OL>
+
+<file include="tail.htp">
diff --git a/examples/qchem/basisspec.chm b/examples/qchem/basisspec.chm
--- /dev/null
@@ -0,0 +1,30 @@
+if { [ catch {exec which qchem } ] } then {
+ set msg "Unsupported test: Requires qchem set up in path)"
+ puts stdout $msg
+ return $msg
+}
+
+#
+# Molpro example using ChemShell basis library
+# Molpro uses harmonic basis by default, switch off for comparison
+#
+z_create zmatrix=z {
+zmatrix angstrom
+o
+h 1 1
+h 1 1 2 100
+}
+z_to_c zmatrix=z coords=c
+matrix e
+energy coords=c theory=qchem : { harmonic=no basisspec = { {sto-3g *} {dzp o} } } energy=e
+set final_energy [ get_matrix_element matrix=e indices= {0 0 } ]
+delete_object e
+
+# Test result
+set etest -76.01244105
+
+if { abs( $final_energy - $etest) > 1.0e-10 } {
+ chemerr "Failed .. E= $final_energy, should be $etest"
+} else {
+ return "OK"
+}
diff --git a/examples/qchem/dispersion_energy.chm b/examples/qchem/dispersion_energy.chm
--- /dev/null
@@ -0,0 +1,35 @@
+if { [ catch {exec which qchem } ] } then {
+ set msg "Unsupported test: Requires qchem set up in path)"
+ puts stdout $msg
+ return $msg
+}
+
+z_create zmatrix=z {
+zmatrix angstrom
+o
+h 1 oh
+h 1 oh 2 hoh
+variables
+oh 1
+hoh 100
+}
+z_to_c zmatrix=z coords=c
+matrix e
+
+energy coords=c theory=qchem : [ list \
+ hamiltonian=hf basisspec= {{ 3-21g * }} \
+ dft_d=EMPIRICAL_GRIMME \
+ ] \
+ energy=e
+
+
+set final_energy [ get_matrix_element matrix=e indices= {0 0 } ]
+delete_object e
+
+# Test result
+set etest -75.58291514
+if { abs( $final_energy - $etest) > 1.0e-7 } {
+ chemerr "Failed .. E= $final_energy, should be $etest"
+} else {
+ return "OK"
+}
diff --git a/examples/qchem/dispersion_gradient.chm b/examples/qchem/dispersion_gradient.chm
--- /dev/null
@@ -0,0 +1,33 @@
+if { [ catch {exec which qchem } ] } then {
+ set msg "Unsupported test: Requires qchem set up in path)"
+ puts stdout $msg
+ return $msg
+}
+z_create zmatrix=z {
+zmatrix angstrom
+o
+h 1 oh
+h 1 oh 2 hoh
+variables
+oh 1
+hoh 100
+}
+z_to_c zmatrix=z coords=c
+
+matrix hdlcopt.energy new volatile
+
+hdlcopt coords=c theory=qchem : [ list \
+ hamiltonian=hf basisspec= {{ 3-21g * }} \
+ dft_d=EMPIRICAL_GRIMME \
+ ]
+set final_energy [ get_matrix_element matrix=hdlcopt.energy indices= {0 0 } ]
+
+delete_object hdlcopt.energy
+
+# Test result
+set etest -75.58600656
+if { abs( $final_energy - $etest) > 1.0e-7 } {
+ chemerr "Failed .. E= $final_energy, should be $etest"
+} else {
+ return "OK"
+}
diff --git a/examples/qchem/h2o_dimer_elec.chm b/examples/qchem/h2o_dimer_elec.chm
--- /dev/null
@@ -0,0 +1,75 @@
+if { [ catch {exec which qchem } ] } then {
+ set msg "Unsupported test: Requires qchem set up in path)"
+ puts stdout $msg
+ return $msg
+}
+
+#
+z_create zmatrix=z {
+zmatrix angstrom
+o%1
+x1 o%1 1.0
+x2 o%1 1.0 x1 90.
+x3 o%1 1.0 x1 90. x2 90.
+h%11 o%1 oh11 x1 xoh1 x2 90.
+h%12 o%1 oh12 x1 xoh1 x2 270.
+o%2 o%1 oo x3 oox x2 ooxx
+x4 o%2 1.0 o%1 xoox x3 xoox3
+x5 o%2 1.0 x4 90. x1 xoox1
+x6 o%2 1.0 x4 90. x5 90.
+h%21 o%2 oh21 x5 ohx x4 90.
+h%22 o%2 oh22 x5 ohx x4 270.
+variables
+oh11 0.9424
+xoh1 52.92
+oh12 0.9424
+oo 2.9
+oox 90.
+ooxx 150.
+xoox 90.
+xoox3 0.0
+xoox1 73.00
+oh21 0.9424
+oh22 0.9424
+ohx 52.92
+end
+}
+read_input ff.dat {
+charge o -.796
+charge h +.398
+# CHARMM -- DRF repulsion intermolecular interaction
+powers o o 12 159379 0 0. 0 0.
+powers o h 12 44490 0 0. 0 0.
+powers h h 12 9569 0 0. 0 0.
+# intramolecular force-field parameters for MM
+# from QM calculation on water monomer
+bond h o 748.6 0.9424
+angle h o h 56.3 105.84
+}
+
+#
+# approximate minimum of two water molecules
+#
+set args [ list electrostatics_option=polarised qm_theory=mndo qm_region= {1 2 3} ]
+#
+
+z_to_c zmatrix=z coords=c
+
+energy energy=e coords=c \
+ theory= hybrid : { coupling=shift
+ qm_region= {1 2 3}
+ qm_theory=qchem : { basisspec= {{3-21g *}} }
+ mm_theory=dl_poly : mm_defs=ff.dat
+ }
+
+# cf GAMESS-UK value of -75.572482
+set e_ref -75.57248179
+
+set e [ get_matrix_element matrix=e indices = { 0 0 } ]
+
+if { abs($e -$e_ref) > 1.0e-5 } {
+ chemerr "Energy test failed $e $e_ref"
+} else {
+ return OK
+}
+
diff --git a/examples/qchem/hf.chm b/examples/qchem/hf.chm
--- /dev/null
+++ b/examples/qchem/hf.chm
@@ -0,0 +1,32 @@
+if { [ catch {exec which qchem } ] } then {
+ set msg "Unsupported test: Requires Q-Chem set up in path)"
+ puts stdout $msg
+ return $msg
+}
+#
+# Default (STO-3G, HF calculation)
+#
+z_create zmatrix=z {
+zmatrix angstrom
+o
+h 1 1
+h 1 1 2 100
+}
+z_to_c zmatrix=z coords=c
+
+matrix e
+energy coords=c theory=qchem : { basis=VDZ** } energy=e
+set final_energy [ get_matrix_element matrix=e indices= {0 0 } ]
+delete_object e
+
+# Test result
+# set etest -74.96565701
+
+# Replace with SV value until matching sto3g basis can be fixed up
+set etest -75.91167156
+
+if { abs( $final_energy - $etest) > 1.0e-6 } {
+ chemerr "Failed .. E= $final_energy, should be $etest"
+} else {
+ return "OK"
+}
diff --git a/examples/qchem/qchemrc b/examples/qchem/qchemrc
--- /dev/null
+++ b/examples/qchem/qchemrc
@@ -0,0 +1,46 @@
+###
+### COMPILER && MKL
+###
+#export INTEL_CC=/opt/intel/Compiler/11.1/072/
+#export INTEL_FC=/opt/intel/FortranCompiler/11.1/072/
+#export INTEL_MKL=/opt/intel/mkl/10.2.5.035/
+#source ${INTEL_CC}/bin/intel64/iccvars_intel64.sh intel64
+#source ${INTEL_FC}/bin/intel64/ifortvars_intel64.sh intel64
+#export LD_LIBRARY_PATH=$INTEL_MKL/lib/em64t:$INTEL_FC/lib/intel64
+#
+##export CC=gcc # Standard!!!
+##export F77=${CHEMSHSUITE}/g95/bin/x86_64-suse-linux-gnu-g95
+##export F90=${CHEMSHSUITE}/g95/bin/x86_64-suse-linux-gnu-g95
+#
+#export CC=gcc # Standard!!!
+#export F77=ifort
+#export F90=ifort
+
+
+
+###
+### Q-Chem
+###
+#export ONEEXE="-DONEEXE"
+#export Q=/home/denis/work/chemshell-3.3.2_suite/qchem.pittsburgh_2010_05_09
+export QC=/home/denis/work/chemshell-3.3.2_suite/qchem.pittsburgh_2010_05_09
+#export QCSOURCE=${Q}
+export QCAUX=/software/qcaux.0206
+#export QCSH=csh
+export QCSCRATCH=/home/denis/scr
+#export QCPLATFORM=LINUX_Ix86
+#export QCMDMAKE=md.make.intel.work-laptop
+#export PATH=$PATH:$QC/bin:$QC/bin/perl:$QC/exe
+source $QC/bin/qchem.setup.sh
+#export QC_EXT_LIBS=/software/lib/fftw-2.1.5
+
+##
+## ChemShell
+##
+export MYCHEMSHELL=/home/denis/work/chemsh-3.4.1_git
+export PATH=$PATH:${MYCHEMSHELL}/scripts:${MYCHEMSHELL}/bin
+
+##
+## TCL
+##
+export TCLROOT=/home/denis/work/chemsh-3.4.1_git/tcl8.4.19/unix

