RMG User's Guide
how to get, install, and use RMG-Py
-
CanTherm User's Guide
- how to get, install, and use CanTherm
+
Arkane User's Guide
+ how to get, install, and use Arkane
Theory Guide
some of the theory behind RMG
API Reference
diff --git a/documentation/source/conf.py b/documentation/source/conf.py
index 0841976547..228bdc5f03 100644
--- a/documentation/source/conf.py
+++ b/documentation/source/conf.py
@@ -219,7 +219,7 @@
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [
- ('latex-rmg', 'RMG-Py_and_CanTherm_Documentation.tex', u'RMG-Py and CanTherm Documentation',
+ ('latex-rmg', 'RMG-Py_and_Arkane_Documentation.tex', u'RMG-Py and Arkane Documentation',
u'William H. Green, Richard H. West, and the RMG Team', 'manual'),
('latex-api', 'RMG-Py_API_Reference.tex', u'RMG-Py API Reference',
u'William H. Green, Richard H. West, and the RMG Team', 'manual'),
diff --git a/documentation/source/latex-rmg.rst b/documentation/source/latex-rmg.rst
index 133f1ee571..8bdecad588 100644
--- a/documentation/source/latex-rmg.rst
+++ b/documentation/source/latex-rmg.rst
@@ -11,21 +11,21 @@ steps using a general understanding of how molecules react. This documentation i
+=============================================+========================================================================================+
| analyze models & search databases | `RMG website resources `__ (no download needed) |
+---------------------------------------------+----------------------------------------------------------------------------------------+
-| make transition state theory calculations | Run Cantherm with the Canterm User's Guide |
-+---------------------------------------------+----------------------------------------------------------------------------------------+
| create mechanisms automatically | Download RMG with the RMG User's Guide |
+---------------------------------------------+----------------------------------------------------------------------------------------+
+| make transition state theory calculations | Run Arkane after downloading RMG. See the Arkane User's Guide |
++---------------------------------------------+----------------------------------------------------------------------------------------+
| post an issue with RMG | `GitHub issues page `__ |
+---------------------------------------------+----------------------------------------------------------------------------------------+
-| contribute to RMG project | `RMG developer's wiki `__ |
+| contribute to the RMG project | `RMG developer's wiki `__ |
+---------------------------------------------+----------------------------------------------------------------------------------------+
-CanTherm is developed and distributed as part of RMG-Py, but can be used as a stand-alone
+Arkane is developed and distributed as part of RMG-Py, but can be used as a stand-alone
application for Thermochemistry, Transition State Theory, and Master Equation chemical kinetics
calculations. Its user guide is also included.
The last section of this documentation covers some of the more in depth theory behind
-RMG and CanTherm.
+RMG and Arkane.
Please visit http://reactionmechanismgenerator.github.io/RMG-Py/
for the most up to date documentation and source code. You may refer to the separate *RMG-Py API Reference*
@@ -35,6 +35,6 @@ document to view the details of RMG-Py's modules and subpackages.
:maxdepth: 2
users/rmg/index
- users/cantherm/index
+ users/arkane/index
theory/index
diff --git a/documentation/source/reference/arkane/gaussianlog.rst b/documentation/source/reference/arkane/gaussianlog.rst
new file mode 100644
index 0000000000..2575816a7e
--- /dev/null
+++ b/documentation/source/reference/arkane/gaussianlog.rst
@@ -0,0 +1,5 @@
+***********************************
+arkane.gaussian.GaussianLog
+***********************************
+
+.. autoclass:: arkane.gaussian.GaussianLog
diff --git a/documentation/source/reference/cantherm/index.rst b/documentation/source/reference/arkane/index.rst
similarity index 80%
rename from documentation/source/reference/cantherm/index.rst
rename to documentation/source/reference/arkane/index.rst
index a611c0be46..2df74466bf 100644
--- a/documentation/source/reference/cantherm/index.rst
+++ b/documentation/source/reference/arkane/index.rst
@@ -1,11 +1,11 @@
-********************************
-CanTherm (:mod:`rmgpy.cantherm`)
-********************************
+****************************
+Arkane (:mod:`arkane`)
+****************************
-.. module:: rmgpy.cantherm
+.. module:: arkane
-The :mod:`rmgpy.cantherm` subpackage contains the main functionality for
-CanTherm, a tool for computing thermodynamic and kinetic properties of chemical
+The :mod:`arkane` subpackage contains the main functionality for
+Arkane, a tool for computing thermodynamic and kinetic properties of chemical
species and reactions.
@@ -13,7 +13,7 @@ species and reactions.
Reading Gaussian log files
==========================
-.. currentmodule:: rmgpy.cantherm.gaussian
+.. currentmodule:: arkane.gaussian
=============================== ================================================
Class Description
@@ -26,7 +26,7 @@ Class Description
Reading Q-Chem log files
========================
-.. currentmodule:: rmgpy.cantherm.qchem
+.. currentmodule:: arkane.qchem
=============================== ================================================
Class Description
@@ -39,7 +39,7 @@ Class Description
Reading Molpro log files
========================
-.. currentmodule:: rmgpy.cantherm.molpro
+.. currentmodule:: arkane.molpro
=============================== ================================================
Class Description
@@ -52,12 +52,12 @@ Class Description
Input
=====
-.. currentmodule:: rmgpy.cantherm.input
+.. currentmodule:: arkane.input
=============================== ================================================
Function Description
=============================== ================================================
-:func:`loadInputFile` Load a CanTherm job input file
+:func:`loadInputFile` Load an Arkane job input file
=============================== ================================================
@@ -65,12 +65,12 @@ Function Description
Job classes
===========
-.. currentmodule:: rmgpy.cantherm
+.. currentmodule:: arkane
=============================== ================================================
Class Description
=============================== ================================================
-:class:`CanTherm` Main class for CanTherm jobs
+:class:`Arkane` Main class for Arkane jobs
:class:`StatMechJob` Compute the molecular degrees of freedom for a molecular conformation
:class:`ThermoJob` Compute the thermodynamic properties of a species
:class:`KineticsJob` Compute the high pressure-limit rate coefficient for a reaction using transition state theory
diff --git a/documentation/source/reference/arkane/input.rst b/documentation/source/reference/arkane/input.rst
new file mode 100644
index 0000000000..a00f61eadf
--- /dev/null
+++ b/documentation/source/reference/arkane/input.rst
@@ -0,0 +1,5 @@
+******************
+Arkane input files
+******************
+
+.. autofunction:: arkane.input.loadInputFile
diff --git a/documentation/source/reference/arkane/kinetics.rst b/documentation/source/reference/arkane/kinetics.rst
new file mode 100644
index 0000000000..59bf7a7a63
--- /dev/null
+++ b/documentation/source/reference/arkane/kinetics.rst
@@ -0,0 +1,5 @@
+**************************
+arkane.KineticsJob
+**************************
+
+.. autoclass:: arkane.KineticsJob
diff --git a/documentation/source/reference/arkane/main.rst b/documentation/source/reference/arkane/main.rst
new file mode 100644
index 0000000000..8269acdd21
--- /dev/null
+++ b/documentation/source/reference/arkane/main.rst
@@ -0,0 +1,5 @@
+***********************
+arkane.Arkane
+***********************
+
+.. autoclass:: arkane.Arkane
diff --git a/documentation/source/reference/arkane/molprolog.rst b/documentation/source/reference/arkane/molprolog.rst
new file mode 100644
index 0000000000..162e48cc52
--- /dev/null
+++ b/documentation/source/reference/arkane/molprolog.rst
@@ -0,0 +1,5 @@
+*******************************
+arkane.molpro.MolproLog
+*******************************
+
+.. autoclass:: arkane.molpro.MolproLog
diff --git a/documentation/source/reference/arkane/output.rst b/documentation/source/reference/arkane/output.rst
new file mode 100644
index 0000000000..96d178f55e
--- /dev/null
+++ b/documentation/source/reference/arkane/output.rst
@@ -0,0 +1,7 @@
+********************
+Saving Arkane output
+********************
+
+.. autofunction:: arkane.output.prettify
+
+.. autoclass:: arkane.output.PrettifyVisitor
diff --git a/documentation/source/reference/arkane/pdep.rst b/documentation/source/reference/arkane/pdep.rst
new file mode 100644
index 0000000000..686bcbc8a2
--- /dev/null
+++ b/documentation/source/reference/arkane/pdep.rst
@@ -0,0 +1,5 @@
+**********************************
+arkane.PressureDependenceJob
+**********************************
+
+.. autoclass:: arkane.PressureDependenceJob
diff --git a/documentation/source/reference/arkane/qchemlog.rst b/documentation/source/reference/arkane/qchemlog.rst
new file mode 100644
index 0000000000..0019227703
--- /dev/null
+++ b/documentation/source/reference/arkane/qchemlog.rst
@@ -0,0 +1,5 @@
+*****************************
+arkane.qchem.QchemLog
+*****************************
+
+.. autoclass:: arkane.qchem.QChemLog
diff --git a/documentation/source/reference/arkane/statmech.rst b/documentation/source/reference/arkane/statmech.rst
new file mode 100644
index 0000000000..d75f99770e
--- /dev/null
+++ b/documentation/source/reference/arkane/statmech.rst
@@ -0,0 +1,5 @@
+**************************
+arkane.StatMechJob
+**************************
+
+.. autoclass:: arkane.StatMechJob
diff --git a/documentation/source/reference/arkane/thermo.rst b/documentation/source/reference/arkane/thermo.rst
new file mode 100644
index 0000000000..7ed1ec223f
--- /dev/null
+++ b/documentation/source/reference/arkane/thermo.rst
@@ -0,0 +1,5 @@
+************************
+arkane.ThermoJob
+************************
+
+.. autoclass:: arkane.ThermoJob
diff --git a/documentation/source/reference/cantherm/gaussianlog.rst b/documentation/source/reference/cantherm/gaussianlog.rst
deleted file mode 100644
index c8a1624b20..0000000000
--- a/documentation/source/reference/cantherm/gaussianlog.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-***********************************
-rmgpy.cantherm.gaussian.GaussianLog
-***********************************
-
-.. autoclass:: rmgpy.cantherm.gaussian.GaussianLog
diff --git a/documentation/source/reference/cantherm/input.rst b/documentation/source/reference/cantherm/input.rst
deleted file mode 100644
index bba557257f..0000000000
--- a/documentation/source/reference/cantherm/input.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-********************
-CanTherm input files
-********************
-
-.. autofunction:: rmgpy.cantherm.input.loadInputFile
diff --git a/documentation/source/reference/cantherm/kinetics.rst b/documentation/source/reference/cantherm/kinetics.rst
deleted file mode 100644
index fe158f16cc..0000000000
--- a/documentation/source/reference/cantherm/kinetics.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-**************************
-rmgpy.cantherm.KineticsJob
-**************************
-
-.. autoclass:: rmgpy.cantherm.KineticsJob
diff --git a/documentation/source/reference/cantherm/main.rst b/documentation/source/reference/cantherm/main.rst
deleted file mode 100644
index 573335f17c..0000000000
--- a/documentation/source/reference/cantherm/main.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-***********************
-rmgpy.cantherm.CanTherm
-***********************
-
-.. autoclass:: rmgpy.cantherm.CanTherm
diff --git a/documentation/source/reference/cantherm/molprolog.rst b/documentation/source/reference/cantherm/molprolog.rst
deleted file mode 100644
index 29c1b0bb64..0000000000
--- a/documentation/source/reference/cantherm/molprolog.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-*******************************
-rmgpy.cantherm.molpro.MolproLog
-*******************************
-
-.. autoclass:: rmgpy.cantherm.molpro.MolproLog
diff --git a/documentation/source/reference/cantherm/output.rst b/documentation/source/reference/cantherm/output.rst
deleted file mode 100644
index c587804d6c..0000000000
--- a/documentation/source/reference/cantherm/output.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-**********************
-Saving CanTherm output
-**********************
-
-.. autofunction:: rmgpy.cantherm.output.prettify
-
-.. autoclass:: rmgpy.cantherm.output.PrettifyVisitor
diff --git a/documentation/source/reference/cantherm/pdep.rst b/documentation/source/reference/cantherm/pdep.rst
deleted file mode 100644
index 25c6bbfd0e..0000000000
--- a/documentation/source/reference/cantherm/pdep.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-************************************
-rmgpy.cantherm.PressureDependenceJob
-************************************
-
-.. autoclass:: rmgpy.cantherm.PressureDependenceJob
diff --git a/documentation/source/reference/cantherm/qchemlog.rst b/documentation/source/reference/cantherm/qchemlog.rst
deleted file mode 100644
index add3620bc9..0000000000
--- a/documentation/source/reference/cantherm/qchemlog.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-*****************************
-rmgpy.cantherm.qchem.QchemLog
-*****************************
-
-.. autoclass:: rmgpy.cantherm.qchem.QchemLog
diff --git a/documentation/source/reference/cantherm/statmech.rst b/documentation/source/reference/cantherm/statmech.rst
deleted file mode 100644
index 485261b2c1..0000000000
--- a/documentation/source/reference/cantherm/statmech.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-**************************
-rmgpy.cantherm.StatMechJob
-**************************
-
-.. autoclass:: rmgpy.cantherm.StatMechJob
diff --git a/documentation/source/reference/cantherm/thermo.rst b/documentation/source/reference/cantherm/thermo.rst
deleted file mode 100644
index d9bbd1066b..0000000000
--- a/documentation/source/reference/cantherm/thermo.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-************************
-rmgpy.cantherm.ThermoJob
-************************
-
-.. autoclass:: rmgpy.cantherm.ThermoJob
diff --git a/documentation/source/reference/index.rst b/documentation/source/reference/index.rst
index 57ee3cf28c..11d7e5efa9 100644
--- a/documentation/source/reference/index.rst
+++ b/documentation/source/reference/index.rst
@@ -11,7 +11,7 @@ a component to learn more and view its API.
======================= ========================================================
Module Description
======================= ========================================================
-:mod:`rmgpy.cantherm` Computing chemical properties from quantum chemistry calculations
+:mod:`arkane` Computing chemical properties from quantum chemistry calculations
:mod:`rmgpy.chemkin` Reading and writing models in Chemkin format
:mod:`rmgpy.constants` Physical constants
:mod:`rmgpy.data` Working with the RMG database
@@ -32,7 +32,7 @@ Module Description
.. toctree::
:hidden:
- cantherm/index
+ arkane/index
chemkin/index
constants
data/index
diff --git a/documentation/source/reference/molecule/atomtype.rst b/documentation/source/reference/molecule/atomtype.rst
index 765419ad36..98ad01d979 100644
--- a/documentation/source/reference/molecule/atomtype.rst
+++ b/documentation/source/reference/molecule/atomtype.rst
@@ -60,7 +60,6 @@ Atom type Description
``N5dc`` charged nitrogen atom with no lone pairs (valance 5), one double bond and up to two single bonds
``N5ddc`` charged nitrogen atom with with no lone pairs (valance 5) and two double bonds
``N5dddc`` charged nitrogen atom with with no lone pairs (valance 5) and three double bonds
-``N5t`` nitrogen atom with with no lone pairs (valance 5), one triple bond and up to two single bonds
``N5tc`` charged nitrogen atom with with no lone pairs (valance 5), one triple bond and up to one single bond
``N5b`` nitrogen atom with with no lone pairs (valance 5) and two benzene bonds (one of the lone pairs also participates in the aromatic bond) and up to one single bond
``N5bd`` nitrogen atom with with no lone pairs (valance 5), two benzene bonds, and one double bond
diff --git a/documentation/source/theory/index.rst b/documentation/source/theory/index.rst
index fb4fb4598c..4f6553b785 100644
--- a/documentation/source/theory/index.rst
+++ b/documentation/source/theory/index.rst
@@ -2,7 +2,7 @@
Theory Guide
************
-The theoretical foundations to some of the parts of RMG and Cantherm
+The theoretical foundations to some of the parts of RMG and Arkane
are described in greater detail in these sections.
.. toctree::
diff --git a/documentation/source/users/cantherm/acetyl+O2.jpg b/documentation/source/users/arkane/acetyl+O2.jpg
similarity index 100%
rename from documentation/source/users/cantherm/acetyl+O2.jpg
rename to documentation/source/users/arkane/acetyl+O2.jpg
diff --git a/documentation/source/users/cantherm/credits.rst b/documentation/source/users/arkane/credits.rst
similarity index 79%
rename from documentation/source/users/cantherm/credits.rst
rename to documentation/source/users/arkane/credits.rst
index 4be18b4a6b..b499ea7a5a 100644
--- a/documentation/source/users/cantherm/credits.rst
+++ b/documentation/source/users/arkane/credits.rst
@@ -9,5 +9,5 @@ Credits
The author acknowledges the Green group for helping put the software through its
paces and providing suggestions for its improvement.
-CanTherm is based upon work supported by the `King Abdullah University of Science
+Arkane is based upon work supported by the `King Abdullah University of Science
and Technology `_.
diff --git a/documentation/source/users/cantherm/faq.rst b/documentation/source/users/arkane/faq.rst
similarity index 93%
rename from documentation/source/users/cantherm/faq.rst
rename to documentation/source/users/arkane/faq.rst
index f61444bab4..496f3384b8 100644
--- a/documentation/source/users/cantherm/faq.rst
+++ b/documentation/source/users/arkane/faq.rst
@@ -8,11 +8,11 @@ reaction networks?**
Yes. The following is an illustrative list of such packages:
=============== =============== =============== ================================
-Name Method(s) Language Author(s)
+Name Method(s) Language Author(s)
=============== =============== =============== ================================
`MultiWell`_ stochastic Fortran J.\ R. Barker *et al*
-`UNIMOL`_ CSE Fortran R.\ G. Gilbert, S. C. Smith
-`ChemRate`_ CSE C++ [#f1]_ V.\ Mokrushin, W. Tsang
+`UNIMOL`_ CSE Fortran R.\ G. Gilbert, S. C. Smith
+`ChemRate`_ CSE C++ [#f1]_ V.\ Mokrushin, W. Tsang
`Variflex`_ CSE Fortran S.\ J. Klippenstein *et al*
`MESMER`_ CSE (+ RS) C++ S.\ H. Robertson *et al*
CHEMDIS [#f2]_ MSC Fortran A.\ Y. Chang, J. W. Bozzelli, A. M. Dean
@@ -35,5 +35,3 @@ data and physical quantities.
.. _ChemRate: http://www.mokrushin.com/ChemRate/chemrate.html
.. _Variflex: http://ftp.tcg.anl.gov/pub/variflex/Summary.vrfx
.. _MESMER: http://sourceforge.net/projects/mesmer
-
-
diff --git a/documentation/source/users/cantherm/index.rst b/documentation/source/users/arkane/index.rst
similarity index 66%
rename from documentation/source/users/cantherm/index.rst
rename to documentation/source/users/arkane/index.rst
index d5ccb13d81..c738d9059d 100644
--- a/documentation/source/users/cantherm/index.rst
+++ b/documentation/source/users/arkane/index.rst
@@ -1,23 +1,23 @@
-.. _canthermusersguide:
+.. _arkaneusersguide:
-*********************
-CanTherm User's Guide
-*********************
+*******************
+Arkane User's Guide
+*******************
.. toctree::
:maxdepth: 2
:numbered:
-
+
introduction
installation
input
input_pdep
+ input_explorer
running
output
faq
credits
-
+
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
-
diff --git a/documentation/source/users/cantherm/input.rst b/documentation/source/users/arkane/input.rst
similarity index 75%
rename from documentation/source/users/cantherm/input.rst
rename to documentation/source/users/arkane/input.rst
index 26fa8f54e1..4e08df0179 100644
--- a/documentation/source/users/cantherm/input.rst
+++ b/documentation/source/users/arkane/input.rst
@@ -5,15 +5,16 @@ Creating Input Files for Thermodynamics and High-Pressure Limit Kinetics Computa
Syntax
======
-The format of CanTherm input files is based on Python syntax. In fact, CanTherm
-input files are valid Python source code, and this is used to facilitate
-reading of the file.
+The format of Arkane input files is based on Python syntax. In fact, Arkane
+input files are valid Python source code, and this is used to facilitate
+reading of the file.
-Each section is made up of one or more function calls, where parameters are
+Each section is made up of one or more function calls, where parameters are
specified as text strings, numbers, or objects. Text strings must be wrapped in
either single or double quotes.
-The following is a list of all the components of a CanTherm input file for thermodynamics and high-pressure limit kinetics computations:
+The following is a list of all the components of a Arkane input file for thermodynamics and high-pressure limit kinetics
+computations:
=========================== ====================================================================
Component Description
@@ -38,10 +39,10 @@ Model Chemistry
The first item in the input file should be a ``modelChemistry`` assignment
with a string describing the model chemistry.
-CanTherm uses this information to adjust the computed energies to the usual gas-phase reference
+Arkane uses this information to adjust the computed energies to the usual gas-phase reference
states by applying atom, bond and spin-orbit coupling energy corrections. This is particularly
important for ``thermo()`` calculations (see below). Note that the user must specify under the
-``species()`` function the type and number of bonds for CanTherm to apply these corrections.
+``species()`` function the type and number of bonds for Arkane to apply these corrections.
The example below specifies CBS-QB3 as the model chemistry::
modelChemistry = "CBS-QB3"
@@ -65,6 +66,7 @@ for a given model chemistry.
Model Chemistry AEC BC SOC Freq Scale Supported Elements
================================================ ===== ==== ==== ========== ====================
``'CBS-QB3'`` v v v v (0.990) H, C, N, O, P, S
+``'CBS-QB3-Paraskevas'`` v v v v (0.990) H, C, N, O, P, S
``'G3'`` v v H, C, N, O, P, S
``'M08SO/MG3S*'`` v v H, C, N, O, P, S
``'M06-2X/cc-pVTZ'`` v v v (0.955) H, C, N, O, P, S
@@ -78,7 +80,7 @@ Model Chemistry AEC BC SOC Freq Scale Supp
``'CCSD(T)-F12/cc-pVnZ-F12'``, *n = D,T,Q* v v v v H, C, N, O, S
``'CCSD(T)-F12/cc-pVDZ-F12_noscale'`` v v H, C, N, O
``'CCSD(T)-F12/cc-pCVnZ-F12'``, *n = D,T,Q* v v v H, C, N, O
-``'CCSD(T)-F12/aug-cc-pVnZ'``, *n = D,T,Q* v v v H, C, N, O
+``'CCSD(T)-F12/aug-cc-pVnZ'``, *n = D,T,Q* v v v H, C, N, O, S
``'CCSD(T)-F12/cc-pVTZ-f12(-pp)``, v v H, C, N, O, S, I
``'CCSD(T)/aug-cc-pVTZ(-pp)``, v v H, C, O, S, I
``'B-CCSD(T)-F12/cc-pVnZ-F12'``, *n = D,T,Q* v v H, C, N, O, S
@@ -91,11 +93,15 @@ Model Chemistry AEC BC SOC Freq Scale Supp
``'BMK/6-311G(2d,d,p)'`` v v v H, C, N, O, P, S
``'B3LYP/6-311+G(3df,2p)'`` v v v v (0.967) H, C, N, O, P, S
``'B3LYP/6-31G**'`` v v v (0.961) H, C, O, S
+``'MRCI+Davidson/aug-cc-pV(T+d)Z'`` v v H, C, N, O, S
+``'wb97x-d/aug-cc-pvtz'`` v v H, C, N, O
================================================ ===== ==== ==== ========== ====================
Notes:
+- The ``'CBS-QB3-Paraskevas'`` model chemistry is identical to ``'CBS-QB3'`` except for BCs for C/H/O bonds, which are from Paraskevas et al. (DOI: 10.1002/chem.201301381) instead of Petersson et al. (DOI: 10.1063/1.477794). Beware, combining BCs from different sources may lead to unforeseen results.
- In ``'M08SO/MG3S*'`` the grid size used in the [QChem] electronic structure calculation utilizes 75 radial points and 434 angular points.
+
- Refer to paper by Goldsmith et al. (*Goldsmith, C. F.; Magoon, G. R.; Green, W. H., Database of Small Molecule Thermochemistry for Combustion. J. Phys. Chem. A 2012, 116, 9033-9057*) for definition of ``'Klip_2'`` (*QCI(tz,qz)*) and ``'Klip_3'`` (*QCI(dz,qz)*).
If a model chemistry other than the ones in the above table is used, then the user should supply
@@ -103,7 +109,7 @@ the corresponding atomic energies (using ``atomEnergies``) to get meaningful res
corrections would not be applied in this case.
If a model chemistry or atomic energies are not available, then a kinetics job can still be run by
-setting ``useAtomCorrections`` to ``False``, in which case Cantherm will not raise an error for
+setting ``useAtomCorrections`` to ``False``, in which case Arkane will not raise an error for
unknown elements. The user should be aware that the resulting energies and thermodynamic quantities
in the output file will not be meaningful, but kinetics and equilibrium constants will still be
correct.
@@ -124,7 +130,8 @@ Species
Each species of interest must be specified using a ``species()`` function, which can be input in two different ways,
discussed in the separate subsections below:
-1. By pointing to the output files of quantum chemistry calculations, which CanTherm will parse for the necessary molecular properties
+1. By pointing to the output files of quantum chemistry calculations, which Arkane will parse for the necessary
+molecular properties
2. By directly entering the molecular properties
Within a single input file, both Option #1 and #2 may be used for different species.
@@ -165,18 +172,21 @@ atom corrections can be turned off by setting ``useAtomCorrections`` to ``False`
The ``bond`` parameter is used to apply bond corrections (BC) for a given ``modelChemistry``.
-Allowed bond types for the ``bonds`` parameter are, e.g., ``'C-H'``, ``'C-C'``, ``'C=C'``, ``'N-O'``, ``'C=S'``, ``'O=O'``, ``'C#N'``...
+Allowed bond types for the ``bonds`` parameter are, e.g., ``'C-H'``, ``'C-C'``, ``'C=C'``, ``'N-O'``, ``'C=S'``,
+``'O=O'``, ``'C#N'``...
``'O=S=O'`` is also allowed.
-The order of elements in the bond correction label is not important. Use ``-``/``=``/``#`` to denote a single/double/triple bond, respectively. For example, for formaldehyde we would write::
+The order of elements in the bond correction label is not important. Use ``-``/``=``/``#`` to denote a
+single/double/triple bond, respectively. For example, for formaldehyde we would write::
bonds = {'C=O': 1, 'C-H': 2}
The parameter ``linear`` only needs to be specified as either ``True`` or ``False``. The parameters ``externalSymmetry``,
``spinMultiplicity`` and ``opticalIsomers`` only accept integer values.
-Note that ``externalSymmetry`` corresponds to the number of unique ways in which the species may be rotated about an axis (or multiple axes)
-and still be indistinguishable from its starting orientation (reflection across a mirror plane does not count as rotation about an axis).
+Note that ``externalSymmetry`` corresponds to the number of unique ways in which the species may be rotated about an
+axis (or multiple axes) and still be indistinguishable from its starting orientation (reflection across a mirror plane
+does not count as rotation about an axis).
For ethane, we would write::
linear = False
@@ -196,11 +206,12 @@ they can specify the path to a quantum chemistry calculation output file that co
'Klip_2': -79.64199436,
}
-In this example, the ``CBS-QB3`` energy is obtained from a Gaussian log file, while the ``Klip_2`` energy is specified directly.
-The energy used will depend on what ``modelChemistry`` was specified in the input file. CanTherm can parse the energy from
-a Gaussian, Molpro, or QChem log file, all using the same ``Log`` class, as shown below.
+In this example, the ``CBS-QB3`` energy is obtained from a Gaussian log file, while the ``Klip_2`` energy is specified
+directly. The energy used will depend on what ``modelChemistry`` was specified in the input file. Arkane can parse the
+energy from a Gaussian, Molpro, or QChem log file, all using the same ``Log`` class, as shown below.
-The input to the remaining parameters, ``geometry``, ``frequencies`` and ``rotors``, will depend on if hindered/free rotors are included.
+The input to the remaining parameters, ``geometry``, ``frequencies`` and ``rotors``, will depend on if hindered/free
+rotors are included.
Both cases are described below.
Without Hindered/Free Rotors
@@ -214,8 +225,9 @@ For example::
frequencies = Log('ethane_freq.log')
-In summary, in order to specify the molecular properties of a species by parsing the output of quantum chemistry calculations, without any hindered/free rotors,
-the ``species()`` function in the input file should look like the following example::
+In summary, in order to specify the molecular properties of a species by parsing the output of quantum chemistry
+calculations, without any hindered/free rotors, the ``species()`` function in the input file should look like the
+following example::
species('C2H6', 'C2H6.py')
@@ -245,19 +257,21 @@ and the species input file (``C2H6.py`` in the example above) should look like t
With Hindered/Free Rotors
~~~~~~~~~~~~~~~~~~~~~~~~~
-In this case, ``geometry``, ``frequencies`` and ``rotors`` need to be specified. The ``geometry`` and ``frequencies`` parameters
-must point to the **same** quantum chemistry calculation output file in this case.
+In this case, ``geometry``, ``frequencies`` and ``rotors`` need to be specified. The ``geometry`` and ``frequencies``
+parameters must point to the **same** quantum chemistry calculation output file in this case.
For example::
geometry = Log('ethane_freq.log')
frequencies = Log('ethane_freq.log')
-The ``geometry/frequencies`` log file must contain both the optimized geometry and the Hessian (matrix of partial second derivatives of potential energy surface,
-also referred to as the force constant matrix), which is used to calculate the harmonic oscillator frequencies. If Gaussian is used
-to generate the ``geometry/frequencies`` log file, the Gaussian input file must contain the keyword ``iop(7/33=1)``, which forces Gaussian to
-output the complete Hessian. Because the ``iop(7/33=1)`` option is only applied to the first part of the Gaussian job, the job
-must be a ``freq`` job only (as opposed to an ``opt freq`` job or a composite method job like ``cbs-qb3``, which only do the ``freq`` calculation after the optimization).
+The ``geometry/frequencies`` log file must contain both the optimized geometry and the Hessian (matrix of partial
+second derivatives of potential energy surface, also referred to as the force constant matrix), which is used to
+calculate the harmonic oscillator frequencies. If Gaussian is used to generate the ``geometry/frequencies`` log file,
+the Gaussian input file must contain the keyword ``iop(7/33=1)``, which forces Gaussian to output the complete Hessian.
+Because the ``iop(7/33=1)`` option is only applied to the first part of the Gaussian job, the job must be a ``freq``
+job only (as opposed to an ``opt freq`` job or a composite method job like ``cbs-qb3``, which only do the ``freq``
+calculation after the optimization).
Therefore, the proper workflow for generating the ``geometry/frequencies`` log file using Gaussian is:
1. Perform a geometry optimization.
@@ -265,7 +279,8 @@ Therefore, the proper workflow for generating the ``geometry/frequencies`` log f
The output of step 2 is the correct log file to use for ``geometry/frequencies``.
-``rotors`` is a list of :class:`HinderedRotor()` and/or :class:`FreeRotor()` objects. Each :class:`HinderedRotor()` object requires the following parameters:
+``rotors`` is a list of :class:`HinderedRotor()` and/or :class:`FreeRotor()` objects. Each :class:`HinderedRotor()`
+object requires the following parameters:
====================== ==========================================================================================
Parameter Description
@@ -291,23 +306,29 @@ scan in the following format::
The ``Energy`` can be in units of ``kJ/mol``, ``J/mol``, ``cal/mol``, ``kcal/mol``, ``cm^-1`` or ``hartree``.
-The ``symmetry`` parameter will usually equal either 1, 2 or 3. Below are examples of internal rotor scans with these commonly encountered symmetry numbers. First, ``symmetry = 3``:
+The ``symmetry`` parameter will usually equal either 1, 2 or 3. Below are examples of internal rotor scans with these
+commonly encountered symmetry numbers. First, ``symmetry = 3``:
.. image:: symmetry_3_example.png
-Internal rotation of a methyl group is a common example of a hindered rotor with ``symmetry = 3``, such as the one above. As shown, all three minima (and maxima) have identical energies, hence ``symmetry = 3``.
+Internal rotation of a methyl group is a common example of a hindered rotor with ``symmetry = 3``, such as the one
+above. As shown, all three minima (and maxima) have identical energies, hence ``symmetry = 3``.
-Similarly, if there are only two minima along the internal rotor scan, and both have identical energy, then ``symmetry = 2``, as in the example below:
+Similarly, if there are only two minima along the internal rotor scan, and both have identical energy, then
+``symmetry = 2``, as in the example below:
.. image:: symmetry_2_example.png
-If any of the energy minima in an internal rotor scan are not identical, then the rotor has no symmetry (``symmetry = 1``), as in the example below:
+If any of the energy minima in an internal rotor scan are not identical, then the rotor has no symmetry
+(``symmetry = 1``), as in the example below:
.. image:: symmetry_1_example.png
-For the example above there are 3 local energy minima, 2 of which are identical to each other. However, the 3rd minima is different from the other 2, therefore this internal rotor has no symmetry.
+For the example above there are 3 local energy minima, 2 of which are identical to each other. However, the 3rd minima
+is different from the other 2, therefore this internal rotor has no symmetry.
-For practical purposes, when determining the symmetry number for a given hindered rotor simply check if the internal rotor scan looks like the ``symmetry = 2`` or ``3`` examples above. If it doesn’t, then most likely ``symmetry = 1``.
+For practical purposes, when determining the symmetry number for a given hindered rotor simply check if the internal
+rotor scan looks like the ``symmetry = 2`` or ``3`` examples above. If it doesn’t, then most likely ``symmetry = 1``.
Each :class:`FreeRotor()` object requires the following parameters:
@@ -319,13 +340,15 @@ Parameter Description
``symmetry`` The symmetry number for the torsional rotation (number of indistinguishable energy minima)
====================== =========================================================
-Note that a ``scanLog`` is not needed for :class:`FreeRotor()` because it is assumed that there is no barrier to internal rotation.
-Modeling an internal rotation as a :class:`FreeRotor()` puts an upper bound on the impact of that rotor on the species's overall partition function.
-Modeling the same internal rotation as a Harmonic Oscillator (default if it is not specifed as either a :class:`FreeRotor()` or :class:`HinderedRotor()`)
-puts a lower bound on the impact of that rotor on the species's overall partition function. Modeling the internal rotation as a :class:`HinderedRotor()` should fall
-in between these two extremes.
+Note that a ``scanLog`` is not needed for :class:`FreeRotor()` because it is assumed that there is no barrier to
+internal rotation. Modeling an internal rotation as a :class:`FreeRotor()` puts an upper bound on the impact of that
+rotor on the species's overall partition function. Modeling the same internal rotation as a Harmonic Oscillator
+(default if it is not specifed as either a :class:`FreeRotor()` or :class:`HinderedRotor()`) puts a lower bound on the
+impact of that rotor on the species's overall partition function. Modeling the internal rotation as a
+:class:`HinderedRotor()` should fall in between these two extremes.
-To summarize, the species input file with hindered/free rotors should look like the following example (different options for specifying the same ``rotors`` entry are commented out)::
+To summarize, the species input file with hindered/free rotors should look like the following example (different options
+for specifying the same ``rotors`` entry are commented out)::
bonds = {
'C-C': 1,
@@ -360,11 +383,12 @@ Note that the atom labels identified within the rotor section should correspond
Option #2: Directly Enter Molecular Properties
----------------------------------------------
-While it is usually more convenient to have CanTherm parse molecular properties from the output of quantum chemistry calculations
-(see `Option #1: Automatically Parse Quantum Chemistry Calculation Output`_) there are instances where an output file is not available
-and it is more convenient for the user to directly enter the molecular properties. This is the case, for example, if the user would like to use
-calculations from literature, where the final calculated molecular properties are often reported in a table (e.g., vibrational frequencies, rotational constants),
-but the actual output files of the underlying quantum chemistry calculations are rarely provided.
+While it is usually more convenient to have Arkane parse molecular properties from the output of quantum chemistry
+calculations (see `Option #1: Automatically Parse Quantum Chemistry Calculation Output`_) there are instances where an
+output file is not available and it is more convenient for the user to directly enter the molecular properties. This is
+the case, for example, if the user would like to use calculations from literature, where the final calculated molecular
+properties are often reported in a table (e.g., vibrational frequencies, rotational constants), but the actual output
+files of the underlying quantum chemistry calculations are rarely provided.
For this option, there are a number of required parameters associated with the ``species()`` function
@@ -376,24 +400,39 @@ Parameter Required? Description
``modes`` yes The molecular degrees of freedom (see below)
``spinMultiplicity`` yes The ground-state spin multiplicity (degeneracy), sets to 1 by default if not used
``opticalIsomers`` yes The number of optical isomers of the species, sets to 1 by default if not used
+``reactive`` only bath gases Boolean indicating whether the molecule reacts, set to ``False`` for bath gases. default is ``True``
======================= =========================== ====================================
-The ``label`` parameter should be set to a string with the desired name for the species, which can be reference later in the input file. ::
+The ``label`` parameter should be set to a string with the desired name for the species, which can be reference later in
+the input file. ::
label = 'C2H6'
-The ``E0`` ground state 0 K enthalpy of formation (including zero-point energy) should be given in the quantity format ``(value, 'units')``, using units of either ``kJ/mol``, ``kcal/mol``, ``J/mol``, or ``cal/mol``: ::
+The ``E0`` ground state 0 K enthalpy of formation (including zero-point energy) should be given in the quantity format
+``(value, 'units')``, using units of either ``kJ/mol``, ``kcal/mol``, ``J/mol``, or ``cal/mol``: ::
E0 = (100.725, 'kJ/mol')
-Note that if CanTherm is being used to calculate the thermochemistry of the species, it is critical that the value of ``E0`` is consistent with the
-definition above (0 K enthalpy of formation with zero-point energy). However, if the user is only interested in kinetics, ``E0`` can be defined on any
-arbitrary absolute energy scale, as long as the correct relative energies between various ``species()`` and ``transitionState()`` are maintained. For example,
-it is common in literature for the energy of some reactant(s) to be arbitrarily defined as zero, and the energies of all transition states, intermediates and products
-are reported relative to that.
+Note that if Arkane is being used to calculate the thermochemistry of the species, it is critical that the value of
+``E0`` is consistent with the definition above (0 K enthalpy of formation with zero-point energy). However, if the user
+is only interested in kinetics, ``E0`` can be defined on any arbitrary absolute energy scale, as long as the correct
+relative energies between various ``species()`` and ``transitionState()`` are maintained. For example, it is common in
+literature for the energy of some reactant(s) to be arbitrarily defined as zero, and the energies of all transition
+states, intermediates and products are reported relative to that.
Also note that the value of ``E0`` provided here will be used directly, i.e., no atom or bond corrections will be applied.
+If you want Cantherm to correct for zero point energy, you can either just place
+the raw units in Hartree (as if it were read directly from quantum):
+
+ E0 = 547.6789753223456
+
+Or you can add a third argument to the Quantity specified whether zero-point
+energy is included or not:
+
+ E0 = (95.1, 'kJ/mol', 'E0') # when ZPE is not included
+ E0 = (95.1, 'kJ/mol', 'E0-ZPE') # when ZPE is already included
+
When specifying the ``modes`` parameter, define a list
with the following types of degrees of freedom. To understand how to define these
degrees of freedom, please click on the links below:
@@ -457,7 +496,8 @@ if not used in the ``species()`` function. ::
opticalIsomers = 1
-The following is an example of a typical ``species()`` function, based on ethane (different options for specifying the same internal rotation are commented out)::
+The following is an example of a typical ``species()`` function, based on ethane (different options for specifying the
+same internal rotation are commented out)::
species(
label = 'C2H6',
@@ -496,11 +536,11 @@ The following is an example of a typical ``species()`` function, based on ethane
opticalIsomers = 1,
)
-Note that the format of the ``species()`` function above is identical to the ``conformer()`` function output by CanTherm in ``output.py``.
-Therefore, the user could directly copy the ``conformer()`` output of a CanTherm job to another CanTherm input file, change the name of the function to
-``species()`` (or ``transitionState()``, if appropriate, see next section) and run a new CanTherm job in this manner.
-This can be useful if the user wants to easily switch a ``species()`` function from Option #1 (parsing quantum chemistry calculation output)
-to Option #2 (directly enter molecular properties).
+Note that the format of the ``species()`` function above is identical to the ``conformer()`` function output by Arkane
+in ``output.py``. Therefore, the user could directly copy the ``conformer()`` output of an Arkane job to another Arkane
+input file, change the name of the function to ``species()`` (or ``transitionState()``, if appropriate, see next
+section) and run a new Arkane job in this manner. This can be useful if the user wants to easily switch a ``species()``
+function from Option #1 (parsing quantum chemistry calculation output) to Option #2 (directly enter molecular properties).
Transition State
================
@@ -515,10 +555,10 @@ The following is an example of a typical ``transitionState()`` function using Op
transitionState('TS', 'TS.py')
-Just as for a ``species()`` function, the first parameter is the label for that transition state, and the second parameter
-points to the location of another python file containing details of the transition state. This file
-will be referred to as the transition state input file, and it accepts the same parameters as the species input file described in
-`Option #1: Automatically Parse Quantum Chemistry Calculation Output`_.
+Just as for a ``species()`` function, the first parameter is the label for that transition state, and the second
+parameter points to the location of another python file containing details of the transition state. This file will be
+referred to as the transition state input file, and it accepts the same parameters as the species input file described
+in `Option #1: Automatically Parse Quantum Chemistry Calculation Output`_.
The following is an example of a typical ``transitionState()`` function using Option #2::
@@ -540,16 +580,16 @@ The following is an example of a typical ``transitionState()`` function using O
frequency = (-750.232, 'cm^-1'),
)
-The only additional parameter required for a ``transitionState()`` function as compared to a ``species()`` function is ``frequency``,
-which is the imaginary frequency of the transition state needed to account for tunneling. Refer to `Option #2: Directly Enter Molecular Properties`_
-for a more detailed description of the other parameters.
+The only additional parameter required for a ``transitionState()`` function as compared to a ``species()`` function is
+``frequency``, which is the imaginary frequency of the transition state needed to account for tunneling. Refer to
+`Option #2: Directly Enter Molecular Properties`_ for a more detailed description of the other parameters.
Reaction
========
This is only required if you wish to perform a kinetics computation.
Each reaction of interest must be specified using a ``reaction()`` function,
-which accepts the following parameters:
+which accepts the following parameters:
====================== =========================================================
Parameter Description
@@ -568,7 +608,7 @@ The following is an example of a typical reaction function::
reactants = ['H', 'C2H4'],
products = ['C2H5'],
transitionState = 'TS',
- tunneling='Eckart'
+ tunneling='Eckart'
)
Note: the quantum tunneling factor method that may be assigned is either ``'Eckart'`` or ``'Wigner'``.
@@ -576,7 +616,7 @@ Note: the quantum tunneling factor method that may be assigned is either ``'Ecka
Thermodynamics Computations
===========================
-Use a ``thermo()`` function to make CanTherm execute the thermodynamic
+Use a ``thermo()`` function to make Arkane execute the thermodynamic
parameters computatiom for a species. Pass the string label of the species
you wish to compute the thermodynamic parameters for and the type of
thermodynamics polynomial to generate (either ``'Wilhoit'`` or ``'NASA'``).
@@ -590,16 +630,16 @@ Below is a typical ``thermo()`` execution function::
Kinetics Computations
=====================
-Use a ``kinetics()`` function to make CanTherm execute the high-pressure limit kinetic
+Use a ``kinetics()`` function to make Arkane execute the high-pressure limit kinetic
parameters computation for a reaction. The ``'label'`` string must correspond to that of
a defined ``reaction()`` function. If desired, define a temperature range and number
-of temperatures at which the high-pressure rate coefficient will be tabulated and saved to
-the outupt file. The 3-parameter modified Arrhenius coefficients will automatically be fit
+of temperatures at which the high-pressure rate coefficient will be tabulated and saved to
+the outupt file. The 3-parameter modified Arrhenius coefficients will automatically be fit
to the computed rate coefficients. The quantum tunneling factor will also be displayed.
Below is a typical ``kinetics()`` function::
- kinetics(
+ kinetics(
label = 'H + C2H4 <=> C2H5',
Tmin = (400,'K'), Tmax = (1200,'K'), Tcount = 6,
)
@@ -635,17 +675,20 @@ in the ``examples`` directory.
Troubleshooting and FAQs
========================
-1) The network that CanTherm generated and the resulting pdf file show abnormally large
+1) The network that Arkane generated and the resulting pdf file show abnormally large
absolute values. What's going on?
This can happen if the number of atoms and atom types is not properly defined or consistent in your input file(s).
-CanTherm User Checklist
-========================
+Arkane User Checklist
+=====================
-Using cantherm, or any rate theory package for that matter, requires careful consideration and management of a large amount of data, files, and input parameters. As a result, it is easy to make a mistake somewhere. This checklist was made to minimize such mistakes for users:
+Using Arkane, or any rate theory package for that matter, requires careful consideration and management of a large
+amount of data, files, and input parameters. As a result, it is easy to make a mistake somewhere. This checklist was
+made to minimize such mistakes for users:
-- Do correct paths exist for pointing to the files containing the electronic energies, molecular geometries and vibrational frequencies?
+- Do correct paths exist for pointing to the files containing the electronic energies, molecular geometries and
+ vibrational frequencies?
For calculations involving pressure dependence:
@@ -653,7 +696,11 @@ For calculations involving pressure dependence:
For calculations using internal hindered rotors:
-- Did you check to make sure the rotor has a reasonable potential (e.g., visually inspect the automatically generated rotor pdf files)?
+- Did you check to make sure the rotor has a reasonable potential (e.g., visually inspect the automatically generated
+ rotor pdf files)?
- Within your input files, do all specified rotors point to the correct files?
- Do all of the atom label indices correspond to those in the file that is read by ``Log``?
-- Why do the fourier fits look so much different than the results of the ab initio potential energy scan calculations? This is likely because the initial scan energy is not at a minimum. One solution is to simply shift the potential with respect to angle so that it starts at zero and, instead of having CanTherm read a Qchem or Gaussian output file, have CanTherm point to a 'ScanLog' file. Another problem can arise when the potential at 2*pi is also not [close] to zero.
+- Why do the fourier fits look so much different than the results of the ab initio potential energy scan calculations?
+ This is likely because the initial scan energy is not at a minimum. One solution is to simply shift the potential with
+ respect to angle so that it starts at zero and, instead of having Arkane read a Qchem or Gaussian output file, have
+ Arkane point to a 'ScanLog' file. Another problem can arise when the potential at 2*pi is also not [close] to zero.
diff --git a/documentation/source/users/arkane/input_explorer.rst b/documentation/source/users/arkane/input_explorer.rst
new file mode 100644
index 0000000000..6cc8719e41
--- /dev/null
+++ b/documentation/source/users/arkane/input_explorer.rst
@@ -0,0 +1,57 @@
+*************************************************************************
+Creating Input Files for Automated Pressure Dependent Network Exploration
+*************************************************************************
+
+Syntax
+======
+
+Network exploration starts from a pressure dependent calculation job so naturally it requires an input file
+containing everything required for a pressure-dependent calculation input file. In addition all species
+blocks must have a structure input and there must be a database block in the job. At the end of the
+pressure-dependent calculation input file you append an explorer block. For example ::
+
+ explorer(
+ source=['methoxy'],
+ explore_tol=(1e-2,'s^-1'),
+ energy_tol=1e4,
+ flux_tol=1e-6,
+ )
+
+The ``source`` is a list containing either the label for a single isomer or the labels corresponding to a bimolecular
+source channel. The network is expanded starting from this starting isomer/channel.
+
+Network Exploration
+===================
+
+The ``explore_tol`` is largest acceptable total rate at which isomers inside the network isomerize to become
+isomers that are not part of the network. Network expansion is done starting from just the network source using
+values from the rest of the Arkane job when available, otherwise from RMG. It cycles through all of the
+temperature and pressure points specified for fitting in the pressure dependence job and checks the total network
+leak rate at each one. Whenever this rate is greater than ``explore_tol`` the outside isomer with the most leak is
+added to the network and reacted and the loop is flagged to cycle through all of the temperatures and pressures
+again. Once this loop is finished a network_full.py file is generated in the pdep directory that has the full
+explored network.
+
+Network Reduction
+=================
+
+``energy_tol`` and ``flux_tol`` control reduction of the full network. This is highly recommended as the full model
+will often contain many unimportant reactions. How strict you decide to set these parameters should be related
+to how much you trust the thermo and rate information being used in the job.
+
+``energy_tol`` is related to the maximum difference in E0 allowed between a reaction TS and the source channel/isomer.
+A given reaction is deemed filterable at a given condition if ``energy_tol`` * RT < E0_TS - E0_source. For example,
+if T = 1000 K and ``energy_tol`` is set to 100 and the source energy is ``100 (kJ mol^-1)``, all reactions with a
+transition state energy more than ``100 * 8.314 (J K^-1 mol^-1) * 1000 K + 100 (kJ mol^-1) = 931.4 (kJ mol^-1)`` will
+not be considered in the final network.
+
+``flux_tol`` is related to the solution of a steady state problem. In this problem a constant flux of 1.0 (choice of
+units irrelevant) is applied to the source channel/isomer while all A => B + C reactions are assumed to be irreversible.
+Under these conditions steady state concentrations of each isomer and the rates of every unimolecular reaction can be
+calculated. Since the input flux to the system is 1.0 to some degree these rates represent the fraction of the input
+flux passing through that reaction. When the flux through a reaction is less than ``flux_tol`` it is deemed filterable
+at that condition.
+
+Overall a reaction is removed from the network if it is deemed filterable by both methods (if both specified) at every
+temperature and pressure combination. After reduction a network_reduced.py file is generated in the pdep directory
+containing the reduced network.
diff --git a/documentation/source/users/cantherm/input_pdep.rst b/documentation/source/users/arkane/input_pdep.rst
similarity index 73%
rename from documentation/source/users/cantherm/input_pdep.rst
rename to documentation/source/users/arkane/input_pdep.rst
index 0a1e9eadd0..9e3e7730f6 100644
--- a/documentation/source/users/cantherm/input_pdep.rst
+++ b/documentation/source/users/arkane/input_pdep.rst
@@ -11,7 +11,7 @@ parameters. The species section must come before the reaction section. Before
discussing each of these sections, a brief word on the general input file
syntax will be given.
-The format of CanTherm input files is based on Python syntax. In fact, CanTherm
+The format of Arkane input files is based on Python syntax. In fact, Arkane
input files are valid Python source code, and this is used to facilitate
reading of the file.
@@ -19,7 +19,7 @@ Each section is made up of one or more function calls, where parameters are
specified as text strings, numbers, or objects. Text strings must be wrapped in
either single or double quotes.
-The following is a list of all the components of a CanTherm input file for pressure-dependent calculations:
+The following is a list of all the components of a Arkane input file for pressure-dependent calculations:
=========================== ================================================================
Component Description
@@ -41,8 +41,8 @@ Component Description
=========================== ================================================================
Note that many of the functions in the table above overlap with the functions available for
-`thermodynamics and high-pressure limit kinetics computations `_. For most of these overlapping functions, the input is identical.
-Important differences are mentioned in the sections below.
+`thermodynamics and high-pressure limit kinetics computations `_. For most of these overlapping
+functions, the input is identical. Important differences are mentioned in the sections below.
Model Chemistry
===============
@@ -50,10 +50,10 @@ Model Chemistry
The first item in the input file should be a ``modelChemistry`` assignment
with a string describing the model chemistry.
-CanTherm uses this information to adjust the computed energies to the usual gas-phase reference
+Arkane uses this information to adjust the computed energies to the usual gas-phase reference
states by applying atom, bond and spin-orbit coupling energy corrections. This is particularly
important for ``thermo()`` calculations (see below). Note that the user must specify under the
-``species()`` function the type and number of bonds for CanTherm to apply these corrections.
+``species()`` function the type and number of bonds for Arkane to apply these corrections.
The example below specifies CBS-QB3 as the model chemistry::
modelChemistry = "CBS-QB3"
@@ -76,8 +76,10 @@ under `High-Pressure Limit: Model Chemistry `_
Frequency Scale Factor
======================
-Frequency scale factors are empirically fit to experiment for different ``modelChemistry``. Refer to NIST website for values (http://cccbdb.nist.gov/vibscalejust.asp).
-For CBS-QB3, which is not included in the link above, ``frequencyScaleFactor = 0.99`` according to Montgomery et al. (*J. Chem. Phys. 1999, 110, 2822–2827*).
+Frequency scale factors are empirically fit to experiment for different ``modelChemistry``. Refer to NIST website for
+values (http://cccbdb.nist.gov/vibscalejust.asp).
+For CBS-QB3, which is not included in the link above, ``frequencyScaleFactor = 0.99`` according to Montgomery et al.
+(*J. Chem. Phys. 1999, 110, 2822–2827*).
Species Parameters
==================
@@ -87,16 +89,20 @@ This includes all unimolecular isomers, bimolecular reactants and products,
and the bath gas(es). A species that appears in multiple bimolecular channels
need only be specified with a single ``species()`` function.
-The input to the ``species()`` function for a pressure-dependent calculation is the same as for a `thermodynamic or high-pressure limit kinetics calculation `_,
-with the addition of a few extra parameters needed to describe collisional energy transfer. There are two options for providing input to the ``species()`` function, which are described in the subsections below:
+The input to the ``species()`` function for a pressure-dependent calculation is the same as for a
+`thermodynamic orhigh-pressure limit kinetics calculation `_, with the addition of a few extra
+parameters needed to describe collisional energy transfer. There are two options for providing input to the
+``species()`` function, which are described in the subsections below:
-1. By pointing to the output files of quantum chemistry calculations, which CanTherm will parse for the necessary molecular properties
+1. By pointing to the output files of quantum chemistry calculations, which Arkane will parse for the necessary
+molecular properties
2. By directly entering the molecular properties
Within a single input file, both Option #1 and #2 may be used.
-Regardless of which option is used to specify molecular properties (e.g., vibrational frequencies, rotational constants) in the ``species()`` function, the four parameters
-listed below (mostly relating to the collisional energy transfer model) are always specified in the same way.
+Regardless of which option is used to specify molecular properties (e.g., vibrational frequencies, rotational constants)
+in the ``species()`` function, the four parameters listed below (mostly relating to the collisional energy transfer
+model) are always specified in the same way.
======================= =================================== ====================================
Parameter Required? Description
@@ -105,6 +111,7 @@ Parameter Required? Description
``molecularWeight`` all species The molecular weight, if not given it is calculated based on the structure
``collisionModel`` unimolecular isomers and bath gases Transport data for the species
``energyTransferModel`` unimolecular isomers Assigned with ``SingleExponentialDown`` model
+``reactive`` bath gases Booleanindicating whether the molecule reacts, set to ``False`` for bath gases. default is ``True``
======================= =================================== ====================================
The ``structure`` parameter is defined by either SMILES or InChI. For instance, either representation is
@@ -130,7 +137,7 @@ The ``molecularWeight`` parameter should be defined in the quantity format ``(va
molecularWeight = (44.04, 'g/mol')
-If the ``molecularWeight`` parameter is not given, it is calculated by CanTherm based
+If the ``molecularWeight`` parameter is not given, it is calculated by Arkane based
on the chemical structure.
The ``collisionModel`` is defined for unimolecular isomers with the transport data using a
@@ -138,7 +145,8 @@ The ``collisionModel`` is defined for unimolecular isomers with the transport da
collisionModel = TransportData(sigma=(3.70,'angstrom'), epsilon=(94.9,'K'))
-``sigma`` and ``epsilon`` are Lennard-Jones parameters, which can be estimated using the Joback method on the `RMG website `_.
+``sigma`` and ``epsilon`` are Lennard-Jones parameters, which can be estimated using the Joback method on the
+`RMG website `_.
The ``energyTransferModel`` model available is a ``SingleExponentialDown``.
@@ -155,19 +163,21 @@ An example of a typical ``energyTransferModel`` function is: ::
n = 0.85,
)
-Parameters for the single exponential down model of collisional energy transfer are usually obtained from analogous systems in literature.
-For example, if the user is interested in a pressure-dependent network with overall molecular formula C7H8,
-the single exponential down parameters for toluene in helium availabe from literature could be used for all unimolecular isomers in the network
-(assuming helium is the bath gas). One helpful literature source for calculated exponential down parameters is the following paper:
+Parameters for the single exponential down model of collisional energy transfer are usually obtained from analogous
+systems in literature. For example, if the user is interested in a pressure-dependent network with overall molecular
+formula C7H8, the single exponential down parameters for toluene in helium availabe from literature could be used for
+all unimolecular isomers in the network (assuming helium is the bath gas). One helpful literature source for calculated
+exponential down parameters is the following paper:
http://www.sciencedirect.com/science/article/pii/S1540748914001084#s0060
-The following subsections describe how the remaining molecular properties can be input to the ``species()`` function using either
-Option #1 or #2 mentioned above.
+The following subsections describe how the remaining molecular properties can be input to the ``species()`` function
+using either Option #1 or #2 mentioned above.
Option #1: Automatically Parse Quantum Chemistry Calculation Output
-------------------------------------------------------------------
-For this option, the ``species()`` function only requires two parameters in addition to the four parameters in the table above, as shown in the example below::
+For this option, the ``species()`` function only requires two parameters in addition to the four parameters in the table
+above, as shown in the example below::
species('acetylperoxy',''acetylperoxy.py',
structure = SMILES('CC(=O)O[O]'),
@@ -180,9 +190,9 @@ For this option, the ``species()`` function only requires two parameters in addi
),
)
-The first parameter (``'acetylperoxy'`` above) is the species label, which can be referenced later in the input file. The second
-parameter (``'acetylperoxy.py'`` above) points to the location of another python file containing details of the species. This file
-will be referred to as the species input file.
+The first parameter (``'acetylperoxy'`` above) is the species label, which can be referenced later in the input file.
+The second parameter (``'acetylperoxy.py'`` above) points to the location of another python file containing details of
+the species. This file will be referred to as the species input file.
The species input file accepts the following parameters:
@@ -209,18 +219,21 @@ atom corrections can be turned off by setting ``useAtomCorrections`` to ``False`
The ``bond`` parameter is used to apply bond corrections (BC) for a given ``modelChemistry``.
-Allowed bond types for the ``bonds`` parameter are, e.g., ``'C-H'``, ``'C-C'``, ``'C=C'``, ``'N-O'``, ``'C=S'``, ``'O=O'``, ``'C#N'``...
+Allowed bond types for the ``bonds`` parameter are, e.g., ``'C-H'``, ``'C-C'``, ``'C=C'``, ``'N-O'``, ``'C=S'``,
+``'O=O'``, ``'C#N'``...
``'O=S=O'`` is also allowed.
-The order of elements in for the bond correction is not important. Use ``-``/``=``/``#`` to denote a single/double/triple bond, respectively. For example, for acetylperoxy radical we would write::
+The order of elements in for the bond correction is not important. Use ``-``/``=``/``#`` to denote a
+single/double/triple bond, respectively. For example, for acetylperoxy radical we would write::
bonds = {'C-C': 1, 'C=O': 1, 'C-O': 1, 'O-O': 1, 'C-H': 3}
The parameter ``linear`` only needs to be specified as either ``True`` or ``False``. The parameters ``externalSymmetry``,
``spinMultiplicity`` and ``opticalIsomers`` only accept integer values.
-Note that ``externalSymmetry`` corresponds to the number of unique ways in which the species may be rotated about an axis (or multiple axes)
-and still be indistinguishable from its starting orientation (reflection across a mirror plane does not count as rotation about an axis).
+Note that ``externalSymmetry`` corresponds to the number of unique ways in which the species may be rotated about an
+axis (or multiple axes) and still be indistinguishable from its starting orientation (reflection across a mirror plane
+does not count as rotation about an axis).
For acetylperoxy radical, we would write::
linear = False
@@ -240,12 +253,12 @@ they can specify the path to a quantum chemistry calculation output file that co
'Klip_2': -79.64199436,
}
-In this example, the ``CBS-QB3`` energy is obtained from a Gaussian log file, while the ``Klip_2`` energy is specified directly.
-The energy used will depend on what ``modelChemistry`` was specified in the input file. CanTherm can parse the energy from
-a Gaussian, Molpro, or QChem log file, all using the same ``Log`` class, as shown below.
+In this example, the ``CBS-QB3`` energy is obtained from a Gaussian log file, while the ``Klip_2`` energy is specified
+directly. The energy used will depend on what ``modelChemistry`` was specified in the input file. Arkane can parse the
+energy from a Gaussian, Molpro, or QChem log file, all using the same ``Log`` class, as shown below.
-The input to the remaining parameters, ``geometry``, ``frequencies`` and ``rotors``, will depend on if hindered/free rotors are included.
-Both cases are described below.
+The input to the remaining parameters, ``geometry``, ``frequencies`` and ``rotors``, will depend on if hindered/free
+rotors are included. Both cases are described below.
Without Hindered/Free Rotors
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -258,8 +271,9 @@ For example::
frequencies = Log('acetylperoxy_freq.log')
-In summary, in order to specify the molecular properties of a species by parsing the output of quantum chemistry calculations, without any hindered/free rotors,
-the species input file should look like the following (using acetylperoxy as an example)::
+In summary, in order to specify the molecular properties of a species by parsing the output of quantum chemistry
+calculations, without any hindered/free rotors, the species input file should look like the following (using
+acetylperoxy as an example)::
bonds = {
'C-C': 1,
@@ -296,19 +310,22 @@ For example::
frequencies = Log('acetylperoxy_freq.log')
-The ``geometry/frequencies`` log file must contain both the optimized geometry and the Hessian (matrix of partial second derivatives of potential energy surface,
-also referred to as the force constant matrix), which is used to calculate the harmonic oscillator frequencies. If Gaussian is used
-to generate the ``geometry/frequencies`` log file, the Gaussian input file must contain the keyword ``iop(7/33=1)``, which forces Gaussian to
-output the complete Hessian. Because the ``iop(7/33=1)`` option is only applied to the first part of the Gaussian job, the job
-must be a ``freq`` job only (as opposed to an ``opt freq`` job or a composite method job like ``cbs-qb3``, which only do the ``freq`` calculation after the optimization).
-Therefore, the proper workflow for generating the ``geometry/frequencies`` log file using Gaussian is:
+The ``geometry/frequencies`` log file must contain both the optimized geometry and the Hessian (matrix of partial second
+derivatives of potential energy surface, also referred to as the force constant matrix), which is used to calculate the
+harmonic oscillator frequencies. If Gaussian is used to generate the ``geometry/frequencies`` log file, the Gaussian
+input file must contain the keyword ``iop(7/33=1)``, which forces Gaussian to output the complete Hessian. Because the
+``iop(7/33=1)`` option is only applied to the first part of the Gaussian job, the job must be a ``freq`` job only
+(as opposed to an ``opt freq`` job or a composite method job like ``cbs-qb3``, which only do the ``freq``
+calculation after the optimization). Therefore, the proper workflow for generating the ``geometry/frequencies`` log file
+using Gaussian is:
1. Perform a geometry optimization.
2. Take the optimized geometry from step 1, and use it as the input to a ``freq`` job with the following input keywords: ``#method basis-set freq iop(7/33=1)``
The output of step 2 is the correct log file to use for ``geometry/frequencies``.
-``rotors`` is a list of :class:`HinderedRotor()` and/or :class:`FreeRotor()` objects. Each :class:`HinderedRotor()` object requires the following parameters:
+``rotors`` is a list of :class:`HinderedRotor()` and/or :class:`FreeRotor()` objects. Each :class:`HinderedRotor()`
+object requires the following parameters:
====================== =========================================================
Parameter Description
@@ -334,23 +351,29 @@ scan in the following format::
The ``Energy`` can be in units of ``kJ/mol``, ``J/mol``, ``cal/mol``, ``kcal/mol``, ``cm^-1`` or ``hartree``.
-The ``symmetry`` parameter will usually equal either 1, 2 or 3. Below are examples of internal rotor scans with these commonly encountered symmetry numbers. First, ``symmetry = 3``:
+The ``symmetry`` parameter will usually equal either 1, 2 or 3. Below are examples of internal rotor scans with these
+commonly encountered symmetry numbers. First, ``symmetry = 3``:
.. image:: symmetry_3_example.png
-Internal rotation of a methyl group is a common example of a hindered rotor with ``symmetry = 3``, such as the one above. As shown, all three minima (and maxima) have identical energies, hence ``symmetry = 3``.
+Internal rotation of a methyl group is a common example of a hindered rotor with ``symmetry = 3``, such as the one
+above. As shown, all three minima (and maxima) have identical energies, hence ``symmetry = 3``.
-Similarly, if there are only two minima along the internal rotor scan, and both have identical energy, then ``symmetry = 2``, as in the example below:
+Similarly, if there are only two minima along the internal rotor scan, and both have identical energy, then
+``symmetry = 2``, as in the example below:
.. image:: symmetry_2_example.png
-If any of the energy minima in an internal rotor scan are not identical, then the rotor has no symmetry (``symmetry = 1``), as in the example below:
+If any of the energy minima in an internal rotor scan are not identical, then the rotor has no symmetry
+(``symmetry = 1``), as in the example below:
.. image:: symmetry_1_example.png
-For the example above there are 3 local energy minima, 2 of which are identical to each other. However, the 3rd minima is different from the other 2, therefore this internal rotor has no symmetry.
+For the example above there are 3 local energy minima, 2 of which are identical to each other. However, the 3rd minima
+is different from the other 2, therefore this internal rotor has no symmetry.
-For practical purposes, when determining the symmetry number for a given hindered rotor simply check if the internal rotor scan looks like the ``symmetry = 2`` or ``3`` examples above. If it doesn’t, then most likely ``symmetry = 1``.
+For practical purposes, when determining the symmetry number for a given hindered rotor simply check if the internal
+rotor scan looks like the ``symmetry = 2`` or ``3`` examples above. If it doesn’t, then most likely ``symmetry = 1``.
Each :class:`FreeRotor()` object requires the following parameters:
@@ -362,13 +385,15 @@ Parameter Description
``symmetry`` The symmetry number for the torsional rotation (number of indistinguishable energy minima)
====================== =========================================================
-Note that a ``scanLog`` is not needed for :class:`FreeRotor()` because it is assumed that there is no barrier to internal rotation.
-Modeling an internal rotation as a :class:`FreeRotor()` puts an upper bound on the impact of that rotor on the species's overall partition function.
-Modeling the same internal rotation as a Harmonic Oscillator (default if it is not specifed as either a :class:`FreeRotor()` or :class:`HinderedRotor()`)
-puts a lower bound on the impact of that rotor on the species's overall partition function. Modeling the internal rotation as a :class:`HinderedRotor()` should fall
-in between these two extremes.
+Note that a ``scanLog`` is not needed for :class:`FreeRotor()` because it is assumed that there is no barrier to
+internal rotation. Modeling an internal rotation as a :class:`FreeRotor()` puts an upper bound on the impact of that
+rotor on the species's overall partition function. Modeling the same internal rotation as a Harmonic Oscillator (default
+if it is not specifed as either a :class:`FreeRotor()` or :class:`HinderedRotor()`) puts a lower bound on the impact of
+that rotor on the species's overall partition function. Modeling the internal rotation as a :class:`HinderedRotor()`
+should fall in between these two extremes.
-To summarize, the species input file with hindered/free rotors should look like the following example (different options for specifying the same ``rotors`` entry are commented out)::
+To summarize, the species input file with hindered/free rotors should look like the following example (different options
+for specifying the same ``rotors`` entry are commented out)::
bonds = {
'C-C': 1,
@@ -406,14 +431,14 @@ Note that the atom labels identified within the rotor section should correspond
Option #2: Directly Enter Molecular Properties
----------------------------------------------
-While it is usually more convenient to have CanTherm parse molecular properties from the output of quantum chemistry calculations
-(see `Option #1: Automatically Parse Quantum Chemistry Calculation Output`_) there are instances where an output file is not available
-and it is more convenient for the user to directly enter the molecular properties. This is the case, for example, if the user would like to use
-calculations from literature, where the final calculated molecular properties are often reported in a table (e.g., vibrational frequencies, rotational constants),
-but the actual output file of the underlying quantum chemistry calculation is rarely provided.
+While it is usually more convenient to have Arkane parse molecular properties from the output of quantum chemistry
+calculations (see `Option #1: Automatically Parse Quantum Chemistry Calculation Output`_) there are instances where an
+output file is not available and it is more convenient for the user to directly enter the molecular properties. This is
+the case, for example, if the user would like to use calculations from literature, where the final calculated molecular
+properties are often reported in a table (e.g., vibrational frequencies, rotational constants), but the actual output
+file of the underlying quantum chemistry calculation is rarely provided.
-For this option, there are a number of required and optional parameters associated with a ``species()``
-function:
+For this option, there are a number of required and optional parameters associated with a ``species()`` function:
======================= =================================== ====================================
Parameter Required? Description
@@ -430,27 +455,31 @@ Parameter Required? Description
``thermo`` optional Thermo data for the species
======================= =================================== ====================================
-The parameters ``structure``, ``molecularWeight``, ``collisionModel`` and ``energyTransferModel`` were already discussed above in `Species Parameters`_.
+The parameters ``structure``, ``molecularWeight``, ``collisionModel`` and ``energyTransferModel`` were already discussed
+above in `Species Parameters`_.
-The ``label`` parameter should be set to a string with the desired name for the species, which can be reference later in the input file. ::
+The ``label`` parameter should be set to a string with the desired name for the species, which can be reference later in
+the input file. ::
label = 'acetylperoxy'
-The ``E0`` ground state 0 K enthalpy of formation (including zero-point energy) should be given in the quantity format ``(value, 'units')``, using units of either ``kJ/mol``, ``kcal/mol``, ``J/mol``, or ``cal/mol``: ::
+The ``E0`` ground state 0 K enthalpy of formation (including zero-point energy) should be given in the quantity format
+``(value, 'units')``, using units of either ``kJ/mol``, ``kcal/mol``, ``J/mol``, or ``cal/mol``: ::
E0 = (-34.6,'kcal/mol')
-Note that if CanTherm is being used to calculate the thermochemistry of the species, it is critical that the value of ``E0`` is consistent with the
-definition above (0 K enthalpy of formation with zero-point energy). However, if the user is only interested in kinetics, ``E0`` can be defined on any
-arbitrary absolute energy scale, as long as the correct relative energies between various ``species()`` and ``transitionState()`` are maintained. For example,
-it is common in literature for the energy of some reactant(s) to be arbitrarily defined as zero, and the energies of all transition states, intermediates and products
-are reported relative to that.
+Note that if Arkane is being used to calculate the thermochemistry of the species, it is critical that the value of
+``E0`` is consistent with the definition above (0 K enthalpy of formation with zero-point energy). However, if the user
+is only interested in kinetics, ``E0`` can be defined on any
+arbitrary absolute energy scale, as long as the correct relative energies between various ``species()`` and
+``transitionState()`` are maintained. For example, it is common in literature for the energy of some reactant(s) to be
+arbitrarily defined as zero, and the energies of all transition states, intermediates and products are reported relative
+to that.
Also note that the value of ``E0`` provided here will be used directly, i.e., no atom or bond corrections will be applied.
-When specifying the ``modes`` parameter, define a list
-with the following types of degrees of freedom. To understand how to define these
-degrees of freedom, please click on the links below:
+When specifying the ``modes`` parameter, define a list with the following types of degrees of freedom. To understand how
+to define these degrees of freedom, please click on the links below:
**Translational degrees of freedom**
@@ -538,27 +567,29 @@ radical :math:`\ce{CH3C(=O)OO.}` (different options for specifying the same inte
),
)
-Note that the format of the ``species()`` function above is identical to the ``conformer()`` function output by CanTherm in ``output.py``.
-Therefore, the user could directly copy the ``conformer()`` output of a CanTherm job to another CanTherm input file, change the name of the function to
-``species()`` (or ``transitionState()``, if appropriate, see next section) and run a new CanTherm job in this manner.
-This can be useful if the user wants to easily switch a ``species()`` function from Option #1 (parsing quantum chemistry calculation output)
-to Option #2 (directly enter molecular properties).
+Note that the format of the ``species()`` function above is identical to the ``conformer()`` function output by Arkane
+in ``output.py``. Therefore, the user could directly copy the ``conformer()`` output of an Arkane job to another Arkane
+input file, change the name of the function to ``species()`` (or ``transitionState()``, if appropriate, see next
+section) and run a new Arkane job in this manner. This can be useful if the user wants to easily switch a ``species()``
+function from Option #1 (parsing quantum chemistry calculation output) to Option #2 (directly enter molecular properties).
Transition States
=================
Transition states for reactions in the pressure dependent network should be defined very similarly to ``species``
-using a ``transitionState()`` function, however it has less parameters (``structure``, ``molecularWeight``, ``collisionModel`` and ``energyTransferModel`` aren't specified for a transition state).
-Like the ``species()`` function, the ``transitionState()`` function may also be specified in two ways: `Option #1: Automatically Parse Quantum Chemistry Calculation Output`_ and
+using a ``transitionState()`` function, however it has less parameters (``structure``, ``molecularWeight``,
+``collisionModel`` and ``energyTransferModel`` aren't specified for a transition state). Like the ``species()``
+function, the ``transitionState()`` function may also be specified in two ways:
+`Option #1: Automatically Parse Quantum Chemistry Calculation Output`_ and
`Option #2: Directly Enter Molecular Properties`_
The following is an example of a typical ``transitionState()`` function using Option #1::
transitionState('isom1', 'isom1.py')
-Just as for a ``species()`` function, the first parameter is the label for that transition state, and the second parameter
-points to the location of another python file containing details of the transition state. This file
-will be referred to as the transition state input file, and it accepts the same parameters as the species input file described in
+Just as for a ``species()`` function, the first parameter is the label for that transition state, and the second
+parameter points to the location of another python file containing details of the transition state. This file will be
+referred to as the transition state input file, and it accepts the same parameters as the species input file described in
`Option #1: Automatically Parse Quantum Chemistry Calculation Output`_.
The following is an example of a typical ``transitionState()`` function using Option #2::
@@ -576,21 +607,20 @@ The following is an example of a typical ``transitionState()`` function using Op
frequency = (-1679.04,'cm^-1'),
)
-The only additional parameter required for a ``transitionState()`` function as compared to a ``species()`` function is ``frequency``,
-which is the imaginary frequency of the transition state needed to account for tunneling. Refer to `Option #2: Directly Enter Molecular Properties`_
-for a more detailed description of the other parameters.
+The only additional parameter required for a ``transitionState()`` function as compared to a ``species()`` function is
+``frequency``, which is the imaginary frequency of the transition state needed to account for tunneling. Refer to
+`Option #2: Directly Enter Molecular Properties`_ for a more detailed description of the other parameters.
Path Reactions
==============
-Each path reaction - a reaction directly connecting two molecular configurations
-in the network - is specified using a ``reaction()`` function. The following
-parameters are available:
+Each path reaction - a reaction directly connecting two molecular configurations in the network - is specified using a
+``reaction()`` function. The following parameters are available:
====================== ==================== ============================================================================================================
Parameter Required? Description
====================== ==================== ============================================================================================================
-``label`` All reactions A name for the reaction
+``label`` All reactions A name for the reaction
``reactants`` All reactions A list of reactant species
``products`` All reactions A list of product species
``transitionState`` All reactions The transition state
@@ -598,9 +628,12 @@ Parameter Required? Description
``tunneling`` Optional The type of tunneling model (either 'Eckhart' or 'Wigner') to use for tunneling through the reaction barrier
====================== ==================== ============================================================================================================
-If the optional ``kinetics`` parameter is specified, CanTherm will perform an inverse Laplace transform (ILT) on the high pressure-limit kinetics provided to estimate the microcanonical rate coefficients,
-:math:`k(E)`, needed for the master equation (refer to Theory manual for more detail). This feature is useful for barrierless reactions, such as radical recombinations, which don't
-have an obvious transition state. If the ILT approach to calculating :math:`k(E)` is taken, a placeholder ``transitionState`` must still be defined with an ``E0`` equal to the energy of the higher energy species it is connecting.
+If the optional ``kinetics`` parameter is specified, Arkane will perform an inverse Laplace transform (ILT) on the high
+pressure-limit kinetics provided to estimate the microcanonical rate coefficients, :math:`k(E)`, needed for the master
+equation (refer to Theory manual for more detail). This feature is useful for barrierless reactions, such as radical
+recombinations, which don't have an obvious transition state. If the ILT approach to calculating :math:`k(E)` is taken,
+a placeholder ``transitionState`` must still be defined with an ``E0`` equal to the energy of the higher energy species
+it is connecting.
A typical ``reaction()`` function might look like this. ::
@@ -617,12 +650,12 @@ Note that the reactants and products must have been previously declared using a
using the same name labels. Transition states must also be previously declared using a
``transitionState()`` function.
-If the optional ``kinetics`` entry is not specified, CanTherm will calculate the required kinetic
+If the optional ``kinetics`` entry is not specified, Arkane will calculate the required kinetic
coefficients on its own. The ``kinetics`` entry is particularly useful to specify rates of barrierless
-reactions (for which CanTherm cannot yet calculate high-pressure limit rates).
+reactions (for which Arkane cannot yet calculate high-pressure limit rates).
-Currently, the ``reaction()`` function for a pressure-dependent job cannot connect bimolecular reactants to bimolecular products
-(e.g., as in a hydrogen abstraction or disproportionation reaction).
+Currently, the ``reaction()`` function for a pressure-dependent job cannot connect bimolecular reactants to bimolecular
+products (e.g., as in a hydrogen abstraction or disproportionation reaction).
Network
=======
@@ -640,7 +673,7 @@ Parameter Description
``bathGas`` A dictionary of bath gases and their respective mole fractions, adding up to 1.0
====================== ================================================================================
-CanTherm is largely able to determine the molecular configurations that define
+Arkane is largely able to determine the molecular configurations that define
the potential energy surface for your reaction network simply by inspecting the
path reactions. However, you must indicate which unimolecular and bimolecular
configurations you wish to include in the master equation formulation; all
@@ -701,10 +734,10 @@ Parameter Description
**Temperature and Pressure Ranges**
-CanTherm will compute the :math:`k(T,P)` values on a grid of temperature and
-pressure points. ``Tmin``, ``Tmax``, and ``Tcount`` values, as well as ``Pmin``, ``Pmax``, and ``Pcount`` parameter values must be provided.
-CanTherm will automatically choose the intermediate temperatures based on the
-interpolation model you wish to fit. This is the recommended approach.
+Arkane will compute the :math:`k(T,P)` values on a grid of temperature and
+pressure points. ``Tmin``, ``Tmax``, and ``Tcount`` values, as well as ``Pmin``, ``Pmax``, and ``Pcount`` parameter
+values must be provided. Arkane will automatically choose the intermediate temperatures based on the interpolation model
+you wish to fit. This is the recommended approach.
Alternatively, the grid of temperature and pressure points can be specified explicitly using ``Tlist`` and/or ``Plist``.
@@ -730,7 +763,7 @@ This example also includes the ``sensitivity_conditions`` attribute which invoke
#method = 'chemically-significant eigenvalues',
interpolationModel = ('chebyshev', 6, 4),
#interpolationModel = ('pdeparrhenius'),
- #activeKRotor = True,
+ #activeKRotor = True,
activeJRotor = True,
sensitivity_conditions = [[(1000, 'K'), (1, 'bar')], [(1500, 'K'), (10, 'bar')]]
)
@@ -743,14 +776,13 @@ automatically generated per network reaction, showing the semi-normalized sensit
Thermodynamics Computations
===========================
-The input to the ``thermo()`` function is identical to that of a `non-pressure-dependent job `_.
+The input to the ``thermo()`` function is identical to that of a
+`non-pressure-dependent job `_.
-Use a ``thermo()`` function to make CanTherm execute the thermodynamic
-parameters computatiom for a species. Pass the string label of the species
-you wish to compute the thermodynamic parameters for and the type of
-thermodynamics polynomial to generate (either ``'Wilhoit'`` or ``'NASA'``).
-A table of relevant thermodynamic parameters will also be displayed in the
-output file.
+Use a ``thermo()`` function to make Arkane execute the thermodynamic parameters computation for a species. Pass the
+string label of the species you wish to compute the thermodynamic parameters for and the type of thermodynamics
+polynomial to generate (either ``'Wilhoit'`` or ``'NASA'``). A table of relevant thermodynamic parameters will also be
+displayed in the output file.
Below is a typical ``thermo()`` execution function::
@@ -759,17 +791,17 @@ Below is a typical ``thermo()`` execution function::
Kinetics Computations
=====================
-The input to the ``kinetics()`` function is identical to that of `a non-pressure-dependent job `_. Note, however, that because currently
-the ``reaction()`` function for a pressure-dependent job cannot connect bimolecular reactants to bimolecular products
-(e.g., as in a hydrogen abstraction or disproportionation reaction), it is also not possible to use ``kinetics()`` on such a reaction either.
-The kinetics of such a reaction can only be calculated as part of a non-pressure-dependent job.
+The input to the ``kinetics()`` function is identical to that of
+`a non-pressure-dependent job `_. Note, however, that because currently the
+``reaction()`` function for a pressure-dependent job cannot connect bimolecular reactants to bimolecular products (e.g.,
+as in a hydrogen abstraction or disproportionation reaction), it is also not possible to use ``kinetics()`` on such a
+reaction either. The kinetics of such a reaction can only be calculated as part of a non-pressure-dependent job.
-Use a ``kinetics()`` function to make CanTherm execute the high-pressure limit kinetic
-parameters computation for a reaction. The ``'label'`` string must correspond to that of
-a defined ``reaction()`` function. If desired, define a temperature range and number
-of temperatures at which the high-pressure rate coefficient will be tabulated and saved to
-the outupt file. The 3-parameter modified Arrhenius coefficients will automatically be fit
-to the computed rate coefficients. The quantum tunneling factor will also be displayed.
+Use a ``kinetics()`` function to make Arkane execute the high-pressure limit kinetic parameters computation for a
+reaction. The ``'label'`` string must correspond to that of a defined ``reaction()`` function. If desired, define a
+temperature range and number of temperatures at which the high-pressure rate coefficient will be tabulated and saved to
+the outupt file. The 3-parameter modified Arrhenius coefficients will automatically be fit to the computed rate
+coefficients. The quantum tunneling factor will also be displayed.
Below is a typical ``kinetics()`` function::
@@ -788,11 +820,6 @@ This is also acceptable::
Examples
========
-Perhaps the best way to learn the input file syntax is by example. To that end,
-a number of example input files and their corresponding output have been given
-in the ``examples/cantherm/networks`` directory, which includes both an `acetyl+O2`
-and `n-butanol` example.
-
-
-
-
+Perhaps the best way to learn the input file syntax is by example. To that end, a number of example input files and
+their corresponding output have been given in the ``examples/arkane/networks`` directory, which includes several
+examples.
diff --git a/documentation/source/users/cantherm/installation.rst b/documentation/source/users/arkane/installation.rst
similarity index 62%
rename from documentation/source/users/cantherm/installation.rst
rename to documentation/source/users/arkane/installation.rst
index ebfb9c99ed..0b188bbac4 100644
--- a/documentation/source/users/cantherm/installation.rst
+++ b/documentation/source/users/arkane/installation.rst
@@ -2,15 +2,15 @@
Installation
************
-Installing CanTherm
-===================
+Installing Arkane
+=================
-CanTherm can be obtained by installing the `RMG-Py `_ software, which
+Arkane can be obtained by installing the `RMG-Py `_ software, which
includes all neccesary dependancies.
Instructions to install RMG-Py can be found at the :ref:`RMG-Py Installation page `.
Note that you'll need to choose between the Basic User or Developer installation instructions
-that are specific to your operating system. Modifying cantherm source code will
-require Developer installation. If you are only looking to run the code, the
+that are specific to your operating system. Modifying Arkane source code will
+require Developer installation. If you are only looking to run the code, the
Basic User installation will work.
diff --git a/documentation/source/users/cantherm/introduction.rst b/documentation/source/users/arkane/introduction.rst
similarity index 65%
rename from documentation/source/users/cantherm/introduction.rst
rename to documentation/source/users/arkane/introduction.rst
index a6f4216bec..b9f037e8dd 100644
--- a/documentation/source/users/cantherm/introduction.rst
+++ b/documentation/source/users/arkane/introduction.rst
@@ -2,37 +2,37 @@
Introduction
************
-**CanTherm** is a tool for computing the thermodynamic properties of chemical
-species and high-pressure-limit rate coefficients for chemical reactions using
+**Arkane** (Automated Reaction Kinetics and Network Exploration) is a tool for computing the thermodynamic properties
+of chemical species and high-pressure-limit rate coefficients for chemical reactions using
the results of a quantum chemistry calculation. Thermodynamic properties are
computed using the rigid rotor-harmonic oscillator approximation with optional
corrections for hindered internal rotors. Kinetic parameters are computed using
canonical transition state theory with optional tunneling correction.
-CanTherm can also estimate
-pressure-dependent phenomenological rate coefficients :math:`k(T,P)` for
+Arkane can also estimate
+pressure-dependent phenomenological rate coefficients :math:`k(T,P)` for
unimolecular reaction networks of arbitrary complexity. The approach is to
-first generate a detailed model of the reaction network using the
-one-dimensional master equation, then apply one of several available model
-reduction methods of varying accuracy, speed, and robustness to simplify the
-detailed model into a set of phenomenological rate coefficients. The result
+first generate a detailed model of the reaction network using the
+one-dimensional master equation, then apply one of several available model
+reduction methods of varying accuracy, speed, and robustness to simplify the
+detailed model into a set of phenomenological rate coefficients. The result
is a set of :math:`k(T,P)` functions suitable for use in chemical reaction
mechanisms. More information is available at `Allen et al. `_.
-CanTherm is developed and distributed as part of `RMG-Py `_, but can be used as a stand-alone
-application for Thermochemistry, Transition State Theory, and Master Equation chemical kinetics calculations.
+Arkane is developed and distributed as part of `RMG-Py `_, but can be used as a stand-alone
+application for Thermochemistry, Transition State Theory, and Master Equation chemical kinetics calculations.
-CanTherm is written in the `Python `_ programming
+Arkane is written in the `Python `_ programming
language to facilitate ease of development, installation, and use.
Additional theoretical background can be found at `RMG's Theory Guide `_
-and `CanTherm's Manual `_ as well as the `manual's supplement information `_.
+and `Arkane's Manual `_ as well as the `manual's supplement information `_.
License
=======
-CanTherm is provided as free, open source code under the terms of the
-`MIT/X11 License `_. The
+Arkane is provided as free, open source code under the terms of the
+`MIT/X11 License `_. The
full, official license is reproduced below
diff --git a/documentation/source/users/cantherm/output.rst b/documentation/source/users/arkane/output.rst
similarity index 80%
rename from documentation/source/users/cantherm/output.rst
rename to documentation/source/users/arkane/output.rst
index 7876cf273e..117f2d5c3f 100644
--- a/documentation/source/users/cantherm/output.rst
+++ b/documentation/source/users/arkane/output.rst
@@ -5,10 +5,10 @@ Parsing Output Files
Thermodynamic and High-pressure Limit Kinetics Calculations
===========================================================
-The syntax of CanTherm output files closely mirrors that of the input files.
+The syntax of Arkane output files closely mirrors that of the input files.
For each ``thermo()`` function in the input file, there will be a corresponding
``thermo()`` function in the output file containing the computed thermodynamic
-model. Similarly, For each ``kinetics()`` function in the input file, there will
+model. Similarly, For each ``kinetics()`` function in the input file, there will
be a corresponding ``kinetics()`` function in the output file containing the
computed kinetics model.
@@ -16,9 +16,9 @@ computed kinetics model.
Pressure-Dependent Calculations
===============================
The output file contains the entire contents of the input file. In
-addition, the output file contains a block of ``pdepreaction()`` calls. The
-parameters of each ``pdepreaction()`` block match those of the ``reaction()``
-block from the input file, except that no transition state data is given and
+addition, the output file contains a block of ``pdepreaction()`` calls. The
+parameters of each ``pdepreaction()`` block match those of the ``reaction()``
+block from the input file, except that no transition state data is given and
the ``kinetics`` are by definition pressure-dependent.
A ``pdepreaction()`` item is printed for each reaction pathway possible in the
@@ -30,18 +30,18 @@ Chemkin Output File
===================
In addition to the ``output.py`` which contains the thermodynamic,
-kinetic, and pressure dependent results from a cantherm run, a Chemkin
-input file, ``chem.inp`` is also returned. This file contains species and their
-thermodynamic parameters for each species that has the ``thermo()`` in the
-input file. The file also contains kinetics, both pressure dependent and high
-pressure limit, which have the ``kinetics()`` or ``pressureDependence()`` module
+kinetic, and pressure dependent results from an Arkane run, a Chemkin
+input file, ``chem.inp`` is also returned. This file contains species and their
+thermodynamic parameters for each species that has the ``thermo()`` in the
+input file. The file also contains kinetics, both pressure dependent and high
+pressure limit, which have the ``kinetics()`` or ``pressureDependence()`` module
called.
For the output file to function, all the names of species should be in valid
-chemkin format. The butanol and ethyl examples both show how to obtain a valid
+chemkin format. The butanol and ethyl examples both show how to obtain a valid
chemkin file.
-The ``chem.inp`` file can be used in Chemkin software package or converted to
+The ``chem.inp`` file can be used in Chemkin software package or converted to
a Cantera input file for use in Cantera software.
@@ -49,19 +49,19 @@ Log File
========
A log file containing similar information to that displayed on the console
-during CanTherm execution is also automatically saved. This file has the name
-``cantherm.log`` and is found in the same directory as the output file. The
+during Arkane execution is also automatically saved. This file has the name
+``Arkane.log`` and is found in the same directory as the output file. The
log file accepts logging messages at an equal or greater level of detail than
the console; thus, it is often useful (and recommended) to examine both if
something unexpected has occurred.
-The ``examples/cantherm`` directory contains both CanTherm input files and the resulting
+The ``examples/arkane`` directory contains both Arkane input files and the resulting
output files.
Species Dictionary
==================
-Any species that had the ``thermo()`` method called and had the structure defined in the cantherm
+Any species that had the ``thermo()`` method called and had the structure defined in the Arkane
input file will also have an RMG style adjacency list representation in ``species_dictionary.txt``.
This allows the user to input the corresponding thermo and kinetics into RMG in various ways
described in the RMG user guide.
\ No newline at end of file
diff --git a/documentation/source/users/cantherm/running.rst b/documentation/source/users/arkane/running.rst
similarity index 64%
rename from documentation/source/users/cantherm/running.rst
rename to documentation/source/users/arkane/running.rst
index 10135fae38..561c1834a5 100644
--- a/documentation/source/users/cantherm/running.rst
+++ b/documentation/source/users/arkane/running.rst
@@ -1,24 +1,24 @@
-****************
-Running CanTherm
-****************
+**************
+Running Arkane
+**************
-To execute a CanTherm job, invoke the command ::
+To execute an Arkane job, invoke the command ::
- $ python cantherm.py INPUTFILE
+ $ python arkane.py INPUTFILE
-The absolute or relative paths to the cantherm.py file as well as to the input file must be given.
+The absolute or relative paths to the arkane.py file as well as to the input file must be given.
The job will run and the results will be saved to ``output.py`` in the same
directory as the input file. If you wish to save the output elsewhere, use
the ``-o``/``--output`` option, e.g. ::
- $ python cantherm.py INPUTFILE -o OUTPUTFILE
+ $ python arkane.py INPUTFILE -o OUTPUTFILE
Drawing Potential Energy Surface
================================
-CanTherm contains functionality for automatically generating an image of the
-potential energy surface for a reaction network. This is done automatically
+Arkane contains functionality for automatically generating an image of the
+potential energy surface for a reaction network. This is done automatically
and outputted in pdf format to a file called ``network.pdf``.
@@ -26,8 +26,8 @@ Log Verbosity
=============
You can manipulate the amount of information logged to the console window using
-the ``-q``/``--quiet`` flag (for quiet mode) or the ``-v``/``--verbose`` flag
-(for verbose mode). The former causes the amount of logging information shown
+the ``-q``/``--quiet`` flag (for quiet mode) or the ``-v``/``--verbose`` flag
+(for verbose mode). The former causes the amount of logging information shown
to decrease; the latter causes it to increase.
Help
@@ -36,4 +36,5 @@ Help
To view help information and all available options, use the ``-h``/``--help``
flag, e.g. ::
- $ python cantherm.py -h
+ $ python arkane.py -h
+
diff --git a/documentation/source/users/cantherm/symmetry_1_example.png b/documentation/source/users/arkane/symmetry_1_example.png
similarity index 100%
rename from documentation/source/users/cantherm/symmetry_1_example.png
rename to documentation/source/users/arkane/symmetry_1_example.png
diff --git a/documentation/source/users/cantherm/symmetry_2_example.png b/documentation/source/users/arkane/symmetry_2_example.png
similarity index 100%
rename from documentation/source/users/cantherm/symmetry_2_example.png
rename to documentation/source/users/arkane/symmetry_2_example.png
diff --git a/documentation/source/users/cantherm/symmetry_3_example.png b/documentation/source/users/arkane/symmetry_3_example.png
similarity index 100%
rename from documentation/source/users/cantherm/symmetry_3_example.png
rename to documentation/source/users/arkane/symmetry_3_example.png
diff --git a/documentation/source/users/index.rst b/documentation/source/users/index.rst
index ddd0bedd66..bee9a3e02e 100644
--- a/documentation/source/users/index.rst
+++ b/documentation/source/users/index.rst
@@ -8,4 +8,4 @@ User's Guide
:maxdepth: 2
rmg/index
- cantherm/index
+ arkane/index
diff --git a/documentation/source/users/rmg/credits.rst b/documentation/source/users/rmg/credits.rst
index e65a768b2f..7d1f755663 100755
--- a/documentation/source/users/rmg/credits.rst
+++ b/documentation/source/users/rmg/credits.rst
@@ -15,7 +15,7 @@ Current Developers: (rmg_dev@mit.edu)
- Dr. Alon G. Dana
- Mark Goldman
-- Kehang Han
+- Colin Grambow
- Matt Johnson
- Mengjie Liu
- Mark Payne
@@ -28,6 +28,7 @@ Previous Developers:
- Dr. Beat A. Buesser
- Dr. Caleb A. Class
- Dr. Connie Gao
+- Dr. Kehang Han
- Dr. Fariba S. Khanshan
- Victor Lambert
- Dr. Shamel S. Merchant
diff --git a/documentation/source/users/rmg/database/images/kinetics_families/1,3_Insertion_CO2.png b/documentation/source/users/rmg/database/images/kinetics_families/1,3_Insertion_CO2.png
index 90af820ab3..4b8dedf541 100644
Binary files a/documentation/source/users/rmg/database/images/kinetics_families/1,3_Insertion_CO2.png and b/documentation/source/users/rmg/database/images/kinetics_families/1,3_Insertion_CO2.png differ
diff --git a/documentation/source/users/rmg/database/images/kinetics_families/Baeyer-Villiger_step1_cat.png b/documentation/source/users/rmg/database/images/kinetics_families/Baeyer-Villiger_step1_cat.png
new file mode 100644
index 0000000000..56f9f445bf
Binary files /dev/null and b/documentation/source/users/rmg/database/images/kinetics_families/Baeyer-Villiger_step1_cat.png differ
diff --git a/documentation/source/users/rmg/database/images/kinetics_families/Baeyer-Villiger_step2.png b/documentation/source/users/rmg/database/images/kinetics_families/Baeyer-Villiger_step2.png
new file mode 100644
index 0000000000..e6e9bac0fc
Binary files /dev/null and b/documentation/source/users/rmg/database/images/kinetics_families/Baeyer-Villiger_step2.png differ
diff --git a/documentation/source/users/rmg/database/images/kinetics_families/Baeyer-Villiger_step2_cat.png b/documentation/source/users/rmg/database/images/kinetics_families/Baeyer-Villiger_step2_cat.png
new file mode 100644
index 0000000000..2521447ab8
Binary files /dev/null and b/documentation/source/users/rmg/database/images/kinetics_families/Baeyer-Villiger_step2_cat.png differ
diff --git a/documentation/source/users/rmg/database/images/kinetics_families/Bimolec_Hydroperoxide_Decomposition.png b/documentation/source/users/rmg/database/images/kinetics_families/Bimolec_Hydroperoxide_Decomposition.png
new file mode 100644
index 0000000000..8851647b52
Binary files /dev/null and b/documentation/source/users/rmg/database/images/kinetics_families/Bimolec_Hydroperoxide_Decomposition.png differ
diff --git a/documentation/source/users/rmg/database/images/kinetics_families/Korcek_step1_cat.png b/documentation/source/users/rmg/database/images/kinetics_families/Korcek_step1_cat.png
new file mode 100644
index 0000000000..2ddef2992b
Binary files /dev/null and b/documentation/source/users/rmg/database/images/kinetics_families/Korcek_step1_cat.png differ
diff --git a/documentation/source/users/rmg/database/images/kinetics_families/Peroxyl_Disproportionation.png b/documentation/source/users/rmg/database/images/kinetics_families/Peroxyl_Disproportionation.png
new file mode 100644
index 0000000000..ac7e367c17
Binary files /dev/null and b/documentation/source/users/rmg/database/images/kinetics_families/Peroxyl_Disproportionation.png differ
diff --git a/documentation/source/users/rmg/database/images/kinetics_families/Peroxyl_Termination.png b/documentation/source/users/rmg/database/images/kinetics_families/Peroxyl_Termination.png
new file mode 100644
index 0000000000..50cfcede28
Binary files /dev/null and b/documentation/source/users/rmg/database/images/kinetics_families/Peroxyl_Termination.png differ
diff --git a/documentation/source/users/rmg/database/introduction.rst b/documentation/source/users/rmg/database/introduction.rst
index 43b1add114..db22d000ea 100644
--- a/documentation/source/users/rmg/database/introduction.rst
+++ b/documentation/source/users/rmg/database/introduction.rst
@@ -27,7 +27,7 @@ on the right (the numbers correspond to the index from the adjacency list).
table below shows all atoms types in RMG.
+----------+-------------------+------------------------------------------------------------------------------------------------------------------+
-|Atom Type |Chemical Element |Bonding |
+|Atom Type |Chemical Element |Localized electronic structure |
+==========+===================+==================================================================================================================+
|R |Any |No requirements |
+----------+-------------------+------------------------------------------------------------------------------------------------------------------+
@@ -95,8 +95,6 @@ table below shows all atoms types in RMG.
+----------+-------------------+------------------------------------------------------------------------------------------------------------------+
|N5dddc |Nitrogen |No lone pairs, three double bonds, charged -1 |
+----------+-------------------+------------------------------------------------------------------------------------------------------------------+
-|N5t |Nitrogen |No lone pairs, one triple bond, up to two single bonds |
-+----------+-------------------+------------------------------------------------------------------------------------------------------------------+
|N5tc |Nitrogen |No lone pairs, one triple bond, up to one single bond, charged +1 |
+----------+-------------------+------------------------------------------------------------------------------------------------------------------+
|N5b |Nitrogen |No lone pairs, two aromatic bonds, up to one single bond |
@@ -171,7 +169,7 @@ table below shows all atoms types in RMG.
+----------+-------------------+------------------------------------------------------------------------------------------------------------------+
|S6s |Sulfur |No lone pairs, up to six single bonds |
+----------+-------------------+------------------------------------------------------------------------------------------------------------------+
-|S6sc |Sulfur |No lone pairs, up to seven single bonds, charged -1/+1 |
+|S6sc |Sulfur |No lone pairs, up to seven single bonds, charged -1/+1/+2 |
+----------+-------------------+------------------------------------------------------------------------------------------------------------------+
|S6d |Sulfur |No lone pairs, one double bond, up to four single bonds |
+----------+-------------------+------------------------------------------------------------------------------------------------------------------+
@@ -179,7 +177,7 @@ table below shows all atoms types in RMG.
+----------+-------------------+------------------------------------------------------------------------------------------------------------------+
|S6ddd |Sulfur |No lone pairs, up to three double bonds |
+----------+-------------------+------------------------------------------------------------------------------------------------------------------+
-|S6dc |Sulfur |No lone pairs, one to to three double bonds, up to five single bonds, charged -1/-1 |
+|S6dc |Sulfur |No lone pairs, one to three double bonds, up to five single bonds, charged -1/-1/+2 |
+----------+-------------------+------------------------------------------------------------------------------------------------------------------+
|S6t |Sulfur |No lone pairs, one triple bond, up to three single bonds |
+----------+-------------------+------------------------------------------------------------------------------------------------------------------+
diff --git a/documentation/source/users/rmg/database/kinetics.rst b/documentation/source/users/rmg/database/kinetics.rst
index 2504df6a8a..b5ba6bb16b 100644
--- a/documentation/source/users/rmg/database/kinetics.rst
+++ b/documentation/source/users/rmg/database/kinetics.rst
@@ -329,6 +329,20 @@ There are currently 58 reaction families in RMG:
:scale: 25%
.. |f58| image:: images/kinetics_families/SubstitutionS.png
:scale: 25%
+.. |f59| image:: images/kinetics_families/Baeyer-Villiger_step1_cat.png
+ :scale: 25%
+.. |f60| image:: images/kinetics_families/Baeyer-Villiger_step2.png
+ :scale: 25%
+.. |f61| image:: images/kinetics_families/Baeyer-Villiger_step2_cat.png
+ :scale: 25%
+.. |f62| image:: images/kinetics_families/Bimolec_Hydroperoxide_Decomposition.png
+ :scale: 25%
+.. |f63| image:: images/kinetics_families/Korcek_step1_cat.png
+ :scale: 25%
+.. |f64| image:: images/kinetics_families/Peroxyl_Disproportionation.png
+ :scale: 25%
+.. |f65| image:: images/kinetics_families/Peroxyl_Termination.png
+ :scale: 25%
.. table::
:widths: 50 50
@@ -350,6 +364,10 @@ There are currently 58 reaction families in RMG:
**2+2_cycloaddition_CO** |f14|
**2+2_cycloaddition_CS** |f15|
**6_membered_central_C-C_shift** |f16|
+ **Baeyer-Villiger_step1_cat** |f59|
+ **Baeyer-Villiger_step2** |f60|
+ **Baeyer-Villiger_step2_cat** |f61|
+ **Bimolec_Hydroperoxide_Decomposition** |f62|
**Birad_recombination** |f17|
**Birad_R_Recombination** |f18|
**CO_Disproportionation** |f19|
@@ -382,8 +400,11 @@ There are currently 58 reaction families in RMG:
**intra_substitutionS_isomerization** |f46|
**ketoenol** |f47|
**Korcek_step1** |f48|
+ **Korcek_step1_cat** |f63|
**Korcek_step2** |f49|
**lone_electron_pair_bond** |f50|
+ **Peroxyl_Disproportionation** |f64|
+ **Peroxyl_Termination** |f65|
**R_Addition_COm** |f51|
**R_Addition_CSm** |f52|
**R_Addition_MultipleBond** |f53|
@@ -449,7 +470,7 @@ of decreasing reliability are:
Both training sets and reaction libraries use the observed rate, but rules must
first be divided by the degeneracy of the reaction. For example, the reaction
CH4 + OH --> H2O + CH3 has a reaction degeneracy of 4. If one performed an
-experiment or obtained this reaction rate using Cantherm (applying the correct
+experiment or obtained this reaction rate using Arkane (applying the correct
symmetry), the resultant rate parameters would be entered into libraries and
training sets unmodified. However a kinetic rule created for this reaction must
have its A-factor divided by 4 before being entered into the database.
diff --git a/documentation/source/users/rmg/input.rst b/documentation/source/users/rmg/input.rst
index 0a2a40733a..a43d69cc93 100644
--- a/documentation/source/users/rmg/input.rst
+++ b/documentation/source/users/rmg/input.rst
@@ -7,8 +7,7 @@ Creating Input Files
The syntax and parameters within an RMG input file are explained below. We recommend
trying to build your first input file while referencing one of the
-:ref:`Example Input Files`. Alternatively, you can use our web form found
-at http://rmg.mit.edu/input to assist in creating an input file.
+:ref:`Example Input Files`.
Syntax
======
@@ -154,7 +153,7 @@ strings describing which depositories to include.::
Kinetics Families
-----------------
In this section users can specify the particular reaction families that they wish to use to generate their model.
-This can be specified with any combination of specific families and predefined sets from :file:`RMG-database/input/families/recommended.py`.
+This can be specified with any combination of specific families and predefined sets from :file:`RMG-database/input/kinetics/families/recommended.py`.
For example, you can use only the :file:`H_Abstraction` family to build the model::
@@ -614,6 +613,51 @@ The following is an example of the quantum mechanics options ::
.. [RDKit] RDKit: Open-source cheminformatics; http://www.rdkit.org
+.. _mlEstimation:
+
+Machine Learning-based Thermo Estimation
+========================================
+
+This block is used to turn on the machine learning module to estimate thermodynamic parameters.
+These calculations are only run if the molecule is not included in a specified thermo library.
+There are a number of different settings that can be specified to tune the estimator so that it only tries to estimate
+some species. This is useful because the machine learning model may perform poorly for some molecules and group
+additivity may be more suitable. Using the machine learning estimator for fused cyclic species of moderate size or any
+species with significant proportions of oxygen and/or nitrogen atoms will most likely yield better estimates than
+group additivity.
+
+The available options with their default values are ::
+
+ mlEstimator(
+ thermo=True,
+ name='main',
+ minHeavyAtoms=1,
+ maxHeavyAtoms=None,
+ minCarbonAtoms=0,
+ maxCarbonAtoms=None,
+ minOxygenAtoms=0,
+ maxOxygenAtoms=None,
+ minNitrogenAtoms=0,
+ maxNitrogenAtoms=None,
+ onlyCyclics=False,
+ minCycleOverlap=0,
+ H298UncertaintyCutoff=(3.0, 'kcal/mol'),
+ S298UncertaintyCutoff=(2.0, 'cal/(mol*K)'),
+ CpUncertaintyCutoff=(2.0, 'cal/(mol*K)')
+ )
+
+``name`` is the name of the folder containing the machine learning model architecture and parameters in the RMG
+database. The next several options allow setting limits on the numbers of atoms. ``onlyCyclics`` means that only cyclic
+species will be estimated. ``minCycleOverlap`` specified the minimum number of atoms that must be shared between any
+two cycles. For example, if there are only disparate monocycles or no cycles in a species, the overlap is zero;
+"spiro" cycles have an overlap of one; "fused" cycles have an overlap of two; and "bridged" cycles have an overlap of
+at least three. Note that specifying any value greater than zero will automatically restrict the machine learning
+estimator to only consider cyclic species regardless of the ``onlyCyclics`` setting.
+
+If the estimated uncertainty of the thermo prediction is greater than any of the ``UncertaintyCutoff`` values, then
+machine learning estimation is not used for that species.
+
+
.. _pressuredependence:
Pressure Dependence
diff --git a/documentation/source/users/rmg/installation/anacondaDeveloper.rst b/documentation/source/users/rmg/installation/anacondaDeveloper.rst
index f15e1954ab..ab382b8ddc 100644
--- a/documentation/source/users/rmg/installation/anacondaDeveloper.rst
+++ b/documentation/source/users/rmg/installation/anacondaDeveloper.rst
@@ -55,7 +55,7 @@ Installation by Source Using Anaconda Environment for Unix-based Systems: Linux
mopac password_string_here
-You may now use RMG-Py, CanTherm, as well as any of the :ref:`Standalone Modules ` included in the RMG-Py package.
+You may now use RMG-Py, Arkane, as well as any of the :ref:`Standalone Modules ` included in the RMG-Py package.
diff --git a/documentation/source/users/rmg/installation/anacondaDeveloperWindows.rst b/documentation/source/users/rmg/installation/anacondaDeveloperWindows.rst
index 06c0fd0a37..8cc0a38812 100644
--- a/documentation/source/users/rmg/installation/anacondaDeveloperWindows.rst
+++ b/documentation/source/users/rmg/installation/anacondaDeveloperWindows.rst
@@ -48,7 +48,7 @@ Installation by Source Using Anaconda Environment for Windows
mopac password_string_here
-You may now use RMG-Py, CanTherm, as well as any of the :ref:`Standalone Modules ` included in the RMG-Py package.
+You may now use RMG-Py, Arkane, as well as any of the :ref:`Standalone Modules ` included in the RMG-Py package.
diff --git a/documentation/source/users/rmg/installation/anacondaUser.rst b/documentation/source/users/rmg/installation/anacondaUser.rst
index 0623b60d4b..05dccd0656 100644
--- a/documentation/source/users/rmg/installation/anacondaUser.rst
+++ b/documentation/source/users/rmg/installation/anacondaUser.rst
@@ -24,7 +24,7 @@ Binary Installation Using Anaconda for Unix-Based Systems: Linux and Mac OSX
rmg.py input.py
-You may now use RMG-Py, CanTherm, as well as any of the
+You may now use RMG-Py, Arkane, as well as any of the
:ref:`Standalone Modules ` included in the RMG-Py package.
diff --git a/documentation/source/users/rmg/installation/anacondaUserWindows.rst b/documentation/source/users/rmg/installation/anacondaUserWindows.rst
index fe31053d74..922aab5060 100644
--- a/documentation/source/users/rmg/installation/anacondaUserWindows.rst
+++ b/documentation/source/users/rmg/installation/anacondaUserWindows.rst
@@ -30,7 +30,7 @@ Binary Installation Using Anaconda for Windows
activate rmg_env
python %RMGPy%\rmg.py input.py
-You may now use RMG-Py, CanTherm, as well as any of the :ref:`Standalone Modules ` included in the RMG-Py package.
+You may now use RMG-Py, Arkane, as well as any of the :ref:`Standalone Modules ` included in the RMG-Py package.
Updating your binary installation of RMG for Windows
diff --git a/documentation/source/users/rmg/liquids.rst b/documentation/source/users/rmg/liquids.rst
index d4add493b0..91f240d33e 100644
--- a/documentation/source/users/rmg/liquids.rst
+++ b/documentation/source/users/rmg/liquids.rst
@@ -218,8 +218,8 @@ radii, and diffusivities are estimated with the Stokes-Einstein equation using e
viscosities (`\eta` (T)). In a unimolecular to bimolecular reaction, for example, the forward rate
constant (`k`\ :sub:`f`\ ) can be slowed down if the reverse rate (`k`\ :sub:`r, eff`\ ) is diffusion-limited
since the equilibrium constant (`K`\ :sub:`eq`\ ) is not affected by diffusion limitations. In cases
-where both the forward and the reverse reaction rates are multimolecular, both diffusive limits are
-estimated and RMG uses the direction with the larger magnitude.
+where both the forward and the reverse reaction rates are multimolecular, the forward rate coefficients limited in the
+forward and reverse directions are calculated and the limit with the smaller forward rate coefficient is used.
The viscosity of the solvent is calculated Pa.s using the solvent specified in the command line
and a correlation for the viscosity using parameters `A, B, C, D, E`:
diff --git a/documentation/source/users/rmg/modules/convertFAME.rst b/documentation/source/users/rmg/modules/convertFAME.rst
index 8c1f2ce111..f709206826 100644
--- a/documentation/source/users/rmg/modules/convertFAME.rst
+++ b/documentation/source/users/rmg/modules/convertFAME.rst
@@ -1,17 +1,20 @@
.. _convertFAME:
***********************************
-Convert FAME to CanTherm Input File
+Convert FAME to Arkane Input File
***********************************
-This module is utilized to convert FAME file types (used in RMG-Java) to CanTherm objects (used in RMG-Py) for pressure
-dependent calculations.
+This module is utilized to convert FAME file types (used in RMG-Java) to Arkane (formerly called CanTherm) objects
+(used in RMG-Py) for pressure dependent calculations.
-FAME is an early version of the pdep code in CanTherm written in Fortran and used by RMG-Java. This script enables importing FAME input files into CanTherm. Note that it is mostly designed to load the FAME input files generated automatically by RMG-Java, and may not load hand-crafted FAME input files. If you specify a `moleculeDict`, then this script will use it to associate the species with their structures. ::
+FAME is an early version of the pdep code in Arkane, and it is written in Fortran and used by RMG-Java.
+This script enables importing FAME input files into Arkane. Note that it is mostly designed to load the FAME input files
+generated automatically by RMG-Java, and may not load hand-crafted FAME input files. If you specify a `moleculeDict`,
+then this script will use it to associate the species with their structures. ::
python convertFAME.py fame_object
-where ``fame_object`` is the FAME file used to be converted into the CanTherm object.
+where ``fame_object`` is the FAME file used to be converted into the Arkane object.
Some additional options involve adding an RMG dictionary to process with the file. The syntax for this is ::
diff --git a/documentation/source/users/rmg/output.rst b/documentation/source/users/rmg/output.rst
index 6c1b30cf96..5b044f11e5 100755
--- a/documentation/source/users/rmg/output.rst
+++ b/documentation/source/users/rmg/output.rst
@@ -33,7 +33,10 @@ If ``generateOutputHTML=True`` is specified as an RMG input `option`, the specie
------------------
The Pdep Folder
------------------
-The ``/pdep`` folder will contain files associated with the pressure-dependent reactions that RMG has generated, if you requested such a job. These files are formatted as input files for :ref:`CanTherm `, which can be run independently. This can be useful if one wants to visualize the potential energy surface corresponding to any particular network.
+The ``/pdep`` folder will contain files associated with the pressure-dependent reactions that RMG has generated, if you
+requested such a job. These files are formatted as input files for :ref:`Arkane `, which can be run
+independently. This can be useful if one wants to visualize the potential energy surface corresponding to any particular
+network.
------------------
The Solver Folder
diff --git a/documentation/source/users/rmg/releaseNotes.rst b/documentation/source/users/rmg/releaseNotes.rst
index 7134c58430..11a9bd6054 100644
--- a/documentation/source/users/rmg/releaseNotes.rst
+++ b/documentation/source/users/rmg/releaseNotes.rst
@@ -4,6 +4,65 @@
Release Notes
*************
+RMG-Py Version 2.3.0
+====================
+Date: Dec 20, 2018
+
+- Arkane (formerly CanTherm):
+ - CanTherm had been renamed to Arkane (Automated Reaction Kinetics And Network Exploration)
+ - New network exploration functionality using RMG-database
+ - Support for all elements has been added for reading quantum output files
+ - New supporting information output file with rotational constants and frequencies
+ - Known thermo and kinetics can be provided in addition to quantum information
+ - Improve general user experience and error handling
+
+- New machine learning thermo estimator
+ - Estimate species thermochemistry using a graph convolutional neural network
+ - Estimator trained on quantum calculations at B3LYP and CCSD(T)-F12 levels
+ - Currently supports C/H/O/N, with an emphasis on cyclic molecules
+
+- Resonance:
+ - New pathways added for lone-pair multiple-bond resonance, replacing
+ two pathways which were more specific
+ - New pathways added for aryne resonance
+ - Aromatic resonance pathways simplified and refactored to use filtration
+ - Kekule structures are now considered unreactive structures
+
+- Miscellaneous changes:
+ - Isotope support added for reading and writing InChI strings
+ - New branching algorithm for picking up feedback loops implemented (beta)
+ - Global forbidden structure checking is now only done for core species for
+ efficiency, which may lead to forbidden species existing in the edge
+ - Minor improvements to symmetry algorithm to fix a few incorrect cases
+
+- Bug fixes:
+ - Fixed issue where react flags were being reset when filterReactions was
+ used with multiple reactors, resulting in no reactions generated
+ - File paths for collision violators log changed to output directory
+ - Fixed bug in local uncertainty introduced by ranged reactor changes
+ - Fixed bug with diffusion limitation calculations for multi-molecular reactions
+ - Various other minor fixes
+
+RMG-database Version 2.3.0
+==========================
+Date: Dec 20, 2018
+
+- Kinetics rules to training reactions
+ - All kinetics rules have been converted into training reactions by converting
+ each group to the smallest molecule that matches it
+ - Training reactions are preferred over rules because they correspond to a
+ specific reaction and are therefore easier to update
+ - This conversion is in anticipation of upcoming changes to trees in kinetics families
+
+- Additions:
+ - R_Addition_MultipleBond training reactions
+ - intra_NO2_ONO_conversion training reactions
+ - SABIC_aromatics thermo library (CBS-QB3, RRHO)
+ - McGowan volumes for noble gases
+ - More entries added to Lai_Hexylbenzene libraries
+ - Architecture and weights for neural network thermo estimator
+
+
RMG-Py Version 2.2.1
====================
Date July 23, 2018
diff --git a/environment_linux.yml b/environment_linux.yml
index 3e5ab2d83d..80e83fe2ee 100644
--- a/environment_linux.yml
+++ b/environment_linux.yml
@@ -41,3 +41,5 @@ dependencies:
- mock
- muq
- pymongo
+ - mpmath
+ - dde
diff --git a/environment_mac.yml b/environment_mac.yml
index cf69808d80..af5997fe97 100644
--- a/environment_mac.yml
+++ b/environment_mac.yml
@@ -40,3 +40,5 @@ dependencies:
- mock
# - muq
- pymongo
+ - mpmath
+ - dde
diff --git a/environment_windows.yml b/environment_windows.yml
index a241b9851a..662e2c101b 100644
--- a/environment_windows.yml
+++ b/environment_windows.yml
@@ -39,3 +39,5 @@ dependencies:
- mock
# - muq
- pymongo
+ - mpmath
+ - dde
diff --git a/examples/cantherm/networks/acetyl+O2/input.py b/examples/arkane/networks/acetyl+O2/input.py
similarity index 99%
rename from examples/cantherm/networks/acetyl+O2/input.py
rename to examples/arkane/networks/acetyl+O2/input.py
index fe08ae5ff0..a7d899cdef 100644
--- a/examples/cantherm/networks/acetyl+O2/input.py
+++ b/examples/arkane/networks/acetyl+O2/input.py
@@ -1,6 +1,6 @@
################################################################################
#
-# CanTherm input file for acetyl + O2 pressure-dependent reaction network
+# Arkane input file for acetyl + O2 pressure-dependent reaction network
#
################################################################################
@@ -145,6 +145,7 @@
structure = SMILES('N#N'),
molecularWeight = (28.04,"g/mol"),
collisionModel = TransportData(sigma=(3.70,'angstrom'), epsilon=(94.9,'K')),
+ reactive = False
)
################################################################################
diff --git a/examples/cantherm/networks/methoxy/README.txt b/examples/arkane/networks/methoxy/README.txt
similarity index 100%
rename from examples/cantherm/networks/methoxy/README.txt
rename to examples/arkane/networks/methoxy/README.txt
diff --git a/examples/cantherm/networks/methoxy/input.py b/examples/arkane/networks/methoxy/input.py
similarity index 82%
rename from examples/cantherm/networks/methoxy/input.py
rename to examples/arkane/networks/methoxy/input.py
index 153332a9a0..807d9e5158 100644
--- a/examples/cantherm/networks/methoxy/input.py
+++ b/examples/arkane/networks/methoxy/input.py
@@ -1,14 +1,22 @@
-
title = 'methoxy decomposition to H + CH2O'
description = \
"""
-This example illustrates how to manually set up a CanTherm input file for a small P-dep reaction system [using only the
-RRHO assumption, and without tunneling, although this can be easily implemented]. Such a calculation is desireable if the user
-wishes to supply experimentally determined freqeuncies, for example. Althgou some coommented notes below may be useful,
-see http://greengroup.github.io/RMG-Py/users/cantherm/index.html for more documented information about CanTherm and
-creating input files. (information pertaining this file is adopted by Dames and Golden, 2013, JPCA 117 (33) 7686-96.)
+This example illustrates how to manually set up an Arkane input file for a small P-dep reaction system (using only the
+RRHO assumption, and without tunneling, although this can be easily implemented). Such a calculation is desirable if
+the user wishes to supply experimentally determined frequencies, for example. Although some commented notes below may
+be useful, see http://reactionmechanismgenerator.github.io/RMG-Py/users/arkane/index.html for more documented information about
+Arkane and creating input files.
+(information pertaining this file is adopted by Dames and Golden, 2013, JPCA 117 (33) 7686-96.)
"""
+database(
+ thermoLibraries = ['primaryThermoLibrary'],
+ reactionLibraries = [],
+ kineticsDepositories = ['training'],
+ kineticsFamilies = 'default',
+ kineticsEstimator = 'rate rules',
+)
+
transitionState(
label = 'TS3',
E0 = (34.1,'kcal/mol'), # this INCLUDES the ZPE. Note that other energy units are also possible (e.g., kJ/mol)
@@ -66,9 +74,9 @@
energyTransferModel = SingleExponentialDown(alpha0=(0.956,'kJ/mol'), T0=(300,'K'), n=0.95),
)
-
species(
label = 'CH2O',
+ structure = SMILES('C=O'),
E0 = (28.69,'kcal/mol'),
molecularWeight = (30.0106,"g/mol"),
collisionModel = TransportData(sigma=(3.69e-10,'m'), epsilon=(4.0,'kJ/mol')),
@@ -84,20 +92,22 @@
species(
label = 'H',
+ structure = SMILES('[H]'),
E0 = (0.000,'kcal/mol'),
- molecularWeight = (1.00783,"g/mol"),
+ molecularWeight = (1.00783,"g/mol"),
collisionModel = TransportData(sigma=(3.69e-10,'m'), epsilon=(4.0,'kJ/mol')),
energyTransferModel = SingleExponentialDown(alpha0=(0.956,'kJ/mol'), T0=(300,'K'), n=0.95),
modes = [
IdealGasTranslation(mass=(1.00783,"g/mol")),
],
- spinMultiplicity = 2,
+ spinMultiplicity = 2,
opticalIsomers = 1,
)
species(
label = 'CH2Ob', #this is a special system with two chemically equivalent product channels. Thus, different labels are used.
+ structure = SMILES('C=O'),
E0 = (28.69,'kcal/mol'),
molecularWeight = (30.0106,"g/mol"),
collisionModel = TransportData(sigma=(3.69e-10,'m'), epsilon=(4.0,'kJ/mol')),
@@ -113,6 +123,7 @@
species(
label = 'Hb',
+ structure = SMILES('[H]'),
E0 = (0.0001,'kcal/mol'),
molecularWeight = (1.00783,"g/mol"),
collisionModel = TransportData(sigma=(3.69e-10,'m'), epsilon=(4.0,'kJ/mol')),
@@ -126,12 +137,13 @@
)
species(
label = 'CH2OH',
+ structure = SMILES('[CH2]O'),
E0 = (0.00,'kcal/mol'),
molecularWeight = (31.01843,"g/mol"),
modes = [
HarmonicOscillator(frequencies=([418,595, 1055, 1198, 1368, 1488, 3138, 3279, 3840],'cm^-1')),
# below is an example of how to include hindered rotors
- #HinderedRotor(inertia=(5.75522e-47,'kg*m^2'), symmetry=1, barrier=(22427.8,'J/mol'), semiclassical=False),
+ #HinderedRotor(inertia=(5.75522e-47,'kg*m^2'), symmetry=1, barrier=(22427.8,'J/mol'), semiclassical=False),
NonlinearRotor(rotationalConstant=([0.868,0.993,6.419],"cm^-1"),symmetry=1, quantum=False),
IdealGasTranslation(mass=(31.01843,"g/mol")),
],
@@ -145,6 +157,7 @@
label = 'He',
# freqScaleFactor = 1, # TypeError: species() got an unexpected keyword argument 'freqScaleFactor'.
structure = SMILES('[He]'),
+ reactive=False,
molecularWeight = (4.003,'amu'),
collisionModel = TransportData(sigma=(2.55e-10,'m'), epsilon=(0.0831,'kJ/mol')),
energyTransferModel = SingleExponentialDown(alpha0=(0.956,'kJ/mol'), T0=(300,'K'), n=0.95),
@@ -152,59 +165,28 @@
reaction(
label = 'CH2O+H=Methoxy',
-# label = 'Methoxy = CH2O+H',
reactants = ['CH2O','H'],
products = ['methoxy'],
-# reactants = ['methoxy'],
-# products = ['CH2O', 'H'],
transitionState = 'TS3',
- #tunneling='Eckart',
)
reaction(
- # label = 'CH2Ob+Hb=CH2OH',
label = 'CH2OH = CH2Ob+Hb',
-# products = ['CH2OH'],
reactants = ['CH2OH'],
-# reactants = ['CH2Ob','Hb'],
products = ['CH2Ob', 'Hb'],
transitionState = 'TS1',
- #tunneling='Eckart',
)
reaction(
label = 'CH2OH = Methoxy',
-# reactants = ['methoxy'],
-# products = ['CH2OH'],
-# label = 'Methoxy = CH2OH',
products = ['methoxy'],
reactants = ['CH2OH'],
transitionState = 'TS2',
- #tunneling='Eckart',
)
kinetics('CH2O+H=Methoxy')
-#kinetics('Methoxy = CH2O+H' )
-#kinetics('Methoxy = CH2OH' )
kinetics('CH2OH = Methoxy')
kinetics('CH2OH = CH2Ob+Hb' )
-#kinetics('CH2Ob+Hb=CH2OH')
-network(
- label = 'methoxy',
- isomers = [
- 'methoxy',
- 'CH2OH',
- ],
-
- reactants = [
- ('CH2O','H'),
-# ('CH2Ob','Hb'),
- ],
-
- bathGas = {
- 'He': 1,
- },
-)
pressureDependence(
label = 'methoxy',
@@ -218,6 +200,15 @@
#Other methods include: 'reservoir state', 'chemically-significant eigenvalues',
interpolationModel = ('pdeparrhenius'),
activeKRotor = True,
-# activeJRotor = False, #causes cantherm to crash
+# activeJRotor = False, # causes Arkane to crash
rmgmode = False,
)
+
+explorer(
+ source=['methoxy'],
+ explore_tol=(1e-2,'s^-1'),
+ energy_tol=8e1,
+ flux_tol=1e-6,
+ bathGas={'He':1.0},
+ maximumRadicalElectrons=2,
+)
diff --git a/examples/cantherm/networks/methoxy/run-cantherm b/examples/arkane/networks/methoxy/run-arkane
similarity index 78%
rename from examples/cantherm/networks/methoxy/run-cantherm
rename to examples/arkane/networks/methoxy/run-arkane
index 5c830e9d6c..705720be79 100755
--- a/examples/cantherm/networks/methoxy/run-cantherm
+++ b/examples/arkane/networks/methoxy/run-arkane
@@ -1,3 +1,3 @@
#!/bin/bash
-python ../../../../cantherm.py input.py
+python ../../../../arkane.py input.py
diff --git a/examples/cantherm/networks/n-butanol/input.py b/examples/arkane/networks/n-butanol/input.py
similarity index 99%
rename from examples/cantherm/networks/n-butanol/input.py
rename to examples/arkane/networks/n-butanol/input.py
index 26dc93b933..cfdd9d832f 100644
--- a/examples/cantherm/networks/n-butanol/input.py
+++ b/examples/arkane/networks/n-butanol/input.py
@@ -67,6 +67,7 @@
molecularWeight = (28.04,"g/mol"),
collisionModel = TransportData(sigma=(3.41,"angstrom"), epsilon=(124,"K")),
energyTransferModel = None,
+ reactive = False,
)
thermo('H2O','NASA')
diff --git a/examples/cantherm/reactions/23dimethylpropoxy/dimetpropoxy.out b/examples/arkane/reactions/23dimethylpropoxy/dimetpropoxy.out
similarity index 100%
rename from examples/cantherm/reactions/23dimethylpropoxy/dimetpropoxy.out
rename to examples/arkane/reactions/23dimethylpropoxy/dimetpropoxy.out
diff --git a/examples/cantherm/reactions/23dimethylpropoxy/dimetpropoxy.py b/examples/arkane/reactions/23dimethylpropoxy/dimetpropoxy.py
similarity index 100%
rename from examples/cantherm/reactions/23dimethylpropoxy/dimetpropoxy.py
rename to examples/arkane/reactions/23dimethylpropoxy/dimetpropoxy.py
diff --git a/examples/cantherm/reactions/23dimethylpropoxy/dimetpropoxy_betasci.out b/examples/arkane/reactions/23dimethylpropoxy/dimetpropoxy_betasci.out
similarity index 100%
rename from examples/cantherm/reactions/23dimethylpropoxy/dimetpropoxy_betasci.out
rename to examples/arkane/reactions/23dimethylpropoxy/dimetpropoxy_betasci.out
diff --git a/examples/cantherm/reactions/23dimethylpropoxy/dimetpropoxy_betasci.py b/examples/arkane/reactions/23dimethylpropoxy/dimetpropoxy_betasci.py
similarity index 100%
rename from examples/cantherm/reactions/23dimethylpropoxy/dimetpropoxy_betasci.py
rename to examples/arkane/reactions/23dimethylpropoxy/dimetpropoxy_betasci.py
diff --git a/examples/cantherm/reactions/23dimethylpropoxy/cantherm_dimetpropoxy.py b/examples/arkane/reactions/23dimethylpropoxy/input.py
similarity index 100%
rename from examples/cantherm/reactions/23dimethylpropoxy/cantherm_dimetpropoxy.py
rename to examples/arkane/reactions/23dimethylpropoxy/input.py
diff --git a/examples/cantherm/reactions/CH3OH+HCO/ch3oh.out b/examples/arkane/reactions/CH3OH+HCO/ch3oh.out
similarity index 100%
rename from examples/cantherm/reactions/CH3OH+HCO/ch3oh.out
rename to examples/arkane/reactions/CH3OH+HCO/ch3oh.out
diff --git a/examples/cantherm/reactions/CH3OH+HCO/ch3oh.py b/examples/arkane/reactions/CH3OH+HCO/ch3oh.py
similarity index 100%
rename from examples/cantherm/reactions/CH3OH+HCO/ch3oh.py
rename to examples/arkane/reactions/CH3OH+HCO/ch3oh.py
diff --git a/examples/cantherm/reactions/CH3OH+HCO/hco.out b/examples/arkane/reactions/CH3OH+HCO/hco.out
similarity index 100%
rename from examples/cantherm/reactions/CH3OH+HCO/hco.out
rename to examples/arkane/reactions/CH3OH+HCO/hco.out
diff --git a/examples/cantherm/reactions/CH3OH+HCO/hco.py b/examples/arkane/reactions/CH3OH+HCO/hco.py
similarity index 100%
rename from examples/cantherm/reactions/CH3OH+HCO/hco.py
rename to examples/arkane/reactions/CH3OH+HCO/hco.py
diff --git a/examples/cantherm/reactions/CH3OH+HCO/input.py b/examples/arkane/reactions/CH3OH+HCO/input.py
similarity index 100%
rename from examples/cantherm/reactions/CH3OH+HCO/input.py
rename to examples/arkane/reactions/CH3OH+HCO/input.py
diff --git a/examples/cantherm/reactions/CH3OH+HCO/ts.py b/examples/arkane/reactions/CH3OH+HCO/ts.py
similarity index 100%
rename from examples/cantherm/reactions/CH3OH+HCO/ts.py
rename to examples/arkane/reactions/CH3OH+HCO/ts.py
diff --git a/examples/cantherm/reactions/CH3OH+HCO/ts1.out b/examples/arkane/reactions/CH3OH+HCO/ts1.out
similarity index 100%
rename from examples/cantherm/reactions/CH3OH+HCO/ts1.out
rename to examples/arkane/reactions/CH3OH+HCO/ts1.out
diff --git a/examples/cantherm/reactions/H+C2H4=C2H5/TS.py b/examples/arkane/reactions/H+C2H4=C2H5/TS.py
similarity index 100%
rename from examples/cantherm/reactions/H+C2H4=C2H5/TS.py
rename to examples/arkane/reactions/H+C2H4=C2H5/TS.py
diff --git a/examples/cantherm/reactions/H+C2H4=C2H5/TS_energy.log b/examples/arkane/reactions/H+C2H4=C2H5/TS_energy.log
similarity index 100%
rename from examples/cantherm/reactions/H+C2H4=C2H5/TS_energy.log
rename to examples/arkane/reactions/H+C2H4=C2H5/TS_energy.log
diff --git a/examples/cantherm/reactions/H+C2H4=C2H5/TS_freq.log b/examples/arkane/reactions/H+C2H4=C2H5/TS_freq.log
similarity index 100%
rename from examples/cantherm/reactions/H+C2H4=C2H5/TS_freq.log
rename to examples/arkane/reactions/H+C2H4=C2H5/TS_freq.log
diff --git a/examples/cantherm/reactions/H+C2H4=C2H5/input.py b/examples/arkane/reactions/H+C2H4=C2H5/input.py
similarity index 100%
rename from examples/cantherm/reactions/H+C2H4=C2H5/input.py
rename to examples/arkane/reactions/H+C2H4=C2H5/input.py
diff --git a/rmgpy/cantherm/data/Benzyl/BenzylEnergy.log b/examples/arkane/species/Benzyl/BenzylEnergy.log
similarity index 100%
rename from rmgpy/cantherm/data/Benzyl/BenzylEnergy.log
rename to examples/arkane/species/Benzyl/BenzylEnergy.log
diff --git a/rmgpy/cantherm/data/Benzyl/BenzylFreq.log b/examples/arkane/species/Benzyl/BenzylFreq.log
similarity index 100%
rename from rmgpy/cantherm/data/Benzyl/BenzylFreq.log
rename to examples/arkane/species/Benzyl/BenzylFreq.log
diff --git a/rmgpy/cantherm/data/Benzyl/BenzylRot1.log b/examples/arkane/species/Benzyl/BenzylRot1.log
similarity index 100%
rename from rmgpy/cantherm/data/Benzyl/BenzylRot1.log
rename to examples/arkane/species/Benzyl/BenzylRot1.log
diff --git a/examples/cantherm/species/Benzyl/benzyl.py b/examples/arkane/species/Benzyl/benzyl.py
similarity index 100%
rename from examples/cantherm/species/Benzyl/benzyl.py
rename to examples/arkane/species/Benzyl/benzyl.py
diff --git a/examples/cantherm/species/Benzyl/input.py b/examples/arkane/species/Benzyl/input.py
similarity index 100%
rename from examples/cantherm/species/Benzyl/input.py
rename to examples/arkane/species/Benzyl/input.py
diff --git a/examples/cantherm/species/C2H4/ethene.log b/examples/arkane/species/C2H4/ethene.log
similarity index 99%
rename from examples/cantherm/species/C2H4/ethene.log
rename to examples/arkane/species/C2H4/ethene.log
index 86cc1d5bbb..963eea3f0c 100644
--- a/examples/cantherm/species/C2H4/ethene.log
+++ b/examples/arkane/species/C2H4/ethene.log
@@ -1826,4 +1826,4 @@
00000900,0.00001502,0.,0.00005012\\\@
Job cpu time: 0 days 0 hours 0 minutes 39.5 seconds.
File lengths (MBytes): RWF= 329 Int= 0 D2E= 0 Chk= 11 Scr= 1
- Normal termination of Gaussian 03 at Fri Feb 9 00:59:20 2007.
+ Normal termination of Gaussian 03 at Fri Feb 9 00:59:20 2007.
diff --git a/examples/cantherm/species/C2H4/ethene.py b/examples/arkane/species/C2H4/ethene.py
similarity index 100%
rename from examples/cantherm/species/C2H4/ethene.py
rename to examples/arkane/species/C2H4/ethene.py
diff --git a/examples/cantherm/species/C2H4/ethene_f12.out b/examples/arkane/species/C2H4/ethene_f12.out
similarity index 100%
rename from examples/cantherm/species/C2H4/ethene_f12.out
rename to examples/arkane/species/C2H4/ethene_f12.out
diff --git a/examples/cantherm/species/C2H4/ethene_freq.log b/examples/arkane/species/C2H4/ethene_freq.log
similarity index 100%
rename from examples/cantherm/species/C2H4/ethene_freq.log
rename to examples/arkane/species/C2H4/ethene_freq.log
diff --git a/examples/cantherm/species/C2H4/input.py b/examples/arkane/species/C2H4/input.py
similarity index 100%
rename from examples/cantherm/species/C2H4/input.py
rename to examples/arkane/species/C2H4/input.py
diff --git a/examples/cantherm/species/C2H5/ethyl.py b/examples/arkane/species/C2H5/ethyl.py
similarity index 100%
rename from examples/cantherm/species/C2H5/ethyl.py
rename to examples/arkane/species/C2H5/ethyl.py
diff --git a/examples/cantherm/species/C2H5/ethyl_b3lyp.log b/examples/arkane/species/C2H5/ethyl_b3lyp.log
similarity index 100%
rename from examples/cantherm/species/C2H5/ethyl_b3lyp.log
rename to examples/arkane/species/C2H5/ethyl_b3lyp.log
diff --git a/examples/cantherm/species/C2H5/ethyl_cbsqb3.log b/examples/arkane/species/C2H5/ethyl_cbsqb3.log
similarity index 100%
rename from examples/cantherm/species/C2H5/ethyl_cbsqb3.log
rename to examples/arkane/species/C2H5/ethyl_cbsqb3.log
diff --git a/examples/cantherm/species/C2H5/ethyl_scan_1.log b/examples/arkane/species/C2H5/ethyl_scan_1.log
similarity index 100%
rename from examples/cantherm/species/C2H5/ethyl_scan_1.log
rename to examples/arkane/species/C2H5/ethyl_scan_1.log
diff --git a/examples/cantherm/species/C2H5/ethyl_scan_72.log b/examples/arkane/species/C2H5/ethyl_scan_72.log
similarity index 100%
rename from examples/cantherm/species/C2H5/ethyl_scan_72.log
rename to examples/arkane/species/C2H5/ethyl_scan_72.log
diff --git a/examples/cantherm/species/C2H5/input.py b/examples/arkane/species/C2H5/input.py
similarity index 100%
rename from examples/cantherm/species/C2H5/input.py
rename to examples/arkane/species/C2H5/input.py
diff --git a/examples/cantherm/species/C2H6/C2H6.py b/examples/arkane/species/C2H6/C2H6.py
similarity index 100%
rename from examples/cantherm/species/C2H6/C2H6.py
rename to examples/arkane/species/C2H6/C2H6.py
diff --git a/examples/cantherm/species/C2H6/ethane_b3lyp.log b/examples/arkane/species/C2H6/ethane_b3lyp.log
similarity index 100%
rename from examples/cantherm/species/C2H6/ethane_b3lyp.log
rename to examples/arkane/species/C2H6/ethane_b3lyp.log
diff --git a/examples/cantherm/species/C2H6/ethane_cbsqb3.log b/examples/arkane/species/C2H6/ethane_cbsqb3.log
similarity index 100%
rename from examples/cantherm/species/C2H6/ethane_cbsqb3.log
rename to examples/arkane/species/C2H6/ethane_cbsqb3.log
diff --git a/examples/cantherm/species/C2H6/ethane_scan_1.log b/examples/arkane/species/C2H6/ethane_scan_1.log
similarity index 100%
rename from examples/cantherm/species/C2H6/ethane_scan_1.log
rename to examples/arkane/species/C2H6/ethane_scan_1.log
diff --git a/examples/cantherm/species/C2H6/input.py b/examples/arkane/species/C2H6/input.py
similarity index 100%
rename from examples/cantherm/species/C2H6/input.py
rename to examples/arkane/species/C2H6/input.py
diff --git a/examples/cantherm/species/H/H.py b/examples/arkane/species/H/H.py
similarity index 100%
rename from examples/cantherm/species/H/H.py
rename to examples/arkane/species/H/H.py
diff --git a/examples/cantherm/species/H/H_cbsqb3.log b/examples/arkane/species/H/H_cbsqb3.log
similarity index 100%
rename from examples/cantherm/species/H/H_cbsqb3.log
rename to examples/arkane/species/H/H_cbsqb3.log
diff --git a/examples/cantherm/species/H/input.py b/examples/arkane/species/H/input.py
similarity index 100%
rename from examples/cantherm/species/H/input.py
rename to examples/arkane/species/H/input.py
diff --git a/examples/cantherm/species/Toulene/TolueneEnergy.log b/examples/arkane/species/Toulene_Free_Rotor/TolueneEnergy.log
similarity index 100%
rename from examples/cantherm/species/Toulene/TolueneEnergy.log
rename to examples/arkane/species/Toulene_Free_Rotor/TolueneEnergy.log
diff --git a/examples/cantherm/species/Toulene/TolueneFreq.log b/examples/arkane/species/Toulene_Free_Rotor/TolueneFreq.log
similarity index 100%
rename from examples/cantherm/species/Toulene/TolueneFreq.log
rename to examples/arkane/species/Toulene_Free_Rotor/TolueneFreq.log
diff --git a/examples/cantherm/species/Toulene/input_toluene_FreeRotor.py b/examples/arkane/species/Toulene_Free_Rotor/input.py
similarity index 100%
rename from examples/cantherm/species/Toulene/input_toluene_FreeRotor.py
rename to examples/arkane/species/Toulene_Free_Rotor/input.py
diff --git a/examples/cantherm/species/Toulene/toluene_FreeRotor.py b/examples/arkane/species/Toulene_Free_Rotor/toluene_FreeRotor.py
similarity index 76%
rename from examples/cantherm/species/Toulene/toluene_FreeRotor.py
rename to examples/arkane/species/Toulene_Free_Rotor/toluene_FreeRotor.py
index 7156f672a7..024011b0b3 100755
--- a/examples/cantherm/species/Toulene/toluene_FreeRotor.py
+++ b/examples/arkane/species/Toulene_Free_Rotor/toluene_FreeRotor.py
@@ -23,6 +23,4 @@
frequencies = Log('TolueneFreq.log')
-rotors = [
-FreeRotor(pivots=[3,12],top=[12,13,14,15],symmetry=6)
-]
+rotors = [FreeRotor(pivots=[3,12], top=[12,13,14,15], symmetry=6)]
diff --git a/examples/arkane/species/Toulene_Hindered_Rotor/TolueneEnergy.log b/examples/arkane/species/Toulene_Hindered_Rotor/TolueneEnergy.log
new file mode 100755
index 0000000000..93e1e87b2b
--- /dev/null
+++ b/examples/arkane/species/Toulene_Hindered_Rotor/TolueneEnergy.log
@@ -0,0 +1,3860 @@
+ Entering Gaussian System, Link 0=g16
+ Initial command:
+ /usr/common/software/g16/a03/g16/l1.exe "/global/cscratch1/sd/laitcl/Gau-3651.inp" -scrdir="/global/cscratch1/sd/laitcl/"
+ Entering Link 1 = /usr/common/software/g16/a03/g16/l1.exe PID= 3652.
+
+ Copyright (c) 1988,1990,1992,1993,1995,1998,2003,2009,2016,
+ Gaussian, Inc. All Rights Reserved.
+
+ This is part of the Gaussian(R) 16 program. It is based on
+ the Gaussian(R) 09 system (copyright 2009, Gaussian, Inc.),
+ the Gaussian(R) 03 system (copyright 2003, Gaussian, Inc.),
+ the Gaussian(R) 98 system (copyright 1998, Gaussian, Inc.),
+ the Gaussian(R) 94 system (copyright 1995, Gaussian, Inc.),
+ the Gaussian 92(TM) system (copyright 1992, Gaussian, Inc.),
+ the Gaussian 90(TM) system (copyright 1990, Gaussian, Inc.),
+ the Gaussian 88(TM) system (copyright 1988, Gaussian, Inc.),
+ the Gaussian 86(TM) system (copyright 1986, Carnegie Mellon
+ University), and the Gaussian 82(TM) system (copyright 1983,
+ Carnegie Mellon University). Gaussian is a federally registered
+ trademark of Gaussian, Inc.
+
+ This software contains proprietary and confidential information,
+ including trade secrets, belonging to Gaussian, Inc.
+
+ This software is provided under written license and may be
+ used, copied, transmitted, or stored only in accord with that
+ written license.
+
+ The following legend is applicable only to US Government
+ contracts under FAR:
+
+ RESTRICTED RIGHTS LEGEND
+
+ Use, reproduction and disclosure by the US Government is
+ subject to restrictions as set forth in subparagraphs (a)
+ and (c) of the Commercial Computer Software - Restricted
+ Rights clause in FAR 52.227-19.
+
+ Gaussian, Inc.
+ 340 Quinnipiac St., Bldg. 40, Wallingford CT 06492
+
+
+ ---------------------------------------------------------------
+ Warning -- This program may not be used in any manner that
+ competes with the business of Gaussian, Inc. or will provide
+ assistance to any competitor of Gaussian, Inc. The licensee
+ of this program is prohibited from giving any competitor of
+ Gaussian, Inc. access to this program. By using this program,
+ the user acknowledges that Gaussian, Inc. is engaged in the
+ business of creating and licensing software in the field of
+ computational chemistry and represents and warrants to the
+ licensee that it is not a competitor of Gaussian, Inc. and that
+ it will not use this program in any manner prohibited above.
+ ---------------------------------------------------------------
+
+
+ Cite this work as:
+ Gaussian 16, Revision A.03,
+ M. J. Frisch, G. W. Trucks, H. B. Schlegel, G. E. Scuseria,
+ M. A. Robb, J. R. Cheeseman, G. Scalmani, V. Barone,
+ G. A. Petersson, H. Nakatsuji, X. Li, M. Caricato, A. V. Marenich,
+ J. Bloino, B. G. Janesko, R. Gomperts, B. Mennucci, H. P. Hratchian,
+ J. V. Ortiz, A. F. Izmaylov, J. L. Sonnenberg, D. Williams-Young,
+ F. Ding, F. Lipparini, F. Egidi, J. Goings, B. Peng, A. Petrone,
+ T. Henderson, D. Ranasinghe, V. G. Zakrzewski, J. Gao, N. Rega,
+ G. Zheng, W. Liang, M. Hada, M. Ehara, K. Toyota, R. Fukuda,
+ J. Hasegawa, M. Ishida, T. Nakajima, Y. Honda, O. Kitao, H. Nakai,
+ T. Vreven, K. Throssell, J. A. Montgomery, Jr., J. E. Peralta,
+ F. Ogliaro, M. J. Bearpark, J. J. Heyd, E. N. Brothers, K. N. Kudin,
+ V. N. Staroverov, T. A. Keith, R. Kobayashi, J. Normand,
+ K. Raghavachari, A. P. Rendell, J. C. Burant, S. S. Iyengar,
+ J. Tomasi, M. Cossi, J. M. Millam, M. Klene, C. Adamo, R. Cammi,
+ J. W. Ochterski, R. L. Martin, K. Morokuma, O. Farkas,
+ J. B. Foresman, and D. J. Fox, Gaussian, Inc., Wallingford CT, 2016.
+
+ ******************************************
+ Gaussian 16: ES64L-G16RevA.03 25-Dec-2016
+ 23-Feb-2017
+ ******************************************
+ %chk=TolueneEnergy.chk
+ %mem=1000mb
+ %nprocshared=8
+ Will use up to 8 processors via shared memory.
+ ---------
+ # cbs-qb3
+ ---------
+ 1/18=20,19=15,26=3,38=1/1,3;
+ 2/9=110,12=2,17=6,18=5,40=1/2;
+ 3/5=4,6=6,7=700,11=2,25=1,30=1,71=1,74=-5/1,2,3;
+ 4//1;
+ 5/5=2,38=5/2;
+ 6/7=2,8=2,9=2,10=2,28=1/1;
+ 7//1,2,3,16;
+ 1/18=20,19=15,26=3/3(2);
+ 2/9=110/2;
+ 99//99;
+ 2/9=110/2;
+ 3/5=4,6=6,7=700,11=2,25=1,30=1,71=1,74=-5/1,2,3;
+ 4/5=5,16=3,69=1/1;
+ 5/5=2,38=5/2;
+ 7//1,2,3,16;
+ 1/18=20,19=15,26=3/3(-5);
+ 2/9=110/2;
+ 6/7=2,8=2,9=2,10=2,19=2,28=1/1;
+ 99/9=1/99;
+ --------------
+ Toluene Energy
+ --------------
+ Symbolic Z-matrix:
+ Charge = 0 Multiplicity = 1
+ C 0.00438 0.91242 0.
+ C 0.00722 0.19388 1.20014
+ C 0.00722 -1.19907 1.20295
+ C 0.00633 -1.90168 0.
+ C 0.00722 -1.19907 -1.20295
+ C 0.00722 0.19388 -1.20014
+ C -0.02791 2.42229 0.
+ H 0.01176 0.73188 2.14306
+ H 0.01184 -1.73554 2.14555
+ H 0.00931 -2.98585 0.
+ H 0.01184 -1.73554 -2.14555
+ H 0.01176 0.73188 -2.14306
+ H -1.05878 2.79351 0.
+ H 0.46609 2.83186 0.88421
+ H 0.46609 2.83186 -0.88421
+
+
+ GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad
+ Berny optimization.
+ Initialization pass.
+ ----------------------------
+ ! Initial Parameters !
+ ! (Angstroms and Degrees) !
+ -------------------------- --------------------------
+ ! Name Definition Value Derivative Info. !
+ --------------------------------------------------------------------------------
+ ! R1 R(1,2) 1.3988 estimate D2E/DX2 !
+ ! R2 R(1,6) 1.3988 estimate D2E/DX2 !
+ ! R3 R(1,7) 1.5102 estimate D2E/DX2 !
+ ! R4 R(2,3) 1.393 estimate D2E/DX2 !
+ ! R5 R(2,8) 1.0856 estimate D2E/DX2 !
+ ! R6 R(3,4) 1.3931 estimate D2E/DX2 !
+ ! R7 R(3,9) 1.0846 estimate D2E/DX2 !
+ ! R8 R(4,5) 1.3931 estimate D2E/DX2 !
+ ! R9 R(4,10) 1.0842 estimate D2E/DX2 !
+ ! R10 R(5,6) 1.393 estimate D2E/DX2 !
+ ! R11 R(5,11) 1.0846 estimate D2E/DX2 !
+ ! R12 R(6,12) 1.0856 estimate D2E/DX2 !
+ ! R13 R(7,13) 1.0957 estimate D2E/DX2 !
+ ! R14 R(7,14) 1.0925 estimate D2E/DX2 !
+ ! R15 R(7,15) 1.0925 estimate D2E/DX2 !
+ ! A1 A(2,1,6) 118.1806 estimate D2E/DX2 !
+ ! A2 A(2,1,7) 120.9045 estimate D2E/DX2 !
+ ! A3 A(6,1,7) 120.9045 estimate D2E/DX2 !
+ ! A4 A(1,2,3) 121.025 estimate D2E/DX2 !
+ ! A5 A(1,2,8) 119.383 estimate D2E/DX2 !
+ ! A6 A(3,2,8) 119.5918 estimate D2E/DX2 !
+ ! A7 A(2,3,4) 120.1724 estimate D2E/DX2 !
+ ! A8 A(2,3,9) 119.7612 estimate D2E/DX2 !
+ ! A9 A(4,3,9) 120.066 estimate D2E/DX2 !
+ ! A10 A(3,4,5) 119.4239 estimate D2E/DX2 !
+ ! A11 A(3,4,10) 120.2878 estimate D2E/DX2 !
+ ! A12 A(5,4,10) 120.2878 estimate D2E/DX2 !
+ ! A13 A(4,5,6) 120.1724 estimate D2E/DX2 !
+ ! A14 A(4,5,11) 120.066 estimate D2E/DX2 !
+ ! A15 A(6,5,11) 119.7612 estimate D2E/DX2 !
+ ! A16 A(1,6,5) 121.025 estimate D2E/DX2 !
+ ! A17 A(1,6,12) 119.383 estimate D2E/DX2 !
+ ! A18 A(5,6,12) 119.5918 estimate D2E/DX2 !
+ ! A19 A(1,7,13) 111.0293 estimate D2E/DX2 !
+ ! A20 A(1,7,14) 111.4156 estimate D2E/DX2 !
+ ! A21 A(1,7,15) 111.4156 estimate D2E/DX2 !
+ ! A22 A(13,7,14) 107.362 estimate D2E/DX2 !
+ ! A23 A(13,7,15) 107.362 estimate D2E/DX2 !
+ ! A24 A(14,7,15) 108.0605 estimate D2E/DX2 !
+ ! D1 D(6,1,2,3) -0.2643 estimate D2E/DX2 !
+ ! D2 D(6,1,2,8) 179.5962 estimate D2E/DX2 !
+ ! D3 D(7,1,2,3) 178.5718 estimate D2E/DX2 !
+ ! D4 D(7,1,2,8) -1.5677 estimate D2E/DX2 !
+ ! D5 D(2,1,6,5) 0.2643 estimate D2E/DX2 !
+ ! D6 D(2,1,6,12) -179.5962 estimate D2E/DX2 !
+ ! D7 D(7,1,6,5) -178.5718 estimate D2E/DX2 !
+ ! D8 D(7,1,6,12) 1.5677 estimate D2E/DX2 !
+ ! D9 D(2,1,7,13) -89.4021 estimate D2E/DX2 !
+ ! D10 D(2,1,7,14) 30.2147 estimate D2E/DX2 !
+ ! D11 D(2,1,7,15) 150.9811 estimate D2E/DX2 !
+ ! D12 D(6,1,7,13) 89.4021 estimate D2E/DX2 !
+ ! D13 D(6,1,7,14) -150.9811 estimate D2E/DX2 !
+ ! D14 D(6,1,7,15) -30.2147 estimate D2E/DX2 !
+ ! D15 D(1,2,3,4) 0.0934 estimate D2E/DX2 !
+ ! D16 D(1,2,3,9) 179.8546 estimate D2E/DX2 !
+ ! D17 D(8,2,3,4) -179.7668 estimate D2E/DX2 !
+ ! D18 D(8,2,3,9) -0.0056 estimate D2E/DX2 !
+ ! D19 D(2,3,4,5) 0.084 estimate D2E/DX2 !
+ ! D20 D(2,3,4,10) 179.8175 estimate D2E/DX2 !
+ ! D21 D(9,3,4,5) -179.6765 estimate D2E/DX2 !
+ ! D22 D(9,3,4,10) 0.0571 estimate D2E/DX2 !
+ ! D23 D(3,4,5,6) -0.084 estimate D2E/DX2 !
+ ! D24 D(3,4,5,11) 179.6765 estimate D2E/DX2 !
+ ! D25 D(10,4,5,6) -179.8175 estimate D2E/DX2 !
+ ! D26 D(10,4,5,11) -0.0571 estimate D2E/DX2 !
+ ! D27 D(4,5,6,1) -0.0934 estimate D2E/DX2 !
+ ! D28 D(4,5,6,12) 179.7668 estimate D2E/DX2 !
+ ! D29 D(11,5,6,1) -179.8546 estimate D2E/DX2 !
+ ! D30 D(11,5,6,12) 0.0056 estimate D2E/DX2 !
+ --------------------------------------------------------------------------------
+ Trust Radius=3.00D-01 FncErr=1.00D-07 GrdErr=1.00D-06 EigMax=2.50D+02 EigMin=1.00D-04
+ Number of steps in this run= 79 maximum allowed number of steps= 100.
+ GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad
+
+ Input orientation:
+ ---------------------------------------------------------------------
+ Center Atomic Atomic Coordinates (Angstroms)
+ Number Number Type X Y Z
+ ---------------------------------------------------------------------
+ 1 6 0 0.004380 0.912420 0.000000
+ 2 6 0 0.007220 0.193880 1.200140
+ 3 6 0 0.007220 -1.199070 1.202950
+ 4 6 0 0.006330 -1.901680 0.000000
+ 5 6 0 0.007220 -1.199070 -1.202950
+ 6 6 0 0.007220 0.193880 -1.200140
+ 7 6 0 -0.027910 2.422290 0.000000
+ 8 1 0 0.011760 0.731880 2.143060
+ 9 1 0 0.011840 -1.735540 2.145550
+ 10 1 0 0.009310 -2.985850 0.000000
+ 11 1 0 0.011840 -1.735540 -2.145550
+ 12 1 0 0.011760 0.731880 -2.143060
+ 13 1 0 -1.058780 2.793510 0.000000
+ 14 1 0 0.466090 2.831860 0.884210
+ 15 1 0 0.466090 2.831860 -0.884210
+ ---------------------------------------------------------------------
+ Distance matrix (angstroms):
+ 1 2 3 4 5
+ 1 C 0.000000
+ 2 C 1.398801 0.000000
+ 3 C 2.430121 1.392953 0.000000
+ 4 C 2.814101 2.414893 1.393108 0.000000
+ 5 C 2.430121 2.777616 2.405900 1.393108 0.000000
+ 6 C 1.398801 2.400280 2.777616 2.414893 1.392953
+ 7 C 1.510215 2.531281 3.816094 4.324106 3.816094
+ 8 H 2.150664 1.085616 2.147649 3.395346 3.863207
+ 9 H 3.408098 2.148600 1.084581 2.151980 3.391205
+ 10 H 3.898273 3.398680 2.153991 1.084174 2.153991
+ 11 H 3.408098 3.862166 3.391205 2.151980 1.084581
+ 12 H 2.150664 3.386215 3.863207 3.395346 2.147649
+ 13 H 2.160743 3.055285 4.303968 4.814485 4.303968
+ 14 H 2.163158 2.696166 4.069466 4.837314 4.562367
+ 15 H 2.163158 3.393231 4.562367 4.837314 4.069466
+ 6 7 8 9 10
+ 6 C 0.000000
+ 7 C 2.531281 0.000000
+ 8 H 3.386215 2.729792 0.000000
+ 9 H 3.862166 4.678944 2.467421 0.000000
+ 10 H 3.398680 5.408268 4.291180 2.483277 0.000000
+ 11 H 2.148600 4.678944 4.947761 4.291100 2.483277
+ 12 H 1.085616 2.729792 4.286120 4.947761 4.291180
+ 13 H 3.055285 1.095672 3.160551 5.124637 5.877229
+ 14 H 3.393231 1.092525 2.490188 4.760091 5.902222
+ 15 H 2.696166 1.092525 3.712236 5.499721 5.902222
+ 11 12 13 14 15
+ 11 H 0.000000
+ 12 H 2.467421 0.000000
+ 13 H 5.124637 3.160551 0.000000
+ 14 H 5.499721 3.712236 1.763101 0.000000
+ 15 H 4.760091 2.490188 1.763101 1.768420 0.000000
+ Stoichiometry C7H8
+ Framework group CS[SG(C3H2),X(C4H6)]
+ Deg. of freedom 22
+ Full point group CS NOp 2
+ Largest Abelian subgroup CS NOp 2
+ Largest concise Abelian subgroup CS NOp 2
+ Standard orientation:
+ ---------------------------------------------------------------------
+ Center Atomic Atomic Coordinates (Angstroms)
+ Number Number Type X Y Z
+ ---------------------------------------------------------------------
+ 1 6 0 0.004380 0.912421 0.000000
+ 2 6 0 0.007220 0.193881 1.200140
+ 3 6 0 0.007220 -1.199069 1.202950
+ 4 6 0 0.006330 -1.901679 -0.000000
+ 5 6 0 0.007220 -1.199069 -1.202950
+ 6 6 0 0.007220 0.193881 -1.200140
+ 7 6 0 -0.027910 2.422291 0.000000
+ 8 1 0 0.011760 0.731881 2.143060
+ 9 1 0 0.011840 -1.735539 2.145550
+ 10 1 0 0.009310 -2.985849 -0.000000
+ 11 1 0 0.011840 -1.735539 -2.145550
+ 12 1 0 0.011760 0.731881 -2.143060
+ 13 1 0 -1.058780 2.793511 0.000000
+ 14 1 0 0.466090 2.831861 0.884210
+ 15 1 0 0.466090 2.831861 -0.884210
+ ---------------------------------------------------------------------
+ Rotational constants (GHZ): 5.5548152 2.5165402 1.7507580
+ Standard basis: 6-311G(2d,d,p) (5D, 7F)
+ There are 108 symmetry adapted cartesian basis functions of A' symmetry.
+ There are 73 symmetry adapted cartesian basis functions of A" symmetry.
+ There are 103 symmetry adapted basis functions of A' symmetry.
+ There are 71 symmetry adapted basis functions of A" symmetry.
+ 174 basis functions, 288 primitive gaussians, 181 cartesian basis functions
+ 25 alpha electrons 25 beta electrons
+ nuclear repulsion energy 269.1308041674 Hartrees.
+ NAtoms= 15 NActive= 15 NUniq= 10 SFac= 2.25D+00 NAtFMM= 60 NAOKFM=F Big=F
+ Integral buffers will be 131072 words long.
+ Raffenetti 2 integral format.
+ Two-electron integral symmetry is turned on.
+ One-electron integrals computed using PRISM.
+ NBasis= 174 RedAO= T EigKep= 1.85D-04 NBF= 103 71
+ NBsUse= 174 1.00D-06 EigRej= -1.00D+00 NBFU= 103 71
+ ExpMin= 1.03D-01 ExpMax= 4.56D+03 ExpMxC= 6.82D+02 IAcc=3 IRadAn= 5 AccDes= 0.00D+00
+ Harris functional with IExCor= 402 and IRadAn= 5 diagonalized for initial guess.
+ HarFok: IExCor= 402 AccDes= 0.00D+00 IRadAn= 5 IDoV= 1 UseB2=F ITyADJ=14
+ ICtDFT= 3500011 ScaDFX= 1.000000 1.000000 1.000000 1.000000
+ FoFCou: FMM=F IPFlag= 0 FMFlag= 100000 FMFlg1= 0
+ NFxFlg= 0 DoJE=T BraDBF=F KetDBF=T FulRan=T
+ wScrn= 0.000000 ICntrl= 500 IOpCl= 0 I1Cent= 200000004 NGrid= 0
+ NMat0= 1 NMatS0= 1 NMatT0= 0 NMatD0= 1 NMtDS0= 0 NMtDT0= 0
+ Petite list used in FoFCou.
+ Initial guess orbital symmetries:
+ Occupied (A') (A') (A") (A') (A") (A') (A') (A') (A') (A")
+ (A') (A") (A') (A') (A") (A') (A") (A') (A') (A")
+ (A') (A") (A') (A") (A')
+ Virtual (A") (A') (A') (A') (A') (A") (A') (A") (A') (A")
+ (A') (A') (A") (A') (A') (A") (A') (A") (A') (A")
+ (A') (A') (A") (A') (A') (A') (A") (A") (A") (A')
+ (A') (A") (A') (A') (A") (A") (A') (A') (A") (A')
+ (A') (A') (A') (A") (A') (A") (A') (A") (A') (A")
+ (A') (A') (A") (A') (A") (A") (A') (A') (A") (A')
+ (A") (A') (A') (A") (A") (A') (A') (A") (A') (A")
+ (A') (A") (A") (A') (A') (A') (A") (A') (A") (A')
+ (A") (A") (A') (A') (A') (A") (A") (A') (A") (A')
+ (A') (A') (A") (A") (A') (A") (A') (A') (A") (A")
+ (A') (A') (A") (A') (A') (A") (A') (A") (A') (A')
+ (A') (A") (A') (A") (A') (A") (A") (A') (A') (A')
+ (A") (A') (A') (A") (A") (A') (A") (A') (A") (A')
+ (A') (A") (A') (A') (A') (A") (A") (A') (A") (A')
+ (A') (A") (A') (A') (A") (A') (A') (A") (A')
+ The electronic state of the initial guess is 1-A'.
+ Requested convergence on RMS density matrix=1.00D-08 within 128 cycles.
+ Requested convergence on MAX density matrix=1.00D-06.
+ Requested convergence on energy=1.00D-06.
+ No special actions if energy rises.
+ Integral accuracy reduced to 1.0D-05 until final iterations.
+ Initial convergence to 1.0D-05 achieved. Increase integral accuracy.
+ SCF Done: E(RB3LYP) = -271.636042406 A.U. after 13 cycles
+ NFock= 13 Conv=0.36D-08 -V/T= 2.0046
+
+ **********************************************************************
+
+ Population analysis using the SCF density.
+
+ **********************************************************************
+
+ Orbital symmetries:
+ Occupied (A') (A') (A") (A') (A") (A') (A') (A') (A') (A")
+ (A') (A") (A') (A') (A") (A') (A') (A") (A') (A")
+ (A') (A') (A") (A") (A')
+ Virtual (A") (A') (A') (A') (A") (A') (A") (A') (A') (A")
+ (A') (A') (A') (A") (A') (A") (A") (A') (A') (A')
+ (A") (A") (A') (A') (A') (A") (A') (A") (A') (A")
+ (A') (A") (A') (A') (A') (A") (A") (A') (A") (A')
+ (A') (A') (A") (A') (A') (A") (A') (A') (A") (A")
+ (A') (A') (A") (A") (A') (A') (A") (A') (A") (A')
+ (A") (A') (A') (A") (A") (A') (A") (A') (A') (A")
+ (A') (A") (A") (A') (A') (A') (A") (A') (A') (A")
+ (A") (A") (A') (A') (A') (A") (A") (A") (A') (A')
+ (A') (A") (A') (A") (A') (A") (A') (A') (A") (A")
+ (A') (A') (A") (A') (A") (A') (A') (A") (A') (A')
+ (A') (A") (A') (A") (A') (A') (A") (A") (A') (A')
+ (A') (A") (A') (A") (A") (A') (A") (A') (A") (A')
+ (A') (A") (A') (A') (A') (A") (A") (A') (A") (A')
+ (A') (A") (A') (A') (A") (A') (A') (A") (A')
+ The electronic state is 1-A'.
+ Alpha occ. eigenvalues -- -10.18118 -10.17130 -10.17124 -10.16919 -10.16880
+ Alpha occ. eigenvalues -- -10.16877 -10.16776 -0.85703 -0.77241 -0.74475
+ Alpha occ. eigenvalues -- -0.68652 -0.60548 -0.58481 -0.51253 -0.46159
+ Alpha occ. eigenvalues -- -0.45491 -0.42227 -0.42063 -0.40982 -0.38747
+ Alpha occ. eigenvalues -- -0.35673 -0.34366 -0.34055 -0.25337 -0.24458
+ Alpha virt. eigenvalues -- -0.00774 -0.00571 0.04543 0.06214 0.07503
+ Alpha virt. eigenvalues -- 0.09869 0.10865 0.11029 0.13654 0.13858
+ Alpha virt. eigenvalues -- 0.16612 0.20541 0.27002 0.27489 0.28470
+ Alpha virt. eigenvalues -- 0.29468 0.30842 0.31781 0.33719 0.39980
+ Alpha virt. eigenvalues -- 0.40611 0.40840 0.41227 0.43265 0.44421
+ Alpha virt. eigenvalues -- 0.44992 0.46872 0.47091 0.48221 0.50212
+ Alpha virt. eigenvalues -- 0.54459 0.54619 0.55486 0.58592 0.60411
+ Alpha virt. eigenvalues -- 0.60508 0.61175 0.62477 0.62588 0.62850
+ Alpha virt. eigenvalues -- 0.65561 0.68824 0.73639 0.73792 0.76334
+ Alpha virt. eigenvalues -- 0.79052 0.81419 0.85302 0.85338 0.89737
+ Alpha virt. eigenvalues -- 0.93899 0.95521 1.00875 1.01792 1.03211
+ Alpha virt. eigenvalues -- 1.05267 1.08562 1.13136 1.14345 1.24584
+ Alpha virt. eigenvalues -- 1.32216 1.33104 1.34797 1.41336 1.45155
+ Alpha virt. eigenvalues -- 1.46713 1.46735 1.48402 1.51363 1.54024
+ Alpha virt. eigenvalues -- 1.55564 1.57181 1.57825 1.58355 1.59075
+ Alpha virt. eigenvalues -- 1.63952 1.67436 1.68562 1.73197 1.74440
+ Alpha virt. eigenvalues -- 1.77844 1.80186 1.80621 1.83266 1.89720
+ Alpha virt. eigenvalues -- 1.90667 1.91295 1.91840 1.92901 1.95726
+ Alpha virt. eigenvalues -- 1.98295 2.02163 2.02179 2.08080 2.10841
+ Alpha virt. eigenvalues -- 2.20527 2.22336 2.23974 2.30078 2.31939
+ Alpha virt. eigenvalues -- 2.34688 2.35276 2.38258 2.40613 2.47678
+ Alpha virt. eigenvalues -- 2.50613 2.52781 2.53330 2.57563 2.60110
+ Alpha virt. eigenvalues -- 2.61273 2.62178 2.64288 2.65604 2.67827
+ Alpha virt. eigenvalues -- 2.68159 2.69270 2.72883 2.76073 2.81546
+ Alpha virt. eigenvalues -- 2.85681 2.85723 2.88423 2.91931 2.93696
+ Alpha virt. eigenvalues -- 3.06215 3.11798 3.18707 3.32912 3.34661
+ Alpha virt. eigenvalues -- 3.47091 3.47581 3.59187 3.64475 3.78989
+ Alpha virt. eigenvalues -- 3.81090 3.96737 4.02796 4.11702 4.12087
+ Alpha virt. eigenvalues -- 4.32426 4.83940 23.52127 23.89773 23.94491
+ Alpha virt. eigenvalues -- 23.94746 24.08234 24.10266 24.19702
+ Condensed to atoms (all electrons):
+ 1 2 3 4 5 6
+ 1 C 5.025939 0.525465 -0.051275 -0.040838 -0.051275 0.525465
+ 2 C 0.525465 4.841385 0.532606 -0.060204 -0.037853 -0.054327
+ 3 C -0.051275 0.532606 4.840767 0.521296 -0.057496 -0.037853
+ 4 C -0.040838 -0.060204 0.521296 4.867271 0.521296 -0.060204
+ 5 C -0.051275 -0.037853 -0.057496 0.521296 4.840767 0.532606
+ 6 C 0.525465 -0.054327 -0.037853 -0.060204 0.532606 4.841385
+ 7 C 0.359756 -0.057183 0.005608 0.000141 0.005608 -0.057183
+ 8 H -0.049334 0.417271 -0.039392 0.008003 -0.000587 0.007685
+ 9 H 0.008281 -0.042059 0.414266 -0.043483 0.007588 -0.000405
+ 10 H -0.000425 0.007659 -0.042501 0.415720 -0.042501 0.007659
+ 11 H 0.008281 -0.000405 0.007588 -0.043483 0.414266 -0.042059
+ 12 H -0.049334 0.007685 -0.000587 0.008003 -0.039392 0.417271
+ 13 H -0.034997 -0.002972 -0.000212 0.000103 -0.000212 -0.002972
+ 14 H -0.036633 -0.006852 0.000506 0.000012 -0.000342 0.005392
+ 15 H -0.036633 0.005392 -0.000342 0.000012 0.000506 -0.006852
+ 7 8 9 10 11 12
+ 1 C 0.359756 -0.049334 0.008281 -0.000425 0.008281 -0.049334
+ 2 C -0.057183 0.417271 -0.042059 0.007659 -0.000405 0.007685
+ 3 C 0.005608 -0.039392 0.414266 -0.042501 0.007588 -0.000587
+ 4 C 0.000141 0.008003 -0.043483 0.415720 -0.043483 0.008003
+ 5 C 0.005608 -0.000587 0.007588 -0.042501 0.414266 -0.039392
+ 6 C -0.057183 0.007685 -0.000405 0.007659 -0.042059 0.417271
+ 7 C 4.806296 -0.007514 -0.000345 0.000044 -0.000345 -0.007514
+ 8 H -0.007514 0.586747 -0.008746 -0.000364 0.000082 -0.000390
+ 9 H -0.000345 -0.008746 0.581522 -0.008072 -0.000395 0.000082
+ 10 H 0.000044 -0.000364 -0.008072 0.579510 -0.008072 -0.000364
+ 11 H -0.000345 0.000082 -0.000395 -0.008072 0.581522 -0.008746
+ 12 H -0.007514 -0.000390 0.000082 -0.000364 -0.008746 0.586747
+ 13 H 0.397705 0.000450 0.000014 -0.000002 0.000014 0.000450
+ 14 H 0.406918 0.002892 -0.000026 -0.000003 0.000023 -0.000005
+ 15 H 0.406918 -0.000005 0.000023 -0.000003 -0.000026 0.002892
+ 13 14 15
+ 1 C -0.034997 -0.036633 -0.036633
+ 2 C -0.002972 -0.006852 0.005392
+ 3 C -0.000212 0.000506 -0.000342
+ 4 C 0.000103 0.000012 0.000012
+ 5 C -0.000212 -0.000342 0.000506
+ 6 C -0.002972 0.005392 -0.006852
+ 7 C 0.397705 0.406918 0.406918
+ 8 H 0.000450 0.002892 -0.000005
+ 9 H 0.000014 -0.000026 0.000023
+ 10 H -0.000002 -0.000003 -0.000003
+ 11 H 0.000014 0.000023 -0.000026
+ 12 H 0.000450 -0.000005 0.002892
+ 13 H 0.574015 -0.028900 -0.028900
+ 14 H -0.028900 0.572774 -0.027826
+ 15 H -0.028900 -0.027826 0.572774
+ Mulliken charges:
+ 1
+ 1 C -0.102442
+ 2 C -0.075610
+ 3 C -0.092981
+ 4 C -0.093646
+ 5 C -0.092981
+ 6 C -0.075610
+ 7 C -0.258907
+ 8 H 0.083200
+ 9 H 0.091755
+ 10 H 0.091714
+ 11 H 0.091755
+ 12 H 0.083200
+ 13 H 0.126414
+ 14 H 0.112069
+ 15 H 0.112069
+ Sum of Mulliken charges = -0.00000
+ Mulliken charges with hydrogens summed into heavy atoms:
+ 1
+ 1 C -0.102442
+ 2 C 0.007590
+ 3 C -0.001226
+ 4 C -0.001932
+ 5 C -0.001226
+ 6 C 0.007590
+ 7 C 0.091645
+ Electronic spatial extent (au): = 718.6796
+ Charge= -0.0000 electrons
+ Dipole moment (field-independent basis, Debye):
+ X= -0.0382 Y= 0.3496 Z= -0.0000 Tot= 0.3517
+ Quadrupole moment (field-independent basis, Debye-Ang):
+ XX= -45.9586 YY= -38.3806 ZZ= -38.7547
+ XY= -0.1003 XZ= -0.0000 YZ= 0.0000
+ Traceless Quadrupole moment (field-independent basis, Debye-Ang):
+ XX= -4.9273 YY= 2.6507 ZZ= 2.2766
+ XY= -0.1003 XZ= -0.0000 YZ= 0.0000
+ Octapole moment (field-independent basis, Debye-Ang**2):
+ XXX= -0.7775 YYY= -4.4570 ZZZ= 0.0000 XYY= -0.0626
+ XXY= 3.4505 XXZ= 0.0000 XZZ= 0.6266 YZZ= -1.0971
+ YYZ= -0.0000 XYZ= -0.0000
+ Hexadecapole moment (field-independent basis, Debye-Ang**3):
+ XXXX= -58.5344 YYYY= -612.8883 ZZZZ= -288.0351 XXXY= 0.3789
+ XXXZ= 0.0000 YYYX= 2.0980 YYYZ= -0.0000 ZZZX= -0.0000
+ ZZZY= -0.0000 XXYY= -120.1587 XXZZ= -67.5366 YYZZ= -147.2907
+ XXYZ= -0.0000 YYXZ= -0.0000 ZZXY= 2.3529
+ N-N= 2.691308041674D+02 E-N=-1.167923146041D+03 KE= 2.703859771453D+02
+ Symmetry A' KE= 1.878583712986D+02
+ Symmetry A" KE= 8.252760584670D+01
+ Calling FoFJK, ICntrl= 2127 FMM=F ISym2X=1 I1Cent= 0 IOpClX= 0 NMat=1 NMatS=1 NMatT=0.
+ ***** Axes restored to original set *****
+ -------------------------------------------------------------------
+ Center Atomic Forces (Hartrees/Bohr)
+ Number Number X Y Z
+ -------------------------------------------------------------------
+ 1 6 -0.000000550 -0.000018301 0.000000000
+ 2 6 0.000003297 -0.000008806 0.000013022
+ 3 6 -0.000003064 0.000010195 -0.000009862
+ 4 6 0.000003115 -0.000005283 0.000000000
+ 5 6 -0.000003064 0.000010195 0.000009862
+ 6 6 0.000003297 -0.000008806 -0.000013022
+ 7 6 -0.000011683 0.000013241 -0.000000000
+ 8 1 -0.000001427 0.000003589 -0.000011196
+ 9 1 0.000000447 -0.000006956 -0.000000411
+ 10 1 0.000000415 0.000004613 -0.000000000
+ 11 1 0.000000447 -0.000006956 0.000000411
+ 12 1 -0.000001427 0.000003589 0.000011196
+ 13 1 0.000009094 0.000002447 -0.000000000
+ 14 1 0.000000551 0.000003619 -0.000005382
+ 15 1 0.000000551 0.000003619 0.000005382
+ -------------------------------------------------------------------
+ Cartesian Forces: Max 0.000018301 RMS 0.000006984
+
+ GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad
+ Berny optimization.
+ FormGI is forming the generalized inverse of G from B-inverse, IUseBI=4.
+ Internal Forces: Max 0.000022949 RMS 0.000004746
+ Search for a local minimum.
+ Step number 1 out of a maximum of 79
+ All quantities printed in internal units (Hartrees-Bohrs-Radians)
+ Mixed Optimization -- En-DIIS/RFO-DIIS
+ Second derivative matrix not updated -- first step.
+ ITU= 0
+ Eigenvalues --- 0.00631 0.01503 0.02114 0.02140 0.02146
+ Eigenvalues --- 0.02166 0.02180 0.02180 0.02181 0.02181
+ Eigenvalues --- 0.07057 0.07145 0.16000 0.16000 0.16000
+ Eigenvalues --- 0.16000 0.16000 0.16000 0.16000 0.16000
+ Eigenvalues --- 0.22000 0.22000 0.23470 0.24994 0.31329
+ Eigenvalues --- 0.34165 0.34522 0.34522 0.35324 0.35324
+ Eigenvalues --- 0.35446 0.35446 0.35495 0.42147 0.42213
+ Eigenvalues --- 0.46020 0.46345 0.46787 0.46809
+ RFO step: Lambda= 0.00000000D+00 EMin= 6.30819529D-03
+ Linear search not attempted -- first point.
+ Iteration 1 RMS(Cart)= 0.00004381 RMS(Int)= 0.00000000
+ Iteration 2 RMS(Cart)= 0.00000000 RMS(Int)= 0.00000000
+ ClnCor: largest displacement from symmetrization is 6.79D-13 for atom 15.
+ Variable Old X -DE/DX Delta X Delta X Delta X New X
+ (Linear) (Quad) (Total)
+ R1 2.64335 0.00000 0.00000 0.00000 0.00000 2.64335
+ R2 2.64335 0.00000 0.00000 0.00000 0.00000 2.64335
+ R3 2.85389 0.00002 0.00000 0.00007 0.00007 2.85397
+ R4 2.63230 -0.00000 0.00000 -0.00001 -0.00001 2.63229
+ R5 2.05152 -0.00001 0.00000 -0.00002 -0.00002 2.05149
+ R6 2.63259 -0.00001 0.00000 -0.00001 -0.00001 2.63258
+ R7 2.04956 0.00000 0.00000 0.00001 0.00001 2.04957
+ R8 2.63259 -0.00001 0.00000 -0.00001 -0.00001 2.63258
+ R9 2.04879 -0.00000 0.00000 -0.00001 -0.00001 2.04878
+ R10 2.63230 -0.00000 0.00000 -0.00001 -0.00001 2.63229
+ R11 2.04956 0.00000 0.00000 0.00001 0.00001 2.04957
+ R12 2.05152 -0.00001 0.00000 -0.00002 -0.00002 2.05149
+ R13 2.07052 -0.00001 0.00000 -0.00002 -0.00002 2.07050
+ R14 2.06457 -0.00000 0.00000 -0.00001 -0.00001 2.06457
+ R15 2.06457 -0.00000 0.00000 -0.00001 -0.00001 2.06457
+ A1 2.06264 -0.00000 0.00000 0.00000 0.00000 2.06264
+ A2 2.11018 0.00000 0.00000 -0.00000 -0.00000 2.11018
+ A3 2.11018 0.00000 0.00000 -0.00000 -0.00000 2.11018
+ A4 2.11229 -0.00000 0.00000 -0.00001 -0.00001 2.11228
+ A5 2.08363 -0.00001 0.00000 -0.00005 -0.00005 2.08357
+ A6 2.08727 0.00001 0.00000 0.00006 0.00006 2.08733
+ A7 2.09740 0.00000 0.00000 0.00001 0.00001 2.09741
+ A8 2.09023 0.00001 0.00000 0.00004 0.00004 2.09026
+ A9 2.09555 -0.00001 0.00000 -0.00004 -0.00004 2.09550
+ A10 2.08434 -0.00000 0.00000 -0.00000 -0.00000 2.08434
+ A11 2.09942 0.00000 0.00000 0.00000 0.00000 2.09942
+ A12 2.09942 0.00000 0.00000 0.00000 0.00000 2.09942
+ A13 2.09740 0.00000 0.00000 0.00001 0.00001 2.09741
+ A14 2.09555 -0.00001 0.00000 -0.00004 -0.00004 2.09550
+ A15 2.09023 0.00001 0.00000 0.00004 0.00004 2.09026
+ A16 2.11229 -0.00000 0.00000 -0.00001 -0.00001 2.11228
+ A17 2.08363 -0.00001 0.00000 -0.00005 -0.00005 2.08357
+ A18 2.08727 0.00001 0.00000 0.00006 0.00006 2.08733
+ A19 1.93783 0.00001 0.00000 0.00005 0.00005 1.93788
+ A20 1.94457 0.00000 0.00000 0.00002 0.00002 1.94459
+ A21 1.94457 0.00000 0.00000 0.00002 0.00002 1.94459
+ A22 1.87382 -0.00000 0.00000 -0.00002 -0.00002 1.87380
+ A23 1.87382 -0.00000 0.00000 -0.00002 -0.00002 1.87380
+ A24 1.88601 -0.00001 0.00000 -0.00006 -0.00006 1.88595
+ D1 -0.00461 -0.00000 0.00000 -0.00000 -0.00000 -0.00462
+ D2 3.13455 0.00000 0.00000 0.00003 0.00003 3.13457
+ D3 3.11667 0.00000 0.00000 0.00003 0.00003 3.11669
+ D4 -0.02736 0.00000 0.00000 0.00006 0.00006 -0.02731
+ D5 0.00461 0.00000 0.00000 0.00000 0.00000 0.00462
+ D6 -3.13455 -0.00000 0.00000 -0.00003 -0.00003 -3.13457
+ D7 -3.11667 -0.00000 0.00000 -0.00003 -0.00003 -3.11669
+ D8 0.02736 -0.00000 0.00000 -0.00006 -0.00006 0.02731
+ D9 -1.56036 -0.00000 0.00000 -0.00002 -0.00002 -1.56038
+ D10 0.52735 0.00000 0.00000 0.00001 0.00001 0.52736
+ D11 2.63512 -0.00000 0.00000 -0.00004 -0.00004 2.63507
+ D12 1.56036 0.00000 0.00000 0.00002 0.00002 1.56038
+ D13 -2.63512 0.00000 0.00000 0.00004 0.00004 -2.63507
+ D14 -0.52735 -0.00000 0.00000 -0.00001 -0.00001 -0.52736
+ D15 0.00163 0.00000 0.00000 0.00003 0.00003 0.00166
+ D16 3.13905 -0.00000 0.00000 -0.00000 -0.00000 3.13905
+ D17 -3.13752 -0.00000 0.00000 -0.00000 -0.00000 -3.13752
+ D18 -0.00010 -0.00000 0.00000 -0.00003 -0.00003 -0.00013
+ D19 0.00147 -0.00000 0.00000 -0.00005 -0.00005 0.00141
+ D20 3.13841 -0.00000 0.00000 -0.00002 -0.00002 3.13839
+ D21 -3.13595 -0.00000 0.00000 -0.00002 -0.00002 -3.13597
+ D22 0.00100 0.00000 0.00000 0.00001 0.00001 0.00101
+ D23 -0.00147 0.00000 0.00000 0.00005 0.00005 -0.00141
+ D24 3.13595 0.00000 0.00000 0.00002 0.00002 3.13597
+ D25 -3.13841 0.00000 0.00000 0.00002 0.00002 -3.13839
+ D26 -0.00100 -0.00000 0.00000 -0.00001 -0.00001 -0.00101
+ D27 -0.00163 -0.00000 0.00000 -0.00003 -0.00003 -0.00166
+ D28 3.13752 0.00000 0.00000 0.00000 0.00000 3.13752
+ D29 -3.13905 0.00000 0.00000 0.00000 0.00000 -3.13905
+ D30 0.00010 0.00000 0.00000 0.00003 0.00003 0.00013
+ Item Value Threshold Converged?
+ Maximum Force 0.000023 0.000450 YES
+ RMS Force 0.000005 0.000300 YES
+ Maximum Displacement 0.000166 0.001800 YES
+ RMS Displacement 0.000044 0.001200 YES
+ Predicted change in Energy=-3.735837D-09
+ Optimization completed.
+ -- Stationary point found.
+ ----------------------------
+ ! Optimized Parameters !
+ ! (Angstroms and Degrees) !
+ -------------------------- --------------------------
+ ! Name Definition Value Derivative Info. !
+ --------------------------------------------------------------------------------
+ ! R1 R(1,2) 1.3988 -DE/DX = 0.0 !
+ ! R2 R(1,6) 1.3988 -DE/DX = 0.0 !
+ ! R3 R(1,7) 1.5102 -DE/DX = 0.0 !
+ ! R4 R(2,3) 1.393 -DE/DX = 0.0 !
+ ! R5 R(2,8) 1.0856 -DE/DX = 0.0 !
+ ! R6 R(3,4) 1.3931 -DE/DX = 0.0 !
+ ! R7 R(3,9) 1.0846 -DE/DX = 0.0 !
+ ! R8 R(4,5) 1.3931 -DE/DX = 0.0 !
+ ! R9 R(4,10) 1.0842 -DE/DX = 0.0 !
+ ! R10 R(5,6) 1.393 -DE/DX = 0.0 !
+ ! R11 R(5,11) 1.0846 -DE/DX = 0.0 !
+ ! R12 R(6,12) 1.0856 -DE/DX = 0.0 !
+ ! R13 R(7,13) 1.0957 -DE/DX = 0.0 !
+ ! R14 R(7,14) 1.0925 -DE/DX = 0.0 !
+ ! R15 R(7,15) 1.0925 -DE/DX = 0.0 !
+ ! A1 A(2,1,6) 118.1806 -DE/DX = 0.0 !
+ ! A2 A(2,1,7) 120.9045 -DE/DX = 0.0 !
+ ! A3 A(6,1,7) 120.9045 -DE/DX = 0.0 !
+ ! A4 A(1,2,3) 121.025 -DE/DX = 0.0 !
+ ! A5 A(1,2,8) 119.383 -DE/DX = 0.0 !
+ ! A6 A(3,2,8) 119.5918 -DE/DX = 0.0 !
+ ! A7 A(2,3,4) 120.1724 -DE/DX = 0.0 !
+ ! A8 A(2,3,9) 119.7612 -DE/DX = 0.0 !
+ ! A9 A(4,3,9) 120.066 -DE/DX = 0.0 !
+ ! A10 A(3,4,5) 119.4239 -DE/DX = 0.0 !
+ ! A11 A(3,4,10) 120.2878 -DE/DX = 0.0 !
+ ! A12 A(5,4,10) 120.2878 -DE/DX = 0.0 !
+ ! A13 A(4,5,6) 120.1724 -DE/DX = 0.0 !
+ ! A14 A(4,5,11) 120.066 -DE/DX = 0.0 !
+ ! A15 A(6,5,11) 119.7612 -DE/DX = 0.0 !
+ ! A16 A(1,6,5) 121.025 -DE/DX = 0.0 !
+ ! A17 A(1,6,12) 119.383 -DE/DX = 0.0 !
+ ! A18 A(5,6,12) 119.5918 -DE/DX = 0.0 !
+ ! A19 A(1,7,13) 111.0293 -DE/DX = 0.0 !
+ ! A20 A(1,7,14) 111.4156 -DE/DX = 0.0 !
+ ! A21 A(1,7,15) 111.4156 -DE/DX = 0.0 !
+ ! A22 A(13,7,14) 107.362 -DE/DX = 0.0 !
+ ! A23 A(13,7,15) 107.362 -DE/DX = 0.0 !
+ ! A24 A(14,7,15) 108.0605 -DE/DX = 0.0 !
+ ! D1 D(6,1,2,3) -0.2643 -DE/DX = 0.0 !
+ ! D2 D(6,1,2,8) 179.5962 -DE/DX = 0.0 !
+ ! D3 D(7,1,2,3) 178.5718 -DE/DX = 0.0 !
+ ! D4 D(7,1,2,8) -1.5677 -DE/DX = 0.0 !
+ ! D5 D(2,1,6,5) 0.2643 -DE/DX = 0.0 !
+ ! D6 D(2,1,6,12) -179.5962 -DE/DX = 0.0 !
+ ! D7 D(7,1,6,5) -178.5718 -DE/DX = 0.0 !
+ ! D8 D(7,1,6,12) 1.5677 -DE/DX = 0.0 !
+ ! D9 D(2,1,7,13) -89.4021 -DE/DX = 0.0 !
+ ! D10 D(2,1,7,14) 30.2147 -DE/DX = 0.0 !
+ ! D11 D(2,1,7,15) 150.9811 -DE/DX = 0.0 !
+ ! D12 D(6,1,7,13) 89.4021 -DE/DX = 0.0 !
+ ! D13 D(6,1,7,14) -150.9811 -DE/DX = 0.0 !
+ ! D14 D(6,1,7,15) -30.2147 -DE/DX = 0.0 !
+ ! D15 D(1,2,3,4) 0.0934 -DE/DX = 0.0 !
+ ! D16 D(1,2,3,9) 179.8546 -DE/DX = 0.0 !
+ ! D17 D(8,2,3,4) -179.7668 -DE/DX = 0.0 !
+ ! D18 D(8,2,3,9) -0.0056 -DE/DX = 0.0 !
+ ! D19 D(2,3,4,5) 0.084 -DE/DX = 0.0 !
+ ! D20 D(2,3,4,10) 179.8175 -DE/DX = 0.0 !
+ ! D21 D(9,3,4,5) -179.6765 -DE/DX = 0.0 !
+ ! D22 D(9,3,4,10) 0.0571 -DE/DX = 0.0 !
+ ! D23 D(3,4,5,6) -0.084 -DE/DX = 0.0 !
+ ! D24 D(3,4,5,11) 179.6765 -DE/DX = 0.0 !
+ ! D25 D(10,4,5,6) -179.8175 -DE/DX = 0.0 !
+ ! D26 D(10,4,5,11) -0.0571 -DE/DX = 0.0 !
+ ! D27 D(4,5,6,1) -0.0934 -DE/DX = 0.0 !
+ ! D28 D(4,5,6,12) 179.7668 -DE/DX = 0.0 !
+ ! D29 D(11,5,6,1) -179.8546 -DE/DX = 0.0 !
+ ! D30 D(11,5,6,12) 0.0056 -DE/DX = 0.0 !
+ --------------------------------------------------------------------------------
+ GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad
+
+ Input orientation:
+ ---------------------------------------------------------------------
+ Center Atomic Atomic Coordinates (Angstroms)
+ Number Number Type X Y Z
+ ---------------------------------------------------------------------
+ 1 6 0 0.004380 0.912420 -0.000000
+ 2 6 0 0.007220 0.193880 1.200140
+ 3 6 0 0.007220 -1.199070 1.202950
+ 4 6 0 0.006330 -1.901680 0.000000
+ 5 6 0 0.007220 -1.199070 -1.202950
+ 6 6 0 0.007220 0.193880 -1.200140
+ 7 6 0 -0.027910 2.422290 -0.000000
+ 8 1 0 0.011760 0.731880 2.143060
+ 9 1 0 0.011840 -1.735540 2.145550
+ 10 1 0 0.009310 -2.985850 0.000000
+ 11 1 0 0.011840 -1.735540 -2.145550
+ 12 1 0 0.011760 0.731880 -2.143060
+ 13 1 0 -1.058780 2.793510 -0.000000
+ 14 1 0 0.466090 2.831860 0.884210
+ 15 1 0 0.466090 2.831860 -0.884210
+ ---------------------------------------------------------------------
+ Distance matrix (angstroms):
+ 1 2 3 4 5
+ 1 C 0.000000
+ 2 C 1.398801 0.000000
+ 3 C 2.430121 1.392953 0.000000
+ 4 C 2.814101 2.414893 1.393108 0.000000
+ 5 C 2.430121 2.777616 2.405900 1.393108 0.000000
+ 6 C 1.398801 2.400280 2.777616 2.414893 1.392953
+ 7 C 1.510215 2.531281 3.816094 4.324106 3.816094
+ 8 H 2.150664 1.085616 2.147649 3.395346 3.863207
+ 9 H 3.408098 2.148600 1.084581 2.151980 3.391205
+ 10 H 3.898273 3.398680 2.153991 1.084174 2.153991
+ 11 H 3.408098 3.862166 3.391205 2.151980 1.084581
+ 12 H 2.150664 3.386215 3.863207 3.395346 2.147649
+ 13 H 2.160743 3.055285 4.303968 4.814485 4.303968
+ 14 H 2.163158 2.696166 4.069466 4.837314 4.562367
+ 15 H 2.163158 3.393231 4.562367 4.837314 4.069466
+ 6 7 8 9 10
+ 6 C 0.000000
+ 7 C 2.531281 0.000000
+ 8 H 3.386215 2.729792 0.000000
+ 9 H 3.862166 4.678944 2.467421 0.000000
+ 10 H 3.398680 5.408268 4.291180 2.483277 0.000000
+ 11 H 2.148600 4.678944 4.947761 4.291100 2.483277
+ 12 H 1.085616 2.729792 4.286120 4.947761 4.291180
+ 13 H 3.055285 1.095672 3.160551 5.124637 5.877229
+ 14 H 3.393231 1.092525 2.490188 4.760091 5.902222
+ 15 H 2.696166 1.092525 3.712236 5.499721 5.902222
+ 11 12 13 14 15
+ 11 H 0.000000
+ 12 H 2.467421 0.000000
+ 13 H 5.124637 3.160551 0.000000
+ 14 H 5.499721 3.712236 1.763101 0.000000
+ 15 H 4.760091 2.490188 1.763101 1.768420 0.000000
+ Stoichiometry C7H8
+ Framework group CS[SG(C3H2),X(C4H6)]
+ Deg. of freedom 22
+ Full point group CS NOp 2
+ Largest Abelian subgroup CS NOp 2
+ Largest concise Abelian subgroup CS NOp 2
+ Standard orientation:
+ ---------------------------------------------------------------------
+ Center Atomic Atomic Coordinates (Angstroms)
+ Number Number Type X Y Z
+ ---------------------------------------------------------------------
+ 1 6 0 0.004380 0.912421 0.000000
+ 2 6 0 0.007220 0.193881 1.200140
+ 3 6 0 0.007220 -1.199069 1.202950
+ 4 6 0 0.006330 -1.901679 -0.000000
+ 5 6 0 0.007220 -1.199069 -1.202950
+ 6 6 0 0.007220 0.193881 -1.200140
+ 7 6 0 -0.027910 2.422291 0.000000
+ 8 1 0 0.011760 0.731881 2.143060
+ 9 1 0 0.011840 -1.735539 2.145550
+ 10 1 0 0.009310 -2.985849 -0.000000
+ 11 1 0 0.011840 -1.735539 -2.145550
+ 12 1 0 0.011760 0.731881 -2.143060
+ 13 1 0 -1.058780 2.793511 0.000000
+ 14 1 0 0.466090 2.831861 0.884210
+ 15 1 0 0.466090 2.831861 -0.884210
+ ---------------------------------------------------------------------
+ Rotational constants (GHZ): 5.5548152 2.5165402 1.7507580
+ 1\1\GINC-NID00118\FOpt\RB3LYP\6-311G(2d,d,p)\C7H8\LAITCL\23-Feb-2017\0
+ \\# cbs-qb3\\Toluene Energy\\0,1\C,0.00438,0.91242,0.\C,0.00722,0.1938
+ 8,1.20014\C,0.00722,-1.19907,1.20295\C,0.00633,-1.90168,0.\C,0.00722,-
+ 1.19907,-1.20295\C,0.00722,0.19388,-1.20014\C,-0.02791,2.42229,0.\H,0.
+ 01176,0.73188,2.14306\H,0.01184,-1.73554,2.14555\H,0.00931,-2.98585,0.
+ \H,0.01184,-1.73554,-2.14555\H,0.01176,0.73188,-2.14306\H,-1.05878,2.7
+ 9351,0.\H,0.46609,2.83186,0.88421\H,0.46609,2.83186,-0.88421\\Version=
+ ES64L-G16RevA.03\State=1-A'\HF=-271.6360424\RMSD=3.558e-09\RMSF=6.984e
+ -06\Dipole=-0.0150256,0.1375352,0.\Quadrupole=-3.6633377,1.9707602,1.6
+ 925774,-0.0745804,0.,0.\PG=CS [SG(C3H2),X(C4H6)]\\@
+
+
+ Just remember, when you're over the hill, you begin to pick up speed.
+ -- Charles Schulz
+ Job cpu time: 0 days 0 hours 1 minutes 18.7 seconds.
+ Elapsed time: 0 days 0 hours 0 minutes 10.0 seconds.
+ File lengths (MBytes): RWF= 21 Int= 0 D2E= 0 Chk= 3 Scr= 1
+ Normal termination of Gaussian 16 at Thu Feb 23 14:01:33 2017.
+ Link1: Proceeding to internal job step number 2.
+ ---------------------------------------------------------
+ #N Geom=AllCheck Guess=TCheck SCRF=Check B3LYP/CBSB7 Freq
+ ---------------------------------------------------------
+ 1/10=4,29=7,30=1,38=1,40=1/1,3;
+ 2/12=2,40=1/2;
+ 3/5=4,6=6,7=700,11=2,14=-4,25=1,30=1,70=2,71=2,74=-5,116=-2,140=1/1,2,3;
+ 4/5=101/1;
+ 5/5=2,38=6,98=1/2;
+ 8/6=4,10=90,11=11/1;
+ 11/6=1,8=1,9=11,15=111,16=1/1,2,10;
+ 10/6=1/2;
+ 6/7=2,8=2,9=2,10=2,28=1/1;
+ 7/8=1,10=1,25=1/1,2,3,16;
+ 1/10=4,30=1/3;
+ 99//99;
+ Structure from the checkpoint file: "TolueneEnergy.chk"
+ --------------
+ Toluene Energy
+ --------------
+ Charge = 0 Multiplicity = 1
+ Redundant internal coordinates found in file. (old form).
+ C,0,0.00438,0.91242,0.
+ C,0,0.00722,0.19388,1.20014
+ C,0,0.00722,-1.19907,1.20295
+ C,0,0.00633,-1.90168,0.
+ C,0,0.00722,-1.19907,-1.20295
+ C,0,0.00722,0.19388,-1.20014
+ C,0,-0.02791,2.42229,0.
+ H,0,0.01176,0.73188,2.14306
+ H,0,0.01184,-1.73554,2.14555
+ H,0,0.00931,-2.98585,0.
+ H,0,0.01184,-1.73554,-2.14555
+ H,0,0.01176,0.73188,-2.14306
+ H,0,-1.05878,2.79351,0.
+ H,0,0.46609,2.83186,0.88421
+ H,0,0.46609,2.83186,-0.88421
+ Recover connectivity data from disk.
+
+ GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad
+ Berny optimization.
+ Initialization pass.
+ ----------------------------
+ ! Initial Parameters !
+ ! (Angstroms and Degrees) !
+ -------------------------- --------------------------
+ ! Name Definition Value Derivative Info. !
+ --------------------------------------------------------------------------------
+ ! R1 R(1,2) 1.3988 calculate D2E/DX2 analytically !
+ ! R2 R(1,6) 1.3988 calculate D2E/DX2 analytically !
+ ! R3 R(1,7) 1.5102 calculate D2E/DX2 analytically !
+ ! R4 R(2,3) 1.393 calculate D2E/DX2 analytically !
+ ! R5 R(2,8) 1.0856 calculate D2E/DX2 analytically !
+ ! R6 R(3,4) 1.3931 calculate D2E/DX2 analytically !
+ ! R7 R(3,9) 1.0846 calculate D2E/DX2 analytically !
+ ! R8 R(4,5) 1.3931 calculate D2E/DX2 analytically !
+ ! R9 R(4,10) 1.0842 calculate D2E/DX2 analytically !
+ ! R10 R(5,6) 1.393 calculate D2E/DX2 analytically !
+ ! R11 R(5,11) 1.0846 calculate D2E/DX2 analytically !
+ ! R12 R(6,12) 1.0856 calculate D2E/DX2 analytically !
+ ! R13 R(7,13) 1.0957 calculate D2E/DX2 analytically !
+ ! R14 R(7,14) 1.0925 calculate D2E/DX2 analytically !
+ ! R15 R(7,15) 1.0925 calculate D2E/DX2 analytically !
+ ! A1 A(2,1,6) 118.1806 calculate D2E/DX2 analytically !
+ ! A2 A(2,1,7) 120.9045 calculate D2E/DX2 analytically !
+ ! A3 A(6,1,7) 120.9045 calculate D2E/DX2 analytically !
+ ! A4 A(1,2,3) 121.025 calculate D2E/DX2 analytically !
+ ! A5 A(1,2,8) 119.383 calculate D2E/DX2 analytically !
+ ! A6 A(3,2,8) 119.5918 calculate D2E/DX2 analytically !
+ ! A7 A(2,3,4) 120.1724 calculate D2E/DX2 analytically !
+ ! A8 A(2,3,9) 119.7612 calculate D2E/DX2 analytically !
+ ! A9 A(4,3,9) 120.066 calculate D2E/DX2 analytically !
+ ! A10 A(3,4,5) 119.4239 calculate D2E/DX2 analytically !
+ ! A11 A(3,4,10) 120.2878 calculate D2E/DX2 analytically !
+ ! A12 A(5,4,10) 120.2878 calculate D2E/DX2 analytically !
+ ! A13 A(4,5,6) 120.1724 calculate D2E/DX2 analytically !
+ ! A14 A(4,5,11) 120.066 calculate D2E/DX2 analytically !
+ ! A15 A(6,5,11) 119.7612 calculate D2E/DX2 analytically !
+ ! A16 A(1,6,5) 121.025 calculate D2E/DX2 analytically !
+ ! A17 A(1,6,12) 119.383 calculate D2E/DX2 analytically !
+ ! A18 A(5,6,12) 119.5918 calculate D2E/DX2 analytically !
+ ! A19 A(1,7,13) 111.0293 calculate D2E/DX2 analytically !
+ ! A20 A(1,7,14) 111.4156 calculate D2E/DX2 analytically !
+ ! A21 A(1,7,15) 111.4156 calculate D2E/DX2 analytically !
+ ! A22 A(13,7,14) 107.362 calculate D2E/DX2 analytically !
+ ! A23 A(13,7,15) 107.362 calculate D2E/DX2 analytically !
+ ! A24 A(14,7,15) 108.0605 calculate D2E/DX2 analytically !
+ ! D1 D(6,1,2,3) -0.2643 calculate D2E/DX2 analytically !
+ ! D2 D(6,1,2,8) 179.5962 calculate D2E/DX2 analytically !
+ ! D3 D(7,1,2,3) 178.5718 calculate D2E/DX2 analytically !
+ ! D4 D(7,1,2,8) -1.5677 calculate D2E/DX2 analytically !
+ ! D5 D(2,1,6,5) 0.2643 calculate D2E/DX2 analytically !
+ ! D6 D(2,1,6,12) -179.5962 calculate D2E/DX2 analytically !
+ ! D7 D(7,1,6,5) -178.5718 calculate D2E/DX2 analytically !
+ ! D8 D(7,1,6,12) 1.5677 calculate D2E/DX2 analytically !
+ ! D9 D(2,1,7,13) -89.4021 calculate D2E/DX2 analytically !
+ ! D10 D(2,1,7,14) 30.2147 calculate D2E/DX2 analytically !
+ ! D11 D(2,1,7,15) 150.9811 calculate D2E/DX2 analytically !
+ ! D12 D(6,1,7,13) 89.4021 calculate D2E/DX2 analytically !
+ ! D13 D(6,1,7,14) -150.9811 calculate D2E/DX2 analytically !
+ ! D14 D(6,1,7,15) -30.2147 calculate D2E/DX2 analytically !
+ ! D15 D(1,2,3,4) 0.0934 calculate D2E/DX2 analytically !
+ ! D16 D(1,2,3,9) 179.8546 calculate D2E/DX2 analytically !
+ ! D17 D(8,2,3,4) -179.7668 calculate D2E/DX2 analytically !
+ ! D18 D(8,2,3,9) -0.0056 calculate D2E/DX2 analytically !
+ ! D19 D(2,3,4,5) 0.084 calculate D2E/DX2 analytically !
+ ! D20 D(2,3,4,10) 179.8175 calculate D2E/DX2 analytically !
+ ! D21 D(9,3,4,5) -179.6765 calculate D2E/DX2 analytically !
+ ! D22 D(9,3,4,10) 0.0571 calculate D2E/DX2 analytically !
+ ! D23 D(3,4,5,6) -0.084 calculate D2E/DX2 analytically !
+ ! D24 D(3,4,5,11) 179.6765 calculate D2E/DX2 analytically !
+ ! D25 D(10,4,5,6) -179.8175 calculate D2E/DX2 analytically !
+ ! D26 D(10,4,5,11) -0.0571 calculate D2E/DX2 analytically !
+ ! D27 D(4,5,6,1) -0.0934 calculate D2E/DX2 analytically !
+ ! D28 D(4,5,6,12) 179.7668 calculate D2E/DX2 analytically !
+ ! D29 D(11,5,6,1) -179.8546 calculate D2E/DX2 analytically !
+ ! D30 D(11,5,6,12) 0.0056 calculate D2E/DX2 analytically !
+ --------------------------------------------------------------------------------
+ Trust Radius=3.00D-01 FncErr=1.00D-07 GrdErr=1.00D-07 EigMax=2.50D+02 EigMin=1.00D-04
+ Number of steps in this run= 2 maximum allowed number of steps= 2.
+ GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad
+
+ Input orientation:
+ ---------------------------------------------------------------------
+ Center Atomic Atomic Coordinates (Angstroms)
+ Number Number Type X Y Z
+ ---------------------------------------------------------------------
+ 1 6 0 0.004380 0.912420 -0.000000
+ 2 6 0 0.007220 0.193880 1.200140
+ 3 6 0 0.007220 -1.199070 1.202950
+ 4 6 0 0.006330 -1.901680 -0.000000
+ 5 6 0 0.007220 -1.199070 -1.202950
+ 6 6 0 0.007220 0.193880 -1.200140
+ 7 6 0 -0.027910 2.422290 0.000000
+ 8 1 0 0.011760 0.731880 2.143060
+ 9 1 0 0.011840 -1.735540 2.145550
+ 10 1 0 0.009310 -2.985850 -0.000000
+ 11 1 0 0.011840 -1.735540 -2.145550
+ 12 1 0 0.011760 0.731880 -2.143060
+ 13 1 0 -1.058780 2.793510 0.000000
+ 14 1 0 0.466090 2.831860 0.884210
+ 15 1 0 0.466090 2.831860 -0.884210
+ ---------------------------------------------------------------------
+ Distance matrix (angstroms):
+ 1 2 3 4 5
+ 1 C 0.000000
+ 2 C 1.398801 0.000000
+ 3 C 2.430121 1.392953 0.000000
+ 4 C 2.814101 2.414893 1.393108 0.000000
+ 5 C 2.430121 2.777616 2.405900 1.393108 0.000000
+ 6 C 1.398801 2.400280 2.777616 2.414893 1.392953
+ 7 C 1.510215 2.531281 3.816094 4.324106 3.816094
+ 8 H 2.150664 1.085616 2.147649 3.395346 3.863207
+ 9 H 3.408098 2.148600 1.084581 2.151980 3.391205
+ 10 H 3.898273 3.398680 2.153991 1.084174 2.153991
+ 11 H 3.408098 3.862166 3.391205 2.151980 1.084581
+ 12 H 2.150664 3.386215 3.863207 3.395346 2.147649
+ 13 H 2.160743 3.055285 4.303968 4.814485 4.303968
+ 14 H 2.163158 2.696166 4.069466 4.837314 4.562367
+ 15 H 2.163158 3.393231 4.562367 4.837314 4.069466
+ 6 7 8 9 10
+ 6 C 0.000000
+ 7 C 2.531281 0.000000
+ 8 H 3.386215 2.729792 0.000000
+ 9 H 3.862166 4.678944 2.467421 0.000000
+ 10 H 3.398680 5.408268 4.291180 2.483277 0.000000
+ 11 H 2.148600 4.678944 4.947761 4.291100 2.483277
+ 12 H 1.085616 2.729792 4.286120 4.947761 4.291180
+ 13 H 3.055285 1.095672 3.160551 5.124637 5.877229
+ 14 H 3.393231 1.092525 2.490188 4.760091 5.902222
+ 15 H 2.696166 1.092525 3.712236 5.499721 5.902222
+ 11 12 13 14 15
+ 11 H 0.000000
+ 12 H 2.467421 0.000000
+ 13 H 5.124637 3.160551 0.000000
+ 14 H 5.499721 3.712236 1.763101 0.000000
+ 15 H 4.760091 2.490188 1.763101 1.768420 0.000000
+ Stoichiometry C7H8
+ Framework group CS[SG(C3H2),X(C4H6)]
+ Deg. of freedom 22
+ Full point group CS NOp 2
+ Largest Abelian subgroup CS NOp 2
+ Largest concise Abelian subgroup CS NOp 2
+ Standard orientation:
+ ---------------------------------------------------------------------
+ Center Atomic Atomic Coordinates (Angstroms)
+ Number Number Type X Y Z
+ ---------------------------------------------------------------------
+ 1 6 0 0.004380 0.912421 0.000000
+ 2 6 0 0.007220 0.193881 1.200140
+ 3 6 0 0.007220 -1.199069 1.202950
+ 4 6 0 0.006330 -1.901679 -0.000000
+ 5 6 0 0.007220 -1.199069 -1.202950
+ 6 6 0 0.007220 0.193881 -1.200140
+ 7 6 0 -0.027910 2.422291 0.000000
+ 8 1 0 0.011760 0.731881 2.143060
+ 9 1 0 0.011840 -1.735539 2.145550
+ 10 1 0 0.009310 -2.985849 -0.000000
+ 11 1 0 0.011840 -1.735539 -2.145550
+ 12 1 0 0.011760 0.731881 -2.143060
+ 13 1 0 -1.058780 2.793511 0.000000
+ 14 1 0 0.466090 2.831861 0.884210
+ 15 1 0 0.466090 2.831861 -0.884210
+ ---------------------------------------------------------------------
+ Rotational constants (GHZ): 5.5548152 2.5165402 1.7507580
+ Standard basis: 6-311G(2d,d,p) (5D, 7F)
+ There are 108 symmetry adapted cartesian basis functions of A' symmetry.
+ There are 73 symmetry adapted cartesian basis functions of A" symmetry.
+ There are 103 symmetry adapted basis functions of A' symmetry.
+ There are 71 symmetry adapted basis functions of A" symmetry.
+ 174 basis functions, 288 primitive gaussians, 181 cartesian basis functions
+ 25 alpha electrons 25 beta electrons
+ nuclear repulsion energy 269.1308041674 Hartrees.
+ NAtoms= 15 NActive= 15 NUniq= 10 SFac= 2.25D+00 NAtFMM= 60 NAOKFM=F Big=F
+ Integral buffers will be 131072 words long.
+ Raffenetti 2 integral format.
+ Two-electron integral symmetry is turned on.
+ One-electron integrals computed using PRISM.
+ NBasis= 174 RedAO= T EigKep= 1.85D-04 NBF= 103 71
+ NBsUse= 174 1.00D-06 EigRej= -1.00D+00 NBFU= 103 71
+ Initial guess from the checkpoint file: "TolueneEnergy.chk"
+ B after Tr= -0.000000 0.000000 -0.000000
+ Rot= 1.000000 0.000000 0.000000 0.000000 Ang= 0.00 deg.
+ Initial guess orbital symmetries:
+ Occupied (A') (A') (A") (A') (A") (A') (A') (A') (A') (A")
+ (A') (A") (A') (A') (A") (A') (A') (A") (A') (A")
+ (A') (A') (A") (A") (A')
+ Virtual (A") (A') (A') (A') (A") (A') (A") (A') (A') (A")
+ (A') (A') (A') (A") (A') (A") (A") (A') (A') (A')
+ (A") (A") (A') (A') (A') (A") (A') (A") (A') (A")
+ (A') (A") (A') (A') (A') (A") (A") (A') (A") (A')
+ (A') (A') (A") (A') (A') (A") (A') (A') (A") (A")
+ (A') (A') (A") (A") (A') (A') (A") (A') (A") (A')
+ (A") (A') (A') (A") (A") (A') (A") (A') (A') (A")
+ (A') (A") (A") (A') (A') (A') (A") (A') (A') (A")
+ (A") (A") (A') (A') (A') (A") (A") (A") (A') (A')
+ (A') (A") (A') (A") (A') (A") (A') (A') (A") (A")
+ (A') (A') (A") (A') (A") (A') (A') (A") (A') (A')
+ (A') (A") (A') (A") (A') (A') (A") (A") (A') (A')
+ (A') (A") (A') (A") (A") (A') (A") (A') (A") (A')
+ (A') (A") (A') (A') (A') (A") (A") (A') (A") (A')
+ (A') (A") (A') (A') (A") (A') (A') (A") (A')
+ Requested convergence on RMS density matrix=1.00D-08 within 128 cycles.
+ Requested convergence on MAX density matrix=1.00D-06.
+ Requested convergence on energy=1.00D-06.
+ No special actions if energy rises.
+ SCF Done: E(RB3LYP) = -271.636042406 A.U. after 1 cycles
+ NFock= 1 Conv=0.64D-09 -V/T= 2.0046
+ DoSCS=F DFT=T ScalE2(SS,OS)= 1.000000 1.000000
+ Range of M.O.s used for correlation: 1 174
+ NBasis= 174 NAE= 25 NBE= 25 NFC= 0 NFV= 0
+ NROrb= 174 NOA= 25 NOB= 25 NVA= 149 NVB= 149
+
+ **** Warning!!: The largest alpha MO coefficient is 0.18959599D+02
+
+ Symmetrizing basis deriv contribution to polar:
+ IMax=3 JMax=2 DiffMx= 0.00D+00
+ G2DrvN: will do 16 centers at a time, making 1 passes.
+ Calling FoFCou, ICntrl= 3107 FMM=F I1Cent= 0 AccDes= 0.00D+00.
+ End of G2Drv F.D. properties file 721 does not exist.
+ End of G2Drv F.D. properties file 722 does not exist.
+ End of G2Drv F.D. properties file 788 does not exist.
+ IDoAtm=111111111111111
+ Differentiating once with respect to electric field.
+ with respect to dipole field.
+ Differentiating once with respect to nuclear coordinates.
+ CalDSu exits because no D1Ps are significant.
+ There are 33 degrees of freedom in the 1st order CPHF. IDoFFX=4 NUNeed= 33.
+ 33 vectors produced by pass 0 Test12= 1.13D-14 3.03D-09 XBig12= 1.07D+02 6.63D+00.
+ AX will form 33 AO Fock derivatives at one time.
+ 33 vectors produced by pass 1 Test12= 1.13D-14 3.03D-09 XBig12= 2.56D+01 1.19D+00.
+ 33 vectors produced by pass 2 Test12= 1.13D-14 3.03D-09 XBig12= 5.25D-01 1.34D-01.
+ 33 vectors produced by pass 3 Test12= 1.13D-14 3.03D-09 XBig12= 2.56D-03 7.83D-03.
+ 33 vectors produced by pass 4 Test12= 1.13D-14 3.03D-09 XBig12= 9.35D-06 4.45D-04.
+ 30 vectors produced by pass 5 Test12= 1.13D-14 3.03D-09 XBig12= 1.28D-08 1.17D-05.
+ 10 vectors produced by pass 6 Test12= 1.13D-14 3.03D-09 XBig12= 1.42D-11 5.06D-07.
+ 2 vectors produced by pass 7 Test12= 1.13D-14 3.03D-09 XBig12= 1.08D-14 1.46D-08.
+ InvSVY: IOpt=1 It= 1 EMax= 1.07D-14
+ Solved reduced A of dimension 207 with 33 vectors.
+ Isotropic polarizability for W= 0.000000 72.38 Bohr**3.
+ End of Minotr F.D. properties file 721 does not exist.
+ End of Minotr F.D. properties file 722 does not exist.
+ End of Minotr F.D. properties file 788 does not exist.
+
+ **********************************************************************
+
+ Population analysis using the SCF density.
+
+ **********************************************************************
+
+ Orbital symmetries:
+ Occupied (A') (A') (A") (A') (A") (A') (A') (A') (A') (A")
+ (A') (A") (A') (A') (A") (A') (A') (A") (A') (A")
+ (A') (A') (A") (A") (A')
+ Virtual (A") (A') (A') (A') (A") (A') (A") (A') (A') (A")
+ (A') (A') (A') (A") (A') (A") (A") (A') (A') (A')
+ (A") (A") (A') (A') (A') (A") (A') (A") (A') (A")
+ (A') (A") (A') (A') (A') (A") (A") (A') (A") (A')
+ (A') (A') (A") (A') (A') (A") (A') (A') (A") (A")
+ (A') (A') (A") (A") (A') (A') (A") (A') (A") (A')
+ (A") (A') (A') (A") (A") (A') (A") (A') (A') (A")
+ (A') (A") (A") (A') (A') (A') (A") (A') (A') (A")
+ (A") (A") (A') (A') (A') (A") (A") (A") (A') (A')
+ (A') (A") (A') (A") (A') (A") (A') (A') (A") (A")
+ (A') (A') (A") (A') (A") (A') (A') (A") (A') (A')
+ (A') (A") (A') (A") (A') (A') (A") (A") (A') (A')
+ (A') (A") (A') (A") (A") (A') (A") (A') (A") (A')
+ (A') (A") (A') (A') (A') (A") (A") (A') (A") (A')
+ (A') (A") (A') (A') (A") (A') (A') (A") (A')
+ The electronic state is 1-A'.
+ Alpha occ. eigenvalues -- -10.18118 -10.17130 -10.17124 -10.16919 -10.16880
+ Alpha occ. eigenvalues -- -10.16877 -10.16776 -0.85703 -0.77241 -0.74475
+ Alpha occ. eigenvalues -- -0.68652 -0.60548 -0.58481 -0.51253 -0.46159
+ Alpha occ. eigenvalues -- -0.45491 -0.42227 -0.42063 -0.40982 -0.38747
+ Alpha occ. eigenvalues -- -0.35673 -0.34366 -0.34055 -0.25337 -0.24458
+ Alpha virt. eigenvalues -- -0.00774 -0.00571 0.04543 0.06214 0.07503
+ Alpha virt. eigenvalues -- 0.09869 0.10865 0.11029 0.13654 0.13858
+ Alpha virt. eigenvalues -- 0.16612 0.20541 0.27002 0.27489 0.28470
+ Alpha virt. eigenvalues -- 0.29468 0.30842 0.31781 0.33719 0.39980
+ Alpha virt. eigenvalues -- 0.40611 0.40840 0.41227 0.43265 0.44421
+ Alpha virt. eigenvalues -- 0.44992 0.46872 0.47091 0.48221 0.50212
+ Alpha virt. eigenvalues -- 0.54459 0.54619 0.55486 0.58592 0.60411
+ Alpha virt. eigenvalues -- 0.60508 0.61175 0.62477 0.62588 0.62850
+ Alpha virt. eigenvalues -- 0.65561 0.68824 0.73639 0.73792 0.76334
+ Alpha virt. eigenvalues -- 0.79052 0.81419 0.85302 0.85338 0.89737
+ Alpha virt. eigenvalues -- 0.93899 0.95521 1.00875 1.01792 1.03211
+ Alpha virt. eigenvalues -- 1.05267 1.08562 1.13136 1.14345 1.24584
+ Alpha virt. eigenvalues -- 1.32216 1.33104 1.34797 1.41336 1.45155
+ Alpha virt. eigenvalues -- 1.46713 1.46735 1.48402 1.51363 1.54024
+ Alpha virt. eigenvalues -- 1.55564 1.57181 1.57825 1.58355 1.59075
+ Alpha virt. eigenvalues -- 1.63952 1.67436 1.68562 1.73197 1.74440
+ Alpha virt. eigenvalues -- 1.77844 1.80186 1.80621 1.83266 1.89720
+ Alpha virt. eigenvalues -- 1.90667 1.91295 1.91840 1.92901 1.95726
+ Alpha virt. eigenvalues -- 1.98295 2.02163 2.02179 2.08080 2.10841
+ Alpha virt. eigenvalues -- 2.20527 2.22336 2.23974 2.30078 2.31939
+ Alpha virt. eigenvalues -- 2.34688 2.35276 2.38258 2.40613 2.47678
+ Alpha virt. eigenvalues -- 2.50613 2.52781 2.53330 2.57563 2.60110
+ Alpha virt. eigenvalues -- 2.61273 2.62178 2.64288 2.65604 2.67827
+ Alpha virt. eigenvalues -- 2.68159 2.69270 2.72883 2.76073 2.81546
+ Alpha virt. eigenvalues -- 2.85681 2.85723 2.88423 2.91931 2.93696
+ Alpha virt. eigenvalues -- 3.06215 3.11798 3.18707 3.32912 3.34661
+ Alpha virt. eigenvalues -- 3.47091 3.47581 3.59187 3.64475 3.78989
+ Alpha virt. eigenvalues -- 3.81090 3.96737 4.02796 4.11702 4.12087
+ Alpha virt. eigenvalues -- 4.32426 4.83940 23.52127 23.89773 23.94491
+ Alpha virt. eigenvalues -- 23.94746 24.08234 24.10266 24.19702
+ Condensed to atoms (all electrons):
+ 1 2 3 4 5 6
+ 1 C 5.025940 0.525465 -0.051275 -0.040838 -0.051275 0.525465
+ 2 C 0.525465 4.841385 0.532606 -0.060204 -0.037853 -0.054327
+ 3 C -0.051275 0.532606 4.840767 0.521296 -0.057496 -0.037853
+ 4 C -0.040838 -0.060204 0.521296 4.867271 0.521296 -0.060204
+ 5 C -0.051275 -0.037853 -0.057496 0.521296 4.840767 0.532606
+ 6 C 0.525465 -0.054327 -0.037853 -0.060204 0.532606 4.841385
+ 7 C 0.359756 -0.057183 0.005608 0.000141 0.005608 -0.057183
+ 8 H -0.049334 0.417271 -0.039392 0.008003 -0.000587 0.007685
+ 9 H 0.008281 -0.042059 0.414266 -0.043483 0.007588 -0.000405
+ 10 H -0.000425 0.007659 -0.042501 0.415720 -0.042501 0.007659
+ 11 H 0.008281 -0.000405 0.007588 -0.043483 0.414266 -0.042059
+ 12 H -0.049334 0.007685 -0.000587 0.008003 -0.039392 0.417271
+ 13 H -0.034997 -0.002972 -0.000212 0.000103 -0.000212 -0.002972
+ 14 H -0.036633 -0.006852 0.000506 0.000012 -0.000342 0.005392
+ 15 H -0.036633 0.005392 -0.000342 0.000012 0.000506 -0.006852
+ 7 8 9 10 11 12
+ 1 C 0.359756 -0.049334 0.008281 -0.000425 0.008281 -0.049334
+ 2 C -0.057183 0.417271 -0.042059 0.007659 -0.000405 0.007685
+ 3 C 0.005608 -0.039392 0.414266 -0.042501 0.007588 -0.000587
+ 4 C 0.000141 0.008003 -0.043483 0.415720 -0.043483 0.008003
+ 5 C 0.005608 -0.000587 0.007588 -0.042501 0.414266 -0.039392
+ 6 C -0.057183 0.007685 -0.000405 0.007659 -0.042059 0.417271
+ 7 C 4.806296 -0.007514 -0.000345 0.000044 -0.000345 -0.007514
+ 8 H -0.007514 0.586747 -0.008746 -0.000364 0.000082 -0.000390
+ 9 H -0.000345 -0.008746 0.581522 -0.008072 -0.000395 0.000082
+ 10 H 0.000044 -0.000364 -0.008072 0.579510 -0.008072 -0.000364
+ 11 H -0.000345 0.000082 -0.000395 -0.008072 0.581522 -0.008746
+ 12 H -0.007514 -0.000390 0.000082 -0.000364 -0.008746 0.586747
+ 13 H 0.397705 0.000450 0.000014 -0.000002 0.000014 0.000450
+ 14 H 0.406918 0.002892 -0.000026 -0.000003 0.000023 -0.000005
+ 15 H 0.406918 -0.000005 0.000023 -0.000003 -0.000026 0.002892
+ 13 14 15
+ 1 C -0.034997 -0.036633 -0.036633
+ 2 C -0.002972 -0.006852 0.005392
+ 3 C -0.000212 0.000506 -0.000342
+ 4 C 0.000103 0.000012 0.000012
+ 5 C -0.000212 -0.000342 0.000506
+ 6 C -0.002972 0.005392 -0.006852
+ 7 C 0.397705 0.406918 0.406918
+ 8 H 0.000450 0.002892 -0.000005
+ 9 H 0.000014 -0.000026 0.000023
+ 10 H -0.000002 -0.000003 -0.000003
+ 11 H 0.000014 0.000023 -0.000026
+ 12 H 0.000450 -0.000005 0.002892
+ 13 H 0.574015 -0.028900 -0.028900
+ 14 H -0.028900 0.572774 -0.027826
+ 15 H -0.028900 -0.027826 0.572774
+ Mulliken charges:
+ 1
+ 1 C -0.102442
+ 2 C -0.075610
+ 3 C -0.092981
+ 4 C -0.093646
+ 5 C -0.092981
+ 6 C -0.075610
+ 7 C -0.258907
+ 8 H 0.083200
+ 9 H 0.091755
+ 10 H 0.091714
+ 11 H 0.091755
+ 12 H 0.083200
+ 13 H 0.126414
+ 14 H 0.112069
+ 15 H 0.112069
+ Sum of Mulliken charges = -0.00000
+ Mulliken charges with hydrogens summed into heavy atoms:
+ 1
+ 1 C -0.102442
+ 2 C 0.007590
+ 3 C -0.001226
+ 4 C -0.001932
+ 5 C -0.001226
+ 6 C 0.007590
+ 7 C 0.091645
+ APT charges:
+ 1
+ 1 C 0.073037
+ 2 C -0.068085
+ 3 C -0.006356
+ 4 C -0.059787
+ 5 C -0.006356
+ 6 C -0.068085
+ 7 C 0.080172
+ 8 H 0.022036
+ 9 H 0.022496
+ 10 H 0.026525
+ 11 H 0.022496
+ 12 H 0.022036
+ 13 H -0.030022
+ 14 H -0.015053
+ 15 H -0.015053
+ Sum of APT charges = -0.00000
+ APT charges with hydrogens summed into heavy atoms:
+ 1
+ 1 C 0.073037
+ 2 C -0.046049
+ 3 C 0.016139
+ 4 C -0.033262
+ 5 C 0.016139
+ 6 C -0.046049
+ 7 C 0.020043
+ Electronic spatial extent (au): = 718.6796
+ Charge= -0.0000 electrons
+ Dipole moment (field-independent basis, Debye):
+ X= -0.0382 Y= 0.3496 Z= -0.0000 Tot= 0.3517
+ Quadrupole moment (field-independent basis, Debye-Ang):
+ XX= -45.9586 YY= -38.3806 ZZ= -38.7547
+ XY= -0.1003 XZ= -0.0000 YZ= 0.0000
+ Traceless Quadrupole moment (field-independent basis, Debye-Ang):
+ XX= -4.9273 YY= 2.6507 ZZ= 2.2766
+ XY= -0.1003 XZ= -0.0000 YZ= 0.0000
+ Octapole moment (field-independent basis, Debye-Ang**2):
+ XXX= -0.7775 YYY= -4.4570 ZZZ= -0.0000 XYY= -0.0626
+ XXY= 3.4505 XXZ= 0.0000 XZZ= 0.6266 YZZ= -1.0971
+ YYZ= -0.0000 XYZ= -0.0000
+ Hexadecapole moment (field-independent basis, Debye-Ang**3):
+ XXXX= -58.5344 YYYY= -612.8883 ZZZZ= -288.0351 XXXY= 0.3789
+ XXXZ= 0.0000 YYYX= 2.0980 YYYZ= -0.0000 ZZZX= -0.0000
+ ZZZY= -0.0000 XXYY= -120.1587 XXZZ= -67.5366 YYZZ= -147.2907
+ XXYZ= -0.0000 YYXZ= -0.0000 ZZXY= 2.3529
+ N-N= 2.691308041674D+02 E-N=-1.167923146826D+03 KE= 2.703859772574D+02
+ Symmetry A' KE= 1.878583713742D+02
+ Symmetry A" KE= 8.252760588322D+01
+ Exact polarizability: 38.240 -0.615 95.971 -0.000 0.000 82.939
+ Approx polarizability: 58.128 -0.822 145.276 -0.000 -0.000 138.432
+ Calling FoFJK, ICntrl= 100127 FMM=F ISym2X=1 I1Cent= 0 IOpClX= 0 NMat=1 NMatS=1 NMatT=0.
+ Full mass-weighted force constant matrix:
+ Low frequencies --- -8.9415 -5.6761 -4.9177 -0.0005 -0.0003 0.0005
+ Low frequencies --- 27.1938 208.3911 343.7894
+ Diagonal vibrational polarizability:
+ 6.3734459 0.7196946 9.8053514
+ Harmonic frequencies (cm**-1), IR intensities (KM/Mole), Raman scattering
+ activities (A**4/AMU), depolarization ratios for plane and unpolarized
+ incident light, reduced masses (AMU), force constants (mDyne/A),
+ and normal coordinates:
+ 1 2 3
+ A" A' A"
+ Frequencies -- 27.1297 208.3911 343.7894
+ Red. masses -- 1.0349 3.0058 2.5034
+ Frc consts -- 0.0004 0.0769 0.1743
+ IR Inten -- 0.2528 2.2909 0.3408
+ Atom AN X Y Z X Y Z X Y Z
+ 1 6 0.00 0.00 -0.01 -0.16 -0.00 -0.00 0.00 -0.00 -0.15
+ 2 6 -0.02 0.00 -0.00 -0.19 -0.00 -0.00 0.01 0.06 -0.13
+ 3 6 -0.02 0.00 0.00 0.01 -0.00 -0.00 -0.01 0.08 0.01
+ 4 6 0.00 0.00 -0.00 0.20 -0.00 0.00 -0.00 0.00 0.07
+ 5 6 0.02 -0.00 0.00 0.01 -0.00 0.00 0.01 -0.08 0.01
+ 6 6 0.02 -0.00 -0.00 -0.19 -0.00 0.00 -0.01 -0.06 -0.13
+ 7 6 0.00 -0.00 0.01 0.21 0.01 0.00 -0.00 0.00 0.23
+ 8 1 -0.04 0.00 -0.00 -0.25 -0.00 0.00 0.02 0.15 -0.18
+ 9 1 -0.04 0.00 0.00 0.08 -0.00 0.00 -0.02 0.17 0.06
+ 10 1 0.00 -0.00 0.00 0.45 -0.00 0.00 -0.00 0.00 0.14
+ 11 1 0.04 -0.00 0.00 0.08 -0.00 -0.00 0.02 -0.17 0.06
+ 12 1 0.04 -0.00 -0.00 -0.25 -0.00 -0.00 -0.02 -0.15 -0.18
+ 13 1 0.00 -0.00 0.59 0.33 0.32 -0.00 -0.00 -0.00 0.35
+ 14 1 0.50 0.00 -0.27 0.34 -0.14 -0.00 -0.03 -0.33 0.40
+ 15 1 -0.50 -0.00 -0.27 0.34 -0.14 0.00 0.03 0.33 0.40
+ 4 5 6
+ A" A' A'
+ Frequencies -- 415.2582 476.5720 529.2502
+ Red. masses -- 2.9127 2.7196 5.0162
+ Frc consts -- 0.2959 0.3639 0.8278
+ IR Inten -- 0.0067 9.0473 0.6225
+ Atom AN X Y Z X Y Z X Y Z
+ 1 6 0.00 0.00 0.01 0.28 -0.01 -0.00 0.04 0.22 -0.00
+ 2 6 0.21 -0.00 0.01 -0.04 0.01 0.01 0.00 -0.05 -0.13
+ 3 6 -0.21 -0.00 -0.00 -0.13 0.01 0.01 -0.01 -0.11 -0.12
+ 4 6 -0.00 -0.00 -0.00 0.19 0.02 -0.00 0.02 -0.29 0.00
+ 5 6 0.21 0.00 -0.00 -0.13 0.01 -0.01 -0.01 -0.11 0.12
+ 6 6 -0.21 0.00 0.01 -0.04 0.01 -0.01 0.00 -0.05 0.13
+ 7 6 -0.00 0.00 -0.01 -0.01 -0.03 0.00 -0.01 0.37 0.00
+ 8 1 0.45 -0.01 0.01 -0.32 0.02 0.00 -0.04 -0.24 -0.02
+ 9 1 -0.45 -0.01 -0.00 -0.39 -0.00 0.00 -0.07 0.04 -0.03
+ 10 1 0.00 -0.00 -0.01 0.33 0.02 -0.00 0.02 -0.29 -0.00
+ 11 1 0.45 0.01 -0.00 -0.39 -0.00 -0.00 -0.07 0.04 0.03
+ 12 1 -0.45 0.01 0.01 -0.32 0.02 -0.00 -0.04 -0.24 0.02
+ 13 1 -0.00 0.00 -0.02 -0.13 -0.36 -0.00 -0.03 0.33 0.00
+ 14 1 -0.00 0.01 -0.02 -0.15 0.13 0.01 -0.02 0.39 0.00
+ 15 1 0.00 -0.01 -0.02 -0.15 0.13 -0.01 -0.02 0.39 -0.00
+ 7 8 9
+ A" A' A'
+ Frequencies -- 637.7455 713.6535 744.5558
+ Red. masses -- 6.3666 2.0472 1.4795
+ Frc consts -- 1.5256 0.6143 0.4833
+ IR Inten -- 0.1011 27.4005 44.4082
+ Atom AN X Y Z X Y Z X Y Z
+ 1 6 0.00 0.00 0.14 -0.11 0.00 0.00 0.12 0.01 0.00
+ 2 6 -0.00 0.24 0.20 0.10 -0.00 -0.00 -0.09 0.00 -0.01
+ 3 6 -0.00 0.26 -0.24 -0.16 -0.00 0.00 0.00 0.00 -0.01
+ 4 6 0.00 -0.00 -0.14 0.10 0.00 0.00 -0.11 -0.01 -0.00
+ 5 6 0.00 -0.26 -0.24 -0.16 -0.00 -0.00 0.00 0.00 0.01
+ 6 6 0.00 -0.24 0.20 0.10 -0.00 0.00 -0.09 0.00 0.01
+ 7 6 0.00 0.00 0.05 -0.02 0.00 -0.00 0.03 -0.01 -0.00
+ 8 1 -0.00 0.10 0.28 0.51 -0.00 -0.00 0.17 -0.00 -0.00
+ 9 1 0.00 0.12 -0.32 0.09 -0.00 -0.00 0.54 0.02 -0.01
+ 10 1 0.00 -0.00 0.30 0.59 0.00 0.00 0.46 -0.01 -0.00
+ 11 1 -0.00 -0.12 -0.32 0.09 -0.00 0.00 0.54 0.02 0.01
+ 12 1 0.00 -0.10 0.28 0.51 -0.00 0.00 0.17 -0.00 0.00
+ 13 1 0.00 0.00 0.06 0.02 0.10 -0.00 -0.06 -0.25 -0.00
+ 14 1 -0.01 -0.02 0.07 0.02 -0.04 0.00 -0.09 0.10 0.01
+ 15 1 0.01 0.02 0.07 0.02 -0.04 -0.00 -0.09 0.10 -0.01
+ 10 11 12
+ A' A" A'
+ Frequencies -- 798.9497 855.1000 910.6190
+ Red. masses -- 4.5106 1.2496 1.3057
+ Frc consts -- 1.6964 0.5383 0.6379
+ IR Inten -- 0.8242 0.0152 0.5178
+ Atom AN X Y Z X Y Z X Y Z
+ 1 6 0.03 -0.05 0.00 -0.00 0.00 -0.00 -0.02 -0.00 -0.00
+ 2 6 -0.01 -0.08 0.18 -0.08 -0.00 0.00 0.09 -0.00 -0.00
+ 3 6 -0.00 -0.13 0.22 -0.07 -0.00 0.00 -0.01 0.00 -0.00
+ 4 6 -0.02 0.17 0.00 -0.00 -0.00 -0.00 -0.10 -0.00 0.00
+ 5 6 -0.00 -0.13 -0.22 0.07 0.00 0.00 -0.01 0.00 0.00
+ 6 6 -0.01 -0.08 -0.18 0.08 0.00 0.00 0.09 -0.00 0.00
+ 7 6 -0.01 0.28 -0.00 -0.00 -0.00 -0.00 -0.03 -0.00 0.00
+ 8 1 -0.00 0.01 0.14 0.51 -0.00 -0.00 -0.52 0.00 -0.00
+ 9 1 0.07 -0.39 0.07 0.48 -0.00 -0.00 0.08 0.01 -0.00
+ 10 1 0.08 0.16 0.00 0.00 -0.00 -0.00 0.59 0.00 0.00
+ 11 1 0.07 -0.39 -0.07 -0.48 0.00 -0.00 0.08 0.01 0.00
+ 12 1 -0.00 0.01 -0.14 -0.51 0.00 -0.00 -0.52 0.00 0.00
+ 13 1 -0.01 0.29 -0.00 0.00 0.00 0.01 0.04 0.20 -0.00
+ 14 1 -0.00 0.31 -0.01 -0.00 -0.01 0.01 0.08 -0.10 -0.02
+ 15 1 -0.00 0.31 0.01 0.00 0.01 0.01 0.08 -0.10 0.02
+ 13 14 15
+ A" A' A"
+ Frequencies -- 975.7938 999.1735 1000.8590
+ Red. masses -- 1.3662 1.2783 1.4354
+ Frc consts -- 0.7665 0.7519 0.8472
+ IR Inten -- 0.0036 0.0380 0.0450
+ Atom AN X Y Z X Y Z X Y Z
+ 1 6 0.00 0.00 0.00 -0.01 0.00 0.00 0.00 0.00 0.06
+ 2 6 0.09 -0.00 -0.00 -0.03 0.00 0.00 -0.00 -0.02 -0.07
+ 3 6 -0.09 0.00 -0.00 0.08 0.00 -0.00 -0.00 0.03 -0.03
+ 4 6 0.00 0.00 0.00 -0.09 -0.00 0.00 0.00 -0.00 0.04
+ 5 6 0.09 -0.00 -0.00 0.08 0.00 0.00 0.00 -0.03 -0.03
+ 6 6 -0.09 0.00 -0.00 -0.03 0.00 -0.00 0.00 0.02 -0.07
+ 7 6 -0.00 0.00 0.01 0.01 0.00 0.00 -0.00 -0.00 0.14
+ 8 1 -0.47 0.00 -0.00 0.25 0.00 0.00 0.03 -0.04 -0.06
+ 9 1 0.51 0.00 -0.00 -0.51 -0.00 0.00 -0.01 0.14 0.03
+ 10 1 -0.00 0.00 0.00 0.57 -0.00 0.00 -0.00 -0.00 0.18
+ 11 1 -0.51 -0.00 -0.00 -0.51 -0.00 -0.00 0.01 -0.14 0.03
+ 12 1 0.47 -0.00 -0.00 0.25 0.00 -0.00 -0.03 0.04 -0.06
+ 13 1 0.00 0.00 -0.01 -0.01 -0.06 -0.00 0.00 0.00 -0.28
+ 14 1 0.00 0.02 -0.01 -0.03 0.03 0.01 0.05 0.61 -0.17
+ 15 1 -0.00 -0.02 -0.01 -0.03 0.03 -0.01 -0.05 -0.61 -0.17
+ 16 17 18
+ A' A' A'
+ Frequencies -- 1017.9059 1051.4547 1062.6686
+ Red. masses -- 6.1800 2.2074 1.5525
+ Frc consts -- 3.7727 1.4378 1.0329
+ IR Inten -- 0.0546 2.7798 8.4958
+ Atom AN X Y Z X Y Z X Y Z
+ 1 6 0.03 0.02 0.00 0.01 0.03 -0.00 0.14 -0.00 -0.00
+ 2 6 -0.01 -0.19 -0.35 -0.00 0.05 -0.07 -0.04 0.01 0.02
+ 3 6 0.01 -0.02 0.05 0.00 -0.03 0.19 0.00 0.01 -0.02
+ 4 6 -0.00 0.39 0.00 -0.00 -0.14 0.00 0.00 -0.01 0.00
+ 5 6 0.01 -0.02 -0.05 0.00 -0.03 -0.19 0.00 0.01 0.02
+ 6 6 -0.01 -0.19 0.35 -0.00 0.05 0.07 -0.04 0.01 -0.02
+ 7 6 -0.02 0.02 -0.00 -0.01 -0.02 -0.00 -0.15 -0.01 -0.00
+ 8 1 0.06 -0.16 -0.38 0.01 0.35 -0.24 0.17 -0.01 0.02
+ 9 1 -0.02 -0.01 0.04 0.00 0.31 0.39 -0.00 -0.01 -0.03
+ 10 1 0.01 0.40 0.00 -0.00 -0.15 0.00 -0.02 -0.01 0.00
+ 11 1 -0.02 -0.01 -0.04 0.00 0.31 -0.39 -0.00 -0.01 0.03
+ 12 1 0.06 -0.16 0.38 0.01 0.35 0.24 0.17 -0.01 -0.02
+ 13 1 0.01 0.11 -0.00 0.01 0.03 0.00 0.11 0.70 0.00
+ 14 1 0.04 -0.05 -0.00 0.03 -0.06 -0.01 0.28 -0.33 -0.09
+ 15 1 0.04 -0.05 0.00 0.03 -0.06 0.01 0.28 -0.33 0.09
+ 19 20 21
+ A" A" A'
+ Frequencies -- 1111.5776 1180.9738 1203.1584
+ Red. masses -- 1.4595 1.1120 1.1382
+ Frc consts -- 1.0625 0.9138 0.9708
+ IR Inten -- 5.6094 0.0696 0.3679
+ Atom AN X Y Z X Y Z X Y Z
+ 1 6 -0.00 -0.00 0.03 -0.00 -0.00 0.00 0.00 -0.01 0.00
+ 2 6 0.00 -0.10 -0.02 -0.00 0.01 -0.01 0.00 -0.05 0.03
+ 3 6 0.00 0.05 -0.05 0.00 -0.04 -0.02 -0.00 0.05 0.02
+ 4 6 -0.00 0.00 0.07 -0.00 0.00 0.07 -0.00 0.01 -0.00
+ 5 6 -0.00 -0.05 -0.05 -0.00 0.04 -0.02 -0.00 0.05 -0.02
+ 6 6 -0.00 0.10 -0.02 0.00 -0.01 -0.01 0.00 -0.05 -0.03
+ 7 6 0.00 0.00 -0.06 0.00 0.00 -0.00 -0.00 0.00 -0.00
+ 8 1 -0.00 -0.46 0.18 -0.00 0.14 -0.09 -0.00 -0.43 0.25
+ 9 1 0.00 0.23 0.05 -0.00 -0.42 -0.24 0.00 0.43 0.25
+ 10 1 0.00 0.00 0.52 -0.00 0.00 0.68 0.00 0.01 -0.00
+ 11 1 -0.00 -0.23 0.05 0.00 0.42 -0.24 0.00 0.43 -0.25
+ 12 1 0.00 0.46 0.18 0.00 -0.14 -0.09 -0.00 -0.43 -0.25
+ 13 1 -0.00 -0.00 0.10 -0.00 -0.00 0.01 0.00 0.01 0.00
+ 14 1 -0.03 -0.19 0.05 0.00 -0.01 0.00 -0.00 0.00 0.00
+ 15 1 0.03 0.19 0.05 -0.00 0.01 0.00 -0.00 0.00 -0.00
+ 22 23 24
+ A' A" A"
+ Frequencies -- 1229.0257 1327.8938 1355.9573
+ Red. masses -- 3.0043 4.9783 1.3956
+ Frc consts -- 2.6737 5.1720 1.5118
+ IR Inten -- 0.8988 0.0654 0.0113
+ Atom AN X Y Z X Y Z X Y Z
+ 1 6 -0.00 0.36 0.00 0.00 0.00 0.34 -0.00 -0.00 0.07
+ 2 6 0.00 0.05 -0.00 -0.00 0.17 -0.12 0.00 -0.10 0.03
+ 3 6 0.00 -0.09 0.08 0.00 -0.20 -0.13 0.00 0.01 -0.01
+ 4 6 -0.00 0.03 0.00 0.00 -0.00 0.20 -0.00 0.00 -0.09
+ 5 6 0.00 -0.09 -0.08 -0.00 0.20 -0.13 -0.00 -0.01 -0.01
+ 6 6 0.00 0.05 0.00 0.00 -0.17 -0.12 -0.00 0.10 0.03
+ 7 6 0.00 -0.14 -0.00 0.00 -0.00 -0.08 -0.00 0.00 -0.03
+ 8 1 -0.01 -0.37 0.26 -0.00 0.12 -0.10 -0.00 0.48 -0.30
+ 9 1 -0.00 -0.32 -0.05 0.00 0.38 0.20 -0.00 0.28 0.14
+ 10 1 -0.00 0.02 0.00 0.00 0.00 -0.19 0.00 0.00 0.33
+ 11 1 -0.00 -0.32 0.05 -0.00 -0.38 0.20 0.00 -0.28 0.14
+ 12 1 -0.01 -0.37 -0.26 0.00 -0.12 -0.10 0.00 -0.48 -0.30
+ 13 1 -0.02 -0.21 0.00 0.00 0.00 0.27 0.00 0.00 0.09
+ 14 1 0.00 -0.27 0.05 -0.09 -0.20 0.07 -0.04 -0.05 0.02
+ 15 1 0.00 -0.27 -0.05 0.09 0.20 0.07 0.04 0.05 0.02
+ 25 26 27
+ A' A" A'
+ Frequencies -- 1414.7773 1470.3977 1491.3623
+ Red. masses -- 1.2475 1.5810 1.0496
+ Frc consts -- 1.4712 2.0139 1.3755
+ IR Inten -- 1.0039 0.0156 6.7899
+ Atom AN X Y Z X Y Z X Y Z
+ 1 6 0.00 0.02 0.00 0.00 0.00 0.10 -0.02 0.01 -0.00
+ 2 6 -0.00 0.00 -0.00 0.00 -0.06 -0.04 0.00 0.01 -0.00
+ 3 6 -0.00 -0.00 0.00 0.00 0.11 0.01 0.00 -0.00 0.00
+ 4 6 -0.00 0.00 0.00 0.00 -0.00 0.07 -0.00 0.00 -0.00
+ 5 6 -0.00 -0.00 -0.00 -0.00 -0.11 0.01 0.00 -0.00 -0.00
+ 6 6 -0.00 0.00 0.00 -0.00 0.06 -0.04 0.00 0.01 0.00
+ 7 6 0.01 -0.14 -0.00 0.00 0.00 -0.06 -0.05 -0.02 -0.00
+ 8 1 -0.00 -0.02 0.01 -0.01 0.05 -0.12 -0.00 -0.02 0.01
+ 9 1 0.00 -0.01 -0.00 -0.00 -0.24 -0.20 -0.00 -0.00 0.00
+ 10 1 0.00 0.00 -0.00 0.00 -0.00 -0.43 0.00 0.00 -0.00
+ 11 1 0.00 -0.01 0.00 0.00 0.24 -0.20 -0.00 -0.00 -0.00
+ 12 1 -0.00 -0.02 -0.01 0.01 -0.05 -0.12 -0.00 -0.02 -0.01
+ 13 1 0.24 0.57 0.00 -0.00 -0.00 0.55 -0.13 -0.30 0.00
+ 14 1 -0.22 0.48 -0.14 -0.29 0.15 0.05 0.46 0.26 -0.40
+ 15 1 -0.22 0.48 0.14 0.29 -0.15 0.05 0.46 0.26 0.40
+ 28 29 30
+ A" A' A"
+ Frequencies -- 1503.9857 1529.6640 1626.8101
+ Red. masses -- 1.3000 2.2709 5.3095
+ Frc consts -- 1.7326 3.1307 8.2791
+ IR Inten -- 14.1638 15.4748 0.4023
+ Atom AN X Y Z X Y Z X Y Z
+ 1 6 0.00 -0.00 -0.08 -0.00 0.15 -0.00 0.00 -0.00 -0.30
+ 2 6 0.00 0.05 0.02 0.00 -0.07 0.10 0.00 -0.09 0.18
+ 3 6 0.00 -0.06 0.02 -0.00 -0.12 -0.11 -0.00 -0.07 -0.20
+ 4 6 -0.00 -0.00 -0.08 -0.00 0.11 -0.00 0.00 0.00 0.35
+ 5 6 -0.00 0.06 0.02 -0.00 -0.12 0.11 0.00 0.07 -0.20
+ 6 6 -0.00 -0.05 0.02 0.00 -0.07 -0.10 -0.00 0.09 0.18
+ 7 6 0.00 0.00 -0.03 -0.00 -0.03 -0.00 0.00 -0.00 0.02
+ 8 1 -0.00 -0.10 0.11 -0.00 0.41 -0.16 -0.00 0.28 -0.02
+ 9 1 -0.00 0.10 0.12 -0.00 0.44 0.20 -0.00 0.24 -0.04
+ 10 1 -0.00 -0.00 0.30 -0.00 0.13 0.00 0.00 0.00 -0.47
+ 11 1 0.00 -0.10 0.12 -0.00 0.44 -0.20 0.00 -0.24 -0.04
+ 12 1 0.00 0.10 0.11 -0.00 0.41 0.16 0.00 -0.28 -0.02
+ 13 1 0.00 0.00 0.60 -0.01 -0.04 0.00 0.00 0.00 0.14
+ 14 1 -0.34 0.31 0.04 0.01 -0.03 -0.01 -0.09 0.19 -0.01
+ 15 1 0.34 -0.31 0.04 0.01 -0.03 0.01 0.09 -0.19 -0.01
+ 31 32 33
+ A' A' A'
+ Frequencies -- 1648.8529 3020.0630 3074.4169
+ Red. masses -- 5.6557 1.0407 1.0944
+ Frc consts -- 9.0593 5.5926 6.0945
+ IR Inten -- 7.5235 29.0583 22.6025
+ Atom AN X Y Z X Y Z X Y Z
+ 1 6 0.00 -0.23 0.00 -0.00 -0.00 0.00 -0.00 0.00 -0.00
+ 2 6 -0.00 0.30 -0.09 0.00 -0.00 -0.00 0.00 0.00 0.00
+ 3 6 0.00 -0.27 -0.07 -0.00 0.00 -0.00 0.00 0.00 0.00
+ 4 6 -0.00 0.14 -0.00 -0.00 0.00 -0.00 0.00 -0.00 0.00
+ 5 6 0.00 -0.27 0.07 -0.00 0.00 0.00 0.00 0.00 -0.00
+ 6 6 -0.00 0.30 0.09 0.00 -0.00 0.00 0.00 0.00 -0.00
+ 7 6 0.00 0.03 -0.00 -0.03 0.05 0.00 -0.09 -0.02 0.00
+ 8 1 0.00 -0.31 0.26 0.00 0.01 0.01 -0.00 -0.01 -0.01
+ 9 1 0.00 0.24 0.23 0.00 -0.00 0.00 -0.00 -0.00 0.00
+ 10 1 0.00 0.15 0.00 0.00 -0.00 0.00 -0.00 0.00 0.00
+ 11 1 0.00 0.24 -0.23 0.00 -0.00 -0.00 -0.00 -0.00 -0.00
+ 12 1 0.00 -0.31 -0.26 0.00 0.01 -0.01 -0.00 -0.01 0.01
+ 13 1 0.02 0.06 -0.00 0.75 -0.25 0.00 0.56 -0.20 0.00
+ 14 1 -0.03 0.01 0.02 -0.21 -0.15 -0.35 0.24 0.21 0.47
+ 15 1 -0.03 0.01 -0.02 -0.21 -0.15 0.35 0.24 0.21 -0.47
+ 34 35 36
+ A" A' A"
+ Frequencies -- 3100.6270 3150.9395 3152.5481
+ Red. masses -- 1.1023 1.0858 1.0876
+ Frc consts -- 6.2438 6.3514 6.3685
+ IR Inten -- 17.8741 9.5350 6.3374
+ Atom AN X Y Z X Y Z X Y Z
+ 1 6 -0.00 0.00 -0.00 -0.00 -0.00 0.00 0.00 -0.00 0.00
+ 2 6 0.00 0.00 0.00 -0.00 -0.02 -0.04 -0.00 -0.03 -0.05
+ 3 6 0.00 -0.00 -0.00 0.00 -0.02 0.03 0.00 -0.01 0.02
+ 4 6 0.00 -0.00 0.00 -0.00 0.02 0.00 -0.00 -0.00 -0.00
+ 5 6 -0.00 0.00 -0.00 0.00 -0.02 -0.03 -0.00 0.01 0.02
+ 6 6 -0.00 -0.00 0.00 -0.00 -0.02 0.04 0.00 0.03 -0.05
+ 7 6 -0.00 -0.00 -0.09 -0.00 -0.00 0.00 0.00 -0.00 -0.00
+ 8 1 -0.00 -0.02 -0.02 0.00 0.27 0.47 0.00 0.32 0.56
+ 9 1 -0.00 -0.00 0.01 -0.00 0.20 -0.35 -0.00 0.14 -0.26
+ 10 1 -0.00 0.00 0.00 0.00 -0.29 0.00 -0.00 0.00 0.00
+ 11 1 0.00 0.00 0.01 -0.00 0.20 0.35 0.00 -0.14 -0.26
+ 12 1 0.00 0.02 -0.02 0.00 0.27 -0.47 -0.00 -0.32 0.56
+ 13 1 0.00 -0.00 -0.02 0.00 0.00 -0.00 -0.00 0.00 -0.00
+ 14 1 0.33 0.26 0.57 0.01 0.01 0.01 0.01 0.01 0.02
+ 15 1 -0.33 -0.26 0.57 0.01 0.01 -0.01 -0.01 -0.01 0.02
+ 37 38 39
+ A' A" A'
+ Frequencies -- 3165.1635 3173.5855 3186.3136
+ Red. masses -- 1.0899 1.0939 1.0981
+ Frc consts -- 6.4331 6.4912 6.5683
+ IR Inten -- 8.3953 41.8870 16.7988
+ Atom AN X Y Z X Y Z X Y Z
+ 1 6 -0.00 -0.00 0.00 -0.00 -0.00 0.00 0.00 0.00 0.00
+ 2 6 -0.00 -0.02 -0.03 -0.00 -0.01 -0.02 0.00 0.01 0.01
+ 3 6 -0.00 0.02 -0.02 -0.00 0.03 -0.05 0.00 -0.02 0.04
+ 4 6 0.00 -0.06 -0.00 0.00 -0.00 0.00 0.00 -0.06 -0.00
+ 5 6 -0.00 0.02 0.02 0.00 -0.03 -0.05 0.00 -0.02 -0.04
+ 6 6 -0.00 -0.02 0.03 0.00 0.01 -0.02 0.00 0.01 -0.01
+ 7 6 -0.00 -0.00 0.00 -0.00 0.00 -0.00 0.00 0.00 0.00
+ 8 1 0.00 0.21 0.36 0.00 0.15 0.25 -0.00 -0.09 -0.15
+ 9 1 0.00 -0.17 0.28 0.00 -0.32 0.56 -0.00 0.23 -0.42
+ 10 1 -0.00 0.66 -0.00 0.00 0.00 -0.01 -0.00 0.69 0.00
+ 11 1 0.00 -0.17 -0.28 -0.00 0.32 0.56 -0.00 0.23 0.42
+ 12 1 0.00 0.21 -0.36 -0.00 -0.15 0.25 -0.00 -0.09 0.15
+ 13 1 0.00 0.00 -0.00 0.00 -0.00 -0.00 0.00 -0.00 0.00
+ 14 1 0.00 0.01 0.01 0.00 0.00 0.01 -0.00 -0.00 -0.00
+ 15 1 0.00 0.01 -0.01 -0.00 -0.00 0.01 -0.00 -0.00 0.00
+
+ -------------------
+ - Thermochemistry -
+ -------------------
+ Temperature 298.150 Kelvin. Pressure 1.00000 Atm.
+ Atom 1 has atomic number 6 and mass 12.00000
+ Atom 2 has atomic number 6 and mass 12.00000
+ Atom 3 has atomic number 6 and mass 12.00000
+ Atom 4 has atomic number 6 and mass 12.00000
+ Atom 5 has atomic number 6 and mass 12.00000
+ Atom 6 has atomic number 6 and mass 12.00000
+ Atom 7 has atomic number 6 and mass 12.00000
+ Atom 8 has atomic number 1 and mass 1.00783
+ Atom 9 has atomic number 1 and mass 1.00783
+ Atom 10 has atomic number 1 and mass 1.00783
+ Atom 11 has atomic number 1 and mass 1.00783
+ Atom 12 has atomic number 1 and mass 1.00783
+ Atom 13 has atomic number 1 and mass 1.00783
+ Atom 14 has atomic number 1 and mass 1.00783
+ Atom 15 has atomic number 1 and mass 1.00783
+ Molecular mass: 92.06260 amu.
+ Principal axes and moments of inertia in atomic units:
+ 1 2 3
+ Eigenvalues -- 324.89671 717.151761030.83418
+ X -0.00734 0.00000 0.99997
+ Y 0.99997 0.00000 0.00734
+ Z 0.00000 1.00000 0.00000
+ This molecule is an asymmetric top.
+ Rotational symmetry number 1.
+ Rotational temperatures (Kelvin) 0.26659 0.12077 0.08402
+ Rotational constants (GHZ): 5.55482 2.51654 1.75076
+ Zero-point vibrational energy 334278.3 (Joules/Mol)
+ 79.89443 (Kcal/Mol)
+ Warning -- explicit consideration of 6 degrees of freedom as
+ vibrations may cause significant error
+ Vibrational temperatures: 39.03 299.83 494.64 597.46 685.68
+ (Kelvin) 761.47 917.57 1026.79 1071.25 1149.51
+ 1230.30 1310.18 1403.95 1437.59 1440.01
+ 1464.54 1512.81 1528.94 1599.31 1699.16
+ 1731.08 1768.29 1910.54 1950.92 2035.55
+ 2115.57 2145.74 2163.90 2200.85 2340.62
+ 2372.33 4345.20 4423.40 4461.11 4533.50
+ 4535.81 4553.96 4566.08 4584.39
+
+ Zero-point correction= 0.127320 (Hartree/Particle)
+ Thermal correction to Energy= 0.133563
+ Thermal correction to Enthalpy= 0.134507
+ Thermal correction to Gibbs Free Energy= 0.096391
+ Sum of electronic and zero-point Energies= -271.508723
+ Sum of electronic and thermal Energies= -271.502480
+ Sum of electronic and thermal Enthalpies= -271.501536
+ Sum of electronic and thermal Free Energies= -271.539652
+
+ E (Thermal) CV S
+ KCal/Mol Cal/Mol-Kelvin Cal/Mol-Kelvin
+ Total 83.812 23.276 80.222
+ Electronic 0.000 0.000 0.000
+ Translational 0.889 2.981 39.471
+ Rotational 0.889 2.981 26.976
+ Vibrational 82.034 17.314 13.774
+ Vibration 1 0.593 1.984 6.029
+ Vibration 2 0.642 1.828 2.058
+ Vibration 3 0.723 1.588 1.195
+ Vibration 4 0.779 1.437 0.908
+ Vibration 5 0.833 1.302 0.719
+ Vibration 6 0.884 1.185 0.589
+ Q Log10(Q) Ln(Q)
+ Total Bot 0.460738D-44 -44.336546 -102.088671
+ Total V=0 0.168452D+15 14.226477 32.757674
+ Vib (Bot) 0.756409D-57 -57.121243 -131.526523
+ Vib (Bot) 1 0.763283D+01 0.882686 2.032459
+ Vib (Bot) 2 0.953705D+00 -0.020586 -0.047401
+ Vib (Bot) 3 0.538813D+00 -0.268562 -0.618386
+ Vib (Bot) 4 0.424371D+00 -0.372255 -0.857148
+ Vib (Bot) 5 0.351966D+00 -0.453499 -1.044220
+ Vib (Bot) 6 0.302391D+00 -0.519432 -1.196035
+ Vib (V=0) 0.276554D+02 1.441780 3.319822
+ Vib (V=0) 1 0.814919D+01 0.911114 2.097918
+ Vib (V=0) 2 0.157683D+01 0.197784 0.455414
+ Vib (V=0) 3 0.123506D+01 0.091690 0.211123
+ Vib (V=0) 4 0.115581D+01 0.062888 0.144804
+ Vib (V=0) 5 0.111146D+01 0.045893 0.105672
+ Vib (V=0) 6 0.108433D+01 0.035161 0.080961
+ Electronic 0.100000D+01 0.000000 0.000000
+ Translational 0.347199D+08 7.540579 17.362824
+ Rotational 0.175436D+06 5.244118 12.075028
+ ***** Axes restored to original set *****
+ -------------------------------------------------------------------
+ Center Atomic Forces (Hartrees/Bohr)
+ Number Number X Y Z
+ -------------------------------------------------------------------
+ 1 6 -0.000000552 -0.000018297 -0.000000000
+ 2 6 0.000003299 -0.000008809 0.000013031
+ 3 6 -0.000003063 0.000010196 -0.000009857
+ 4 6 0.000003116 -0.000005291 0.000000000
+ 5 6 -0.000003063 0.000010196 0.000009857
+ 6 6 0.000003299 -0.000008809 -0.000013031
+ 7 6 -0.000011687 0.000013266 -0.000000000
+ 8 1 -0.000001428 0.000003590 -0.000011195
+ 9 1 0.000000447 -0.000006957 -0.000000409
+ 10 1 0.000000415 0.000004611 -0.000000000
+ 11 1 0.000000447 -0.000006957 0.000000409
+ 12 1 -0.000001428 0.000003590 0.000011195
+ 13 1 0.000009105 0.000002441 -0.000000000
+ 14 1 0.000000548 0.000003616 -0.000005387
+ 15 1 0.000000548 0.000003616 0.000005387
+ -------------------------------------------------------------------
+ Cartesian Forces: Max 0.000018297 RMS 0.000006986
+ FormGI is forming the generalized inverse of G from B-inverse, IUseBI=4.
+
+ GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad
+ Berny optimization.
+ Internal Forces: Max 0.000022961 RMS 0.000004747
+ Search for a local minimum.
+ Step number 1 out of a maximum of 2
+ All quantities printed in internal units (Hartrees-Bohrs-Radians)
+ Second derivative matrix not updated -- analytic derivatives used.
+ ITU= 0
+ Eigenvalues --- 0.00005 0.01603 0.01708 0.01743 0.02067
+ Eigenvalues --- 0.02326 0.02425 0.02606 0.02789 0.02911
+ Eigenvalues --- 0.05691 0.05874 0.10815 0.11376 0.11782
+ Eigenvalues --- 0.12073 0.12228 0.12686 0.14027 0.14510
+ Eigenvalues --- 0.18378 0.19356 0.19484 0.19908 0.28343
+ Eigenvalues --- 0.31026 0.32785 0.33490 0.34241 0.35045
+ Eigenvalues --- 0.35372 0.35464 0.35466 0.35711 0.41028
+ Eigenvalues --- 0.41382 0.46375 0.46591 0.50600
+ Angle between quadratic step and forces= 42.61 degrees.
+ Linear search not attempted -- first point.
+ Iteration 1 RMS(Cart)= 0.00005277 RMS(Int)= 0.00000000
+ Iteration 2 RMS(Cart)= 0.00000000 RMS(Int)= 0.00000000
+ ClnCor: largest displacement from symmetrization is 6.96D-10 for atom 15.
+ Variable Old X -DE/DX Delta X Delta X Delta X New X
+ (Linear) (Quad) (Total)
+ R1 2.64335 0.00000 0.00000 0.00000 0.00000 2.64335
+ R2 2.64335 0.00000 0.00000 0.00000 0.00000 2.64335
+ R3 2.85389 0.00002 0.00000 0.00007 0.00007 2.85396
+ R4 2.63230 -0.00000 0.00000 -0.00001 -0.00001 2.63229
+ R5 2.05152 -0.00001 0.00000 -0.00002 -0.00002 2.05149
+ R6 2.63259 -0.00001 0.00000 -0.00001 -0.00001 2.63258
+ R7 2.04956 0.00000 0.00000 0.00001 0.00001 2.04957
+ R8 2.63259 -0.00001 0.00000 -0.00001 -0.00001 2.63258
+ R9 2.04879 -0.00000 0.00000 -0.00001 -0.00001 2.04878
+ R10 2.63230 -0.00000 0.00000 -0.00001 -0.00001 2.63229
+ R11 2.04956 0.00000 0.00000 0.00001 0.00001 2.04957
+ R12 2.05152 -0.00001 0.00000 -0.00002 -0.00002 2.05149
+ R13 2.07052 -0.00001 0.00000 -0.00003 -0.00003 2.07049
+ R14 2.06457 -0.00000 0.00000 -0.00001 -0.00001 2.06457
+ R15 2.06457 -0.00000 0.00000 -0.00001 -0.00001 2.06457
+ A1 2.06264 -0.00000 0.00000 0.00002 0.00002 2.06266
+ A2 2.11018 0.00000 0.00000 -0.00001 -0.00001 2.11017
+ A3 2.11018 0.00000 0.00000 -0.00001 -0.00001 2.11017
+ A4 2.11229 -0.00000 0.00000 -0.00002 -0.00002 2.11227
+ A5 2.08363 -0.00001 0.00000 -0.00007 -0.00007 2.08356
+ A6 2.08727 0.00001 0.00000 0.00008 0.00008 2.08736
+ A7 2.09740 0.00000 0.00000 0.00001 0.00001 2.09741
+ A8 2.09023 0.00001 0.00000 0.00005 0.00005 2.09028
+ A9 2.09555 -0.00001 0.00000 -0.00006 -0.00006 2.09549
+ A10 2.08434 -0.00000 0.00000 0.00001 0.00001 2.08435
+ A11 2.09942 0.00000 0.00000 -0.00000 -0.00000 2.09942
+ A12 2.09942 0.00000 0.00000 -0.00000 -0.00000 2.09942
+ A13 2.09740 0.00000 0.00000 0.00001 0.00001 2.09741
+ A14 2.09555 -0.00001 0.00000 -0.00006 -0.00006 2.09549
+ A15 2.09023 0.00001 0.00000 0.00005 0.00005 2.09028
+ A16 2.11229 -0.00000 0.00000 -0.00002 -0.00002 2.11227
+ A17 2.08363 -0.00001 0.00000 -0.00007 -0.00007 2.08356
+ A18 2.08727 0.00001 0.00000 0.00008 0.00008 2.08736
+ A19 1.93783 0.00001 0.00000 0.00006 0.00006 1.93789
+ A20 1.94457 0.00000 0.00000 0.00001 0.00001 1.94458
+ A21 1.94457 0.00000 0.00000 0.00001 0.00001 1.94458
+ A22 1.87382 -0.00000 0.00000 -0.00001 -0.00001 1.87381
+ A23 1.87382 -0.00000 0.00000 -0.00001 -0.00001 1.87381
+ A24 1.88601 -0.00001 0.00000 -0.00008 -0.00008 1.88593
+ D1 -0.00461 -0.00000 0.00000 0.00001 0.00001 -0.00461
+ D2 3.13455 0.00000 0.00000 0.00004 0.00004 3.13458
+ D3 3.11667 0.00000 0.00000 0.00004 0.00004 3.11671
+ D4 -0.02736 0.00000 0.00000 0.00007 0.00007 -0.02729
+ D5 0.00461 0.00000 0.00000 -0.00001 -0.00001 0.00461
+ D6 -3.13455 -0.00000 0.00000 -0.00004 -0.00004 -3.13458
+ D7 -3.11667 -0.00000 0.00000 -0.00004 -0.00004 -3.11671
+ D8 0.02736 -0.00000 0.00000 -0.00007 -0.00007 0.02729
+ D9 -1.56036 -0.00000 0.00000 -0.00002 -0.00002 -1.56038
+ D10 0.52735 0.00000 0.00000 0.00002 0.00002 0.52737
+ D11 2.63512 -0.00000 0.00000 -0.00006 -0.00006 2.63506
+ D12 1.56036 0.00000 0.00000 0.00002 0.00002 1.56038
+ D13 -2.63512 0.00000 0.00000 0.00006 0.00006 -2.63506
+ D14 -0.52735 -0.00000 0.00000 -0.00002 -0.00002 -0.52737
+ D15 0.00163 0.00000 0.00000 0.00002 0.00002 0.00165
+ D16 3.13905 -0.00000 0.00000 -0.00001 -0.00001 3.13905
+ D17 -3.13752 -0.00000 0.00000 -0.00001 -0.00001 -3.13753
+ D18 -0.00010 -0.00000 0.00000 -0.00004 -0.00004 -0.00014
+ D19 0.00147 -0.00000 0.00000 -0.00005 -0.00005 0.00142
+ D20 3.13841 -0.00000 0.00000 -0.00002 -0.00002 3.13839
+ D21 -3.13595 -0.00000 0.00000 -0.00002 -0.00002 -3.13597
+ D22 0.00100 0.00000 0.00000 0.00001 0.00001 0.00100
+ D23 -0.00147 0.00000 0.00000 0.00005 0.00005 -0.00142
+ D24 3.13595 0.00000 0.00000 0.00002 0.00002 3.13597
+ D25 -3.13841 0.00000 0.00000 0.00002 0.00002 -3.13839
+ D26 -0.00100 -0.00000 0.00000 -0.00001 -0.00001 -0.00100
+ D27 -0.00163 -0.00000 0.00000 -0.00002 -0.00002 -0.00165
+ D28 3.13752 0.00000 0.00000 0.00001 0.00001 3.13753
+ D29 -3.13905 0.00000 0.00000 0.00001 0.00001 -3.13905
+ D30 0.00010 0.00000 0.00000 0.00004 0.00004 0.00014
+ Item Value Threshold Converged?
+ Maximum Force 0.000023 0.000450 YES
+ RMS Force 0.000005 0.000300 YES
+ Maximum Displacement 0.000173 0.001800 YES
+ RMS Displacement 0.000053 0.001200 YES
+ Predicted change in Energy=-4.361700D-09
+ Optimization completed.
+ -- Stationary point found.
+ ----------------------------
+ ! Optimized Parameters !
+ ! (Angstroms and Degrees) !
+ -------------------------- --------------------------
+ ! Name Definition Value Derivative Info. !
+ --------------------------------------------------------------------------------
+ ! R1 R(1,2) 1.3988 -DE/DX = 0.0 !
+ ! R2 R(1,6) 1.3988 -DE/DX = 0.0 !
+ ! R3 R(1,7) 1.5102 -DE/DX = 0.0 !
+ ! R4 R(2,3) 1.393 -DE/DX = 0.0 !
+ ! R5 R(2,8) 1.0856 -DE/DX = 0.0 !
+ ! R6 R(3,4) 1.3931 -DE/DX = 0.0 !
+ ! R7 R(3,9) 1.0846 -DE/DX = 0.0 !
+ ! R8 R(4,5) 1.3931 -DE/DX = 0.0 !
+ ! R9 R(4,10) 1.0842 -DE/DX = 0.0 !
+ ! R10 R(5,6) 1.393 -DE/DX = 0.0 !
+ ! R11 R(5,11) 1.0846 -DE/DX = 0.0 !
+ ! R12 R(6,12) 1.0856 -DE/DX = 0.0 !
+ ! R13 R(7,13) 1.0957 -DE/DX = 0.0 !
+ ! R14 R(7,14) 1.0925 -DE/DX = 0.0 !
+ ! R15 R(7,15) 1.0925 -DE/DX = 0.0 !
+ ! A1 A(2,1,6) 118.1806 -DE/DX = 0.0 !
+ ! A2 A(2,1,7) 120.9045 -DE/DX = 0.0 !
+ ! A3 A(6,1,7) 120.9045 -DE/DX = 0.0 !
+ ! A4 A(1,2,3) 121.025 -DE/DX = 0.0 !
+ ! A5 A(1,2,8) 119.383 -DE/DX = 0.0 !
+ ! A6 A(3,2,8) 119.5918 -DE/DX = 0.0 !
+ ! A7 A(2,3,4) 120.1724 -DE/DX = 0.0 !
+ ! A8 A(2,3,9) 119.7612 -DE/DX = 0.0 !
+ ! A9 A(4,3,9) 120.066 -DE/DX = 0.0 !
+ ! A10 A(3,4,5) 119.4239 -DE/DX = 0.0 !
+ ! A11 A(3,4,10) 120.2878 -DE/DX = 0.0 !
+ ! A12 A(5,4,10) 120.2878 -DE/DX = 0.0 !
+ ! A13 A(4,5,6) 120.1724 -DE/DX = 0.0 !
+ ! A14 A(4,5,11) 120.066 -DE/DX = 0.0 !
+ ! A15 A(6,5,11) 119.7612 -DE/DX = 0.0 !
+ ! A16 A(1,6,5) 121.025 -DE/DX = 0.0 !
+ ! A17 A(1,6,12) 119.383 -DE/DX = 0.0 !
+ ! A18 A(5,6,12) 119.5918 -DE/DX = 0.0 !
+ ! A19 A(1,7,13) 111.0293 -DE/DX = 0.0 !
+ ! A20 A(1,7,14) 111.4156 -DE/DX = 0.0 !
+ ! A21 A(1,7,15) 111.4156 -DE/DX = 0.0 !
+ ! A22 A(13,7,14) 107.362 -DE/DX = 0.0 !
+ ! A23 A(13,7,15) 107.362 -DE/DX = 0.0 !
+ ! A24 A(14,7,15) 108.0605 -DE/DX = 0.0 !
+ ! D1 D(6,1,2,3) -0.2643 -DE/DX = 0.0 !
+ ! D2 D(6,1,2,8) 179.5962 -DE/DX = 0.0 !
+ ! D3 D(7,1,2,3) 178.5718 -DE/DX = 0.0 !
+ ! D4 D(7,1,2,8) -1.5677 -DE/DX = 0.0 !
+ ! D5 D(2,1,6,5) 0.2643 -DE/DX = 0.0 !
+ ! D6 D(2,1,6,12) -179.5962 -DE/DX = 0.0 !
+ ! D7 D(7,1,6,5) -178.5718 -DE/DX = 0.0 !
+ ! D8 D(7,1,6,12) 1.5677 -DE/DX = 0.0 !
+ ! D9 D(2,1,7,13) -89.4021 -DE/DX = 0.0 !
+ ! D10 D(2,1,7,14) 30.2147 -DE/DX = 0.0 !
+ ! D11 D(2,1,7,15) 150.9811 -DE/DX = 0.0 !
+ ! D12 D(6,1,7,13) 89.4021 -DE/DX = 0.0 !
+ ! D13 D(6,1,7,14) -150.9811 -DE/DX = 0.0 !
+ ! D14 D(6,1,7,15) -30.2147 -DE/DX = 0.0 !
+ ! D15 D(1,2,3,4) 0.0934 -DE/DX = 0.0 !
+ ! D16 D(1,2,3,9) 179.8546 -DE/DX = 0.0 !
+ ! D17 D(8,2,3,4) -179.7668 -DE/DX = 0.0 !
+ ! D18 D(8,2,3,9) -0.0056 -DE/DX = 0.0 !
+ ! D19 D(2,3,4,5) 0.084 -DE/DX = 0.0 !
+ ! D20 D(2,3,4,10) 179.8175 -DE/DX = 0.0 !
+ ! D21 D(9,3,4,5) -179.6765 -DE/DX = 0.0 !
+ ! D22 D(9,3,4,10) 0.0571 -DE/DX = 0.0 !
+ ! D23 D(3,4,5,6) -0.084 -DE/DX = 0.0 !
+ ! D24 D(3,4,5,11) 179.6765 -DE/DX = 0.0 !
+ ! D25 D(10,4,5,6) -179.8175 -DE/DX = 0.0 !
+ ! D26 D(10,4,5,11) -0.0571 -DE/DX = 0.0 !
+ ! D27 D(4,5,6,1) -0.0934 -DE/DX = 0.0 !
+ ! D28 D(4,5,6,12) 179.7668 -DE/DX = 0.0 !
+ ! D29 D(11,5,6,1) -179.8546 -DE/DX = 0.0 !
+ ! D30 D(11,5,6,12) 0.0056 -DE/DX = 0.0 !
+ --------------------------------------------------------------------------------
+ GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad
+
+
+ ----------------------------------------------------------------------
+
+ Electric dipole moment (input orientation):
+ (Debye = 10**-18 statcoulomb cm , SI units = C m)
+ (au) (Debye) (10**-30 SI)
+ Tot 0.138354D+00 0.351660D+00 0.117301D+01
+ x -0.150259D-01 -0.381919D-01 -0.127394D+00
+ y 0.137535D+00 0.349580D+00 0.116607D+01
+ z 0.000000D+00 0.000000D+00 0.000000D+00
+
+ Dipole polarizability, Alpha (input orientation).
+ (esu units = cm**3 , SI units = C**2 m**2 J**-1)
+ Alpha(0;0):
+ (au) (10**-24 esu) (10**-40 SI)
+ iso 0.723835D+02 0.107261D+02 0.119344D+02
+ aniso 0.524544D+02 0.777294D+01 0.864856D+01
+ xx 0.382404D+02 0.566664D+01 0.630499D+01
+ yx -0.614968D+00 -0.911288D-01 -0.101394D+00
+ yy 0.959713D+02 0.142215D+02 0.158235D+02
+ zx 0.000000D+00 0.000000D+00 0.000000D+00
+ zy 0.000000D+00 0.000000D+00 0.000000D+00
+ zz 0.829389D+02 0.122903D+02 0.136748D+02
+
+ ----------------------------------------------------------------------
+
+ Dipole orientation:
+ 6 0.19433044 0.02123077 1.71312625
+ 6 0.29934645 -2.24872667 0.36273119
+ 6 0.01573481 -2.28505320 -2.25399286
+ 6 -0.37615809 -0.04109559 -3.57369712
+ 6 -0.47803529 2.23454648 -2.25399286
+ 6 -0.19327023 2.26031558 0.36273119
+ 6 0.44207317 0.04829687 4.55611715
+ 1 0.61110518 -4.00712969 1.37245849
+ 1 0.10836489 -4.06678791 -3.26272592
+ 1 -0.59178448 -0.06465296 -5.61097458
+ 1 -0.77231047 3.99425129 -3.26272592
+ 1 -0.26854812 4.04455434 1.37245849
+ 1 -1.40727552 -0.15374604 5.46504046
+ 1 1.62961615 -1.50282002 5.22412913
+ 1 1.26667799 1.81924261 5.22412913
+
+ Electric dipole moment (dipole orientation):
+ (Debye = 10**-18 statcoulomb cm , SI units = C m)
+ (au) (Debye) (10**-30 SI)
+ Tot 0.138354D+00 0.351660D+00 0.117301D+01
+ x 0.000000D+00 0.000000D+00 0.000000D+00
+ y 0.000000D+00 0.000000D+00 0.000000D+00
+ z 0.138354D+00 0.351660D+00 0.117301D+01
+
+ Dipole polarizability, Alpha (dipole orientation).
+ (esu units = cm**3 , SI units = C**2 m**2 J**-1)
+ Alpha(0;0):
+ (au) (10**-24 esu) (10**-40 SI)
+ iso 0.723835D+02 0.107261D+02 0.119344D+02
+ aniso 0.524544D+02 0.777294D+01 0.864856D+01
+ xx 0.393093D+02 0.582504D+01 0.648123D+01
+ yx -0.476657D+01 -0.706333D+00 -0.785902D+00
+ yy 0.824182D+02 0.122131D+02 0.135889D+02
+ zx 0.559898D+01 0.829683D+00 0.923147D+00
+ zy 0.611693D+00 0.906436D-01 0.100855D+00
+ zz 0.954231D+02 0.141402D+02 0.157331D+02
+
+ ----------------------------------------------------------------------
+ 1\1\GINC-NID00118\Freq\RB3LYP\6-311G(2d,d,p)\C7H8\LAITCL\23-Feb-2017\0
+ \\#N Geom=AllCheck Guess=TCheck SCRF=Check B3LYP/CBSB7 Freq\\Toluene E
+ nergy\\0,1\C,0.00438,0.91242,0.\C,0.00722,0.19388,1.20014\C,0.00722,-1
+ .19907,1.20295\C,0.00633,-1.90168,0.\C,0.00722,-1.19907,-1.20295\C,0.0
+ 0722,0.19388,-1.20014\C,-0.02791,2.42229,0.\H,0.01176,0.73188,2.14306\
+ H,0.01184,-1.73554,2.14555\H,0.00931,-2.98585,0.\H,0.01184,-1.73554,-2
+ .14555\H,0.01176,0.73188,-2.14306\H,-1.05878,2.79351,0.\H,0.46609,2.83
+ 186,0.88421\H,0.46609,2.83186,-0.88421\\Version=ES64L-G16RevA.03\State
+ =1-A'\HF=-271.6360424\RMSD=6.442e-10\RMSF=6.986e-06\ZeroPoint=0.127319
+ 9\Thermal=0.1335625\Dipole=-0.0150259,0.1375354,0.\DipoleDeriv=-0.0762
+ 257,-0.0823714,0.,-0.022951,0.3781838,0.,0.,0.,-0.0828467,-0.1274251,0
+ .0049091,-0.0026658,0.0031294,-0.1468063,0.0703736,-0.0029472,0.127370
+ 5,0.0699772,-0.1289644,0.0043743,0.0045821,-0.0013606,0.0121522,-0.053
+ 4623,0.0046731,-0.0717635,0.097743,-0.1419717,0.0026836,0.,0.0023004,0
+ .0703758,0.,0.,0.,-0.1077641,-0.1289644,0.0043743,-0.0045821,-0.001360
+ 6,0.0121522,0.0534623,-0.0046731,0.0717635,0.097743,-0.1274251,0.00490
+ 91,0.0026658,0.0031294,-0.1468063,-0.0703736,0.0029472,-0.1273705,0.06
+ 99772,0.1307621,0.1111471,0.,0.0058313,-0.0168299,0.,0.,0.,0.1265823,0
+ .1224407,-0.0038159,-0.0029225,-0.0017593,0.0105467,-0.0955531,-0.0002
+ 509,-0.0820336,-0.0668788,0.1288369,-0.0017018,-0.0030863,0.0000253,0.
+ 0133642,0.0804414,-0.0009871,0.0873552,-0.0747145,0.1337579,-0.000164,
+ 0.,0.0004857,-0.1228758,0.,0.,0.,0.0686934,0.1288369,-0.0017018,0.0030
+ 863,0.0000253,0.0133642,-0.0804414,0.0009871,-0.0873552,-0.0747145,0.1
+ 224407,-0.0038159,0.0029225,-0.0017593,0.0105467,0.0955531,0.0002509,0
+ .0820336,-0.0668789,-0.1065431,0.0887011,0.,0.0443596,-0.0659147,0.,0.
+ ,0.,0.0823923,0.0352221,-0.063764,-0.0723338,-0.015048,-0.0107264,-0.0
+ 158362,-0.0821337,-0.0891333,-0.0696554,0.0352221,-0.063764,0.0723338,
+ -0.015048,-0.0107264,0.0158362,0.0821337,0.0891333,-0.0696554\Polar=38
+ .2403873,-0.6149678,95.9712617,0.,0.,82.9389171\Quadrupole=-3.6633387,
+ 1.9707613,1.6925774,-0.0745805,0.,0.\PG=CS [SG(C3H2),X(C4H6)]\NImag=0\
+ \0.17403071,-0.00574935,0.63595390,0.,0.,0.65755484,-0.06803314,0.0004
+ 7644,-0.00166782,0.13356537,0.00064686,-0.17235214,0.04597288,-0.00077
+ 520,0.68606246,-0.00048619,0.11429785,-0.26558028,0.00257082,0.0352011
+ 7,0.70034575,0.00697493,0.00044348,0.00006295,-0.06196769,0.00032458,-
+ 0.00008632,0.13448613,-0.00012717,-0.02716051,0.07909353,0.00064980,-0
+ .33346676,-0.03257757,-0.00064745,0.67688957,-0.00077284,0.02922639,0.
+ 03579699,0.00016471,0.03322572,-0.12838971,0.00171083,-0.03131144,0.71
+ 737087,-0.00733998,0.00029533,0.,0.00852304,-0.00021081,0.00014225,-0.
+ 06299943,0.00035047,-0.00009514,0.13166113,-0.00042315,0.00202781,0.,-
+ 0.00004978,-0.02837234,-0.02895900,0.00009521,-0.18026301,-0.12173966,
+ -0.00098782,0.73877045,0.,0.,-0.07255252,-0.00063241,-0.07792073,0.033
+ 99339,-0.00043915,-0.05649931,-0.28021973,0.,0.,0.65590677,0.00697493,
+ 0.00044348,-0.00006295,-0.00723565,0.00000444,0.00005551,0.00872109,-0
+ .00016957,0.00003921,-0.06299943,0.00009521,0.00043915,0.13448613,-0.0
+ 0012717,-0.02716051,-0.07909353,-0.00057002,-0.05230165,0.02858997,-0.
+ 00016957,0.06478254,0.02457560,0.00035047,-0.18026301,0.05649931,-0.00
+ 064745,0.67688957,0.00077284,-0.02922639,0.03579699,0.00028603,0.03021
+ 180,-0.01827561,-0.00003921,-0.02457560,-0.05983268,0.00009514,0.12173
+ 966,-0.28021973,-0.00171083,0.03131144,0.71737087,-0.06803314,0.000476
+ 44,0.00166782,0.00957689,0.00077338,-0.00039478,-0.00723565,-0.0005700
+ 2,-0.00028603,0.00852304,-0.00004978,0.00063241,-0.06196769,0.00064980
+ ,-0.00016471,0.13356537,0.00064686,-0.17235214,-0.04597288,0.00077338,
+ 0.06301183,-0.02291293,0.00000444,-0.05230165,-0.03021180,-0.00021081,
+ -0.02837234,0.07792073,0.00032458,-0.33346676,-0.03322572,-0.00077520,
+ 0.68606246,0.00048619,-0.11429785,-0.26558028,0.00039478,0.02291293,-0
+ .05865156,-0.00005551,-0.02858997,-0.01827561,-0.00014225,0.02895900,0
+ .03399339,0.00008632,0.03257757,-0.12838971,-0.00257082,-0.03520117,0.
+ 70034575,-0.06936782,-0.00119042,0.,0.00421947,-0.00028680,-0.00025324
+ ,0.00661289,-0.00106349,0.00043202,-0.00094770,0.00089606,0.,0.0066128
+ 9,-0.00106349,-0.00043202,0.00421947,-0.00028680,0.00025324,0.52998731
+ ,0.00346731,-0.20757185,0.,0.00034117,-0.02249859,0.00436245,-0.000487
+ 40,0.00256934,0.00137211,-0.00017198,-0.00121809,0.,-0.00048740,0.0025
+ 6934,-0.00137211,0.00034117,-0.02249859,-0.00436245,0.01069220,0.47820
+ 929,0.,0.,-0.08879500,-0.00156866,0.02943199,0.00344067,-0.00110853,0.
+ 00177913,-0.00452304,0.,0.,-0.00058667,0.00110853,-0.00177913,-0.00452
+ 304,0.00156866,-0.02943199,0.00344067,0.,0.,0.57601983,0.00350865,-0.0
+ 0075230,-0.00004917,-0.03598292,-0.00059852,-0.00143512,0.00276631,0.0
+ 0007069,-0.00000689,0.00721291,-0.00001549,-0.00003903,-0.00064910,-0.
+ 00005022,0.00002251,0.00637675,0.00009940,0.00015351,-0.00335016,0.000
+ 51171,0.00085683,0.02498928,-0.00006250,0.00980321,0.01370331,-0.00075
+ 703,-0.12463387,-0.11637996,0.00002064,-0.01096399,-0.02933903,0.00002
+ 273,-0.00550835,0.00152905,0.00000012,-0.00067580,0.00074293,-0.000013
+ 66,-0.00088500,0.00342184,0.00023707,0.00114638,0.00097403,0.00069012,
+ 0.13070239,-0.00012724,-0.01621661,-0.01989031,-0.00113447,-0.11598709
+ ,-0.26327882,0.00003707,0.00216669,0.00314349,-0.00005582,0.00038186,0
+ .00199472,0.00000022,0.00094696,0.00018115,-0.00008648,0.00411773,-0.0
+ 0305222,-0.00054508,-0.00166406,0.00087057,0.00129954,0.12588805,0.279
+ 71686,0.00737267,-0.00018282,0.00013591,0.00297945,0.00004693,-0.00012
+ 077,-0.03632463,0.00050882,-0.00124036,0.00311342,0.00006332,0.0000653
+ 1,0.00699753,0.00005702,-0.00004110,-0.00067725,-0.00006829,-0.0000183
+ 9,0.00014211,0.00013820,0.00005620,-0.00404472,0.00000900,0.00003739,0
+ .02538240,0.00014363,-0.00537592,-0.00141689,0.00014784,-0.01056709,0.
+ 02924212,0.00051336,-0.12626802,0.11768631,-0.00006809,0.01165779,-0.0
+ 1501478,0.00001396,-0.00076972,-0.00320346,-0.00001658,-0.00076744,-0.
+ 00089951,-0.00013671,-0.00013481,0.00135825,-0.00001454,0.00097126,-0.
+ 00041309,-0.00062672,0.13058009,0.00000031,-0.00059611,0.00196173,0.00
+ 001870,-0.00215219,0.00319159,-0.00111880,0.11776927,-0.26624659,-0.00
+ 012937,0.01633341,-0.01856699,-0.00001128,-0.00417668,-0.00307285,-0.0
+ 0001415,-0.00085510,0.00032055,-0.00000163,-0.00017576,-0.00002896,0.0
+ 0001874,0.00040838,0.00081475,0.00121942,-0.12722966,0.28178952,-0.000
+ 73874,-0.00014266,0.,0.00705264,0.00006358,-0.00004904,0.00253469,-0.0
+ 0006437,-0.00011648,-0.03511115,0.00086264,0.,0.00253469,-0.00006437,0
+ .00011648,0.00705264,0.00006358,0.00004904,-0.00093981,0.00019374,0.,0
+ .00030788,-0.00003942,-0.00001018,-0.00395038,-0.00000866,0.00002120,0
+ .02499516,0.00000874,0.00064961,0.,0.00000992,0.00081645,-0.00319282,0
+ .00006101,-0.01166682,0.00299188,0.00077040,-0.33421322,0.,0.00006101,
+ -0.01166682,-0.00299188,0.00000992,0.00081645,0.00319282,-0.00006101,0
+ .00001329,0.,-0.00000485,-0.00070736,0.00016544,-0.00001340,0.00079938
+ ,-0.00033042,-0.00087484,0.35506502,0.,0.,-0.00134781,-0.00001690,-0.0
+ 0212390,-0.00442893,0.00009102,-0.02845288,0.00465303,0.,0.,-0.0591019
+ 8,-0.00009102,0.02845288,0.00465303,0.00001690,0.00212390,-0.00442893,
+ 0.,0.,0.00017815,-0.00001138,-0.00140432,-0.00000524,0.00001017,0.0005
+ 7595,0.00095279,0.,0.,0.05782263,0.00737267,-0.00018282,-0.00013591,-0
+ .00067725,-0.00006829,0.00001839,0.00699753,0.00005702,0.00004110,0.00
+ 311342,0.00006332,-0.00006531,-0.03632463,0.00050882,0.00124036,0.0029
+ 7945,0.00004693,0.00012077,0.00014211,0.00013820,-0.00005620,-0.001155
+ 23,-0.00000177,0.00001330,0.00025352,0.00000754,0.00000841,-0.00395038
+ ,-0.00001340,-0.00001017,0.02538240,0.00014363,-0.00537592,0.00141689,
+ -0.00001658,-0.00076744,0.00089951,0.00001396,-0.00076972,0.00320346,-
+ 0.00006809,0.01165779,0.01501478,0.00051336,-0.12626802,-0.11768631,0.
+ 00014784,-0.01056709,-0.02924212,-0.00013671,-0.00013481,-0.00135825,-
+ 0.00000415,0.00004686,-0.00010756,0.00000754,0.00037442,0.00079895,-0.
+ 00000866,0.00079938,-0.00057595,-0.00062672,0.13058009,-0.00000031,0.0
+ 0059611,0.00196173,0.00001415,0.00085510,0.00032055,0.00001128,0.00417
+ 668,-0.00307285,0.00012937,-0.01633341,-0.01856699,0.00111880,-0.11776
+ 927,-0.26624659,-0.00001870,0.00215219,0.00319159,0.00000163,0.0001757
+ 6,-0.00002896,-0.00000593,-0.00010136,-0.00003592,-0.00000841,-0.00079
+ 895,-0.00106126,-0.00002120,0.00033042,0.00095279,-0.00121942,0.127229
+ 66,0.28178952,0.00350865,-0.00075230,0.00004917,0.00637675,0.00009940,
+ -0.00015351,-0.00064910,-0.00005022,-0.00002251,0.00721291,-0.00001549
+ ,0.00003903,0.00276631,0.00007069,0.00000689,-0.03598292,-0.00059852,0
+ .00143512,-0.00335016,0.00051171,-0.00085683,0.00028366,0.00004203,0.0
+ 0002593,-0.00115523,-0.00000415,0.00000593,0.00030788,-0.00000485,0.00
+ 001138,-0.00404472,-0.00001454,-0.00001874,0.02498928,-0.00006250,0.00
+ 980321,-0.01370331,-0.00001366,-0.00088500,-0.00342184,0.00000012,-0.0
+ 0067580,-0.00074293,0.00002273,-0.00550835,-0.00152905,0.00002064,-0.0
+ 1096399,0.02933903,-0.00075703,-0.12463387,0.11637996,0.00023707,0.001
+ 14638,-0.00097403,0.00004203,0.00053201,-0.00077574,-0.00000177,0.0000
+ 4686,0.00010136,-0.00003942,-0.00070736,0.00140432,0.00000900,0.000971
+ 26,-0.00040838,0.00069012,0.13070239,0.00012724,0.01621661,-0.01989031
+ ,0.00008648,-0.00411773,-0.00305222,-0.00000022,-0.00094696,0.00018115
+ ,0.00005582,-0.00038186,0.00199472,-0.00003707,-0.00216669,0.00314349,
+ 0.00113447,0.11598709,-0.26327882,0.00054508,0.00166406,0.00087057,-0.
+ 00002593,0.00077574,-0.00114599,-0.00001330,0.00010756,-0.00003592,0.0
+ 0001018,-0.00016544,-0.00000524,-0.00003739,0.00041309,0.00081475,-0.0
+ 0129954,-0.12588805,0.27971686,0.00338369,0.00194481,0.,0.00039497,-0.
+ 00033967,0.00068748,0.00009056,0.00048531,0.00003602,-0.00000518,-0.00
+ 027686,0.,0.00009056,0.00048531,-0.00003602,0.00039497,-0.00033967,-0.
+ 00068748,-0.27361325,0.07635126,0.,-0.00028299,0.00005655,0.00002357,0
+ .00001836,0.00004553,-0.00000729,-0.00010140,0.00002505,0.,0.00001836,
+ 0.00004553,0.00000729,-0.00028299,0.00005655,-0.00002357,0.29788461,0.
+ 03059152,-0.01493527,0.,-0.00038030,-0.00034334,-0.00133365,-0.0014628
+ 3,-0.00044220,-0.00022584,0.00018378,-0.00035140,0.,-0.00146283,-0.000
+ 44220,0.00022584,-0.00038030,-0.00034334,0.00133365,0.08019217,-0.0701
+ 0867,0.,0.00068471,0.00005756,0.00034510,0.00001609,-0.00011560,0.0000
+ 5607,0.00018331,-0.00000606,0.,0.00001609,-0.00011560,-0.00005607,0.00
+ 068471,0.00005756,-0.00034510,-0.08636782,0.07989617,0.,0.,0.00002557,
+ 0.00045753,0.00197093,-0.00035211,0.00040599,-0.00115141,-0.00061015,0
+ .,0.,0.00120110,-0.00040599,0.00115141,-0.00061015,-0.00045753,-0.0019
+ 7093,-0.00035211,0.,0.,-0.04490749,-0.00030593,0.00007120,-0.00011881,
+ -0.00005091,0.00001127,-0.00002048,0.,0.,0.00001025,0.00005091,-0.0000
+ 1127,-0.00002048,0.00030593,-0.00007120,-0.00011881,0.,0.,0.04471978,0
+ .00019296,0.00243633,0.00278018,0.00058713,0.00023663,-0.00038183,-0.0
+ 0008501,-0.00029142,0.00000812,0.00002151,-0.00012869,0.00049995,0.000
+ 07739,0.00086159,-0.00010825,0.00062094,0.00008348,0.00011362,-0.10018
+ 368,-0.04576994,-0.09735286,0.00004778,-0.00023632,0.00037640,-0.00002
+ 975,-0.00002742,-0.00000206,0.00000313,0.00001315,0.00002235,-0.000077
+ 50,0.00003100,0.00000813,-0.00002812,0.00003243,-0.00014584,-0.0139951
+ 3,-0.01124915,-0.02609292,0.10527621,-0.01454836,-0.01297675,-0.028103
+ 55,0.00063302,0.00187654,-0.00187041,0.00039662,-0.00016498,-0.0000740
+ 6,-0.00013916,-0.00002188,0.00020643,0.00089382,-0.00009800,-0.0013632
+ 7,-0.00046899,-0.00557908,0.00194490,-0.04401458,-0.08074431,-0.074641
+ 79,-0.00036382,0.00007897,0.00110354,-0.00000131,0.00002743,0.00002050
+ ,-0.00006222,0.00000403,0.00008723,0.00004739,-0.00045862,-0.00002799,
+ -0.00029479,0.00003572,-0.00004878,0.00391405,0.00359620,0.00908516,0.
+ 04710326,0.09024624,0.00183543,-0.00026001,0.00026933,0.00046729,0.002
+ 00242,0.00031551,0.00056078,-0.00064732,0.00012784,0.00006427,0.000177
+ 33,0.00036525,0.00003217,0.00023282,-0.00010299,-0.00055977,-0.0005167
+ 0,0.00040177,-0.09686017,-0.07684933,-0.22071364,-0.00054646,-0.000121
+ 67,0.00038350,-0.00004048,-0.00006576,0.00001017,-0.00015163,-0.000042
+ 91,0.00004774,-0.00000931,-0.00006065,-0.00000804,-0.00007472,0.000168
+ 20,0.00042227,0.00027800,0.00095909,0.00057694,0.10763980,0.08435329,0
+ .23776702,0.00019296,0.00243633,-0.00278018,0.00062094,0.00008348,-0.0
+ 0011362,0.00007739,0.00086159,0.00010825,0.00002151,-0.00012869,-0.000
+ 49995,-0.00008501,-0.00029142,-0.00000812,0.00058713,0.00023663,0.0003
+ 8183,-0.10018368,-0.04576994,0.09735286,-0.00002812,0.00003243,0.00014
+ 584,-0.00007750,0.00003100,-0.00000813,0.00000313,0.00001315,-0.000022
+ 35,-0.00002975,-0.00002742,0.00000206,0.00004778,-0.00023632,-0.000376
+ 40,-0.01399513,-0.01124915,0.02609292,0.00757213,0.00690508,-0.0126352
+ 0,0.10527621,-0.01454836,-0.01297675,0.02810355,-0.00046899,-0.0055790
+ 8,-0.00194490,0.00089382,-0.00009800,0.00136327,-0.00013916,-0.0000218
+ 8,-0.00020643,0.00039662,-0.00016498,0.00007406,0.00063302,0.00187654,
+ 0.00187041,-0.04401458,-0.08074431,0.07464179,-0.00029479,0.00003572,0
+ .00004878,0.00004739,-0.00045862,0.00002799,-0.00006222,0.00000403,-0.
+ 00008723,-0.00000131,0.00002743,-0.00002050,-0.00036382,0.00007897,-0.
+ 00110354,0.00391405,0.00359620,-0.00908516,0.00690508,0.00417848,-0.00
+ 932881,0.04710326,0.09024624,-0.00183543,0.00026001,0.00026933,0.00055
+ 977,0.00051670,0.00040177,-0.00003217,-0.00023282,-0.00010299,-0.00006
+ 427,-0.00017733,0.00036525,-0.00056078,0.00064732,0.00012784,-0.000467
+ 29,-0.00200242,0.00031551,0.09686017,0.07684933,-0.22071364,0.00007472
+ ,-0.00016820,0.00042227,0.00000931,0.00006065,-0.00000804,0.00015163,0
+ .00004291,0.00004774,0.00004048,0.00006576,0.00001017,0.00054646,0.000
+ 12167,0.00038350,-0.00027800,-0.00095909,0.00057694,0.01263520,0.00932
+ 881,-0.01986265,-0.10763980,-0.08435329,0.23776702\\0.00000055,0.00001
+ 830,0.,-0.00000330,0.00000881,-0.00001303,0.00000306,-0.00001020,0.000
+ 00986,-0.00000312,0.00000529,0.,0.00000306,-0.00001020,-0.00000986,-0.
+ 00000330,0.00000881,0.00001303,0.00001169,-0.00001327,0.,0.00000143,-0
+ .00000359,0.00001119,-0.00000045,0.00000696,0.00000041,-0.00000041,-0.
+ 00000461,0.,-0.00000045,0.00000696,-0.00000041,0.00000143,-0.00000359,
+ -0.00001119,-0.00000910,-0.00000244,0.,-0.00000055,-0.00000362,0.00000
+ 539,-0.00000055,-0.00000362,-0.00000539\\\@
+
+
+ TRUST EVERYONE, BUT CUT THE CARDS.
+ Job cpu time: 0 days 0 hours 9 minutes 33.4 seconds.
+ Elapsed time: 0 days 0 hours 1 minutes 11.9 seconds.
+ File lengths (MBytes): RWF= 41 Int= 0 D2E= 0 Chk= 4 Scr= 1
+ Normal termination of Gaussian 16 at Thu Feb 23 14:02:45 2017.
+ Link1: Proceeding to internal job step number 3.
+ -----------------------------------------------------------
+ #N Geom=AllCheck Guess=TCheck SCRF=Check CCSD(T)/6-31+G(d')
+ -----------------------------------------------------------
+ 1/29=7,38=1,40=1,172=1/1;
+ 2/12=2,40=1/2;
+ 3/5=11,6=6,7=11,11=9,14=-4,25=1,30=1,70=2,116=-2/1,2,3;
+ 4/5=101/1;
+ 5/5=2,38=6/2;
+ 8/6=4,9=120000,10=1/1,4;
+ 9/5=7,14=2/13;
+ 6/7=2,8=2,9=2,10=2/1;
+ 99/5=1,9=1/99;
+ Structure from the checkpoint file: "TolueneEnergy.chk"
+ --------------
+ Toluene Energy
+ --------------
+ Charge = 0 Multiplicity = 1
+ Redundant internal coordinates found in file. (old form).
+ C,0,0.00438,0.91242,0.
+ C,0,0.00722,0.19388,1.20014
+ C,0,0.00722,-1.19907,1.20295
+ C,0,0.00633,-1.90168,0.
+ C,0,0.00722,-1.19907,-1.20295
+ C,0,0.00722,0.19388,-1.20014
+ C,0,-0.02791,2.42229,0.
+ H,0,0.01176,0.73188,2.14306
+ H,0,0.01184,-1.73554,2.14555
+ H,0,0.00931,-2.98585,0.
+ H,0,0.01184,-1.73554,-2.14555
+ H,0,0.01176,0.73188,-2.14306
+ H,0,-1.05878,2.79351,0.
+ H,0,0.46609,2.83186,0.88421
+ H,0,0.46609,2.83186,-0.88421
+ Recover connectivity data from disk.
+ ----------------------------
+ ! Current Parameters !
+ ! (Angstroms and Degrees) !
+ -------------------------- --------------------------
+ ! Name Definition Value !
+ --------------------------------------------------------------------------------
+ ! R1 R(1,2) 1.3988 !
+ ! R2 R(1,6) 1.3988 !
+ ! R3 R(1,7) 1.5102 !
+ ! R4 R(2,3) 1.393 !
+ ! R5 R(2,8) 1.0856 !
+ ! R6 R(3,4) 1.3931 !
+ ! R7 R(3,9) 1.0846 !
+ ! R8 R(4,5) 1.3931 !
+ ! R9 R(4,10) 1.0842 !
+ ! R10 R(5,6) 1.393 !
+ ! R11 R(5,11) 1.0846 !
+ ! R12 R(6,12) 1.0856 !
+ ! R13 R(7,13) 1.0957 !
+ ! R14 R(7,14) 1.0925 !
+ ! R15 R(7,15) 1.0925 !
+ ! A1 A(2,1,6) 118.1806 !
+ ! A2 A(2,1,7) 120.9045 !
+ ! A3 A(6,1,7) 120.9045 !
+ ! A4 A(1,2,3) 121.025 !
+ ! A5 A(1,2,8) 119.383 !
+ ! A6 A(3,2,8) 119.5918 !
+ ! A7 A(2,3,4) 120.1724 !
+ ! A8 A(2,3,9) 119.7612 !
+ ! A9 A(4,3,9) 120.066 !
+ ! A10 A(3,4,5) 119.4239 !
+ ! A11 A(3,4,10) 120.2878 !
+ ! A12 A(5,4,10) 120.2878 !
+ ! A13 A(4,5,6) 120.1724 !
+ ! A14 A(4,5,11) 120.066 !
+ ! A15 A(6,5,11) 119.7612 !
+ ! A16 A(1,6,5) 121.025 !
+ ! A17 A(1,6,12) 119.383 !
+ ! A18 A(5,6,12) 119.5918 !
+ ! A19 A(1,7,13) 111.0293 !
+ ! A20 A(1,7,14) 111.4156 !
+ ! A21 A(1,7,15) 111.4156 !
+ ! A22 A(13,7,14) 107.362 !
+ ! A23 A(13,7,15) 107.362 !
+ ! A24 A(14,7,15) 108.0605 !
+ ! D1 D(6,1,2,3) -0.2643 !
+ ! D2 D(6,1,2,8) 179.5962 !
+ ! D3 D(7,1,2,3) 178.5718 !
+ ! D4 D(7,1,2,8) -1.5677 !
+ ! D5 D(2,1,6,5) 0.2643 !
+ ! D6 D(2,1,6,12) -179.5962 !
+ ! D7 D(7,1,6,5) -178.5718 !
+ ! D8 D(7,1,6,12) 1.5677 !
+ ! D9 D(2,1,7,13) -89.4021 !
+ ! D10 D(2,1,7,14) 30.2147 !
+ ! D11 D(2,1,7,15) 150.9811 !
+ ! D12 D(6,1,7,13) 89.4021 !
+ ! D13 D(6,1,7,14) -150.9811 !
+ ! D14 D(6,1,7,15) -30.2147 !
+ ! D15 D(1,2,3,4) 0.0934 !
+ ! D16 D(1,2,3,9) 179.8546 !
+ ! D17 D(8,2,3,4) -179.7668 !
+ ! D18 D(8,2,3,9) -0.0056 !
+ ! D19 D(2,3,4,5) 0.084 !
+ ! D20 D(2,3,4,10) 179.8175 !
+ ! D21 D(9,3,4,5) -179.6765 !
+ ! D22 D(9,3,4,10) 0.0571 !
+ ! D23 D(3,4,5,6) -0.084 !
+ ! D24 D(3,4,5,11) 179.6765 !
+ ! D25 D(10,4,5,6) -179.8175 !
+ ! D26 D(10,4,5,11) -0.0571 !
+ ! D27 D(4,5,6,1) -0.0934 !
+ ! D28 D(4,5,6,12) 179.7668 !
+ ! D29 D(11,5,6,1) -179.8546 !
+ ! D30 D(11,5,6,12) 0.0056 !
+ --------------------------------------------------------------------------------
+ Input orientation:
+ ---------------------------------------------------------------------
+ Center Atomic Atomic Coordinates (Angstroms)
+ Number Number Type X Y Z
+ ---------------------------------------------------------------------
+ 1 6 0 0.004380 0.912420 -0.000000
+ 2 6 0 0.007220 0.193880 1.200140
+ 3 6 0 0.007220 -1.199070 1.202950
+ 4 6 0 0.006330 -1.901680 -0.000000
+ 5 6 0 0.007220 -1.199070 -1.202950
+ 6 6 0 0.007220 0.193880 -1.200140
+ 7 6 0 -0.027910 2.422290 0.000000
+ 8 1 0 0.011760 0.731880 2.143060
+ 9 1 0 0.011840 -1.735540 2.145550
+ 10 1 0 0.009310 -2.985850 -0.000000
+ 11 1 0 0.011840 -1.735540 -2.145550
+ 12 1 0 0.011760 0.731880 -2.143060
+ 13 1 0 -1.058780 2.793510 0.000000
+ 14 1 0 0.466090 2.831860 0.884210
+ 15 1 0 0.466090 2.831860 -0.884210
+ ---------------------------------------------------------------------
+ Distance matrix (angstroms):
+ 1 2 3 4 5
+ 1 C 0.000000
+ 2 C 1.398801 0.000000
+ 3 C 2.430121 1.392953 0.000000
+ 4 C 2.814101 2.414893 1.393108 0.000000
+ 5 C 2.430121 2.777616 2.405900 1.393108 0.000000
+ 6 C 1.398801 2.400280 2.777616 2.414893 1.392953
+ 7 C 1.510215 2.531281 3.816094 4.324106 3.816094
+ 8 H 2.150664 1.085616 2.147649 3.395346 3.863207
+ 9 H 3.408098 2.148600 1.084581 2.151980 3.391205
+ 10 H 3.898273 3.398680 2.153991 1.084174 2.153991
+ 11 H 3.408098 3.862166 3.391205 2.151980 1.084581
+ 12 H 2.150664 3.386215 3.863207 3.395346 2.147649
+ 13 H 2.160743 3.055285 4.303968 4.814485 4.303968
+ 14 H 2.163158 2.696166 4.069466 4.837314 4.562367
+ 15 H 2.163158 3.393231 4.562367 4.837314 4.069466
+ 6 7 8 9 10
+ 6 C 0.000000
+ 7 C 2.531281 0.000000
+ 8 H 3.386215 2.729792 0.000000
+ 9 H 3.862166 4.678944 2.467421 0.000000
+ 10 H 3.398680 5.408268 4.291180 2.483277 0.000000
+ 11 H 2.148600 4.678944 4.947761 4.291100 2.483277
+ 12 H 1.085616 2.729792 4.286120 4.947761 4.291180
+ 13 H 3.055285 1.095672 3.160551 5.124637 5.877229
+ 14 H 3.393231 1.092525 2.490188 4.760091 5.902222
+ 15 H 2.696166 1.092525 3.712236 5.499721 5.902222
+ 11 12 13 14 15
+ 11 H 0.000000
+ 12 H 2.467421 0.000000
+ 13 H 5.124637 3.160551 0.000000
+ 14 H 5.499721 3.712236 1.763101 0.000000
+ 15 H 4.760091 2.490188 1.763101 1.768420 0.000000
+ Stoichiometry C7H8
+ Framework group CS[SG(C3H2),X(C4H6)]
+ Deg. of freedom 22
+ Full point group CS NOp 2
+ Largest Abelian subgroup CS NOp 2
+ Largest concise Abelian subgroup CS NOp 2
+ Standard orientation:
+ ---------------------------------------------------------------------
+ Center Atomic Atomic Coordinates (Angstroms)
+ Number Number Type X Y Z
+ ---------------------------------------------------------------------
+ 1 6 0 0.004380 0.912421 0.000000
+ 2 6 0 0.007220 0.193881 1.200140
+ 3 6 0 0.007220 -1.199069 1.202950
+ 4 6 0 0.006330 -1.901679 -0.000000
+ 5 6 0 0.007220 -1.199069 -1.202950
+ 6 6 0 0.007220 0.193881 -1.200140
+ 7 6 0 -0.027910 2.422291 0.000000
+ 8 1 0 0.011760 0.731881 2.143060
+ 9 1 0 0.011840 -1.735539 2.145550
+ 10 1 0 0.009310 -2.985849 -0.000000
+ 11 1 0 0.011840 -1.735539 -2.145550
+ 12 1 0 0.011760 0.731881 -2.143060
+ 13 1 0 -1.058780 2.793511 0.000000
+ 14 1 0 0.466090 2.831861 0.884210
+ 15 1 0 0.466090 2.831861 -0.884210
+ ---------------------------------------------------------------------
+ Rotational constants (GHZ): 5.5548152 2.5165402 1.7507580
+ Standard basis: 6-31+(d') (6D, 7F)
+ There are 90 symmetry adapted cartesian basis functions of A' symmetry.
+ There are 59 symmetry adapted cartesian basis functions of A" symmetry.
+ There are 90 symmetry adapted basis functions of A' symmetry.
+ There are 59 symmetry adapted basis functions of A" symmetry.
+ 149 basis functions, 256 primitive gaussians, 149 cartesian basis functions
+ 25 alpha electrons 25 beta electrons
+ nuclear repulsion energy 269.1308041674 Hartrees.
+ NAtoms= 15 NActive= 15 NUniq= 10 SFac= 2.25D+00 NAtFMM= 60 NAOKFM=F Big=F
+ Integral buffers will be 131072 words long.
+ Raffenetti 1 integral format.
+ Two-electron integral symmetry is turned on.
+ One-electron integrals computed using PRISM.
+ NBasis= 149 RedAO= T EigKep= 4.81D-06 NBF= 90 59
+ NBsUse= 149 1.00D-06 EigRej= -1.00D+00 NBFU= 90 59
+ Initial guess from the checkpoint file: "TolueneEnergy.chk"
+ B after Tr= 0.000000 0.000000 -0.000000
+ Rot= 1.000000 0.000000 -0.000000 -0.000000 Ang= 0.00 deg.
+ Initial guess orbital symmetries:
+ Occupied (A') (A') (A") (A') (A") (A') (A') (A') (A') (A")
+ (A') (A") (A') (A') (A") (A') (A') (A") (A') (A")
+ (A') (A') (A") (A") (A')
+ Virtual (A") (A') (A') (A') (A") (A') (A") (A') (A') (A")
+ (A') (A') (A') (A") (A') (A") (A") (A') (A') (A')
+ (A") (A") (A') (A') (A') (A") (A') (A") (A') (A")
+ (A') (A") (A') (A') (A') (A") (A") (A') (A") (A')
+ (A') (A') (A") (A') (A') (A") (A') (A') (A") (A")
+ (A') (A') (A") (A") (A') (A') (A") (A') (A") (A')
+ (A") (A') (A') (A") (A") (A') (A") (A') (A') (A")
+ (A') (A") (A") (A') (A') (A') (A") (A') (A') (A")
+ (A") (A") (A') (A') (A') (A") (A") (A") (A') (A')
+ (A') (A") (A') (A") (A') (A") (A') (A') (A") (A")
+ (A') (A') (A") (A') (A") (A') (A') (A") (A') (A')
+ (A') (A") (A') (A") (A') (A') (A") (A") (A') (A')
+ (A') (A') (A') (A')
+ Keep R1 ints in memory in symmetry-blocked form, NReq=93773939.
+ Requested convergence on RMS density matrix=1.00D-08 within 128 cycles.
+ Requested convergence on MAX density matrix=1.00D-06.
+ Requested convergence on energy=1.00D-06.
+ No special actions if energy rises.
+ SCF Done: E(RHF) = -269.742777995 A.U. after 14 cycles
+ NFock= 14 Conv=0.34D-08 -V/T= 2.0024
+ ExpMin= 4.38D-02 ExpMax= 3.05D+03 ExpMxC= 4.57D+02 IAcc=3 IRadAn= 5 AccDes= 0.00D+00
+ HarFok: IExCor= 205 AccDes= 0.00D+00 IRadAn= 5 IDoV=-2 UseB2=F ITyADJ=14
+ ICtDFT= 12500011 ScaDFX= 1.000000 1.000000 1.000000 1.000000
+ Range of M.O.s used for correlation: 8 149
+ NBasis= 149 NAE= 25 NBE= 25 NFC= 7 NFV= 0
+ NROrb= 142 NOA= 18 NOB= 18 NVA= 124 NVB= 124
+
+ **** Warning!!: The largest alpha MO coefficient is 0.12606362D+03
+
+ Semi-Direct transformation.
+ ModeAB= 4 MOrb= 18 LenV= 130454150
+ LASXX= 11776889 LTotXX= 11776889 LenRXX= 23810226
+ LTotAB= 12033337 MaxLAS= 17217216 LenRXY= 0
+ NonZer= 35587115 LenScr= 54157824 LnRSAI= 17217216
+ LnScr1= 26599424 LExtra= 0 Total= 121784690
+ MaxDsk= -1 SrtSym= T ITran= 4
+ JobTyp=0 Pass 1: I= 1 to 18.
+ (rs|ai) integrals will be sorted in core.
+ Spin components of T(2) and E(2):
+ alpha-alpha T2 = 0.4719898210D-01 E2= -0.1200792375D+00
+ alpha-beta T2 = 0.2461409420D+00 E2= -0.6655046561D+00
+ beta-beta T2 = 0.4719898210D-01 E2= -0.1200792375D+00
+ ANorm= 0.1157816439D+01
+ E2 = -0.9056631311D+00 EUMP2 = -0.27064844112592D+03
+ Keep R2 and R3 ints in memory in symmetry-blocked form, NReq=93940733.
+ CIDS: In Core Option IDoMem= 1.
+ Iterations= 50 Convergence= 0.100D-06
+ Produce multiple copies of IABC intergrals
+ Iteration Nr. 1
+ **********************
+ DD1Dir will call FoFMem 1 times, MxPair= 342
+ NAB= 171 NAA= 0 NBB= 0.
+ MP4(R+Q)= 0.24283074D-01
+ E3= -0.36197946D-01 EUMP3= -0.27068463907D+03
+ E4(DQ)= 0.45941090D-03 UMP4(DQ)= -0.27068417966D+03
+ E4(SDQ)= -0.76616638D-02 UMP4(SDQ)= -0.27069230074D+03
+ DE(Corr)= -0.91731915 E(Corr)= -270.66009715
+ NORM(A)= 0.11617526D+01
+ Iteration Nr. 2
+ **********************
+ DD1Dir will call FoFMem 1 times, MxPair= 342
+ NAB= 171 NAA= 0 NBB= 0.
+ DE(Corr)= -0.94558677 E(CORR)= -270.68836476 Delta=-2.83D-02
+ NORM(A)= 0.11765998D+01
+ Iteration Nr. 3
+ **********************
+ DD1Dir will call FoFMem 1 times, MxPair= 342
+ NAB= 171 NAA= 0 NBB= 0.
+ DE(Corr)= -0.94840979 E(CORR)= -270.69118778 Delta=-2.82D-03
+ NORM(A)= 0.11790315D+01
+ Iteration Nr. 4
+ **********************
+ DD1Dir will call FoFMem 1 times, MxPair= 342
+ NAB= 171 NAA= 0 NBB= 0.
+ DE(Corr)= -0.95076953 E(CORR)= -270.69354752 Delta=-2.36D-03
+ NORM(A)= 0.11800358D+01
+ Iteration Nr. 5
+ **********************
+ DD1Dir will call FoFMem 1 times, MxPair= 342
+ NAB= 171 NAA= 0 NBB= 0.
+ DE(Corr)= -0.95103543 E(CORR)= -270.69381342 Delta=-2.66D-04
+ NORM(A)= 0.11802849D+01
+ Iteration Nr. 6
+ **********************
+ DD1Dir will call FoFMem 1 times, MxPair= 342
+ NAB= 171 NAA= 0 NBB= 0.
+ DE(Corr)= -0.95107114 E(CORR)= -270.69384914 Delta=-3.57D-05
+ NORM(A)= 0.11802861D+01
+ Iteration Nr. 7
+ **********************
+ DD1Dir will call FoFMem 1 times, MxPair= 342
+ NAB= 171 NAA= 0 NBB= 0.
+ DE(Corr)= -0.95107267 E(CORR)= -270.69385066 Delta=-1.52D-06
+ NORM(A)= 0.11802959D+01
+ Iteration Nr. 8
+ **********************
+ DD1Dir will call FoFMem 1 times, MxPair= 342
+ NAB= 171 NAA= 0 NBB= 0.
+ DE(Corr)= -0.95107014 E(CORR)= -270.69384813 Delta= 2.53D-06
+ NORM(A)= 0.11802973D+01
+ Iteration Nr. 9
+ **********************
+ DD1Dir will call FoFMem 1 times, MxPair= 342
+ NAB= 171 NAA= 0 NBB= 0.
+ DE(Corr)= -0.95107127 E(CORR)= -270.69384927 Delta=-1.14D-06
+ NORM(A)= 0.11802982D+01
+ Iteration Nr. 10
+ **********************
+ DD1Dir will call FoFMem 1 times, MxPair= 342
+ NAB= 171 NAA= 0 NBB= 0.
+ DE(Corr)= -0.95107149 E(CORR)= -270.69384948 Delta=-2.14D-07
+ NORM(A)= 0.11802988D+01
+ Iteration Nr. 11
+ **********************
+ DD1Dir will call FoFMem 1 times, MxPair= 342
+ NAB= 171 NAA= 0 NBB= 0.
+ DE(Corr)= -0.95107179 E(CORR)= -270.69384978 Delta=-3.00D-07
+ NORM(A)= 0.11802991D+01
+ Iteration Nr. 12
+ **********************
+ DD1Dir will call FoFMem 1 times, MxPair= 342
+ NAB= 171 NAA= 0 NBB= 0.
+ DE(Corr)= -0.95107190 E(CORR)= -270.69384990 Delta=-1.13D-07
+ NORM(A)= 0.11802992D+01
+ Iteration Nr. 13
+ **********************
+ DD1Dir will call FoFMem 1 times, MxPair= 342
+ NAB= 171 NAA= 0 NBB= 0.
+ DE(Corr)= -0.95107195 E(CORR)= -270.69384994 Delta=-4.89D-08
+ NORM(A)= 0.11802993D+01
+ Wavefunction amplitudes converged. E(Corr)= -270.69384994
+ Largest amplitude= 5.64D-02
+ Time for triples= 676.98 seconds.
+ T4(CCSD)= -0.43071067D-01
+ T5(CCSD)= 0.11522005D-02
+ CCSD(T)= -0.27073576881D+03
+ Discarding MO integrals.
+
+ **********************************************************************
+
+ Population analysis using the SCF density.
+
+ **********************************************************************
+
+ Orbital symmetries:
+ Occupied (A') (A') (A") (A') (A") (A') (A') (A') (A') (A")
+ (A') (A") (A') (A') (A") (A') (A") (A') (A') (A")
+ (A') (A') (A") (A") (A')
+ Virtual (A') (A') (A") (A') (A') (A") (A") (A') (A') (A")
+ (A') (A') (A") (A') (A") (A') (A') (A') (A") (A')
+ (A") (A") (A') (A') (A") (A') (A") (A') (A") (A')
+ (A") (A') (A') (A") (A') (A') (A") (A') (A') (A')
+ (A") (A') (A') (A") (A") (A") (A') (A') (A') (A')
+ (A') (A") (A") (A') (A') (A") (A') (A") (A") (A')
+ (A') (A') (A') (A") (A') (A") (A') (A') (A") (A")
+ (A") (A') (A") (A') (A') (A') (A") (A') (A') (A")
+ (A") (A') (A") (A') (A') (A') (A") (A') (A') (A")
+ (A") (A') (A") (A') (A') (A') (A") (A") (A') (A')
+ (A') (A") (A") (A') (A') (A") (A') (A') (A") (A")
+ (A') (A") (A') (A") (A") (A') (A') (A") (A') (A')
+ (A') (A") (A') (A')
+ The electronic state is 1-A'.
+ Alpha occ. eigenvalues -- -11.24796 -11.24037 -11.24020 -11.23637 -11.23589
+ Alpha occ. eigenvalues -- -11.23580 -11.22884 -1.15352 -1.04499 -1.01260
+ Alpha occ. eigenvalues -- -0.93354 -0.82539 -0.79848 -0.69376 -0.63300
+ Alpha occ. eigenvalues -- -0.63244 -0.58437 -0.57589 -0.56770 -0.54035
+ Alpha occ. eigenvalues -- -0.48781 -0.48734 -0.48642 -0.33343 -0.32327
+ Alpha virt. eigenvalues -- 0.07347 0.08213 0.08823 0.10030 0.10183
+ Alpha virt. eigenvalues -- 0.10552 0.11069 0.12433 0.13018 0.13352
+ Alpha virt. eigenvalues -- 0.15052 0.15328 0.15906 0.17418 0.19777
+ Alpha virt. eigenvalues -- 0.19859 0.21007 0.22047 0.22649 0.23613
+ Alpha virt. eigenvalues -- 0.23889 0.24492 0.24540 0.26364 0.28892
+ Alpha virt. eigenvalues -- 0.29156 0.30116 0.30276 0.32481 0.32688
+ Alpha virt. eigenvalues -- 0.35714 0.36420 0.37152 0.39754 0.40966
+ Alpha virt. eigenvalues -- 0.42292 0.44139 0.44979 0.47718 0.48749
+ Alpha virt. eigenvalues -- 0.52783 0.53787 0.54716 0.55783 0.76874
+ Alpha virt. eigenvalues -- 0.82004 0.82778 0.86986 0.88157 0.90337
+ Alpha virt. eigenvalues -- 0.93525 0.93643 0.93807 0.95490 0.97124
+ Alpha virt. eigenvalues -- 0.98257 0.98530 0.98666 1.00531 1.01109
+ Alpha virt. eigenvalues -- 1.03185 1.07207 1.13468 1.14653 1.15896
+ Alpha virt. eigenvalues -- 1.17932 1.19303 1.22208 1.22653 1.25513
+ Alpha virt. eigenvalues -- 1.25570 1.27199 1.28794 1.29650 1.34485
+ Alpha virt. eigenvalues -- 1.36164 1.38212 1.38722 1.42406 1.44022
+ Alpha virt. eigenvalues -- 1.46754 1.49534 1.50087 1.52303 1.57612
+ Alpha virt. eigenvalues -- 1.69084 1.69630 1.86177 1.89638 1.90359
+ Alpha virt. eigenvalues -- 1.98796 2.04530 2.09230 2.13642 2.15260
+ Alpha virt. eigenvalues -- 2.17064 2.17267 2.20099 2.24156 2.25316
+ Alpha virt. eigenvalues -- 2.26088 2.26793 2.30436 2.35065 2.39906
+ Alpha virt. eigenvalues -- 2.44310 2.47616 2.60100 2.63869 2.68979
+ Alpha virt. eigenvalues -- 2.70011 2.75041 2.89732 2.90460 2.97541
+ Alpha virt. eigenvalues -- 2.97835 3.59423 3.59787 3.60655 3.63734
+ Alpha virt. eigenvalues -- 3.73334 3.78237 3.84026 4.27415
+ Condensed to atoms (all electrons):
+ 1 2 3 4 5 6
+ 1 C 6.793809 -0.327139 0.255467 -0.701087 0.255467 -0.327139
+ 2 C -0.327139 7.390759 0.008900 0.388507 -0.614720 -0.780338
+ 3 C 0.255467 0.008900 5.796604 0.074706 0.401727 -0.614720
+ 4 C -0.701087 0.388507 0.074706 5.671216 0.074706 0.388507
+ 5 C 0.255467 -0.614720 0.401727 0.074706 5.796604 0.008900
+ 6 C -0.327139 -0.780338 -0.614720 0.388507 0.008900 7.390759
+ 7 C -0.391498 0.076212 -0.064837 0.052624 -0.064837 0.076212
+ 8 H 0.062445 0.177470 0.049433 -0.004089 0.000137 0.009996
+ 9 H -0.008733 0.037871 0.241675 0.062548 -0.009008 -0.004384
+ 10 H 0.024935 -0.015161 0.038785 0.253646 0.038785 -0.015161
+ 11 H -0.008733 -0.004384 -0.009008 0.062548 0.241675 0.037871
+ 12 H 0.062445 0.009996 0.000137 -0.004089 0.049433 0.177470
+ 13 H 0.096982 -0.049627 0.009223 -0.006619 0.009223 -0.049627
+ 14 H -0.184054 0.227561 0.029184 0.004066 -0.008400 -0.137774
+ 15 H -0.184054 -0.137774 -0.008400 0.004066 0.029184 0.227561
+ 7 8 9 10 11 12
+ 1 C -0.391498 0.062445 -0.008733 0.024935 -0.008733 0.062445
+ 2 C 0.076212 0.177470 0.037871 -0.015161 -0.004384 0.009996
+ 3 C -0.064837 0.049433 0.241675 0.038785 -0.009008 0.000137
+ 4 C 0.052624 -0.004089 0.062548 0.253646 0.062548 -0.004089
+ 5 C -0.064837 0.000137 -0.009008 0.038785 0.241675 0.049433
+ 6 C 0.076212 0.009996 -0.004384 -0.015161 0.037871 0.177470
+ 7 C 5.906706 0.026558 0.007307 0.002345 0.007307 0.026558
+ 8 H 0.026558 0.451168 -0.002256 -0.000095 0.000013 -0.000098
+ 9 H 0.007307 -0.002256 0.444383 -0.002172 -0.000093 0.000013
+ 10 H 0.002345 -0.000095 -0.002172 0.443303 -0.002172 -0.000095
+ 11 H 0.007307 0.000013 -0.000093 -0.002172 0.444383 -0.002256
+ 12 H 0.026558 -0.000098 0.000013 -0.000095 -0.002256 0.451168
+ 13 H 0.342449 0.000236 0.000001 0.000000 0.000001 0.000236
+ 14 H 0.428614 0.001014 -0.000003 -0.000000 0.000001 -0.000003
+ 15 H 0.428614 -0.000003 0.000001 -0.000000 -0.000003 0.001014
+ 13 14 15
+ 1 C 0.096982 -0.184054 -0.184054
+ 2 C -0.049627 0.227561 -0.137774
+ 3 C 0.009223 0.029184 -0.008400
+ 4 C -0.006619 0.004066 0.004066
+ 5 C 0.009223 -0.008400 0.029184
+ 6 C -0.049627 -0.137774 0.227561
+ 7 C 0.342449 0.428614 0.428614
+ 8 H 0.000236 0.001014 -0.000003
+ 9 H 0.000001 -0.000003 0.000001
+ 10 H 0.000000 -0.000000 -0.000000
+ 11 H 0.000001 0.000001 -0.000003
+ 12 H 0.000236 -0.000003 0.001014
+ 13 H 0.474796 -0.025942 -0.025942
+ 14 H -0.025942 0.481450 -0.023326
+ 15 H -0.025942 -0.023326 0.481450
+ Mulliken charges:
+ 1
+ 1 C 0.580888
+ 2 C -0.388135
+ 3 C -0.208877
+ 4 C -0.321257
+ 5 C -0.208877
+ 6 C -0.388135
+ 7 C -0.860335
+ 8 H 0.228072
+ 9 H 0.232848
+ 10 H 0.233059
+ 11 H 0.232848
+ 12 H 0.228072
+ 13 H 0.224610
+ 14 H 0.207610
+ 15 H 0.207610
+ Sum of Mulliken charges = 0.00000
+ Mulliken charges with hydrogens summed into heavy atoms:
+ 1
+ 1 C 0.580888
+ 2 C -0.160063
+ 3 C 0.023970
+ 4 C -0.088198
+ 5 C 0.023970
+ 6 C -0.160063
+ 7 C -0.220505
+ Electronic spatial extent (au): = 720.2897
+ Charge= 0.0000 electrons
+ Dipole moment (field-independent basis, Debye):
+ X= -0.0308 Y= 0.3696 Z= -0.0000 Tot= 0.3709
+ Quadrupole moment (field-independent basis, Debye-Ang):
+ XX= -47.6260 YY= -38.7149 ZZ= -38.9186
+ XY= -0.0775 XZ= -0.0000 YZ= 0.0000
+ Traceless Quadrupole moment (field-independent basis, Debye-Ang):
+ XX= -5.8728 YY= 3.0383 ZZ= 2.8346
+ XY= -0.0775 XZ= -0.0000 YZ= 0.0000
+ Octapole moment (field-independent basis, Debye-Ang**2):
+ XXX= -0.8188 YYY= -4.8125 ZZZ= 0.0000 XYY= 0.0372
+ XXY= 4.7236 XXZ= 0.0000 XZZ= 0.6774 YZZ= -1.0644
+ YYZ= -0.0000 XYZ= -0.0000
+ Hexadecapole moment (field-independent basis, Debye-Ang**3):
+ XXXX= -66.1681 YYYY= -617.4044 ZZZZ= -288.3657 XXXY= 0.4349
+ XXXZ= 0.0000 YYYX= 2.2906 YYYZ= -0.0000 ZZZX= 0.0000
+ ZZZY= 0.0000 XXYY= -124.1162 XXZZ= -71.2325 YYZZ= -147.2430
+ XXYZ= -0.0000 YYXZ= -0.0000 ZZXY= 2.4274
+ N-N= 2.691308041674D+02 E-N=-1.165296872315D+03 KE= 2.691091328794D+02
+ Symmetry A' KE= 1.871373334698D+02
+ Symmetry A" KE= 8.197179940969D+01
+ 1\1\GINC-NID00118\SP\RCCSD(T)-FC\6-31+(d')\C7H8\LAITCL\23-Feb-2017\0\\
+ #N Geom=AllCheck Guess=TCheck SCRF=Check CCSD(T)/6-31+G(d')\\Toluene E
+ nergy\\0,1\C,0,0.00438,0.91242,0.\C,0,0.00722,0.19388,1.20014\C,0,0.00
+ 722,-1.19907,1.20295\C,0,0.00633,-1.90168,0.\C,0,0.00722,-1.19907,-1.2
+ 0295\C,0,0.00722,0.19388,-1.20014\C,0,-0.02791,2.42229,0.\H,0,0.01176,
+ 0.73188,2.14306\H,0,0.01184,-1.73554,2.14555\H,0,0.00931,-2.98585,0.\H
+ ,0,0.01184,-1.73554,-2.14555\H,0,0.01176,0.73188,-2.14306\H,0,-1.05878
+ ,2.79351,0.\H,0,0.46609,2.83186,0.88421\H,0,0.46609,2.83186,-0.88421\\
+ Version=ES64L-G16RevA.03\State=1-A'\HF=-269.742778\MP2=-270.6484411\MP
+ 3=-270.6846391\MP4D=-270.7084627\MP4DQ=-270.6841797\MP4SDQ=-270.692300
+ 7\CCSD=-270.6938499\CCSD(T)=-270.7357688\RMSD=3.423e-09\PG=CS [SG(C3H2
+ ),X(C4H6)]\\@
+
+
+ TIME IS NATURE'S WAY OF MAKING SURE EVERYTHING
+ DOESN'T HAPPEN AT ONCE.
+ - WOODY ALLEN
+ Job cpu time: 0 days 0 hours 19 minutes 18.0 seconds.
+ Elapsed time: 0 days 0 hours 2 minutes 25.7 seconds.
+ File lengths (MBytes): RWF= 1112 Int= 0 D2E= 0 Chk= 4 Scr= 1
+ Normal termination of Gaussian 16 at Thu Feb 23 14:05:12 2017.
+ Link1: Proceeding to internal job step number 4.
+ -----------------------------------------------------
+ #N Geom=AllCheck Guess=TCheck SCRF=Check MP4SDQ/CBSB4
+ -----------------------------------------------------
+ 1/29=7,38=1,40=1,172=1/1;
+ 2/12=2,40=1/2;
+ 3/5=13,11=9,14=-4,25=1,30=1,70=2,116=-2/1,2,3;
+ 4/5=101/1;
+ 5/5=2,38=6/2;
+ 8/6=3,9=120000,10=1/1,4;
+ 9/5=4/13;
+ 6/7=2,8=2,9=2,10=2/1;
+ 99/5=1,9=1/99;
+ Structure from the checkpoint file: "TolueneEnergy.chk"
+ --------------
+ Toluene Energy
+ --------------
+ Charge = 0 Multiplicity = 1
+ Redundant internal coordinates found in file. (old form).
+ C,0,0.00438,0.91242,0.
+ C,0,0.00722,0.19388,1.20014
+ C,0,0.00722,-1.19907,1.20295
+ C,0,0.00633,-1.90168,0.
+ C,0,0.00722,-1.19907,-1.20295
+ C,0,0.00722,0.19388,-1.20014
+ C,0,-0.02791,2.42229,0.
+ H,0,0.01176,0.73188,2.14306
+ H,0,0.01184,-1.73554,2.14555
+ H,0,0.00931,-2.98585,0.
+ H,0,0.01184,-1.73554,-2.14555
+ H,0,0.01176,0.73188,-2.14306
+ H,0,-1.05878,2.79351,0.
+ H,0,0.46609,2.83186,0.88421
+ H,0,0.46609,2.83186,-0.88421
+ Recover connectivity data from disk.
+ ----------------------------
+ ! Current Parameters !
+ ! (Angstroms and Degrees) !
+ -------------------------- --------------------------
+ ! Name Definition Value !
+ --------------------------------------------------------------------------------
+ ! R1 R(1,2) 1.3988 !
+ ! R2 R(1,6) 1.3988 !
+ ! R3 R(1,7) 1.5102 !
+ ! R4 R(2,3) 1.393 !
+ ! R5 R(2,8) 1.0856 !
+ ! R6 R(3,4) 1.3931 !
+ ! R7 R(3,9) 1.0846 !
+ ! R8 R(4,5) 1.3931 !
+ ! R9 R(4,10) 1.0842 !
+ ! R10 R(5,6) 1.393 !
+ ! R11 R(5,11) 1.0846 !
+ ! R12 R(6,12) 1.0856 !
+ ! R13 R(7,13) 1.0957 !
+ ! R14 R(7,14) 1.0925 !
+ ! R15 R(7,15) 1.0925 !
+ ! A1 A(2,1,6) 118.1806 !
+ ! A2 A(2,1,7) 120.9045 !
+ ! A3 A(6,1,7) 120.9045 !
+ ! A4 A(1,2,3) 121.025 !
+ ! A5 A(1,2,8) 119.383 !
+ ! A6 A(3,2,8) 119.5918 !
+ ! A7 A(2,3,4) 120.1724 !
+ ! A8 A(2,3,9) 119.7612 !
+ ! A9 A(4,3,9) 120.066 !
+ ! A10 A(3,4,5) 119.4239 !
+ ! A11 A(3,4,10) 120.2878 !
+ ! A12 A(5,4,10) 120.2878 !
+ ! A13 A(4,5,6) 120.1724 !
+ ! A14 A(4,5,11) 120.066 !
+ ! A15 A(6,5,11) 119.7612 !
+ ! A16 A(1,6,5) 121.025 !
+ ! A17 A(1,6,12) 119.383 !
+ ! A18 A(5,6,12) 119.5918 !
+ ! A19 A(1,7,13) 111.0293 !
+ ! A20 A(1,7,14) 111.4156 !
+ ! A21 A(1,7,15) 111.4156 !
+ ! A22 A(13,7,14) 107.362 !
+ ! A23 A(13,7,15) 107.362 !
+ ! A24 A(14,7,15) 108.0605 !
+ ! D1 D(6,1,2,3) -0.2643 !
+ ! D2 D(6,1,2,8) 179.5962 !
+ ! D3 D(7,1,2,3) 178.5718 !
+ ! D4 D(7,1,2,8) -1.5677 !
+ ! D5 D(2,1,6,5) 0.2643 !
+ ! D6 D(2,1,6,12) -179.5962 !
+ ! D7 D(7,1,6,5) -178.5718 !
+ ! D8 D(7,1,6,12) 1.5677 !
+ ! D9 D(2,1,7,13) -89.4021 !
+ ! D10 D(2,1,7,14) 30.2147 !
+ ! D11 D(2,1,7,15) 150.9811 !
+ ! D12 D(6,1,7,13) 89.4021 !
+ ! D13 D(6,1,7,14) -150.9811 !
+ ! D14 D(6,1,7,15) -30.2147 !
+ ! D15 D(1,2,3,4) 0.0934 !
+ ! D16 D(1,2,3,9) 179.8546 !
+ ! D17 D(8,2,3,4) -179.7668 !
+ ! D18 D(8,2,3,9) -0.0056 !
+ ! D19 D(2,3,4,5) 0.084 !
+ ! D20 D(2,3,4,10) 179.8175 !
+ ! D21 D(9,3,4,5) -179.6765 !
+ ! D22 D(9,3,4,10) 0.0571 !
+ ! D23 D(3,4,5,6) -0.084 !
+ ! D24 D(3,4,5,11) 179.6765 !
+ ! D25 D(10,4,5,6) -179.8175 !
+ ! D26 D(10,4,5,11) -0.0571 !
+ ! D27 D(4,5,6,1) -0.0934 !
+ ! D28 D(4,5,6,12) 179.7668 !
+ ! D29 D(11,5,6,1) -179.8546 !
+ ! D30 D(11,5,6,12) 0.0056 !
+ --------------------------------------------------------------------------------
+ Input orientation:
+ ---------------------------------------------------------------------
+ Center Atomic Atomic Coordinates (Angstroms)
+ Number Number Type X Y Z
+ ---------------------------------------------------------------------
+ 1 6 0 0.004380 0.912420 -0.000000
+ 2 6 0 0.007220 0.193880 1.200140
+ 3 6 0 0.007220 -1.199070 1.202950
+ 4 6 0 0.006330 -1.901680 -0.000000
+ 5 6 0 0.007220 -1.199070 -1.202950
+ 6 6 0 0.007220 0.193880 -1.200140
+ 7 6 0 -0.027910 2.422290 -0.000000
+ 8 1 0 0.011760 0.731880 2.143060
+ 9 1 0 0.011840 -1.735540 2.145550
+ 10 1 0 0.009310 -2.985850 -0.000000
+ 11 1 0 0.011840 -1.735540 -2.145550
+ 12 1 0 0.011760 0.731880 -2.143060
+ 13 1 0 -1.058780 2.793510 -0.000000
+ 14 1 0 0.466090 2.831860 0.884210
+ 15 1 0 0.466090 2.831860 -0.884210
+ ---------------------------------------------------------------------
+ Distance matrix (angstroms):
+ 1 2 3 4 5
+ 1 C 0.000000
+ 2 C 1.398801 0.000000
+ 3 C 2.430121 1.392953 0.000000
+ 4 C 2.814101 2.414893 1.393108 0.000000
+ 5 C 2.430121 2.777616 2.405900 1.393108 0.000000
+ 6 C 1.398801 2.400280 2.777616 2.414893 1.392953
+ 7 C 1.510215 2.531281 3.816094 4.324106 3.816094
+ 8 H 2.150664 1.085616 2.147649 3.395346 3.863207
+ 9 H 3.408098 2.148600 1.084581 2.151980 3.391205
+ 10 H 3.898273 3.398680 2.153991 1.084174 2.153991
+ 11 H 3.408098 3.862166 3.391205 2.151980 1.084581
+ 12 H 2.150664 3.386215 3.863207 3.395346 2.147649
+ 13 H 2.160743 3.055285 4.303968 4.814485 4.303968
+ 14 H 2.163158 2.696166 4.069466 4.837314 4.562367
+ 15 H 2.163158 3.393231 4.562367 4.837314 4.069466
+ 6 7 8 9 10
+ 6 C 0.000000
+ 7 C 2.531281 0.000000
+ 8 H 3.386215 2.729792 0.000000
+ 9 H 3.862166 4.678944 2.467421 0.000000
+ 10 H 3.398680 5.408268 4.291180 2.483277 0.000000
+ 11 H 2.148600 4.678944 4.947761 4.291100 2.483277
+ 12 H 1.085616 2.729792 4.286120 4.947761 4.291180
+ 13 H 3.055285 1.095672 3.160551 5.124637 5.877229
+ 14 H 3.393231 1.092525 2.490188 4.760091 5.902222
+ 15 H 2.696166 1.092525 3.712236 5.499721 5.902222
+ 11 12 13 14 15
+ 11 H 0.000000
+ 12 H 2.467421 0.000000
+ 13 H 5.124637 3.160551 0.000000
+ 14 H 5.499721 3.712236 1.763101 0.000000
+ 15 H 4.760091 2.490188 1.763101 1.768420 0.000000
+ Stoichiometry C7H8
+ Framework group CS[SG(C3H2),X(C4H6)]
+ Deg. of freedom 22
+ Full point group CS NOp 2
+ Largest Abelian subgroup CS NOp 2
+ Largest concise Abelian subgroup CS NOp 2
+ Standard orientation:
+ ---------------------------------------------------------------------
+ Center Atomic Atomic Coordinates (Angstroms)
+ Number Number Type X Y Z
+ ---------------------------------------------------------------------
+ 1 6 0 0.004380 0.912421 0.000000
+ 2 6 0 0.007220 0.193881 1.200140
+ 3 6 0 0.007220 -1.199069 1.202950
+ 4 6 0 0.006330 -1.901679 -0.000000
+ 5 6 0 0.007220 -1.199069 -1.202950
+ 6 6 0 0.007220 0.193881 -1.200140
+ 7 6 0 -0.027910 2.422291 0.000000
+ 8 1 0 0.011760 0.731881 2.143060
+ 9 1 0 0.011840 -1.735539 2.145550
+ 10 1 0 0.009310 -2.985849 -0.000000
+ 11 1 0 0.011840 -1.735539 -2.145550
+ 12 1 0 0.011760 0.731881 -2.143060
+ 13 1 0 -1.058780 2.793511 0.000000
+ 14 1 0 0.466090 2.831861 0.884210
+ 15 1 0 0.466090 2.831861 -0.884210
+ ---------------------------------------------------------------------
+ Rotational constants (GHZ): 5.5548152 2.5165402 1.7507580
+ Standard basis: CBSB4 (6D, 7F)
+ There are 103 symmetry adapted cartesian basis functions of A' symmetry.
+ There are 70 symmetry adapted cartesian basis functions of A" symmetry.
+ There are 103 symmetry adapted basis functions of A' symmetry.
+ There are 70 symmetry adapted basis functions of A" symmetry.
+ 173 basis functions, 280 primitive gaussians, 173 cartesian basis functions
+ 25 alpha electrons 25 beta electrons
+ nuclear repulsion energy 269.1308041674 Hartrees.
+ NAtoms= 15 NActive= 15 NUniq= 10 SFac= 2.25D+00 NAtFMM= 60 NAOKFM=F Big=F
+ Integral buffers will be 131072 words long.
+ Raffenetti 1 integral format.
+ Two-electron integral symmetry is turned on.
+ One-electron integrals computed using PRISM.
+ NBasis= 173 RedAO= T EigKep= 4.75D-06 NBF= 103 70
+ NBsUse= 173 1.00D-06 EigRej= -1.00D+00 NBFU= 103 70
+ Initial guess from the checkpoint file: "TolueneEnergy.chk"
+ B after Tr= -0.000000 0.000000 0.000000
+ Rot= 1.000000 -0.000000 0.000000 0.000000 Ang= 0.00 deg.
+ Initial guess orbital symmetries:
+ Occupied (A') (A') (A") (A') (A") (A') (A') (A') (A') (A")
+ (A') (A") (A') (A') (A") (A') (A") (A') (A') (A")
+ (A') (A') (A") (A") (A')
+ Virtual (A') (A') (A") (A') (A') (A") (A") (A') (A') (A")
+ (A') (A') (A") (A') (A") (A') (A') (A') (A") (A')
+ (A") (A") (A') (A') (A") (A') (A") (A') (A") (A')
+ (A") (A') (A') (A") (A') (A') (A") (A') (A') (A')
+ (A") (A') (A') (A") (A") (A") (A') (A') (A') (A')
+ (A') (A") (A") (A') (A') (A") (A') (A") (A") (A')
+ (A') (A') (A') (A") (A') (A") (A') (A') (A") (A")
+ (A") (A') (A") (A') (A') (A') (A") (A') (A') (A")
+ (A") (A') (A") (A') (A') (A') (A") (A') (A') (A")
+ (A") (A') (A") (A') (A') (A') (A") (A") (A') (A')
+ (A') (A") (A") (A') (A') (A") (A') (A') (A") (A")
+ (A') (A") (A') (A") (A") (A') (A') (A") (A') (A')
+ (A') (A") (A') (A') (A') (A') (A') (A') (A') (A')
+ (A') (A') (A') (A') (A') (A') (A') (A") (A") (A")
+ (A") (A") (A") (A") (A") (A") (A") (A")
+ Requested convergence on RMS density matrix=1.00D-08 within 128 cycles.
+ Requested convergence on MAX density matrix=1.00D-06.
+ Requested convergence on energy=1.00D-06.
+ No special actions if energy rises.
+ SCF Done: E(RHF) = -269.755032682 A.U. after 12 cycles
+ NFock= 12 Conv=0.39D-08 -V/T= 2.0023
+ ExpMin= 4.38D-02 ExpMax= 3.05D+03 ExpMxC= 4.57D+02 IAcc=3 IRadAn= 5 AccDes= 0.00D+00
+ HarFok: IExCor= 205 AccDes= 0.00D+00 IRadAn= 5 IDoV=-2 UseB2=F ITyADJ=14
+ ICtDFT= 12500011 ScaDFX= 1.000000 1.000000 1.000000 1.000000
+ Range of M.O.s used for correlation: 8 173
+ NBasis= 173 NAE= 25 NBE= 25 NFC= 7 NFV= 0
+ NROrb= 166 NOA= 18 NOB= 18 NVA= 148 NVB= 148
+
+ **** Warning!!: The largest alpha MO coefficient is 0.12611860D+03
+
+ Semi-Direct transformation.
+ ModeAB= 4 MOrb= 18 LenV= 130288058
+ LASXX= 4595564 LTotXX= 4595564 LenRXX= 9339066
+ LTotAB= 4743502 MaxLAS= 26198784 LenRXY= 0
+ NonZer= 13934630 LenScr= 21676032 LnRSAI= 26198784
+ LnScr1= 40081920 LExtra= 0 Total= 97295802
+ MaxDsk= -1 SrtSym= T ITran= 3
+ JobTyp=0 Pass 1: I= 1 to 18.
+ (rs|ai) integrals will be sorted in core.
+ Spin components of T(2) and E(2):
+ alpha-alpha T2 = 0.4812231991D-01 E2= -0.1229408215D+00
+ alpha-beta T2 = 0.2566936700D+00 E2= -0.7096942682D+00
+ beta-beta T2 = 0.4812231991D-01 E2= -0.1229408215D+00
+ ANorm= 0.1163158764D+01
+ E2 = -0.9555759113D+00 EUMP2 = -0.27071060859354D+03
+ CIDS: In Core Option IDoMem= 1.
+ DD1Dir will call FoFJK 6 times, MxPair= 58
+ NAB= 171 NAA= 0 NBB= 0 NumPrc= 8.
+ FoFJK: IHMeth= 1 ICntrl= 200 DoSepK=F KAlg= 0 I1Cent= 0 FoldK=F
+ IRaf= 980000000 NMat= 58 IRICut= 72 DoRegI=T DoRafI=T ISym2E=-1 IDoP0=0 IntGTp=1.
+ FoFCou: FMM=F IPFlag= 0 FMFlag= 100000 FMFlg1= 0
+ NFxFlg= 0 DoJE=F BraDBF=F KetDBF=F FulRan=T
+ wScrn= 0.000000 ICntrl= 200 IOpCl= 0 I1Cent= 0 NGrid= 0
+ NMat0= 58 NMatS0= 0 NMatT0= 29 NMatD0= 58 NMtDS0= 0 NMtDT0= 0
+ Petite list used in FoFCou.
+ Raff kept on since 97.74% of shell-pairs survive, threshold= 0.20 IRatSp=98.
+ MP4(R+Q)= 0.26514917D-01
+ E3= -0.40989965D-01 EUMP3= -0.27075159856D+03
+ E4(DQ)= 0.18569129D-02 UMP4(DQ)= -0.27074974165D+03
+ E4(SDQ)= -0.54189738D-02 UMP4(SDQ)= -0.27075701753D+03
+ Largest amplitude= 4.41D-02
+ Discarding MO integrals.
+
+ **********************************************************************
+
+ Population analysis using the SCF density.
+
+ **********************************************************************
+
+ Orbital symmetries:
+ Occupied (A') (A') (A") (A') (A") (A') (A') (A') (A') (A")
+ (A') (A") (A') (A') (A") (A') (A") (A') (A') (A")
+ (A') (A') (A") (A") (A')
+ Virtual (A') (A') (A") (A') (A') (A") (A") (A') (A') (A")
+ (A') (A') (A") (A') (A") (A') (A') (A') (A") (A')
+ (A") (A") (A') (A') (A") (A') (A") (A') (A") (A')
+ (A") (A') (A') (A") (A') (A') (A") (A') (A') (A')
+ (A") (A') (A') (A") (A") (A") (A') (A') (A') (A')
+ (A') (A") (A") (A') (A") (A') (A") (A') (A") (A')
+ (A') (A') (A') (A") (A') (A") (A') (A") (A') (A')
+ (A") (A") (A') (A") (A') (A') (A") (A') (A') (A")
+ (A") (A') (A") (A') (A') (A") (A') (A') (A") (A")
+ (A') (A") (A') (A") (A') (A") (A') (A') (A') (A')
+ (A") (A") (A') (A') (A") (A') (A") (A") (A') (A')
+ (A") (A') (A') (A") (A') (A") (A") (A") (A') (A')
+ (A") (A') (A') (A") (A") (A') (A') (A") (A') (A')
+ (A') (A") (A") (A') (A') (A") (A') (A') (A") (A")
+ (A') (A") (A') (A') (A') (A") (A') (A')
+ The electronic state is 1-A'.
+ Alpha occ. eigenvalues -- -11.24812 -11.24009 -11.23992 -11.23595 -11.23551
+ Alpha occ. eigenvalues -- -11.23543 -11.22934 -1.15327 -1.04482 -1.01243
+ Alpha occ. eigenvalues -- -0.93353 -0.82509 -0.79819 -0.69283 -0.63254
+ Alpha occ. eigenvalues -- -0.63142 -0.58316 -0.57503 -0.56675 -0.53921
+ Alpha occ. eigenvalues -- -0.48724 -0.48696 -0.48529 -0.33361 -0.32324
+ Alpha virt. eigenvalues -- 0.07259 0.08142 0.08720 0.09962 0.10126
+ Alpha virt. eigenvalues -- 0.10478 0.10966 0.12376 0.12965 0.13312
+ Alpha virt. eigenvalues -- 0.14975 0.15281 0.15885 0.17365 0.19720
+ Alpha virt. eigenvalues -- 0.19827 0.20912 0.22005 0.22647 0.23601
+ Alpha virt. eigenvalues -- 0.23849 0.24460 0.24485 0.26307 0.28858
+ Alpha virt. eigenvalues -- 0.29143 0.30083 0.30230 0.32451 0.32658
+ Alpha virt. eigenvalues -- 0.35616 0.36408 0.37055 0.39699 0.40896
+ Alpha virt. eigenvalues -- 0.42079 0.43948 0.44843 0.47553 0.48655
+ Alpha virt. eigenvalues -- 0.52626 0.53627 0.54611 0.55365 0.76509
+ Alpha virt. eigenvalues -- 0.80278 0.82298 0.86320 0.87714 0.90204
+ Alpha virt. eigenvalues -- 0.92949 0.93054 0.93716 0.94789 0.95630
+ Alpha virt. eigenvalues -- 0.96502 0.96703 0.97624 0.99078 0.99618
+ Alpha virt. eigenvalues -- 1.02452 1.05924 1.08920 1.09903 1.11199
+ Alpha virt. eigenvalues -- 1.11242 1.13219 1.14743 1.16938 1.17504
+ Alpha virt. eigenvalues -- 1.24230 1.25459 1.25521 1.26643 1.28787
+ Alpha virt. eigenvalues -- 1.29252 1.33183 1.33834 1.35193 1.36150
+ Alpha virt. eigenvalues -- 1.38253 1.38859 1.39715 1.51236 1.55835
+ Alpha virt. eigenvalues -- 1.64228 1.64463 1.67589 1.71618 1.77714
+ Alpha virt. eigenvalues -- 1.85391 1.85972 1.86689 1.89403 1.89411
+ Alpha virt. eigenvalues -- 1.98518 1.99466 2.01524 2.02454 2.04041
+ Alpha virt. eigenvalues -- 2.04315 2.05768 2.06699 2.07278 2.07368
+ Alpha virt. eigenvalues -- 2.08786 2.12882 2.18689 2.19526 2.23959
+ Alpha virt. eigenvalues -- 2.25348 2.26192 2.29747 2.33412 2.35244
+ Alpha virt. eigenvalues -- 2.37014 2.38463 2.41772 2.41814 2.44799
+ Alpha virt. eigenvalues -- 2.48474 2.54928 2.56647 2.59959 2.67849
+ Alpha virt. eigenvalues -- 2.70055 2.72979 2.82201 2.84275 2.89852
+ Alpha virt. eigenvalues -- 2.91545 2.92682 2.98955 3.00769 3.04428
+ Alpha virt. eigenvalues -- 3.09593 3.17295 3.27672 3.28708 3.35109
+ Alpha virt. eigenvalues -- 3.61395 3.61692 3.64804 3.83621 3.89690
+ Alpha virt. eigenvalues -- 3.93493 4.00873 4.53326
+ Condensed to atoms (all electrons):
+ 1 2 3 4 5 6
+ 1 C 6.838788 -0.602464 0.601470 -0.956827 0.601470 -0.602464
+ 2 C -0.602464 7.631361 -0.442515 0.765181 -0.992775 -0.424133
+ 3 C 0.601470 -0.442515 6.164507 -0.373063 0.834424 -0.992775
+ 4 C -0.956827 0.765181 -0.373063 5.950137 -0.373063 0.765181
+ 5 C 0.601470 -0.992775 0.834424 -0.373063 6.164507 -0.442515
+ 6 C -0.602464 -0.424133 -0.992775 0.765181 -0.442515 7.631361
+ 7 C -0.151489 0.031207 -0.035469 0.025873 -0.035469 0.031207
+ 8 H 0.120784 0.115349 0.090845 -0.019320 0.012873 0.001371
+ 9 H -0.027824 0.096130 0.180480 0.116298 -0.021650 0.006042
+ 10 H 0.032259 -0.026394 0.087942 0.201158 0.087942 -0.026394
+ 11 H -0.027824 0.006042 -0.021650 0.116298 0.180480 0.096130
+ 12 H 0.120784 0.001371 0.012873 -0.019320 0.090845 0.115349
+ 13 H 0.009494 -0.012943 0.010094 -0.000499 0.010094 -0.012943
+ 14 H -0.151912 0.241763 0.030418 0.002996 -0.010393 -0.162353
+ 15 H -0.151912 -0.162353 -0.010393 0.002996 0.030418 0.241763
+ 7 8 9 10 11 12
+ 1 C -0.151489 0.120784 -0.027824 0.032259 -0.027824 0.120784
+ 2 C 0.031207 0.115349 0.096130 -0.026394 0.006042 0.001371
+ 3 C -0.035469 0.090845 0.180480 0.087942 -0.021650 0.012873
+ 4 C 0.025873 -0.019320 0.116298 0.201158 0.116298 -0.019320
+ 5 C -0.035469 0.012873 -0.021650 0.087942 0.180480 0.090845
+ 6 C 0.031207 0.001371 0.006042 -0.026394 0.096130 0.115349
+ 7 C 5.192775 0.031118 0.007672 0.001914 0.007672 0.031118
+ 8 H 0.031118 0.524760 -0.002985 -0.000105 0.000012 -0.000106
+ 9 H 0.007672 -0.002985 0.518181 -0.002792 -0.000105 0.000012
+ 10 H 0.001914 -0.000105 -0.002792 0.516599 -0.002792 -0.000105
+ 11 H 0.007672 0.000012 -0.000105 -0.002792 0.518181 -0.002985
+ 12 H 0.031118 -0.000106 0.000012 -0.000105 -0.002985 0.524760
+ 13 H 0.370142 0.000179 0.000001 0.000000 0.000001 0.000179
+ 14 H 0.429774 0.000154 -0.000002 -0.000000 0.000001 0.000048
+ 15 H 0.429774 0.000048 0.000001 -0.000000 -0.000002 0.000154
+ 13 14 15
+ 1 C 0.009494 -0.151912 -0.151912
+ 2 C -0.012943 0.241763 -0.162353
+ 3 C 0.010094 0.030418 -0.010393
+ 4 C -0.000499 0.002996 0.002996
+ 5 C 0.010094 -0.010393 0.030418
+ 6 C -0.012943 -0.162353 0.241763
+ 7 C 0.370142 0.429774 0.429774
+ 8 H 0.000179 0.000154 0.000048
+ 9 H 0.000001 -0.000002 0.000001
+ 10 H 0.000000 -0.000000 -0.000000
+ 11 H 0.000001 0.000001 -0.000002
+ 12 H 0.000179 0.000048 0.000154
+ 13 H 0.567796 -0.024084 -0.024084
+ 14 H -0.024084 0.566536 -0.022814
+ 15 H -0.024084 -0.022814 0.566536
+ Mulliken charges:
+ 1
+ 1 C 0.347669
+ 2 C -0.224827
+ 3 C -0.137187
+ 4 C -0.204025
+ 5 C -0.137187
+ 6 C -0.224827
+ 7 C -0.367821
+ 8 H 0.125024
+ 9 H 0.130541
+ 10 H 0.130769
+ 11 H 0.130541
+ 12 H 0.125024
+ 13 H 0.106573
+ 14 H 0.099866
+ 15 H 0.099866
+ Sum of Mulliken charges = -0.00000
+ Mulliken charges with hydrogens summed into heavy atoms:
+ 1
+ 1 C 0.347669
+ 2 C -0.099803
+ 3 C -0.006646
+ 4 C -0.073257
+ 5 C -0.006646
+ 6 C -0.099803
+ 7 C -0.061515
+ Electronic spatial extent (au): = 720.2404
+ Charge= 0.0000 electrons
+ Dipole moment (field-independent basis, Debye):
+ X= -0.0366 Y= 0.4000 Z= -0.0000 Tot= 0.4017
+ Quadrupole moment (field-independent basis, Debye-Ang):
+ XX= -47.5132 YY= -38.6952 ZZ= -38.9849
+ XY= -0.0879 XZ= -0.0000 YZ= -0.0000
+ Traceless Quadrupole moment (field-independent basis, Debye-Ang):
+ XX= -5.7821 YY= 3.0359 ZZ= 2.7462
+ XY= -0.0879 XZ= -0.0000 YZ= -0.0000
+ Octapole moment (field-independent basis, Debye-Ang**2):
+ XXX= -0.8265 YYY= -4.1283 ZZZ= -0.0000 XYY= 0.0213
+ XXY= 4.6649 XXZ= -0.0000 XZZ= 0.6543 YZZ= -1.0101
+ YYZ= -0.0000 XYZ= -0.0000
+ Hexadecapole moment (field-independent basis, Debye-Ang**3):
+ XXXX= -66.0303 YYYY= -616.4014 ZZZZ= -288.8438 XXXY= 0.4006
+ XXXZ= 0.0000 YYYX= 2.2816 YYYZ= -0.0000 ZZZX= 0.0000
+ ZZZY= 0.0000 XXYY= -124.0731 XXZZ= -71.2242 YYZZ= -147.3940
+ XXYZ= -0.0000 YYXZ= -0.0000 ZZXY= 2.3865
+ N-N= 2.691308041674D+02 E-N=-1.165366609200D+03 KE= 2.691328975964D+02
+ Symmetry A' KE= 1.871572562073D+02
+ Symmetry A" KE= 8.197564138912D+01
+ 1\1\GINC-NID00118\SP\RMP4SDQ-FC\CBSB4\C7H8\LAITCL\23-Feb-2017\0\\#N Ge
+ om=AllCheck Guess=TCheck SCRF=Check MP4SDQ/CBSB4\\Toluene Energy\\0,1\
+ C,0,0.00438,0.91242,0.\C,0,0.00722,0.19388,1.20014\C,0,0.00722,-1.1990
+ 7,1.20295\C,0,0.00633,-1.90168,0.\C,0,0.00722,-1.19907,-1.20295\C,0,0.
+ 00722,0.19388,-1.20014\C,0,-0.02791,2.42229,0.\H,0,0.01176,0.73188,2.1
+ 4306\H,0,0.01184,-1.73554,2.14555\H,0,0.00931,-2.98585,0.\H,0,0.01184,
+ -1.73554,-2.14555\H,0,0.01176,0.73188,-2.14306\H,0,-1.05878,2.79351,0.
+ \H,0,0.46609,2.83186,0.88421\H,0,0.46609,2.83186,-0.88421\\Version=ES6
+ 4L-G16RevA.03\State=1-A'\HF=-269.7550327\MP2=-270.7106086\MP3=-270.751
+ 5986\MP4D=-270.7762566\MP4DQ=-270.7497416\MP4SDQ=-270.7570175\RMSD=3.9
+ 16e-09\PG=CS [SG(C3H2),X(C4H6)]\\@
+
+
+ TERENCE, THIS IS STUPID STUFF:
+ YOU EAT YOUR VICTUALS FAST ENOUGH;
+ THERE CAN'T BE MUCH AMISS, 'TIS CLEAR
+ TO SEE THE RATE YOU DRINK YOUR BEER.
+ BUT OH, GOOD LORD, THE VERSE YOU MAKE,
+ IT GIVES A CHAP THE BELLY-ACHE.
+ THE COW, THE OLD COW, SHE IS DEAD;
+ IT SLEEPS WELL, THE HORNED HEAD:
+ WE POOR LADS, 'TIS OUR TURN NOW
+ TO HEAR SUCH TUNES AS KILLED THE COW.
+ PRETTY FRIENDSHIP 'TIS TO RHYME
+ YOUR FRIENDS TO DEATH BEFORE THEIR TIME.
+ MOPING, MELANCHOLY MAD:
+ COME PIPE A TUNE TO DANCE TO, LAD.
+
+ -- A. E. HOUSMAN
+ Job cpu time: 0 days 0 hours 1 minutes 55.2 seconds.
+ Elapsed time: 0 days 0 hours 0 minutes 14.5 seconds.
+ File lengths (MBytes): RWF= 1112 Int= 0 D2E= 0 Chk= 4 Scr= 1
+ Normal termination of Gaussian 16 at Thu Feb 23 14:05:26 2017.
+ Link1: Proceeding to internal job step number 5.
+ ----------------------------------------------------------------------
+ #N Geom=AllCheck Guess=TCheck SCRF=Check MP2/CBSB3 CBSExtrap=(NMin=10,
+ MinPop)
+ ----------------------------------------------------------------------
+ 1/29=7,38=1,40=1,172=1/1;
+ 2/12=2,40=1/2;
+ 3/5=12,11=9,14=-4,25=1,30=1,70=2,116=-2/1,2,3;
+ 4/5=101/1;
+ 5/5=2,38=6/2;
+ 8/10=1/1;
+ 9/16=-3,75=2,81=10,83=4/6,4;
+ 6/7=2,8=2,9=2,10=2/1;
+ 99/5=1,9=1/99;
+ Structure from the checkpoint file: "TolueneEnergy.chk"
+ --------------
+ Toluene Energy
+ --------------
+ Charge = 0 Multiplicity = 1
+ Redundant internal coordinates found in file. (old form).
+ C,0,0.00438,0.91242,0.
+ C,0,0.00722,0.19388,1.20014
+ C,0,0.00722,-1.19907,1.20295
+ C,0,0.00633,-1.90168,0.
+ C,0,0.00722,-1.19907,-1.20295
+ C,0,0.00722,0.19388,-1.20014
+ C,0,-0.02791,2.42229,0.
+ H,0,0.01176,0.73188,2.14306
+ H,0,0.01184,-1.73554,2.14555
+ H,0,0.00931,-2.98585,0.
+ H,0,0.01184,-1.73554,-2.14555
+ H,0,0.01176,0.73188,-2.14306
+ H,0,-1.05878,2.79351,0.
+ H,0,0.46609,2.83186,0.88421
+ H,0,0.46609,2.83186,-0.88421
+ Recover connectivity data from disk.
+ ----------------------------
+ ! Current Parameters !
+ ! (Angstroms and Degrees) !
+ -------------------------- --------------------------
+ ! Name Definition Value !
+ --------------------------------------------------------------------------------
+ ! R1 R(1,2) 1.3988 !
+ ! R2 R(1,6) 1.3988 !
+ ! R3 R(1,7) 1.5102 !
+ ! R4 R(2,3) 1.393 !
+ ! R5 R(2,8) 1.0856 !
+ ! R6 R(3,4) 1.3931 !
+ ! R7 R(3,9) 1.0846 !
+ ! R8 R(4,5) 1.3931 !
+ ! R9 R(4,10) 1.0842 !
+ ! R10 R(5,6) 1.393 !
+ ! R11 R(5,11) 1.0846 !
+ ! R12 R(6,12) 1.0856 !
+ ! R13 R(7,13) 1.0957 !
+ ! R14 R(7,14) 1.0925 !
+ ! R15 R(7,15) 1.0925 !
+ ! A1 A(2,1,6) 118.1806 !
+ ! A2 A(2,1,7) 120.9045 !
+ ! A3 A(6,1,7) 120.9045 !
+ ! A4 A(1,2,3) 121.025 !
+ ! A5 A(1,2,8) 119.383 !
+ ! A6 A(3,2,8) 119.5918 !
+ ! A7 A(2,3,4) 120.1724 !
+ ! A8 A(2,3,9) 119.7612 !
+ ! A9 A(4,3,9) 120.066 !
+ ! A10 A(3,4,5) 119.4239 !
+ ! A11 A(3,4,10) 120.2878 !
+ ! A12 A(5,4,10) 120.2878 !
+ ! A13 A(4,5,6) 120.1724 !
+ ! A14 A(4,5,11) 120.066 !
+ ! A15 A(6,5,11) 119.7612 !
+ ! A16 A(1,6,5) 121.025 !
+ ! A17 A(1,6,12) 119.383 !
+ ! A18 A(5,6,12) 119.5918 !
+ ! A19 A(1,7,13) 111.0293 !
+ ! A20 A(1,7,14) 111.4156 !
+ ! A21 A(1,7,15) 111.4156 !
+ ! A22 A(13,7,14) 107.362 !
+ ! A23 A(13,7,15) 107.362 !
+ ! A24 A(14,7,15) 108.0605 !
+ ! D1 D(6,1,2,3) -0.2643 !
+ ! D2 D(6,1,2,8) 179.5962 !
+ ! D3 D(7,1,2,3) 178.5718 !
+ ! D4 D(7,1,2,8) -1.5677 !
+ ! D5 D(2,1,6,5) 0.2643 !
+ ! D6 D(2,1,6,12) -179.5962 !
+ ! D7 D(7,1,6,5) -178.5718 !
+ ! D8 D(7,1,6,12) 1.5677 !
+ ! D9 D(2,1,7,13) -89.4021 !
+ ! D10 D(2,1,7,14) 30.2147 !
+ ! D11 D(2,1,7,15) 150.9811 !
+ ! D12 D(6,1,7,13) 89.4021 !
+ ! D13 D(6,1,7,14) -150.9811 !
+ ! D14 D(6,1,7,15) -30.2147 !
+ ! D15 D(1,2,3,4) 0.0934 !
+ ! D16 D(1,2,3,9) 179.8546 !
+ ! D17 D(8,2,3,4) -179.7668 !
+ ! D18 D(8,2,3,9) -0.0056 !
+ ! D19 D(2,3,4,5) 0.084 !
+ ! D20 D(2,3,4,10) 179.8175 !
+ ! D21 D(9,3,4,5) -179.6765 !
+ ! D22 D(9,3,4,10) 0.0571 !
+ ! D23 D(3,4,5,6) -0.084 !
+ ! D24 D(3,4,5,11) 179.6765 !
+ ! D25 D(10,4,5,6) -179.8175 !
+ ! D26 D(10,4,5,11) -0.0571 !
+ ! D27 D(4,5,6,1) -0.0934 !
+ ! D28 D(4,5,6,12) 179.7668 !
+ ! D29 D(11,5,6,1) -179.8546 !
+ ! D30 D(11,5,6,12) 0.0056 !
+ --------------------------------------------------------------------------------
+ Input orientation:
+ ---------------------------------------------------------------------
+ Center Atomic Atomic Coordinates (Angstroms)
+ Number Number Type X Y Z
+ ---------------------------------------------------------------------
+ 1 6 0 0.004380 0.912420 -0.000000
+ 2 6 0 0.007220 0.193880 1.200140
+ 3 6 0 0.007220 -1.199070 1.202950
+ 4 6 0 0.006330 -1.901680 -0.000000
+ 5 6 0 0.007220 -1.199070 -1.202950
+ 6 6 0 0.007220 0.193880 -1.200140
+ 7 6 0 -0.027910 2.422290 0.000000
+ 8 1 0 0.011760 0.731880 2.143060
+ 9 1 0 0.011840 -1.735540 2.145550
+ 10 1 0 0.009310 -2.985850 -0.000000
+ 11 1 0 0.011840 -1.735540 -2.145550
+ 12 1 0 0.011760 0.731880 -2.143060
+ 13 1 0 -1.058780 2.793510 0.000000
+ 14 1 0 0.466090 2.831860 0.884210
+ 15 1 0 0.466090 2.831860 -0.884210
+ ---------------------------------------------------------------------
+ Distance matrix (angstroms):
+ 1 2 3 4 5
+ 1 C 0.000000
+ 2 C 1.398801 0.000000
+ 3 C 2.430121 1.392953 0.000000
+ 4 C 2.814101 2.414893 1.393108 0.000000
+ 5 C 2.430121 2.777616 2.405900 1.393108 0.000000
+ 6 C 1.398801 2.400280 2.777616 2.414893 1.392953
+ 7 C 1.510215 2.531281 3.816094 4.324106 3.816094
+ 8 H 2.150664 1.085616 2.147649 3.395346 3.863207
+ 9 H 3.408098 2.148600 1.084581 2.151980 3.391205
+ 10 H 3.898273 3.398680 2.153991 1.084174 2.153991
+ 11 H 3.408098 3.862166 3.391205 2.151980 1.084581
+ 12 H 2.150664 3.386215 3.863207 3.395346 2.147649
+ 13 H 2.160743 3.055285 4.303968 4.814485 4.303968
+ 14 H 2.163158 2.696166 4.069466 4.837314 4.562367
+ 15 H 2.163158 3.393231 4.562367 4.837314 4.069466
+ 6 7 8 9 10
+ 6 C 0.000000
+ 7 C 2.531281 0.000000
+ 8 H 3.386215 2.729792 0.000000
+ 9 H 3.862166 4.678944 2.467421 0.000000
+ 10 H 3.398680 5.408268 4.291180 2.483277 0.000000
+ 11 H 2.148600 4.678944 4.947761 4.291100 2.483277
+ 12 H 1.085616 2.729792 4.286120 4.947761 4.291180
+ 13 H 3.055285 1.095672 3.160551 5.124637 5.877229
+ 14 H 3.393231 1.092525 2.490188 4.760091 5.902222
+ 15 H 2.696166 1.092525 3.712236 5.499721 5.902222
+ 11 12 13 14 15
+ 11 H 0.000000
+ 12 H 2.467421 0.000000
+ 13 H 5.124637 3.160551 0.000000
+ 14 H 5.499721 3.712236 1.763101 0.000000
+ 15 H 4.760091 2.490188 1.763101 1.768420 0.000000
+ Stoichiometry C7H8
+ Framework group CS[SG(C3H2),X(C4H6)]
+ Deg. of freedom 22
+ Full point group CS NOp 2
+ Largest Abelian subgroup CS NOp 2
+ Largest concise Abelian subgroup CS NOp 2
+ Standard orientation:
+ ---------------------------------------------------------------------
+ Center Atomic Atomic Coordinates (Angstroms)
+ Number Number Type X Y Z
+ ---------------------------------------------------------------------
+ 1 6 0 0.004380 0.912421 0.000000
+ 2 6 0 0.007220 0.193881 1.200140
+ 3 6 0 0.007220 -1.199069 1.202950
+ 4 6 0 0.006330 -1.901679 -0.000000
+ 5 6 0 0.007220 -1.199069 -1.202950
+ 6 6 0 0.007220 0.193881 -1.200140
+ 7 6 0 -0.027910 2.422291 0.000000
+ 8 1 0 0.011760 0.731881 2.143060
+ 9 1 0 0.011840 -1.735539 2.145550
+ 10 1 0 0.009310 -2.985849 -0.000000
+ 11 1 0 0.011840 -1.735539 -2.145550
+ 12 1 0 0.011760 0.731881 -2.143060
+ 13 1 0 -1.058780 2.793511 0.000000
+ 14 1 0 0.466090 2.831861 0.884210
+ 15 1 0 0.466090 2.831861 -0.884210
+ ---------------------------------------------------------------------
+ Rotational constants (GHZ): 5.5548152 2.5165402 1.7507580
+ Standard basis: CBSB3 (5D, 7F)
+ There are 205 symmetry adapted cartesian basis functions of A' symmetry.
+ There are 148 symmetry adapted cartesian basis functions of A" symmetry.
+ There are 183 symmetry adapted basis functions of A' symmetry.
+ There are 135 symmetry adapted basis functions of A" symmetry.
+ 318 basis functions, 460 primitive gaussians, 353 cartesian basis functions
+ 25 alpha electrons 25 beta electrons
+ nuclear repulsion energy 269.1308041674 Hartrees.
+ NAtoms= 15 NActive= 15 NUniq= 10 SFac= 2.25D+00 NAtFMM= 60 NAOKFM=F Big=F
+ Integral buffers will be 131072 words long.
+ Raffenetti 1 integral format.
+ Two-electron integral symmetry is turned on.
+ One-electron integrals computed using PRISM.
+ NBasis= 318 RedAO= T EigKep= 5.01D-06 NBF= 183 135
+ NBsUse= 317 1.00D-06 EigRej= 9.34D-07 NBFU= 182 135
+ Initial guess from the checkpoint file: "TolueneEnergy.chk"
+ B after Tr= 0.000000 -0.000000 -0.000000
+ Rot= 1.000000 -0.000000 -0.000000 0.000000 Ang= 0.00 deg.
+ Initial guess orbital symmetries:
+ Occupied (A') (A') (A") (A') (A") (A') (A') (A') (A') (A")
+ (A') (A") (A') (A') (A") (A') (A") (A') (A') (A")
+ (A') (A') (A") (A") (A')
+ Virtual (A') (A') (A') (A') (A') (A') (A') (A') (A') (A')
+ (A') (A') (A') (A') (A') (A') (A') (A') (A') (A')
+ (A') (A') (A') (A') (A') (A') (A') (A') (A') (A')
+ (A') (A') (A') (A') (A') (A') (A') (A') (A') (A')
+ (A') (A') (A') (A') (A') (A') (A') (A') (A') (A')
+ (A') (A') (A') (A') (A') (A') (A') (A') (A') (A')
+ (A') (A') (A') (A') (A') (A') (A') (A') (A') (A')
+ (A') (A') (A') (A') (A') (A') (A') (A') (A') (A')
+ (A') (A') (A') (A') (A') (A') (A') (A') (A') (A')
+ (A') (A') (A') (A') (A') (A') (A') (A') (A') (A')
+ (A') (A') (A') (A') (A') (A') (A') (A') (A') (A')
+ (A') (A') (A') (A') (A') (A') (A') (A') (A') (A')
+ (A') (A') (A') (A') (A') (A') (A') (A') (A') (A')
+ (A') (A') (A') (A') (A') (A') (A') (A') (A') (A')
+ (A') (A') (A') (A') (A') (A') (A') (A') (A') (A')
+ (A') (A') (A') (A') (A') (A') (A') (A') (A') (A')
+ (A') (A') (A') (A') (A') (A') (A") (A") (A") (A")
+ (A") (A") (A") (A") (A") (A") (A") (A") (A") (A")
+ (A") (A") (A") (A") (A") (A") (A") (A") (A") (A")
+ (A") (A") (A") (A") (A") (A") (A") (A") (A") (A")
+ (A") (A") (A") (A") (A") (A") (A") (A") (A") (A")
+ (A") (A") (A") (A") (A") (A") (A") (A") (A") (A")
+ (A") (A") (A") (A") (A") (A") (A") (A") (A") (A")
+ (A") (A") (A") (A") (A") (A") (A") (A") (A") (A")
+ (A") (A") (A") (A") (A") (A") (A") (A") (A") (A")
+ (A") (A") (A") (A") (A") (A") (A") (A") (A") (A")
+ (A") (A") (A") (A") (A") (A") (A") (A") (A") (A")
+ (A") (A") (A") (A") (A") (A") (A") (A") (A") (A")
+ (A") (A") (A") (A") (A") (A") (A") (A") (A") (A")
+ (A") (A")
+ Requested convergence on RMS density matrix=1.00D-08 within 128 cycles.
+ Requested convergence on MAX density matrix=1.00D-06.
+ Requested convergence on energy=1.00D-06.
+ No special actions if energy rises.
+ SCF Done: E(RHF) = -269.822277123 A.U. after 11 cycles
+ NFock= 11 Conv=0.63D-08 -V/T= 2.0012
+ ExpMin= 3.60D-02 ExpMax= 4.56D+03 ExpMxC= 6.82D+02 IAcc=3 IRadAn= 5 AccDes= 0.00D+00
+ HarFok: IExCor= 205 AccDes= 0.00D+00 IRadAn= 5 IDoV=-2 UseB2=F ITyADJ=14
+ ICtDFT= 12500011 ScaDFX= 1.000000 1.000000 1.000000 1.000000
+ Range of M.O.s used for correlation: 8 317
+ NBasis= 318 NAE= 25 NBE= 25 NFC= 7 NFV= 0
+ NROrb= 310 NOA= 18 NOB= 18 NVA= 292 NVB= 292
+
+ **** Warning!!: The largest alpha MO coefficient is 0.17457508D+03
+
+ Disk-based method using OVN memory for 18 occupieds at a time.
+ Permanent disk used for amplitudes and integrals= 68251788 words.
+ Estimated scratch disk usage= 564931872 words.
+ Actual scratch disk usage= 468751136 words.
+ JobTyp=1 Pass 1: I= 1 to 18 NPSUse= 8 ParTrn=T ParDer=T DoDerP=F.
+ Spin components of T(2) and E(2):
+ alpha-alpha T2 = 0.5218455831D-01 E2= -0.1385360305D+00
+ alpha-beta T2 = 0.2804168452D+00 E2= -0.8362122790D+00
+ beta-beta T2 = 0.5218455831D-01 E2= -0.1385360305D+00
+ ANorm= 0.1176769290D+01
+ E2 = -0.1113284340D+01 EUMP2 = -0.27093556146332D+03
+
+ Complete Basis Set (CBS) Extrapolation:
+ M. R. Nyden and G. A. Petersson, JCP 75, 1843 (1981)
+ G. A. Petersson and M. A. Al-Laham, JCP 94, 6081 (1991)
+ G. A. Petersson, T. Tensfeldt, and J. A. Montgomery, JCP 94, 6091 (1991)
+ J. A. Montgomery, J. W. Ochterski, and G. A. Petersson, JCP 101, 5900 (1994)
+
+
+ Minimum Number of PNO for Extrapolation = 10
+ Absolute Overlaps: IRadAn = 5
+ LocTrn: ILocal=3 LocCor=F DoCore=F.
+ GSVD: LWork= -2193 too small for GESVD, short by 9890 words or 9890 for optimal perf.
+ GSVD: LWork= -825 too small for GESVD, short by 3500 words or 3500 for optimal perf.
+ LocMO: Using population method
+ Initial Trace= 0.18000000D+02 Initial TraceA= 0.27224078D+01
+ RMSG= 0.17548304D-08
+ There are a total of 347110 grid points.
+ ElSum from orbitals= 24.9999867344
+ E2(CBS)= -1.219504 CBS-Int= 0.037084 OIii= 8.968778
+
+ **********************************************************************
+
+ Population analysis using the SCF density.
+
+ **********************************************************************
+
+ Orbital symmetries:
+ Occupied (A') (A') (A") (A') (A") (A') (A') (A') (A') (A")
+ (A') (A") (A') (A') (A") (A') (A") (A') (A') (A")
+ (A') (A') (A") (A") (A')
+ Virtual (A') (A') (A") (A') (A") (A') (A') (A") (A") (A')
+ (A') (A') (A") (A') (A") (A') (A') (A") (A') (A")
+ (A') (A') (A") (A') (A") (A') (A') (A") (A") (A')
+ (A') (A') (A") (A") (A') (A") (A') (A") (A') (A')
+ (A') (A') (A") (A') (A') (A") (A') (A') (A") (A')
+ (A") (A") (A') (A') (A") (A') (A") (A') (A") (A')
+ (A") (A') (A") (A') (A') (A') (A') (A') (A") (A')
+ (A") (A') (A") (A') (A") (A') (A') (A') (A") (A")
+ (A') (A') (A") (A") (A') (A") (A') (A') (A") (A")
+ (A') (A') (A') (A") (A') (A") (A") (A') (A') (A")
+ (A') (A') (A") (A") (A') (A') (A") (A') (A') (A")
+ (A") (A') (A') (A") (A') (A') (A") (A') (A') (A")
+ (A') (A") (A") (A") (A') (A") (A') (A") (A') (A")
+ (A') (A') (A') (A') (A") (A") (A') (A') (A') (A")
+ (A") (A') (A") (A") (A') (A") (A') (A') (A") (A')
+ (A') (A") (A") (A') (A') (A") (A') (A') (A') (A")
+ (A") (A') (A") (A") (A') (A') (A") (A') (A") (A')
+ (A") (A') (A") (A') (A') (A") (A') (A') (A') (A")
+ (A") (A') (A') (A") (A') (A") (A') (A") (A') (A")
+ (A') (A') (A") (A') (A") (A') (A') (A") (A") (A')
+ (A") (A') (A') (A") (A") (A') (A') (A") (A') (A")
+ (A") (A') (A") (A') (A') (A") (A') (A") (A') (A")
+ (A') (A") (A') (A') (A') (A") (A') (A') (A") (A')
+ (A") (A') (A') (A") (A") (A') (A") (A') (A') (A")
+ (A') (A") (A') (A") (A") (A') (A') (A') (A") (A")
+ (A") (A') (A') (A') (A") (A") (A") (A') (A") (A')
+ (A') (A') (A") (A') (A") (A") (A') (A') (A") (A')
+ (A") (A') (A') (A') (A") (A') (A") (A') (A') (A")
+ (A') (A") (A") (A') (A") (A') (A') (A') (A") (A')
+ (A") (A')
+ The electronic state is 1-A'.
+ Alpha occ. eigenvalues -- -11.24049 -11.23211 -11.23195 -11.22787 -11.22747
+ Alpha occ. eigenvalues -- -11.22738 -11.22301 -1.15166 -1.04338 -1.01097
+ Alpha occ. eigenvalues -- -0.93219 -0.82416 -0.79728 -0.69240 -0.63252
+ Alpha occ. eigenvalues -- -0.63089 -0.58290 -0.57523 -0.56649 -0.53916
+ Alpha occ. eigenvalues -- -0.48834 -0.48720 -0.48554 -0.33442 -0.32404
+ Alpha virt. eigenvalues -- 0.03927 0.04929 0.04936 0.06556 0.06700
+ Alpha virt. eigenvalues -- 0.07073 0.09542 0.10042 0.11122 0.11763
+ Alpha virt. eigenvalues -- 0.12825 0.13797 0.14277 0.15157 0.17294
+ Alpha virt. eigenvalues -- 0.17600 0.17797 0.18423 0.18601 0.18716
+ Alpha virt. eigenvalues -- 0.18874 0.20231 0.20490 0.20921 0.22518
+ Alpha virt. eigenvalues -- 0.22568 0.23110 0.23681 0.24155 0.24205
+ Alpha virt. eigenvalues -- 0.24433 0.25761 0.28000 0.29269 0.29677
+ Alpha virt. eigenvalues -- 0.30615 0.31959 0.32177 0.34543 0.35198
+ Alpha virt. eigenvalues -- 0.38647 0.39862 0.40530 0.40938 0.41598
+ Alpha virt. eigenvalues -- 0.42543 0.44890 0.49059 0.49115 0.50177
+ Alpha virt. eigenvalues -- 0.51477 0.58908 0.59402 0.61069 0.62662
+ Alpha virt. eigenvalues -- 0.64150 0.68963 0.69114 0.70443 0.70679
+ Alpha virt. eigenvalues -- 0.71098 0.71376 0.72340 0.72470 0.72660
+ Alpha virt. eigenvalues -- 0.75572 0.77727 0.78890 0.79743 0.80615
+ Alpha virt. eigenvalues -- 0.80638 0.82023 0.83414 0.83899 0.84102
+ Alpha virt. eigenvalues -- 0.85103 0.85764 0.86218 0.87071 0.87419
+ Alpha virt. eigenvalues -- 0.87804 0.92709 0.93407 0.95326 0.95521
+ Alpha virt. eigenvalues -- 0.96053 0.97544 1.00102 1.00439 1.02026
+ Alpha virt. eigenvalues -- 1.02316 1.07172 1.09641 1.09791 1.10803
+ Alpha virt. eigenvalues -- 1.15872 1.18037 1.18126 1.20863 1.22236
+ Alpha virt. eigenvalues -- 1.24310 1.26057 1.27629 1.28162 1.30122
+ Alpha virt. eigenvalues -- 1.30565 1.33856 1.33979 1.38171 1.38950
+ Alpha virt. eigenvalues -- 1.40351 1.43026 1.45978 1.47727 1.48777
+ Alpha virt. eigenvalues -- 1.51807 1.52760 1.53591 1.56499 1.57297
+ Alpha virt. eigenvalues -- 1.58312 1.58526 1.61217 1.61547 1.63688
+ Alpha virt. eigenvalues -- 1.65739 1.66657 1.70928 1.71438 1.71635
+ Alpha virt. eigenvalues -- 1.72161 1.74005 1.77447 1.81959 1.84196
+ Alpha virt. eigenvalues -- 1.86759 1.89510 1.95015 1.97753 1.99907
+ Alpha virt. eigenvalues -- 2.00752 2.06753 2.10057 2.24369 2.27083
+ Alpha virt. eigenvalues -- 2.27429 2.28775 2.46036 2.75329 2.76076
+ Alpha virt. eigenvalues -- 2.85903 2.86761 2.88491 2.89849 2.93745
+ Alpha virt. eigenvalues -- 2.93896 2.98725 3.05951 3.06624 3.07557
+ Alpha virt. eigenvalues -- 3.09222 3.10474 3.10797 3.11105 3.12315
+ Alpha virt. eigenvalues -- 3.13984 3.14757 3.16182 3.16810 3.17412
+ Alpha virt. eigenvalues -- 3.18240 3.18423 3.21494 3.22811 3.25253
+ Alpha virt. eigenvalues -- 3.27026 3.29172 3.31103 3.32279 3.33682
+ Alpha virt. eigenvalues -- 3.43211 3.44040 3.44477 3.45212 3.46288
+ Alpha virt. eigenvalues -- 3.47191 3.50665 3.50805 3.52411 3.53613
+ Alpha virt. eigenvalues -- 3.54255 3.55038 3.55985 3.59000 3.61128
+ Alpha virt. eigenvalues -- 3.61159 3.64197 3.69285 3.71478 3.71750
+ Alpha virt. eigenvalues -- 3.72421 3.75516 3.76583 3.77972 3.78446
+ Alpha virt. eigenvalues -- 3.78478 3.79056 3.81089 3.84101 3.88086
+ Alpha virt. eigenvalues -- 3.89620 3.90392 3.93955 3.96054 3.99594
+ Alpha virt. eigenvalues -- 4.01221 4.07379 4.07834 4.08030 4.11774
+ Alpha virt. eigenvalues -- 4.11825 4.16562 4.17388 4.18771 4.19804
+ Alpha virt. eigenvalues -- 4.20676 4.23477 4.23978 4.25997 4.27422
+ Alpha virt. eigenvalues -- 4.30448 4.34740 4.37688 4.41563 4.43760
+ Alpha virt. eigenvalues -- 4.44326 4.45930 4.47520 4.48329 4.48787
+ Alpha virt. eigenvalues -- 4.55875 4.59094 4.62390 4.64873 4.66355
+ Alpha virt. eigenvalues -- 4.69229 4.71464 4.74468 4.74506 4.77523
+ Alpha virt. eigenvalues -- 4.79564 4.81821 4.84460 4.87473 4.88031
+ Alpha virt. eigenvalues -- 4.89172 4.92017 4.92395 4.93322 4.94847
+ Alpha virt. eigenvalues -- 5.05011 5.07363 5.12001 5.12852 5.16952
+ Alpha virt. eigenvalues -- 5.21384 5.26860 5.38128 5.47809 5.52397
+ Alpha virt. eigenvalues -- 5.53158 5.56190 5.62926 5.71704 5.85686
+ Alpha virt. eigenvalues -- 5.87530 6.10948 6.11397 6.13057 6.19450
+ Alpha virt. eigenvalues -- 6.24946 6.26074 6.29450 6.65489 7.00057
+ Alpha virt. eigenvalues -- 24.97203 25.56955 25.58454 25.58983 25.81793
+ Alpha virt. eigenvalues -- 25.84329 26.29763
+ Condensed to atoms (all electrons):
+ 1 2 3 4 5 6
+ 1 C 5.876770 0.262611 -0.224933 -0.040474 -0.224933 0.262611
+ 2 C 0.262611 6.503210 0.462258 -0.196472 0.279605 -1.179972
+ 3 C -0.224933 0.462258 5.040235 0.488012 -0.082207 0.279605
+ 4 C -0.040474 -0.196472 0.488012 5.198198 0.488012 -0.196472
+ 5 C -0.224933 0.279605 -0.082207 0.488012 5.040235 0.462258
+ 6 C 0.262611 -1.179972 0.279605 -0.196472 0.462258 6.503210
+ 7 C -0.497631 -0.134851 -0.016657 -0.043255 -0.016657 -0.134851
+ 8 H -0.008651 0.358511 -0.011031 0.022885 -0.017694 0.033207
+ 9 H 0.014966 -0.019439 0.390762 -0.022392 0.025396 -0.022608
+ 10 H 0.006579 0.007907 -0.035477 0.421705 -0.035477 0.007907
+ 11 H 0.014966 -0.022608 0.025396 -0.022392 0.390762 -0.019439
+ 12 H -0.008651 0.033207 -0.017694 0.022885 -0.011031 0.358511
+ 13 H -0.050127 0.001541 0.004061 0.005216 0.004061 0.001541
+ 14 H -0.063277 0.067670 0.010066 0.001801 -0.010664 -0.057361
+ 15 H -0.063277 -0.057361 -0.010664 0.001801 0.010066 0.067670
+ 7 8 9 10 11 12
+ 1 C -0.497631 -0.008651 0.014966 0.006579 0.014966 -0.008651
+ 2 C -0.134851 0.358511 -0.019439 0.007907 -0.022608 0.033207
+ 3 C -0.016657 -0.011031 0.390762 -0.035477 0.025396 -0.017694
+ 4 C -0.043255 0.022885 -0.022392 0.421705 -0.022392 0.022885
+ 5 C -0.016657 -0.017694 0.025396 -0.035477 0.390762 -0.011031
+ 6 C -0.134851 0.033207 -0.022608 0.007907 -0.019439 0.358511
+ 7 C 5.768920 -0.002262 0.011559 -0.002875 0.011559 -0.002262
+ 8 H -0.002262 0.493901 -0.008700 0.001857 -0.001130 0.001189
+ 9 H 0.011559 -0.008700 0.481587 -0.009354 0.002396 -0.001130
+ 10 H -0.002875 0.001857 -0.009354 0.486338 -0.009354 0.001857
+ 11 H 0.011559 -0.001130 0.002396 -0.009354 0.481587 -0.008700
+ 12 H -0.002262 0.001189 -0.001130 0.001857 -0.008700 0.493901
+ 13 H 0.418509 0.000177 -0.000141 0.000083 -0.000141 0.000177
+ 14 H 0.431999 0.000434 -0.000143 -0.000023 0.000025 -0.000059
+ 15 H 0.431999 -0.000059 0.000025 -0.000023 -0.000143 0.000434
+ 13 14 15
+ 1 C -0.050127 -0.063277 -0.063277
+ 2 C 0.001541 0.067670 -0.057361
+ 3 C 0.004061 0.010066 -0.010664
+ 4 C 0.005216 0.001801 0.001801
+ 5 C 0.004061 -0.010664 0.010066
+ 6 C 0.001541 -0.057361 0.067670
+ 7 C 0.418509 0.431999 0.431999
+ 8 H 0.000177 0.000434 -0.000059
+ 9 H -0.000141 -0.000143 0.000025
+ 10 H 0.000083 -0.000023 -0.000023
+ 11 H -0.000141 0.000025 -0.000143
+ 12 H 0.000177 -0.000059 0.000434
+ 13 H 0.653460 -0.046245 -0.046245
+ 14 H -0.046245 0.614937 -0.020332
+ 15 H -0.046245 -0.020332 0.614937
+ Mulliken charges:
+ 1
+ 1 C 0.743453
+ 2 C -0.365815
+ 3 C -0.301732
+ 4 C -0.129057
+ 5 C -0.301732
+ 6 C -0.365815
+ 7 C -0.223242
+ 8 H 0.137367
+ 9 H 0.157217
+ 10 H 0.158350
+ 11 H 0.157217
+ 12 H 0.137367
+ 13 H 0.054074
+ 14 H 0.071173
+ 15 H 0.071173
+ Sum of Mulliken charges = -0.00000
+ Mulliken charges with hydrogens summed into heavy atoms:
+ 1
+ 1 C 0.743453
+ 2 C -0.228448
+ 3 C -0.144514
+ 4 C 0.029293
+ 5 C -0.144514
+ 6 C -0.228448
+ 7 C -0.026821
+ Electronic spatial extent (au): = 719.9084
+ Charge= -0.0000 electrons
+ Dipole moment (field-independent basis, Debye):
+ X= -0.0331 Y= 0.4032 Z= -0.0000 Tot= 0.4045
+ Quadrupole moment (field-independent basis, Debye-Ang):
+ XX= -47.2862 YY= -38.5733 ZZ= -38.8871
+ XY= -0.0667 XZ= -0.0000 YZ= 0.0000
+ Traceless Quadrupole moment (field-independent basis, Debye-Ang):
+ XX= -5.7040 YY= 3.0089 ZZ= 2.6951
+ XY= -0.0667 XZ= -0.0000 YZ= 0.0000
+ Octapole moment (field-independent basis, Debye-Ang**2):
+ XXX= -0.8381 YYY= -4.0299 ZZZ= -0.0000 XYY= 0.0905
+ XXY= 4.6115 XXZ= 0.0000 XZZ= 0.6571 YZZ= -0.9608
+ YYZ= -0.0000 XYZ= -0.0000
+ Hexadecapole moment (field-independent basis, Debye-Ang**3):
+ XXXX= -64.5907 YYYY= -613.0514 ZZZZ= -287.0534 XXXY= 0.3681
+ XXXZ= 0.0000 YYYX= 2.5748 YYYZ= -0.0000 ZZZX= 0.0000
+ ZZZY= -0.0000 XXYY= -122.9434 XXZZ= -70.3821 YYZZ= -146.4507
+ XXYZ= -0.0000 YYXZ= -0.0000 ZZXY= 2.4525
+ N-N= 2.691308041674D+02 E-N=-1.165994961293D+03 KE= 2.695068882871D+02
+ Symmetry A' KE= 1.873768108904D+02
+ Symmetry A" KE= 8.213007739675D+01
+ 1\1\GINC-NID00118\SP\RMP2-FC\CBSB3\C7H8\LAITCL\23-Feb-2017\0\\#N Geom=
+ AllCheck Guess=TCheck SCRF=Check MP2/CBSB3 CBSExtrap=(NMin=10,MinPop)\
+ \Toluene Energy\\0,1\C,0,0.00438,0.91242,0.\C,0,0.00722,0.19388,1.2001
+ 4\C,0,0.00722,-1.19907,1.20295\C,0,0.00633,-1.90168,0.\C,0,0.00722,-1.
+ 19907,-1.20295\C,0,0.00722,0.19388,-1.20014\C,0,-0.02791,2.42229,0.\H,
+ 0,0.01176,0.73188,2.14306\H,0,0.01184,-1.73554,2.14555\H,0,0.00931,-2.
+ 98585,0.\H,0,0.01184,-1.73554,-2.14555\H,0,0.01176,0.73188,-2.14306\H,
+ 0,-1.05878,2.79351,0.\H,0,0.46609,2.83186,0.88421\H,0,0.46609,2.83186,
+ -0.88421\\Version=ES64L-G16RevA.03\State=1-A'\HF=-269.8222771\MP2=-270
+ .9355615\E2(CBS)=-1.2195036\CBS-Int=-1.1824196\OIii=8.9687781\RMSD=6.3
+ 38e-09\PG=CS [SG(C3H2),X(C4H6)]\\@
+
+
+ I DON'T PRETEND TO UNDERSTAND THE UNIVERSE --
+ IT'S A GREAT DEAL BIGGER THAN I AM.
+ -- ATTR. TO WILLIAM ALLINGHAM (1828-89)
+ Diagonal vibrational polarizability:
+ 0.0000000 0.0000000 0.0000000
+
+ Complete Basis Set (CBS) Extrapolation:
+ M. R. Nyden and G. A. Petersson, JCP 75, 1843 (1981)
+ G. A. Petersson and M. A. Al-Laham, JCP 94, 6081 (1991)
+ G. A. Petersson, T. Tensfeldt, and J. A. Montgomery, JCP 94, 6091 (1991)
+ J. A. Montgomery, J. W. Ochterski, and G. A. Petersson, JCP 101, 5900 (1994)
+
+ Temperature= 298.150000 Pressure= 1.000000
+ E(ZPE)= 0.126047 E(Thermal)= 0.132338
+ E(SCF)= -269.822277 DE(MP2)= -1.113284
+ DE(CBS)= -0.106219 DE(MP34)= -0.046409
+ DE(CCSD)= -0.043468 DE(Int)= 0.037084
+ DE(Empirical)= -0.051929
+ CBS-QB3 (0 K)= -271.020456 CBS-QB3 Energy= -271.014165
+ CBS-QB3 Enthalpy= -271.013221 CBS-QB3 Free Energy= -271.051420
+ 1\1\GINC-NID00118\Mixed\CBS-QB3\CBS-QB3\C7H8\LAITCL\23-Feb-2017\0\\# c
+ bs-qb3\\Toluene Energy\\0,1\C,0,0.00438,0.91242,0.\C,0,0.00722,0.19388
+ ,1.20014\C,0,0.00722,-1.19907,1.20295\C,0,0.00633,-1.90168,0.\C,0,0.00
+ 722,-1.19907,-1.20295\C,0,0.00722,0.19388,-1.20014\C,0,-0.02791,2.4222
+ 9,0.\H,0,0.01176,0.73188,2.14306\H,0,0.01184,-1.73554,2.14555\H,0,0.00
+ 931,-2.98585,0.\H,0,0.01184,-1.73554,-2.14555\H,0,0.01176,0.73188,-2.1
+ 4306\H,0,-1.05878,2.79351,0.\H,0,0.46609,2.83186,0.88421\H,0,0.46609,2
+ .83186,-0.88421\\Version=ES64L-G16RevA.03\State=1-A'\HF/CbsB3=-269.822
+ 2771\E2(CBS)/CbsB3=-1.2195036\CBS-Int/CbsB3=0.037084\OIii/CbsB3=8.9687
+ 781\MP2/CbsB4=-270.7106086\MP4(SDQ)/CbsB4=-270.7570175\MP4(SDQ)/6-31+G
+ (d')=-270.6923007\QCISD(T)/6-31+G(d')=-270.7357688\CBSQB3=-271.0204563
+ \FreqCoord=0.0082770004,1.7242239106,0.,0.0136438226,0.366380101,2.267
+ 9359111,0.0136438226,-2.2659139042,2.2732460415,0.0119619664,-3.593654
+ 3766,0.,0.0136438226,-2.2659139042,-2.2732460415,0.0136438226,0.366380
+ 101,-2.2679359111,-0.0527422561,4.5774646943,0.,0.0222231792,1.3830527
+ 56,4.0497964685,0.0223743573,-3.2796952782,4.0545018866,0.0175933502,-
+ 5.642438749,0.,0.0223743573,-3.2796952782,-4.0545018866,0.0222231792,1
+ .383052756,-4.0497964685,-2.0008042262,5.2789688262,0.,0.8807824494,5.
+ 3514398231,1.6709147366,0.8807824494,5.3514398231,-1.6709147366\PG=CS
+ [SG(C3H2),X(C4H6)]\NImag=0\\0.17403071,-0.00574935,0.63595390,0.,0.,0.
+ 65755484,-0.06803314,0.00047644,-0.00166782,0.13356537,0.00064686,-0.1
+ 7235214,0.04597288,-0.00077520,0.68606246,-0.00048619,0.11429785,-0.26
+ 558028,0.00257082,0.03520117,0.70034575,0.00697493,0.00044348,0.000062
+ 95,-0.06196769,0.00032458,-0.00008632,0.13448613,-0.00012717,-0.027160
+ 51,0.07909353,0.00064980,-0.33346676,-0.03257757,-0.00064745,0.6768895
+ 7,-0.00077284,0.02922639,0.03579699,0.00016471,0.03322572,-0.12838971,
+ 0.00171083,-0.03131144,0.71737087,-0.00733998,0.00029533,0.,0.00852304
+ ,-0.00021081,0.00014225,-0.06299943,0.00035047,-0.00009514,0.13166113,
+ -0.00042315,0.00202781,0.,-0.00004978,-0.02837234,-0.02895900,0.000095
+ 21,-0.18026301,-0.12173966,-0.00098782,0.73877045,0.,0.,-0.07255252,-0
+ .00063241,-0.07792073,0.03399339,-0.00043915,-0.05649931,-0.28021973,0
+ .,0.,0.65590677,0.00697493,0.00044348,-0.00006295,-0.00723565,0.000004
+ 44,0.00005551,0.00872109,-0.00016957,0.00003921,-0.06299943,0.00009521
+ ,0.00043915,0.13448613,-0.00012717,-0.02716051,-0.07909353,-0.00057002
+ ,-0.05230165,0.02858997,-0.00016957,0.06478254,0.02457560,0.00035047,-
+ 0.18026301,0.05649931,-0.00064745,0.67688957,0.00077284,-0.02922639,0.
+ 03579699,0.00028603,0.03021180,-0.01827561,-0.00003921,-0.02457560,-0.
+ 05983268,0.00009514,0.12173966,-0.28021973,-0.00171083,0.03131144,0.71
+ 737087,-0.06803314,0.00047644,0.00166782,0.00957689,0.00077338,-0.0003
+ 9478,-0.00723565,-0.00057002,-0.00028603,0.00852304,-0.00004978,0.0006
+ 3241,-0.06196769,0.00064980,-0.00016471,0.13356537,0.00064686,-0.17235
+ 214,-0.04597288,0.00077338,0.06301183,-0.02291293,0.00000444,-0.052301
+ 65,-0.03021180,-0.00021081,-0.02837234,0.07792073,0.00032458,-0.333466
+ 76,-0.03322572,-0.00077520,0.68606246,0.00048619,-0.11429785,-0.265580
+ 28,0.00039478,0.02291293,-0.05865156,-0.00005551,-0.02858997,-0.018275
+ 61,-0.00014225,0.02895900,0.03399339,0.00008632,0.03257757,-0.12838971
+ ,-0.00257082,-0.03520117,0.70034575,-0.06936782,-0.00119042,0.,0.00421
+ 947,-0.00028680,-0.00025324,0.00661289,-0.00106349,0.00043202,-0.00094
+ 770,0.00089606,0.,0.00661289,-0.00106349,-0.00043202,0.00421947,-0.000
+ 28680,0.00025324,0.52998731,0.00346731,-0.20757185,0.,0.00034117,-0.02
+ 249859,0.00436245,-0.00048740,0.00256934,0.00137211,-0.00017198,-0.001
+ 21809,0.,-0.00048740,0.00256934,-0.00137211,0.00034117,-0.02249859,-0.
+ 00436245,0.01069220,0.47820929,0.,0.,-0.08879500,-0.00156866,0.0294319
+ 9,0.00344067,-0.00110853,0.00177913,-0.00452304,0.,0.,-0.00058667,0.00
+ 110853,-0.00177913,-0.00452304,0.00156866,-0.02943199,0.00344067,0.,0.
+ ,0.57601983,0.00350865,-0.00075230,-0.00004917,-0.03598292,-0.00059852
+ ,-0.00143512,0.00276631,0.00007069,-0.00000689,0.00721291,-0.00001549,
+ -0.00003903,-0.00064910,-0.00005022,0.00002251,0.00637675,0.00009940,0
+ .00015351,-0.00335016,0.00051171,0.00085683,0.02498928,-0.00006250,0.0
+ 0980321,0.01370331,-0.00075703,-0.12463387,-0.11637996,0.00002064,-0.0
+ 1096399,-0.02933903,0.00002273,-0.00550835,0.00152905,0.00000012,-0.00
+ 067580,0.00074293,-0.00001366,-0.00088500,0.00342184,0.00023707,0.0011
+ 4638,0.00097403,0.00069012,0.13070239,-0.00012724,-0.01621661,-0.01989
+ 031,-0.00113447,-0.11598709,-0.26327882,0.00003707,0.00216669,0.003143
+ 49,-0.00005582,0.00038186,0.00199472,0.00000022,0.00094696,0.00018115,
+ -0.00008648,0.00411773,-0.00305222,-0.00054508,-0.00166406,0.00087057,
+ 0.00129954,0.12588805,0.27971686,0.00737267,-0.00018282,0.00013591,0.0
+ 0297945,0.00004693,-0.00012077,-0.03632463,0.00050882,-0.00124036,0.00
+ 311342,0.00006332,0.00006531,0.00699753,0.00005702,-0.00004110,-0.0006
+ 7725,-0.00006829,-0.00001839,0.00014211,0.00013820,0.00005620,-0.00404
+ 472,0.00000900,0.00003739,0.02538240,0.00014363,-0.00537592,-0.0014168
+ 9,0.00014784,-0.01056709,0.02924212,0.00051336,-0.12626802,0.11768631,
+ -0.00006809,0.01165779,-0.01501478,0.00001396,-0.00076972,-0.00320346,
+ -0.00001658,-0.00076744,-0.00089951,-0.00013671,-0.00013481,0.00135825
+ ,-0.00001454,0.00097126,-0.00041309,-0.00062672,0.13058009,0.00000031,
+ -0.00059611,0.00196173,0.00001870,-0.00215219,0.00319159,-0.00111880,0
+ .11776927,-0.26624659,-0.00012937,0.01633341,-0.01856699,-0.00001128,-
+ 0.00417668,-0.00307285,-0.00001415,-0.00085510,0.00032055,-0.00000163,
+ -0.00017576,-0.00002896,0.00001874,0.00040838,0.00081475,0.00121942,-0
+ .12722966,0.28178952,-0.00073874,-0.00014266,0.,0.00705264,0.00006358,
+ -0.00004904,0.00253469,-0.00006437,-0.00011648,-0.03511115,0.00086264,
+ 0.,0.00253469,-0.00006437,0.00011648,0.00705264,0.00006358,0.00004904,
+ -0.00093981,0.00019374,0.,0.00030788,-0.00003942,-0.00001018,-0.003950
+ 38,-0.00000866,0.00002120,0.02499516,0.00000874,0.00064961,0.,0.000009
+ 92,0.00081645,-0.00319282,0.00006101,-0.01166682,0.00299188,0.00077040
+ ,-0.33421322,0.,0.00006101,-0.01166682,-0.00299188,0.00000992,0.000816
+ 45,0.00319282,-0.00006101,0.00001329,0.,-0.00000485,-0.00070736,0.0001
+ 6544,-0.00001340,0.00079938,-0.00033042,-0.00087484,0.35506502,0.,0.,-
+ 0.00134781,-0.00001690,-0.00212390,-0.00442893,0.00009102,-0.02845288,
+ 0.00465303,0.,0.,-0.05910198,-0.00009102,0.02845288,0.00465303,0.00001
+ 690,0.00212390,-0.00442893,0.,0.,0.00017815,-0.00001138,-0.00140432,-0
+ .00000524,0.00001017,0.00057595,0.00095279,0.,0.,0.05782263,0.00737267
+ ,-0.00018282,-0.00013591,-0.00067725,-0.00006829,0.00001839,0.00699753
+ ,0.00005702,0.00004110,0.00311342,0.00006332,-0.00006531,-0.03632463,0
+ .00050882,0.00124036,0.00297945,0.00004693,0.00012077,0.00014211,0.000
+ 13820,-0.00005620,-0.00115523,-0.00000177,0.00001330,0.00025352,0.0000
+ 0754,0.00000841,-0.00395038,-0.00001340,-0.00001017,0.02538240,0.00014
+ 363,-0.00537592,0.00141689,-0.00001658,-0.00076744,0.00089951,0.000013
+ 96,-0.00076972,0.00320346,-0.00006809,0.01165779,0.01501478,0.00051336
+ ,-0.12626802,-0.11768631,0.00014784,-0.01056709,-0.02924212,-0.0001367
+ 1,-0.00013481,-0.00135825,-0.00000415,0.00004686,-0.00010756,0.0000075
+ 4,0.00037442,0.00079895,-0.00000866,0.00079938,-0.00057595,-0.00062672
+ ,0.13058009,-0.00000031,0.00059611,0.00196173,0.00001415,0.00085510,0.
+ 00032055,0.00001128,0.00417668,-0.00307285,0.00012937,-0.01633341,-0.0
+ 1856699,0.00111880,-0.11776927,-0.26624659,-0.00001870,0.00215219,0.00
+ 319159,0.00000163,0.00017576,-0.00002896,-0.00000593,-0.00010136,-0.00
+ 003592,-0.00000841,-0.00079895,-0.00106126,-0.00002120,0.00033042,0.00
+ 095279,-0.00121942,0.12722966,0.28178952,0.00350865,-0.00075230,0.0000
+ 4917,0.00637675,0.00009940,-0.00015351,-0.00064910,-0.00005022,-0.0000
+ 2251,0.00721291,-0.00001549,0.00003903,0.00276631,0.00007069,0.0000068
+ 9,-0.03598292,-0.00059852,0.00143512,-0.00335016,0.00051171,-0.0008568
+ 3,0.00028366,0.00004203,0.00002593,-0.00115523,-0.00000415,0.00000593,
+ 0.00030788,-0.00000485,0.00001138,-0.00404472,-0.00001454,-0.00001874,
+ 0.02498928,-0.00006250,0.00980321,-0.01370331,-0.00001366,-0.00088500,
+ -0.00342184,0.00000012,-0.00067580,-0.00074293,0.00002273,-0.00550835,
+ -0.00152905,0.00002064,-0.01096399,0.02933903,-0.00075703,-0.12463387,
+ 0.11637996,0.00023707,0.00114638,-0.00097403,0.00004203,0.00053201,-0.
+ 00077574,-0.00000177,0.00004686,0.00010136,-0.00003942,-0.00070736,0.0
+ 0140432,0.00000900,0.00097126,-0.00040838,0.00069012,0.13070239,0.0001
+ 2724,0.01621661,-0.01989031,0.00008648,-0.00411773,-0.00305222,-0.0000
+ 0022,-0.00094696,0.00018115,0.00005582,-0.00038186,0.00199472,-0.00003
+ 707,-0.00216669,0.00314349,0.00113447,0.11598709,-0.26327882,0.0005450
+ 8,0.00166406,0.00087057,-0.00002593,0.00077574,-0.00114599,-0.00001330
+ ,0.00010756,-0.00003592,0.00001018,-0.00016544,-0.00000524,-0.00003739
+ ,0.00041309,0.00081475,-0.00129954,-0.12588805,0.27971686,0.00338369,0
+ .00194481,0.,0.00039497,-0.00033967,0.00068748,0.00009056,0.00048531,0
+ .00003602,-0.00000518,-0.00027686,0.,0.00009056,0.00048531,-0.00003602
+ ,0.00039497,-0.00033967,-0.00068748,-0.27361325,0.07635126,0.,-0.00028
+ 299,0.00005655,0.00002357,0.00001836,0.00004553,-0.00000729,-0.0001014
+ 0,0.00002505,0.,0.00001836,0.00004553,0.00000729,-0.00028299,0.0000565
+ 5,-0.00002357,0.29788461,0.03059152,-0.01493527,0.,-0.00038030,-0.0003
+ 4334,-0.00133365,-0.00146283,-0.00044220,-0.00022584,0.00018378,-0.000
+ 35140,0.,-0.00146283,-0.00044220,0.00022584,-0.00038030,-0.00034334,0.
+ 00133365,0.08019217,-0.07010867,0.,0.00068471,0.00005756,0.00034510,0.
+ 00001609,-0.00011560,0.00005607,0.00018331,-0.00000606,0.,0.00001609,-
+ 0.00011560,-0.00005607,0.00068471,0.00005756,-0.00034510,-0.08636782,0
+ .07989617,0.,0.,0.00002557,0.00045753,0.00197093,-0.00035211,0.0004059
+ 9,-0.00115141,-0.00061015,0.,0.,0.00120110,-0.00040599,0.00115141,-0.0
+ 0061015,-0.00045753,-0.00197093,-0.00035211,0.,0.,-0.04490749,-0.00030
+ 593,0.00007120,-0.00011881,-0.00005091,0.00001127,-0.00002048,0.,0.,0.
+ 00001025,0.00005091,-0.00001127,-0.00002048,0.00030593,-0.00007120,-0.
+ 00011881,0.,0.,0.04471978,0.00019296,0.00243633,0.00278018,0.00058713,
+ 0.00023663,-0.00038183,-0.00008501,-0.00029142,0.00000812,0.00002151,-
+ 0.00012869,0.00049995,0.00007739,0.00086159,-0.00010825,0.00062094,0.0
+ 0008348,0.00011362,-0.10018368,-0.04576994,-0.09735286,0.00004778,-0.0
+ 0023632,0.00037640,-0.00002975,-0.00002742,-0.00000206,0.00000313,0.00
+ 001315,0.00002235,-0.00007750,0.00003100,0.00000813,-0.00002812,0.0000
+ 3243,-0.00014584,-0.01399513,-0.01124915,-0.02609292,0.10527621,-0.014
+ 54836,-0.01297675,-0.02810355,0.00063302,0.00187654,-0.00187041,0.0003
+ 9662,-0.00016498,-0.00007406,-0.00013916,-0.00002188,0.00020643,0.0008
+ 9382,-0.00009800,-0.00136327,-0.00046899,-0.00557908,0.00194490,-0.044
+ 01458,-0.08074431,-0.07464179,-0.00036382,0.00007897,0.00110354,-0.000
+ 00131,0.00002743,0.00002050,-0.00006222,0.00000403,0.00008723,0.000047
+ 39,-0.00045862,-0.00002799,-0.00029479,0.00003572,-0.00004878,0.003914
+ 05,0.00359620,0.00908516,0.04710326,0.09024624,0.00183543,-0.00026001,
+ 0.00026933,0.00046729,0.00200242,0.00031551,0.00056078,-0.00064732,0.0
+ 0012784,0.00006427,0.00017733,0.00036525,0.00003217,0.00023282,-0.0001
+ 0299,-0.00055977,-0.00051670,0.00040177,-0.09686017,-0.07684933,-0.220
+ 71364,-0.00054646,-0.00012167,0.00038350,-0.00004048,-0.00006576,0.000
+ 01017,-0.00015163,-0.00004291,0.00004774,-0.00000931,-0.00006065,-0.00
+ 000804,-0.00007472,0.00016820,0.00042227,0.00027800,0.00095909,0.00057
+ 694,0.10763980,0.08435329,0.23776702,0.00019296,0.00243633,-0.00278018
+ ,0.00062094,0.00008348,-0.00011362,0.00007739,0.00086159,0.00010825,0.
+ 00002151,-0.00012869,-0.00049995,-0.00008501,-0.00029142,-0.00000812,0
+ .00058713,0.00023663,0.00038183,-0.10018368,-0.04576994,0.09735286,-0.
+ 00002812,0.00003243,0.00014584,-0.00007750,0.00003100,-0.00000813,0.00
+ 000313,0.00001315,-0.00002235,-0.00002975,-0.00002742,0.00000206,0.000
+ 04778,-0.00023632,-0.00037640,-0.01399513,-0.01124915,0.02609292,0.007
+ 57213,0.00690508,-0.01263520,0.10527621,-0.01454836,-0.01297675,0.0281
+ 0355,-0.00046899,-0.00557908,-0.00194490,0.00089382,-0.00009800,0.0013
+ 6327,-0.00013916,-0.00002188,-0.00020643,0.00039662,-0.00016498,0.0000
+ 7406,0.00063302,0.00187654,0.00187041,-0.04401458,-0.08074431,0.074641
+ 79,-0.00029479,0.00003572,0.00004878,0.00004739,-0.00045862,0.00002799
+ ,-0.00006222,0.00000403,-0.00008723,-0.00000131,0.00002743,-0.00002050
+ ,-0.00036382,0.00007897,-0.00110354,0.00391405,0.00359620,-0.00908516,
+ 0.00690508,0.00417848,-0.00932881,0.04710326,0.09024624,-0.00183543,0.
+ 00026001,0.00026933,0.00055977,0.00051670,0.00040177,-0.00003217,-0.00
+ 023282,-0.00010299,-0.00006427,-0.00017733,0.00036525,-0.00056078,0.00
+ 064732,0.00012784,-0.00046729,-0.00200242,0.00031551,0.09686017,0.0768
+ 4933,-0.22071364,0.00007472,-0.00016820,0.00042227,0.00000931,0.000060
+ 65,-0.00000804,0.00015163,0.00004291,0.00004774,0.00004048,0.00006576,
+ 0.00001017,0.00054646,0.00012167,0.00038350,-0.00027800,-0.00095909,0.
+ 00057694,0.01263520,0.00932881,-0.01986265,-0.10763980,-0.08435329,0.2
+ 3776702\\0.00000055,0.00001830,0.,-0.00000330,0.00000881,-0.00001303,0
+ .00000306,-0.00001020,0.00000986,-0.00000312,0.00000529,0.,0.00000306,
+ -0.00001020,-0.00000986,-0.00000330,0.00000881,0.00001303,0.00001169,-
+ 0.00001327,0.,0.00000143,-0.00000359,0.00001119,-0.00000045,0.00000696
+ ,0.00000041,-0.00000041,-0.00000461,0.,-0.00000045,0.00000696,-0.00000
+ 041,0.00000143,-0.00000359,-0.00001119,-0.00000910,-0.00000244,0.,-0.0
+ 0000055,-0.00000362,0.00000539,-0.00000055,-0.00000362,-0.00000539\\\@
+ Job cpu time: 0 days 0 hours 9 minutes 36.7 seconds.
+ Elapsed time: 0 days 0 hours 1 minutes 12.7 seconds.
+ File lengths (MBytes): RWF= 4155 Int= 0 D2E= 0 Chk= 9 Scr= 1
+ Normal termination of Gaussian 16 at Thu Feb 23 14:06:39 2017.
diff --git a/examples/arkane/species/Toulene_Hindered_Rotor/TolueneFreq.log b/examples/arkane/species/Toulene_Hindered_Rotor/TolueneFreq.log
new file mode 100755
index 0000000000..835782ea6d
--- /dev/null
+++ b/examples/arkane/species/Toulene_Hindered_Rotor/TolueneFreq.log
@@ -0,0 +1,3305 @@
+ Entering Gaussian System, Link 0=g03
+ Input=TolueneFreq.com
+ Output=TolueneFreq.log
+ Initial command:
+ /opt/g03/l1.exe /scratch/laitcl/Gau-563.inp -scrdir=/scratch/laitcl/
+ Entering Link 1 = /opt/g03/l1.exe PID= 567.
+
+ Copyright (c) 1988,1990,1992,1993,1995,1998,2003,2004, Gaussian, Inc.
+ All Rights Reserved.
+
+ This is the Gaussian(R) 03 program. It is based on the
+ the Gaussian(R) 98 system (copyright 1998, Gaussian, Inc.),
+ the Gaussian(R) 94 system (copyright 1995, Gaussian, Inc.),
+ the Gaussian 92(TM) system (copyright 1992, Gaussian, Inc.),
+ the Gaussian 90(TM) system (copyright 1990, Gaussian, Inc.),
+ the Gaussian 88(TM) system (copyright 1988, Gaussian, Inc.),
+ the Gaussian 86(TM) system (copyright 1986, Carnegie Mellon
+ University), and the Gaussian 82(TM) system (copyright 1983,
+ Carnegie Mellon University). Gaussian is a federally registered
+ trademark of Gaussian, Inc.
+
+ This software contains proprietary and confidential information,
+ including trade secrets, belonging to Gaussian, Inc.
+
+ This software is provided under written license and may be
+ used, copied, transmitted, or stored only in accord with that
+ written license.
+
+ The following legend is applicable only to US Government
+ contracts under FAR:
+
+ RESTRICTED RIGHTS LEGEND
+
+ Use, reproduction and disclosure by the US Government is
+ subject to restrictions as set forth in subparagraphs (a)
+ and (c) of the Commercial Computer Software - Restricted
+ Rights clause in FAR 52.227-19.
+
+ Gaussian, Inc.
+ 340 Quinnipiac St., Bldg. 40, Wallingford CT 06492
+
+
+ ---------------------------------------------------------------
+ Warning -- This program may not be used in any manner that
+ competes with the business of Gaussian, Inc. or will provide
+ assistance to any competitor of Gaussian, Inc. The licensee
+ of this program is prohibited from giving any competitor of
+ Gaussian, Inc. access to this program. By using this program,
+ the user acknowledges that Gaussian, Inc. is engaged in the
+ business of creating and licensing software in the field of
+ computational chemistry and represents and warrants to the
+ licensee that it is not a competitor of Gaussian, Inc. and that
+ it will not use this program in any manner prohibited above.
+ ---------------------------------------------------------------
+
+
+ Cite this work as:
+ Gaussian 03, Revision D.01,
+ M. J. Frisch, G. W. Trucks, H. B. Schlegel, G. E. Scuseria,
+ M. A. Robb, J. R. Cheeseman, J. A. Montgomery, Jr., T. Vreven,
+ K. N. Kudin, J. C. Burant, J. M. Millam, S. S. Iyengar, J. Tomasi,
+ V. Barone, B. Mennucci, M. Cossi, G. Scalmani, N. Rega,
+ G. A. Petersson, H. Nakatsuji, M. Hada, M. Ehara, K. Toyota,
+ R. Fukuda, J. Hasegawa, M. Ishida, T. Nakajima, Y. Honda, O. Kitao,
+ H. Nakai, M. Klene, X. Li, J. E. Knox, H. P. Hratchian, J. B. Cross,
+ V. Bakken, C. Adamo, J. Jaramillo, R. Gomperts, R. E. Stratmann,
+ O. Yazyev, A. J. Austin, R. Cammi, C. Pomelli, J. W. Ochterski,
+ P. Y. Ayala, K. Morokuma, G. A. Voth, P. Salvador, J. J. Dannenberg,
+ V. G. Zakrzewski, S. Dapprich, A. D. Daniels, M. C. Strain,
+ O. Farkas, D. K. Malick, A. D. Rabuck, K. Raghavachari,
+ J. B. Foresman, J. V. Ortiz, Q. Cui, A. G. Baboul, S. Clifford,
+ J. Cioslowski, B. B. Stefanov, G. Liu, A. Liashenko, P. Piskorz,
+ I. Komaromi, R. L. Martin, D. J. Fox, T. Keith, M. A. Al-Laham,
+ C. Y. Peng, A. Nanayakkara, M. Challacombe, P. M. W. Gill,
+ B. Johnson, W. Chen, M. W. Wong, C. Gonzalez, and J. A. Pople,
+ Gaussian, Inc., Wallingford CT, 2004.
+
+ ******************************************
+ Gaussian 03: AM64L-G03RevD.01 13-Oct-2005
+ 7-Mar-2017
+ ******************************************
+ %chk=TolueneFreq.chk
+ %mem=1000mb
+ %nproc=8
+ Will use up to 8 processors via shared memory.
+ -------------------------------------
+ # freq nosymm b3lyp/cbsb7 iop(7/33=1)
+ -------------------------------------
+ 1/10=4,30=1,38=1/1,3;
+ 2/15=1,17=6,18=5,40=1/2;
+ 3/5=4,6=6,7=700,11=2,16=1,25=1,30=1,74=-5/1,2,3;
+ 4//1;
+ 5/5=2,38=5/2;
+ 8/6=4,10=90,11=11/1;
+ 11/6=1,8=1,9=11,15=111,16=1,31=1/1,2,10;
+ 10/6=1,31=1/2;
+ 6/7=2,8=2,9=2,10=2,18=1,28=1/1;
+ 7/8=1,10=1,25=1,30=1,33=1/1,2,3,16;
+ 1/10=4,30=1/3;
+ 99//99;
+ ------------
+ Toluene Freq
+ ------------
+ Symbolic Z-matrix:
+ Charge = 0 Multiplicity = 1
+ C 0.00827 0.71997 0.
+ C 0.01111 0.00143 1.20014
+ C 0.01111 -1.39152 1.20295
+ C 0.01022 -2.09413 0.
+ C 0.01111 -1.39152 -1.20295
+ C 0.01111 0.00143 -1.20014
+ C -0.02402 2.22984 0.
+ H 0.01565 0.53943 2.14306
+ H 0.01573 -1.92799 2.14555
+ H 0.0132 -3.1783 0.
+ H 0.01573 -1.92799 -2.14555
+ H 0.01565 0.53943 -2.14306
+ H -1.05489 2.60106 0.
+ H 0.46998 2.63941 0.88421
+ H 0.46998 2.63941 -0.88421
+
+
+ GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad
+ Berny optimization.
+ Initialization pass.
+ Trust Radius=3.00D-01 FncErr=1.00D-07 GrdErr=1.00D-07
+ Number of steps in this run= 2 maximum allowed number of steps= 2.
+ GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad
+
+ Input orientation:
+ ---------------------------------------------------------------------
+ Center Atomic Atomic Coordinates (Angstroms)
+ Number Number Type X Y Z
+ ---------------------------------------------------------------------
+ 1 6 0 0.008270 0.719970 0.000000
+ 2 6 0 0.011110 0.001430 1.200140
+ 3 6 0 0.011110 -1.391520 1.202950
+ 4 6 0 0.010220 -2.094130 0.000000
+ 5 6 0 0.011110 -1.391520 -1.202950
+ 6 6 0 0.011110 0.001430 -1.200140
+ 7 6 0 -0.024020 2.229840 0.000000
+ 8 1 0 0.015650 0.539430 2.143060
+ 9 1 0 0.015730 -1.927990 2.145550
+ 10 1 0 0.013200 -3.178300 0.000000
+ 11 1 0 0.015730 -1.927990 -2.145550
+ 12 1 0 0.015650 0.539430 -2.143060
+ 13 1 0 -1.054890 2.601060 0.000000
+ 14 1 0 0.469980 2.639410 0.884210
+ 15 1 0 0.469980 2.639410 -0.884210
+ ---------------------------------------------------------------------
+ Distance matrix (angstroms):
+ 1 2 3 4 5
+ 1 C 0.000000
+ 2 C 1.398801 0.000000
+ 3 C 2.430121 1.392953 0.000000
+ 4 C 2.814101 2.414893 1.393108 0.000000
+ 5 C 2.430121 2.777616 2.405900 1.393108 0.000000
+ 6 C 1.398801 2.400280 2.777616 2.414893 1.392953
+ 7 C 1.510215 2.531281 3.816094 4.324106 3.816094
+ 8 H 2.150664 1.085616 2.147649 3.395346 3.863207
+ 9 H 3.408098 2.148600 1.084581 2.151980 3.391205
+ 10 H 3.898273 3.398680 2.153991 1.084174 2.153991
+ 11 H 3.408098 3.862166 3.391205 2.151980 1.084581
+ 12 H 2.150664 3.386215 3.863207 3.395346 2.147649
+ 13 H 2.160743 3.055285 4.303968 4.814485 4.303968
+ 14 H 2.163158 2.696166 4.069466 4.837314 4.562367
+ 15 H 2.163158 3.393231 4.562367 4.837314 4.069466
+ 6 7 8 9 10
+ 6 C 0.000000
+ 7 C 2.531281 0.000000
+ 8 H 3.386215 2.729792 0.000000
+ 9 H 3.862166 4.678944 2.467421 0.000000
+ 10 H 3.398680 5.408268 4.291180 2.483277 0.000000
+ 11 H 2.148600 4.678944 4.947761 4.291100 2.483277
+ 12 H 1.085616 2.729792 4.286120 4.947761 4.291180
+ 13 H 3.055285 1.095672 3.160551 5.124637 5.877229
+ 14 H 3.393231 1.092525 2.490188 4.760091 5.902222
+ 15 H 2.696166 1.092525 3.712236 5.499721 5.902222
+ 11 12 13 14 15
+ 11 H 0.000000
+ 12 H 2.467421 0.000000
+ 13 H 5.124637 3.160551 0.000000
+ 14 H 5.499721 3.712236 1.763101 0.000000
+ 15 H 4.760091 2.490188 1.763101 1.768420 0.000000
+ Symmetry turned off by external request.
+ Stoichiometry C7H8
+ Framework group CS[SG(C3H2),X(C4H6)]
+ Deg. of freedom 22
+ Full point group CS
+ Rotational constants (GHZ): 5.5548152 2.5165401 1.7507580
+ Standard basis: CBSB7 (5D, 7F)
+ Integral buffers will be 131072 words long.
+ Raffenetti 2 integral format.
+ Two-electron integral symmetry is turned off.
+ 174 basis functions, 288 primitive gaussians, 181 cartesian basis functions
+ 25 alpha electrons 25 beta electrons
+ nuclear repulsion energy 269.1308028349 Hartrees.
+ NAtoms= 15 NActive= 15 NUniq= 15 SFac= 7.50D-01 NAtFMM= 80 NAOKFM=F Big=F
+ One-electron integrals computed using PRISM.
+ NBasis= 174 RedAO= T NBF= 174
+ NBsUse= 174 1.00D-06 NBFU= 174
+ Harris functional with IExCor= 402 diagonalized for initial guess.
+ ExpMin= 1.03D-01 ExpMax= 4.56D+03 ExpMxC= 6.82D+02 IAcc=1 IRadAn= 1 AccDes= 1.00D-06
+ HarFok: IExCor= 402 AccDes= 1.00D-06 IRadAn= 1 IDoV=1
+ ScaDFX= 1.000000 1.000000 1.000000 1.000000
+ Requested convergence on RMS density matrix=1.00D-08 within 128 cycles.
+ Requested convergence on MAX density matrix=1.00D-06.
+ Requested convergence on energy=1.00D-06.
+ No special actions if energy rises.
+ Integral accuracy reduced to 1.0D-05 until final iterations.
+ Initial convergence to 1.0D-05 achieved. Increase integral accuracy.
+ SCF Done: E(RB+HF-LYP) = -271.636052740 A.U. after 14 cycles
+ Convg = 0.1734D-08 -V/T = 2.0046
+ S**2 = 0.0000
+ Range of M.O.s used for correlation: 1 174
+ NBasis= 174 NAE= 25 NBE= 25 NFC= 0 NFV= 0
+ NROrb= 174 NOA= 25 NOB= 25 NVA= 149 NVB= 149
+
+ **** Warning!!: The largest alpha MO coefficient is 0.18959677D+02
+
+ Symmetrizing basis deriv contribution to polar:
+ IMax=3 JMax=2 DiffMx= 0.00D+00
+ G2DrvN: will do 16 centers at a time, making 1 passes doing MaxLOS=2.
+ FoFDir/FoFCou used for L=0 through L=2.
+ DoAtom=TTTTTTTTTTTTTTT
+ Differentiating once with respect to electric field.
+ with respect to dipole field.
+ Differentiating once with respect to nuclear coordinates.
+ Symmetry not used in FoFDir.
+ MinBra= 0 MaxBra= 2 Meth= 1.
+ IRaf= 0 NMat= 48 IRICut= 48 DoRegI=T DoRafI=T ISym2E= 0 JSym2E=0.
+ There are 48 degrees of freedom in the 1st order CPHF.
+ 45 vectors were produced by pass 0.
+ AX will form 45 AO Fock derivatives at one time.
+ 45 vectors were produced by pass 1.
+ 45 vectors were produced by pass 2.
+ 45 vectors were produced by pass 3.
+ 45 vectors were produced by pass 4.
+ 29 vectors were produced by pass 5.
+ 6 vectors were produced by pass 6.
+ 2 vectors were produced by pass 7.
+ Inv2: IOpt= 1 Iter= 1 AM= 2.43D-15 Conv= 1.00D-12.
+ Inverted reduced A of dimension 262 with in-core refinement.
+ Isotropic polarizability for W= 0.000000 72.38 Bohr**3.
+ End of Minotr Frequency-dependent properties file 721 does not exist.
+
+ **********************************************************************
+
+ Population analysis using the SCF density.
+
+ **********************************************************************
+
+ Alpha occ. eigenvalues -- -10.18118 -10.17130 -10.17124 -10.16919 -10.16880
+ Alpha occ. eigenvalues -- -10.16877 -10.16776 -0.85703 -0.77241 -0.74475
+ Alpha occ. eigenvalues -- -0.68652 -0.60548 -0.58481 -0.51253 -0.46159
+ Alpha occ. eigenvalues -- -0.45491 -0.42228 -0.42063 -0.40982 -0.38747
+ Alpha occ. eigenvalues -- -0.35673 -0.34366 -0.34055 -0.25336 -0.24458
+ Alpha virt. eigenvalues -- -0.00774 -0.00571 0.04543 0.06214 0.07503
+ Alpha virt. eigenvalues -- 0.09869 0.10865 0.11029 0.13654 0.13858
+ Alpha virt. eigenvalues -- 0.16612 0.20541 0.27002 0.27488 0.28470
+ Alpha virt. eigenvalues -- 0.29468 0.30841 0.31781 0.33720 0.39978
+ Alpha virt. eigenvalues -- 0.40612 0.40840 0.41226 0.43265 0.44419
+ Alpha virt. eigenvalues -- 0.44993 0.46870 0.47092 0.48219 0.50212
+ Alpha virt. eigenvalues -- 0.54458 0.54620 0.55486 0.58592 0.60412
+ Alpha virt. eigenvalues -- 0.60508 0.61176 0.62477 0.62588 0.62851
+ Alpha virt. eigenvalues -- 0.65559 0.68823 0.73638 0.73793 0.76333
+ Alpha virt. eigenvalues -- 0.79051 0.81419 0.85302 0.85341 0.89737
+ Alpha virt. eigenvalues -- 0.93898 0.95521 1.00873 1.01792 1.03213
+ Alpha virt. eigenvalues -- 1.05268 1.08562 1.13136 1.14345 1.24586
+ Alpha virt. eigenvalues -- 1.32216 1.33101 1.34796 1.41335 1.45155
+ Alpha virt. eigenvalues -- 1.46712 1.46735 1.48400 1.51362 1.54024
+ Alpha virt. eigenvalues -- 1.55564 1.57180 1.57825 1.58355 1.59075
+ Alpha virt. eigenvalues -- 1.63952 1.67437 1.68563 1.73197 1.74440
+ Alpha virt. eigenvalues -- 1.77844 1.80186 1.80622 1.83266 1.89720
+ Alpha virt. eigenvalues -- 1.90667 1.91295 1.91840 1.92900 1.95726
+ Alpha virt. eigenvalues -- 1.98295 2.02163 2.02179 2.08080 2.10840
+ Alpha virt. eigenvalues -- 2.20526 2.22336 2.23973 2.30077 2.31938
+ Alpha virt. eigenvalues -- 2.34688 2.35276 2.38258 2.40613 2.47678
+ Alpha virt. eigenvalues -- 2.50613 2.52780 2.53330 2.57563 2.60109
+ Alpha virt. eigenvalues -- 2.61273 2.62178 2.64288 2.65603 2.67828
+ Alpha virt. eigenvalues -- 2.68159 2.69270 2.72884 2.76072 2.81545
+ Alpha virt. eigenvalues -- 2.85680 2.85723 2.88423 2.91933 2.93695
+ Alpha virt. eigenvalues -- 3.06215 3.11798 3.18706 3.32912 3.34662
+ Alpha virt. eigenvalues -- 3.47090 3.47582 3.59187 3.64475 3.78989
+ Alpha virt. eigenvalues -- 3.81090 3.96736 4.02796 4.11702 4.12087
+ Alpha virt. eigenvalues -- 4.32426 4.83940 23.52127 23.89773 23.94491
+ Alpha virt. eigenvalues -- 23.94746 24.08234 24.10266 24.19702
+ Condensed to atoms (all electrons):
+ 1 2 3 4 5 6
+ 1 C 5.026081 0.525486 -0.051282 -0.040822 -0.051282 0.525486
+ 2 C 0.525486 4.841300 0.532546 -0.060205 -0.037858 -0.054317
+ 3 C -0.051282 0.532546 4.840813 0.521308 -0.057484 -0.037858
+ 4 C -0.040822 -0.060205 0.521308 4.867283 0.521308 -0.060205
+ 5 C -0.051282 -0.037858 -0.057484 0.521308 4.840813 0.532546
+ 6 C 0.525486 -0.054317 -0.037858 -0.060205 0.532546 4.841300
+ 7 C 0.359774 -0.057184 0.005608 0.000141 0.005608 -0.057184
+ 8 H -0.049328 0.417275 -0.039401 0.008003 -0.000587 0.007684
+ 9 H 0.008280 -0.042058 0.414264 -0.043481 0.007588 -0.000404
+ 10 H -0.000425 0.007660 -0.042507 0.415718 -0.042507 0.007660
+ 11 H 0.008280 -0.000404 0.007588 -0.043481 0.414264 -0.042058
+ 12 H -0.049328 0.007684 -0.000587 0.008003 -0.039401 0.417275
+ 13 H -0.035012 -0.002972 -0.000211 0.000103 -0.000211 -0.002972
+ 14 H -0.036621 -0.006859 0.000506 0.000012 -0.000342 0.005394
+ 15 H -0.036621 0.005394 -0.000342 0.000012 0.000506 -0.006859
+ 7 8 9 10 11 12
+ 1 C 0.359774 -0.049328 0.008280 -0.000425 0.008280 -0.049328
+ 2 C -0.057184 0.417275 -0.042058 0.007660 -0.000404 0.007684
+ 3 C 0.005608 -0.039401 0.414264 -0.042507 0.007588 -0.000587
+ 4 C 0.000141 0.008003 -0.043481 0.415718 -0.043481 0.008003
+ 5 C 0.005608 -0.000587 0.007588 -0.042507 0.414264 -0.039401
+ 6 C -0.057184 0.007684 -0.000404 0.007660 -0.042058 0.417275
+ 7 C 4.806246 -0.007511 -0.000345 0.000044 -0.000345 -0.007511
+ 8 H -0.007511 0.586762 -0.008745 -0.000364 0.000082 -0.000390
+ 9 H -0.000345 -0.008745 0.581521 -0.008072 -0.000395 0.000082
+ 10 H 0.000044 -0.000364 -0.008072 0.579515 -0.008072 -0.000364
+ 11 H -0.000345 0.000082 -0.000395 -0.008072 0.581521 -0.008745
+ 12 H -0.007511 -0.000390 0.000082 -0.000364 -0.008745 0.586762
+ 13 H 0.397709 0.000450 0.000014 -0.000002 0.000014 0.000450
+ 14 H 0.406911 0.002893 -0.000026 -0.000003 0.000023 -0.000005
+ 15 H 0.406911 -0.000005 0.000023 -0.000003 -0.000026 0.002893
+ 13 14 15
+ 1 C -0.035012 -0.036621 -0.036621
+ 2 C -0.002972 -0.006859 0.005394
+ 3 C -0.000211 0.000506 -0.000342
+ 4 C 0.000103 0.000012 0.000012
+ 5 C -0.000211 -0.000342 0.000506
+ 6 C -0.002972 0.005394 -0.006859
+ 7 C 0.397709 0.406911 0.406911
+ 8 H 0.000450 0.002893 -0.000005
+ 9 H 0.000014 -0.000026 0.000023
+ 10 H -0.000002 -0.000003 -0.000003
+ 11 H 0.000014 0.000023 -0.000026
+ 12 H 0.000450 -0.000005 0.002893
+ 13 H 0.574025 -0.028902 -0.028902
+ 14 H -0.028902 0.572775 -0.027825
+ 15 H -0.028902 -0.027825 0.572775
+ Mulliken atomic charges:
+ 1
+ 1 C -0.102666
+ 2 C -0.075489
+ 3 C -0.092963
+ 4 C -0.093699
+ 5 C -0.092963
+ 6 C -0.075489
+ 7 C -0.258872
+ 8 H 0.083181
+ 9 H 0.091753
+ 10 H 0.091720
+ 11 H 0.091753
+ 12 H 0.083181
+ 13 H 0.126418
+ 14 H 0.112068
+ 15 H 0.112068
+ Sum of Mulliken charges= 0.00000
+ Atomic charges with hydrogens summed into heavy atoms:
+ 1
+ 1 C -0.102666
+ 2 C 0.007692
+ 3 C -0.001210
+ 4 C -0.001979
+ 5 C -0.001210
+ 6 C 0.007692
+ 7 C 0.091682
+ 8 H 0.000000
+ 9 H 0.000000
+ 10 H 0.000000
+ 11 H 0.000000
+ 12 H 0.000000
+ 13 H 0.000000
+ 14 H 0.000000
+ 15 H 0.000000
+ Sum of Mulliken charges= 0.00000
+ APT atomic charges:
+ 1
+ 1 C 0.073214
+ 2 C -0.068138
+ 3 C -0.006390
+ 4 C -0.059709
+ 5 C -0.006390
+ 6 C -0.068138
+ 7 C 0.080183
+ 8 H 0.022010
+ 9 H 0.022480
+ 10 H 0.026549
+ 11 H 0.022480
+ 12 H 0.022010
+ 13 H -0.030027
+ 14 H -0.015067
+ 15 H -0.015067
+ Sum of APT charges= 0.00000
+ APT Atomic charges with hydrogens summed into heavy atoms:
+ 1
+ 1 C 0.073214
+ 2 C -0.046128
+ 3 C 0.016089
+ 4 C -0.033160
+ 5 C 0.016089
+ 6 C -0.046128
+ 7 C 0.020023
+ 8 H 0.000000
+ 9 H 0.000000
+ 10 H 0.000000
+ 11 H 0.000000
+ 12 H 0.000000
+ 13 H 0.000000
+ 14 H 0.000000
+ 15 H 0.000000
+ Sum of APT charges= 0.00000
+ Electronic spatial extent (au): = 725.3956
+ Charge= 0.0000 electrons
+ Dipole moment (field-independent basis, Debye):
+ X= -0.0382 Y= 0.3497 Z= 0.0000 Tot= 0.3517
+ Quadrupole moment (field-independent basis, Debye-Ang):
+ XX= -45.9590 YY= -38.5152 ZZ= -38.7545
+ XY= -0.0915 XZ= 0.0000 YZ= 0.0000
+ Traceless Quadrupole moment (field-independent basis, Debye-Ang):
+ XX= -4.8828 YY= 2.5610 ZZ= 2.3218
+ XY= -0.0915 XZ= 0.0000 YZ= 0.0000
+ Octapole moment (field-independent basis, Debye-Ang**2):
+ XXX= -1.3137 YYY= 17.7422 ZZZ= 0.0000 XYY= -0.1751
+ XXY= 12.2947 XXZ= 0.0000 XZZ= 0.4759 YZZ= 6.3613
+ YYZ= 0.0000 XYZ= 0.0000
+ Hexadecapole moment (field-independent basis, Debye-Ang**3):
+ XXXX= -58.5510 YYYY= -617.9963 ZZZZ= -288.0343 XXXY= 0.6721
+ XXXZ= 0.0000 YYYX= 2.1926 YYYZ= 0.0000 ZZZX= 0.0000
+ ZZZY= 0.0000 XXYY= -123.1907 XXZZ= -67.5317 YYZZ= -148.3034
+ XXYZ= 0.0000 YYXZ= 0.0000 ZZXY= 2.2572
+ N-N= 2.691308028349D+02 E-N=-1.167923115532D+03 KE= 2.703859608054D+02
+ Exact polarizability: 38.239 -0.615 95.973 0.000 0.000 82.940
+ Approx polarizability: 58.128 -0.822 145.277 0.000 0.000 138.432
+ Use density number 0.
+ Entering OneElI...
+ Calculate overlap and kinetic energy integrals
+ NBasis = 181 MinDer = 2 MaxDer = 2
+ Requested accuracy = 0.1000D-12
+ PrsmSu: NPrtUS= 1 ThrOK=F
+ PRISM was handed 130782886 working-precision words and 2273 shell-pairs
+ Entering OneElI...
+ Calculate potential energy integrals
+ NBasis = 181 MinDer = 2 MaxDer = 2
+ Requested accuracy = 0.1000D-12
+ PrsmSu: NPrtUS= 8 ThrOK=T
+ PRISM was handed 16307008 working-precision words and 2107 shell-pairs
+ PRISM was handed 16307008 working-precision words and 2107 shell-pairs
+ PRISM was handed 16307008 working-precision words and 2107 shell-pairs
+ PRISM was handed 16307008 working-precision words and 2107 shell-pairs
+ PRISM was handed 16307008 working-precision words and 2107 shell-pairs
+ PRISM was handed 16307008 working-precision words and 2107 shell-pairs
+ PRISM was handed 16307008 working-precision words and 2107 shell-pairs
+ PRISM was handed 16307008 working-precision words and 2107 shell-pairs
+ Polarizability after L701:
+ 1 2 3
+ 1 0.382391D+02
+ 2 -0.615072D+00 0.959727D+02
+ 3 0.000000D+00 0.000000D+00 0.829400D+02
+ Dipole Derivatives after L701:
+ 1 2 3 4 5
+ 1-0.760074D-01-0.229974D-01 0.000000D+00-0.127509D+00 0.317062D-02
+ 2-0.824839D-01 0.378541D+00 0.000000D+00 0.496611D-02-0.146901D+00
+ 3 0.000000D+00 0.000000D+00-0.828914D-01-0.264867D-02 0.707099D-01
+ 6 7 8 9 10
+ 1-0.294962D-02-0.129016D+00-0.135668D-02 0.467427D-02-0.141930D+00
+ 2 0.127624D+00 0.437883D-02 0.121237D-01-0.719885D-01 0.268805D-02
+ 3 0.699964D-01 0.458670D-02-0.538516D-01 0.977217D-01 0.000000D+00
+ 11 12 13 14 15
+ 1 0.229929D-02 0.000000D+00-0.129016D+00-0.135667D-02-0.467428D-02
+ 2 0.705212D-01 0.000000D+00 0.437883D-02 0.121237D-01 0.719885D-01
+ 3 0.000000D+00-0.107718D+00-0.458669D-02 0.538516D-01 0.977217D-01
+ 16 17 18 19 20
+ 1-0.127509D+00 0.317062D-02 0.294962D-02 0.130760D+00 0.588310D-02
+ 2 0.496610D-02-0.146901D+00-0.127624D+00 0.111013D+00-0.168560D-01
+ 3 0.264867D-02-0.707099D-01 0.699964D-01 0.000000D+00 0.000000D+00
+ 21 22 23 24 25
+ 1 0.000000D+00 0.122426D+00-0.179319D-02-0.272149D-03 0.128841D+00
+ 2 0.000000D+00-0.380198D-02 0.104721D-01-0.820803D-01-0.170199D-02
+ 3 0.126644D+00-0.293910D-02-0.956194D-01-0.668687D-01-0.308995D-02
+ 26 27 28 29 30
+ 1 0.245471D-04-0.987061D-03 0.133794D+00 0.485796D-03 0.000000D+00
+ 2 0.133320D-01 0.873755D-01-0.169554D-03-0.122860D+00 0.000000D+00
+ 3 0.804741D-01-0.747347D-01 0.000000D+00 0.000000D+00 0.687134D-01
+ 31 32 33 34 35
+ 1 0.128841D+00 0.245471D-04 0.987062D-03 0.122426D+00-0.179319D-02
+ 2-0.170199D-02 0.133320D-01-0.873755D-01-0.380198D-02 0.104720D-01
+ 3 0.308994D-02-0.804741D-01-0.747347D-01 0.293910D-02 0.956194D-01
+ 36 37 38 39 40
+ 1 0.272149D-03-0.106532D+00 0.443515D-01 0.000000D+00 0.352144D-01
+ 2 0.820803D-01 0.887095D-01-0.659610D-01 0.000000D+00-0.637194D-01
+ 3-0.668687D-01 0.000000D+00 0.000000D+00 0.824120D-01-0.723281D-01
+ 41 42 43 44 45
+ 1-0.150565D-01-0.821163D-01 0.352144D-01-0.150565D-01 0.821163D-01
+ 2-0.107194D-01-0.891494D-01-0.637194D-01-0.107194D-01 0.891494D-01
+ 3-0.158717D-01-0.696946D-01 0.723281D-01 0.158717D-01-0.696946D-01
+ Hessian after L701:
+ 1 2 3 4 5
+ 1 0.257081D+02
+ 2 0.336873D+00 0.116466D+02
+ 3 0.000000D+00 0.000000D+00 0.111726D+02
+ 4 -0.102833D+02 -0.661834D-01 0.188386D-02 0.243355D+02
+ 5 -0.523985D-01 -0.613606D+01 -0.353433D+01 -0.265072D-02 0.963834D+01
+ 6 0.192022D-01 -0.386453D+01 -0.282765D+01 0.298506D-02 0.230225D+01
+ 7 -0.682922D-02 -0.318935D-01 0.772799D-03 -0.996417D+01 0.395621D-01
+ 8 -0.391979D-01 0.360333D+00 -0.340901D+00 0.409114D-01 -0.456562D+00
+ 9 0.660165D-02 -0.298671D+00 0.133405D+00 -0.248730D-02 -0.201821D+00
+ 10 0.100030D+00 0.517080D-03 0.000000D+00 0.758322D-01 0.235442D-02
+ 11 -0.746059D-02 -0.125352D+00 0.000000D+00 0.660741D-02 0.441330D+00
+ 12 0.000000D+00 0.000000D+00 -0.128392D+00 0.666033D-02 0.315418D+00
+ 13 -0.682922D-02 -0.318935D-01 -0.772799D-03 0.101069D+00 -0.201148D-01
+ 14 -0.391979D-01 0.360333D+00 0.340901D+00 -0.191760D-01 -0.172085D+00
+ 15 -0.660165D-02 0.298671D+00 0.133405D+00 -0.212633D-01 0.544109D-02
+ 16 -0.102833D+02 -0.661834D-01 -0.188386D-02 0.111939D-01 -0.358331D-02
+ 17 -0.523985D-01 -0.613606D+01 0.353433D+01 -0.358331D-02 -0.953510D-01
+ 18 -0.192022D-01 0.386453D+01 -0.282765D+01 0.672280D-02 -0.489725D-01
+ 19 -0.570175D+01 -0.137244D+00 0.000000D+00 -0.291997D-01 0.153849D-01
+ 20 -0.136617D+00 -0.579977D+00 0.000000D+00 0.269104D-01 0.263095D+00
+ 21 0.000000D+00 0.000000D+00 -0.576357D+01 -0.162986D-02 -0.181613D+00
+ 22 0.121683D+00 0.138938D-04 -0.111615D-02 -0.422658D+01 0.825727D-02
+ 23 0.101465D-02 0.150942D+00 0.145712D-01 0.855692D-02 -0.363503D+01
+ 24 -0.846324D-04 -0.495953D-01 -0.104512D+00 0.146468D-01 0.131550D+01
+ 25 -0.439229D-01 -0.326743D-04 0.297363D-03 0.831548D-01 0.164922D-02
+ 26 -0.152573D-02 0.120281D+00 -0.122685D+00 0.256111D-02 -0.624811D-01
+ 27 0.193285D-02 -0.156593D+00 0.561196D-01 -0.156616D-02 0.511878D-01
+ 28 -0.144048D-01 -0.286110D-04 0.000000D+00 -0.418486D-01 -0.319165D-03
+ 29 -0.158261D-02 0.620151D-01 0.000000D+00 0.326932D-03 0.182509D+00
+ 30 0.000000D+00 0.000000D+00 -0.146853D-01 0.560035D-04 0.730263D-01
+ 31 -0.439229D-01 -0.326744D-04 -0.297363D-03 -0.147657D-01 -0.239424D-03
+ 32 -0.152573D-02 0.120281D+00 0.122685D+00 -0.284856D-03 0.197860D-02
+ 33 -0.193285D-02 0.156593D+00 0.561196D-01 -0.291183D-03 0.294692D-01
+ 34 0.121683D+00 0.138938D-04 0.111615D-02 -0.452209D-01 0.598169D-04
+ 35 0.101465D-02 0.150942D+00 -0.145712D-01 -0.128265D-03 -0.454415D-01
+ 36 0.846323D-04 0.495953D-01 -0.104512D+00 0.645560D-03 -0.460144D-01
+ 37 0.174219D+00 -0.738416D-01 0.000000D+00 0.291486D-01 -0.707049D-01
+ 38 -0.307221D-01 -0.818638D-02 0.000000D+00 -0.465638D-01 0.952976D-02
+ 39 0.000000D+00 0.000000D+00 0.485873D-01 0.192903D-01 -0.794065D-02
+ 40 0.792675D-01 0.349579D-01 0.308393D-01 -0.352539D-02 0.387105D-01
+ 41 0.118624D-01 0.693447D-02 -0.376120D-01 0.173269D-01 -0.981837D-03
+ 42 0.334881D-01 0.167611D-01 0.853460D-01 0.493048D-02 0.300677D-01
+ 43 0.792675D-01 0.349579D-01 -0.308393D-01 -0.272830D-01 0.440325D-01
+ 44 0.118624D-01 0.693447D-02 0.376120D-01 0.353692D-01 0.672171D-01
+ 45 -0.334881D-01 -0.167611D-01 0.853460D-01 -0.305834D-01 -0.101676D+00
+ 6 7 8 9 10
+ 6 0.123439D+02
+ 7 -0.124668D-02 0.236901D+02
+ 8 0.161225D+00 0.189685D-01 0.977509D+01
+ 9 -0.841869D+01 -0.297309D-01 -0.155852D+01 0.119483D+02
+ 10 0.732910D-02 -0.977735D+01 -0.630900D-02 -0.842681D-03 0.233016D+02
+ 11 0.225387D+00 -0.803343D-02 -0.624578D+01 0.360865D+01 0.196146D-01
+ 12 0.100719D+00 0.215333D-02 0.320297D+01 -0.240244D+01 0.000000D+00
+ 13 -0.229239D-01 0.250677D-01 0.108258D-02 0.831355D-03 -0.977735D+01
+ 14 -0.771849D-02 0.108258D-02 -0.713755D-01 -0.355017D-01 -0.630900D-02
+ 15 -0.137874D+00 -0.831355D-03 0.355017D-01 0.606891D+00 0.842681D-03
+ 16 -0.672279D-02 0.101069D+00 -0.191760D-01 0.212633D-01 0.758322D-01
+ 17 0.489725D-01 -0.201148D-01 -0.172085D+00 -0.544109D-02 0.235442D-02
+ 18 0.654286D+00 0.229239D-01 0.771849D-02 -0.137874D+00 -0.732910D-02
+ 19 -0.258637D-02 -0.119429D+00 0.199598D-02 -0.111042D-02 -0.746297D-01
+ 20 -0.125601D+00 0.503678D-03 0.267317D+00 -0.131888D+00 -0.479259D-02
+ 21 -0.234718D-01 -0.870091D-03 -0.137197D+00 -0.903405D-01 0.000000D+00
+ 22 0.140906D-01 0.785502D-01 0.257155D-02 0.760856D-03 -0.435466D-01
+ 23 0.123377D+01 0.214557D-02 -0.587393D-01 -0.758828D-01 0.226572D-03
+ 24 -0.202270D+01 0.142347D-02 -0.514892D-01 0.856711D-01 0.133010D-03
+ 25 -0.365689D-03 -0.403341D+01 -0.295269D-02 0.470212D-02 0.880475D-01
+ 26 0.783326D-01 -0.228486D-02 -0.343214D+01 -0.123105D+01 -0.172356D-03
+ 27 0.914534D-01 0.400683D-02 -0.120777D+01 -0.197427D+01 -0.188192D-02
+ 28 0.467258D-05 0.834063D-01 0.285551D-03 0.474796D-04 -0.399740D+01
+ 29 0.922610D-01 0.389348D-03 -0.150188D-03 -0.831274D-01 -0.654577D-02
+ 30 -0.214521D-01 0.357711D-03 -0.107817D+00 0.353132D-01 0.000000D+00
+ 31 -0.555402D-05 -0.417761D-01 -0.425570D-04 -0.966441D-03 0.880475D-01
+ 32 0.293805D-01 -0.201077D-03 -0.423772D-01 0.578100D-01 -0.172356D-03
+ 33 0.342123D-01 -0.116722D-02 0.358727D-01 0.202963D+00 0.188192D-02
+ 34 -0.882418D-04 -0.141349D-01 -0.822408D-04 -0.837710D-04 -0.435466D-01
+ 35 -0.557034D-01 -0.402109D-03 0.595956D-03 -0.262454D-01 0.226572D-03
+ 36 0.216878D+00 0.631042D-03 -0.273413D-01 0.321706D-01 -0.133010D-03
+ 37 0.314701D-01 -0.277405D-02 -0.239825D-01 0.596232D-02 -0.295652D-02
+ 38 -0.109855D-01 -0.626309D-02 0.182365D-01 -0.714067D-02 -0.353089D-02
+ 39 -0.174152D-01 0.148453D-02 -0.811568D-02 -0.875792D-02 0.000000D+00
+ 40 -0.377257D-02 -0.122127D-01 0.156795D-01 -0.238258D-03 -0.632042D-02
+ 41 -0.888856D-02 0.343867D-02 0.458168D-01 -0.363957D-02 0.126913D-02
+ 42 -0.172273D-01 0.284929D-02 0.166270D-01 -0.143820D-01 0.172601D-02
+ 43 -0.373700D-01 -0.610672D-02 0.102478D-01 -0.470932D-02 -0.632042D-02
+ 44 -0.981516D-01 0.310238D-02 0.118166D-01 -0.753077D-02 0.126913D-02
+ 45 0.450494D-01 -0.275670D-02 -0.207603D-01 0.199698D-02 -0.172601D-02
+ 11 12 13 14 15
+ 11 0.123725D+02
+ 12 0.000000D+00 0.892354D+01
+ 13 -0.803343D-02 -0.215333D-02 0.236901D+02
+ 14 -0.624578D+01 -0.320297D+01 0.189685D-01 0.977509D+01
+ 15 -0.360865D+01 -0.240244D+01 0.297309D-01 0.155852D+01 0.119483D+02
+ 16 0.660741D-02 -0.666033D-02 -0.996417D+01 0.409114D-01 0.248730D-02
+ 17 0.441330D+00 -0.315418D+00 0.395621D-01 -0.456562D+00 0.201821D+00
+ 18 -0.225387D+00 0.100719D+00 0.124668D-02 -0.161225D+00 -0.841869D+01
+ 19 -0.188991D-02 0.000000D+00 -0.119429D+00 0.199598D-02 0.111042D-02
+ 20 0.123490D+00 0.000000D+00 0.503678D-03 0.267317D+00 0.131888D+00
+ 21 0.000000D+00 -0.790751D-01 0.870091D-03 0.137197D+00 -0.903405D-01
+ 22 0.886994D-03 0.705845D-03 -0.141349D-01 -0.822408D-04 0.837710D-04
+ 23 0.105865D+00 0.123058D+00 -0.402109D-03 0.595956D-03 0.262454D-01
+ 24 0.146619D+00 0.613783D-01 -0.631042D-03 0.273413D-01 0.321706D-01
+ 25 -0.366489D-03 -0.171912D-02 -0.417761D-01 -0.425570D-04 0.966442D-03
+ 26 0.113502D+00 -0.474802D-01 -0.201077D-03 -0.423772D-01 -0.578100D-01
+ 27 -0.271583D-01 -0.693078D-01 0.116722D-02 -0.358727D-01 0.202963D+00
+ 28 -0.649846D-02 0.000000D+00 0.834063D-01 0.285551D-03 -0.474795D-04
+ 29 -0.126008D+01 0.000000D+00 0.389348D-03 -0.150189D-03 0.831274D-01
+ 30 0.000000D+00 -0.408258D+01 -0.357711D-03 0.107817D+00 0.353132D-01
+ 31 -0.366489D-03 0.171912D-02 -0.403341D+01 -0.295269D-02 -0.470212D-02
+ 32 0.113502D+00 0.474802D-01 -0.228486D-02 -0.343214D+01 0.123105D+01
+ 33 0.271583D-01 -0.693078D-01 -0.400683D-02 0.120777D+01 -0.197427D+01
+ 34 0.886994D-03 -0.705845D-03 0.785502D-01 0.257155D-02 -0.760856D-03
+ 35 0.105865D+00 -0.123058D+00 0.214557D-02 -0.587393D-01 0.758828D-01
+ 36 -0.146619D+00 0.613783D-01 -0.142347D-02 0.514892D-01 0.856711D-01
+ 37 -0.194148D-01 0.000000D+00 -0.277405D-02 -0.239825D-01 -0.596232D-02
+ 38 0.201098D-01 0.000000D+00 -0.626309D-02 0.182365D-01 0.714067D-02
+ 39 0.000000D+00 -0.691184D-02 -0.148453D-02 0.811568D-02 -0.875792D-02
+ 40 0.873006D-02 0.269329D-02 -0.610672D-02 0.102478D-01 0.470932D-02
+ 41 0.197631D-01 0.571264D-02 0.310238D-02 0.118166D-01 0.753077D-02
+ 42 0.168838D-01 -0.363498D-02 0.275670D-02 0.207603D-01 0.199698D-02
+ 43 0.873006D-02 -0.269329D-02 -0.122127D-01 0.156795D-01 0.238258D-03
+ 44 0.197631D-01 -0.571264D-02 0.343867D-02 0.458168D-01 0.363957D-02
+ 45 -0.168838D-01 -0.363499D-02 -0.284929D-02 -0.166270D-01 -0.143820D-01
+ 16 17 18 19 20
+ 16 0.243355D+02
+ 17 -0.265072D-02 0.963834D+01
+ 18 -0.298506D-02 -0.230225D+01 0.123439D+02
+ 19 -0.291997D-01 0.153849D-01 0.258637D-02 0.142913D+02
+ 20 0.269104D-01 0.263095D+00 0.125601D+00 0.492586D-01 0.961348D+01
+ 21 0.162986D-02 0.181613D+00 -0.234718D-01 0.000000D+00 0.000000D+00
+ 22 -0.452209D-01 0.598168D-04 0.882418D-04 -0.199238D-01 -0.407229D-02
+ 23 -0.128265D-03 -0.454415D-01 0.557034D-01 -0.437403D-02 -0.152021D-01
+ 24 -0.645560D-03 0.460144D-01 0.216878D+00 0.563031D-02 -0.678237D-02
+ 25 -0.147657D-01 -0.239424D-03 0.555405D-05 -0.842327D-02 -0.710473D-04
+ 26 -0.284856D-03 0.197860D-02 -0.293805D-01 -0.270119D-03 0.795440D-02
+ 27 0.291183D-03 -0.294692D-01 0.342123D-01 -0.879690D-05 -0.153969D-01
+ 28 -0.418486D-01 -0.319165D-03 -0.467273D-05 -0.732962D-02 0.000000D+00
+ 29 0.326932D-03 0.182509D+00 -0.922610D-01 -0.127046D-04 0.207622D-01
+ 30 -0.560035D-04 -0.730263D-01 -0.214521D-01 0.000000D+00 0.000000D+00
+ 31 0.831548D-01 0.164922D-02 0.365689D-03 -0.842327D-02 -0.710473D-04
+ 32 0.256111D-02 -0.624811D-01 -0.783326D-01 -0.270119D-03 0.795440D-02
+ 33 0.156616D-02 -0.511878D-01 0.914534D-01 0.879689D-05 0.153969D-01
+ 34 -0.422658D+01 0.825727D-02 -0.140906D-01 -0.199238D-01 -0.407229D-02
+ 35 0.855692D-02 -0.363503D+01 -0.123377D+01 -0.437403D-02 -0.152021D-01
+ 36 -0.146468D-01 -0.131550D+01 -0.202270D+01 -0.563031D-02 0.678237D-02
+ 37 0.291486D-01 -0.707049D-01 -0.314701D-01 -0.154934D+01 -0.817352D+00
+ 38 -0.465638D-01 0.952976D-02 0.109855D-01 -0.972807D+00 -0.341205D+01
+ 39 -0.192903D-01 0.794065D-02 -0.174152D-01 0.000000D+00 0.000000D+00
+ 40 -0.272830D-01 0.440325D-01 0.373700D-01 -0.330216D+01 0.431481D+00
+ 41 0.353692D-01 0.672171D-01 0.981516D-01 0.518611D+00 -0.340602D+01
+ 42 0.305834D-01 0.101676D+00 0.450494D-01 0.909871D+00 0.784488D+00
+ 43 -0.352539D-02 0.387105D-01 0.377257D-02 -0.330216D+01 0.431481D+00
+ 44 0.173269D-01 -0.981837D-03 0.888856D-02 0.518611D+00 -0.340602D+01
+ 45 -0.493048D-02 -0.300677D-01 -0.172273D-01 -0.909871D+00 -0.784488D+00
+ 21 22 23 24 25
+ 21 0.141490D+02
+ 22 0.427144D-02 0.415592D+01
+ 23 0.166357D-01 -0.119003D-01 0.353359D+01
+ 24 0.376704D-02 -0.184099D-01 -0.138038D+01 0.168635D+01
+ 25 0.569192D-04 0.136102D-01 0.507202D-04 0.564586D-04 0.395162D+01
+ 26 -0.949169D-02 0.143263D-03 -0.572712D-01 0.474549D-02 0.211605D-02
+ 27 0.456548D-02 -0.134956D-03 -0.448532D-02 0.104184D-01 -0.390930D-02
+ 28 0.000000D+00 -0.628620D-03 -0.690418D-04 -0.378892D-04 0.112229D-01
+ 29 0.000000D+00 0.138393D-03 0.436646D-02 0.104142D-01 -0.112742D-03
+ 30 -0.533310D-02 0.992558D-05 -0.215546D-02 0.317317D-04 -0.839086D-04
+ 31 -0.569192D-04 -0.259611D-02 0.104967D-05 0.233758D-04 -0.601145D-03
+ 32 0.949169D-02 0.525460D-04 0.325346D-02 0.799861D-02 -0.192226D-05
+ 33 0.456548D-02 0.978874D-04 0.760946D-02 0.128785D-01 -0.304739D-04
+ 34 -0.427144D-02 -0.570500D-03 -0.721196D-05 -0.100464D-03 -0.259611D-02
+ 35 -0.166357D-01 -0.721195D-05 -0.169242D-02 -0.587009D-02 0.104967D-05
+ 36 0.376704D-02 0.100464D-03 0.587009D-02 0.662152D-02 -0.233758D-04
+ 37 0.000000D+00 -0.797725D-03 -0.215731D-02 0.189883D-01 -0.299152D-03
+ 38 0.000000D+00 -0.420267D-02 0.575897D-03 -0.159962D-01 -0.676558D-03
+ 39 -0.374805D+01 0.393180D-02 -0.562091D-02 0.715491D-02 0.215739D-03
+ 40 0.922579D+00 -0.135129D-01 0.766199D-02 -0.147892D-01 -0.103999D-02
+ 41 0.951013D+00 0.765019D-02 0.161336D-01 -0.379239D-01 0.362464D-03
+ 42 -0.217101D+01 -0.312317D-02 -0.146063D-01 -0.116618D-01 0.141136D-03
+ 43 -0.922579D+00 -0.224997D-02 -0.619224D-03 -0.620302D-02 -0.815262D-03
+ 44 -0.951013D+00 0.490767D-03 -0.194294D-02 -0.105967D-01 0.316596D-03
+ 45 -0.217101D+01 -0.135669D-02 -0.333822D-03 0.155555D-01 -0.309863D-03
+ 26 27 28 29 30
+ 26 0.334378D+01
+ 27 0.146301D+01 0.165877D+01
+ 28 -0.396200D-04 -0.394238D-04 0.391626D+01
+ 29 -0.685940D-02 -0.198810D-01 0.681112D-02 0.800968D+00
+ 30 -0.306767D-01 -0.355079D-01 0.000000D+00 0.000000D+00 0.414690D+01
+ 31 -0.192222D-05 0.304738D-04 0.112229D-01 -0.112742D-03 0.839086D-04
+ 32 -0.216913D-02 0.613536D-02 -0.396200D-04 -0.685940D-02 0.306767D-01
+ 33 -0.613536D-02 0.654355D-02 0.394238D-04 0.198810D-01 -0.355079D-01
+ 34 0.525460D-04 -0.978873D-04 -0.628620D-03 0.138393D-03 -0.992558D-05
+ 35 0.325346D-02 -0.760946D-02 -0.690418D-04 0.436646D-02 0.215546D-02
+ 36 -0.799861D-02 0.128785D-01 0.378892D-04 -0.104142D-01 0.317318D-04
+ 37 -0.560558D-02 0.689593D-02 -0.302387D-03 -0.748530D-02 0.000000D+00
+ 38 0.396221D-02 -0.495019D-02 -0.226452D-03 0.507133D-02 0.000000D+00
+ 39 -0.159810D-02 0.533997D-03 0.000000D+00 0.000000D+00 -0.558607D-03
+ 40 0.312818D-02 -0.347270D-02 -0.563221D-03 0.366570D-02 0.179085D-03
+ 41 0.512745D-02 -0.576125D-02 0.113499D-03 0.576495D-02 0.425146D-03
+ 42 0.364527D-02 -0.559179D-02 -0.398763D-05 0.632485D-02 -0.257290D-03
+ 43 0.238496D-02 -0.321335D-02 -0.563221D-03 0.366570D-02 -0.179085D-03
+ 44 0.345606D-02 -0.538800D-02 0.113499D-03 0.576495D-02 -0.425146D-03
+ 45 -0.542542D-02 0.621543D-02 0.398767D-05 -0.632485D-02 -0.257290D-03
+ 31 32 33 34 35
+ 31 0.395162D+01
+ 32 0.211605D-02 0.334378D+01
+ 33 0.390930D-02 -0.146301D+01 0.165877D+01
+ 34 0.136102D-01 0.143263D-03 0.134956D-03 0.415592D+01
+ 35 0.507202D-04 -0.572712D-01 0.448532D-02 -0.119003D-01 0.353359D+01
+ 36 -0.564586D-04 -0.474549D-02 0.104184D-01 0.184099D-01 0.138038D+01
+ 37 -0.299152D-03 -0.560558D-02 -0.689593D-02 -0.797725D-03 -0.215731D-02
+ 38 -0.676558D-03 0.396221D-02 0.495019D-02 -0.420267D-02 0.575897D-03
+ 39 -0.215739D-03 0.159810D-02 0.533997D-03 -0.393180D-02 0.562091D-02
+ 40 -0.815262D-03 0.238496D-02 0.321335D-02 -0.224997D-02 -0.619224D-03
+ 41 0.316596D-03 0.345606D-02 0.538800D-02 0.490767D-03 -0.194294D-02
+ 42 0.309863D-03 0.542542D-02 0.621543D-02 0.135669D-02 0.333822D-03
+ 43 -0.103999D-02 0.312818D-02 0.347270D-02 -0.135129D-01 0.766199D-02
+ 44 0.362464D-03 0.512745D-02 0.576125D-02 0.765019D-02 0.161336D-01
+ 45 -0.141136D-03 -0.364527D-02 -0.559179D-02 0.312317D-02 0.146063D-01
+ 36 37 38 39 40
+ 36 0.168635D+01
+ 37 -0.189883D-01 0.141204D+01
+ 38 0.159962D-01 0.113751D+01 0.317805D+01
+ 39 0.715491D-02 0.000000D+00 0.000000D+00 0.366820D+01
+ 40 0.620302D-02 -0.421100D-01 -0.740539D-02 -0.875590D-01 0.326764D+01
+ 41 0.105967D-01 -0.725769D-02 0.761987D-01 0.473406D-02 -0.601534D+00
+ 42 0.155555D-01 -0.508346D-01 0.580933D-02 0.378509D-01 -0.916003D+00
+ 43 0.147892D-01 -0.421100D-01 -0.740539D-02 0.875590D-01 0.709953D-01
+ 44 0.379239D-01 -0.725769D-02 0.761987D-01 -0.473406D-02 0.887879D-02
+ 45 -0.116618D-01 0.508346D-01 -0.580933D-02 0.378509D-01 0.180478D-01
+ 41 42 43 44 45
+ 41 0.307972D+01
+ 42 -0.991961D+00 0.209775D+01
+ 43 0.887879D-02 -0.180478D-01 0.326764D+01
+ 44 0.709915D-01 -0.223498D-02 -0.601534D+00 0.307972D+01
+ 45 0.223498D-02 -0.659930D-01 0.916003D+00 0.991961D+00 0.209775D+01
+ ReadGW: IGet=0 IStart= 108 Next= 6776 LGW= 6668.
+ ICntrl=12127.
+ Symmetry not used in FoFDir.
+ MinBra= 0 MaxBra= 2 Meth= 1.
+ IRaf= 0 NMat= 1 IRICut= 1 DoRegI=T DoRafI=F ISym2E= 0 JSym2E=0.
+ PrsmSu: NPrtUS= 8 ThrOK=T
+ PRISM was handed 16299059 working-precision words and 2174 shell-pairs
+ PRISM was handed 16299059 working-precision words and 2174 shell-pairs
+ PRISM was handed 16299059 working-precision words and 2174 shell-pairs
+ PRISM was handed 16299059 working-precision words and 2174 shell-pairs
+ PRISM was handed 16299059 working-precision words and 2174 shell-pairs
+ PRISM was handed 16299059 working-precision words and 2174 shell-pairs
+ PRISM was handed 16299059 working-precision words and 2174 shell-pairs
+ PRISM was handed 16299059 working-precision words and 2174 shell-pairs
+ Pruned ( 75, 302) grid will be used in CalDFT.
+ CkSvGd: ISavGI= -1 IRadAn= 4 IRASav= 4 ISavGd= -1.
+ CalDSu: NPrtUS= 8 ThrOK=T
+ IPart= 0 IRanGd= 0 ScrnBf=T ScrnGd=T RCrit=4.00D+00 DoMicB=T.
+ IPart= 5 IRanGd= 0 ScrnBf=T ScrnGd=T RCrit=4.00D+00 DoMicB=T.
+ IPart= 6 IRanGd= 0 ScrnBf=T ScrnGd=T RCrit=4.00D+00 DoMicB=T.
+ IPart= 3 IRanGd= 0 ScrnBf=T ScrnGd=T RCrit=4.00D+00 DoMicB=T.
+ IPart= 1 IRanGd= 0 ScrnBf=T ScrnGd=T RCrit=4.00D+00 DoMicB=T.
+ CutRad = 1000.00 CtRdIn = 0.00 XCrit = 15.00 ICut = 0
+ IPart= 2 IRanGd= 0 ScrnBf=T ScrnGd=T RCrit=4.00D+00 DoMicB=T.
+ CutRad = 1000.00 CtRdIn = 0.00 XCrit = 15.00 ICut = 0
+ CutRad = 1000.00 CtRdIn = 0.00 XCrit = 15.00 ICut = 0
+ CutRad = 1000.00 CtRdIn = 0.00 XCrit = 15.00 ICut = 0
+ IPart= 7 IRanGd= 0 ScrnBf=T ScrnGd=T RCrit=4.00D+00 DoMicB=T.
+ IPart= 4 IRanGd= 0 ScrnBf=T ScrnGd=T RCrit=4.00D+00 DoMicB=T.
+ CutRad = 1000.00 CtRdIn = 0.00 XCrit = 15.00 ICut = 0
+ CutRad = 1000.00 CtRdIn = 0.00 XCrit = 15.00 ICut = 0
+ CutRad = 1000.00 CtRdIn = 0.00 XCrit = 15.00 ICut = 0
+ CutRad = 1000.00 CtRdIn = 0.00 XCrit = 15.00 ICut = 0
+ IPart= 2 13830 of 15826 points in 34 batches and 97 microbatches, Max-NSigAt= 15 Max-NSgAt2= 15
+ IPart= 5 13566 of 15260 points in 30 batches and 99 microbatches, Max-NSigAt= 15 Max-NSgAt2= 15
+ IPart= 0 12507 of 14106 points in 29 batches and 83 microbatches, Max-NSigAt= 15 Max-NSgAt2= 15
+ IPart= 1 13265 of 15236 points in 31 batches and 92 microbatches, Max-NSigAt= 15 Max-NSgAt2= 15
+ IPart= 4 14013 of 16132 points in 34 batches and 93 microbatches, Max-NSigAt= 15 Max-NSgAt2= 15
+ IPart= 6 12927 of 14254 points in 29 batches and 94 microbatches, Max-NSigAt= 15 Max-NSgAt2= 15
+ IPart= 3 13639 of 15062 points in 31 batches and 106 microbatches, Max-NSigAt= 15 Max-NSgAt2= 15
+ IPart= 7 11908 of 13600 points in 29 batches and 76 microbatches, Max-NSigAt= 15 Max-NSgAt2= 15
+ Polarizability after L703:
+ 1 2 3
+ 1 0.382391D+02
+ 2 -0.615072D+00 0.959727D+02
+ 3 0.000000D+00 0.000000D+00 0.829400D+02
+ Dipole Derivatives after L703:
+ 1 2 3 4 5
+ 1-0.760074D-01-0.229974D-01 0.000000D+00-0.127509D+00 0.317062D-02
+ 2-0.824839D-01 0.378541D+00 0.000000D+00 0.496611D-02-0.146901D+00
+ 3 0.000000D+00 0.000000D+00-0.828914D-01-0.264867D-02 0.707099D-01
+ 6 7 8 9 10
+ 1-0.294962D-02-0.129016D+00-0.135668D-02 0.467427D-02-0.141930D+00
+ 2 0.127624D+00 0.437883D-02 0.121237D-01-0.719885D-01 0.268805D-02
+ 3 0.699964D-01 0.458670D-02-0.538516D-01 0.977217D-01 0.000000D+00
+ 11 12 13 14 15
+ 1 0.229929D-02 0.000000D+00-0.129016D+00-0.135667D-02-0.467428D-02
+ 2 0.705212D-01 0.000000D+00 0.437883D-02 0.121237D-01 0.719885D-01
+ 3 0.000000D+00-0.107718D+00-0.458669D-02 0.538516D-01 0.977217D-01
+ 16 17 18 19 20
+ 1-0.127509D+00 0.317062D-02 0.294962D-02 0.130760D+00 0.588310D-02
+ 2 0.496610D-02-0.146901D+00-0.127624D+00 0.111013D+00-0.168560D-01
+ 3 0.264867D-02-0.707099D-01 0.699964D-01 0.000000D+00 0.000000D+00
+ 21 22 23 24 25
+ 1 0.000000D+00 0.122426D+00-0.179319D-02-0.272149D-03 0.128841D+00
+ 2 0.000000D+00-0.380198D-02 0.104721D-01-0.820803D-01-0.170199D-02
+ 3 0.126644D+00-0.293910D-02-0.956194D-01-0.668687D-01-0.308995D-02
+ 26 27 28 29 30
+ 1 0.245471D-04-0.987061D-03 0.133794D+00 0.485796D-03 0.000000D+00
+ 2 0.133320D-01 0.873755D-01-0.169554D-03-0.122860D+00 0.000000D+00
+ 3 0.804741D-01-0.747347D-01 0.000000D+00 0.000000D+00 0.687134D-01
+ 31 32 33 34 35
+ 1 0.128841D+00 0.245471D-04 0.987062D-03 0.122426D+00-0.179319D-02
+ 2-0.170199D-02 0.133320D-01-0.873755D-01-0.380198D-02 0.104720D-01
+ 3 0.308994D-02-0.804741D-01-0.747347D-01 0.293910D-02 0.956194D-01
+ 36 37 38 39 40
+ 1 0.272149D-03-0.106532D+00 0.443515D-01 0.000000D+00 0.352144D-01
+ 2 0.820803D-01 0.887095D-01-0.659610D-01 0.000000D+00-0.637194D-01
+ 3-0.668687D-01 0.000000D+00 0.000000D+00 0.824120D-01-0.723281D-01
+ 41 42 43 44 45
+ 1-0.150565D-01-0.821163D-01 0.352144D-01-0.150565D-01 0.821163D-01
+ 2-0.107194D-01-0.891494D-01-0.637194D-01-0.107194D-01 0.891494D-01
+ 3-0.158717D-01-0.696946D-01 0.723281D-01 0.158717D-01-0.696946D-01
+ Hessian after L703:
+ 1 2 3 4 5
+ 1 0.174105D+00
+ 2 -0.594931D-02 0.636101D+00
+ 3 0.000000D+00 0.000000D+00 0.657702D+00
+ 4 -0.680842D-01 0.519235D-03 -0.170195D-02 0.133536D+00
+ 5 0.655945D-03 -0.172342D+00 0.459478D-01 -0.750317D-03 0.686135D+00
+ 6 -0.493313D-03 0.114338D+00 -0.265544D+00 0.258307D-02 0.352213D-01
+ 7 0.696180D-02 0.441399D-03 0.662949D-04 -0.618451D-01 0.325847D-03
+ 8 -0.125677D-03 -0.272344D-01 0.791214D-01 0.645636D-03 -0.333538D+00
+ 9 -0.772942D-03 0.291555D-01 0.358102D-01 0.163356D-03 0.332612D-01
+ 10 -0.735415D-02 0.294447D-03 0.000000D+00 0.850029D-02 -0.211252D-03
+ 11 -0.423012D-03 0.209669D-02 0.000000D+00 -0.503596D-04 -0.284338D-01
+ 12 0.000000D+00 0.000000D+00 -0.725590D-01 -0.630946D-03 -0.779412D-01
+ 13 0.696180D-02 0.441399D-03 -0.662949D-04 -0.725533D-02 0.485300D-05
+ 14 -0.125677D-03 -0.272344D-01 -0.791214D-01 -0.568875D-03 -0.522103D-01
+ 15 0.772942D-03 -0.291555D-01 0.358102D-01 0.284759D-03 0.302692D-01
+ 16 -0.680842D-01 0.519235D-03 0.170195D-02 0.950061D-02 0.774495D-03
+ 17 0.655945D-03 -0.172342D+00 -0.459478D-01 0.774495D-03 0.630286D-01
+ 18 0.493313D-03 -0.114338D+00 -0.265544D+00 0.394947D-03 0.229196D-01
+ 19 -0.693385D-01 -0.124999D-02 0.000000D+00 0.421311D-02 -0.277881D-03
+ 20 0.345489D-02 -0.207739D+00 0.000000D+00 0.341284D-03 -0.225030D-01
+ 21 0.000000D+00 0.000000D+00 -0.889024D-01 -0.156996D-02 0.294430D-01
+ 22 0.352187D-02 -0.663986D-03 -0.124851D-03 -0.359275D-01 -0.635214D-03
+ 23 -0.682005D-04 0.981775D-02 0.137745D-01 -0.783828D-03 -0.124684D+00
+ 24 -0.166026D-03 -0.162282D-01 -0.199337D-01 -0.112743D-02 -0.116068D+00
+ 25 0.737527D-02 -0.181761D-03 0.135534D-03 0.300491D-02 0.464654D-04
+ 26 0.143955D-03 -0.537506D-02 -0.141561D-02 0.148507D-03 -0.105804D-01
+ 27 0.000000D+00 -0.595385D-03 0.196028D-02 0.188119D-04 -0.215378D-02
+ 28 -0.736921D-03 -0.141968D-03 0.000000D+00 0.705316D-02 0.631796D-04
+ 29 0.886384D-05 0.648663D-03 0.000000D+00 0.991528D-05 0.818572D-03
+ 30 0.000000D+00 0.000000D+00 -0.134619D-02 -0.167465D-04 -0.211934D-02
+ 31 0.737527D-02 -0.181762D-03 -0.135534D-03 -0.677148D-03 -0.683066D-04
+ 32 0.143955D-03 -0.537506D-02 0.141561D-02 -0.166282D-04 -0.767615D-03
+ 33 0.000000D+00 0.595385D-03 0.196028D-02 0.140534D-04 0.853534D-03
+ 34 0.352187D-02 -0.663986D-03 0.124851D-03 0.637294D-02 0.995738D-04
+ 35 -0.682004D-04 0.981775D-02 -0.137745D-01 -0.147364D-04 -0.884207D-03
+ 36 0.166026D-03 0.162282D-01 -0.199337D-01 0.876253D-04 -0.411819D-02
+ 37 0.341492D-02 0.194846D-02 0.000000D+00 0.399333D-03 -0.341982D-03
+ 38 0.306488D-01 -0.150648D-01 0.000000D+00 -0.407110D-03 -0.322146D-03
+ 39 0.000000D+00 0.000000D+00 -0.629050D-04 0.464101D-03 0.196201D-02
+ 40 0.180080D-03 0.243429D-02 0.278220D-02 0.589874D-03 0.232991D-03
+ 41 -0.144761D-01 -0.128880D-01 -0.281397D-01 0.619714D-03 0.185996D-02
+ 42 0.184406D-02 -0.285620D-03 0.291119D-03 0.476352D-03 0.200672D-02
+ 43 0.180080D-03 0.243429D-02 -0.278220D-02 0.619299D-03 0.816029D-04
+ 44 -0.144761D-01 -0.128880D-01 0.281397D-01 -0.466930D-03 -0.557702D-02
+ 45 -0.184406D-02 0.285619D-03 0.291119D-03 0.559973D-03 0.515584D-03
+ 6 7 8 9 10
+ 6 0.700799D+00
+ 7 -0.860781D-04 0.134461D+00
+ 8 -0.326445D-01 -0.645707D-03 0.677001D+00
+ 9 -0.128570D+00 0.171058D-02 -0.312775D-01 0.717834D+00
+ 10 0.141917D-03 -0.630429D-01 0.351407D-03 -0.944701D-04 0.131894D+00
+ 11 -0.289118D-01 0.948942D-04 -0.180267D+00 -0.121775D+00 -0.984910D-03
+ 12 0.340047D-01 -0.438453D-03 -0.564829D-01 -0.280185D+00 0.000000D+00
+ 13 0.556173D-04 0.865035D-02 -0.168770D-03 0.394571D-04 -0.630429D-01
+ 14 0.286555D-01 -0.168770D-03 0.647903D-01 0.245863D-01 0.351407D-03
+ 15 -0.183864D-01 -0.394571D-04 -0.245863D-01 -0.598310D-01 0.944700D-04
+ 16 -0.394947D-03 -0.725533D-02 -0.568875D-03 -0.284759D-03 0.850029D-02
+ 17 -0.229196D-01 0.485300D-05 -0.522103D-01 -0.302692D-01 -0.211252D-03
+ 18 -0.586391D-01 -0.556173D-04 -0.286555D-01 -0.183864D-01 -0.141917D-03
+ 19 -0.252929D-03 0.661253D-02 -0.106319D-02 0.429953D-03 -0.944944D-03
+ 20 0.436565D-02 -0.487562D-03 0.257136D-02 0.137213D-02 -0.172118D-03
+ 21 0.344595D-02 -0.110997D-02 0.177213D-02 -0.452571D-02 0.000000D+00
+ 22 -0.143905D-02 0.279064D-02 0.695862D-04 -0.641032D-05 0.721601D-02
+ 23 -0.116465D+00 0.187228D-04 -0.109762D-01 -0.293366D-01 0.223290D-04
+ 24 -0.263500D+00 0.359589D-04 0.216567D-02 0.313761D-02 -0.555082D-04
+ 25 -0.120334D-03 -0.362904D-01 0.508511D-03 -0.124120D-02 0.311390D-02
+ 26 0.292430D-01 0.512047D-03 -0.126323D+00 0.117766D+00 -0.679551D-04
+ 27 0.318843D-02 -0.111992D-02 0.117840D+00 -0.266471D+00 -0.129605D-03
+ 28 -0.489090D-04 0.252756D-02 -0.644766D-04 -0.116637D-03 -0.352075D-01
+ 29 -0.319123D-02 0.610369D-04 -0.116654D-01 0.299394D-02 0.768168D-03
+ 30 -0.443003D-02 0.910281D-04 -0.284498D-01 0.465763D-02 0.000000D+00
+ 31 0.185810D-04 0.699486D-02 0.570320D-04 0.411265D-04 0.311390D-02
+ 32 0.900420D-03 0.139182D-04 -0.769950D-03 0.320601D-02 -0.679551D-04
+ 33 0.323350D-03 0.113125D-04 0.417686D-02 -0.307082D-02 0.129605D-03
+ 34 -0.153504D-03 -0.649299D-03 -0.507078D-04 -0.224729D-04 0.721601D-02
+ 35 -0.342416D-02 0.000000D+00 -0.678138D-03 -0.744099D-03 0.223290D-04
+ 36 -0.305162D-02 0.000000D+00 -0.946547D-03 0.183875D-03 0.555082D-04
+ 37 0.685817D-03 0.919675D-04 0.485283D-03 0.367810D-04 -0.463264D-05
+ 38 -0.133967D-02 -0.146221D-02 -0.439277D-03 -0.226756D-03 0.182724D-03
+ 39 -0.351083D-03 0.405297D-03 -0.115479D-02 -0.610776D-03 0.000000D+00
+ 40 -0.382427D-03 -0.846793D-04 -0.292458D-03 0.851411D-05 0.214251D-04
+ 41 -0.188005D-02 0.397048D-03 -0.162896D-03 -0.735117D-04 -0.138685D-03
+ 42 0.309208D-03 0.561183D-03 -0.646030D-03 0.128913D-03 0.643589D-04
+ 43 -0.113507D-03 0.773006D-04 0.862410D-03 0.109125D-03 0.214251D-04
+ 44 -0.194726D-02 0.894360D-03 -0.982627D-04 0.136144D-02 -0.138685D-03
+ 45 0.401452D-03 -0.321575D-04 -0.232477D-03 -0.102031D-03 -0.643589D-04
+ 11 12 13 14 15
+ 11 0.739090D+00
+ 12 0.000000D+00 0.655819D+00
+ 13 0.948941D-04 0.438453D-03 0.134461D+00
+ 14 -0.180267D+00 0.564829D-01 -0.645707D-03 0.677001D+00
+ 15 0.121775D+00 -0.280185D+00 -0.171058D-02 0.312775D-01 0.717834D+00
+ 16 -0.503596D-04 0.630946D-03 -0.618451D-01 0.645636D-03 -0.163356D-03
+ 17 -0.284338D-01 0.779412D-01 0.325847D-03 -0.333538D+00 -0.332612D-01
+ 18 0.289118D-01 0.340047D-01 0.860781D-04 0.326445D-01 -0.128570D+00
+ 19 0.896479D-03 0.000000D+00 0.661253D-02 -0.106319D-02 -0.429952D-03
+ 20 -0.122021D-02 0.000000D+00 -0.487562D-03 0.257136D-02 -0.137213D-02
+ 21 0.000000D+00 -0.583466D-03 0.110997D-02 -0.177213D-02 -0.452571D-02
+ 22 -0.158366D-04 -0.395955D-04 -0.649299D-03 -0.507078D-04 0.224730D-04
+ 23 -0.550908D-02 0.152552D-02 0.000000D+00 -0.678138D-03 0.744100D-03
+ 24 0.380655D-03 0.199474D-02 0.000000D+00 0.946547D-03 0.183876D-03
+ 25 0.634854D-04 0.649593D-04 0.699486D-02 0.570320D-04 -0.411265D-04
+ 26 0.116591D-01 -0.150154D-01 0.139181D-04 -0.769950D-03 -0.320601D-02
+ 27 0.163369D-01 -0.185714D-01 -0.113124D-04 -0.417686D-02 -0.307082D-02
+ 28 0.860906D-03 0.000000D+00 0.252756D-02 -0.644766D-04 0.116637D-03
+ 29 -0.334470D+00 0.000000D+00 0.610369D-04 -0.116654D-01 -0.299394D-02
+ 30 0.000000D+00 -0.590945D-01 -0.910281D-04 0.284498D-01 0.465763D-02
+ 31 0.634854D-04 -0.649594D-04 -0.362904D-01 0.508511D-03 0.124120D-02
+ 32 0.116591D-01 0.150154D-01 0.512047D-03 -0.126323D+00 -0.117766D+00
+ 33 -0.163369D-01 -0.185714D-01 0.111992D-02 -0.117840D+00 -0.266471D+00
+ 34 -0.158367D-04 0.395953D-04 0.279064D-02 0.695861D-04 0.641030D-05
+ 35 -0.550908D-02 -0.152552D-02 0.187227D-04 -0.109762D-01 0.293366D-01
+ 36 -0.380655D-03 0.199474D-02 -0.359588D-04 -0.216567D-02 0.313761D-02
+ 37 -0.277146D-03 0.000000D+00 0.919675D-04 0.485283D-03 -0.367810D-04
+ 38 -0.350507D-03 0.000000D+00 -0.146221D-02 -0.439277D-03 0.226756D-03
+ 39 0.000000D+00 0.120293D-02 -0.405297D-03 0.115479D-02 -0.610776D-03
+ 40 -0.128342D-03 0.500800D-03 0.773006D-04 0.862411D-03 -0.109125D-03
+ 41 -0.218395D-04 0.204723D-03 0.894360D-03 -0.982624D-04 -0.136144D-02
+ 42 0.177409D-03 0.364530D-03 0.321576D-04 0.232477D-03 -0.102031D-03
+ 43 -0.128342D-03 -0.500800D-03 -0.846792D-04 -0.292458D-03 -0.851432D-05
+ 44 -0.218395D-04 -0.204723D-03 0.397048D-03 -0.162895D-03 0.735113D-04
+ 45 -0.177409D-03 0.364529D-03 -0.561183D-03 0.646029D-03 0.128913D-03
+ 16 17 18 19 20
+ 16 0.133536D+00
+ 17 -0.750317D-03 0.686135D+00
+ 18 -0.258307D-02 -0.352213D-01 0.700799D+00
+ 19 0.421311D-02 -0.277881D-03 0.252929D-03 0.530202D+00
+ 20 0.341284D-03 -0.225030D-01 -0.436565D-02 0.106558D-01 0.478414D+00
+ 21 0.156996D-02 -0.294430D-01 0.344595D-02 0.000000D+00 0.000000D+00
+ 22 0.637294D-02 0.995737D-04 0.153504D-03 -0.336513D-02 0.503430D-03
+ 23 -0.147364D-04 -0.884208D-03 0.342416D-02 0.245855D-03 0.117395D-02
+ 24 -0.876252D-04 0.411819D-02 -0.305162D-02 -0.563536D-03 -0.166944D-02
+ 25 -0.677148D-03 -0.683065D-04 -0.185809D-04 0.141845D-03 0.137944D-03
+ 26 -0.166281D-04 -0.767615D-03 -0.900420D-03 -0.136440D-03 -0.135164D-03
+ 27 -0.140535D-04 -0.853534D-03 0.323350D-03 -0.166690D-05 -0.175603D-03
+ 28 0.705316D-02 0.631796D-04 0.489089D-04 -0.940364D-03 0.193620D-03
+ 29 0.991526D-05 0.818573D-03 0.319123D-02 -0.610569D-04 0.132135D-04
+ 30 0.167465D-04 0.211934D-02 -0.443003D-02 0.000000D+00 0.000000D+00
+ 31 0.300491D-02 0.464654D-04 0.120334D-03 0.141845D-03 0.137944D-03
+ 32 0.148507D-03 -0.105804D-01 -0.292430D-01 -0.136440D-03 -0.135164D-03
+ 33 -0.188119D-04 0.215378D-02 0.318843D-02 0.166689D-05 0.175603D-03
+ 34 -0.359275D-01 -0.635214D-03 0.143905D-02 -0.336513D-02 0.503430D-03
+ 35 -0.783828D-03 -0.124684D+00 0.116465D+00 0.245855D-03 0.117395D-02
+ 36 0.112743D-02 0.116068D+00 -0.263500D+00 0.563536D-03 0.166944D-02
+ 37 0.399333D-03 -0.341982D-03 -0.685817D-03 -0.273734D+00 0.764273D-01
+ 38 -0.407110D-03 -0.322146D-03 0.133967D-02 0.802929D-01 -0.701460D-01
+ 39 -0.464101D-03 -0.196201D-02 -0.351083D-03 0.000000D+00 0.000000D+00
+ 40 0.619299D-03 0.816030D-04 0.113508D-03 -0.100225D+00 -0.457749D-01
+ 41 -0.466930D-03 -0.557702D-02 0.194726D-02 -0.440354D-01 -0.807685D-01
+ 42 -0.559973D-03 -0.515583D-03 0.401452D-03 -0.969268D-01 -0.769066D-01
+ 43 0.589874D-03 0.232991D-03 0.382427D-03 -0.100225D+00 -0.457749D-01
+ 44 0.619714D-03 0.185996D-02 0.188005D-02 -0.440354D-01 -0.807685D-01
+ 45 -0.476351D-03 -0.200672D-02 0.309208D-03 0.969268D-01 0.769066D-01
+ 21 22 23 24 25
+ 21 0.576210D+00
+ 22 0.873808D-03 0.249256D-01
+ 23 0.916288D-03 0.697463D-03 0.130737D+00
+ 24 0.905330D-03 0.134535D-02 0.125986D+00 0.279929D+00
+ 25 0.563012D-04 -0.405526D-02 0.821849D-05 0.375130D-04 0.253310D-01
+ 26 0.135837D-02 -0.149042D-04 0.977540D-03 -0.414818D-03 -0.626021D-03
+ 27 -0.289269D-04 0.187472D-04 0.410198D-03 0.815608D-03 0.122064D-02
+ 28 0.000000D+00 0.307583D-03 -0.393810D-04 -0.100518D-04 -0.394882D-02
+ 29 0.000000D+00 -0.490024D-05 -0.707816D-03 0.165482D-03 -0.134774D-04
+ 30 0.178026D-03 -0.113898D-04 -0.140440D-02 -0.530531D-05 0.996463D-05
+ 31 -0.563011D-04 -0.115541D-02 -0.174417D-05 0.133564D-04 0.253837D-03
+ 32 -0.135837D-02 -0.419168D-05 0.468042D-04 -0.107504D-03 0.755537D-05
+ 33 -0.289269D-04 -0.595164D-05 -0.101473D-03 -0.358716D-04 -0.841832D-05
+ 34 -0.873808D-03 0.284074D-03 0.420269D-04 0.258320D-04 -0.115541D-02
+ 35 -0.916288D-03 0.420269D-04 0.531839D-03 -0.775225D-03 -0.174417D-05
+ 36 0.905330D-03 -0.258321D-04 0.775225D-03 -0.114617D-02 -0.133563D-04
+ 37 0.000000D+00 -0.282609D-03 0.528732D-04 0.261323D-04 0.186024D-04
+ 38 0.000000D+00 0.668745D-03 0.725568D-04 0.327791D-03 0.159505D-04
+ 39 -0.448617D-01 -0.286712D-03 0.552190D-04 -0.102948D-03 -0.508742D-04
+ 40 -0.974046D-01 0.458342D-04 -0.211397D-03 0.379090D-03 -0.297274D-04
+ 41 -0.747011D-01 -0.397249D-03 0.452892D-04 0.112477D-02 -0.127691D-05
+ 42 -0.220817D+00 -0.548448D-03 -0.134129D-03 0.385882D-03 -0.403566D-04
+ 43 0.974046D-01 -0.293375D-04 0.316733D-04 0.146940D-03 -0.775151D-04
+ 44 0.747011D-01 -0.293836D-03 0.370757D-04 0.472567D-04 0.474254D-04
+ 45 -0.220817D+00 0.743547D-04 -0.169634D-03 0.424236D-03 0.933186D-05
+ 26 27 28 29 30
+ 26 0.130643D+00
+ 27 -0.127303D+00 0.282021D+00
+ 28 -0.869684D-05 0.211985D-04 0.251011D-01
+ 29 0.797200D-03 -0.333818D-03 -0.872447D-03 0.355321D+00
+ 30 0.572618D-03 0.948938D-03 0.000000D+00 0.000000D+00 0.578143D-01
+ 31 0.755542D-05 0.841820D-05 -0.394882D-02 -0.134775D-04 -0.996462D-05
+ 32 0.374350D-03 0.799017D-03 -0.869688D-05 0.797200D-03 -0.572618D-03
+ 33 -0.799017D-03 -0.106141D-02 -0.211986D-04 0.333819D-03 0.948938D-03
+ 34 -0.419174D-05 0.595174D-05 0.307583D-03 -0.490021D-05 0.113898D-04
+ 35 0.468042D-04 0.101473D-03 -0.393810D-04 -0.707816D-03 0.140440D-02
+ 36 0.107504D-03 -0.358716D-04 0.100519D-04 -0.165482D-03 -0.530526D-05
+ 37 0.452174D-04 -0.711763D-05 -0.101412D-03 0.249013D-04 0.000000D+00
+ 38 -0.115354D-03 0.557369D-04 0.183166D-03 -0.581207D-05 0.000000D+00
+ 39 0.112888D-04 -0.204685D-04 0.000000D+00 0.000000D+00 0.103351D-04
+ 40 -0.273356D-04 -0.211665D-05 0.308261D-05 0.132111D-04 0.223968D-04
+ 41 0.270962D-04 0.204729D-04 -0.622640D-04 0.419029D-05 0.872902D-04
+ 42 -0.657418D-04 0.100867D-04 -0.151605D-03 -0.428595D-04 0.478112D-04
+ 43 0.309734D-04 -0.816232D-05 0.308260D-05 0.132111D-04 -0.223968D-04
+ 44 -0.458665D-03 0.278391D-04 -0.622640D-04 0.419028D-05 -0.872902D-04
+ 45 0.606926D-04 -0.801032D-05 0.151605D-03 0.428594D-04 0.478111D-04
+ 31 32 33 34 35
+ 31 0.253310D-01
+ 32 -0.626021D-03 0.130643D+00
+ 33 -0.122064D-02 0.127303D+00 0.282021D+00
+ 34 -0.405526D-02 -0.149042D-04 -0.187472D-04 0.249256D-01
+ 35 0.821850D-05 0.977540D-03 -0.410198D-03 0.697463D-03 0.130737D+00
+ 36 -0.375130D-04 0.414817D-03 0.815608D-03 -0.134535D-02 -0.125986D+00
+ 37 0.186024D-04 0.452174D-04 0.711763D-05 -0.282609D-03 0.528732D-04
+ 38 0.159505D-04 -0.115354D-03 -0.557369D-04 0.668745D-03 0.725568D-04
+ 39 0.508742D-04 -0.112887D-04 -0.204685D-04 0.286712D-03 -0.552190D-04
+ 40 -0.775151D-04 0.309733D-04 0.816228D-05 -0.293376D-04 0.316734D-04
+ 41 0.474254D-04 -0.458666D-03 -0.278393D-04 -0.293836D-03 0.370757D-04
+ 42 -0.933190D-05 -0.606927D-04 -0.801044D-05 -0.743547D-04 0.169634D-03
+ 43 -0.297274D-04 -0.273356D-04 0.211665D-05 0.458342D-04 -0.211397D-03
+ 44 -0.127692D-05 0.270961D-04 -0.204731D-04 -0.397249D-03 0.452891D-04
+ 45 0.403566D-04 0.657419D-04 0.100868D-04 0.548448D-03 0.134129D-03
+ 36 37 38 39 40
+ 36 0.279929D+00
+ 37 -0.261323D-04 0.297979D+00
+ 38 -0.327791D-03 -0.864355D-01 0.799862D-01
+ 39 -0.102948D-03 0.000000D+00 0.000000D+00 0.447312D-01
+ 40 -0.146940D-03 -0.140045D-01 -0.112514D-01 -0.260999D-01 0.105335D+00
+ 41 -0.472565D-04 0.391457D-02 0.359469D-02 0.908400D-02 0.470999D-01
+ 42 0.424236D-03 0.274486D-03 0.962173D-03 0.575356D-03 0.107694D+00
+ 43 -0.379090D-03 -0.140045D-01 -0.112514D-01 0.260999D-01 0.757828D-02
+ 44 -0.112477D-02 0.391457D-02 0.359469D-02 -0.908400D-02 0.689872D-02
+ 45 0.385881D-03 -0.274486D-03 -0.962173D-03 0.575356D-03 0.126360D-01
+ 41 42 43 44 45
+ 41 0.902211D-01
+ 42 0.844356D-01 0.237854D+00
+ 43 0.689872D-02 -0.126360D-01 0.105335D+00
+ 44 0.418583D-02 -0.932679D-02 0.470999D-01 0.902211D-01
+ 45 0.932679D-02 -0.198654D-01 -0.107694D+00 -0.844356D-01 0.237854D+00
+ FrcOut:
+ IF = 1170 IFX = 1215 IFXYZ = 1260
+ IFFX = 1305 IFFFX = 2340 IFLen = 45
+ IFFLen= 1035 IFFFLn= 0 IEDerv= 2340
+ LEDerv= 2213 IFroze= 4557 ICStrt= 65616
+ DipoleDeriv =-7.60074130D-02-8.24838856D-02-1.79451297D-12
+ -2.29973654D-02 3.78541200D-01 1.45450464D-10
+ -1.42956295D-09-6.44231017D-09-8.28914427D-02
+ -1.27508880D-01 4.96610622D-03-2.64866666D-03
+ 3.17061545D-03-1.46901120D-01 7.07099057D-02
+ -2.94962162D-03 1.27624349D-01 6.99963646D-02
+ -1.29015754D-01 4.37882775D-03 4.58669640D-03
+ -1.35667627D-03 1.21237104D-02-5.38516466D-02
+ 4.67427402D-03-7.19884952D-02 9.77217452D-02
+ -1.41930425D-01 2.68804893D-03-6.54807424D-10
+ 2.29929351D-03 7.05211637D-02 6.01914700D-10
+ 2.18105023D-09 5.23525785D-09-1.07717782D-01
+ -1.29015754D-01 4.37882846D-03-4.58669481D-03
+ -1.35667371D-03 1.21237158D-02 5.38516476D-02
+ -4.67427543D-03 7.19884899D-02 9.77217437D-02
+ -1.27508881D-01 4.96610408D-03 2.64866639D-03
+ 3.17061586D-03-1.46901118D-01-7.07099082D-02
+ 2.94962320D-03-1.27624344D-01 6.99963679D-02
+ 1.30760329D-01 1.11012720D-01-8.90893071D-10
+ 5.88310391D-03-1.68559635D-02-3.03654437D-10
+ -2.16925315D-10 1.31061525D-09 1.26643549D-01
+ 1.22426472D-01-3.80198266D-03-2.93909614D-03
+ -1.79318732D-03 1.04720508D-02-9.56194086D-02
+ -2.72149073D-04-8.20803144D-02-6.68686825D-02
+ 1.28841439D-01-1.70199369D-03-3.08994506D-03
+ 2.45470918D-05 1.33319953D-02 8.04741060D-02
+ -9.87061239D-04 8.73755003D-02-7.47347303D-02
+ 1.33793729D-01-1.69554201D-04 1.75876571D-10
+ 4.85796308D-04-1.22859824D-01 1.10048007D-09
+ -2.54484872D-10 3.77536877D-10 6.87134379D-02
+ 1.28841440D-01-1.70199374D-03 3.08994415D-03
+ 2.45471092D-05 1.33319946D-02-8.04741070D-02
+ 9.87061504D-04-8.73755014D-02-7.47347315D-02
+ 1.22426473D-01-3.80198025D-03 2.93909694D-03
+ -1.79318720D-03 1.04720498D-02 9.56194085D-02
+ 2.72148555D-04 8.20803170D-02-6.68686826D-02
+ -1.06531614D-01 8.87094968D-02-2.64760947D-10
+ 4.43515016D-02-6.59609696D-02 5.50885288D-10
+ 2.91211290D-10 2.60573621D-10 8.24119621D-02
+ 3.52144197D-02-6.37193721D-02-7.23280600D-02
+ -1.50564659D-02-1.07194428D-02-1.58717398D-02
+ -8.21163367D-02-8.91493822D-02-6.96945590D-02
+ 3.52144201D-02-6.37193699D-02 7.23280604D-02
+ -1.50564650D-02-1.07194418D-02 1.58717402D-02
+ 8.21163362D-02 8.91493800D-02-6.96945593D-02
+ Full mass-weighted force constant matrix:
+ Low frequencies --- -3.7134 -0.0007 -0.0007 -0.0003 9.6655 20.3992
+ Low frequencies --- 29.4565 208.9848 343.4191
+ Dipole derivatives wrt mode 1: 4.21051D-09 6.99065D-09 -5.02339D-01
+ Vibrational polarizability contributions from mode 1 0.0000000 0.0000000 8.0648005
+ Vibrational hyperpolarizability contributions from mode 1 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 2: -1.51009D+00 -7.85327D-02 8.61709D-09
+ Vibrational polarizability contributions from mode 2 1.4051164 0.0038002 0.0000000
+ Vibrational hyperpolarizability contributions from mode 2 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 3: -1.50482D-08 4.53863D-09 -5.84504D-01
+ Vibrational polarizability contributions from mode 3 0.0000000 0.0000000 0.0779584
+ Vibrational hyperpolarizability contributions from mode 3 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 4: 2.70308D-08 -7.09127D-09 -7.94558D-02
+ Vibrational polarizability contributions from mode 4 0.0000000 0.0000000 0.0009874
+ Vibrational hyperpolarizability contributions from mode 4 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 5: -3.02541D+00 1.37144D-02 -5.34429D-09
+ Vibrational polarizability contributions from mode 5 1.0845857 0.0000223 0.0000000
+ Vibrational hyperpolarizability contributions from mode 5 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 6: 4.23776D-01 -6.72483D-01 5.77031D-09
+ Vibrational polarizability contributions from mode 6 0.0172472 0.0434320 0.0000000
+ Vibrational hyperpolarizability contributions from mode 6 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 7: 2.19915D-09 6.18892D-09 3.17412D-01
+ Vibrational polarizability contributions from mode 7 0.0000000 0.0000000 0.0066666
+ Vibrational hyperpolarizability contributions from mode 7 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 8: -5.22795D+00 7.71324D-02 -3.57877D-09
+ Vibrational polarizability contributions from mode 8 1.4447847 0.0003145 0.0000000
+ Vibrational hyperpolarizability contributions from mode 8 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 9: -6.66342D+00 -2.14034D-01 9.59308D-09
+ Vibrational polarizability contributions from mode 9 2.1556631 0.0022241 0.0000000
+ Vibrational hyperpolarizability contributions from mode 9 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 10: 5.93323D-01 -6.79209D-01 9.10841D-09
+ Vibrational polarizability contributions from mode 10 0.0148364 0.0194425 0.0000000
+ Vibrational hyperpolarizability contributions from mode 10 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 11: -7.80000D-08 -4.00414D-08 -1.24257D-01
+ Vibrational polarizability contributions from mode 11 0.0000000 0.0000000 0.0005696
+ Vibrational hyperpolarizability contributions from mode 11 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 12: 5.77482D-01 3.58955D-01 1.00296D-08
+ Vibrational polarizability contributions from mode 12 0.0108199 0.0041805 0.0000000
+ Vibrational hyperpolarizability contributions from mode 12 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 13: -7.10528D-08 -6.15708D-08 6.04886D-02
+ Vibrational polarizability contributions from mode 13 0.0000000 0.0000000 0.0001035
+ Vibrational hyperpolarizability contributions from mode 13 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 14: -7.83652D-02 -1.82474D-01 -6.27630D-09
+ Vibrational polarizability contributions from mode 14 0.0001655 0.0008974 0.0000000
+ Vibrational hyperpolarizability contributions from mode 14 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 15: -1.06937D-08 3.87339D-09 2.02886D-01
+ Vibrational polarizability contributions from mode 15 0.0000000 0.0000000 0.0011072
+ Vibrational hyperpolarizability contributions from mode 15 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 16: 2.25284D-01 -6.11953D-02 1.88849D-08
+ Vibrational polarizability contributions from mode 16 0.0013180 0.0000972 0.0000000
+ Vibrational hyperpolarizability contributions from mode 16 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 17: 1.04931D-01 1.68474D+00 7.26555D-10
+ Vibrational polarizability contributions from mode 17 0.0002679 0.0690541 0.0000000
+ Vibrational hyperpolarizability contributions from mode 17 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 18: -1.99048D+00 2.10170D+00 -2.97913D-08
+ Vibrational polarizability contributions from mode 18 0.0943744 0.1052149 0.0000000
+ Vibrational hyperpolarizability contributions from mode 18 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 19: 1.68662D-08 -3.20453D-08 -2.36712D+00
+ Vibrational polarizability contributions from mode 19 0.0000000 0.0000000 0.1220919
+ Vibrational hyperpolarizability contributions from mode 19 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 20: 1.63882D-09 1.70691D-08 -2.64181D-01
+ Vibrational polarizability contributions from mode 20 0.0000000 0.0000000 0.0013463
+ Vibrational hyperpolarizability contributions from mode 20 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 21: -7.11271D-03 -6.17327D-01 -4.63984D-09
+ Vibrational polarizability contributions from mode 21 0.0000009 0.0070836 0.0000000
+ Vibrational hyperpolarizability contributions from mode 21 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 22: -2.87485D-01 9.06768D-01 4.01721D-09
+ Vibrational polarizability contributions from mode 22 0.0014724 0.0146480 0.0000000
+ Vibrational hyperpolarizability contributions from mode 22 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 23: 6.70559D-09 -5.32801D-09 -2.50856D-01
+ Vibrational polarizability contributions from mode 23 0.0000000 0.0000000 0.0009603
+ Vibrational hyperpolarizability contributions from mode 23 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 24: 6.23872D-10 1.94578D-08 1.02919D-01
+ Vibrational polarizability contributions from mode 24 0.0000000 0.0000000 0.0001550
+ Vibrational hyperpolarizability contributions from mode 24 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 25: 1.60427D-01 -9.90450D-01 -2.95977D-09
+ Vibrational polarizability contributions from mode 25 0.0003460 0.0131869 0.0000000
+ Vibrational hyperpolarizability contributions from mode 25 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 26: 9.29475D-09 -4.58009D-08 -1.27397D-01
+ Vibrational polarizability contributions from mode 26 0.0000000 0.0000000 0.0002020
+ Vibrational hyperpolarizability contributions from mode 26 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 27: -2.59150D+00 -2.60759D-01 2.04703D-09
+ Vibrational polarizability contributions from mode 27 0.0812713 0.0008228 0.0000000
+ Vibrational hyperpolarizability contributions from mode 27 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 28: 6.17729D-09 4.35640D-08 3.76839D+00
+ Vibrational polarizability contributions from mode 28 0.0000000 0.0000000 0.1688762
+ Vibrational hyperpolarizability contributions from mode 28 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 29: 1.07807D-01 -3.93557D+00 2.92444D-08
+ Vibrational polarizability contributions from mode 29 0.0001336 0.1780569 0.0000000
+ Vibrational hyperpolarizability contributions from mode 29 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 30: 2.66399D-08 9.08470D-09 -6.30649D-01
+ Vibrational polarizability contributions from mode 30 0.0000000 0.0000000 0.0040436
+ Vibrational hyperpolarizability contributions from mode 30 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 31: -6.24335D-02 2.74266D+00 -6.22754D-09
+ Vibrational polarizability contributions from mode 31 0.0000386 0.0744530 0.0000000
+ Vibrational hyperpolarizability contributions from mode 31 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 32: -1.43537D+00 5.19616D+00 1.45439D-08
+ Vibrational polarizability contributions from mode 32 0.0060762 0.0796277 0.0000000
+ Vibrational hyperpolarizability contributions from mode 32 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 33: -4.37037D+00 -1.86976D+00 -1.27542D-08
+ Vibrational polarizability contributions from mode 33 0.0543567 0.0099492 0.0000000
+ Vibrational hyperpolarizability contributions from mode 33 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 34: 1.32633D-08 3.39539D-08 4.22924D+00
+ Vibrational polarizability contributions from mode 34 0.0000000 0.0000000 0.0500446
+ Vibrational hyperpolarizability contributions from mode 34 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 35: -4.37515D-02 -3.09081D+00 -1.80042D-06
+ Vibrational polarizability contributions from mode 35 0.0000052 0.0258752 0.0000000
+ Vibrational hyperpolarizability contributions from mode 35 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 36: 1.67325D-08 -2.23625D-06 2.51833D+00
+ Vibrational polarizability contributions from mode 36 0.0000000 0.0000000 0.0171601
+ Vibrational hyperpolarizability contributions from mode 36 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 37: -5.82842D-02 -2.89825D+00 1.00644D-07
+ Vibrational polarizability contributions from mode 37 0.0000091 0.0225476 0.0000000
+ Vibrational hyperpolarizability contributions from mode 37 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 38: 1.11255D-08 3.10416D-07 -6.47458D+00
+ Vibrational polarizability contributions from mode 38 0.0000000 0.0000000 0.1119303
+ Vibrational hyperpolarizability contributions from mode 38 0.0000000 0.0000000 0.0000000
+ Dipole derivatives wrt mode 39: 3.24092D-02 -4.10012D+00 -5.24947D-07
+ Vibrational polarizability contributions from mode 39 0.0000028 0.0445283 0.0000000
+ Vibrational hyperpolarizability contributions from mode 39 0.0000000 0.0000000 0.0000000
+ Diagonal vibrational polarizability:
+ 6.3728917 0.7194589 8.6290035
+ Harmonic frequencies (cm**-1), IR intensities (KM/Mole), Raman scattering
+ activities (A**4/AMU), depolarization ratios for plane and unpolarized
+ incident light, reduced masses (AMU), force constants (mDyne/A),
+ and normal coordinates:
+ 1 2 3 4 5
+ A" A' A" A" A'
+ Frequencies --- 29.0180 208.9845 343.4178 414.8143 476.5615
+ Reduced masses --- 1.0347 3.0098 2.5015 2.9090 2.7134
+ Force constants --- 0.0005 0.0774 0.1738 0.2949 0.3631
+ IR Intensities --- 0.2523 2.2865 0.3416 0.0063 9.1533
+ Coord Atom Element:
+ 1 1 6 0.00000 0.15553 0.00000 0.00000 0.28400
+ 2 1 6 0.00000 0.00054 0.00000 0.00000 -0.01173
+ 3 1 6 0.00556 0.00000 0.15332 0.00828 0.00000
+ 1 2 6 0.02409 0.18921 -0.00747 0.20819 -0.04217
+ 2 2 6 -0.00100 0.00229 -0.06088 -0.00190 0.00528
+ 3 2 6 0.00176 0.00077 0.12950 0.00617 0.00801
+ 1 3 6 0.02438 -0.01279 0.00919 -0.20727 -0.12633
+ 2 3 6 -0.00359 0.00244 -0.08125 -0.00448 0.00834
+ 3 3 6 -0.00031 0.00041 -0.01371 -0.00089 0.00696
+ 1 4 6 0.00000 -0.20177 0.00000 0.00000 0.19277
+ 2 4 6 0.00000 0.00295 0.00000 0.00000 0.01852
+ 3 4 6 0.00044 0.00000 -0.06565 -0.00292 0.00000
+ 1 5 6 -0.02438 -0.01279 -0.00919 0.20727 -0.12633
+ 2 5 6 0.00359 0.00244 0.08125 0.00448 0.00834
+ 3 5 6 -0.00031 -0.00041 -0.01371 -0.00089 -0.00696
+ 1 6 6 -0.02409 0.18921 0.00747 -0.20819 -0.04217
+ 2 6 6 0.00100 0.00229 0.06088 0.00190 0.00528
+ 3 6 6 0.00176 -0.00077 0.12950 0.00617 -0.00801
+ 1 7 6 0.00000 -0.21253 0.00000 0.00000 -0.01137
+ 2 7 6 0.00000 -0.00994 0.00000 0.00000 -0.02899
+ 3 7 6 -0.00515 0.00000 -0.23076 -0.01246 0.00000
+ 1 8 1 0.04323 0.24581 -0.01749 0.45374 -0.31775
+ 2 8 1 -0.00251 0.00367 -0.15219 -0.00649 0.01682
+ 3 8 1 0.00213 -0.00036 0.18219 0.00760 0.00290
+ 1 9 1 0.04363 -0.07614 0.01767 -0.45498 -0.39418
+ 2 9 1 -0.00436 0.00088 -0.17002 -0.00991 -0.00046
+ 3 9 1 -0.00088 -0.00015 -0.06367 -0.00272 0.00320
+ 1 10 1 0.00000 -0.44788 0.00000 0.00000 0.32737
+ 2 10 1 0.00000 0.00229 0.00000 0.00000 0.01893
+ 3 10 1 -0.00269 0.00000 -0.13822 -0.00581 0.00000
+ 1 11 1 -0.04363 -0.07614 -0.01767 0.45498 -0.39418
+ 2 11 1 0.00436 0.00088 0.17002 0.00991 -0.00046
+ 3 11 1 -0.00088 0.00015 -0.06367 -0.00272 -0.00320
+ 1 12 1 -0.04323 0.24581 0.01749 -0.45374 -0.31775
+ 2 12 1 0.00251 0.00367 0.15219 0.00649 0.01682
+ 3 12 1 0.00213 0.00036 0.18219 0.00760 -0.00290
+ 1 13 1 0.00000 -0.32640 0.00000 0.00000 -0.13245
+ 2 13 1 0.00000 -0.32431 0.00000 0.00000 -0.36108
+ 3 13 1 -0.59005 0.00000 -0.35205 -0.01317 0.00000
+ 1 14 1 -0.49646 -0.34251 0.02839 -0.00026 -0.14988
+ 2 14 1 -0.00562 0.13862 0.33113 0.00801 0.12471
+ 3 14 1 0.27274 0.00395 -0.40019 -0.01599 0.00517
+ 1 15 1 0.49646 -0.34251 -0.02839 0.00026 -0.14988
+ 2 15 1 0.00562 0.13862 -0.33113 -0.00801 0.12471
+ 3 15 1 0.27274 -0.00395 -0.40019 -0.01599 -0.00517
+ 6 7 8 9 10
+ A' A" A' A' A'
+ Frequencies --- 529.3504 637.7320 713.5041 744.5144 799.0852
+ Reduced masses --- 5.0128 6.3693 2.0499 1.4796 4.5130
+ Force constants --- 0.8276 1.5262 0.6149 0.4832 1.6979
+ IR Intensities --- 0.6318 0.1008 27.3374 44.4469 0.8134
+ Coord Atom Element:
+ 1 1 6 -0.03883 0.00000 0.11045 -0.11931 0.02821
+ 2 1 6 -0.21551 0.00000 -0.00048 -0.00764 -0.05464
+ 3 1 6 0.00000 0.13637 0.00000 0.00000 0.00000
+ 1 2 6 -0.00249 -0.00027 -0.09746 0.08917 -0.00800
+ 2 2 6 0.05378 0.23980 0.00046 -0.00368 -0.08034
+ 3 2 6 0.12915 0.20006 0.00003 0.00786 0.18320
+ 1 3 6 0.01539 -0.00003 0.16213 -0.00098 -0.00095
+ 2 3 6 0.10925 0.25939 0.00073 -0.00401 -0.12768
+ 3 3 6 0.11899 -0.24241 -0.00095 0.01055 0.21930
+ 1 4 6 -0.02433 0.00000 -0.10345 0.10708 -0.01754
+ 2 4 6 0.29430 0.00000 -0.00035 0.01139 0.16631
+ 3 4 6 0.00000 -0.13862 0.00000 0.00000 0.00000
+ 1 5 6 0.01539 0.00003 0.16213 -0.00098 -0.00095
+ 2 5 6 0.10925 -0.25939 0.00073 -0.00401 -0.12768
+ 3 5 6 -0.11899 -0.24241 0.00095 -0.01055 -0.21930
+ 1 6 6 -0.00249 0.00027 -0.09746 0.08917 -0.00800
+ 2 6 6 0.05378 -0.23980 0.00046 -0.00368 -0.08034
+ 3 6 6 -0.12915 0.20006 -0.00003 -0.00786 -0.18320
+ 1 7 6 0.01334 0.00000 0.01813 -0.02537 -0.01032
+ 2 7 6 -0.37040 0.00000 -0.00073 0.00867 0.27941
+ 3 7 6 0.00000 0.05297 0.00000 0.00000 0.00000
+ 1 8 1 0.04530 -0.00111 -0.51623 -0.17484 -0.00062
+ 2 8 1 0.24369 0.10081 0.00035 0.00418 0.00852
+ 3 8 1 0.01703 0.27754 0.00231 0.00498 0.14084
+ 1 9 1 0.06906 0.00167 -0.08584 -0.54044 0.07293
+ 2 9 1 -0.04446 0.11833 0.00098 -0.01669 -0.39488
+ 3 9 1 0.02943 -0.32246 0.00038 0.00603 0.07212
+ 1 10 1 -0.01903 0.00000 -0.58637 -0.45763 0.08078
+ 2 10 1 0.29477 0.00000 -0.00165 0.00972 0.16132
+ 3 10 1 0.00000 0.29647 0.00000 0.00000 0.00000
+ 1 11 1 0.06906 -0.00167 -0.08584 -0.54044 0.07293
+ 2 11 1 -0.04446 -0.11833 0.00098 -0.01669 -0.39488
+ 3 11 1 -0.02943 -0.32246 -0.00038 -0.00603 -0.07212
+ 1 12 1 0.04530 0.00111 -0.51623 -0.17484 -0.00062
+ 2 12 1 0.24369 -0.10081 0.00035 0.00418 0.00852
+ 3 12 1 -0.01703 0.27754 -0.00231 -0.00498 -0.14084
+ 1 13 1 0.02577 0.00000 -0.01694 0.06296 -0.00645
+ 2 13 1 -0.33152 0.00000 -0.09587 0.25001 0.29011
+ 3 13 1 0.00000 0.06003 0.00000 0.00000 0.00000
+ 1 14 1 0.02519 -0.01106 -0.01587 0.08635 -0.00499
+ 2 14 1 -0.38593 -0.01786 0.04260 -0.09978 0.30931
+ 3 14 1 -0.00147 0.06897 -0.00255 -0.01163 -0.01128
+ 1 15 1 0.02519 0.01106 -0.01587 0.08635 -0.00499
+ 2 15 1 -0.38593 0.01786 0.04260 -0.09978 0.30931
+ 3 15 1 0.00147 0.06897 0.00255 0.01163 0.01128
+ 11 12 13 14 15
+ A" A' A" A' A"
+ Frequencies --- 854.0671 910.7383 975.2450 999.2774 1000.2226
+ Reduced masses --- 1.2496 1.3053 1.3668 1.2787 1.4353
+ Force constants --- 0.5371 0.6379 0.7659 0.7523 0.8460
+ IR Intensities --- 0.0154 0.4623 0.0037 0.0394 0.0412
+ Coord Atom Element:
+ 1 1 6 0.00000 0.01560 0.00000 0.01145 0.00000
+ 2 1 6 0.00000 0.00187 0.00000 -0.00029 0.00000
+ 3 1 6 -0.00095 0.00000 -0.00100 0.00000 0.05612
+ 1 2 6 -0.07708 -0.08816 -0.08740 0.03196 -0.00325
+ 2 2 6 -0.00045 0.00008 0.00008 -0.00166 -0.01848
+ 3 2 6 0.00183 0.00472 0.00168 -0.00397 -0.06839
+ 1 3 6 -0.07102 0.01112 0.09316 -0.08127 -0.00093
+ 2 3 6 -0.00034 -0.00224 -0.00027 -0.00005 0.03014
+ 3 3 6 0.00075 0.00256 0.00012 0.00011 -0.02996
+ 1 4 6 0.00000 0.09998 0.00000 0.09541 0.00000
+ 2 4 6 0.00000 -0.00009 0.00000 0.00395 0.00000
+ 3 4 6 -0.00097 0.00000 -0.00077 0.00000 0.04213
+ 1 5 6 0.07102 0.01112 -0.09316 -0.08127 0.00093
+ 2 5 6 0.00034 -0.00224 0.00027 -0.00005 -0.03014
+ 3 5 6 0.00075 -0.00256 0.00012 -0.00011 -0.02996
+ 1 6 6 0.07708 -0.08816 0.08740 0.03196 0.00325
+ 2 6 6 0.00045 0.00008 -0.00008 -0.00166 0.01848
+ 3 6 6 0.00183 -0.00472 0.00168 0.00397 -0.06839
+ 1 7 6 0.00000 0.03072 0.00000 -0.00993 0.00000
+ 2 7 6 0.00000 0.00431 0.00000 -0.00049 0.00000
+ 3 7 6 -0.00455 0.00000 -0.00382 0.00000 0.14244
+ 1 8 1 0.51182 0.52181 0.47165 -0.24313 0.02638
+ 2 8 1 -0.00113 -0.00329 -0.00089 -0.00051 -0.03596
+ 3 8 1 -0.00076 0.00351 -0.00057 -0.00336 -0.06438
+ 1 9 1 0.47620 -0.08316 -0.51082 0.50970 -0.00211
+ 2 9 1 -0.00144 -0.00552 -0.00160 0.00020 0.13570
+ 3 9 1 -0.00246 0.00140 0.00231 -0.00279 0.02642
+ 1 10 1 0.00000 -0.58435 0.00000 -0.57574 0.00000
+ 2 10 1 0.00000 -0.00199 0.00000 0.00233 0.00000
+ 3 10 1 -0.00178 0.00000 -0.00235 0.00000 0.17566
+ 1 11 1 -0.47620 -0.08316 0.51083 0.50970 0.00211
+ 2 11 1 0.00144 -0.00552 0.00160 0.00020 -0.13570
+ 3 11 1 -0.00246 -0.00140 0.00231 0.00279 0.02642
+ 1 12 1 -0.51182 0.52181 -0.47165 -0.24313 -0.02638
+ 2 12 1 0.00113 -0.00329 0.00089 -0.00051 0.03596
+ 3 12 1 -0.00076 -0.00351 -0.00057 0.00336 -0.06438
+ 1 13 1 0.00000 -0.04397 0.00000 0.01055 0.00000
+ 2 13 1 0.00000 -0.19748 0.00000 0.05474 0.00000
+ 3 13 1 0.01364 0.00000 0.01164 0.00000 -0.27626
+ 1 14 1 -0.00451 -0.07820 -0.00339 0.02614 0.05010
+ 2 14 1 -0.01113 0.09806 -0.01246 -0.02679 0.60749
+ 3 14 1 0.00501 0.01664 0.00537 -0.00782 -0.17368
+ 1 15 1 0.00451 -0.07820 0.00339 0.02614 -0.05010
+ 2 15 1 0.01113 0.09806 0.01246 -0.02679 -0.60749
+ 3 15 1 0.00501 -0.01664 0.00537 0.00782 -0.17368
+ 16 17 18 19 20
+ A' A' A' A" A"
+ Frequencies --- 1017.9931 1051.7339 1062.9136 1111.3321 1181.1505
+ Reduced masses --- 6.1833 2.2099 1.5504 1.4599 1.1120
+ Force constants --- 3.7753 1.4402 1.0320 1.0623 0.9141
+ IR Intensities --- 0.0545 2.8494 8.3792 5.6033 0.0698
+ Coord Atom Element:
+ 1 1 6 0.02848 0.00961 -0.14402 0.00000 0.00000
+ 2 1 6 0.01881 0.02968 0.00210 0.00000 0.00000
+ 3 1 6 0.00000 0.00000 0.00000 -0.02955 0.00007
+ 1 2 6 -0.01278 -0.00335 0.04272 -0.00084 -0.00049
+ 2 2 6 -0.19276 0.04931 -0.00652 0.10088 0.00614
+ 3 2 6 -0.34494 -0.07135 -0.01653 0.02295 -0.00902
+ 1 3 6 0.00521 0.00056 -0.00427 -0.00020 0.00026
+ 2 3 6 -0.02401 -0.02792 -0.00502 -0.05160 -0.04180
+ 3 3 6 0.04846 0.18957 0.01398 0.04784 -0.02444
+ 1 4 6 -0.00271 -0.00003 -0.00320 0.00000 0.00000
+ 2 4 6 0.38736 -0.13850 0.01141 0.00000 0.00000
+ 3 4 6 0.00000 0.00000 0.00000 -0.07379 0.06740
+ 1 5 6 0.00521 0.00056 -0.00427 0.00020 -0.00026
+ 2 5 6 -0.02401 -0.02792 -0.00502 0.05160 0.04180
+ 3 5 6 -0.04846 -0.18957 -0.01398 0.04784 -0.02444
+ 1 6 6 -0.01278 -0.00335 0.04272 0.00084 0.00049
+ 2 6 6 -0.19276 0.04931 -0.00652 -0.10088 -0.00614
+ 3 6 6 0.34494 0.07135 0.01653 0.02295 -0.00902
+ 1 7 6 -0.02510 -0.01018 0.15374 0.00000 0.00000
+ 2 7 6 0.02149 -0.02437 0.00896 0.00000 0.00000
+ 3 7 6 0.00000 0.00000 0.00000 0.05917 -0.00332
+ 1 8 1 0.05493 0.01158 -0.16947 0.00423 -0.00035
+ 2 8 1 -0.16493 0.35251 0.00597 0.46221 0.14313
+ 3 8 1 -0.37610 -0.23989 -0.02284 -0.17769 -0.08748
+ 1 9 1 -0.02219 0.00163 0.00050 -0.00020 -0.00040
+ 2 9 1 -0.00850 0.30665 0.01128 -0.23398 -0.42257
+ 3 9 1 0.03728 0.39229 0.02317 -0.04942 -0.24126
+ 1 10 1 0.01306 -0.00391 0.02003 0.00000 0.00000
+ 2 10 1 0.40137 -0.15431 0.01144 0.00000 0.00000
+ 3 10 1 0.00000 0.00000 0.00000 -0.51653 0.67838
+ 1 11 1 -0.02219 0.00163 0.00050 0.00020 0.00040
+ 2 11 1 -0.00850 0.30665 0.01128 0.23398 0.42257
+ 3 11 1 -0.03728 -0.39229 -0.02317 -0.04942 -0.24126
+ 1 12 1 0.05493 0.01158 -0.16947 -0.00423 0.00035
+ 2 12 1 -0.16493 0.35251 0.00597 -0.46221 -0.14313
+ 3 12 1 0.37610 0.23989 0.02284 -0.17769 -0.08748
+ 1 13 1 0.01191 0.00665 -0.11397 0.00000 0.00000
+ 2 13 1 0.11178 0.01851 -0.69812 0.00000 0.00000
+ 3 13 1 0.00000 0.00000 0.00000 -0.09690 0.00726
+ 1 14 1 0.04090 0.02232 -0.28073 0.02688 0.00200
+ 2 14 1 -0.04809 -0.05305 0.32983 0.18992 -0.01458
+ 3 14 1 -0.00463 -0.00524 0.08563 -0.04617 0.00242
+ 1 15 1 0.04090 0.02232 -0.28073 -0.02688 -0.00200
+ 2 15 1 -0.04809 -0.05305 0.32983 -0.18992 0.01458
+ 3 15 1 0.00463 0.00524 -0.08563 -0.04617 0.00242
+ 21 22 23 24 25
+ A' A' A" A" A'
+ Frequencies --- 1203.2474 1229.0627 1327.9709 1356.1568 1414.9087
+ Reduced masses --- 1.1372 3.0065 5.0295 1.3919 1.2487
+ Force constants --- 0.9700 2.6759 5.2258 1.5083 1.4729
+ IR Intensities --- 0.3811 0.9049 0.0629 0.0106 1.0067
+ Coord Atom Element:
+ 1 1 6 -0.00078 -0.00383 0.00000 0.00000 -0.00265
+ 2 1 6 0.00409 0.35789 0.00000 0.00000 -0.02495
+ 3 1 6 0.00000 0.00000 0.34328 -0.06689 0.00000
+ 1 2 6 -0.00025 0.00105 -0.00182 -0.00054 0.00055
+ 2 2 6 0.04898 0.05434 0.16805 0.09509 -0.00288
+ 3 2 6 -0.02801 -0.00135 -0.12161 -0.03219 0.00343
+ 1 3 6 0.00027 0.00059 0.00020 -0.00012 0.00008
+ 2 3 6 -0.04500 -0.08651 -0.19760 -0.01239 0.00498
+ 3 3 6 -0.02524 0.07829 -0.13170 0.00942 -0.00396
+ 1 4 6 0.00017 -0.00017 0.00000 0.00000 0.00010
+ 2 4 6 -0.00647 0.02594 0.00000 0.00000 -0.00162
+ 3 4 6 0.00000 0.00000 0.20691 0.09396 0.00000
+ 1 5 6 0.00027 0.00059 -0.00020 0.00012 0.00008
+ 2 5 6 -0.04500 -0.08651 0.19760 0.01239 0.00498
+ 3 5 6 0.02524 -0.07829 -0.13170 0.00942 0.00396
+ 1 6 6 -0.00025 0.00105 0.00182 0.00054 0.00055
+ 2 6 6 0.04898 0.05434 -0.16805 -0.09509 -0.00288
+ 3 6 6 0.02801 0.00135 -0.12161 -0.03219 -0.00343
+ 1 7 6 0.00007 0.00411 0.00000 0.00000 -0.01389
+ 2 7 6 -0.00399 -0.14109 0.00000 0.00000 0.14480
+ 3 7 6 0.00000 0.00000 -0.07978 0.03162 0.00000
+ 1 8 1 0.00028 -0.00859 -0.00444 0.00311 0.00113
+ 2 8 1 0.43152 -0.36580 0.11541 -0.47903 0.02203
+ 3 8 1 -0.24610 0.25689 -0.09215 0.29702 -0.00833
+ 1 9 1 -0.00179 -0.00280 0.00360 0.00002 -0.00137
+ 2 9 1 -0.43242 -0.32861 0.38158 -0.28610 0.01476
+ 3 9 1 -0.24537 -0.04959 0.19434 -0.14354 0.00158
+ 1 10 1 -0.00015 -0.00085 0.00000 0.00000 -0.00001
+ 2 10 1 -0.00703 0.01933 0.00000 0.00000 -0.00120
+ 3 10 1 0.00000 0.00000 -0.19802 -0.32686 0.00000
+ 1 11 1 -0.00179 -0.00280 -0.00360 -0.00002 -0.00137
+ 2 11 1 -0.43242 -0.32861 -0.38158 0.28610 0.01476
+ 3 11 1 0.24537 0.04959 0.19434 -0.14354 -0.00158
+ 1 12 1 0.00028 -0.00859 0.00444 -0.00311 0.00113
+ 2 12 1 0.43152 -0.36580 -0.11541 0.47903 0.02203
+ 3 12 1 0.24610 -0.25689 -0.09215 0.29702 0.00833
+ 1 13 1 -0.00159 -0.02102 0.00000 0.00000 -0.24300
+ 2 13 1 -0.01127 -0.21510 0.00000 0.00000 -0.56312
+ 3 13 1 0.00000 0.00000 0.27583 -0.09430 0.00000
+ 1 14 1 0.00543 0.00216 -0.08811 0.04255 0.21207
+ 2 14 1 0.00061 -0.26987 -0.20222 0.04735 -0.48350
+ 3 14 1 -0.00499 0.04883 0.07447 -0.02120 0.14645
+ 1 15 1 0.00543 0.00216 0.08811 -0.04255 0.21207
+ 2 15 1 0.00061 -0.26987 0.20222 -0.04735 -0.48350
+ 3 15 1 0.00499 -0.04883 0.07447 -0.02120 -0.14645
+ 26 27 28 29 30
+ A" A' A" A' A"
+ Frequencies --- 1470.4937 1491.2445 1504.3132 1530.0119 1626.9342
+ Reduced masses --- 1.5804 1.0494 1.3005 2.2712 5.3136
+ Force constants --- 2.0135 1.3749 1.7340 3.1325 8.2866
+ IR Intensities --- 0.0162 6.7839 14.2008 15.5003 0.3977
+ Coord Atom Element:
+ 1 1 6 0.00000 0.01818 0.00000 0.00162 0.00000
+ 2 1 6 0.00000 -0.00531 0.00000 -0.14760 0.00000
+ 3 1 6 0.09643 0.00000 -0.07960 0.00000 -0.29851
+ 1 2 6 0.00086 -0.00200 0.00107 -0.00045 0.00086
+ 2 2 6 -0.05960 -0.00542 0.05132 0.06749 -0.09396
+ 3 2 6 -0.04219 0.00351 0.01526 -0.09988 0.18396
+ 1 3 6 0.00034 -0.00002 0.00022 0.00005 -0.00047
+ 2 3 6 0.10620 0.00324 -0.05742 0.11765 -0.07222
+ 3 3 6 0.00735 -0.00219 0.01905 0.10832 -0.20200
+ 1 4 6 0.00000 0.00008 0.00000 0.00002 0.00000
+ 2 4 6 0.00000 -0.00129 0.00000 -0.10895 0.00000
+ 3 4 6 0.07301 0.00000 -0.07999 0.00000 0.35316
+ 1 5 6 -0.00034 -0.00002 -0.00022 0.00005 0.00047
+ 2 5 6 -0.10620 0.00324 0.05742 0.11765 0.07222
+ 3 5 6 0.00735 0.00219 0.01905 -0.10832 -0.20200
+ 1 6 6 -0.00086 -0.00200 -0.00107 -0.00045 -0.00086
+ 2 6 6 0.05960 -0.00542 -0.05132 0.06749 0.09396
+ 3 6 6 -0.04219 -0.00351 0.01526 0.09988 0.18396
+ 1 7 6 0.00000 0.05260 0.00000 0.00090 0.00000
+ 2 7 6 0.00000 0.02307 0.00000 0.03254 0.00000
+ 3 7 6 -0.06427 0.00000 -0.02895 0.00000 0.02216
+ 1 8 1 -0.00566 0.00047 -0.00471 0.00265 -0.00105
+ 2 8 1 0.05351 0.02601 -0.09666 -0.41362 0.28408
+ 3 8 1 -0.11971 -0.01279 0.10816 0.15779 -0.02381
+ 1 9 1 -0.00161 0.00294 -0.00054 0.00003 -0.00041
+ 2 9 1 -0.24430 0.00506 0.09706 -0.44265 0.24245
+ 3 9 1 -0.20422 -0.00167 0.11781 -0.19929 -0.04349
+ 1 10 1 0.00000 -0.00279 0.00000 0.00074 0.00000
+ 2 10 1 0.00000 -0.00085 0.00000 -0.13179 0.00000
+ 3 10 1 -0.42972 0.00000 0.30105 0.00000 -0.46446
+ 1 11 1 0.00161 0.00294 0.00054 0.00003 0.00041
+ 2 11 1 0.24430 0.00506 -0.09706 -0.44265 -0.24245
+ 3 11 1 -0.20422 0.00167 0.11781 0.19929 -0.04349
+ 1 12 1 0.00566 0.00047 0.00471 0.00265 0.00105
+ 2 12 1 -0.05351 0.02601 0.09666 -0.41362 -0.28408
+ 3 12 1 -0.11971 0.01279 0.10816 -0.15779 -0.02381
+ 1 13 1 0.00000 0.12914 0.00000 0.00575 0.00000
+ 2 13 1 0.00000 0.30303 0.00000 0.04330 0.00000
+ 3 13 1 0.54900 0.00000 0.60207 0.00000 0.13796
+ 1 14 1 -0.29466 -0.46426 -0.34168 -0.01622 -0.09459
+ 2 14 1 0.15061 -0.25433 0.31256 0.02972 0.18904
+ 3 14 1 0.05295 0.40343 0.03643 0.01015 -0.01187
+ 1 15 1 0.29466 -0.46426 0.34168 -0.01622 0.09459
+ 2 15 1 -0.15061 -0.25433 -0.31256 0.02972 -0.18904
+ 3 15 1 0.05295 -0.40343 0.03643 -0.01015 -0.01187
+ 31 32 33 34 35
+ A' A' A' A" A'
+ Frequencies --- 1648.9136 3020.7627 3075.0953 3101.3453 3152.0818
+ Reduced masses --- 5.6539 1.0407 1.0943 1.1023 1.0858
+ Force constants --- 9.0572 5.5953 6.0971 6.2467 6.3560
+ IR Intensities --- 7.5261 29.0603 22.5962 17.8865 9.5550
+ Coord Atom Element:
+ 1 1 6 -0.00341 -0.00002 -0.00062 0.00000 -0.00005
+ 2 1 6 0.22860 -0.00038 0.00109 0.00000 -0.00288
+ 3 1 6 0.00000 0.00000 0.00000 0.00132 0.00000
+ 1 2 6 0.00067 0.00001 0.00008 -0.00026 -0.00022
+ 2 2 6 -0.29774 -0.00091 0.00070 -0.00155 -0.02181
+ 3 2 6 0.08735 -0.00038 0.00108 -0.00242 -0.04080
+ 1 3 6 0.00000 -0.00005 0.00007 -0.00005 0.00015
+ 2 3 6 0.27199 0.00033 0.00005 0.00015 -0.01567
+ 3 3 6 0.07044 -0.00016 0.00010 0.00045 0.02955
+ 1 4 6 0.00053 -0.00001 0.00001 0.00000 -0.00006
+ 2 4 6 -0.13773 0.00006 -0.00003 0.00000 0.02371
+ 3 4 6 0.00000 0.00000 0.00000 -0.00024 0.00000
+ 1 5 6 0.00000 -0.00005 0.00007 0.00005 0.00015
+ 2 5 6 0.27199 0.00033 0.00005 -0.00015 -0.01567
+ 3 5 6 -0.07044 0.00016 -0.00010 0.00045 -0.02955
+ 1 6 6 0.00067 0.00001 0.00008 0.00026 -0.00022
+ 2 6 6 -0.29774 -0.00091 0.00070 0.00155 -0.02181
+ 3 6 6 -0.08735 0.00038 -0.00108 -0.00242 0.04080
+ 1 7 6 -0.00140 -0.02846 -0.08668 0.00000 -0.00111
+ 2 7 6 -0.03146 0.04672 -0.01879 0.00000 -0.00077
+ 3 7 6 0.00000 0.00000 0.00000 0.09261 0.00000
+ 1 8 1 -0.00378 0.00023 -0.00140 0.00117 0.00259
+ 2 8 1 0.30934 0.00617 -0.00770 0.01674 0.26616
+ 3 8 1 -0.26237 0.00876 -0.01212 0.02489 0.47061
+ 1 9 1 -0.00168 0.00014 -0.00014 0.00002 -0.00165
+ 2 9 1 -0.23726 -0.00002 -0.00053 0.00286 0.19773
+ 3 9 1 -0.22923 0.00090 0.00046 -0.00521 -0.35060
+ 1 10 1 -0.00178 0.00011 -0.00054 0.00000 0.00066
+ 2 10 1 -0.15301 -0.00152 0.00006 0.00000 -0.28952
+ 3 10 1 0.00000 0.00000 0.00000 -0.00037 0.00000
+ 1 11 1 -0.00168 0.00014 -0.00014 -0.00002 -0.00165
+ 2 11 1 -0.23726 -0.00002 -0.00053 -0.00286 0.19773
+ 3 11 1 0.22923 -0.00090 -0.00046 -0.00521 0.35060
+ 1 12 1 -0.00378 0.00023 -0.00140 -0.00117 0.00259
+ 2 12 1 0.30934 0.00617 -0.00770 -0.01674 0.26615
+ 3 12 1 0.26237 -0.00876 0.01212 0.02489 -0.47061
+ 1 13 1 -0.01533 0.74909 0.55759 0.00000 0.00064
+ 2 13 1 -0.05718 -0.25155 -0.20281 0.00000 0.00087
+ 3 13 1 0.00000 0.00000 0.00000 0.02347 0.00000
+ 1 14 1 0.03156 -0.20495 0.24086 -0.32747 0.00646
+ 2 14 1 -0.01400 -0.14894 0.20634 -0.25967 0.00718
+ 3 14 1 -0.02503 -0.34928 0.46824 -0.56553 0.01057
+ 1 15 1 0.03156 -0.20495 0.24086 0.32747 0.00646
+ 2 15 1 -0.01400 -0.14894 0.20634 0.25967 0.00718
+ 3 15 1 0.02503 0.34928 -0.46824 -0.56553 -0.01057
+ 36 37 38 39
+ A" A' A" A'
+ Frequencies --- 3153.6911 3166.2991 3174.7135 3187.4638
+ Reduced masses --- 1.0876 1.0899 1.0939 1.0980
+ Force constants --- 6.3731 6.4377 6.4957 6.5730
+ IR Intensities --- 6.3420 8.4032 41.9202 16.8120
+ Coord Atom Element:
+ 1 1 6 0.00000 -0.00002 0.00000 0.00002
+ 2 1 6 0.00000 -0.00236 0.00000 0.00112
+ 3 1 6 -0.00200 0.00000 0.00211 0.00000
+ 1 2 6 0.00023 -0.00017 -0.00011 0.00007
+ 2 2 6 0.02698 -0.01830 -0.01497 0.00926
+ 3 2 6 0.04780 -0.03209 -0.02224 0.01290
+ 1 3 6 -0.00011 -0.00010 -0.00022 0.00017
+ 2 3 6 0.01096 0.01619 0.02896 -0.01991
+ 3 3 6 -0.02204 -0.02319 -0.04844 0.03867
+ 1 4 6 0.00000 0.00014 0.00000 0.00015
+ 2 4 6 0.00000 -0.05594 0.00000 -0.06259
+ 3 4 6 0.00049 0.00000 0.00389 0.00000
+ 1 5 6 0.00011 -0.00010 0.00022 0.00017
+ 2 5 6 -0.01096 0.01619 -0.02896 -0.01991
+ 3 5 6 -0.02204 0.02319 -0.04844 -0.03867
+ 1 6 6 -0.00023 -0.00017 0.00011 0.00007
+ 2 6 6 -0.02698 -0.01830 0.01497 0.00926
+ 3 6 6 0.04780 0.03209 -0.02224 -0.01290
+ 1 7 6 0.00000 -0.00082 0.00000 0.00022
+ 2 7 6 0.00000 -0.00056 0.00000 0.00033
+ 3 7 6 0.00381 0.00000 -0.00112 0.00000
+ 1 8 1 -0.00285 0.00200 0.00132 -0.00082
+ 2 8 1 -0.31582 0.20626 0.14798 -0.08578
+ 3 8 1 -0.55524 0.36213 0.25438 -0.14560
+ 1 9 1 0.00123 0.00139 0.00268 -0.00201
+ 2 9 1 -0.14451 -0.16512 -0.31796 0.23350
+ 3 9 1 0.25801 0.28285 0.55525 -0.41570
+ 1 10 1 0.00000 -0.00180 0.00000 -0.00183
+ 2 10 1 0.00000 0.65604 0.00000 0.69278
+ 3 10 1 -0.00056 0.00000 -0.00551 0.00000
+ 1 11 1 -0.00123 0.00139 -0.00268 -0.00201
+ 2 11 1 0.14451 -0.16512 0.31796 0.23350
+ 3 11 1 0.25801 -0.28285 0.55525 0.41570
+ 1 12 1 0.00285 0.00200 -0.00132 -0.00082
+ 2 12 1 0.31582 0.20626 -0.14798 -0.08578
+ 3 12 1 -0.55524 -0.36213 0.25438 0.14560
+ 1 13 1 0.00000 0.00016 0.00000 0.00172
+ 2 13 1 0.00000 0.00129 0.00000 -0.00124
+ 3 13 1 0.00130 0.00000 -0.00055 0.00000
+ 1 14 1 -0.01340 0.00484 0.00336 -0.00220
+ 2 14 1 -0.01160 0.00570 0.00261 -0.00266
+ 3 14 1 -0.02357 0.00767 0.00589 -0.00386
+ 1 15 1 0.01340 0.00484 -0.00336 -0.00220
+ 2 15 1 0.01160 0.00570 -0.00261 -0.00266
+ 3 15 1 -0.02357 -0.00767 0.00589 0.00386
+ Harmonic frequencies (cm**-1), IR intensities (KM/Mole), Raman scattering
+ activities (A**4/AMU), depolarization ratios for plane and unpolarized
+ incident light, reduced masses (AMU), force constants (mDyne/A),
+ and normal coordinates:
+ 1 2 3
+ A" A' A"
+ Frequencies -- 29.0180 208.9845 343.4178
+ Red. masses -- 1.0347 3.0098 2.5015
+ Frc consts -- 0.0005 0.0774 0.1738
+ IR Inten -- 0.2523 2.2865 0.3416
+ Atom AN X Y Z X Y Z X Y Z
+ 1 6 0.00 0.00 0.01 0.16 0.00 0.00 0.00 0.00 0.15
+ 2 6 0.02 0.00 0.00 0.19 0.00 0.00 -0.01 -0.06 0.13
+ 3 6 0.02 0.00 0.00 -0.01 0.00 0.00 0.01 -0.08 -0.01
+ 4 6 0.00 0.00 0.00 -0.20 0.00 0.00 0.00 0.00 -0.07
+ 5 6 -0.02 0.00 0.00 -0.01 0.00 0.00 -0.01 0.08 -0.01
+ 6 6 -0.02 0.00 0.00 0.19 0.00 0.00 0.01 0.06 0.13
+ 7 6 0.00 0.00 -0.01 -0.21 -0.01 0.00 0.00 0.00 -0.23
+ 8 1 0.04 0.00 0.00 0.25 0.00 0.00 -0.02 -0.15 0.18
+ 9 1 0.04 0.00 0.00 -0.08 0.00 0.00 0.02 -0.17 -0.06
+ 10 1 0.00 0.00 0.00 -0.45 0.00 0.00 0.00 0.00 -0.14
+ 11 1 -0.04 0.00 0.00 -0.08 0.00 0.00 -0.02 0.17 -0.06
+ 12 1 -0.04 0.00 0.00 0.25 0.00 0.00 0.02 0.15 0.18
+ 13 1 0.00 0.00 -0.59 -0.33 -0.32 0.00 0.00 0.00 -0.35
+ 14 1 -0.50 -0.01 0.27 -0.34 0.14 0.00 0.03 0.33 -0.40
+ 15 1 0.50 0.01 0.27 -0.34 0.14 0.00 -0.03 -0.33 -0.40
+ 4 5 6
+ A" A' A'
+ Frequencies -- 414.8143 476.5615 529.3504
+ Red. masses -- 2.9090 2.7134 5.0128
+ Frc consts -- 0.2949 0.3631 0.8276
+ IR Inten -- 0.0063 9.1533 0.6318
+ Atom AN X Y Z X Y Z X Y Z
+ 1 6 0.00 0.00 0.01 0.28 -0.01 0.00 -0.04 -0.22 0.00
+ 2 6 0.21 0.00 0.01 -0.04 0.01 0.01 0.00 0.05 0.13
+ 3 6 -0.21 0.00 0.00 -0.13 0.01 0.01 0.02 0.11 0.12
+ 4 6 0.00 0.00 0.00 0.19 0.02 0.00 -0.02 0.29 0.00
+ 5 6 0.21 0.00 0.00 -0.13 0.01 -0.01 0.02 0.11 -0.12
+ 6 6 -0.21 0.00 0.01 -0.04 0.01 -0.01 0.00 0.05 -0.13
+ 7 6 0.00 0.00 -0.01 -0.01 -0.03 0.00 0.01 -0.37 0.00
+ 8 1 0.45 -0.01 0.01 -0.32 0.02 0.00 0.05 0.24 0.02
+ 9 1 -0.45 -0.01 0.00 -0.39 0.00 0.00 0.07 -0.04 0.03
+ 10 1 0.00 0.00 -0.01 0.33 0.02 0.00 -0.02 0.29 0.00
+ 11 1 0.45 0.01 0.00 -0.39 0.00 0.00 0.07 -0.04 -0.03
+ 12 1 -0.45 0.01 0.01 -0.32 0.02 0.00 0.05 0.24 -0.02
+ 13 1 0.00 0.00 -0.01 -0.13 -0.36 0.00 0.03 -0.33 0.00
+ 14 1 0.00 0.01 -0.02 -0.15 0.12 0.01 0.03 -0.39 0.00
+ 15 1 0.00 -0.01 -0.02 -0.15 0.12 -0.01 0.03 -0.39 0.00
+ 7 8 9
+ A" A' A'
+ Frequencies -- 637.7320 713.5041 744.5144
+ Red. masses -- 6.3693 2.0499 1.4796
+ Frc consts -- 1.5262 0.6149 0.4832
+ IR Inten -- 0.1008 27.3374 44.4469
+ Atom AN X Y Z X Y Z X Y Z
+ 1 6 0.00 0.00 0.14 0.11 0.00 0.00 -0.12 -0.01 0.00
+ 2 6 0.00 0.24 0.20 -0.10 0.00 0.00 0.09 0.00 0.01
+ 3 6 0.00 0.26 -0.24 0.16 0.00 0.00 0.00 0.00 0.01
+ 4 6 0.00 0.00 -0.14 -0.10 0.00 0.00 0.11 0.01 0.00
+ 5 6 0.00 -0.26 -0.24 0.16 0.00 0.00 0.00 0.00 -0.01
+ 6 6 0.00 -0.24 0.20 -0.10 0.00 0.00 0.09 0.00 -0.01
+ 7 6 0.00 0.00 0.05 0.02 0.00 0.00 -0.03 0.01 0.00
+ 8 1 0.00 0.10 0.28 -0.52 0.00 0.00 -0.17 0.00 0.00
+ 9 1 0.00 0.12 -0.32 -0.09 0.00 0.00 -0.54 -0.02 0.01
+ 10 1 0.00 0.00 0.30 -0.59 0.00 0.00 -0.46 0.01 0.00
+ 11 1 0.00 -0.12 -0.32 -0.09 0.00 0.00 -0.54 -0.02 -0.01
+ 12 1 0.00 -0.10 0.28 -0.52 0.00 0.00 -0.17 0.00 0.00
+ 13 1 0.00 0.00 0.06 -0.02 -0.10 0.00 0.06 0.25 0.00
+ 14 1 -0.01 -0.02 0.07 -0.02 0.04 0.00 0.09 -0.10 -0.01
+ 15 1 0.01 0.02 0.07 -0.02 0.04 0.00 0.09 -0.10 0.01
+ 10 11 12
+ A' A" A'
+ Frequencies -- 799.0852 854.0671 910.7383
+ Red. masses -- 4.5130 1.2496 1.3053
+ Frc consts -- 1.6979 0.5371 0.6379
+ IR Inten -- 0.8134 0.0154 0.4623
+ Atom AN X Y Z X Y Z X Y Z
+ 1 6 0.03 -0.05 0.00 0.00 0.00 0.00 0.02 0.00 0.00
+ 2 6 -0.01 -0.08 0.18 -0.08 0.00 0.00 -0.09 0.00 0.00
+ 3 6 0.00 -0.13 0.22 -0.07 0.00 0.00 0.01 0.00 0.00
+ 4 6 -0.02 0.17 0.00 0.00 0.00 0.00 0.10 0.00 0.00
+ 5 6 0.00 -0.13 -0.22 0.07 0.00 0.00 0.01 0.00 0.00
+ 6 6 -0.01 -0.08 -0.18 0.08 0.00 0.00 -0.09 0.00 0.00
+ 7 6 -0.01 0.28 0.00 0.00 0.00 0.00 0.03 0.00 0.00
+ 8 1 0.00 0.01 0.14 0.51 0.00 0.00 0.52 0.00 0.00
+ 9 1 0.07 -0.39 0.07 0.48 0.00 0.00 -0.08 -0.01 0.00
+ 10 1 0.08 0.16 0.00 0.00 0.00 0.00 -0.58 0.00 0.00
+ 11 1 0.07 -0.39 -0.07 -0.48 0.00 0.00 -0.08 -0.01 0.00
+ 12 1 0.00 0.01 -0.14 -0.51 0.00 0.00 0.52 0.00 0.00
+ 13 1 -0.01 0.29 0.00 0.00 0.00 0.01 -0.04 -0.20 0.00
+ 14 1 0.00 0.31 -0.01 0.00 -0.01 0.01 -0.08 0.10 0.02
+ 15 1 0.00 0.31 0.01 0.00 0.01 0.01 -0.08 0.10 -0.02
+ 13 14 15
+ A" A' A"
+ Frequencies -- 975.2450 999.2774 1000.2226
+ Red. masses -- 1.3668 1.2787 1.4353
+ Frc consts -- 0.7659 0.7523 0.8460
+ IR Inten -- 0.0037 0.0394 0.0412
+ Atom AN X Y Z X Y Z X Y Z
+ 1 6 0.00 0.00 0.00 0.01 0.00 0.00 0.00 0.00 0.06
+ 2 6 -0.09 0.00 0.00 0.03 0.00 0.00 0.00 -0.02 -0.07
+ 3 6 0.09 0.00 0.00 -0.08 0.00 0.00 0.00 0.03 -0.03
+ 4 6 0.00 0.00 0.00 0.10 0.00 0.00 0.00 0.00 0.04
+ 5 6 -0.09 0.00 0.00 -0.08 0.00 0.00 0.00 -0.03 -0.03
+ 6 6 0.09 0.00 0.00 0.03 0.00 0.00 0.00 0.02 -0.07
+ 7 6 0.00 0.00 0.00 -0.01 0.00 0.00 0.00 0.00 0.14
+ 8 1 0.47 0.00 0.00 -0.24 0.00 0.00 0.03 -0.04 -0.06
+ 9 1 -0.51 0.00 0.00 0.51 0.00 0.00 0.00 0.14 0.03
+ 10 1 0.00 0.00 0.00 -0.58 0.00 0.00 0.00 0.00 0.18
+ 11 1 0.51 0.00 0.00 0.51 0.00 0.00 0.00 -0.14 0.03
+ 12 1 -0.47 0.00 0.00 -0.24 0.00 0.00 -0.03 0.04 -0.06
+ 13 1 0.00 0.00 0.01 0.01 0.05 0.00 0.00 0.00 -0.28
+ 14 1 0.00 -0.01 0.01 0.03 -0.03 -0.01 0.05 0.61 -0.17
+ 15 1 0.00 0.01 0.01 0.03 -0.03 0.01 -0.05 -0.61 -0.17
+ 16 17 18
+ A' A' A'
+ Frequencies -- 1017.9931 1051.7339 1062.9136
+ Red. masses -- 6.1833 2.2099 1.5504
+ Frc consts -- 3.7753 1.4402 1.0320
+ IR Inten -- 0.0545 2.8494 8.3792
+ Atom AN X Y Z X Y Z X Y Z
+ 1 6 0.03 0.02 0.00 0.01 0.03 0.00 -0.14 0.00 0.00
+ 2 6 -0.01 -0.19 -0.34 0.00 0.05 -0.07 0.04 -0.01 -0.02
+ 3 6 0.01 -0.02 0.05 0.00 -0.03 0.19 0.00 -0.01 0.01
+ 4 6 0.00 0.39 0.00 0.00 -0.14 0.00 0.00 0.01 0.00
+ 5 6 0.01 -0.02 -0.05 0.00 -0.03 -0.19 0.00 -0.01 -0.01
+ 6 6 -0.01 -0.19 0.34 0.00 0.05 0.07 0.04 -0.01 0.02
+ 7 6 -0.03 0.02 0.00 -0.01 -0.02 0.00 0.15 0.01 0.00
+ 8 1 0.05 -0.16 -0.38 0.01 0.35 -0.24 -0.17 0.01 -0.02
+ 9 1 -0.02 -0.01 0.04 0.00 0.31 0.39 0.00 0.01 0.02
+ 10 1 0.01 0.40 0.00 0.00 -0.15 0.00 0.02 0.01 0.00
+ 11 1 -0.02 -0.01 -0.04 0.00 0.31 -0.39 0.00 0.01 -0.02
+ 12 1 0.05 -0.16 0.38 0.01 0.35 0.24 -0.17 0.01 0.02
+ 13 1 0.01 0.11 0.00 0.01 0.02 0.00 -0.11 -0.70 0.00
+ 14 1 0.04 -0.05 0.00 0.02 -0.05 -0.01 -0.28 0.33 0.09
+ 15 1 0.04 -0.05 0.00 0.02 -0.05 0.01 -0.28 0.33 -0.09
+ 19 20 21
+ A" A" A'
+ Frequencies -- 1111.3321 1181.1505 1203.2474
+ Red. masses -- 1.4599 1.1120 1.1372
+ Frc consts -- 1.0623 0.9141 0.9700
+ IR Inten -- 5.6033 0.0698 0.3811
+ Atom AN X Y Z X Y Z X Y Z
+ 1 6 0.00 0.00 -0.03 0.00 0.00 0.00 0.00 0.00 0.00
+ 2 6 0.00 0.10 0.02 0.00 0.01 -0.01 0.00 0.05 -0.03
+ 3 6 0.00 -0.05 0.05 0.00 -0.04 -0.02 0.00 -0.05 -0.03
+ 4 6 0.00 0.00 -0.07 0.00 0.00 0.07 0.00 -0.01 0.00
+ 5 6 0.00 0.05 0.05 0.00 0.04 -0.02 0.00 -0.05 0.03
+ 6 6 0.00 -0.10 0.02 0.00 -0.01 -0.01 0.00 0.05 0.03
+ 7 6 0.00 0.00 0.06 0.00 0.00 0.00 0.00 0.00 0.00
+ 8 1 0.00 0.46 -0.18 0.00 0.14 -0.09 0.00 0.43 -0.25
+ 9 1 0.00 -0.23 -0.05 0.00 -0.42 -0.24 0.00 -0.43 -0.25
+ 10 1 0.00 0.00 -0.52 0.00 0.00 0.68 0.00 -0.01 0.00
+ 11 1 0.00 0.23 -0.05 0.00 0.42 -0.24 0.00 -0.43 0.25
+ 12 1 0.00 -0.46 -0.18 0.00 -0.14 -0.09 0.00 0.43 0.25
+ 13 1 0.00 0.00 -0.10 0.00 0.00 0.01 0.00 -0.01 0.00
+ 14 1 0.03 0.19 -0.05 0.00 -0.01 0.00 0.01 0.00 0.00
+ 15 1 -0.03 -0.19 -0.05 0.00 0.01 0.00 0.01 0.00 0.00
+ 22 23 24
+ A' A" A"
+ Frequencies -- 1229.0627 1327.9709 1356.1568
+ Red. masses -- 3.0065 5.0295 1.3919
+ Frc consts -- 2.6759 5.2258 1.5083
+ IR Inten -- 0.9049 0.0629 0.0106
+ Atom AN X Y Z X Y Z X Y Z
+ 1 6 0.00 0.36 0.00 0.00 0.00 0.34 0.00 0.00 -0.07
+ 2 6 0.00 0.05 0.00 0.00 0.17 -0.12 0.00 0.10 -0.03
+ 3 6 0.00 -0.09 0.08 0.00 -0.20 -0.13 0.00 -0.01 0.01
+ 4 6 0.00 0.03 0.00 0.00 0.00 0.21 0.00 0.00 0.09
+ 5 6 0.00 -0.09 -0.08 0.00 0.20 -0.13 0.00 0.01 0.01
+ 6 6 0.00 0.05 0.00 0.00 -0.17 -0.12 0.00 -0.10 -0.03
+ 7 6 0.00 -0.14 0.00 0.00 0.00 -0.08 0.00 0.00 0.03
+ 8 1 -0.01 -0.37 0.26 0.00 0.12 -0.09 0.00 -0.48 0.30
+ 9 1 0.00 -0.33 -0.05 0.00 0.38 0.19 0.00 -0.29 -0.14
+ 10 1 0.00 0.02 0.00 0.00 0.00 -0.20 0.00 0.00 -0.33
+ 11 1 0.00 -0.33 0.05 0.00 -0.38 0.19 0.00 0.29 -0.14
+ 12 1 -0.01 -0.37 -0.26 0.00 -0.12 -0.09 0.00 0.48 0.30
+ 13 1 -0.02 -0.22 0.00 0.00 0.00 0.28 0.00 0.00 -0.09
+ 14 1 0.00 -0.27 0.05 -0.09 -0.20 0.07 0.04 0.05 -0.02
+ 15 1 0.00 -0.27 -0.05 0.09 0.20 0.07 -0.04 -0.05 -0.02
+ 25 26 27
+ A' A" A'
+ Frequencies -- 1414.9087 1470.4937 1491.2445
+ Red. masses -- 1.2487 1.5804 1.0494
+ Frc consts -- 1.4729 2.0135 1.3749
+ IR Inten -- 1.0067 0.0162 6.7839
+ Atom AN X Y Z X Y Z X Y Z
+ 1 6 0.00 -0.02 0.00 0.00 0.00 0.10 0.02 -0.01 0.00
+ 2 6 0.00 0.00 0.00 0.00 -0.06 -0.04 0.00 -0.01 0.00
+ 3 6 0.00 0.00 0.00 0.00 0.11 0.01 0.00 0.00 0.00
+ 4 6 0.00 0.00 0.00 0.00 0.00 0.07 0.00 0.00 0.00
+ 5 6 0.00 0.00 0.00 0.00 -0.11 0.01 0.00 0.00 0.00
+ 6 6 0.00 0.00 0.00 0.00 0.06 -0.04 0.00 -0.01 0.00
+ 7 6 -0.01 0.14 0.00 0.00 0.00 -0.06 0.05 0.02 0.00
+ 8 1 0.00 0.02 -0.01 -0.01 0.05 -0.12 0.00 0.03 -0.01
+ 9 1 0.00 0.01 0.00 0.00 -0.24 -0.20 0.00 0.01 0.00
+ 10 1 0.00 0.00 0.00 0.00 0.00 -0.43 0.00 0.00 0.00
+ 11 1 0.00 0.01 0.00 0.00 0.24 -0.20 0.00 0.01 0.00
+ 12 1 0.00 0.02 0.01 0.01 -0.05 -0.12 0.00 0.03 0.01
+ 13 1 -0.24 -0.56 0.00 0.00 0.00 0.55 0.13 0.30 0.00
+ 14 1 0.21 -0.48 0.15 -0.29 0.15 0.05 -0.46 -0.25 0.40
+ 15 1 0.21 -0.48 -0.15 0.29 -0.15 0.05 -0.46 -0.25 -0.40
+ 28 29 30
+ A" A' A"
+ Frequencies -- 1504.3132 1530.0119 1626.9342
+ Red. masses -- 1.3005 2.2712 5.3136
+ Frc consts -- 1.7340 3.1325 8.2866
+ IR Inten -- 14.2008 15.5003 0.3977
+ Atom AN X Y Z X Y Z X Y Z
+ 1 6 0.00 0.00 -0.08 0.00 -0.15 0.00 0.00 0.00 -0.30
+ 2 6 0.00 0.05 0.02 0.00 0.07 -0.10 0.00 -0.09 0.18
+ 3 6 0.00 -0.06 0.02 0.00 0.12 0.11 0.00 -0.07 -0.20
+ 4 6 0.00 0.00 -0.08 0.00 -0.11 0.00 0.00 0.00 0.35
+ 5 6 0.00 0.06 0.02 0.00 0.12 -0.11 0.00 0.07 -0.20
+ 6 6 0.00 -0.05 0.02 0.00 0.07 0.10 0.00 0.09 0.18
+ 7 6 0.00 0.00 -0.03 0.00 0.03 0.00 0.00 0.00 0.02
+ 8 1 0.00 -0.10 0.11 0.00 -0.41 0.16 0.00 0.28 -0.02
+ 9 1 0.00 0.10 0.12 0.00 -0.44 -0.20 0.00 0.24 -0.04
+ 10 1 0.00 0.00 0.30 0.00 -0.13 0.00 0.00 0.00 -0.46
+ 11 1 0.00 -0.10 0.12 0.00 -0.44 0.20 0.00 -0.24 -0.04
+ 12 1 0.00 0.10 0.11 0.00 -0.41 -0.16 0.00 -0.28 -0.02
+ 13 1 0.00 0.00 0.60 0.01 0.04 0.00 0.00 0.00 0.14
+ 14 1 -0.34 0.31 0.04 -0.02 0.03 0.01 -0.09 0.19 -0.01
+ 15 1 0.34 -0.31 0.04 -0.02 0.03 -0.01 0.09 -0.19 -0.01
+ 31 32 33
+ A' A' A'
+ Frequencies -- 1648.9136 3020.7627 3075.0953
+ Red. masses -- 5.6539 1.0407 1.0943
+ Frc consts -- 9.0572 5.5953 6.0971
+ IR Inten -- 7.5261 29.0603 22.5962
+ Atom AN X Y Z X Y Z X Y Z
+ 1 6 0.00 0.23 0.00 0.00 0.00 0.00 0.00 0.00 0.00
+ 2 6 0.00 -0.30 0.09 0.00 0.00 0.00 0.00 0.00 0.00
+ 3 6 0.00 0.27 0.07 0.00 0.00 0.00 0.00 0.00 0.00
+ 4 6 0.00 -0.14 0.00 0.00 0.00 0.00 0.00 0.00 0.00
+ 5 6 0.00 0.27 -0.07 0.00 0.00 0.00 0.00 0.00 0.00
+ 6 6 0.00 -0.30 -0.09 0.00 0.00 0.00 0.00 0.00 0.00
+ 7 6 0.00 -0.03 0.00 -0.03 0.05 0.00 -0.09 -0.02 0.00
+ 8 1 0.00 0.31 -0.26 0.00 0.01 0.01 0.00 -0.01 -0.01
+ 9 1 0.00 -0.24 -0.23 0.00 0.00 0.00 0.00 0.00 0.00
+ 10 1 0.00 -0.15 0.00 0.00 0.00 0.00 0.00 0.00 0.00
+ 11 1 0.00 -0.24 0.23 0.00 0.00 0.00 0.00 0.00 0.00
+ 12 1 0.00 0.31 0.26 0.00 0.01 -0.01 0.00 -0.01 0.01
+ 13 1 -0.02 -0.06 0.00 0.75 -0.25 0.00 0.56 -0.20 0.00
+ 14 1 0.03 -0.01 -0.03 -0.20 -0.15 -0.35 0.24 0.21 0.47
+ 15 1 0.03 -0.01 0.03 -0.20 -0.15 0.35 0.24 0.21 -0.47
+ 34 35 36
+ A" A' A"
+ Frequencies -- 3101.3453 3152.0818 3153.6911
+ Red. masses -- 1.1023 1.0858 1.0876
+ Frc consts -- 6.2467 6.3560 6.3731
+ IR Inten -- 17.8865 9.5550 6.3420
+ Atom AN X Y Z X Y Z X Y Z
+ 1 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
+ 2 6 0.00 0.00 0.00 0.00 -0.02 -0.04 0.00 0.03 0.05
+ 3 6 0.00 0.00 0.00 0.00 -0.02 0.03 0.00 0.01 -0.02
+ 4 6 0.00 0.00 0.00 0.00 0.02 0.00 0.00 0.00 0.00
+ 5 6 0.00 0.00 0.00 0.00 -0.02 -0.03 0.00 -0.01 -0.02
+ 6 6 0.00 0.00 0.00 0.00 -0.02 0.04 0.00 -0.03 0.05
+ 7 6 0.00 0.00 0.09 0.00 0.00 0.00 0.00 0.00 0.00
+ 8 1 0.00 0.02 0.02 0.00 0.27 0.47 0.00 -0.32 -0.56
+ 9 1 0.00 0.00 -0.01 0.00 0.20 -0.35 0.00 -0.14 0.26
+ 10 1 0.00 0.00 0.00 0.00 -0.29 0.00 0.00 0.00 0.00
+ 11 1 0.00 0.00 -0.01 0.00 0.20 0.35 0.00 0.14 0.26
+ 12 1 0.00 -0.02 0.02 0.00 0.27 -0.47 0.00 0.32 -0.56
+ 13 1 0.00 0.00 0.02 0.00 0.00 0.00 0.00 0.00 0.00
+ 14 1 -0.33 -0.26 -0.57 0.01 0.01 0.01 -0.01 -0.01 -0.02
+ 15 1 0.33 0.26 -0.57 0.01 0.01 -0.01 0.01 0.01 -0.02
+ 37 38 39
+ A' A" A'
+ Frequencies -- 3166.2991 3174.7135 3187.4638
+ Red. masses -- 1.0899 1.0939 1.0980
+ Frc consts -- 6.4377 6.4957 6.5730
+ IR Inten -- 8.4032 41.9202 16.8120
+ Atom AN X Y Z X Y Z X Y Z
+ 1 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
+ 2 6 0.00 -0.02 -0.03 0.00 -0.01 -0.02 0.00 0.01 0.01
+ 3 6 0.00 0.02 -0.02 0.00 0.03 -0.05 0.00 -0.02 0.04
+ 4 6 0.00 -0.06 0.00 0.00 0.00 0.00 0.00 -0.06 0.00
+ 5 6 0.00 0.02 0.02 0.00 -0.03 -0.05 0.00 -0.02 -0.04
+ 6 6 0.00 -0.02 0.03 0.00 0.01 -0.02 0.00 0.01 -0.01
+ 7 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
+ 8 1 0.00 0.21 0.36 0.00 0.15 0.25 0.00 -0.09 -0.15
+ 9 1 0.00 -0.17 0.28 0.00 -0.32 0.56 0.00 0.23 -0.42
+ 10 1 0.00 0.66 0.00 0.00 0.00 -0.01 0.00 0.69 0.00
+ 11 1 0.00 -0.17 -0.28 0.00 0.32 0.56 0.00 0.23 0.42
+ 12 1 0.00 0.21 -0.36 0.00 -0.15 0.25 0.00 -0.09 0.15
+ 13 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
+ 14 1 0.00 0.01 0.01 0.00 0.00 0.01 0.00 0.00 0.00
+ 15 1 0.00 0.01 -0.01 0.00 0.00 0.01 0.00 0.00 0.00
+
+ -------------------
+ - Thermochemistry -
+ -------------------
+ Temperature 298.150 Kelvin. Pressure 1.00000 Atm.
+ Atom 1 has atomic number 6 and mass 12.00000
+ Atom 2 has atomic number 6 and mass 12.00000
+ Atom 3 has atomic number 6 and mass 12.00000
+ Atom 4 has atomic number 6 and mass 12.00000
+ Atom 5 has atomic number 6 and mass 12.00000
+ Atom 6 has atomic number 6 and mass 12.00000
+ Atom 7 has atomic number 6 and mass 12.00000
+ Atom 8 has atomic number 1 and mass 1.00783
+ Atom 9 has atomic number 1 and mass 1.00783
+ Atom 10 has atomic number 1 and mass 1.00783
+ Atom 11 has atomic number 1 and mass 1.00783
+ Atom 12 has atomic number 1 and mass 1.00783
+ Atom 13 has atomic number 1 and mass 1.00783
+ Atom 14 has atomic number 1 and mass 1.00783
+ Atom 15 has atomic number 1 and mass 1.00783
+ Molecular mass: 92.06260 amu.
+ Principal axes and moments of inertia in atomic units:
+ 1 2 3
+ EIGENVALUES -- 324.89671 717.151771030.83419
+ X -0.00734 0.00000 0.99997
+ Y 0.99997 0.00000 0.00734
+ Z 0.00000 1.00000 0.00000
+ This molecule is an asymmetric top.
+ Rotational symmetry number 1.
+ Rotational temperatures (Kelvin) 0.26659 0.12077 0.08402
+ Rotational constants (GHZ): 5.55482 2.51654 1.75076
+ Zero-point vibrational energy 334334.5 (Joules/Mol)
+ 79.90787 (Kcal/Mol)
+ Warning -- explicit consideration of 6 degrees of freedom as
+ vibrations may cause significant error
+ Vibrational temperatures: 41.75 300.68 494.10 596.82 685.66
+ (Kelvin) 761.62 917.55 1026.57 1071.19 1149.70
+ 1228.81 1310.35 1403.16 1437.74 1439.10
+ 1464.66 1513.21 1529.29 1598.96 1699.41
+ 1731.20 1768.34 1910.65 1951.20 2035.74
+ 2115.71 2145.57 2164.37 2201.34 2340.79
+ 2372.42 4346.20 4424.37 4462.14 4535.14
+ 4537.45 4555.59 4567.70 4586.04
+
+ Zero-point correction= 0.127341 (Hartree/Particle)
+ Thermal correction to Energy= 0.133580
+ Thermal correction to Enthalpy= 0.134524
+ Thermal correction to Gibbs Free Energy= 0.096472
+ Sum of electronic and zero-point Energies= -271.508711
+ Sum of electronic and thermal Energies= -271.502473
+ Sum of electronic and thermal Enthalpies= -271.501529
+ Sum of electronic and thermal Free Energies= -271.539581
+
+ E (Thermal) CV S
+ KCal/Mol Cal/Mol-Kelvin Cal/Mol-Kelvin
+ Total 83.823 23.278 80.088
+ Electronic 0.000 0.000 0.000
+ Translational 0.889 2.981 39.472
+ Rotational 0.889 2.981 26.976
+ Vibrational 82.045 17.316 13.640
+ Vibration 1 0.593 1.984 5.895
+ Vibration 2 0.642 1.827 2.053
+ Vibration 3 0.722 1.589 1.196
+ Vibration 4 0.778 1.438 0.910
+ Vibration 5 0.833 1.302 0.719
+ Vibration 6 0.884 1.185 0.589
+ Q Log10(Q) Ln(Q)
+ Total Bot 0.422704D-44 -44.373964 -102.174827
+ Total V=0 0.158067D+15 14.198841 32.694040
+ Vib (Bot) 0.693965D-57 -57.158663 -131.612685
+ Vib (Bot) 1 0.713543D+01 0.853420 1.965073
+ Vib (Bot) 2 0.950774D+00 -0.021923 -0.050479
+ Vib (Bot) 3 0.539525D+00 -0.267988 -0.617066
+ Vib (Bot) 4 0.424968D+00 -0.371644 -0.855741
+ Vib (Bot) 5 0.351978D+00 -0.453485 -1.044188
+ Vib (Bot) 6 0.302306D+00 -0.519553 -1.196316
+ Vib (V=0) 0.259503D+02 1.414142 3.256183
+ Vib (V=0) 1 0.765293D+01 0.883828 2.035088
+ Vib (V=0) 2 0.157423D+01 0.197068 0.453766
+ Vib (V=0) 3 0.123559D+01 0.091873 0.211546
+ Vib (V=0) 4 0.115620D+01 0.063033 0.145138
+ Vib (V=0) 5 0.111146D+01 0.045895 0.105678
+ Vib (V=0) 6 0.108428D+01 0.035143 0.080921
+ Electronic 0.100000D+01 0.000000 0.000000
+ Translational 0.347200D+08 7.540580 17.362827
+ Rotational 0.175436D+06 5.244119 12.075030
+ -------------------------------------------------------------------
+ Center Atomic Forces (Hartrees/Bohr)
+ Number Number X Y Z
+ -------------------------------------------------------------------
+ 1 6 0.000012822 -0.000063795 0.000000000
+ 2 6 -0.000005969 -0.000034604 -0.000005424
+ 3 6 -0.000003999 0.000042196 -0.000025383
+ 4 6 0.000003909 -0.000018507 0.000000000
+ 5 6 -0.000003998 0.000042196 0.000025383
+ 6 6 -0.000005969 -0.000034604 0.000005424
+ 7 6 -0.000019123 0.000044079 0.000000000
+ 8 1 0.000002454 0.000022285 -0.000010869
+ 9 1 0.000001038 -0.000010586 0.000003705
+ 10 1 -0.000000041 0.000001576 0.000000000
+ 11 1 0.000001038 -0.000010586 -0.000003705
+ 12 1 0.000002454 0.000022285 0.000010869
+ 13 1 0.000012224 -0.000013226 0.000000000
+ 14 1 0.000001580 0.000005645 0.000001437
+ 15 1 0.000001580 0.000005645 -0.000001437
+ -------------------------------------------------------------------
+ Cartesian Forces: Max 0.000063795 RMS 0.000018975
+ ------------------------------------------------------------------------
+ Internal Coordinate Forces (Hartree/Bohr or radian)
+ Cent Atom N1 Length/X N2 Alpha/Y N3 Beta/Z J
+ ------------------------------------------------------------------------
+ 1 C 0.000013( 1) -0.000064( 16) 0.000000( 31)
+ 2 C -0.000006( 2) -0.000035( 17) -0.000005( 32)
+ 3 C -0.000004( 3) 0.000042( 18) -0.000025( 33)
+ 4 C 0.000004( 4) -0.000019( 19) 0.000000( 34)
+ 5 C -0.000004( 5) 0.000042( 20) 0.000025( 35)
+ 6 C -0.000006( 6) -0.000035( 21) 0.000005( 36)
+ 7 C -0.000019( 7) 0.000044( 22) 0.000000( 37)
+ 8 H 0.000002( 8) 0.000022( 23) -0.000011( 38)
+ 9 H 0.000001( 9) -0.000011( 24) 0.000004( 39)
+ 10 H 0.000000( 10) 0.000002( 25) 0.000000( 40)
+ 11 H 0.000001( 11) -0.000011( 26) -0.000004( 41)
+ 12 H 0.000002( 12) 0.000022( 27) 0.000011( 42)
+ 13 H 0.000012( 13) -0.000013( 28) 0.000000( 43)
+ 14 H 0.000002( 14) 0.000006( 29) 0.000001( 44)
+ 15 H 0.000002( 15) 0.000006( 30) -0.000001( 45)
+ ------------------------------------------------------------------------
+ Internal Forces: Max 0.000063795 RMS 0.000018975
+ Force constants in Cartesian coordinates:
+ 1 2 3 4 5
+ 1 0.174105D+00
+ 2 -0.594931D-02 0.636101D+00
+ 3 0.000000D+00 0.000000D+00 0.657702D+00
+ 4 -0.680842D-01 0.519235D-03 -0.170195D-02 0.133536D+00
+ 5 0.655945D-03 -0.172342D+00 0.459478D-01 -0.750317D-03 0.686135D+00
+ 6 -0.493313D-03 0.114338D+00 -0.265544D+00 0.258307D-02 0.352213D-01
+ 7 0.696180D-02 0.441399D-03 0.662949D-04 -0.618451D-01 0.325847D-03
+ 8 -0.125677D-03 -0.272344D-01 0.791214D-01 0.645636D-03 -0.333538D+00
+ 9 -0.772942D-03 0.291555D-01 0.358102D-01 0.163356D-03 0.332612D-01
+ 10 -0.735415D-02 0.294447D-03 0.000000D+00 0.850029D-02 -0.211252D-03
+ 11 -0.423012D-03 0.209669D-02 0.000000D+00 -0.503596D-04 -0.284338D-01
+ 12 0.000000D+00 0.000000D+00 -0.725590D-01 -0.630946D-03 -0.779412D-01
+ 13 0.696180D-02 0.441399D-03 -0.662949D-04 -0.725533D-02 0.485300D-05
+ 14 -0.125677D-03 -0.272344D-01 -0.791214D-01 -0.568875D-03 -0.522103D-01
+ 15 0.772942D-03 -0.291555D-01 0.358102D-01 0.284759D-03 0.302692D-01
+ 16 -0.680842D-01 0.519235D-03 0.170195D-02 0.950061D-02 0.774495D-03
+ 17 0.655945D-03 -0.172342D+00 -0.459478D-01 0.774495D-03 0.630286D-01
+ 18 0.493313D-03 -0.114338D+00 -0.265544D+00 0.394947D-03 0.229196D-01
+ 19 -0.693385D-01 -0.124999D-02 0.000000D+00 0.421311D-02 -0.277881D-03
+ 20 0.345489D-02 -0.207739D+00 0.000000D+00 0.341284D-03 -0.225030D-01
+ 21 0.000000D+00 0.000000D+00 -0.889024D-01 -0.156996D-02 0.294430D-01
+ 22 0.352187D-02 -0.663986D-03 -0.124851D-03 -0.359275D-01 -0.635214D-03
+ 23 -0.682005D-04 0.981775D-02 0.137745D-01 -0.783828D-03 -0.124684D+00
+ 24 -0.166026D-03 -0.162282D-01 -0.199337D-01 -0.112743D-02 -0.116068D+00
+ 25 0.737527D-02 -0.181761D-03 0.135534D-03 0.300491D-02 0.464654D-04
+ 26 0.143955D-03 -0.537506D-02 -0.141561D-02 0.148507D-03 -0.105804D-01
+ 27 0.000000D+00 -0.595385D-03 0.196028D-02 0.188119D-04 -0.215378D-02
+ 28 -0.736921D-03 -0.141968D-03 0.000000D+00 0.705316D-02 0.631796D-04
+ 29 0.886384D-05 0.648663D-03 0.000000D+00 0.991528D-05 0.818572D-03
+ 30 0.000000D+00 0.000000D+00 -0.134619D-02 -0.167465D-04 -0.211934D-02
+ 31 0.737527D-02 -0.181762D-03 -0.135534D-03 -0.677148D-03 -0.683066D-04
+ 32 0.143955D-03 -0.537506D-02 0.141561D-02 -0.166282D-04 -0.767615D-03
+ 33 0.000000D+00 0.595385D-03 0.196028D-02 0.140534D-04 0.853534D-03
+ 34 0.352187D-02 -0.663986D-03 0.124851D-03 0.637294D-02 0.995738D-04
+ 35 -0.682004D-04 0.981775D-02 -0.137745D-01 -0.147364D-04 -0.884207D-03
+ 36 0.166026D-03 0.162282D-01 -0.199337D-01 0.876253D-04 -0.411819D-02
+ 37 0.341492D-02 0.194846D-02 0.000000D+00 0.399333D-03 -0.341982D-03
+ 38 0.306488D-01 -0.150648D-01 0.000000D+00 -0.407110D-03 -0.322146D-03
+ 39 0.000000D+00 0.000000D+00 -0.629050D-04 0.464101D-03 0.196201D-02
+ 40 0.180080D-03 0.243429D-02 0.278220D-02 0.589874D-03 0.232991D-03
+ 41 -0.144761D-01 -0.128880D-01 -0.281397D-01 0.619714D-03 0.185996D-02
+ 42 0.184406D-02 -0.285620D-03 0.291119D-03 0.476352D-03 0.200672D-02
+ 43 0.180080D-03 0.243429D-02 -0.278220D-02 0.619299D-03 0.816029D-04
+ 44 -0.144761D-01 -0.128880D-01 0.281397D-01 -0.466930D-03 -0.557702D-02
+ 45 -0.184406D-02 0.285619D-03 0.291119D-03 0.559973D-03 0.515584D-03
+ 6 7 8 9 10
+ 6 0.700799D+00
+ 7 -0.860781D-04 0.134461D+00
+ 8 -0.326445D-01 -0.645707D-03 0.677001D+00
+ 9 -0.128570D+00 0.171058D-02 -0.312775D-01 0.717834D+00
+ 10 0.141917D-03 -0.630429D-01 0.351407D-03 -0.944701D-04 0.131894D+00
+ 11 -0.289118D-01 0.948942D-04 -0.180267D+00 -0.121775D+00 -0.984910D-03
+ 12 0.340047D-01 -0.438453D-03 -0.564829D-01 -0.280185D+00 0.000000D+00
+ 13 0.556173D-04 0.865035D-02 -0.168770D-03 0.394571D-04 -0.630429D-01
+ 14 0.286555D-01 -0.168770D-03 0.647903D-01 0.245863D-01 0.351407D-03
+ 15 -0.183864D-01 -0.394571D-04 -0.245863D-01 -0.598310D-01 0.944700D-04
+ 16 -0.394947D-03 -0.725533D-02 -0.568875D-03 -0.284759D-03 0.850029D-02
+ 17 -0.229196D-01 0.485300D-05 -0.522103D-01 -0.302692D-01 -0.211252D-03
+ 18 -0.586391D-01 -0.556173D-04 -0.286555D-01 -0.183864D-01 -0.141917D-03
+ 19 -0.252929D-03 0.661253D-02 -0.106319D-02 0.429953D-03 -0.944944D-03
+ 20 0.436565D-02 -0.487562D-03 0.257136D-02 0.137213D-02 -0.172118D-03
+ 21 0.344595D-02 -0.110997D-02 0.177213D-02 -0.452571D-02 0.000000D+00
+ 22 -0.143905D-02 0.279064D-02 0.695862D-04 -0.641032D-05 0.721601D-02
+ 23 -0.116465D+00 0.187228D-04 -0.109762D-01 -0.293366D-01 0.223290D-04
+ 24 -0.263500D+00 0.359589D-04 0.216567D-02 0.313761D-02 -0.555082D-04
+ 25 -0.120334D-03 -0.362904D-01 0.508511D-03 -0.124120D-02 0.311390D-02
+ 26 0.292430D-01 0.512047D-03 -0.126323D+00 0.117766D+00 -0.679551D-04
+ 27 0.318843D-02 -0.111992D-02 0.117840D+00 -0.266471D+00 -0.129605D-03
+ 28 -0.489090D-04 0.252756D-02 -0.644766D-04 -0.116637D-03 -0.352075D-01
+ 29 -0.319123D-02 0.610369D-04 -0.116654D-01 0.299394D-02 0.768168D-03
+ 30 -0.443003D-02 0.910281D-04 -0.284498D-01 0.465763D-02 0.000000D+00
+ 31 0.185810D-04 0.699486D-02 0.570320D-04 0.411265D-04 0.311390D-02
+ 32 0.900420D-03 0.139182D-04 -0.769950D-03 0.320601D-02 -0.679551D-04
+ 33 0.323350D-03 0.113125D-04 0.417686D-02 -0.307082D-02 0.129605D-03
+ 34 -0.153504D-03 -0.649299D-03 -0.507078D-04 -0.224729D-04 0.721601D-02
+ 35 -0.342416D-02 0.000000D+00 -0.678138D-03 -0.744099D-03 0.223290D-04
+ 36 -0.305162D-02 0.000000D+00 -0.946547D-03 0.183875D-03 0.555082D-04
+ 37 0.685817D-03 0.919675D-04 0.485283D-03 0.367810D-04 -0.463264D-05
+ 38 -0.133967D-02 -0.146221D-02 -0.439277D-03 -0.226756D-03 0.182724D-03
+ 39 -0.351083D-03 0.405297D-03 -0.115479D-02 -0.610776D-03 0.000000D+00
+ 40 -0.382427D-03 -0.846793D-04 -0.292458D-03 0.851411D-05 0.214251D-04
+ 41 -0.188005D-02 0.397048D-03 -0.162896D-03 -0.735117D-04 -0.138685D-03
+ 42 0.309208D-03 0.561183D-03 -0.646030D-03 0.128913D-03 0.643589D-04
+ 43 -0.113507D-03 0.773006D-04 0.862410D-03 0.109125D-03 0.214251D-04
+ 44 -0.194726D-02 0.894360D-03 -0.982627D-04 0.136144D-02 -0.138685D-03
+ 45 0.401452D-03 -0.321575D-04 -0.232477D-03 -0.102031D-03 -0.643589D-04
+ 11 12 13 14 15
+ 11 0.739090D+00
+ 12 0.000000D+00 0.655819D+00
+ 13 0.948941D-04 0.438453D-03 0.134461D+00
+ 14 -0.180267D+00 0.564829D-01 -0.645707D-03 0.677001D+00
+ 15 0.121775D+00 -0.280185D+00 -0.171058D-02 0.312775D-01 0.717834D+00
+ 16 -0.503596D-04 0.630946D-03 -0.618451D-01 0.645636D-03 -0.163356D-03
+ 17 -0.284338D-01 0.779412D-01 0.325847D-03 -0.333538D+00 -0.332612D-01
+ 18 0.289118D-01 0.340047D-01 0.860781D-04 0.326445D-01 -0.128570D+00
+ 19 0.896479D-03 0.000000D+00 0.661253D-02 -0.106319D-02 -0.429952D-03
+ 20 -0.122021D-02 0.000000D+00 -0.487562D-03 0.257136D-02 -0.137213D-02
+ 21 0.000000D+00 -0.583466D-03 0.110997D-02 -0.177213D-02 -0.452571D-02
+ 22 -0.158366D-04 -0.395955D-04 -0.649299D-03 -0.507078D-04 0.224730D-04
+ 23 -0.550908D-02 0.152552D-02 0.000000D+00 -0.678138D-03 0.744100D-03
+ 24 0.380655D-03 0.199474D-02 0.000000D+00 0.946547D-03 0.183876D-03
+ 25 0.634854D-04 0.649593D-04 0.699486D-02 0.570320D-04 -0.411265D-04
+ 26 0.116591D-01 -0.150154D-01 0.139181D-04 -0.769950D-03 -0.320601D-02
+ 27 0.163369D-01 -0.185714D-01 -0.113124D-04 -0.417686D-02 -0.307082D-02
+ 28 0.860906D-03 0.000000D+00 0.252756D-02 -0.644766D-04 0.116637D-03
+ 29 -0.334470D+00 0.000000D+00 0.610369D-04 -0.116654D-01 -0.299394D-02
+ 30 0.000000D+00 -0.590945D-01 -0.910281D-04 0.284498D-01 0.465763D-02
+ 31 0.634854D-04 -0.649594D-04 -0.362904D-01 0.508511D-03 0.124120D-02
+ 32 0.116591D-01 0.150154D-01 0.512047D-03 -0.126323D+00 -0.117766D+00
+ 33 -0.163369D-01 -0.185714D-01 0.111992D-02 -0.117840D+00 -0.266471D+00
+ 34 -0.158367D-04 0.395953D-04 0.279064D-02 0.695861D-04 0.641030D-05
+ 35 -0.550908D-02 -0.152552D-02 0.187227D-04 -0.109762D-01 0.293366D-01
+ 36 -0.380655D-03 0.199474D-02 -0.359588D-04 -0.216567D-02 0.313761D-02
+ 37 -0.277146D-03 0.000000D+00 0.919675D-04 0.485283D-03 -0.367810D-04
+ 38 -0.350507D-03 0.000000D+00 -0.146221D-02 -0.439277D-03 0.226756D-03
+ 39 0.000000D+00 0.120293D-02 -0.405297D-03 0.115479D-02 -0.610776D-03
+ 40 -0.128342D-03 0.500800D-03 0.773006D-04 0.862411D-03 -0.109125D-03
+ 41 -0.218395D-04 0.204723D-03 0.894360D-03 -0.982624D-04 -0.136144D-02
+ 42 0.177409D-03 0.364530D-03 0.321576D-04 0.232477D-03 -0.102031D-03
+ 43 -0.128342D-03 -0.500800D-03 -0.846792D-04 -0.292458D-03 -0.851432D-05
+ 44 -0.218395D-04 -0.204723D-03 0.397048D-03 -0.162895D-03 0.735113D-04
+ 45 -0.177409D-03 0.364529D-03 -0.561183D-03 0.646029D-03 0.128913D-03
+ 16 17 18 19 20
+ 16 0.133536D+00
+ 17 -0.750317D-03 0.686135D+00
+ 18 -0.258307D-02 -0.352213D-01 0.700799D+00
+ 19 0.421311D-02 -0.277881D-03 0.252929D-03 0.530202D+00
+ 20 0.341284D-03 -0.225030D-01 -0.436565D-02 0.106558D-01 0.478414D+00
+ 21 0.156996D-02 -0.294430D-01 0.344595D-02 0.000000D+00 0.000000D+00
+ 22 0.637294D-02 0.995737D-04 0.153504D-03 -0.336513D-02 0.503430D-03
+ 23 -0.147364D-04 -0.884208D-03 0.342416D-02 0.245855D-03 0.117395D-02
+ 24 -0.876252D-04 0.411819D-02 -0.305162D-02 -0.563536D-03 -0.166944D-02
+ 25 -0.677148D-03 -0.683065D-04 -0.185809D-04 0.141845D-03 0.137944D-03
+ 26 -0.166281D-04 -0.767615D-03 -0.900420D-03 -0.136440D-03 -0.135164D-03
+ 27 -0.140535D-04 -0.853534D-03 0.323350D-03 -0.166690D-05 -0.175603D-03
+ 28 0.705316D-02 0.631796D-04 0.489089D-04 -0.940364D-03 0.193620D-03
+ 29 0.991526D-05 0.818573D-03 0.319123D-02 -0.610569D-04 0.132135D-04
+ 30 0.167465D-04 0.211934D-02 -0.443003D-02 0.000000D+00 0.000000D+00
+ 31 0.300491D-02 0.464654D-04 0.120334D-03 0.141845D-03 0.137944D-03
+ 32 0.148507D-03 -0.105804D-01 -0.292430D-01 -0.136440D-03 -0.135164D-03
+ 33 -0.188119D-04 0.215378D-02 0.318843D-02 0.166689D-05 0.175603D-03
+ 34 -0.359275D-01 -0.635214D-03 0.143905D-02 -0.336513D-02 0.503430D-03
+ 35 -0.783828D-03 -0.124684D+00 0.116465D+00 0.245855D-03 0.117395D-02
+ 36 0.112743D-02 0.116068D+00 -0.263500D+00 0.563536D-03 0.166944D-02
+ 37 0.399333D-03 -0.341982D-03 -0.685817D-03 -0.273734D+00 0.764273D-01
+ 38 -0.407110D-03 -0.322146D-03 0.133967D-02 0.802929D-01 -0.701460D-01
+ 39 -0.464101D-03 -0.196201D-02 -0.351083D-03 0.000000D+00 0.000000D+00
+ 40 0.619299D-03 0.816030D-04 0.113508D-03 -0.100225D+00 -0.457749D-01
+ 41 -0.466930D-03 -0.557702D-02 0.194726D-02 -0.440354D-01 -0.807685D-01
+ 42 -0.559973D-03 -0.515583D-03 0.401452D-03 -0.969268D-01 -0.769066D-01
+ 43 0.589874D-03 0.232991D-03 0.382427D-03 -0.100225D+00 -0.457749D-01
+ 44 0.619714D-03 0.185996D-02 0.188005D-02 -0.440354D-01 -0.807685D-01
+ 45 -0.476351D-03 -0.200672D-02 0.309208D-03 0.969268D-01 0.769066D-01
+ 21 22 23 24 25
+ 21 0.576210D+00
+ 22 0.873808D-03 0.249256D-01
+ 23 0.916288D-03 0.697463D-03 0.130737D+00
+ 24 0.905330D-03 0.134535D-02 0.125986D+00 0.279929D+00
+ 25 0.563012D-04 -0.405526D-02 0.821849D-05 0.375130D-04 0.253310D-01
+ 26 0.135837D-02 -0.149042D-04 0.977540D-03 -0.414818D-03 -0.626021D-03
+ 27 -0.289269D-04 0.187472D-04 0.410198D-03 0.815608D-03 0.122064D-02
+ 28 0.000000D+00 0.307583D-03 -0.393810D-04 -0.100518D-04 -0.394882D-02
+ 29 0.000000D+00 -0.490024D-05 -0.707816D-03 0.165482D-03 -0.134774D-04
+ 30 0.178026D-03 -0.113898D-04 -0.140440D-02 -0.530531D-05 0.996463D-05
+ 31 -0.563011D-04 -0.115541D-02 -0.174417D-05 0.133564D-04 0.253837D-03
+ 32 -0.135837D-02 -0.419168D-05 0.468042D-04 -0.107504D-03 0.755537D-05
+ 33 -0.289269D-04 -0.595164D-05 -0.101473D-03 -0.358716D-04 -0.841832D-05
+ 34 -0.873808D-03 0.284074D-03 0.420269D-04 0.258320D-04 -0.115541D-02
+ 35 -0.916288D-03 0.420269D-04 0.531839D-03 -0.775225D-03 -0.174417D-05
+ 36 0.905330D-03 -0.258321D-04 0.775225D-03 -0.114617D-02 -0.133563D-04
+ 37 0.000000D+00 -0.282609D-03 0.528732D-04 0.261323D-04 0.186024D-04
+ 38 0.000000D+00 0.668745D-03 0.725568D-04 0.327791D-03 0.159505D-04
+ 39 -0.448617D-01 -0.286712D-03 0.552190D-04 -0.102948D-03 -0.508742D-04
+ 40 -0.974046D-01 0.458342D-04 -0.211397D-03 0.379090D-03 -0.297274D-04
+ 41 -0.747011D-01 -0.397249D-03 0.452892D-04 0.112477D-02 -0.127691D-05
+ 42 -0.220817D+00 -0.548448D-03 -0.134129D-03 0.385882D-03 -0.403566D-04
+ 43 0.974046D-01 -0.293375D-04 0.316733D-04 0.146940D-03 -0.775151D-04
+ 44 0.747011D-01 -0.293836D-03 0.370757D-04 0.472567D-04 0.474254D-04
+ 45 -0.220817D+00 0.743547D-04 -0.169634D-03 0.424236D-03 0.933186D-05
+ 26 27 28 29 30
+ 26 0.130643D+00
+ 27 -0.127303D+00 0.282021D+00
+ 28 -0.869684D-05 0.211985D-04 0.251011D-01
+ 29 0.797200D-03 -0.333818D-03 -0.872447D-03 0.355321D+00
+ 30 0.572618D-03 0.948938D-03 0.000000D+00 0.000000D+00 0.578143D-01
+ 31 0.755542D-05 0.841820D-05 -0.394882D-02 -0.134775D-04 -0.996462D-05
+ 32 0.374350D-03 0.799017D-03 -0.869688D-05 0.797200D-03 -0.572618D-03
+ 33 -0.799017D-03 -0.106141D-02 -0.211986D-04 0.333819D-03 0.948938D-03
+ 34 -0.419174D-05 0.595174D-05 0.307583D-03 -0.490021D-05 0.113898D-04
+ 35 0.468042D-04 0.101473D-03 -0.393810D-04 -0.707816D-03 0.140440D-02
+ 36 0.107504D-03 -0.358716D-04 0.100519D-04 -0.165482D-03 -0.530526D-05
+ 37 0.452174D-04 -0.711763D-05 -0.101412D-03 0.249013D-04 0.000000D+00
+ 38 -0.115354D-03 0.557369D-04 0.183166D-03 -0.581207D-05 0.000000D+00
+ 39 0.112888D-04 -0.204685D-04 0.000000D+00 0.000000D+00 0.103351D-04
+ 40 -0.273356D-04 -0.211665D-05 0.308261D-05 0.132111D-04 0.223968D-04
+ 41 0.270962D-04 0.204729D-04 -0.622640D-04 0.419029D-05 0.872902D-04
+ 42 -0.657418D-04 0.100867D-04 -0.151605D-03 -0.428595D-04 0.478112D-04
+ 43 0.309734D-04 -0.816232D-05 0.308260D-05 0.132111D-04 -0.223968D-04
+ 44 -0.458665D-03 0.278391D-04 -0.622640D-04 0.419028D-05 -0.872902D-04
+ 45 0.606926D-04 -0.801032D-05 0.151605D-03 0.428594D-04 0.478111D-04
+ 31 32 33 34 35
+ 31 0.253310D-01
+ 32 -0.626021D-03 0.130643D+00
+ 33 -0.122064D-02 0.127303D+00 0.282021D+00
+ 34 -0.405526D-02 -0.149042D-04 -0.187472D-04 0.249256D-01
+ 35 0.821850D-05 0.977540D-03 -0.410198D-03 0.697463D-03 0.130737D+00
+ 36 -0.375130D-04 0.414817D-03 0.815608D-03 -0.134535D-02 -0.125986D+00
+ 37 0.186024D-04 0.452174D-04 0.711763D-05 -0.282609D-03 0.528732D-04
+ 38 0.159505D-04 -0.115354D-03 -0.557369D-04 0.668745D-03 0.725568D-04
+ 39 0.508742D-04 -0.112887D-04 -0.204685D-04 0.286712D-03 -0.552190D-04
+ 40 -0.775151D-04 0.309733D-04 0.816228D-05 -0.293376D-04 0.316734D-04
+ 41 0.474254D-04 -0.458666D-03 -0.278393D-04 -0.293836D-03 0.370757D-04
+ 42 -0.933190D-05 -0.606927D-04 -0.801044D-05 -0.743547D-04 0.169634D-03
+ 43 -0.297274D-04 -0.273356D-04 0.211665D-05 0.458342D-04 -0.211397D-03
+ 44 -0.127692D-05 0.270961D-04 -0.204731D-04 -0.397249D-03 0.452891D-04
+ 45 0.403566D-04 0.657419D-04 0.100868D-04 0.548448D-03 0.134129D-03
+ 36 37 38 39 40
+ 36 0.279929D+00
+ 37 -0.261323D-04 0.297979D+00
+ 38 -0.327791D-03 -0.864355D-01 0.799862D-01
+ 39 -0.102948D-03 0.000000D+00 0.000000D+00 0.447312D-01
+ 40 -0.146940D-03 -0.140045D-01 -0.112514D-01 -0.260999D-01 0.105335D+00
+ 41 -0.472565D-04 0.391457D-02 0.359469D-02 0.908400D-02 0.470999D-01
+ 42 0.424236D-03 0.274486D-03 0.962173D-03 0.575356D-03 0.107694D+00
+ 43 -0.379090D-03 -0.140045D-01 -0.112514D-01 0.260999D-01 0.757828D-02
+ 44 -0.112477D-02 0.391457D-02 0.359469D-02 -0.908400D-02 0.689872D-02
+ 45 0.385881D-03 -0.274486D-03 -0.962173D-03 0.575356D-03 0.126360D-01
+ 41 42 43 44 45
+ 41 0.902211D-01
+ 42 0.844356D-01 0.237854D+00
+ 43 0.689872D-02 -0.126360D-01 0.105335D+00
+ 44 0.418583D-02 -0.932679D-02 0.470999D-01 0.902211D-01
+ 45 0.932679D-02 -0.198654D-01 -0.107694D+00 -0.844356D-01 0.237854D+00
+ FCInt: Cartesian first derivatives:
+ 1 2 3 4 5
+ 1 0.128219D-04-0.596927D-05-0.399851D-05 0.390923D-05-0.399850D-05
+ 2-0.637947D-04-0.346042D-04 0.421963D-04-0.185070D-04 0.421963D-04
+ 3 0.000000D+00-0.542411D-05-0.253832D-04 0.000000D+00 0.253832D-04
+ 6 7 8 9 10
+ 1-0.596928D-05-0.191230D-04 0.245440D-05 0.103831D-05 0.000000D+00
+ 2-0.346042D-04 0.440786D-04 0.222847D-04-0.105856D-04 0.157647D-05
+ 3 0.542412D-05 0.000000D+00-0.108686D-04 0.370472D-05 0.000000D+00
+ 11 12 13 14 15
+ 1 0.103829D-05 0.245440D-05 0.122237D-04 0.157953D-05 0.157954D-05
+ 2-0.105856D-04 0.222847D-04-0.132258D-04 0.564493D-05 0.564496D-05
+ 3-0.370469D-05 0.108686D-04 0.000000D+00 0.143721D-05-0.143722D-05
+ FCInt: Cartesian force constants:
+ 1 2 3 4 5
+ 1 0.174105D+00
+ 2 -0.594931D-02 0.636101D+00
+ 3 0.000000D+00 0.000000D+00 0.657702D+00
+ 4 -0.680842D-01 0.519235D-03 -0.170195D-02 0.133536D+00
+ 5 0.655945D-03 -0.172342D+00 0.459478D-01 -0.750317D-03 0.686135D+00
+ 6 -0.493313D-03 0.114338D+00 -0.265544D+00 0.258307D-02 0.352213D-01
+ 7 0.696180D-02 0.441399D-03 0.662949D-04 -0.618451D-01 0.325847D-03
+ 8 -0.125677D-03 -0.272344D-01 0.791214D-01 0.645636D-03 -0.333538D+00
+ 9 -0.772942D-03 0.291555D-01 0.358102D-01 0.163356D-03 0.332612D-01
+ 10 -0.735415D-02 0.294447D-03 0.000000D+00 0.850029D-02 -0.211252D-03
+ 11 -0.423012D-03 0.209669D-02 0.000000D+00 -0.503596D-04 -0.284338D-01
+ 12 0.000000D+00 0.000000D+00 -0.725590D-01 -0.630946D-03 -0.779412D-01
+ 13 0.696180D-02 0.441399D-03 -0.662949D-04 -0.725533D-02 0.485300D-05
+ 14 -0.125677D-03 -0.272344D-01 -0.791214D-01 -0.568875D-03 -0.522103D-01
+ 15 0.772942D-03 -0.291555D-01 0.358102D-01 0.284759D-03 0.302692D-01
+ 16 -0.680842D-01 0.519235D-03 0.170195D-02 0.950061D-02 0.774495D-03
+ 17 0.655945D-03 -0.172342D+00 -0.459478D-01 0.774495D-03 0.630286D-01
+ 18 0.493313D-03 -0.114338D+00 -0.265544D+00 0.394947D-03 0.229196D-01
+ 19 -0.693385D-01 -0.124999D-02 0.000000D+00 0.421311D-02 -0.277881D-03
+ 20 0.345489D-02 -0.207739D+00 0.000000D+00 0.341284D-03 -0.225030D-01
+ 21 0.000000D+00 0.000000D+00 -0.889024D-01 -0.156996D-02 0.294430D-01
+ 22 0.352187D-02 -0.663986D-03 -0.124851D-03 -0.359275D-01 -0.635214D-03
+ 23 -0.682005D-04 0.981775D-02 0.137745D-01 -0.783828D-03 -0.124684D+00
+ 24 -0.166026D-03 -0.162282D-01 -0.199337D-01 -0.112743D-02 -0.116068D+00
+ 25 0.737527D-02 -0.181761D-03 0.135534D-03 0.300491D-02 0.464654D-04
+ 26 0.143955D-03 -0.537506D-02 -0.141561D-02 0.148507D-03 -0.105804D-01
+ 27 0.000000D+00 -0.595385D-03 0.196028D-02 0.188119D-04 -0.215378D-02
+ 28 -0.736921D-03 -0.141968D-03 0.000000D+00 0.705316D-02 0.631796D-04
+ 29 0.886384D-05 0.648663D-03 0.000000D+00 0.991528D-05 0.818572D-03
+ 30 0.000000D+00 0.000000D+00 -0.134619D-02 -0.167465D-04 -0.211934D-02
+ 31 0.737527D-02 -0.181762D-03 -0.135534D-03 -0.677148D-03 -0.683066D-04
+ 32 0.143955D-03 -0.537506D-02 0.141561D-02 -0.166282D-04 -0.767615D-03
+ 33 0.000000D+00 0.595385D-03 0.196028D-02 0.140534D-04 0.853534D-03
+ 34 0.352187D-02 -0.663986D-03 0.124851D-03 0.637294D-02 0.995738D-04
+ 35 -0.682004D-04 0.981775D-02 -0.137745D-01 -0.147364D-04 -0.884207D-03
+ 36 0.166026D-03 0.162282D-01 -0.199337D-01 0.876253D-04 -0.411819D-02
+ 37 0.341492D-02 0.194846D-02 0.000000D+00 0.399333D-03 -0.341982D-03
+ 38 0.306488D-01 -0.150648D-01 0.000000D+00 -0.407110D-03 -0.322146D-03
+ 39 0.000000D+00 0.000000D+00 -0.629050D-04 0.464101D-03 0.196201D-02
+ 40 0.180080D-03 0.243429D-02 0.278220D-02 0.589874D-03 0.232991D-03
+ 41 -0.144761D-01 -0.128880D-01 -0.281397D-01 0.619714D-03 0.185996D-02
+ 42 0.184406D-02 -0.285620D-03 0.291119D-03 0.476352D-03 0.200672D-02
+ 43 0.180080D-03 0.243429D-02 -0.278220D-02 0.619299D-03 0.816029D-04
+ 44 -0.144761D-01 -0.128880D-01 0.281397D-01 -0.466930D-03 -0.557702D-02
+ 45 -0.184406D-02 0.285619D-03 0.291119D-03 0.559973D-03 0.515584D-03
+ 6 7 8 9 10
+ 6 0.700799D+00
+ 7 -0.860781D-04 0.134461D+00
+ 8 -0.326445D-01 -0.645707D-03 0.677001D+00
+ 9 -0.128570D+00 0.171058D-02 -0.312775D-01 0.717834D+00
+ 10 0.141917D-03 -0.630429D-01 0.351407D-03 -0.944701D-04 0.131894D+00
+ 11 -0.289118D-01 0.948942D-04 -0.180267D+00 -0.121775D+00 -0.984910D-03
+ 12 0.340047D-01 -0.438453D-03 -0.564829D-01 -0.280185D+00 0.000000D+00
+ 13 0.556173D-04 0.865035D-02 -0.168770D-03 0.394571D-04 -0.630429D-01
+ 14 0.286555D-01 -0.168770D-03 0.647903D-01 0.245863D-01 0.351407D-03
+ 15 -0.183864D-01 -0.394571D-04 -0.245863D-01 -0.598310D-01 0.944700D-04
+ 16 -0.394947D-03 -0.725533D-02 -0.568875D-03 -0.284759D-03 0.850029D-02
+ 17 -0.229196D-01 0.485300D-05 -0.522103D-01 -0.302692D-01 -0.211252D-03
+ 18 -0.586391D-01 -0.556173D-04 -0.286555D-01 -0.183864D-01 -0.141917D-03
+ 19 -0.252929D-03 0.661253D-02 -0.106319D-02 0.429953D-03 -0.944944D-03
+ 20 0.436565D-02 -0.487562D-03 0.257136D-02 0.137213D-02 -0.172118D-03
+ 21 0.344595D-02 -0.110997D-02 0.177213D-02 -0.452571D-02 0.000000D+00
+ 22 -0.143905D-02 0.279064D-02 0.695862D-04 -0.641032D-05 0.721601D-02
+ 23 -0.116465D+00 0.187228D-04 -0.109762D-01 -0.293366D-01 0.223290D-04
+ 24 -0.263500D+00 0.359589D-04 0.216567D-02 0.313761D-02 -0.555082D-04
+ 25 -0.120334D-03 -0.362904D-01 0.508511D-03 -0.124120D-02 0.311390D-02
+ 26 0.292430D-01 0.512047D-03 -0.126323D+00 0.117766D+00 -0.679551D-04
+ 27 0.318843D-02 -0.111992D-02 0.117840D+00 -0.266471D+00 -0.129605D-03
+ 28 -0.489090D-04 0.252756D-02 -0.644766D-04 -0.116637D-03 -0.352075D-01
+ 29 -0.319123D-02 0.610369D-04 -0.116654D-01 0.299394D-02 0.768168D-03
+ 30 -0.443003D-02 0.910281D-04 -0.284498D-01 0.465763D-02 0.000000D+00
+ 31 0.185810D-04 0.699486D-02 0.570320D-04 0.411265D-04 0.311390D-02
+ 32 0.900420D-03 0.139182D-04 -0.769950D-03 0.320601D-02 -0.679551D-04
+ 33 0.323350D-03 0.113125D-04 0.417686D-02 -0.307082D-02 0.129605D-03
+ 34 -0.153504D-03 -0.649299D-03 -0.507078D-04 -0.224729D-04 0.721601D-02
+ 35 -0.342416D-02 0.000000D+00 -0.678138D-03 -0.744099D-03 0.223290D-04
+ 36 -0.305162D-02 0.000000D+00 -0.946547D-03 0.183875D-03 0.555082D-04
+ 37 0.685817D-03 0.919675D-04 0.485283D-03 0.367810D-04 -0.463264D-05
+ 38 -0.133967D-02 -0.146221D-02 -0.439277D-03 -0.226756D-03 0.182724D-03
+ 39 -0.351083D-03 0.405297D-03 -0.115479D-02 -0.610776D-03 0.000000D+00
+ 40 -0.382427D-03 -0.846793D-04 -0.292458D-03 0.851411D-05 0.214251D-04
+ 41 -0.188005D-02 0.397048D-03 -0.162896D-03 -0.735117D-04 -0.138685D-03
+ 42 0.309208D-03 0.561183D-03 -0.646030D-03 0.128913D-03 0.643589D-04
+ 43 -0.113507D-03 0.773006D-04 0.862410D-03 0.109125D-03 0.214251D-04
+ 44 -0.194726D-02 0.894360D-03 -0.982627D-04 0.136144D-02 -0.138685D-03
+ 45 0.401452D-03 -0.321575D-04 -0.232477D-03 -0.102031D-03 -0.643589D-04
+ 11 12 13 14 15
+ 11 0.739090D+00
+ 12 0.000000D+00 0.655819D+00
+ 13 0.948941D-04 0.438453D-03 0.134461D+00
+ 14 -0.180267D+00 0.564829D-01 -0.645707D-03 0.677001D+00
+ 15 0.121775D+00 -0.280185D+00 -0.171058D-02 0.312775D-01 0.717834D+00
+ 16 -0.503596D-04 0.630946D-03 -0.618451D-01 0.645636D-03 -0.163356D-03
+ 17 -0.284338D-01 0.779412D-01 0.325847D-03 -0.333538D+00 -0.332612D-01
+ 18 0.289118D-01 0.340047D-01 0.860781D-04 0.326445D-01 -0.128570D+00
+ 19 0.896479D-03 0.000000D+00 0.661253D-02 -0.106319D-02 -0.429952D-03
+ 20 -0.122021D-02 0.000000D+00 -0.487562D-03 0.257136D-02 -0.137213D-02
+ 21 0.000000D+00 -0.583466D-03 0.110997D-02 -0.177213D-02 -0.452571D-02
+ 22 -0.158366D-04 -0.395955D-04 -0.649299D-03 -0.507078D-04 0.224730D-04
+ 23 -0.550908D-02 0.152552D-02 0.000000D+00 -0.678138D-03 0.744100D-03
+ 24 0.380655D-03 0.199474D-02 0.000000D+00 0.946547D-03 0.183876D-03
+ 25 0.634854D-04 0.649593D-04 0.699486D-02 0.570320D-04 -0.411265D-04
+ 26 0.116591D-01 -0.150154D-01 0.139181D-04 -0.769950D-03 -0.320601D-02
+ 27 0.163369D-01 -0.185714D-01 -0.113124D-04 -0.417686D-02 -0.307082D-02
+ 28 0.860906D-03 0.000000D+00 0.252756D-02 -0.644766D-04 0.116637D-03
+ 29 -0.334470D+00 0.000000D+00 0.610369D-04 -0.116654D-01 -0.299394D-02
+ 30 0.000000D+00 -0.590945D-01 -0.910281D-04 0.284498D-01 0.465763D-02
+ 31 0.634854D-04 -0.649594D-04 -0.362904D-01 0.508511D-03 0.124120D-02
+ 32 0.116591D-01 0.150154D-01 0.512047D-03 -0.126323D+00 -0.117766D+00
+ 33 -0.163369D-01 -0.185714D-01 0.111992D-02 -0.117840D+00 -0.266471D+00
+ 34 -0.158367D-04 0.395953D-04 0.279064D-02 0.695861D-04 0.641030D-05
+ 35 -0.550908D-02 -0.152552D-02 0.187227D-04 -0.109762D-01 0.293366D-01
+ 36 -0.380655D-03 0.199474D-02 -0.359588D-04 -0.216567D-02 0.313761D-02
+ 37 -0.277146D-03 0.000000D+00 0.919675D-04 0.485283D-03 -0.367810D-04
+ 38 -0.350507D-03 0.000000D+00 -0.146221D-02 -0.439277D-03 0.226756D-03
+ 39 0.000000D+00 0.120293D-02 -0.405297D-03 0.115479D-02 -0.610776D-03
+ 40 -0.128342D-03 0.500800D-03 0.773006D-04 0.862411D-03 -0.109125D-03
+ 41 -0.218395D-04 0.204723D-03 0.894360D-03 -0.982624D-04 -0.136144D-02
+ 42 0.177409D-03 0.364530D-03 0.321576D-04 0.232477D-03 -0.102031D-03
+ 43 -0.128342D-03 -0.500800D-03 -0.846792D-04 -0.292458D-03 -0.851432D-05
+ 44 -0.218395D-04 -0.204723D-03 0.397048D-03 -0.162895D-03 0.735113D-04
+ 45 -0.177409D-03 0.364529D-03 -0.561183D-03 0.646029D-03 0.128913D-03
+ 16 17 18 19 20
+ 16 0.133536D+00
+ 17 -0.750317D-03 0.686135D+00
+ 18 -0.258307D-02 -0.352213D-01 0.700799D+00
+ 19 0.421311D-02 -0.277881D-03 0.252929D-03 0.530202D+00
+ 20 0.341284D-03 -0.225030D-01 -0.436565D-02 0.106558D-01 0.478414D+00
+ 21 0.156996D-02 -0.294430D-01 0.344595D-02 0.000000D+00 0.000000D+00
+ 22 0.637294D-02 0.995737D-04 0.153504D-03 -0.336513D-02 0.503430D-03
+ 23 -0.147364D-04 -0.884208D-03 0.342416D-02 0.245855D-03 0.117395D-02
+ 24 -0.876252D-04 0.411819D-02 -0.305162D-02 -0.563536D-03 -0.166944D-02
+ 25 -0.677148D-03 -0.683065D-04 -0.185809D-04 0.141845D-03 0.137944D-03
+ 26 -0.166281D-04 -0.767615D-03 -0.900420D-03 -0.136440D-03 -0.135164D-03
+ 27 -0.140535D-04 -0.853534D-03 0.323350D-03 -0.166690D-05 -0.175603D-03
+ 28 0.705316D-02 0.631796D-04 0.489089D-04 -0.940364D-03 0.193620D-03
+ 29 0.991526D-05 0.818573D-03 0.319123D-02 -0.610569D-04 0.132135D-04
+ 30 0.167465D-04 0.211934D-02 -0.443003D-02 0.000000D+00 0.000000D+00
+ 31 0.300491D-02 0.464654D-04 0.120334D-03 0.141845D-03 0.137944D-03
+ 32 0.148507D-03 -0.105804D-01 -0.292430D-01 -0.136440D-03 -0.135164D-03
+ 33 -0.188119D-04 0.215378D-02 0.318843D-02 0.166689D-05 0.175603D-03
+ 34 -0.359275D-01 -0.635214D-03 0.143905D-02 -0.336513D-02 0.503430D-03
+ 35 -0.783828D-03 -0.124684D+00 0.116465D+00 0.245855D-03 0.117395D-02
+ 36 0.112743D-02 0.116068D+00 -0.263500D+00 0.563536D-03 0.166944D-02
+ 37 0.399333D-03 -0.341982D-03 -0.685817D-03 -0.273734D+00 0.764273D-01
+ 38 -0.407110D-03 -0.322146D-03 0.133967D-02 0.802929D-01 -0.701460D-01
+ 39 -0.464101D-03 -0.196201D-02 -0.351083D-03 0.000000D+00 0.000000D+00
+ 40 0.619299D-03 0.816030D-04 0.113508D-03 -0.100225D+00 -0.457749D-01
+ 41 -0.466930D-03 -0.557702D-02 0.194726D-02 -0.440354D-01 -0.807685D-01
+ 42 -0.559973D-03 -0.515583D-03 0.401452D-03 -0.969268D-01 -0.769066D-01
+ 43 0.589874D-03 0.232991D-03 0.382427D-03 -0.100225D+00 -0.457749D-01
+ 44 0.619714D-03 0.185996D-02 0.188005D-02 -0.440354D-01 -0.807685D-01
+ 45 -0.476351D-03 -0.200672D-02 0.309208D-03 0.969268D-01 0.769066D-01
+ 21 22 23 24 25
+ 21 0.576210D+00
+ 22 0.873808D-03 0.249256D-01
+ 23 0.916288D-03 0.697463D-03 0.130737D+00
+ 24 0.905330D-03 0.134535D-02 0.125986D+00 0.279929D+00
+ 25 0.563012D-04 -0.405526D-02 0.821849D-05 0.375130D-04 0.253310D-01
+ 26 0.135837D-02 -0.149042D-04 0.977540D-03 -0.414818D-03 -0.626021D-03
+ 27 -0.289269D-04 0.187472D-04 0.410198D-03 0.815608D-03 0.122064D-02
+ 28 0.000000D+00 0.307583D-03 -0.393810D-04 -0.100518D-04 -0.394882D-02
+ 29 0.000000D+00 -0.490024D-05 -0.707816D-03 0.165482D-03 -0.134774D-04
+ 30 0.178026D-03 -0.113898D-04 -0.140440D-02 -0.530531D-05 0.996463D-05
+ 31 -0.563011D-04 -0.115541D-02 -0.174417D-05 0.133564D-04 0.253837D-03
+ 32 -0.135837D-02 -0.419168D-05 0.468042D-04 -0.107504D-03 0.755537D-05
+ 33 -0.289269D-04 -0.595164D-05 -0.101473D-03 -0.358716D-04 -0.841832D-05
+ 34 -0.873808D-03 0.284074D-03 0.420269D-04 0.258320D-04 -0.115541D-02
+ 35 -0.916288D-03 0.420269D-04 0.531839D-03 -0.775225D-03 -0.174417D-05
+ 36 0.905330D-03 -0.258321D-04 0.775225D-03 -0.114617D-02 -0.133563D-04
+ 37 0.000000D+00 -0.282609D-03 0.528732D-04 0.261323D-04 0.186024D-04
+ 38 0.000000D+00 0.668745D-03 0.725568D-04 0.327791D-03 0.159505D-04
+ 39 -0.448617D-01 -0.286712D-03 0.552190D-04 -0.102948D-03 -0.508742D-04
+ 40 -0.974046D-01 0.458342D-04 -0.211397D-03 0.379090D-03 -0.297274D-04
+ 41 -0.747011D-01 -0.397249D-03 0.452892D-04 0.112477D-02 -0.127691D-05
+ 42 -0.220817D+00 -0.548448D-03 -0.134129D-03 0.385882D-03 -0.403566D-04
+ 43 0.974046D-01 -0.293375D-04 0.316733D-04 0.146940D-03 -0.775151D-04
+ 44 0.747011D-01 -0.293836D-03 0.370757D-04 0.472567D-04 0.474254D-04
+ 45 -0.220817D+00 0.743547D-04 -0.169634D-03 0.424236D-03 0.933186D-05
+ 26 27 28 29 30
+ 26 0.130643D+00
+ 27 -0.127303D+00 0.282021D+00
+ 28 -0.869684D-05 0.211985D-04 0.251011D-01
+ 29 0.797200D-03 -0.333818D-03 -0.872447D-03 0.355321D+00
+ 30 0.572618D-03 0.948938D-03 0.000000D+00 0.000000D+00 0.578143D-01
+ 31 0.755542D-05 0.841820D-05 -0.394882D-02 -0.134775D-04 -0.996462D-05
+ 32 0.374350D-03 0.799017D-03 -0.869688D-05 0.797200D-03 -0.572618D-03
+ 33 -0.799017D-03 -0.106141D-02 -0.211986D-04 0.333819D-03 0.948938D-03
+ 34 -0.419174D-05 0.595174D-05 0.307583D-03 -0.490021D-05 0.113898D-04
+ 35 0.468042D-04 0.101473D-03 -0.393810D-04 -0.707816D-03 0.140440D-02
+ 36 0.107504D-03 -0.358716D-04 0.100519D-04 -0.165482D-03 -0.530526D-05
+ 37 0.452174D-04 -0.711763D-05 -0.101412D-03 0.249013D-04 0.000000D+00
+ 38 -0.115354D-03 0.557369D-04 0.183166D-03 -0.581207D-05 0.000000D+00
+ 39 0.112888D-04 -0.204685D-04 0.000000D+00 0.000000D+00 0.103351D-04
+ 40 -0.273356D-04 -0.211665D-05 0.308261D-05 0.132111D-04 0.223968D-04
+ 41 0.270962D-04 0.204729D-04 -0.622640D-04 0.419029D-05 0.872902D-04
+ 42 -0.657418D-04 0.100867D-04 -0.151605D-03 -0.428595D-04 0.478112D-04
+ 43 0.309734D-04 -0.816232D-05 0.308260D-05 0.132111D-04 -0.223968D-04
+ 44 -0.458665D-03 0.278391D-04 -0.622640D-04 0.419028D-05 -0.872902D-04
+ 45 0.606926D-04 -0.801032D-05 0.151605D-03 0.428594D-04 0.478111D-04
+ 31 32 33 34 35
+ 31 0.253310D-01
+ 32 -0.626021D-03 0.130643D+00
+ 33 -0.122064D-02 0.127303D+00 0.282021D+00
+ 34 -0.405526D-02 -0.149042D-04 -0.187472D-04 0.249256D-01
+ 35 0.821850D-05 0.977540D-03 -0.410198D-03 0.697463D-03 0.130737D+00
+ 36 -0.375130D-04 0.414817D-03 0.815608D-03 -0.134535D-02 -0.125986D+00
+ 37 0.186024D-04 0.452174D-04 0.711763D-05 -0.282609D-03 0.528732D-04
+ 38 0.159505D-04 -0.115354D-03 -0.557369D-04 0.668745D-03 0.725568D-04
+ 39 0.508742D-04 -0.112887D-04 -0.204685D-04 0.286712D-03 -0.552190D-04
+ 40 -0.775151D-04 0.309733D-04 0.816228D-05 -0.293376D-04 0.316734D-04
+ 41 0.474254D-04 -0.458666D-03 -0.278393D-04 -0.293836D-03 0.370757D-04
+ 42 -0.933190D-05 -0.606927D-04 -0.801044D-05 -0.743547D-04 0.169634D-03
+ 43 -0.297274D-04 -0.273356D-04 0.211665D-05 0.458342D-04 -0.211397D-03
+ 44 -0.127692D-05 0.270961D-04 -0.204731D-04 -0.397249D-03 0.452891D-04
+ 45 0.403566D-04 0.657419D-04 0.100868D-04 0.548448D-03 0.134129D-03
+ 36 37 38 39 40
+ 36 0.279929D+00
+ 37 -0.261323D-04 0.297979D+00
+ 38 -0.327791D-03 -0.864355D-01 0.799862D-01
+ 39 -0.102948D-03 0.000000D+00 0.000000D+00 0.447312D-01
+ 40 -0.146940D-03 -0.140045D-01 -0.112514D-01 -0.260999D-01 0.105335D+00
+ 41 -0.472565D-04 0.391457D-02 0.359469D-02 0.908400D-02 0.470999D-01
+ 42 0.424236D-03 0.274486D-03 0.962173D-03 0.575356D-03 0.107694D+00
+ 43 -0.379090D-03 -0.140045D-01 -0.112514D-01 0.260999D-01 0.757828D-02
+ 44 -0.112477D-02 0.391457D-02 0.359469D-02 -0.908400D-02 0.689872D-02
+ 45 0.385881D-03 -0.274486D-03 -0.962173D-03 0.575356D-03 0.126360D-01
+ 41 42 43 44 45
+ 41 0.902211D-01
+ 42 0.844356D-01 0.237854D+00
+ 43 0.689872D-02 -0.126360D-01 0.105335D+00
+ 44 0.418583D-02 -0.932679D-02 0.470999D-01 0.902211D-01
+ 45 0.932679D-02 -0.198654D-01 -0.107694D+00 -0.844356D-01 0.237854D+00
+ Internal force constants:
+ 1 2 3 4 5
+ 1 0.174105D+00
+ 2 -0.680842D-01 0.133536D+00
+ 3 0.696180D-02 -0.618451D-01 0.134461D+00
+ 4 -0.735415D-02 0.850029D-02 -0.630429D-01 0.131894D+00
+ 5 0.696180D-02 -0.725533D-02 0.865035D-02 -0.630429D-01 0.134461D+00
+ 6 -0.680842D-01 0.950061D-02 -0.725533D-02 0.850029D-02 -0.618451D-01
+ 7 -0.693385D-01 0.421311D-02 0.661253D-02 -0.944944D-03 0.661253D-02
+ 8 0.352187D-02 -0.359275D-01 0.279064D-02 0.721601D-02 -0.649299D-03
+ 9 0.737527D-02 0.300491D-02 -0.362904D-01 0.311390D-02 0.699486D-02
+ 10 -0.736921D-03 0.705316D-02 0.252756D-02 -0.352075D-01 0.252756D-02
+ 11 0.737527D-02 -0.677148D-03 0.699486D-02 0.311390D-02 -0.362904D-01
+ 12 0.352187D-02 0.637294D-02 -0.649299D-03 0.721601D-02 0.279064D-02
+ 13 0.341492D-02 0.399333D-03 0.919675D-04 -0.463264D-05 0.919675D-04
+ 14 0.180080D-03 0.589874D-03 -0.846793D-04 0.214251D-04 0.773006D-04
+ 15 0.180080D-03 0.619299D-03 0.773006D-04 0.214251D-04 -0.846792D-04
+ 16 -0.594931D-02 0.519235D-03 0.441399D-03 0.294447D-03 0.441399D-03
+ 17 0.655945D-03 -0.750317D-03 0.325847D-03 -0.211252D-03 0.485300D-05
+ 18 -0.125677D-03 0.645636D-03 -0.645707D-03 0.351407D-03 -0.168770D-03
+ 19 -0.423012D-03 -0.503596D-04 0.948942D-04 -0.984910D-03 0.948941D-04
+ 20 -0.125677D-03 -0.568875D-03 -0.168770D-03 0.351407D-03 -0.645707D-03
+ 21 0.655945D-03 0.774495D-03 0.485300D-05 -0.211252D-03 0.325847D-03
+ 22 0.345489D-02 0.341284D-03 -0.487562D-03 -0.172118D-03 -0.487562D-03
+ 23 -0.682005D-04 -0.783828D-03 0.187228D-04 0.223290D-04 0.000000D+00
+ 24 0.143955D-03 0.148507D-03 0.512047D-03 -0.679551D-04 0.139181D-04
+ 25 0.886384D-05 0.991528D-05 0.610369D-04 0.768168D-03 0.610369D-04
+ 26 0.143955D-03 -0.166282D-04 0.139182D-04 -0.679551D-04 0.512047D-03
+ 27 -0.682004D-04 -0.147364D-04 0.000000D+00 0.223290D-04 0.187227D-04
+ 28 0.306488D-01 -0.407110D-03 -0.146221D-02 0.182724D-03 -0.146221D-02
+ 29 -0.144761D-01 0.619714D-03 0.397048D-03 -0.138685D-03 0.894360D-03
+ 30 -0.144761D-01 -0.466930D-03 0.894360D-03 -0.138685D-03 0.397048D-03
+ 31 0.000000D+00 -0.170195D-02 0.662949D-04 0.000000D+00 -0.662949D-04
+ 32 -0.493313D-03 0.258307D-02 -0.860781D-04 0.141917D-03 0.556173D-04
+ 33 -0.772942D-03 0.163356D-03 0.171058D-02 -0.944701D-04 0.394571D-04
+ 34 0.000000D+00 -0.630946D-03 -0.438453D-03 0.000000D+00 0.438453D-03
+ 35 0.772942D-03 0.284759D-03 -0.394571D-04 0.944700D-04 -0.171058D-02
+ 36 0.493313D-03 0.394947D-03 -0.556173D-04 -0.141917D-03 0.860781D-04
+ 37 0.000000D+00 -0.156996D-02 -0.110997D-02 0.000000D+00 0.110997D-02
+ 38 -0.166026D-03 -0.112743D-02 0.359589D-04 -0.555082D-04 0.000000D+00
+ 39 0.000000D+00 0.188119D-04 -0.111992D-02 -0.129605D-03 -0.113124D-04
+ 40 0.000000D+00 -0.167465D-04 0.910281D-04 0.000000D+00 -0.910281D-04
+ 41 0.000000D+00 0.140534D-04 0.113125D-04 0.129605D-03 0.111992D-02
+ 42 0.166026D-03 0.876253D-04 0.000000D+00 0.555082D-04 -0.359588D-04
+ 43 0.000000D+00 0.464101D-03 0.405297D-03 0.000000D+00 -0.405297D-03
+ 44 0.184406D-02 0.476352D-03 0.561183D-03 0.643589D-04 0.321576D-04
+ 45 -0.184406D-02 0.559973D-03 -0.321575D-04 -0.643589D-04 -0.561183D-03
+ 6 7 8 9 10
+ 6 0.133536D+00
+ 7 0.421311D-02 0.530202D+00
+ 8 0.637294D-02 -0.336513D-02 0.249256D-01
+ 9 -0.677148D-03 0.141845D-03 -0.405526D-02 0.253310D-01
+ 10 0.705316D-02 -0.940364D-03 0.307583D-03 -0.394882D-02 0.251011D-01
+ 11 0.300491D-02 0.141845D-03 -0.115541D-02 0.253837D-03 -0.394882D-02
+ 12 -0.359275D-01 -0.336513D-02 0.284074D-03 -0.115541D-02 0.307583D-03
+ 13 0.399333D-03 -0.273734D+00 -0.282609D-03 0.186024D-04 -0.101412D-03
+ 14 0.619299D-03 -0.100225D+00 0.458342D-04 -0.297274D-04 0.308261D-05
+ 15 0.589874D-03 -0.100225D+00 -0.293375D-04 -0.775151D-04 0.308260D-05
+ 16 0.519235D-03 -0.124999D-02 -0.663986D-03 -0.181761D-03 -0.141968D-03
+ 17 0.774495D-03 -0.277881D-03 -0.635214D-03 0.464654D-04 0.631796D-04
+ 18 -0.568875D-03 -0.106319D-02 0.695862D-04 0.508511D-03 -0.644766D-04
+ 19 -0.503596D-04 0.896479D-03 -0.158366D-04 0.634854D-04 0.860906D-03
+ 20 0.645636D-03 -0.106319D-02 -0.507078D-04 0.570320D-04 -0.644766D-04
+ 21 -0.750317D-03 -0.277881D-03 0.995737D-04 -0.683065D-04 0.631796D-04
+ 22 0.341284D-03 0.106558D-01 0.503430D-03 0.137944D-03 0.193620D-03
+ 23 -0.147364D-04 0.245855D-03 0.697463D-03 0.821849D-05 -0.393810D-04
+ 24 -0.166281D-04 -0.136440D-03 -0.149042D-04 -0.626021D-03 -0.869684D-05
+ 25 0.991526D-05 -0.610569D-04 -0.490024D-05 -0.134774D-04 -0.872447D-03
+ 26 0.148507D-03 -0.136440D-03 -0.419168D-05 0.755537D-05 -0.869688D-05
+ 27 -0.783828D-03 0.245855D-03 0.420269D-04 -0.174417D-05 -0.393810D-04
+ 28 -0.407110D-03 0.802929D-01 0.668745D-03 0.159505D-04 0.183166D-03
+ 29 -0.466930D-03 -0.440354D-01 -0.397249D-03 -0.127691D-05 -0.622640D-04
+ 30 0.619714D-03 -0.440354D-01 -0.293836D-03 0.474254D-04 -0.622640D-04
+ 31 0.170195D-02 0.000000D+00 -0.124851D-03 0.135534D-03 0.000000D+00
+ 32 -0.394947D-03 -0.252929D-03 -0.143905D-02 -0.120334D-03 -0.489090D-04
+ 33 -0.284759D-03 0.429953D-03 -0.641032D-05 -0.124120D-02 -0.116637D-03
+ 34 0.630946D-03 0.000000D+00 -0.395955D-04 0.649593D-04 0.000000D+00
+ 35 -0.163356D-03 -0.429952D-03 0.224730D-04 -0.411265D-04 0.116637D-03
+ 36 -0.258307D-02 0.252929D-03 0.153504D-03 -0.185809D-04 0.489089D-04
+ 37 0.156996D-02 0.000000D+00 0.873808D-03 0.563012D-04 0.000000D+00
+ 38 -0.876252D-04 -0.563536D-03 0.134535D-02 0.375130D-04 -0.100518D-04
+ 39 -0.140535D-04 -0.166690D-05 0.187472D-04 0.122064D-02 0.211985D-04
+ 40 0.167465D-04 0.000000D+00 -0.113898D-04 0.996463D-05 0.000000D+00
+ 41 -0.188119D-04 0.166689D-05 -0.595164D-05 -0.841832D-05 -0.211986D-04
+ 42 0.112743D-02 0.563536D-03 -0.258321D-04 -0.133563D-04 0.100519D-04
+ 43 -0.464101D-03 0.000000D+00 -0.286712D-03 -0.508742D-04 0.000000D+00
+ 44 -0.559973D-03 -0.969268D-01 -0.548448D-03 -0.403566D-04 -0.151605D-03
+ 45 -0.476351D-03 0.969268D-01 0.743547D-04 0.933186D-05 0.151605D-03
+ 11 12 13 14 15
+ 11 0.253310D-01
+ 12 -0.405526D-02 0.249256D-01
+ 13 0.186024D-04 -0.282609D-03 0.297979D+00
+ 14 -0.775151D-04 -0.293376D-04 -0.140045D-01 0.105335D+00
+ 15 -0.297274D-04 0.458342D-04 -0.140045D-01 0.757828D-02 0.105335D+00
+ 16 -0.181762D-03 -0.663986D-03 0.194846D-02 0.243429D-02 0.243429D-02
+ 17 -0.683066D-04 0.995738D-04 -0.341982D-03 0.232991D-03 0.816029D-04
+ 18 0.570320D-04 -0.507078D-04 0.485283D-03 -0.292458D-03 0.862410D-03
+ 19 0.634854D-04 -0.158367D-04 -0.277146D-03 -0.128342D-03 -0.128342D-03
+ 20 0.508511D-03 0.695861D-04 0.485283D-03 0.862411D-03 -0.292458D-03
+ 21 0.464654D-04 -0.635214D-03 -0.341982D-03 0.816030D-04 0.232991D-03
+ 22 0.137944D-03 0.503430D-03 0.764273D-01 -0.457749D-01 -0.457749D-01
+ 23 -0.174417D-05 0.420269D-04 0.528732D-04 -0.211397D-03 0.316733D-04
+ 24 0.755542D-05 -0.419174D-05 0.452174D-04 -0.273356D-04 0.309734D-04
+ 25 -0.134775D-04 -0.490021D-05 0.249013D-04 0.132111D-04 0.132111D-04
+ 26 -0.626021D-03 -0.149042D-04 0.452174D-04 0.309733D-04 -0.273356D-04
+ 27 0.821850D-05 0.697463D-03 0.528732D-04 0.316734D-04 -0.211397D-03
+ 28 0.159505D-04 0.668745D-03 -0.864355D-01 -0.112514D-01 -0.112514D-01
+ 29 0.474254D-04 -0.293836D-03 0.391457D-02 0.470999D-01 0.689872D-02
+ 30 -0.127692D-05 -0.397249D-03 0.391457D-02 0.689872D-02 0.470999D-01
+ 31 -0.135534D-03 0.124851D-03 0.000000D+00 0.278220D-02 -0.278220D-02
+ 32 0.185810D-04 -0.153504D-03 0.685817D-03 -0.382427D-03 -0.113507D-03
+ 33 0.411265D-04 -0.224729D-04 0.367810D-04 0.851411D-05 0.109125D-03
+ 34 -0.649594D-04 0.395953D-04 0.000000D+00 0.500800D-03 -0.500800D-03
+ 35 0.124120D-02 0.641030D-05 -0.367810D-04 -0.109125D-03 -0.851432D-05
+ 36 0.120334D-03 0.143905D-02 -0.685817D-03 0.113508D-03 0.382427D-03
+ 37 -0.563011D-04 -0.873808D-03 0.000000D+00 -0.974046D-01 0.974046D-01
+ 38 0.133564D-04 0.258320D-04 0.261323D-04 0.379090D-03 0.146940D-03
+ 39 0.841820D-05 0.595174D-05 -0.711763D-05 -0.211665D-05 -0.816232D-05
+ 40 -0.996462D-05 0.113898D-04 0.000000D+00 0.223968D-04 -0.223968D-04
+ 41 -0.122064D-02 -0.187472D-04 0.711763D-05 0.816228D-05 0.211665D-05
+ 42 -0.375130D-04 -0.134535D-02 -0.261323D-04 -0.146940D-03 -0.379090D-03
+ 43 0.508742D-04 0.286712D-03 0.000000D+00 -0.260999D-01 0.260999D-01
+ 44 -0.933190D-05 -0.743547D-04 0.274486D-03 0.107694D+00 -0.126360D-01
+ 45 0.403566D-04 0.548448D-03 -0.274486D-03 0.126360D-01 -0.107694D+00
+ 16 17 18 19 20
+ 16 0.636101D+00
+ 17 -0.172342D+00 0.686135D+00
+ 18 -0.272344D-01 -0.333538D+00 0.677001D+00
+ 19 0.209669D-02 -0.284338D-01 -0.180267D+00 0.739090D+00
+ 20 -0.272344D-01 -0.522103D-01 0.647903D-01 -0.180267D+00 0.677001D+00
+ 21 -0.172342D+00 0.630286D-01 -0.522103D-01 -0.284338D-01 -0.333538D+00
+ 22 -0.207739D+00 -0.225030D-01 0.257136D-02 -0.122021D-02 0.257136D-02
+ 23 0.981775D-02 -0.124684D+00 -0.109762D-01 -0.550908D-02 -0.678138D-03
+ 24 -0.537506D-02 -0.105804D-01 -0.126323D+00 0.116591D-01 -0.769950D-03
+ 25 0.648663D-03 0.818572D-03 -0.116654D-01 -0.334470D+00 -0.116654D-01
+ 26 -0.537506D-02 -0.767615D-03 -0.769950D-03 0.116591D-01 -0.126323D+00
+ 27 0.981775D-02 -0.884207D-03 -0.678138D-03 -0.550908D-02 -0.109762D-01
+ 28 -0.150648D-01 -0.322146D-03 -0.439277D-03 -0.350507D-03 -0.439277D-03
+ 29 -0.128880D-01 0.185996D-02 -0.162896D-03 -0.218395D-04 -0.982624D-04
+ 30 -0.128880D-01 -0.557702D-02 -0.982627D-04 -0.218395D-04 -0.162895D-03
+ 31 0.000000D+00 0.459478D-01 0.791214D-01 0.000000D+00 -0.791214D-01
+ 32 0.114338D+00 0.352213D-01 -0.326445D-01 -0.289118D-01 0.286555D-01
+ 33 0.291555D-01 0.332612D-01 -0.312775D-01 -0.121775D+00 0.245863D-01
+ 34 0.000000D+00 -0.779412D-01 -0.564829D-01 0.000000D+00 0.564829D-01
+ 35 -0.291555D-01 0.302692D-01 -0.245863D-01 0.121775D+00 0.312775D-01
+ 36 -0.114338D+00 0.229196D-01 -0.286555D-01 0.289118D-01 0.326445D-01
+ 37 0.000000D+00 0.294430D-01 0.177213D-02 0.000000D+00 -0.177213D-02
+ 38 -0.162282D-01 -0.116068D+00 0.216567D-02 0.380655D-03 0.946547D-03
+ 39 -0.595385D-03 -0.215378D-02 0.117840D+00 0.163369D-01 -0.417686D-02
+ 40 0.000000D+00 -0.211934D-02 -0.284498D-01 0.000000D+00 0.284498D-01
+ 41 0.595385D-03 0.853534D-03 0.417686D-02 -0.163369D-01 -0.117840D+00
+ 42 0.162282D-01 -0.411819D-02 -0.946547D-03 -0.380655D-03 -0.216567D-02
+ 43 0.000000D+00 0.196201D-02 -0.115479D-02 0.000000D+00 0.115479D-02
+ 44 -0.285620D-03 0.200672D-02 -0.646030D-03 0.177409D-03 0.232477D-03
+ 45 0.285619D-03 0.515584D-03 -0.232477D-03 -0.177409D-03 0.646029D-03
+ 21 22 23 24 25
+ 21 0.686135D+00
+ 22 -0.225030D-01 0.478414D+00
+ 23 -0.884208D-03 0.117395D-02 0.130737D+00
+ 24 -0.767615D-03 -0.135164D-03 0.977540D-03 0.130643D+00
+ 25 0.818573D-03 0.132135D-04 -0.707816D-03 0.797200D-03 0.355321D+00
+ 26 -0.105804D-01 -0.135164D-03 0.468042D-04 0.374350D-03 0.797200D-03
+ 27 -0.124684D+00 0.117395D-02 0.531839D-03 0.468042D-04 -0.707816D-03
+ 28 -0.322146D-03 -0.701460D-01 0.725568D-04 -0.115354D-03 -0.581207D-05
+ 29 -0.557702D-02 -0.807685D-01 0.452892D-04 0.270962D-04 0.419029D-05
+ 30 0.185996D-02 -0.807685D-01 0.370757D-04 -0.458665D-03 0.419028D-05
+ 31 -0.459478D-01 0.000000D+00 0.137745D-01 -0.141561D-02 0.000000D+00
+ 32 -0.229196D-01 0.436565D-02 -0.116465D+00 0.292430D-01 -0.319123D-02
+ 33 -0.302692D-01 0.137213D-02 -0.293366D-01 0.117766D+00 0.299394D-02
+ 34 0.779412D-01 0.000000D+00 0.152552D-02 -0.150154D-01 0.000000D+00
+ 35 -0.332612D-01 -0.137213D-02 0.744100D-03 -0.320601D-02 -0.299394D-02
+ 36 -0.352213D-01 -0.436565D-02 0.342416D-02 -0.900420D-03 0.319123D-02
+ 37 -0.294430D-01 0.000000D+00 0.916288D-03 0.135837D-02 0.000000D+00
+ 38 0.411819D-02 -0.166944D-02 0.125986D+00 -0.414818D-03 0.165482D-03
+ 39 -0.853534D-03 -0.175603D-03 0.410198D-03 -0.127303D+00 -0.333818D-03
+ 40 0.211934D-02 0.000000D+00 -0.140440D-02 0.572618D-03 0.000000D+00
+ 41 0.215378D-02 0.175603D-03 -0.101473D-03 -0.799017D-03 0.333819D-03
+ 42 0.116068D+00 0.166944D-02 0.775225D-03 0.107504D-03 -0.165482D-03
+ 43 -0.196201D-02 0.000000D+00 0.552190D-04 0.112888D-04 0.000000D+00
+ 44 -0.515583D-03 -0.769066D-01 -0.134129D-03 -0.657418D-04 -0.428595D-04
+ 45 -0.200672D-02 0.769066D-01 -0.169634D-03 0.606926D-04 0.428594D-04
+ 26 27 28 29 30
+ 26 0.130643D+00
+ 27 0.977540D-03 0.130737D+00
+ 28 -0.115354D-03 0.725568D-04 0.799862D-01
+ 29 -0.458666D-03 0.370757D-04 0.359469D-02 0.902211D-01
+ 30 0.270961D-04 0.452891D-04 0.359469D-02 0.418583D-02 0.902211D-01
+ 31 0.141561D-02 -0.137745D-01 0.000000D+00 -0.281397D-01 0.281397D-01
+ 32 0.900420D-03 -0.342416D-02 -0.133967D-02 -0.188005D-02 -0.194726D-02
+ 33 0.320601D-02 -0.744099D-03 -0.226756D-03 -0.735117D-04 0.136144D-02
+ 34 0.150154D-01 -0.152552D-02 0.000000D+00 0.204723D-03 -0.204723D-03
+ 35 -0.117766D+00 0.293366D-01 0.226756D-03 -0.136144D-02 0.735113D-04
+ 36 -0.292430D-01 0.116465D+00 0.133967D-02 0.194726D-02 0.188005D-02
+ 37 -0.135837D-02 -0.916288D-03 0.000000D+00 -0.747011D-01 0.747011D-01
+ 38 -0.107504D-03 -0.775225D-03 0.327791D-03 0.112477D-02 0.472567D-04
+ 39 0.799017D-03 0.101473D-03 0.557369D-04 0.204729D-04 0.278391D-04
+ 40 -0.572618D-03 0.140440D-02 0.000000D+00 0.872902D-04 -0.872902D-04
+ 41 0.127303D+00 -0.410198D-03 -0.557369D-04 -0.278393D-04 -0.204731D-04
+ 42 0.414817D-03 -0.125986D+00 -0.327791D-03 -0.472565D-04 -0.112477D-02
+ 43 -0.112887D-04 -0.552190D-04 0.000000D+00 0.908400D-02 -0.908400D-02
+ 44 -0.606927D-04 0.169634D-03 0.962173D-03 0.844356D-01 -0.932679D-02
+ 45 0.657419D-04 0.134129D-03 -0.962173D-03 0.932679D-02 -0.844356D-01
+ 31 32 33 34 35
+ 31 0.657702D+00
+ 32 -0.265544D+00 0.700799D+00
+ 33 0.358102D-01 -0.128570D+00 0.717834D+00
+ 34 -0.725590D-01 0.340047D-01 -0.280185D+00 0.655819D+00
+ 35 0.358102D-01 -0.183864D-01 -0.598310D-01 -0.280185D+00 0.717834D+00
+ 36 -0.265544D+00 -0.586391D-01 -0.183864D-01 0.340047D-01 -0.128570D+00
+ 37 -0.889024D-01 0.344595D-02 -0.452571D-02 -0.583466D-03 -0.452571D-02
+ 38 -0.199337D-01 -0.263500D+00 0.313761D-02 0.199474D-02 0.183876D-03
+ 39 0.196028D-02 0.318843D-02 -0.266471D+00 -0.185714D-01 -0.307082D-02
+ 40 -0.134619D-02 -0.443003D-02 0.465763D-02 -0.590945D-01 0.465763D-02
+ 41 0.196028D-02 0.323350D-03 -0.307082D-02 -0.185714D-01 -0.266471D+00
+ 42 -0.199337D-01 -0.305162D-02 0.183875D-03 0.199474D-02 0.313761D-02
+ 43 -0.629050D-04 -0.351083D-03 -0.610776D-03 0.120293D-02 -0.610776D-03
+ 44 0.291119D-03 0.309208D-03 0.128913D-03 0.364530D-03 -0.102031D-03
+ 45 0.291119D-03 0.401452D-03 -0.102031D-03 0.364529D-03 0.128913D-03
+ 36 37 38 39 40
+ 36 0.700799D+00
+ 37 0.344595D-02 0.576210D+00
+ 38 -0.305162D-02 0.905330D-03 0.279929D+00
+ 39 0.323350D-03 -0.289269D-04 0.815608D-03 0.282021D+00
+ 40 -0.443003D-02 0.178026D-03 -0.530531D-05 0.948938D-03 0.578143D-01
+ 41 0.318843D-02 -0.289269D-04 -0.358716D-04 -0.106141D-02 0.948938D-03
+ 42 -0.263500D+00 0.905330D-03 -0.114617D-02 -0.358716D-04 -0.530526D-05
+ 43 -0.351083D-03 -0.448617D-01 -0.102948D-03 -0.204685D-04 0.103351D-04
+ 44 0.401452D-03 -0.220817D+00 0.385882D-03 0.100867D-04 0.478112D-04
+ 45 0.309208D-03 -0.220817D+00 0.424236D-03 -0.801032D-05 0.478111D-04
+ 41 42 43 44 45
+ 41 0.282021D+00
+ 42 0.815608D-03 0.279929D+00
+ 43 -0.204685D-04 -0.102948D-03 0.447312D-01
+ 44 -0.801044D-05 0.424236D-03 0.575356D-03 0.237854D+00
+ 45 0.100868D-04 0.385881D-03 0.575356D-03 -0.198654D-01 0.237854D+00
+ Force constants in internal coordinates:
+ 1 2 3 4 5
+ 1 0.174105D+00
+ 2 -0.680842D-01 0.133536D+00
+ 3 0.696180D-02 -0.618451D-01 0.134461D+00
+ 4 -0.735415D-02 0.850029D-02 -0.630429D-01 0.131894D+00
+ 5 0.696180D-02 -0.725533D-02 0.865035D-02 -0.630429D-01 0.134461D+00
+ 6 -0.680842D-01 0.950061D-02 -0.725533D-02 0.850029D-02 -0.618451D-01
+ 7 -0.693385D-01 0.421311D-02 0.661253D-02 -0.944944D-03 0.661253D-02
+ 8 0.352187D-02 -0.359275D-01 0.279064D-02 0.721601D-02 -0.649299D-03
+ 9 0.737527D-02 0.300491D-02 -0.362904D-01 0.311390D-02 0.699486D-02
+ 10 -0.736921D-03 0.705316D-02 0.252756D-02 -0.352075D-01 0.252756D-02
+ 11 0.737527D-02 -0.677148D-03 0.699486D-02 0.311390D-02 -0.362904D-01
+ 12 0.352187D-02 0.637294D-02 -0.649299D-03 0.721601D-02 0.279064D-02
+ 13 0.341492D-02 0.399333D-03 0.919675D-04 -0.463264D-05 0.919675D-04
+ 14 0.180080D-03 0.589874D-03 -0.846793D-04 0.214251D-04 0.773006D-04
+ 15 0.180080D-03 0.619299D-03 0.773006D-04 0.214251D-04 -0.846792D-04
+ 16 -0.594931D-02 0.519235D-03 0.441399D-03 0.294447D-03 0.441399D-03
+ 17 0.655945D-03 -0.750317D-03 0.325847D-03 -0.211252D-03 0.485300D-05
+ 18 -0.125677D-03 0.645636D-03 -0.645707D-03 0.351407D-03 -0.168770D-03
+ 19 -0.423012D-03 -0.503596D-04 0.948942D-04 -0.984910D-03 0.948941D-04
+ 20 -0.125677D-03 -0.568875D-03 -0.168770D-03 0.351407D-03 -0.645707D-03
+ 21 0.655945D-03 0.774495D-03 0.485300D-05 -0.211252D-03 0.325847D-03
+ 22 0.345489D-02 0.341284D-03 -0.487562D-03 -0.172118D-03 -0.487562D-03
+ 23 -0.682005D-04 -0.783828D-03 0.187228D-04 0.223290D-04 0.000000D+00
+ 24 0.143955D-03 0.148507D-03 0.512047D-03 -0.679551D-04 0.139181D-04
+ 25 0.886384D-05 0.991528D-05 0.610369D-04 0.768168D-03 0.610369D-04
+ 26 0.143955D-03 -0.166282D-04 0.139182D-04 -0.679551D-04 0.512047D-03
+ 27 -0.682004D-04 -0.147364D-04 0.000000D+00 0.223290D-04 0.187227D-04
+ 28 0.306488D-01 -0.407110D-03 -0.146221D-02 0.182724D-03 -0.146221D-02
+ 29 -0.144761D-01 0.619714D-03 0.397048D-03 -0.138685D-03 0.894360D-03
+ 30 -0.144761D-01 -0.466930D-03 0.894360D-03 -0.138685D-03 0.397048D-03
+ 31 0.000000D+00 -0.170195D-02 0.662949D-04 0.000000D+00 -0.662949D-04
+ 32 -0.493313D-03 0.258307D-02 -0.860781D-04 0.141917D-03 0.556173D-04
+ 33 -0.772942D-03 0.163356D-03 0.171058D-02 -0.944701D-04 0.394571D-04
+ 34 0.000000D+00 -0.630946D-03 -0.438453D-03 0.000000D+00 0.438453D-03
+ 35 0.772942D-03 0.284759D-03 -0.394571D-04 0.944700D-04 -0.171058D-02
+ 36 0.493313D-03 0.394947D-03 -0.556173D-04 -0.141917D-03 0.860781D-04
+ 37 0.000000D+00 -0.156996D-02 -0.110997D-02 0.000000D+00 0.110997D-02
+ 38 -0.166026D-03 -0.112743D-02 0.359589D-04 -0.555082D-04 0.000000D+00
+ 39 0.000000D+00 0.188119D-04 -0.111992D-02 -0.129605D-03 -0.113124D-04
+ 40 0.000000D+00 -0.167465D-04 0.910281D-04 0.000000D+00 -0.910281D-04
+ 41 0.000000D+00 0.140534D-04 0.113125D-04 0.129605D-03 0.111992D-02
+ 42 0.166026D-03 0.876253D-04 0.000000D+00 0.555082D-04 -0.359588D-04
+ 43 0.000000D+00 0.464101D-03 0.405297D-03 0.000000D+00 -0.405297D-03
+ 44 0.184406D-02 0.476352D-03 0.561183D-03 0.643589D-04 0.321576D-04
+ 45 -0.184406D-02 0.559973D-03 -0.321575D-04 -0.643589D-04 -0.561183D-03
+ 6 7 8 9 10
+ 6 0.133536D+00
+ 7 0.421311D-02 0.530202D+00
+ 8 0.637294D-02 -0.336513D-02 0.249256D-01
+ 9 -0.677148D-03 0.141845D-03 -0.405526D-02 0.253310D-01
+ 10 0.705316D-02 -0.940364D-03 0.307583D-03 -0.394882D-02 0.251011D-01
+ 11 0.300491D-02 0.141845D-03 -0.115541D-02 0.253837D-03 -0.394882D-02
+ 12 -0.359275D-01 -0.336513D-02 0.284074D-03 -0.115541D-02 0.307583D-03
+ 13 0.399333D-03 -0.273734D+00 -0.282609D-03 0.186024D-04 -0.101412D-03
+ 14 0.619299D-03 -0.100225D+00 0.458342D-04 -0.297274D-04 0.308261D-05
+ 15 0.589874D-03 -0.100225D+00 -0.293375D-04 -0.775151D-04 0.308260D-05
+ 16 0.519235D-03 -0.124999D-02 -0.663986D-03 -0.181761D-03 -0.141968D-03
+ 17 0.774495D-03 -0.277881D-03 -0.635214D-03 0.464654D-04 0.631796D-04
+ 18 -0.568875D-03 -0.106319D-02 0.695862D-04 0.508511D-03 -0.644766D-04
+ 19 -0.503596D-04 0.896479D-03 -0.158366D-04 0.634854D-04 0.860906D-03
+ 20 0.645636D-03 -0.106319D-02 -0.507078D-04 0.570320D-04 -0.644766D-04
+ 21 -0.750317D-03 -0.277881D-03 0.995737D-04 -0.683065D-04 0.631796D-04
+ 22 0.341284D-03 0.106558D-01 0.503430D-03 0.137944D-03 0.193620D-03
+ 23 -0.147364D-04 0.245855D-03 0.697463D-03 0.821849D-05 -0.393810D-04
+ 24 -0.166281D-04 -0.136440D-03 -0.149042D-04 -0.626021D-03 -0.869684D-05
+ 25 0.991526D-05 -0.610569D-04 -0.490024D-05 -0.134774D-04 -0.872447D-03
+ 26 0.148507D-03 -0.136440D-03 -0.419168D-05 0.755537D-05 -0.869688D-05
+ 27 -0.783828D-03 0.245855D-03 0.420269D-04 -0.174417D-05 -0.393810D-04
+ 28 -0.407110D-03 0.802929D-01 0.668745D-03 0.159505D-04 0.183166D-03
+ 29 -0.466930D-03 -0.440354D-01 -0.397249D-03 -0.127691D-05 -0.622640D-04
+ 30 0.619714D-03 -0.440354D-01 -0.293836D-03 0.474254D-04 -0.622640D-04
+ 31 0.170195D-02 0.000000D+00 -0.124851D-03 0.135534D-03 0.000000D+00
+ 32 -0.394947D-03 -0.252929D-03 -0.143905D-02 -0.120334D-03 -0.489090D-04
+ 33 -0.284759D-03 0.429953D-03 -0.641032D-05 -0.124120D-02 -0.116637D-03
+ 34 0.630946D-03 0.000000D+00 -0.395955D-04 0.649593D-04 0.000000D+00
+ 35 -0.163356D-03 -0.429952D-03 0.224730D-04 -0.411265D-04 0.116637D-03
+ 36 -0.258307D-02 0.252929D-03 0.153504D-03 -0.185809D-04 0.489089D-04
+ 37 0.156996D-02 0.000000D+00 0.873808D-03 0.563012D-04 0.000000D+00
+ 38 -0.876252D-04 -0.563536D-03 0.134535D-02 0.375130D-04 -0.100518D-04
+ 39 -0.140535D-04 -0.166690D-05 0.187472D-04 0.122064D-02 0.211985D-04
+ 40 0.167465D-04 0.000000D+00 -0.113898D-04 0.996463D-05 0.000000D+00
+ 41 -0.188119D-04 0.166689D-05 -0.595164D-05 -0.841832D-05 -0.211986D-04
+ 42 0.112743D-02 0.563536D-03 -0.258321D-04 -0.133563D-04 0.100519D-04
+ 43 -0.464101D-03 0.000000D+00 -0.286712D-03 -0.508742D-04 0.000000D+00
+ 44 -0.559973D-03 -0.969268D-01 -0.548448D-03 -0.403566D-04 -0.151605D-03
+ 45 -0.476351D-03 0.969268D-01 0.743547D-04 0.933186D-05 0.151605D-03
+ 11 12 13 14 15
+ 11 0.253310D-01
+ 12 -0.405526D-02 0.249256D-01
+ 13 0.186024D-04 -0.282609D-03 0.297979D+00
+ 14 -0.775151D-04 -0.293376D-04 -0.140045D-01 0.105335D+00
+ 15 -0.297274D-04 0.458342D-04 -0.140045D-01 0.757828D-02 0.105335D+00
+ 16 -0.181762D-03 -0.663986D-03 0.194846D-02 0.243429D-02 0.243429D-02
+ 17 -0.683066D-04 0.995738D-04 -0.341982D-03 0.232991D-03 0.816029D-04
+ 18 0.570320D-04 -0.507078D-04 0.485283D-03 -0.292458D-03 0.862410D-03
+ 19 0.634854D-04 -0.158367D-04 -0.277146D-03 -0.128342D-03 -0.128342D-03
+ 20 0.508511D-03 0.695861D-04 0.485283D-03 0.862411D-03 -0.292458D-03
+ 21 0.464654D-04 -0.635214D-03 -0.341982D-03 0.816030D-04 0.232991D-03
+ 22 0.137944D-03 0.503430D-03 0.764273D-01 -0.457749D-01 -0.457749D-01
+ 23 -0.174417D-05 0.420269D-04 0.528732D-04 -0.211397D-03 0.316733D-04
+ 24 0.755542D-05 -0.419174D-05 0.452174D-04 -0.273356D-04 0.309734D-04
+ 25 -0.134775D-04 -0.490021D-05 0.249013D-04 0.132111D-04 0.132111D-04
+ 26 -0.626021D-03 -0.149042D-04 0.452174D-04 0.309733D-04 -0.273356D-04
+ 27 0.821850D-05 0.697463D-03 0.528732D-04 0.316734D-04 -0.211397D-03
+ 28 0.159505D-04 0.668745D-03 -0.864355D-01 -0.112514D-01 -0.112514D-01
+ 29 0.474254D-04 -0.293836D-03 0.391457D-02 0.470999D-01 0.689872D-02
+ 30 -0.127692D-05 -0.397249D-03 0.391457D-02 0.689872D-02 0.470999D-01
+ 31 -0.135534D-03 0.124851D-03 0.000000D+00 0.278220D-02 -0.278220D-02
+ 32 0.185810D-04 -0.153504D-03 0.685817D-03 -0.382427D-03 -0.113507D-03
+ 33 0.411265D-04 -0.224729D-04 0.367810D-04 0.851411D-05 0.109125D-03
+ 34 -0.649594D-04 0.395953D-04 0.000000D+00 0.500800D-03 -0.500800D-03
+ 35 0.124120D-02 0.641030D-05 -0.367810D-04 -0.109125D-03 -0.851432D-05
+ 36 0.120334D-03 0.143905D-02 -0.685817D-03 0.113508D-03 0.382427D-03
+ 37 -0.563011D-04 -0.873808D-03 0.000000D+00 -0.974046D-01 0.974046D-01
+ 38 0.133564D-04 0.258320D-04 0.261323D-04 0.379090D-03 0.146940D-03
+ 39 0.841820D-05 0.595174D-05 -0.711763D-05 -0.211665D-05 -0.816232D-05
+ 40 -0.996462D-05 0.113898D-04 0.000000D+00 0.223968D-04 -0.223968D-04
+ 41 -0.122064D-02 -0.187472D-04 0.711763D-05 0.816228D-05 0.211665D-05
+ 42 -0.375130D-04 -0.134535D-02 -0.261323D-04 -0.146940D-03 -0.379090D-03
+ 43 0.508742D-04 0.286712D-03 0.000000D+00 -0.260999D-01 0.260999D-01
+ 44 -0.933190D-05 -0.743547D-04 0.274486D-03 0.107694D+00 -0.126360D-01
+ 45 0.403566D-04 0.548448D-03 -0.274486D-03 0.126360D-01 -0.107694D+00
+ 16 17 18 19 20
+ 16 0.636101D+00
+ 17 -0.172342D+00 0.686135D+00
+ 18 -0.272344D-01 -0.333538D+00 0.677001D+00
+ 19 0.209669D-02 -0.284338D-01 -0.180267D+00 0.739090D+00
+ 20 -0.272344D-01 -0.522103D-01 0.647903D-01 -0.180267D+00 0.677001D+00
+ 21 -0.172342D+00 0.630286D-01 -0.522103D-01 -0.284338D-01 -0.333538D+00
+ 22 -0.207739D+00 -0.225030D-01 0.257136D-02 -0.122021D-02 0.257136D-02
+ 23 0.981775D-02 -0.124684D+00 -0.109762D-01 -0.550908D-02 -0.678138D-03
+ 24 -0.537506D-02 -0.105804D-01 -0.126323D+00 0.116591D-01 -0.769950D-03
+ 25 0.648663D-03 0.818572D-03 -0.116654D-01 -0.334470D+00 -0.116654D-01
+ 26 -0.537506D-02 -0.767615D-03 -0.769950D-03 0.116591D-01 -0.126323D+00
+ 27 0.981775D-02 -0.884207D-03 -0.678138D-03 -0.550908D-02 -0.109762D-01
+ 28 -0.150648D-01 -0.322146D-03 -0.439277D-03 -0.350507D-03 -0.439277D-03
+ 29 -0.128880D-01 0.185996D-02 -0.162896D-03 -0.218395D-04 -0.982624D-04
+ 30 -0.128880D-01 -0.557702D-02 -0.982627D-04 -0.218395D-04 -0.162895D-03
+ 31 0.000000D+00 0.459478D-01 0.791214D-01 0.000000D+00 -0.791214D-01
+ 32 0.114338D+00 0.352213D-01 -0.326445D-01 -0.289118D-01 0.286555D-01
+ 33 0.291555D-01 0.332612D-01 -0.312775D-01 -0.121775D+00 0.245863D-01
+ 34 0.000000D+00 -0.779412D-01 -0.564829D-01 0.000000D+00 0.564829D-01
+ 35 -0.291555D-01 0.302692D-01 -0.245863D-01 0.121775D+00 0.312775D-01
+ 36 -0.114338D+00 0.229196D-01 -0.286555D-01 0.289118D-01 0.326445D-01
+ 37 0.000000D+00 0.294430D-01 0.177213D-02 0.000000D+00 -0.177213D-02
+ 38 -0.162282D-01 -0.116068D+00 0.216567D-02 0.380655D-03 0.946547D-03
+ 39 -0.595385D-03 -0.215378D-02 0.117840D+00 0.163369D-01 -0.417686D-02
+ 40 0.000000D+00 -0.211934D-02 -0.284498D-01 0.000000D+00 0.284498D-01
+ 41 0.595385D-03 0.853534D-03 0.417686D-02 -0.163369D-01 -0.117840D+00
+ 42 0.162282D-01 -0.411819D-02 -0.946547D-03 -0.380655D-03 -0.216567D-02
+ 43 0.000000D+00 0.196201D-02 -0.115479D-02 0.000000D+00 0.115479D-02
+ 44 -0.285620D-03 0.200672D-02 -0.646030D-03 0.177409D-03 0.232477D-03
+ 45 0.285619D-03 0.515584D-03 -0.232477D-03 -0.177409D-03 0.646029D-03
+ 21 22 23 24 25
+ 21 0.686135D+00
+ 22 -0.225030D-01 0.478414D+00
+ 23 -0.884208D-03 0.117395D-02 0.130737D+00
+ 24 -0.767615D-03 -0.135164D-03 0.977540D-03 0.130643D+00
+ 25 0.818573D-03 0.132135D-04 -0.707816D-03 0.797200D-03 0.355321D+00
+ 26 -0.105804D-01 -0.135164D-03 0.468042D-04 0.374350D-03 0.797200D-03
+ 27 -0.124684D+00 0.117395D-02 0.531839D-03 0.468042D-04 -0.707816D-03
+ 28 -0.322146D-03 -0.701460D-01 0.725568D-04 -0.115354D-03 -0.581207D-05
+ 29 -0.557702D-02 -0.807685D-01 0.452892D-04 0.270962D-04 0.419029D-05
+ 30 0.185996D-02 -0.807685D-01 0.370757D-04 -0.458665D-03 0.419028D-05
+ 31 -0.459478D-01 0.000000D+00 0.137745D-01 -0.141561D-02 0.000000D+00
+ 32 -0.229196D-01 0.436565D-02 -0.116465D+00 0.292430D-01 -0.319123D-02
+ 33 -0.302692D-01 0.137213D-02 -0.293366D-01 0.117766D+00 0.299394D-02
+ 34 0.779412D-01 0.000000D+00 0.152552D-02 -0.150154D-01 0.000000D+00
+ 35 -0.332612D-01 -0.137213D-02 0.744100D-03 -0.320601D-02 -0.299394D-02
+ 36 -0.352213D-01 -0.436565D-02 0.342416D-02 -0.900420D-03 0.319123D-02
+ 37 -0.294430D-01 0.000000D+00 0.916288D-03 0.135837D-02 0.000000D+00
+ 38 0.411819D-02 -0.166944D-02 0.125986D+00 -0.414818D-03 0.165482D-03
+ 39 -0.853534D-03 -0.175603D-03 0.410198D-03 -0.127303D+00 -0.333818D-03
+ 40 0.211934D-02 0.000000D+00 -0.140440D-02 0.572618D-03 0.000000D+00
+ 41 0.215378D-02 0.175603D-03 -0.101473D-03 -0.799017D-03 0.333819D-03
+ 42 0.116068D+00 0.166944D-02 0.775225D-03 0.107504D-03 -0.165482D-03
+ 43 -0.196201D-02 0.000000D+00 0.552190D-04 0.112888D-04 0.000000D+00
+ 44 -0.515583D-03 -0.769066D-01 -0.134129D-03 -0.657418D-04 -0.428595D-04
+ 45 -0.200672D-02 0.769066D-01 -0.169634D-03 0.606926D-04 0.428594D-04
+ 26 27 28 29 30
+ 26 0.130643D+00
+ 27 0.977540D-03 0.130737D+00
+ 28 -0.115354D-03 0.725568D-04 0.799862D-01
+ 29 -0.458666D-03 0.370757D-04 0.359469D-02 0.902211D-01
+ 30 0.270961D-04 0.452891D-04 0.359469D-02 0.418583D-02 0.902211D-01
+ 31 0.141561D-02 -0.137745D-01 0.000000D+00 -0.281397D-01 0.281397D-01
+ 32 0.900420D-03 -0.342416D-02 -0.133967D-02 -0.188005D-02 -0.194726D-02
+ 33 0.320601D-02 -0.744099D-03 -0.226756D-03 -0.735117D-04 0.136144D-02
+ 34 0.150154D-01 -0.152552D-02 0.000000D+00 0.204723D-03 -0.204723D-03
+ 35 -0.117766D+00 0.293366D-01 0.226756D-03 -0.136144D-02 0.735113D-04
+ 36 -0.292430D-01 0.116465D+00 0.133967D-02 0.194726D-02 0.188005D-02
+ 37 -0.135837D-02 -0.916288D-03 0.000000D+00 -0.747011D-01 0.747011D-01
+ 38 -0.107504D-03 -0.775225D-03 0.327791D-03 0.112477D-02 0.472567D-04
+ 39 0.799017D-03 0.101473D-03 0.557369D-04 0.204729D-04 0.278391D-04
+ 40 -0.572618D-03 0.140440D-02 0.000000D+00 0.872902D-04 -0.872902D-04
+ 41 0.127303D+00 -0.410198D-03 -0.557369D-04 -0.278393D-04 -0.204731D-04
+ 42 0.414817D-03 -0.125986D+00 -0.327791D-03 -0.472565D-04 -0.112477D-02
+ 43 -0.112887D-04 -0.552190D-04 0.000000D+00 0.908400D-02 -0.908400D-02
+ 44 -0.606927D-04 0.169634D-03 0.962173D-03 0.844356D-01 -0.932679D-02
+ 45 0.657419D-04 0.134129D-03 -0.962173D-03 0.932679D-02 -0.844356D-01
+ 31 32 33 34 35
+ 31 0.657702D+00
+ 32 -0.265544D+00 0.700799D+00
+ 33 0.358102D-01 -0.128570D+00 0.717834D+00
+ 34 -0.725590D-01 0.340047D-01 -0.280185D+00 0.655819D+00
+ 35 0.358102D-01 -0.183864D-01 -0.598310D-01 -0.280185D+00 0.717834D+00
+ 36 -0.265544D+00 -0.586391D-01 -0.183864D-01 0.340047D-01 -0.128570D+00
+ 37 -0.889024D-01 0.344595D-02 -0.452571D-02 -0.583466D-03 -0.452571D-02
+ 38 -0.199337D-01 -0.263500D+00 0.313761D-02 0.199474D-02 0.183876D-03
+ 39 0.196028D-02 0.318843D-02 -0.266471D+00 -0.185714D-01 -0.307082D-02
+ 40 -0.134619D-02 -0.443003D-02 0.465763D-02 -0.590945D-01 0.465763D-02
+ 41 0.196028D-02 0.323350D-03 -0.307082D-02 -0.185714D-01 -0.266471D+00
+ 42 -0.199337D-01 -0.305162D-02 0.183875D-03 0.199474D-02 0.313761D-02
+ 43 -0.629050D-04 -0.351083D-03 -0.610776D-03 0.120293D-02 -0.610776D-03
+ 44 0.291119D-03 0.309208D-03 0.128913D-03 0.364530D-03 -0.102031D-03
+ 45 0.291119D-03 0.401452D-03 -0.102031D-03 0.364529D-03 0.128913D-03
+ 36 37 38 39 40
+ 36 0.700799D+00
+ 37 0.344595D-02 0.576210D+00
+ 38 -0.305162D-02 0.905330D-03 0.279929D+00
+ 39 0.323350D-03 -0.289269D-04 0.815608D-03 0.282021D+00
+ 40 -0.443003D-02 0.178026D-03 -0.530531D-05 0.948938D-03 0.578143D-01
+ 41 0.318843D-02 -0.289269D-04 -0.358716D-04 -0.106141D-02 0.948938D-03
+ 42 -0.263500D+00 0.905330D-03 -0.114617D-02 -0.358716D-04 -0.530526D-05
+ 43 -0.351083D-03 -0.448617D-01 -0.102948D-03 -0.204685D-04 0.103351D-04
+ 44 0.401452D-03 -0.220817D+00 0.385882D-03 0.100867D-04 0.478112D-04
+ 45 0.309208D-03 -0.220817D+00 0.424236D-03 -0.801032D-05 0.478111D-04
+ 41 42 43 44 45
+ 41 0.282021D+00
+ 42 0.815608D-03 0.279929D+00
+ 43 -0.204685D-04 -0.102948D-03 0.447312D-01
+ 44 -0.801044D-05 0.424236D-03 0.575356D-03 0.237854D+00
+ 45 0.100868D-04 0.385881D-03 0.575356D-03 -0.198654D-01 0.237854D+00
+ Final forces over variables, Energy=-2.71636053D+02:
+ 1.28218738D-05-5.96927325D-06-3.99851055D-06 3.90923229D-06
+ -3.99849794D-06-5.96927512D-06-1.91229910D-05 2.45439894D-06
+ 1.03830624D-06-4.07591794D-08 1.03829398D-06 2.45439947D-06
+ 1.22237383D-05 1.57952718D-06 1.57953691D-06-6.37947228D-05
+ -3.46042109D-05 4.21963210D-05-1.85070419D-05 4.21963125D-05
+ -3.46042104D-05 4.40786382D-05 2.22847474D-05-1.05855680D-05
+ 1.57646769D-06-1.05855529D-05 2.22847448D-05-1.32258155D-05
+ 5.64492748D-06 5.64496292D-06-5.47816946D-13-5.42411446D-06
+ -2.53832412D-05 3.83832125D-12 2.53832061D-05 5.42411891D-06
+ -6.70680320D-12-1.08685775D-05 3.70471625D-06 6.99002267D-13
+ -3.70468527D-06 1.08685730D-05 1.48807322D-11 1.43720724D-06
+ -1.43721528D-06
+
+ GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad
+ Berny optimization.
+ Search for a local minimum.
+ Step number 1 out of a maximum of 2
+ All quantities printed in internal units (Hartrees-Bohrs-Radians)
+ Second derivative matrix not updated -- analytic derivatives used.
+ Eigenvalues --- 0.00003 0.00498 0.01092 0.01473 0.01996
+ Eigenvalues --- 0.03021 0.03797 0.04525 0.05229 0.05350
+ Eigenvalues --- 0.05764 0.06870 0.07110 0.07690 0.09353
+ Eigenvalues --- 0.10234 0.11083 0.11673 0.12626 0.18124
+ Eigenvalues --- 0.19255 0.19527 0.21504 0.22105 0.29993
+ Eigenvalues --- 0.32253 0.39691 0.52435 0.67180 0.67668
+ Eigenvalues --- 0.73276 0.77478 0.79988 0.90843 0.98937
+ Eigenvalues --- 1.07752 1.09341 1.25386 1.25630
+ Angle between quadratic step and forces= 71.75 degrees.
+ Linear search not attempted -- first point.
+ TrRot= 0.000029 -0.000015 0.000000 -0.000003 0.000000 -0.000003
+ Variable Old X -DE/DX Delta X Delta X Delta X New X
+ (Linear) (Quad) (Total)
+ X1 0.01563 0.00001 0.00000 0.00030 0.00034 0.01596
+ Y1 1.36055 -0.00006 0.00000 -0.00013 -0.00015 1.36040
+ Z1 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+ X2 0.02099 -0.00001 0.00000 0.00017 0.00019 0.02119
+ Y2 0.00270 -0.00003 0.00000 -0.00004 -0.00005 0.00265
+ Z2 2.26794 -0.00001 0.00000 -0.00001 -0.00001 2.26793
+ X3 0.02099 0.00000 0.00000 -0.00005 -0.00004 0.02096
+ Y3 -2.62959 0.00004 0.00000 0.00003 0.00001 -2.62958
+ Z3 2.27325 -0.00003 0.00000 -0.00002 -0.00002 2.27322
+ X4 0.01931 0.00000 0.00000 -0.00014 -0.00014 0.01918
+ Y4 -3.95733 -0.00002 0.00000 -0.00001 -0.00003 -3.95736
+ Z4 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+ X5 0.02099 0.00000 0.00000 -0.00005 -0.00004 0.02096
+ Y5 -2.62959 0.00004 0.00000 0.00003 0.00001 -2.62958
+ Z5 -2.27325 0.00003 0.00000 0.00002 0.00002 -2.27322
+ X6 0.02099 -0.00001 0.00000 0.00017 0.00019 0.02119
+ Y6 0.00270 -0.00003 0.00000 -0.00004 -0.00005 0.00265
+ Z6 -2.26794 0.00001 0.00000 0.00001 0.00001 -2.26793
+ X7 -0.04539 -0.00002 0.00000 -0.00010 -0.00004 -0.04543
+ Y7 4.21379 0.00004 0.00000 0.00002 0.00000 4.21379
+ Z7 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+ X8 0.02957 0.00000 0.00000 0.00028 0.00032 0.02989
+ Y8 1.01937 0.00002 0.00000 0.00035 0.00033 1.01970
+ Z8 4.04980 -0.00001 0.00000 -0.00022 -0.00022 4.04957
+ X9 0.02973 0.00000 0.00000 -0.00010 -0.00010 0.02963
+ Y9 -3.64337 -0.00001 0.00000 -0.00011 -0.00013 -3.64350
+ Z9 4.05450 0.00000 0.00000 -0.00007 -0.00007 4.05444
+ X10 0.02494 0.00000 0.00000 -0.00033 -0.00034 0.02461
+ Y10 -6.00612 0.00000 0.00000 0.00000 -0.00002 -6.00614
+ Z10 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+ X11 0.02973 0.00000 0.00000 -0.00010 -0.00010 0.02963
+ Y11 -3.64337 -0.00001 0.00000 -0.00011 -0.00013 -3.64350
+ Z11 -4.05450 0.00000 0.00000 0.00007 0.00007 -4.05444
+ X12 0.02957 0.00000 0.00000 0.00028 0.00032 0.02989
+ Y12 1.01937 0.00002 0.00000 0.00035 0.00033 1.01970
+ Z12 -4.04980 0.00001 0.00000 0.00022 0.00022 -4.04957
+ X13 -1.99345 0.00001 0.00000 -0.00024 -0.00018 -1.99364
+ Y13 4.91529 -0.00001 0.00000 -0.00055 -0.00056 4.91473
+ Z13 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+ X14 0.88813 0.00000 0.00000 -0.00026 -0.00020 0.88793
+ Y14 4.98776 0.00001 0.00000 0.00024 0.00022 4.98798
+ Z14 1.67091 0.00000 0.00000 0.00000 0.00000 1.67092
+ X15 0.88813 0.00000 0.00000 -0.00026 -0.00020 0.88793
+ Y15 4.98776 0.00001 0.00000 0.00024 0.00022 4.98798
+ Z15 -1.67091 0.00000 0.00000 0.00000 0.00000 -1.67092
+ Item Value Threshold Converged?
+ Maximum Force 0.000064 0.000450 YES
+ RMS Force 0.000019 0.000300 YES
+ Maximum Displacement 0.000557 0.001800 YES
+ RMS Displacement 0.000179 0.001200 YES
+ Predicted change in Energy=-2.407325D-08
+ Optimization completed.
+ -- Stationary point found.
+ GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad
+
+
+ Test job not archived.
+ 1\1\GINC-NODE33\Freq\RB3LYP\CBSB7\C7H8\LAITCL\07-Mar-2017\0\\# freq no
+ symm b3lyp/cbsb7 iop(7/33=1)\\Toluene Freq\\0,1\C,0.00827,0.71997,0.\C
+ ,0.01111,0.00143,1.20014\C,0.01111,-1.39152,1.20295\C,0.01022,-2.09413
+ ,0.\C,0.01111,-1.39152,-1.20295\C,0.01111,0.00143,-1.20014\C,-0.02402,
+ 2.22984,0.\H,0.01565,0.53943,2.14306\H,0.01573,-1.92799,2.14555\H,0.01
+ 32,-3.1783,0.\H,0.01573,-1.92799,-2.14555\H,0.01565,0.53943,-2.14306\H
+ ,-1.05489,2.60106,0.\H,0.46998,2.63941,0.88421\H,0.46998,2.63941,-0.88
+ 421\\Version=AM64L-G03RevD.01\HF=-271.6360527\RMSD=1.734e-09\RMSF=1.89
+ 7e-05\ZeroPoint=0.1273413\Thermal=0.13358\Dipole=-0.0150147,0.1375633,
+ 0.\DipoleDeriv=-0.0760074,-0.0824839,0.,-0.0229974,0.3785412,0.,0.,0.,
+ -0.0828914,-0.1275089,0.0049661,-0.0026487,0.0031706,-0.1469011,0.0707
+ 099,-0.0029496,0.1276243,0.0699964,-0.1290158,0.0043788,0.0045867,-0.0
+ 013567,0.0121237,-0.0538516,0.0046743,-0.0719885,0.0977217,-0.1419304,
+ 0.002688,0.,0.0022993,0.0705212,0.,0.,0.,-0.1077178,-0.1290158,0.00437
+ 88,-0.0045867,-0.0013567,0.0121237,0.0538516,-0.0046743,0.0719885,0.09
+ 77217,-0.1275089,0.0049661,0.0026487,0.0031706,-0.1469011,-0.0707099,0
+ .0029496,-0.1276243,0.0699964,0.1307603,0.1110127,0.,0.0058831,-0.0168
+ 56,0.,0.,0.,0.1266435,0.1224265,-0.003802,-0.0029391,-0.0017932,0.0104
+ 721,-0.0956194,-0.0002721,-0.0820803,-0.0668687,0.1288414,-0.001702,-0
+ .0030899,0.0000245,0.013332,0.0804741,-0.0009871,0.0873755,-0.0747347,
+ 0.1337937,-0.0001696,0.,0.0004858,-0.1228598,0.,0.,0.,0.0687134,0.1288
+ 414,-0.001702,0.0030899,0.0000245,0.013332,-0.0804741,0.0009871,-0.087
+ 3755,-0.0747347,0.1224265,-0.003802,0.0029391,-0.0017932,0.010472,0.09
+ 56194,0.0002721,0.0820803,-0.0668687,-0.1065316,0.0887095,0.,0.0443515
+ ,-0.065961,0.,0.,0.,0.082412,0.0352144,-0.0637194,-0.0723281,-0.015056
+ 5,-0.0107194,-0.0158717,-0.0821163,-0.0891494,-0.0696946,0.0352144,-0.
+ 0637194,0.0723281,-0.0150565,-0.0107194,0.0158717,0.0821163,0.0891494,
+ -0.0696946\Polar=38.239096,-0.6150723,95.9727096,0.,0.,82.9400284\PG=C
+ S [SG(C3H2),X(C4H6)]\NImag=0\\0.17410502,-0.00594931,0.63610111,0.,0.,
+ 0.65770227,-0.06808423,0.00051923,-0.00170195,0.13353573,0.00065595,-0
+ .17234185,0.04594779,-0.00075032,0.68613483,-0.00049331,0.11433791,-0.
+ 26554382,0.00258307,0.03522130,0.70079903,0.00696180,0.00044140,0.0000
+ 6629,-0.06184506,0.00032585,-0.00008608,0.13446063,-0.00012568,-0.0272
+ 3440,0.07912138,0.00064564,-0.33353770,-0.03264454,-0.00064571,0.67700
+ 122,-0.00077294,0.02915548,0.03581021,0.00016336,0.03326122,-0.1285696
+ 3,0.00171058,-0.03127745,0.71783385,-0.00735415,0.00029445,0.,0.008500
+ 29,-0.00021125,0.00014192,-0.06304291,0.00035141,-0.00009447,0.1318938
+ 0,-0.00042301,0.00209669,0.,-0.00005036,-0.02843379,-0.02891179,0.0000
+ 9489,-0.18026726,-0.12177526,-0.00098491,0.73909016,0.,0.,-0.07255901,
+ -0.00063095,-0.07794118,0.03400474,-0.00043845,-0.05648289,-0.28018493
+ ,0.,0.,0.65581866,0.00696180,0.00044140,-0.00006629,-0.00725533,0.0000
+ 0485,0.00005562,0.00865035,-0.00016877,0.00003946,-0.06304291,0.000094
+ 89,0.00043845,0.13446063,-0.00012568,-0.02723440,-0.07912138,-0.000568
+ 87,-0.05221027,0.02865546,-0.00016877,0.06479033,0.02458626,0.00035141
+ ,-0.18026726,0.05648289,-0.00064571,0.67700122,0.00077294,-0.02915548,
+ 0.03581021,0.00028476,0.03026923,-0.01838643,-0.00003946,-0.02458626,-
+ 0.05983102,0.00009447,0.12177526,-0.28018493,-0.00171058,0.03127745,0.
+ 71783385,-0.06808423,0.00051923,0.00170195,0.00950061,0.00077449,-0.00
+ 039495,-0.00725533,-0.00056887,-0.00028476,0.00850029,-0.00005036,0.00
+ 063095,-0.06184506,0.00064564,-0.00016336,0.13353573,0.00065594,-0.172
+ 34185,-0.04594779,0.00077449,0.06302857,-0.02291965,0.00000485,-0.0522
+ 1027,-0.03026923,-0.00021125,-0.02843379,0.07794118,0.00032585,-0.3335
+ 3770,-0.03326122,-0.00075032,0.68613483,0.00049331,-0.11433791,-0.2655
+ 4382,0.00039495,0.02291965,-0.05863913,-0.00005562,-0.02865546,-0.0183
+ 8643,-0.00014192,0.02891179,0.03400474,0.00008608,0.03264454,-0.128569
+ 63,-0.00258307,-0.03522130,0.70079903,-0.06933845,-0.00124999,0.,0.004
+ 21311,-0.00027788,-0.00025293,0.00661253,-0.00106319,0.00042995,-0.000
+ 94494,0.00089648,0.,0.00661253,-0.00106319,-0.00042995,0.00421311,-0.0
+ 0027788,0.00025293,0.53020226,0.00345489,-0.20773855,0.,0.00034128,-0.
+ 02250301,0.00436565,-0.00048756,0.00257136,0.00137213,-0.00017212,-0.0
+ 0122021,0.,-0.00048756,0.00257136,-0.00137213,0.00034128,-0.02250301,-
+ 0.00436565,0.01065580,0.47841430,0.,0.,-0.08890243,-0.00156996,0.02944
+ 304,0.00344595,-0.00110997,0.00177213,-0.00452571,0.,0.,-0.00058347,0.
+ 00110997,-0.00177213,-0.00452571,0.00156996,-0.02944304,0.00344595,0.,
+ 0.,0.57621022,0.00352187,-0.00066399,-0.00012485,-0.03592748,-0.000635
+ 21,-0.00143905,0.00279064,0.00006959,-0.00000641,0.00721601,-0.0000158
+ 4,-0.00003960,-0.00064930,-0.00005071,0.00002247,0.00637294,0.00009957
+ ,0.00015350,-0.00336513,0.00050343,0.00087381,0.02492558,-0.00006820,0
+ .00981775,0.01377446,-0.00078383,-0.12468392,-0.11646534,0.00001872,-0
+ .01097619,-0.02933659,0.00002233,-0.00550908,0.00152552,0.00000013,-0.
+ 00067814,0.00074410,-0.00001474,-0.00088421,0.00342416,0.00024586,0.00
+ 117395,0.00091629,0.00069746,0.13073655,-0.00016603,-0.01622816,-0.019
+ 93366,-0.00112743,-0.11606760,-0.26350040,0.00003596,0.00216567,0.0031
+ 3761,-0.00005551,0.00038066,0.00199474,0.,0.00094655,0.00018388,-0.000
+ 08763,0.00411819,-0.00305162,-0.00056354,-0.00166944,0.00090533,0.0013
+ 4535,0.12598640,0.27992869,0.00737527,-0.00018176,0.00013553,0.0030049
+ 1,0.00004647,-0.00012033,-0.03629036,0.00050851,-0.00124120,0.00311390
+ ,0.00006349,0.00006496,0.00699486,0.00005703,-0.00004113,-0.00067715,-
+ 0.00006831,-0.00001858,0.00014185,0.00013794,0.00005630,-0.00405526,0.
+ 00000822,0.00003751,0.02533103,0.00014396,-0.00537506,-0.00141561,0.00
+ 014851,-0.01058040,0.02924296,0.00051205,-0.12632314,0.11776640,-0.000
+ 06796,0.01165907,-0.01501536,0.00001392,-0.00076995,-0.00320601,-0.000
+ 01663,-0.00076762,-0.00090042,-0.00013644,-0.00013516,0.00135837,-0.00
+ 001490,0.00097754,-0.00041482,-0.00062602,0.13064328,0.00000018,-0.000
+ 59538,0.00196028,0.00001881,-0.00215378,0.00318843,-0.00111992,0.11784
+ 018,-0.26647073,-0.00012960,0.01633691,-0.01857136,-0.00001131,-0.0041
+ 7686,-0.00307082,-0.00001405,-0.00085353,0.00032335,-0.00000167,-0.000
+ 17560,-0.00002893,0.00001875,0.00041020,0.00081561,0.00122064,-0.12730
+ 285,0.28202090,-0.00073692,-0.00014197,0.,0.00705316,0.00006318,-0.000
+ 04891,0.00252756,-0.00006448,-0.00011664,-0.03520750,0.00086091,0.,0.0
+ 0252756,-0.00006448,0.00011664,0.00705316,0.00006318,0.00004891,-0.000
+ 94036,0.00019362,0.,0.00030758,-0.00003938,-0.00001005,-0.00394882,-0.
+ 00000870,0.00002120,0.02510107,0.00000886,0.00064866,0.,0.00000992,0.0
+ 0081857,-0.00319123,0.00006104,-0.01166544,0.00299394,0.00076817,-0.33
+ 447034,0.,0.00006104,-0.01166544,-0.00299394,0.00000992,0.00081857,0.0
+ 0319123,-0.00006106,0.00001321,0.,-0.00000490,-0.00070782,0.00016548,-
+ 0.00001348,0.00079720,-0.00033382,-0.00087245,0.35532086,0.,0.,-0.0013
+ 4619,-0.00001675,-0.00211934,-0.00443003,0.00009103,-0.02844978,0.0046
+ 5763,0.,0.,-0.05909455,-0.00009103,0.02844978,0.00465763,0.00001675,0.
+ 00211934,-0.00443003,0.,0.,0.00017803,-0.00001139,-0.00140440,-0.00000
+ 531,0.00000996,0.00057262,0.00094894,0.,0.,0.05781430,0.00737527,-0.00
+ 018176,-0.00013553,-0.00067715,-0.00006831,0.00001858,0.00699486,0.000
+ 05703,0.00004113,0.00311390,0.00006349,-0.00006496,-0.03629036,0.00050
+ 851,0.00124120,0.00300491,0.00004647,0.00012033,0.00014185,0.00013794,
+ -0.00005630,-0.00115541,-0.00000174,0.00001336,0.00025384,0.00000756,0
+ .00000842,-0.00394882,-0.00001348,-0.00000996,0.02533103,0.00014396,-0
+ .00537506,0.00141561,-0.00001663,-0.00076761,0.00090042,0.00001392,-0.
+ 00076995,0.00320601,-0.00006796,0.01165907,0.01501536,0.00051205,-0.12
+ 632314,-0.11776640,0.00014851,-0.01058040,-0.02924296,-0.00013644,-0.0
+ 0013516,-0.00135837,-0.00000419,0.00004680,-0.00010750,0.00000756,0.00
+ 037435,0.00079902,-0.00000870,0.00079720,-0.00057262,-0.00062602,0.130
+ 64328,-0.00000018,0.00059538,0.00196028,0.00001405,0.00085353,0.000323
+ 35,0.00001131,0.00417686,-0.00307082,0.00012960,-0.01633691,-0.0185713
+ 6,0.00111992,-0.11784019,-0.26647073,-0.00001881,0.00215378,0.00318843
+ ,0.00000167,0.00017560,-0.00002893,-0.00000595,-0.00010147,-0.00003587
+ ,-0.00000842,-0.00079902,-0.00106141,-0.00002120,0.00033382,0.00094894
+ ,-0.00122064,0.12730285,0.28202090,0.00352187,-0.00066399,0.00012485,0
+ .00637294,0.00009957,-0.00015350,-0.00064930,-0.00005071,-0.00002247,0
+ .00721601,-0.00001584,0.00003960,0.00279064,0.00006959,0.00000641,-0.0
+ 3592748,-0.00063521,0.00143905,-0.00336513,0.00050343,-0.00087381,0.00
+ 028407,0.00004203,0.00002583,-0.00115541,-0.00000419,0.00000595,0.0003
+ 0758,-0.00000490,0.00001139,-0.00405526,-0.00001490,-0.00001875,0.0249
+ 2558,-0.00006820,0.00981775,-0.01377446,-0.00001474,-0.00088421,-0.003
+ 42416,0.00000013,-0.00067814,-0.00074410,0.00002233,-0.00550908,-0.001
+ 52552,0.00001872,-0.01097619,0.02933659,-0.00078383,-0.12468392,0.1164
+ 6534,0.00024586,0.00117395,-0.00091629,0.00004203,0.00053184,-0.000775
+ 23,-0.00000174,0.00004680,0.00010147,-0.00003938,-0.00070782,0.0014044
+ 0,0.00000822,0.00097754,-0.00041020,0.00069746,0.13073656,0.00016603,0
+ .01622816,-0.01993366,0.00008763,-0.00411819,-0.00305162,0.,-0.0009465
+ 5,0.00018388,0.00005551,-0.00038065,0.00199474,-0.00003596,-0.00216567
+ ,0.00313761,0.00112743,0.11606760,-0.26350040,0.00056354,0.00166944,0.
+ 00090533,-0.00002583,0.00077523,-0.00114617,-0.00001336,0.00010750,-0.
+ 00003587,0.00001005,-0.00016548,-0.00000531,-0.00003751,0.00041482,0.0
+ 0081561,-0.00134535,-0.12598640,0.27992869,0.00341492,0.00194846,0.,0.
+ 00039933,-0.00034198,0.00068582,0.00009197,0.00048528,0.00003678,-0.00
+ 000463,-0.00027715,0.,0.00009197,0.00048528,-0.00003678,0.00039933,-0.
+ 00034198,-0.00068582,-0.27373390,0.07642735,0.,-0.00028261,0.00005287,
+ 0.00002613,0.00001860,0.00004522,-0.00000712,-0.00010141,0.00002490,0.
+ ,0.00001860,0.00004522,0.00000712,-0.00028261,0.00005287,-0.00002613,0
+ .29797938,0.03064879,-0.01506482,0.,-0.00040711,-0.00032215,-0.0013396
+ 7,-0.00146221,-0.00043928,-0.00022676,0.00018272,-0.00035051,0.,-0.001
+ 46221,-0.00043928,0.00022676,-0.00040711,-0.00032215,0.00133967,0.0802
+ 9286,-0.07014597,0.,0.00066874,0.00007256,0.00032779,0.00001595,-0.000
+ 11535,0.00005574,0.00018317,-0.00000581,0.,0.00001595,-0.00011535,-0.0
+ 0005574,0.00066875,0.00007256,-0.00032779,-0.08643549,0.07998618,0.,0.
+ ,-0.00006291,0.00046410,0.00196201,-0.00035108,0.00040530,-0.00115479,
+ -0.00061078,0.,0.,0.00120293,-0.00040530,0.00115479,-0.00061078,-0.000
+ 46410,-0.00196201,-0.00035108,0.,0.,-0.04486174,-0.00028671,0.00005522
+ ,-0.00010295,-0.00005087,0.00001129,-0.00002047,0.,0.,0.00001034,0.000
+ 05087,-0.00001129,-0.00002047,0.00028671,-0.00005522,-0.00010295,0.,0.
+ ,0.04473122,0.00018008,0.00243429,0.00278220,0.00058987,0.00023299,-0.
+ 00038243,-0.00008468,-0.00029246,0.00000851,0.00002143,-0.00012834,0.0
+ 0050080,0.00007730,0.00086241,-0.00010913,0.00061930,0.00008160,0.0001
+ 1351,-0.10022466,-0.04577487,-0.09740455,0.00004583,-0.00021140,0.0003
+ 7909,-0.00002973,-0.00002734,-0.00000212,0.00000308,0.00001321,0.00002
+ 240,-0.00007752,0.00003097,0.00000816,-0.00002934,0.00003167,-0.000146
+ 94,-0.01400447,-0.01125140,-0.02609989,0.10533522,-0.01447613,-0.01288
+ 799,-0.02813971,0.00061971,0.00185996,-0.00188005,0.00039705,-0.000162
+ 90,-0.00007351,-0.00013868,-0.00002184,0.00020472,0.00089436,-0.000098
+ 26,-0.00136144,-0.00046693,-0.00557702,0.00194726,-0.04403538,-0.08076
+ 852,-0.07470108,-0.00039725,0.00004529,0.00112477,-0.00000128,0.000027
+ 10,0.00002047,-0.00006226,0.00000419,0.00008729,0.00004743,-0.00045867
+ ,-0.00002784,-0.00029384,0.00003708,-0.00004726,0.00391457,0.00359469,
+ 0.00908400,0.04709992,0.09022107,0.00184406,-0.00028562,0.00029112,0.0
+ 0047635,0.00200672,0.00030921,0.00056118,-0.00064603,0.00012891,0.0000
+ 6436,0.00017741,0.00036453,0.00003216,0.00023248,-0.00010203,-0.000559
+ 97,-0.00051558,0.00040145,-0.09692684,-0.07690656,-0.22081695,-0.00054
+ 845,-0.00013413,0.00038588,-0.00004036,-0.00006574,0.00001009,-0.00015
+ 161,-0.00004286,0.00004781,-0.00000933,-0.00006069,-0.00000801,-0.0000
+ 7435,0.00016963,0.00042424,0.00027449,0.00096217,0.00057536,0.10769435
+ ,0.08443559,0.23785376,0.00018008,0.00243429,-0.00278220,0.00061930,0.
+ 00008160,-0.00011351,0.00007730,0.00086241,0.00010913,0.00002143,-0.00
+ 012834,-0.00050080,-0.00008468,-0.00029246,-0.00000851,0.00058987,0.00
+ 023299,0.00038243,-0.10022466,-0.04577487,0.09740455,-0.00002934,0.000
+ 03167,0.00014694,-0.00007752,0.00003097,-0.00000816,0.00000308,0.00001
+ 321,-0.00002240,-0.00002973,-0.00002734,0.00000212,0.00004583,-0.00021
+ 140,-0.00037909,-0.01400447,-0.01125140,0.02609989,0.00757828,0.006898
+ 72,-0.01263604,0.10533522,-0.01447613,-0.01288799,0.02813971,-0.000466
+ 93,-0.00557702,-0.00194726,0.00089436,-0.00009826,0.00136144,-0.000138
+ 68,-0.00002184,-0.00020472,0.00039705,-0.00016290,0.00007351,0.0006197
+ 1,0.00185996,0.00188005,-0.04403538,-0.08076852,0.07470108,-0.00029384
+ ,0.00003708,0.00004726,0.00004743,-0.00045867,0.00002784,-0.00006226,0
+ .00000419,-0.00008729,-0.00000128,0.00002710,-0.00002047,-0.00039725,0
+ .00004529,-0.00112477,0.00391457,0.00359469,-0.00908400,0.00689872,0.0
+ 0418583,-0.00932679,0.04709992,0.09022107,-0.00184406,0.00028562,0.000
+ 29112,0.00055997,0.00051558,0.00040145,-0.00003216,-0.00023248,-0.0001
+ 0203,-0.00006436,-0.00017741,0.00036453,-0.00056118,0.00064603,0.00012
+ 891,-0.00047635,-0.00200672,0.00030921,0.09692684,0.07690656,-0.220816
+ 95,0.00007435,-0.00016963,0.00042424,0.00000933,0.00006069,-0.00000801
+ ,0.00015161,0.00004286,0.00004781,0.00004036,0.00006574,0.00001009,0.0
+ 0054845,0.00013413,0.00038588,-0.00027449,-0.00096217,0.00057536,0.012
+ 63604,0.00932679,-0.01986536,-0.10769435,-0.08443559,0.23785376\\-0.00
+ 001282,0.00006379,0.,0.00000597,0.00003460,0.00000542,0.00000400,-0.00
+ 004220,0.00002538,-0.00000391,0.00001851,0.,0.00000400,-0.00004220,-0.
+ 00002538,0.00000597,0.00003460,-0.00000542,0.00001912,-0.00004408,0.,-
+ 0.00000245,-0.00002228,0.00001087,-0.00000104,0.00001059,-0.00000370,0
+ .00000004,-0.00000158,0.,-0.00000104,0.00001059,0.00000370,-0.00000245
+ ,-0.00002228,-0.00001087,-0.00001222,0.00001323,0.,-0.00000158,-0.0000
+ 0564,-0.00000144,-0.00000158,-0.00000564,0.00000144\\\@
+
+
+ Life may have no meaning. Or even worse, it may have a
+ meaning of which I disapprove.
+ -- Ashleigh Brilliant
+ Job cpu time: 0 days 0 hours 31 minutes 13.0 seconds.
+ File lengths (MBytes): RWF= 49 Int= 0 D2E= 0 Chk= 8 Scr= 1
+ Normal termination of Gaussian 03 at Tue Mar 7 14:14:59 2017.
diff --git a/examples/cantherm/species/Toulene/TolueneRot1.log b/examples/arkane/species/Toulene_Hindered_Rotor/TolueneRot1.log
similarity index 100%
rename from examples/cantherm/species/Toulene/TolueneRot1.log
rename to examples/arkane/species/Toulene_Hindered_Rotor/TolueneRot1.log
diff --git a/examples/cantherm/species/Toulene/input_toluene_HinderedRotor.py b/examples/arkane/species/Toulene_Hindered_Rotor/input.py
similarity index 100%
rename from examples/cantherm/species/Toulene/input_toluene_HinderedRotor.py
rename to examples/arkane/species/Toulene_Hindered_Rotor/input.py
diff --git a/examples/cantherm/species/Toulene/toluene_HinderedRotor.py b/examples/arkane/species/Toulene_Hindered_Rotor/toluene_HinderedRotor.py
similarity index 68%
rename from examples/cantherm/species/Toulene/toluene_HinderedRotor.py
rename to examples/arkane/species/Toulene_Hindered_Rotor/toluene_HinderedRotor.py
index b7a46abac8..43eeb050bc 100755
--- a/examples/cantherm/species/Toulene/toluene_HinderedRotor.py
+++ b/examples/arkane/species/Toulene_Hindered_Rotor/toluene_HinderedRotor.py
@@ -23,6 +23,4 @@
frequencies = Log('TolueneFreq.log')
-rotors = [
-HinderedRotor(scanLog=Log('TolueneRot1.log'),pivots=[3,12],top=[12,13,14,15],symmetry=6, fit='best'),
-]
+rotors = [HinderedRotor(scanLog=Log('TolueneRot1.log'), pivots=[3,12], top=[12,13,14,15], symmetry=6, fit='best')]
diff --git a/examples/cantherm/reactions/23dimethylpropoxy/cantherm_dimetpropoxy.out b/examples/cantherm/reactions/23dimethylpropoxy/cantherm_dimetpropoxy.out
deleted file mode 100644
index 0d120497ee..0000000000
--- a/examples/cantherm/reactions/23dimethylpropoxy/cantherm_dimetpropoxy.out
+++ /dev/null
@@ -1,96 +0,0 @@
-# Coordinates for dimetpropoxy (angstroms):
-# C 0.0000 0.0000 0.0000
-# C 0.5847 1.3498 -0.4247
-# C -0.3680 2.4927 -0.0596
-# C 1.9489 1.6005 0.2416
-# C 3.0151 0.5519 -0.1732
-# O 2.5011 2.7974 -0.1357
-# H -1.0250 -0.1099 -0.3763
-# H -0.0415 -0.0712 1.0976
-# H 0.5865 -0.8473 -0.3756
-# H 0.7553 1.3572 -1.5131
-# H -0.5498 2.5044 1.0255
-# H -1.3364 2.3739 -0.5615
-# H 0.0563 3.4630 -0.3459
-# H 1.8443 1.5532 1.3464
-# H 3.0942 0.5186 -1.2657
-# H 2.7067 -0.4294 0.2034
-# H 3.9893 0.8093 0.2531
-conformer(
- label = 'dimetpropoxy',
- E0 = (-714283, 'kJ/mol'),
- modes = [
- IdealGasTranslation(mass=(87.081, 'amu')),
- NonlinearRotor(
- inertia = ([109.585, 168.42, 254.532], 'amu*angstrom^2'),
- symmetry = 1,
- ),
- HarmonicOscillator(
- frequencies = ([76.6052, 186.455, 191.636, 234.446, 247.313, 318.777, 329.629, 372.351, 442.006, 468.193, 763.781, 879.235, 893.4, 898.659, 936.032, 956.026, 988.249, 1075.39, 1115.92, 1140.49, 1157.11, 1230.46, 1254.14, 1307.33, 1331.07, 1339.86, 1360.26, 1375.36, 1432.51, 1439.04, 1446.46, 1451.11, 1456.22, 1466.11, 2852.38, 2916.49, 2919.41, 2929.98, 2947.12, 2983.89, 2989.25, 2999.98, 3005.72, 3030.24, 3037.25], 'cm^-1'),
- ),
- ],
- spinMultiplicity = 2,
- opticalIsomers = 1,
-)
-
-# Coordinates for dimetpropoxy_betasci (angstroms):
-# C 0.0000 0.0000 0.0000
-# C 0.3933 1.3553 -0.5133
-# C -0.3992 2.5309 -0.0252
-# C 2.2646 1.7438 0.2725
-# C 3.0582 0.5248 -0.1747
-# O 2.5003 2.8638 -0.2091
-# H -1.0613 -0.1878 -0.2340
-# H 0.0978 -0.0527 1.0945
-# H 0.5868 -0.8082 -0.4482
-# H 0.7200 1.4038 -1.5543
-# H -0.5221 2.4933 1.0667
-# H -1.4078 2.5152 -0.4695
-# H 0.0890 3.4732 -0.2927
-# H 1.8198 1.6748 1.2927
-# H 3.0712 0.4600 -1.2691
-# H 2.6659 -0.4039 0.2536
-# H 4.0935 0.6524 0.1687
-conformer(
- label = 'dimetpropoxy_betasci',
- E0 = (-714248, 'kJ/mol'),
- modes = [
- IdealGasTranslation(mass=(87.081, 'amu')),
- NonlinearRotor(
- inertia = ([116.366, 182.943, 273.434], 'amu*angstrom^2'),
- symmetry = 1,
- ),
- HarmonicOscillator(
- frequencies = ([54.586, 137.512, 160.544, 179.574, 244.433, 258.588, 295.637, 332.49, 390.674, 481.247, 817.355, 846.53, 864.952, 898.01, 908.371, 910.897, 1000.4, 1077.97, 1114.11, 1121.38, 1158.79, 1317.47, 1327.16, 1351.9, 1369.23, 1374.51, 1425.6, 1428.19, 1429.34, 1435.69, 1447.31, 1451, 1543.93, 2831.47, 2900.98, 2910.98, 2935.27, 2955.13, 2968.69, 3003.86, 3016.14, 3025.87, 3029.75, 3054.65], 'cm^-1'),
- ),
- ],
- spinMultiplicity = 2,
- opticalIsomers = 1,
- frequency = (-383.861, 'cm^-1'),
-)
-
-# ======= =========== =========== =========== ===============
-# Temp. k (TST) Tunneling k (TST+T) Units
-# ======= =========== =========== =========== ===============
-# 300 K 1.677e+07 1 1.677e+07 s^-1
-# 400 K 8.206e+08 1 8.206e+08 s^-1
-# 500 K 8.867e+09 1 8.867e+09 s^-1
-# 600 K 4.433e+10 1 4.433e+10 s^-1
-# 800 K 3.408e+11 1 3.408e+11 s^-1
-# 1000 K 1.177e+12 1 1.177e+12 s^-1
-# 1500 K 6.267e+12 1 6.267e+12 s^-1
-# 2000 K 1.458e+13 1 1.458e+13 s^-1
-# ======= =========== =========== =========== ===============
-kinetics(
- label = 'dimetpropoxy = dimetpropoxy_betasci',
- kinetics = Arrhenius(
- A = (9.43418e+12, 's^-1'),
- n = 0.361953,
- Ea = (38.2618, 'kJ/mol'),
- T0 = (1, 'K'),
- Tmin = (303.03, 'K'),
- Tmax = (2500, 'K'),
- comment = 'Fitted to 59 data points; dA = *|/ 1.11869, dn = +|- 0.0147204, dEa = +|- 0.0809767 kJ/mol',
- ),
-)
-
diff --git a/examples/cantherm/reactions/CH3OH+HCO/input.out b/examples/cantherm/reactions/CH3OH+HCO/input.out
deleted file mode 100644
index a412f9eda2..0000000000
--- a/examples/cantherm/reactions/CH3OH+HCO/input.out
+++ /dev/null
@@ -1,96 +0,0 @@
-# Coordinates for ch3oh (angstroms):
-# H 0.0000 0.0000 0.0000
-# H -2.1841 -0.1948 0.8955
-# H -2.1841 -0.1948 -0.8955
-# C -1.8238 -0.7230 0.0000
-# O -0.4154 -0.8667 0.0000
-# H -2.2504 -1.7311 0.0000
-conformer(
- label = 'ch3oh',
- E0 = (-303601, 'kJ/mol'),
- modes = [
- IdealGasTranslation(mass=(32.0262, 'amu')),
- NonlinearRotor(
- inertia = ([3.953, 20.3572, 21.0771], 'amu*angstrom^2'),
- symmetry = 1,
- ),
- HarmonicOscillator(
- frequencies = ([282.327, 1034.93, 1089.1, 1145.71, 1319.76, 1439, 1457.49, 1467.39, 2907.75, 2960.64, 3016.78, 3839.95], 'cm^-1'),
- ),
- ],
- spinMultiplicity = 2,
- opticalIsomers = 1,
-)
-
-# Coordinates for ts (angstroms):
-# O 0.0000 0.0000 0.0000
-# H 0.6732 1.7998 -0.6429
-# C -0.1680 1.1339 -0.3219
-# H -1.4733 1.5497 -0.2558
-# C -2.7964 1.2106 -0.0147
-# O -2.8631 -0.1150 -0.3856
-# H -2.9173 1.4061 1.0592
-# H -3.4303 1.8285 -0.6540
-# H -2.1432 -0.6081 0.0350
-conformer(
- label = 'ts',
- E0 = (-602295, 'kJ/mol'),
- modes = [
- IdealGasTranslation(mass=(61.029, 'amu')),
- NonlinearRotor(
- inertia = ([31.3026, 121.908, 145.687], 'amu*angstrom^2'),
- symmetry = 1,
- ),
- HarmonicOscillator(
- frequencies = ([114.274, 157.85, 201.623, 315.051, 422.995, 544.13, 551.837, 1064.78, 1124.47, 1151.01, 1211.84, 1291.59, 1331.13, 1439.57, 1513.67, 1829.74, 2777.03, 2949.27, 3068.37, 3733.84], 'cm^-1'),
- ),
- ],
- spinMultiplicity = 2,
- opticalIsomers = 2,
- frequency = (-1971.39, 'cm^-1'),
-)
-
-# Coordinates for hco (angstroms):
-# C 0.0000 0.0000 0.0000
-# O -1.1468 -0.2271 0.0000
-# H 0.8098 -0.7829 0.0000
-conformer(
- label = 'hco',
- E0 = (-298771, 'kJ/mol'),
- modes = [
- IdealGasTranslation(mass=(29.0027, 'amu')),
- NonlinearRotor(
- inertia = ([0.698419, 11.1747, 11.8731], 'amu*angstrom^2'),
- symmetry = 1,
- ),
- HarmonicOscillator(frequencies=([1072.4, 1961.52, 2676.25], 'cm^-1')),
- ],
- spinMultiplicity = 2,
- opticalIsomers = 1,
-)
-
-# ======= =========== =========== =========== ===============
-# Temp. k (TST) Tunneling k (TST+T) Units
-# ======= =========== =========== =========== ===============
-# 300 K 6.101e-04 1 6.101e-04 cm^3/(mol*s)
-# 400 K 1.770e+00 1 1.770e+00 cm^3/(mol*s)
-# 500 K 2.474e+02 1 2.474e+02 cm^3/(mol*s)
-# 600 K 7.463e+03 1 7.463e+03 cm^3/(mol*s)
-# 800 K 6.519e+05 1 6.519e+05 cm^3/(mol*s)
-# 1000 K 1.143e+07 1 1.143e+07 cm^3/(mol*s)
-# 1500 K 7.629e+08 1 7.629e+08 cm^3/(mol*s)
-# 2000 K 8.325e+09 1 8.325e+09 cm^3/(mol*s)
-# ======= =========== =========== =========== ===============
-kinetics(
- label = 'hco + ch3oh <=> hco + ch3oh',
- kinetics = Arrhenius(
- A = (1.69733, 'cm^3/(mol*s)'),
- n = 3.4832,
- Ea = (69.2938, 'kJ/mol'),
- T0 = (1, 'K'),
- Tmin = (303.03, 'K'),
- Tmax = (2500, 'K'),
- comment = 'Fitted to 59 data points; dA = *|/ 1.04419, dn = +|- 0.00567514, dEa = +|- 0.031219 kJ/mol',
- ),
-)
-
diff --git a/examples/rmg/MR_test/input.py b/examples/rmg/MR_test/input.py
index 463e60e5ea..696ed267d6 100644
--- a/examples/rmg/MR_test/input.py
+++ b/examples/rmg/MR_test/input.py
@@ -24,7 +24,7 @@
#outside kinetics databases
kineticsDepositories = 'default',
#lists specific families used to generate the model. 'default' uses a list of
- #families from RMG-Database/input/families/recommended.py
+ #families from RMG-Database/input/kinetics/families/recommended.py
#a visual list of families is available in PDF form at RMG-database/families
kineticsFamilies = 'default',
#specifies how RMG calculates rates. currently, the only option is 'rate rules'
diff --git a/examples/rmg/commented/input.py b/examples/rmg/commented/input.py
index 39224c7184..0a19972ab2 100644
--- a/examples/rmg/commented/input.py
+++ b/examples/rmg/commented/input.py
@@ -22,7 +22,7 @@
# outside kinetics databases
kineticsDepositories='default',
# lists specific families used to generate the model. 'default' uses a list of
- # families from RMG-Database/input/families/recommended.py
+ # families from RMG-Database/input/kinetics/families/recommended.py
# a visual list of families is available in PDF form at RMG-database/families
kineticsFamilies='default',
# specifies how RMG calculates rates. currently, the only option is 'rate rules'
@@ -257,3 +257,27 @@
# # If the amount of radicals is more than this, RMG will use hydrogen bond incrementation method
# maxRadicalNumber=0,
# )
+
+# optional block allows thermo to be estimated through ML estimator
+# mlEstimator(
+# thermo=True,
+# # Name of folder containing ML architecture and parameters in database
+# name='main',
+# # Limits on atom numbers
+# minHeavyAtoms=1,
+# maxHeavyAtoms=None,
+# minCarbonAtoms=0,
+# maxCarbonAtoms=None,
+# minOxygenAtoms=0,
+# maxOxygenAtoms=None,
+# minNitrogenAtoms=0,
+# maxNitrogenAtoms=None,
+# # Limits on cycles
+# onlyCyclics=False,
+# minCycleOverlap=0, # specifies the minimum number of atoms that must be shared between any two cycles
+# # If the estimated uncertainty of the thermo prediction is greater than
+# # any of these values, then don't use the ML estimate
+# H298UncertaintyCutoff=(3.0, 'kcal/mol'),
+# S298UncertaintyCutoff=(2.0, 'cal/(mol*K)'),
+# CpUncertaintyCutoff=(2.0, 'cal/(mol*K)')
+# )
diff --git a/examples/rmg/minimal_ml/RMG.sh b/examples/rmg/minimal_ml/RMG.sh
new file mode 100644
index 0000000000..d3c233ad22
--- /dev/null
+++ b/examples/rmg/minimal_ml/RMG.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+# Make sure your PYTHONPATH includes the necessary paths to run RMG-Py
+# Uncomment the following lines if your PYTHONPATH is not stored in
+# your .bashrc file already. Be sure to modify the paths to the locations
+# of your code as necessary.
+
+# export PYTHONPATH=$PYTHONPATH:$HOME/RMG-Py/
+# export PYTHONPATH=$PYTHONPATH:$HOME/RMG-database/
+# export PYTHONPATH=$PYTHONPATH:$HOME/PyDAS/
+# export PYTHONPATH=$PYTHONPATH:$HOME/PyDQED/
+
+# In order for the solvers to work properly, be sure to compile the PyDAS and PyDQED codes
+# prior to running RMG. Also be sure to compile RMG. Sometimes with large code changes,
+# you must first 'make clean' to removed old compiled files and recompile with the 'make'
+# command.
+
+# Run RMG on the input.py file.
+export KERAS_BACKEND=theano
+python ../../../rmg.py input.py
diff --git a/examples/rmg/minimal_ml/input.py b/examples/rmg/minimal_ml/input.py
new file mode 100644
index 0000000000..0296f89c86
--- /dev/null
+++ b/examples/rmg/minimal_ml/input.py
@@ -0,0 +1,55 @@
+# Data sources
+database(
+ thermoLibraries = ['primaryThermoLibrary'],
+ reactionLibraries = [],
+ seedMechanisms = [],
+ kineticsDepositories = ['training'],
+ kineticsFamilies = 'default',
+ kineticsEstimator = 'rate rules',
+)
+
+mlEstimator(
+ thermo=True,
+ minHeavyAtoms=4,
+)
+
+# List of species
+species(
+ label='ethane',
+ reactive=True,
+ structure=SMILES("CC"),
+)
+
+# Reaction systems
+simpleReactor(
+ temperature=(1350,'K'),
+ pressure=(1.0,'bar'),
+ initialMoleFractions={
+ "ethane": 1.0,
+ },
+ terminationConversion={
+ 'ethane': 0.9,
+ },
+ terminationTime=(1e6,'s'),
+)
+
+simulator(
+ atol=1e-16,
+ rtol=1e-8,
+)
+
+model(
+ toleranceKeepInEdge=0.0,
+ toleranceMoveToCore=0.1,
+ toleranceInterruptSimulation=0.1,
+ maximumEdgeSpecies=100000,
+)
+
+options(
+ units='si',
+ saveRestartPeriod=None,
+ generateOutputHTML=True,
+ generatePlots=False,
+ saveEdgeSpecies=True,
+ saveSimulationProfiles=True,
+)
diff --git a/examples/rmg/propane_branching/input.py b/examples/rmg/propane_branching/input.py
new file mode 100644
index 0000000000..9c8f1c2d46
--- /dev/null
+++ b/examples/rmg/propane_branching/input.py
@@ -0,0 +1,81 @@
+database(
+ thermoLibraries = ['BurkeH2O2','primaryThermoLibrary','thermo_DFT_CCSDTF12_BAC','CBS_QB3_1dHR','DFT_QCI_thermo'],
+ reactionLibraries = [],
+ seedMechanisms = ['BurkeH2O2inN2','ERC-FoundationFuelv0.9'],
+ kineticsDepositories = 'default',
+ kineticsFamilies = 'default',
+ kineticsEstimator = 'rate rules',
+)
+
+
+species(
+ label='propane',
+ reactive=True,
+ structure=SMILES("CCC"),
+)
+species(
+ label='O2',
+ structure=SMILES("[O][O]"),
+)
+species(
+ label='N2',
+ reactive=False,
+ structure=adjacencyList("""
+ 1 N u0 p1 c0 {2,T}
+ 2 N u0 p1 c0 {1,T}
+ """),
+)
+
+
+simpleReactor(
+ temperature=(700,'K'),
+ pressure=(10.0,'bar'),
+ initialMoleFractions={
+ "N2": 4,
+ "O2": 1,
+ "propane": 1./5.0,
+ },
+
+ terminationConversion={
+ 'propane': .90,
+ },
+ terminationTime=(40,'s'),
+
+)
+
+simulator(
+ atol=1e-16,
+ rtol=1e-8,
+)
+
+model(
+ toleranceMoveToCore=0.3,
+ toleranceInterruptSimulation=0.3,
+ maxNumObjsPerIter=1,
+ terminateAtMaxObjects=True,
+ filterReactions=True,
+ toleranceBranchReactionToCore=0.001,
+ branchingIndex=0.5,
+ branchingRatioMax=1.0,
+)
+
+options(
+ units='si',
+ generateSeedEachIteration=False,
+ generateOutputHTML=False,
+ generatePlots=False,
+ saveSimulationProfiles=False,
+ verboseComments=False,
+ saveEdgeSpecies=False,
+ keepIrreversible=False,
+)
+
+generatedSpeciesConstraints(
+ allowed=['input species','seed mechanisms','reaction libraries'],
+ maximumCarbonAtoms=5,
+ maximumOxygenAtoms=8,
+ maximumNitrogenAtoms=0,
+ maximumSiliconAtoms=0,
+ maximumSulfurAtoms=0,
+ maximumRadicalElectrons=2,
+)
diff --git a/examples/thermoEstimator/input_ml.py b/examples/thermoEstimator/input_ml.py
new file mode 100644
index 0000000000..b26646cfc4
--- /dev/null
+++ b/examples/thermoEstimator/input_ml.py
@@ -0,0 +1,59 @@
+database(
+ thermoLibraries=['primaryThermoLibrary'],
+)
+
+mlEstimator(
+ thermo=True,
+ # Name of folder containing ML architecture and parameters in database
+ name='main',
+ # Limits on atom numbers
+ minHeavyAtoms=1,
+ maxHeavyAtoms=None,
+ minCarbonAtoms=0,
+ maxCarbonAtoms=None,
+ minOxygenAtoms=0,
+ maxOxygenAtoms=None,
+ minNitrogenAtoms=0,
+ maxNitrogenAtoms=None,
+ # Limits on cycles
+ onlyCyclics=False,
+ minCycleOverlap=0, # specifies the minimum number of atoms that must be shared between any two cycles
+ # If the estimated uncertainty of the thermo prediction is greater than
+ # any of these values, then don't use the ML estimate
+ H298UncertaintyCutoff=(3.0, 'kcal/mol'),
+ S298UncertaintyCutoff=(2.0, 'cal/(mol*K)'),
+ CpUncertaintyCutoff=(2.0, 'cal/(mol*K)')
+)
+
+species(
+ label='DIPK',
+ structure=SMILES("CC(C)C(=O)C(C)C"),
+)
+species(
+ label='O2',
+ structure=SMILES("[O][O]"),
+)
+species(
+ label='R_tert',
+ structure=SMILES("CC(C)C(=O)[C](C)C"),
+)
+species(
+ label='R_pri',
+ structure=SMILES("CC(C)C(=O)C(C)[CH2]"),
+)
+species(
+ label='spirooctane',
+ structure=SMILES('C1CCC2(C1)CCC2'),
+)
+species(
+ label='bicyclooctane',
+ structure=SMILES('C1CC2CCC1CC2'),
+)
+species(
+ label='benzene',
+ structure=SMILES('c1ccccc1'),
+)
+species(
+ label='naphthalene',
+ structure=SMILES('c12ccccc1cccc2'),
+)
diff --git a/examples/thermoEstimator/run_ml.sh b/examples/thermoEstimator/run_ml.sh
new file mode 100755
index 0000000000..bc20f75f1c
--- /dev/null
+++ b/examples/thermoEstimator/run_ml.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+# Run the thermo estimator on the given thermo input file
+python ../../scripts/thermoEstimator.py input_ml.py
diff --git a/rmgpy/chemkin.pyx b/rmgpy/chemkin.pyx
index 5ff227924d..bfd042577d 100644
--- a/rmgpy/chemkin.pyx
+++ b/rmgpy/chemkin.pyx
@@ -375,7 +375,7 @@ def _readKineticsReaction(line, speciesDict, Aunits, Eunits):
if re.match('[0-9.]+',product):
logging.warning("Looks like reaction {0!r} has fractional stoichiometry, which RMG cannot handle. Ignoring".format(line))
raise ChemkinError('Skip reaction!')
- raise ChemkinError('Unexpected product "{0}" in reaction {1}.'.format(product, reaction))
+ raise ChemkinError('Unexpected product "{0}" in reaction {1} from line {2}.'.format(product, reaction,line))
else:
productSpecies = speciesDict[product]
if not productSpecies.reactive:
@@ -667,8 +667,8 @@ def readReactionComments(reaction, comments, read = True):
# undo the kinetic manipulation caused by setting degneracy
if reaction.kinetics:
reaction.kinetics.changeRate(1./degen)
- # still add kinetic comment
- reaction.kinetics.comment += line.strip() + "\n"
+ # do not add comment because setting degeneracy does so already
+ reaction.kinetics.comment += "\n"
elif line.strip() != '':
# Any lines which are commented out but don't have any specific flag are simply kinetics comments
@@ -1558,8 +1558,10 @@ def writeReactionString(reaction, javaLibrary = False):
def writeKineticsEntry(reaction, speciesList, verbose = True, javaLibrary = False, commented=False):
"""
Return a string representation of the reaction as used in a Chemkin
- file. Use verbose = True to turn on comments. Use javaLibrary = True in order to
- generate a kinetics entry suitable for an RMG-Java kinetics library.
+ file. Use `verbose = True` to turn on kinetics comments.
+ Use `commented = True` to comment out the entire reaction.
+ Use javaLibrary = True in order to generate a kinetics entry suitable
+ for an RMG-Java kinetics library.
"""
string = ""
diff --git a/rmgpy/chemkinTest.py b/rmgpy/chemkinTest.py
index 6ae4c271be..9097404f53 100644
--- a/rmgpy/chemkinTest.py
+++ b/rmgpy/chemkinTest.py
@@ -576,6 +576,8 @@ def testReadReactionCommentsDegeneracy(self):
Also checks that reaction rate was not modified in the process.
"""
for index, comment in enumerate(self.comments_list):
+ # Clear any leftover kinetics comments
+ self.reaction.kinetics.comment = ''
previous_rate = self.reaction.kinetics.A.value_si
new_rxn = readReactionComments(self.reaction, comment)
new_rate = new_rxn.kinetics.A.value_si
@@ -583,6 +585,13 @@ def testReadReactionCommentsDegeneracy(self):
self.assertEqual(new_rxn.degeneracy, self.degeneracy_list[index], 'wrong degeneracy was stored')
self.assertEqual(previous_rate, new_rate)
+ # Check that the comment only appears once in the kinetics comment
+ if new_rxn.degeneracy != 1:
+ self.assertEqual(new_rxn.kinetics.comment.count('Multiplied by reaction path degeneracy {}'.format(new_rxn.degeneracy)), 1,
+ 'Reaction degeneracy comment duplicated while reading Chemkin comments')
+ else:
+ self.assertTrue('Multiplied by reaction path degeneracy' not in new_rxn.kinetics.comment)
+
def testRemoveLineBreaks(self):
"""
tests that _removeLineBreaks functions properly
diff --git a/rmgpy/data/kinetics/common.py b/rmgpy/data/kinetics/common.py
index d961bf3960..9cd21160ed 100644
--- a/rmgpy/data/kinetics/common.py
+++ b/rmgpy/data/kinetics/common.py
@@ -44,12 +44,13 @@
################################################################################
+
def saveEntry(f, entry):
"""
Save an `entry` in the kinetics database by writing a string to
the given file object `f`.
"""
- from rmgpy.cantherm.output import prettify
+ from arkane.output import prettify
def sortEfficiencies(efficiencies0):
efficiencies = {}
@@ -244,7 +245,7 @@ def find_degenerate_reactions(rxn_list, same_reactants=None, template=None, kine
This algorithm used to exist in family.__generateReactions, but was moved
here so it could operate across reaction families.
- This method modifies the rxnList in place and also returns it.
+ This method returns an updated list with degenerate reactions removed.
Args:
rxn_list (list): reactions to be analyzed
diff --git a/rmgpy/data/kinetics/family.py b/rmgpy/data/kinetics/family.py
index 62148c5293..b6f448373c 100644
--- a/rmgpy/data/kinetics/family.py
+++ b/rmgpy/data/kinetics/family.py
@@ -48,7 +48,7 @@
from rmgpy.reaction import Reaction
from rmgpy.kinetics import Arrhenius
from rmgpy.molecule import Bond, GroupBond, Group, Molecule
-from rmgpy.molecule.resonance import generate_aromatic_resonance_structures
+from rmgpy.molecule.resonance import generate_optimal_aromatic_resonance_structures
from rmgpy.species import Species
from .common import saveEntry, ensure_species, find_degenerate_reactions, generate_molecule_combos,\
@@ -1509,17 +1509,12 @@ def isMoleculeForbidden(self, molecule):
Return ``True`` if the molecule is forbidden in this family, or
``False`` otherwise.
"""
- from rmgpy.data.rmg import getDB
-
- forbidden_structures = getDB('forbidden')
# check family-specific forbidden structures
if self.forbidden is not None and self.forbidden.isMoleculeForbidden(molecule):
return True
- # check RMG globally forbidden structures
- if forbidden_structures.isMoleculeForbidden(molecule):
- return True
+
return False
def __createReaction(self, reactants, products, is_forward):
@@ -1939,7 +1934,7 @@ def generate_products_and_reactions(order):
if prod_resonance:
for i, product in enumerate(products0):
if product.isCyclic:
- aromaticStructs = generate_aromatic_resonance_structures(product)
+ aromaticStructs = generate_optimal_aromatic_resonance_structures(product)
if aromaticStructs:
products0[i] = aromaticStructs[0]
@@ -1961,9 +1956,9 @@ def generate_products_and_reactions(order):
reaction.pairs = self.getReactionPairs(reaction)
reaction.template = self.getReactionTemplateLabels(reaction)
- # Unlabel the atoms
- for label, atom in reaction.labeledAtoms:
- atom.label = ''
+ # Unlabel the atoms for both reactants and products
+ for species in itertools.chain(reaction.reactants, reaction.products):
+ species.clearLabeledAtoms()
# We're done with the labeled atoms, so delete the attribute
del reaction.labeledAtoms
diff --git a/rmgpy/data/kinetics/familyTest.py b/rmgpy/data/kinetics/familyTest.py
index 1ddc82aaf7..320ff7020a 100644
--- a/rmgpy/data/kinetics/familyTest.py
+++ b/rmgpy/data/kinetics/familyTest.py
@@ -624,9 +624,9 @@ def testSaveFamily(self):
comparing it to the original source.
"""
- os.makedirs(os.path.join(settings['test_data.directory'], 'testing_database/kinetics/families/intra_H_copy'))
- self.family.save(os.path.join(settings['test_data.directory'], 'testing_database/kinetics/families/intra_H_copy'))
try:
+ os.makedirs(os.path.join(settings['test_data.directory'], 'testing_database/kinetics/families/intra_H_copy'))
+ self.family.save(os.path.join(settings['test_data.directory'], 'testing_database/kinetics/families/intra_H_copy'))
self.assertTrue(filecmp.cmp(os.path.join(settings['test_data.directory'], 'testing_database/kinetics/families/intra_H_migration/groups.py'),
os.path.join(settings['test_data.directory'], 'testing_database/kinetics/families/intra_H_copy/groups.py')))
self.assertTrue(filecmp.cmp(os.path.join(settings['test_data.directory'], 'testing_database/kinetics/families/intra_H_migration/rules.py'),
diff --git a/rmgpy/data/reference.py b/rmgpy/data/reference.py
index a6df6c46d9..e2f5097d8c 100644
--- a/rmgpy/data/reference.py
+++ b/rmgpy/data/reference.py
@@ -100,11 +100,11 @@ def toPrettyRepr(self):
reconstruct the object.
"""
string = u'Reference(\n'
- if len(self.authors) != 0: string += u' authors = [{0}],\n'.format(', '.join(['"{0!r}"'.format(author.encode("utf-8")) for author in self.authors]))
+ if len(self.authors) != 0: string += u' authors = [{0}],\n'.format(', '.join(['{0!r}'.format(author.encode("utf-8")) for author in self.authors]))
if self.title != '': string += u' title = {0!r},\n'.format(self.title.encode("utf-8"))
- if self.year != '': string += u' year = "{0!r}",\n'.format(self.year.encode("utf-8"))
- if self.doi != '': string += u' doi = "{0!r}",\n'.format(self.doi.encode("utf-8"))
- if self.url != '': string += u' url = "{0!r}",\n'.format(self.url.encode("utf-8"))
+ if self.year != '': string += u' year = {0!r},\n'.format(self.year.encode("utf-8"))
+ if self.doi != '': string += u' doi = {0!r},\n'.format(self.doi.encode("utf-8"))
+ if self.url != '': string += u' url = {0!r},\n'.format(self.url.encode("utf-8"))
return string + u')'
def getAuthorString(self):
@@ -188,15 +188,15 @@ def toPrettyRepr(self):
reconstruct the object.
"""
string = u'Article(\n'
- if len(self.authors) != 0: string += u' authors = [{0}],\n'.format(', '.join(['"{0!r}"'.format(author.encode("utf-8")) for author in self.authors]))
+ if len(self.authors) != 0: string += u' authors = [{0}],\n'.format(', '.join(['{0!r}'.format(author.encode("utf-8")) for author in self.authors]))
if self.title != '': string += u' title = {0!r},\n'.format(self.title.encode("utf-8"))
- if self.journal != '': string += u' journal = "{0!r}",\n'.format(self.journal.encode("utf-8"))
- if self.volume != '': string += u' volume = "{0!r}",\n'.format(self.volume.encode("utf-8"))
- if self.number != '': string += u' number = "{0!r}",\n'.format(self.number.encode("utf-8"))
- if self.pages != '': string += u' pages = """{0!r}""",\n'.format(self.pages.encode("utf-8"))
- if self.year != '': string += u' year = "{0!r}",\n'.format(self.year.encode("utf-8"))
- if self.doi != '': string += u' doi = "{0!r}",\n'.format(self.doi.encode("utf-8"))
- if self.url != '': string += u' url = "{0!r}",\n'.format(self.url.encode("utf-8"))
+ if self.journal != '': string += u' journal = {0!r},\n'.format(self.journal.encode("utf-8"))
+ if self.volume != '': string += u' volume = {0!r},\n'.format(self.volume.encode("utf-8"))
+ if self.number != '': string += u' number = {0!r},\n'.format(self.number.encode("utf-8"))
+ if self.pages != '': string += u' pages = {0!r},\n'.format(self.pages.encode("utf-8"))
+ if self.year != '': string += u' year = {0!r},\n'.format(self.year.encode("utf-8"))
+ if self.doi != '': string += u' doi = {0!r},\n'.format(self.doi.encode("utf-8"))
+ if self.url != '': string += u' url = {0!r},\n'.format(self.url.encode("utf-8"))
return string + u')'
################################################################################
@@ -256,16 +256,16 @@ def toPrettyRepr(self):
reconstruct the object.
"""
string = u'Book(\n'
- if len(self.authors) != 0: string += u' authors = [{0}],\n'.format(', '.join(['"{0!r}"'.format(author.encode("utf-8")) for author in self.authors]))
+ if len(self.authors) != 0: string += u' authors = [{0}],\n'.format(', '.join(['{0!r}'.format(author.encode("utf-8")) for author in self.authors]))
if self.title != '': string += u' title = {0!r},\n'.format(self.title.encode("utf-8"))
- if self.publisher != '': string += u' publisher = "{0!r}",\n'.format(self.publisher.encode("utf-8"))
- if self.address != '': string += u' address = "{0!r}",\n'.format(self.address.encode("utf-8"))
- if self.volume != '': string += u' volume = "{0!r}",\n'.format(self.volume.encode("utf-8"))
- if self.series != '': string += u' series = """{0!r}""",\n'.format(self.series.encode("utf-8"))
- if self.edition != '': string += u' edition = """{0!r}""",\n'.format(self.edition.encode("utf-8"))
- if self.year != '': string += u' year = "{0!r}",\n'.format(self.year.encode("utf-8"))
- if self.doi != '': string += u' doi = "{0!r}",\n'.format(self.doi.encode("utf-8"))
- if self.url != '': string += u' url = "{0!r}",\n'.format(self.url.encode("utf-8"))
+ if self.publisher != '': string += u' publisher = {0!r},\n'.format(self.publisher.encode("utf-8"))
+ if self.address != '': string += u' address = {0!r},\n'.format(self.address.encode("utf-8"))
+ if self.volume != '': string += u' volume = {0!r},\n'.format(self.volume.encode("utf-8"))
+ if self.series != '': string += u' series = {0!r},\n'.format(self.series.encode("utf-8"))
+ if self.edition != '': string += u' edition = {0!r},\n'.format(self.edition.encode("utf-8"))
+ if self.year != '': string += u' year = {0!r},\n'.format(self.year.encode("utf-8"))
+ if self.doi != '': string += u' doi = {0!r},\n'.format(self.doi.encode("utf-8"))
+ if self.url != '': string += u' url = {0!r},\n'.format(self.url.encode("utf-8"))
return string + u')'
################################################################################
@@ -316,13 +316,13 @@ def toPrettyRepr(self):
reconstruct the object.
"""
string = u'Thesis(\n'
- if len(self.authors) != 0: string += u' authors = [{0}],\n'.format(', '.join(['"{0!r}"'.format(author.encode("utf-8")) for author in self.authors]))
+ if len(self.authors) != 0: string += u' authors = [{0}],\n'.format(', '.join(['{0!r}'.format(author.encode("utf-8")) for author in self.authors]))
if self.title != '': string += u' title = {0!r},\n'.format(self.title.encode("utf-8"))
- if self.degree != '': string += u' degree = "{0!r}",\n'.format(self.degree.encode("utf-8"))
- if self.school != '': string += u' school = "{0!r}",\n'.format(self.school.encode("utf-8"))
- if self.year != '': string += u' year = "{0!r}",\n'.format(self.year.encode("utf-8"))
- if self.doi != '': string += u' doi = "{0!r}",\n'.format(self.doi.encode("utf-8"))
- if self.url != '': string += u' url = "{0!r}",\n'.format(self.url.encode("utf-8"))
+ if self.degree != '': string += u' degree = {0!r},\n'.format(self.degree.encode("utf-8"))
+ if self.school != '': string += u' school = {0!r},\n'.format(self.school.encode("utf-8"))
+ if self.year != '': string += u' year = {0!r},\n'.format(self.year.encode("utf-8"))
+ if self.doi != '': string += u' doi = {0!r},\n'.format(self.doi.encode("utf-8"))
+ if self.url != '': string += u' url = {0!r},\n'.format(self.url.encode("utf-8"))
return string + u')'
################################################################################
diff --git a/rmgpy/data/rmg.py b/rmgpy/data/rmg.py
index bcafff9bdc..a540fe6c98 100644
--- a/rmgpy/data/rmg.py
+++ b/rmgpy/data/rmg.py
@@ -234,7 +234,7 @@ def saveOld(self, path):
self.kinetics.saveOld(path)
self.statmech.saveOld(path)
-def getDB(name):
+def getDB(name=''):
"""
Returns the RMG database object that corresponds
to the parameter name.
@@ -245,7 +245,9 @@ def getDB(name):
global database
if database:
- if name == 'kinetics':
+ if name == '':
+ return database
+ elif name == 'kinetics':
return database.kinetics
elif name == 'thermo':
return database.thermo
diff --git a/rmgpy/data/solvation.py b/rmgpy/data/solvation.py
index ea3f578eac..44f6847431 100644
--- a/rmgpy/data/solvation.py
+++ b/rmgpy/data/solvation.py
@@ -197,6 +197,14 @@ class SoluteData(object):
"""
Stores Abraham parameters to characterize a solute
"""
+ # Set class variable with McGowan volumes
+ mcgowan_volumes = {
+ 1: 8.71, 2: 6.75,
+ 6: 16.35, 7: 14.39, 8: 12.43, 9: 10.47, 10: 8.51,
+ 14: 26.83, 15: 24.87, 16: 22.91, 17: 20.95, 18: 18.99,
+ 35: 26.21,
+ }
+
def __init__(self, S=None, B=None, E=None, L=None, A=None, V=None, comment=""):
self.S = S
self.B = B
@@ -226,35 +234,26 @@ def setMcGowanVolume(self, species):
Returned volumes are in cm^3/mol/100 (see note below)
See Table 2 in Abraham & McGowan, Chromatographia Vol. 23, No. 4, p. 243. April 1987
doi: 10.1007/BF02311772
+ Also see Table 1 in Zhao et al., J. Chem. Inf. Comput. Sci. Vol. 43, p.1848. 2003
+ doi: 10.1021/ci0341114
"V is scaled to have similar values to the other
descriptors by division by 100 and has units of (cm3mol−1/100)."
the contibutions in this function are in cm3/mol, and the division by 100 is done at the very end.
"""
molecule = species.molecule[0] # any will do, use the first.
- Vtot = 0
+ Vtot = 0.0
for atom in molecule.atoms:
- thisV = 0.0
- if atom.isCarbon():
- thisV = 16.35
- elif (atom.element.number == 7): # nitrogen, do this way if we don't have an isElement method
- thisV = 14.39
- elif atom.isOxygen():
- thisV = 12.43
- elif atom.isHydrogen():
- thisV = 8.71
- elif (atom.element.number == 16):
- thisV = 22.91
- else:
- raise Exception()
- Vtot = Vtot + thisV
+ try:
+ Vtot += self.mcgowan_volumes[atom.element.number]
+ except KeyError:
+ raise Exception('McGowan volume not available for element {}'.format(atom.element.nubmer))
- for bond in molecule.getBonds(atom):
- # divide contribution in half since all bonds would be counted twice this way
- Vtot = Vtot - 6.56/2
+ # divide contribution in half since all bonds would be counted twice this way
+ Vtot -= len(molecule.getBonds(atom)) * 6.56/2
- self.V= Vtot / 100; # division by 100 to get units correct.
+ self.V = Vtot / 100 # division by 100 to get units correct.
################################################################################
diff --git a/rmgpy/data/statmech.py b/rmgpy/data/statmech.py
index 1686658478..7886817d25 100644
--- a/rmgpy/data/statmech.py
+++ b/rmgpy/data/statmech.py
@@ -371,6 +371,7 @@ def getStatmechData(self, molecule, thermoModel):
# Get characteristic frequency groups and the associated frequencies
groupCount = self.getFrequencyGroups(molecule)
+ logging.debug('Found frequencies from groups {}'.format(groupCount))
frequencies = []
for entry, count in groupCount.iteritems():
if count != 0 and entry.data is not None: frequencies.extend(entry.data.generateFrequencies(count))
@@ -408,16 +409,18 @@ def getStatmechData(self, molecule, thermoModel):
# Subtract out contributions to heat capacity from the group frequencies
Tlist = numpy.arange(300.0, 1501.0, 100.0, numpy.float64)
Cv = numpy.array([thermoModel.getHeatCapacity(T) / constants.R for T in Tlist], numpy.float64)
+ logging.debug('Fitting statmech with heat capacities {0}'.format(Cv))
ho = HarmonicOscillator(frequencies=(frequencies,"cm^-1"))
for i in range(Tlist.shape[0]):
Cv[i] -= ho.getHeatCapacity(Tlist[i]) / constants.R
+ logging.debug('After removing found frequencies, the heat capacities are {0}'.format(Cv))
# Subtract out translational modes
Cv -= 1.5
# Subtract out external rotational modes
Cv -= (1.5 if not linear else 1.0)
# Subtract out PV term (Cp -> Cv)
Cv -= 1.0
-
+ logging.debug('After removing translation, rotation, and Cp->Cv, the heat capacities are {0}'.format(Cv))
# Fit remaining frequencies and hindered rotors to the heat capacity data
from statmechfit import fitStatmechToHeatCapacity
modes = fitStatmechToHeatCapacity(Tlist, Cv, numVibrations - len(frequencies), numRotors, molecule)
@@ -631,6 +634,7 @@ def getStatmechData(self, molecule, thermoModel=None):
in order, returning the first match found, before falling back to
estimation via group additivity.
"""
+ logging.debug('Retrieving stat mech data for {}.'.format(molecule.toSMILES()))
statmechModel = None
# Check the libraries in order first; return the first successful match
for label in self.libraryOrder:
diff --git a/rmgpy/data/statmechfit.py b/rmgpy/data/statmechfit.py
index a45244f6a0..f51d09840b 100644
--- a/rmgpy/data/statmechfit.py
+++ b/rmgpy/data/statmechfit.py
@@ -174,6 +174,10 @@ def fitStatmechDirect(Tlist, Cvlist, Nvib, Nrot, molecule=None):
raise StatmechFitError('Returned solution vector is nonsensical: x = {0}.'.format(x))
if igo == 8:
logging.warning('Maximum number of iterations reached when fitting spectral data for {0}.'.format(molecule.toSMILES()))
+ elif igo > 8:
+ logging.warning('A solver error occured when fitting spectral data for {0}.'.format(molecule.toSMILES()))
+ logging.debug('Fitting remaining heat capacity to {0} vibrations and {1} rotations'.format(Nvib,Nrot))
+ logging.debug('The residuals for heat capacity values is {}'.format(fit.evaluate(x)[0]))
# Postprocess optimization results
vib = list(x[0:Nvib])
@@ -225,6 +229,10 @@ def fitStatmechPseudoRotors(Tlist, Cvlist, Nvib, Nrot, molecule=None):
raise StatmechFitError('Returned solution vector is nonsensical: x = {0}.'.format(x))
if igo == 8:
logging.warning('Maximum number of iterations reached when fitting spectral data for {0}.'.format(molecule.toSMILES()))
+ if igo > 8:
+ logging.warning('A solver error occured when fitting spectral data for {0}.'.format(molecule.toSMILES()))
+ logging.debug('Fitting remaining heat capacity to {0} vibrations and {1} rotations'.format(Nvib,Nrot))
+ logging.debug('The residuals for heat capacity values is {}'.format(fit.evaluate(x)[0]))
# Postprocess optimization results
vib = list(x[0:Nvib])
@@ -281,6 +289,10 @@ def fitStatmechPseudo(Tlist, Cvlist, Nvib, Nrot, molecule=None):
raise StatmechFitError('Returned solution vector is nonsensical: x = {0}.'.format(x))
if igo == 8:
logging.warning('Maximum number of iterations reached when fitting spectral data for {0}.'.format(molecule.toSMILES()))
+ if igo > 8:
+ logging.warning('A solver error occured when fitting spectral data for {0}.'.format(molecule.toSMILES()))
+ logging.debug('Fitting remaining heat capacity to {0} vibrations and {1} rotations'.format(Nvib,Nrot))
+ logging.debug('The residuals for heat capacity values is {}'.format(fit.evaluate(x)[0]))
# Postprocess optimization results
Nvib2 = int(round(x[1]))
diff --git a/rmgpy/data/thermo.py b/rmgpy/data/thermo.py
index 25ccf4f0ea..da78be6d81 100644
--- a/rmgpy/data/thermo.py
+++ b/rmgpy/data/thermo.py
@@ -48,6 +48,7 @@
from rmgpy.molecule import Molecule, Bond, Group
import rmgpy.molecule
from rmgpy.species import Species
+from rmgpy.ml.estimator import MLEstimator
#: This dictionary is used to add multiplicity to species label
_multiplicity_labels = {1:'S',2:'D',3:'T',4:'Q',5:'V',}
@@ -1102,18 +1103,16 @@ def getThermoData(self, species, trainingSet=None):
Return the thermodynamic parameters for a given :class:`Species`
object `species`. This function first searches the loaded libraries
in order, returning the first match found, before falling back to
- estimation via group additivity.
+ estimation via machine learning and then group additivity.
- The method corrects for symmetry when the molecule uses HBI or
- group additivity. Libraries and direct QM calculations are already
- corrected.
+ The method corrects for symmetry when the molecule uses machine
+ learning or group additivity. Libraries and direct QM calculations
+ are already corrected.
Returns: ThermoData
"""
from rmgpy.rmg.input import getInput
- thermo0 = None
-
thermo0 = self.getThermoDataFromLibraries(species)
if thermo0 is not None:
@@ -1127,6 +1126,12 @@ def getThermoData(self, species, trainingSet=None):
except Exception:
logging.debug('Quantum Mechanics DB could not be found.')
quantumMechanics = None
+
+ try:
+ ml_estimator, ml_settings = getInput('MLEstimator')
+ except Exception:
+ logging.debug('ML estimator could not be found.')
+ ml_estimator, ml_settings = None, None
if quantumMechanics:
original_molecule = species.molecule[0]
@@ -1177,7 +1182,7 @@ def getThermoData(self, species, trainingSet=None):
thermo0 = quantumMechanics.getThermoData(original_molecule) # returns None if it fails
if thermo0 is None:
- # Use group additivity methods to determine thermo for molecule (or if QM fails completely)
+ # First try finding stable species in libraries and using HBI
for mol in species.molecule:
if mol.reactive:
original_molecule = mol
@@ -1219,17 +1224,25 @@ def getThermoData(self, species, trainingSet=None):
species.molecule = newMolList
thermo0 = thermo[0][2]
- else:
- # Did not find any saturated values in the thermo libraries, so try group additivity instead
- thermo0 = self.getThermoDataFromGroups(species)
-
- else:
- # Saturated molecule, estimate it via groups since we've already checked libraries much earlier
+ if thermo0 is None:
+ # If we still don't have thermo, use ML to estimate it, but
+ # only if the molecule is made up of H, C, N, and O atoms and
+ # is not a singlet carbene. ML settings are checked in
+ # `self.get_thermo_data_from_ml`.
+ if (ml_estimator is not None
+ and all(a.element.number in {1, 6, 7, 8} for a in species.molecule[0].atoms)
+ and species.molecule[0].getSingletCarbeneCount() == 0):
+
+ thermo0 = self.get_thermo_data_from_ml(species,
+ ml_estimator,
+ ml_settings)
+
+ if thermo0 is None:
+ # And lastly, resort back to group additivity to determine thermo for molecule
thermo0 = self.getThermoDataFromGroups(species)
-
- # update entropy by symmetry correction
- thermo0.S298.value_si -= constants.R * math.log(species.getSymmetryNumber())
+ # Update entropy by symmetry correction (not included in trained ML model)
+ thermo0.S298.value_si -= constants.R * math.log(species.getSymmetryNumber())
# Make sure to calculate Cp0 and CpInf if it wasn't done already
findCp0andCpInf(species, thermo0)
@@ -1404,6 +1417,75 @@ def getThermoDataFromGroups(self, species):
findCp0andCpInf(species, thermoData)
return thermoData
+ def get_thermo_data_from_ml(self, species, ml_estimator, ml_settings):
+ """
+ Return the set of thermodynamic parameters corresponding to a
+ given :class:`Species` object `species` by estimation using the
+ ML estimator. Also compare the estimated uncertainties to the
+ user-defined cutoffs. If any of the uncertainties are larger
+ than their corresponding cutoffs, return None. Also check all
+ other options in `ml_settings`.
+
+ For HBI, the resonance isomer with the lowest H298 is used and
+ the resonance isomers in species are sorted in ascending order.
+
+ The entropy is not corrected for the symmetry of the molecule.
+ This should be done later by the calling function.
+ """
+ molecule = species.molecule[0]
+
+ min_heavy = ml_settings['min_heavy_atoms'] or 1
+ max_heavy = ml_settings['max_heavy_atoms'] or numpy.inf
+ min_carbon = ml_settings['min_carbon_atoms'] or 0
+ max_carbon = ml_settings['max_carbon_atoms'] or numpy.inf
+ min_oxygen = ml_settings['min_oxygen_atoms'] or 0
+ max_oxygen = ml_settings['max_oxygen_atoms'] or numpy.inf
+ min_nitrogen = ml_settings['min_nitrogen_atoms'] or 0
+ max_nitrogen = ml_settings['max_nitrogen_atoms'] or numpy.inf
+
+ element_count = molecule.get_element_count()
+ n_heavy = sum(count for element, count in element_count.iteritems() if element != 'H')
+
+ if not(min_heavy <= n_heavy <= max_heavy):
+ return None
+ if not(min_carbon <= element_count.get('C', 0) <= max_carbon):
+ return None
+ if not(min_oxygen <= element_count.get('O', 0) <= max_oxygen):
+ return None
+ if not(min_nitrogen <= element_count.get('N', 0) <= max_nitrogen):
+ return None
+
+ if ml_settings['only_cyclics'] and not molecule.isCyclic():
+ return None
+ min_cycle_overlap = ml_settings['min_cycle_overlap']
+ if min_cycle_overlap > 0 and molecule.getMaxCycleOverlap() < min_cycle_overlap:
+ return None
+
+ if molecule.isRadical():
+ thermo = [self.estimateRadicalThermoViaHBI(mol, ml_estimator.get_thermo_data) for mol in species.molecule]
+ H298 = numpy.array([tdata.H298 for tdata in thermo])
+ indices = H298.argsort()
+ species.molecule = [species.molecule[ind] for ind in indices]
+ thermo0 = thermo[indices[0]]
+ else:
+ thermo0 = ml_estimator.get_thermo_data_for_species(species)
+
+ # The keys for this dictionary should match the keys in
+ # `RMG.ml_uncertainty_cutoffs`. Use a temperature-weighted
+ # average to estimate uncertainty for Cp.
+ uncertainties = dict(
+ H298=thermo0.H298.uncertainty_si,
+ S298=thermo0.S298.uncertainty_si,
+ Cp=numpy.average(thermo0.Cpdata.uncertainty_si, weights=thermo0.Tdata.value_si)
+ )
+
+ ml_uncertainty_cutoffs = ml_settings['uncertainty_cutoffs']
+ if any(uncertainties[p] > ml_uncertainty_cutoffs[p].value_si for p in ml_uncertainty_cutoffs):
+ return None
+ else:
+ return thermo0
+
+
def prioritizeThermo(self, species, thermoDataList):
"""
Use some metrics to reorder a list of thermo data from best to worst.
@@ -1435,7 +1517,7 @@ def prioritizeThermo(self, species, thermoDataList):
indices = [0]
return indices
- def estimateRadicalThermoViaHBI(self, molecule, stableThermoEstimator ):
+ def estimateRadicalThermoViaHBI(self, molecule, stableThermoEstimator):
"""
Estimate the thermodynamics of a radical by saturating it,
applying the provided stableThermoEstimator method on the saturated species,
@@ -1470,8 +1552,8 @@ def estimateRadicalThermoViaHBI(self, molecule, stableThermoEstimator ):
if not isinstance(thermoData_sat, ThermoData):
thermoData_sat = thermoData_sat.toThermoData()
-
- if not stableThermoEstimator == self.computeGroupAdditivityThermo:
+ if not (stableThermoEstimator == self.computeGroupAdditivityThermo
+ or isinstance(stableThermoEstimator.__self__, MLEstimator)):
#remove the symmetry contribution to the entropy of the saturated molecule
##assumes that the thermo data comes from QMTP or from a thermolibrary
thermoData_sat.S298.value_si += constants.R * math.log(saturatedStruct.getSymmetryNumber())
diff --git a/rmgpy/data/thermoTest.py b/rmgpy/data/thermoTest.py
index 194473d90b..b90b28ec96 100644
--- a/rmgpy/data/thermoTest.py
+++ b/rmgpy/data/thermoTest.py
@@ -34,10 +34,12 @@
from rmgpy import settings
from rmgpy.data.rmg import RMGDatabase, database
+from rmgpy.ml.estimator import MLEstimator
from rmgpy.rmg.main import RMG
-from rmgpy.rmg.model import Species
+from rmgpy.species import Species
from rmgpy.data.thermo import *
from rmgpy.molecule.molecule import Molecule
+from rmgpy.quantity import Quantity
import rmgpy
################################################################################
@@ -77,6 +79,13 @@ def setUpClass(self):
self.databaseWithoutLibraries = ThermoDatabase()
self.databaseWithoutLibraries.load(os.path.join(settings['database.directory'], 'thermo'),libraries = [])
+ # Set up ML estimator
+ models_path = os.path.join(settings['database.directory'], 'thermo', 'ml', 'main')
+ Hf298_path = os.path.join(models_path, 'H298')
+ S298_path = os.path.join(models_path, 'S298')
+ Cp_path = os.path.join(models_path, 'Cp')
+ self.ml_estimator = MLEstimator(Hf298_path, S298_path, Cp_path)
+
def testPickle(self):
"""
Test that a ThermoDatabase object can be successfully pickled and
@@ -284,7 +293,9 @@ def testSpeciesThermoGenerationLibrary(self):
""")
spec.generate_resonance_structures()
- self.assertTrue(arom.isIsomorphic(spec.molecule[1])) # The aromatic structure should be the second one
+ self.assertTrue(arom.isIsomorphic(spec.molecule[0])) # The aromatic structure should be the first one
+ # Move the aromatic structure to the end for testing
+ spec.molecule.append(spec.molecule.pop(0))
initial = list(spec.molecule) # Make a copy of the list
thermo = self.database.getThermoData(spec)
@@ -294,6 +305,108 @@ def testSpeciesThermoGenerationLibrary(self):
self.assertTrue(arom.isIsomorphic(spec.molecule[0])) # The aromatic structure should now be the first one
self.assertTrue('library' in thermo.comment, 'Thermo not found from library, test purpose not fulfilled.')
+ def test_species_thermo_generation_ml(self):
+ """Test thermo generation for species objects based on ML estimation."""
+
+ # ML settings
+ ml_settings = dict(
+ min_heavy_atoms=1,
+ max_heavy_atoms=None,
+ min_carbon_atoms=0,
+ max_carbon_atoms=None,
+ min_oxygen_atoms=0,
+ max_oxygen_atoms=None,
+ min_nitrogen_atoms=0,
+ max_nitrogen_atoms=None,
+ only_cyclics=False,
+ min_cycle_overlap=0,
+ )
+
+ # Make these large so they don't influence estimation
+ ml_uncertainty_cutoffs = dict(
+ H298=Quantity(1e8, 'kcal/mol'),
+ S298=Quantity(1e8, 'cal/(mol*K)'),
+ Cp=Quantity(1e8, 'cal/(mol*K)')
+ )
+ ml_settings['uncertainty_cutoffs'] = ml_uncertainty_cutoffs
+
+ spec1 = Species().fromSMILES('C[CH]c1ccccc1')
+ spec1.generate_resonance_structures()
+ spec2 = Species().fromSMILES('NC=O')
+
+ thermo1 = self.database.get_thermo_data_from_ml(spec1, self.ml_estimator, ml_settings)
+ thermo2 = self.database.get_thermo_data_from_ml(spec2, self.ml_estimator, ml_settings)
+ self.assertIsInstance(thermo1, ThermoData)
+ self.assertIsInstance(thermo2, ThermoData)
+ self.assertTrue('ML Estimation' in thermo1.comment, 'Thermo not from ML estimation, test purpose not fulfilled')
+ self.assertTrue('ML Estimation' in thermo2.comment, 'Thermo not from ML estimation, test purpose not fulfilled')
+
+ # Now make these negative to make sure we don't use ML
+ ml_uncertainty_cutoffs = dict(
+ H298=Quantity(-1.0, 'kcal/mol'),
+ S298=Quantity(-1.0, 'cal/(mol*K)'),
+ Cp=Quantity(-1.0, 'cal/(mol*K)')
+ )
+ ml_settings['uncertainty_cutoffs'] = ml_uncertainty_cutoffs
+
+ thermo1 = self.database.get_thermo_data_from_ml(spec1, self.ml_estimator, ml_settings)
+ thermo2 = self.database.get_thermo_data_from_ml(spec2, self.ml_estimator, ml_settings)
+ self.assertIsNone(thermo1)
+ self.assertIsNone(thermo2)
+
+ def test_thermo_generation_ml_settings(self):
+ """Test that thermo generation with ML correctly respects settings"""
+
+ # ML settings
+ ml_settings = dict(
+ min_heavy_atoms=5,
+ max_heavy_atoms=6,
+ min_carbon_atoms=5,
+ max_carbon_atoms=5,
+ min_oxygen_atoms=0,
+ max_oxygen_atoms=None,
+ min_nitrogen_atoms=0,
+ max_nitrogen_atoms=None,
+ only_cyclics=False,
+ min_cycle_overlap=0,
+ uncertainty_cutoffs=dict(
+ H298=Quantity(1e8, 'kcal/mol'),
+ S298=Quantity(1e8, 'cal/(mol*K)'),
+ Cp=Quantity(1e8, 'cal/(mol*K)')
+ )
+ )
+
+ spec1 = Species().fromSMILES('CCCC')
+ spec2 = Species().fromSMILES('CCCCC')
+ spec3 = Species().fromSMILES('C1CC12CC2')
+ spec4 = Species().fromSMILES('C1CC2CC1O2')
+
+ # Test atom limits
+ thermo = self.database.get_thermo_data_from_ml(spec1, self.ml_estimator, ml_settings)
+ self.assertIsNone(thermo)
+ thermo = self.database.get_thermo_data_from_ml(spec2, self.ml_estimator, ml_settings)
+ self.assertIsInstance(thermo, ThermoData)
+ self.assertTrue('ML Estimation' in thermo.comment, 'Thermo not from ML estimation, test purpose not fulfilled')
+
+ # Test cyclic species
+ ml_settings['only_cyclics'] = True
+ thermo = self.database.get_thermo_data_from_ml(spec2, self.ml_estimator, ml_settings)
+ self.assertIsNone(thermo)
+
+ # Test spiro species
+ ml_settings['min_cycle_overlap'] = 1
+ thermo = self.database.get_thermo_data_from_ml(spec3, self.ml_estimator, ml_settings)
+ self.assertIsInstance(thermo, ThermoData)
+ self.assertTrue('ML Estimation' in thermo.comment, 'Thermo not from ML estimation, test purpose not fulfilled')
+
+ # Test bridged species
+ ml_settings['min_cycle_overlap'] = 3
+ thermo = self.database.get_thermo_data_from_ml(spec3, self.ml_estimator, ml_settings)
+ self.assertIsNone(thermo)
+ thermo = self.database.get_thermo_data_from_ml(spec4, self.ml_estimator, ml_settings)
+ self.assertIsInstance(thermo, ThermoData)
+ self.assertTrue('ML Estimation' in thermo.comment, 'Thermo not from ML estimation, test purpose not fulfilled')
+
def testThermoEstimationNotAffectDatabase(self):
poly_root = self.database.groups['polycyclic'].entries['PolycyclicRing']
@@ -382,7 +495,7 @@ def setUp(self):
['C=[C]C=CCC', 3, 61.15, 87.08, 29.68, 36.91, 43.03, 48.11, 55.96, 61.78, 71.54],
['C=C[C]=CCC', 3, 61.15, 87.08, 29.68, 36.91, 43.03, 48.11, 55.96, 61.78, 71.54],
['C=CC=[C]CC', 3, 70.35, 88.18, 29.15, 36.46, 42.6, 47.6, 55.32, 61.04, 69.95],
- ['C=CC=C[CH]C', 6, 38.24, 84.41, 27.79, 35.46, 41.94, 47.43, 55.74, 61.92, 71.86],
+ ['C=CC=C[CH]C', 3, 38.24, 84.41, 27.79, 35.46, 41.94, 47.43, 55.74, 61.92, 71.86],
['C=CC=CC[CH2]', 2, 62.45, 89.78, 28.72, 36.31, 42.63, 47.72, 55.50, 61.21, 70.05],
['[CH3]', 6, 34.81, 46.37, 9.14, 10.18, 10.81, 11.34, 12.57, 13.71, 15.2],
['C=CC=C[CH2]', 2, 46.11, 75.82, 22.54, 28.95, 34.24, 38.64, 45.14, 49.97, 57.85],
@@ -433,20 +546,9 @@ def testSymmetryNumberGeneration(self):
"""
for smiles, symm, H298, S298, Cp300, Cp400, Cp500, Cp600, Cp800, Cp1000, Cp1500 in self.testCases:
species = Species().fromSMILES(smiles)
- species.generate_resonance_structures()
- thermoData = self.database.getThermoDataFromGroups(species)
- # pick the molecule with lowest H298
- molecule = species.molecule[0]
- for mol in species.molecule[1:]:
- thermoData0 = self.database.getAllThermoData(Species(molecule=[mol]))[0][0]
- for data in self.database.getAllThermoData(Species(molecule=[mol]))[1:]:
- if data[0].getEnthalpy(298) < thermoData0.getEnthalpy(298):
- thermoData0 = data[0]
- if thermoData0.getEnthalpy(298) < thermoData.getEnthalpy(298):
- thermoData = thermoData0
- molecule = mol
- self.assertEqual(symm, molecule.calculateSymmetryNumber(),
- msg="Symmetry number error for {0}. Expected {1} but calculated {2}.".format(smiles, symm, molecule.calculateSymmetryNumber()))
+ calc_symm = species.getSymmetryNumber()
+ self.assertEqual(symm, calc_symm,
+ msg="Symmetry number error for {0}. Expected {1} but calculated {2}.".format(smiles, symm, calc_symm))
class TestThermoAccuracyAromatics(TestThermoAccuracy):
@@ -1068,7 +1170,7 @@ def testFindAromaticBondsFromSubMolecule(self):
smiles = "C1=CC=C2C=CC=CC2=C1"
spe = Species().fromSMILES(smiles)
spe.generate_resonance_structures()
- mol = spe.molecule[1]
+ mol = spe.molecule[0]
# get two SSSRs
SSSR = mol.getSmallestSetOfSmallestRings()
@@ -1315,14 +1417,14 @@ def testSaturateRingBonds2(self):
smiles = 'C1=CC=C2CCCCC2=C1'
spe = Species().fromSMILES(smiles)
spe.generate_resonance_structures()
- mol = spe.molecule[1]
+ mol = spe.molecule[0]
ring_submol = convertRingToSubMolecule(mol.getDisparateRings()[1][0])[0]
saturated_ring_submol, alreadySaturated = saturate_ring_bonds(ring_submol)
expected_spe = Species().fromSMILES('C1=CC=C2CCCCC2=C1')
expected_spe.generate_resonance_structures()
- expected_saturated_ring_submol = expected_spe.molecule[1]
+ expected_saturated_ring_submol = expected_spe.molecule[0]
expected_saturated_ring_submol.updateConnectivityValues()
@@ -1338,14 +1440,14 @@ def testSaturateRingBonds3(self):
smiles = 'C1=CC=C2CC=CCC2=C1'
spe = Species().fromSMILES(smiles)
spe.generate_resonance_structures()
- mol = spe.molecule[1]
+ mol = spe.molecule[0]
ring_submol = convertRingToSubMolecule(mol.getDisparateRings()[1][0])[0]
saturated_ring_submol, alreadySaturated = saturate_ring_bonds(ring_submol)
expected_spe = Species().fromSMILES('C1=CC=C2CCCCC2=C1')
expected_spe.generate_resonance_structures()
- expected_saturated_ring_submol = expected_spe.molecule[1]
+ expected_saturated_ring_submol = expected_spe.molecule[0]
expected_saturated_ring_submol.updateConnectivityValues()
@@ -1384,7 +1486,7 @@ def isTCDAvailable():
return result
-@unittest.skipIf(not isTCDAvailable(), 'TCD unavailable, skipping unit tests.')
+@unittest.skip('Skipping TCD unit tests because database is offline.')
class TestThermoCentralDatabaseInterface(unittest.TestCase):
"""
Contains unit tests for methods of ThermoCentralDatabaseInterface
diff --git a/rmgpy/exceptions.py b/rmgpy/exceptions.py
index 4462ae8b80..32b8239007 100644
--- a/rmgpy/exceptions.py
+++ b/rmgpy/exceptions.py
@@ -126,7 +126,7 @@ class InchiException(Exception):
class InputError(Exception):
"""
An exception raised when parsing an input file for any module in RMG:
- mechanism generation, cantherm, conformer creation, etc.
+ mechanism generation, Arkane, conformer creation, etc.
Pass a string describing the error.
"""
pass
@@ -240,7 +240,12 @@ class SpeciesError(Exception):
"""
pass
-class StatmechFitError(Exception):
+class StatmechError(Exception):
+ """
+ An exception used when an error occurs in estimating Statmech.
+ """
+
+class StatmechFitError(StatmechError):
"""
An exception used when attempting to fit molecular degrees of freedom to
heat capacity data. Pass a string describing the circumstances of the
diff --git a/rmgpy/kinetics/diffusionLimited.py b/rmgpy/kinetics/diffusionLimited.py
index 732073073d..84647a31d4 100644
--- a/rmgpy/kinetics/diffusionLimited.py
+++ b/rmgpy/kinetics/diffusionLimited.py
@@ -84,13 +84,12 @@ def getEffectiveRate(self, reaction, T):
k_diff = self.getDiffusionLimit(T, reaction, forward=True)
k_eff = k_forward*k_diff/(k_forward+k_diff)
else: # 2 or 3 products
- if Keq > 1.0: # forward rate is faster and thus limited
- k_diff = self.getDiffusionLimit(T, reaction, forward=True)
- k_eff = k_forward*k_diff/(k_forward+k_diff)
- else: # reverse rate is faster and thus limited
- k_diff = self.getDiffusionLimit(T, reaction, forward=False)
- k_eff_reverse = k_reverse*k_diff/(k_reverse+k_diff)
- k_eff = k_eff_reverse * Keq
+ kf_diff = self.getDiffusionLimit(T,reaction,forward=True)
+ krev_diff = self.getDiffusionLimit(T,reaction,forward=False)
+ kff = k_forward*kf_diff/(k_forward+kf_diff)
+ krevr = k_reverse*krev_diff/(k_reverse+krev_diff)
+ kfr = Keq*krevr
+ k_eff = min(kff,kfr)
return k_eff
def getDiffusionFactor(self, reaction, T):
diff --git a/rmgpy/cantherm/__init__.py b/rmgpy/ml/__init__.py
similarity index 92%
rename from rmgpy/cantherm/__init__.py
rename to rmgpy/ml/__init__.py
index 99d974b2ed..8041c667ee 100644
--- a/rmgpy/cantherm/__init__.py
+++ b/rmgpy/ml/__init__.py
@@ -27,9 +27,3 @@
# DEALINGS IN THE SOFTWARE. #
# #
###############################################################################
-
-from .main import CanTherm
-from .statmech import StatMechJob
-from .thermo import ThermoJob
-from .kinetics import KineticsJob
-from .pdep import PressureDependenceJob
diff --git a/rmgpy/ml/estimator.py b/rmgpy/ml/estimator.py
new file mode 100644
index 0000000000..6f29d3917c
--- /dev/null
+++ b/rmgpy/ml/estimator.py
@@ -0,0 +1,138 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+###############################################################################
+# #
+# RMG - Reaction Mechanism Generator #
+# #
+# Copyright (c) 2002-2018 Prof. William H. Green (whgreen@mit.edu), #
+# Prof. Richard H. West (r.west@neu.edu) and the RMG Team (rmg_dev@mit.edu) #
+# #
+# Permission is hereby granted, free of charge, to any person obtaining a #
+# copy of this software and associated documentation files (the 'Software'), #
+# to deal in the Software without restriction, including without limitation #
+# the rights to use, copy, modify, merge, publish, distribute, sublicense, #
+# and/or sell copies of the Software, and to permit persons to whom the #
+# Software is furnished to do so, subject to the following conditions: #
+# #
+# The above copyright notice and this permission notice shall be included in #
+# all copies or substantial portions of the Software. #
+# #
+# THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE #
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING #
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER #
+# DEALINGS IN THE SOFTWARE. #
+# #
+###############################################################################
+
+import os
+import numpy as np
+
+from dde.predictor import Predictor
+
+from rmgpy.thermo import ThermoData
+
+
+class MLEstimator():
+
+ """
+ A machine learning based estimator for thermochemistry prediction.
+
+ The attributes are:
+
+ ==================== ======================= =======================
+ Attribute Type Description
+ ==================== ======================= =======================
+ `hf298_estimator` :class:`Predictor` Hf298 estimator
+ `hf298_uncertainty` ``bool`` Hf298 uncertainty flag
+ `s298_estimator` :class:`Predictor` S298 estimator
+ `s298_uncertainty` ``bool`` S298 uncertainty flag
+ `cp_estimator` :class:`Predictor` Cp estimator
+ `cp_uncertainty` ``bool`` Cp uncertainty flag
+ ==================== ======================= =======================
+
+ """
+
+ def __init__(self, hf298_path, s298_path, cp_path):
+ self.hf298_estimator, self.hf298_uncertainty = load_estimator(hf298_path)
+ self.s298_estimator, self.s298_uncertainty = load_estimator(s298_path)
+ self.cp_estimator, self.cp_uncertainty = load_estimator(cp_path)
+
+ def get_thermo_data(self, molecule):
+ """
+ Return thermodynamic parameters corresponding to a given
+ :class:`Molecule` object `molecule`. Also set the
+ uncertainties estimated by the ML model if available.
+
+ Returns: ThermoData
+ """
+
+ # These should correspond to the temperatures that the ML model was
+ # trained on for Cp.
+ temps = [300.0, 400.0, 500.0, 600.0, 800.0, 1000.0, 1500.0]
+
+ hf298 = self.hf298_estimator.predict(molecule=molecule, sigma=self.hf298_uncertainty)
+ s298 = self.s298_estimator.predict(molecule=molecule, sigma=self.s298_uncertainty)
+ cp = self.cp_estimator.predict(molecule=molecule, sigma=self.cp_uncertainty)
+
+ # If uncertainty is available for the ML model, a tuple of predicted
+ # value and estimated uncertainty is returned. An uncertainty of None
+ # gets set to a valua of 0 by :class:`Quantity`.
+ hf298, hf298u = hf298 if isinstance(hf298, tuple) else (hf298, None)
+ s298, s298u = s298 if isinstance(s298, tuple) else (s298, None)
+ cp, cpu = cp if isinstance(cp, tuple) else (cp, None)
+
+ cp = [np.float64(cp_i) for cp_i in cp]
+ if cpu is not None:
+ cpu = [np.float64(cpu_i) for cpu_i in cpu]
+
+ cp0 = molecule.calculateCp0()
+ cpinf = molecule.calculateCpInf()
+ thermo = ThermoData(
+ Tdata=(temps, 'K'),
+ Cpdata=(cp, 'cal/(mol*K)', cpu),
+ H298=(hf298, 'kcal/mol', hf298u),
+ S298=(s298, 'cal/(mol*K)', s298u),
+ Cp0=(cp0, 'J/(mol*K)'),
+ CpInf=(cpinf, 'J/(mol*K)'),
+ Tmin=(300.0, 'K'),
+ Tmax=(2000.0, 'K'),
+ comment='ML Estimation'
+ )
+
+ return thermo
+
+ def get_thermo_data_for_species(self, species):
+ """
+ Return the set of thermodynamic parameters corresponding to a
+ given :class:`Species` object `species`.
+
+ The current ML estimator treats each resonance isomer
+ identically, i.e., any of the resonance isomers can be chosen.
+
+ Returns: ThermoData
+ """
+ return self.get_thermo_data(species.molecule[0])
+
+
+def load_estimator(model_path):
+ estimator = Predictor()
+
+ input_file = os.path.join(model_path, 'predictor_input.py')
+ weights_file = os.path.join(model_path, 'full_train.h5')
+ model_file = os.path.join(model_path, 'full_train.json')
+ mean_and_std_file = os.path.join(model_path, 'full_train_mean_std.npz')
+
+ estimator.load_input(input_file)
+ if os.path.exists(model_file):
+ estimator.load_architecture(model_file)
+ uncertainty = True
+ else:
+ uncertainty = False
+ mean_and_std_file = mean_and_std_file if os.path.exists(mean_and_std_file) else None
+ estimator.load_parameters(param_path=weights_file, mean_and_std_path=mean_and_std_file)
+
+ return estimator, uncertainty
diff --git a/rmgpy/ml/estimator_test.py b/rmgpy/ml/estimator_test.py
new file mode 100644
index 0000000000..d4a0aa7538
--- /dev/null
+++ b/rmgpy/ml/estimator_test.py
@@ -0,0 +1,66 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+###############################################################################
+# #
+# RMG - Reaction Mechanism Generator #
+# #
+# Copyright (c) 2002-2018 Prof. William H. Green (whgreen@mit.edu), #
+# Prof. Richard H. West (r.west@neu.edu) and the RMG Team (rmg_dev@mit.edu) #
+# #
+# Permission is hereby granted, free of charge, to any person obtaining a #
+# copy of this software and associated documentation files (the 'Software'), #
+# to deal in the Software without restriction, including without limitation #
+# the rights to use, copy, modify, merge, publish, distribute, sublicense, #
+# and/or sell copies of the Software, and to permit persons to whom the #
+# Software is furnished to do so, subject to the following conditions: #
+# #
+# The above copyright notice and this permission notice shall be included in #
+# all copies or substantial portions of the Software. #
+# #
+# THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE #
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING #
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER #
+# DEALINGS IN THE SOFTWARE. #
+# #
+###############################################################################
+
+import os
+import unittest
+
+from rmgpy import settings
+from rmgpy.molecule import Molecule
+from rmgpy.ml.estimator import MLEstimator
+
+
+class TestMLEstimator(unittest.TestCase):
+ """
+ Contains unit tests for rmgpy.ml.estimator
+ """
+
+ def setUp(self):
+ """
+ Set up the MLEstimator class. This method is run once before all
+ other unit tests.
+ """
+ models_path = os.path.join(settings['database.directory'], 'thermo', 'ml', 'main')
+ Hf298_path = os.path.join(models_path, 'H298')
+ S298_path = os.path.join(models_path, 'S298')
+ Cp_path = os.path.join(models_path, 'Cp')
+ self.ml_estimator = MLEstimator(Hf298_path, S298_path, Cp_path)
+
+ def test_get_thermo_data(self):
+ """
+ Test that we can make a prediction using MLEstimator.
+ """
+ mol = Molecule().fromSMILES('C1C2C1C2')
+ thermo = self.ml_estimator.get_thermo_data(mol)
+
+ self.assertTrue(thermo.comment.startswith('ML Estimation'))
+ self.assertAlmostEqual(thermo.Cp0.value_si, 33.3, 1)
+ self.assertAlmostEqual(thermo.CpInf.value_si, 232.8, 1)
+ self.assertEqual(len(thermo.Cpdata.value_si), 7)
+ self.assertGreater(thermo.S298.uncertainty_si, 0.01)
diff --git a/rmgpy/molecule/atomtype.py b/rmgpy/molecule/atomtype.py
index aa42f4053b..ee17335f11 100644
--- a/rmgpy/molecule/atomtype.py
+++ b/rmgpy/molecule/atomtype.py
@@ -237,7 +237,7 @@ def getFeatures(self):
'Val4','Val5','Val6','Val7',
'He','Ne','Ar',
'C','Ca','Cs','Csc','Cd','CO','CS','Cdd','Cdc','Ct','Cb','Cbf','C2s','C2sc','C2d','C2dc','C2tc',
- 'N','N0sc','N1s','N1sc','N1dc','N3s','N3sc','N3d','N3t','N3b','N5sc','N5dc','N5ddc','N5dddc','N5t','N5tc','N5b','N5bd',
+ 'N','N0sc','N1s','N1sc','N1dc','N3s','N3sc','N3d','N3t','N3b','N5sc','N5dc','N5ddc','N5dddc','N5tc','N5b','N5bd',
'O','Oa','O0sc','O2s','O2sc','O2d','O4sc','O4dc','O4tc','O4b',
'Si','Sis','Sid','Sidd','Sit','SiO','Sib','Sibf',
'S','Sa','S0sc','S2s','S2sc','S2d','S2dc','S2tc','S4s','S4sc','S4d','S4dd','S4dc','S4b','S4t','S4tdc','S6s','S6sc','S6d','S6dd','S6ddd','S6dc','S6t','S6td','S6tt','S6tdc',
@@ -248,7 +248,7 @@ def getFeatures(self):
'Val4','Val5','Val6','Val7',
'He','Ne','Ar',
'C','Ca','Cs','Csc','Cd','CO','CS','Cdd','Cdc','Ct','Cb','Cbf','C2s','C2sc','C2d','C2dc','C2tc',
- 'N','N0sc','N1s','N1sc','N1dc','N3s','N3sc','N3d','N3t','N3b','N5sc','N5dc','N5ddc','N5dddc','N5t','N5tc','N5b','N5bd',
+ 'N','N0sc','N1s','N1sc','N1dc','N3s','N3sc','N3d','N3t','N3b','N5sc','N5dc','N5ddc','N5dddc','N5tc','N5b','N5bd',
'O','Oa','O0sc','O2s','O2sc','O2d','O4sc','O4dc','O4tc','O4b',
'Si','Sis','Sid','Sidd','Sit','SiO','Sib','Sibf',
'S','Sa','S0sc','S2s','S2sc','S2d','S2dc','S2tc','S4s','S4sc','S4d','S4dd','S4dc','S4b','S4t','S4tdc','S6s','S6sc','S6d','S6dd','S6ddd','S6dc','S6t','S6td','S6tt','S6tdc',
@@ -260,7 +260,7 @@ def getFeatures(self):
'Si','Sis','Sid','Sidd','Sit','SiO','Sib','Sibf'])
atomTypes['Val5'] = AtomType(label='Val5', generic=['R','R!H'], specific=[
- 'N','N0sc','N1s','N1sc','N1dc','N3s','N3sc','N3d','N3t','N3b','N5sc','N5dc','N5ddc','N5dddc','N5t','N5tc','N5b','N5bd'])
+ 'N','N0sc','N1s','N1sc','N1dc','N3s','N3sc','N3d','N3t','N3b','N5sc','N5dc','N5ddc','N5dddc','N5tc','N5b','N5bd'])
atomTypes['Val6'] = AtomType(label='Val6', generic=['R','R!H'], specific=[
'O','Oa','O0sc','O2s','O2sc','O2d','O4sc','O4dc','O4tc','O4b',
@@ -325,9 +325,9 @@ def getFeatures(self):
# examples for C2dc: C=[C-][N+]#N, [CH-]=[N+]=O, [CH+]=C=[CH-]
atomTypes['C2tc'] = AtomType('C2tc', generic=['R','R!H','C','Val4'], specific=[], # (shared electrons = 8)
single=[0], allDouble=[0], rDouble=[], oDouble=[], sDouble=[], triple=[1], benzene=[0], lonePairs=[1], charge=[-1])
-# examples for C2tc: [C-]#[O+]
+# examples for C2tc: [C-]#[O+], H[N+]#[C-]
-atomTypes['N' ] = AtomType('N', generic=['R','R!H','Val5'], specific=['N0sc','N1s','N1sc','N1dc','N3s','N3sc','N3d','N3t','N3b','N5sc','N5dc','N5ddc','N5dddc','N5t','N5tc','N5b','N5bd'],
+atomTypes['N' ] = AtomType('N', generic=['R','R!H','Val5'], specific=['N0sc','N1s','N1sc','N1dc','N3s','N3sc','N3d','N3t','N3b','N5sc','N5dc','N5ddc','N5dddc','N5tc','N5b','N5bd'],
single=[], allDouble=[], rDouble=[], oDouble=[], sDouble=[], triple=[], benzene=[], lonePairs=[], charge=[])
atomTypes['N0sc'] = AtomType('N0sc', generic=['R','R!H','N','Val5'], specific=[], # (shared electrons = 7-8)
single=[0,1], allDouble=[0], rDouble=[0], oDouble=[0], sDouble=[0], triple=[0], benzene=[0], lonePairs=[3], charge=[-2])
@@ -358,7 +358,7 @@ def getFeatures(self):
# examples for N3b: Oxazole, Pyradine, Pyrazine, 1,3,5-Triazine, Benzimidazole, Purine
atomTypes['N5sc'] = AtomType('N5sc', generic=['R','R!H','N','Val5'], specific=[], # (shared electrons = 4-8)
single=[0,1,2,3,4], allDouble=[0], rDouble=[0], oDouble=[0], sDouble=[0], triple=[0], benzene=[0], lonePairs=[0], charge=[+1,+2])
-# examples for N5sc: !! N5sc should eventually be deleted, see #1206 [NH4+], [NH3+][O-] {N has u1 p0}
+# examples for N5sc: [NH3+][O-]
atomTypes['N5dc'] = AtomType('N5dc', generic=['R','R!H','N','Val5'], specific=[], # (shared electrons = 6-8)
single=[0,1,2], allDouble=[1], rDouble=[], oDouble=[], sDouble=[], triple=[0], benzene=[0], lonePairs=[0], charge=[+1])
# examples for N5dc: O[N+](=O)(O-) nitrate group, [N+](=O)(O)[O-], O=[N+][O-], [N+](=O)(O[N+](=O)[O-])[O-], C=[N+]=[SH-], [NH2+]=[SH-]
@@ -368,9 +368,6 @@ def getFeatures(self):
atomTypes['N5dddc'] = AtomType('N5dddc', generic=['R','R!H','N','Val5'], specific=[], # (shared electrons = 6)
single=[0], allDouble=[3], rDouble=[], oDouble=[], sDouble=[], triple=[0], benzene=[0], lonePairs=[0], charge=[-1])
# examples for N5dddc: C=[N-](=C)=[NH2+]
-atomTypes['N5t' ] = AtomType('N5t', generic=['R','R!H','N','Val5'], specific=[], # (shared electrons = 8-10)
- single=[0,1,2], allDouble=[0], rDouble=[0], oDouble=[0], sDouble=[0], triple=[1], benzene=[0], lonePairs=[0], charge=[0])
-# examples for N5t: C#[NH2]
atomTypes['N5tc'] = AtomType('N5tc', generic=['R','R!H','N','Val5'], specific=[], # (shared electrons = 7-8)
single=[0,1], allDouble=[0], rDouble=[0], oDouble=[0], sDouble=[0], triple=[1], benzene=[0], lonePairs=[0], charge=[+1])
# examples for N5tc: C[N+]#[C-] isocyano group, N#[N+][O-], [NH+]#[C-] (note that C- has p1 here), [N+]#[C-] (note that C- has p1 here), [O-][N+]#C (one of the res structures of Fulminic acid), C[N+]#[C-] (note that C- has p1 here)
@@ -479,8 +476,8 @@ def getFeatures(self):
single=[0,1,2,3,4,5,6], allDouble=[0], rDouble=[0], oDouble=[0], sDouble=[0], triple=[0], benzene=[0], lonePairs=[0], charge=[0])
# examples for S6s: H6S, F6S
atomTypes['S6sc'] = AtomType('S6sc', generic=['R','R!H','S','Val6'], specific=[], # (shared electrons = 7-14)
- single=[0,1,2,3,4,5,6,7], allDouble=[0], rDouble=[0], oDouble=[0], sDouble=[0], triple=[0], benzene=[0], lonePairs=[0], charge=[-1,+1])
-# examples for S6sc: O[SH3+][O-], [O-][S+3]([O-])[O-]
+ single=[0,1,2,3,4,5,6,7], allDouble=[0], rDouble=[0], oDouble=[0], sDouble=[0], triple=[0], benzene=[0], lonePairs=[0], charge=[-1,+1,+2])
+# examples for S6sc: [O-][S+2](O)(O)[O-]CS(=O)
atomTypes['S6d' ] = AtomType('S6d', generic=['R','R!H','S','Val6'], specific=[], # (shared electrons = 8-12)
single=[0,1,2,3,4], allDouble=[1], rDouble=[], oDouble=[], sDouble=[], triple=[0], benzene=[0], lonePairs=[0], charge=[0])
# examples for S6d: [SH4]=O, SF4=O, [SH4]=C, C[SH3]=C...
@@ -491,8 +488,8 @@ def getFeatures(self):
single=[0], allDouble=[3], rDouble=[], oDouble=[], sDouble=[], triple=[0], benzene=[0], lonePairs=[0], charge=[0])
# examples for S6ddd: O=S(=O)(=O)
atomTypes['S6dc'] = AtomType('S6dc', generic=['R','R!H','S','Val6'], specific=[],
- single=[0,1,2,3,4,5], allDouble=[1,2,3], rDouble=[], oDouble=[], sDouble=[], triple=[0], benzene=[0], lonePairs=[0], charge=[-1,+1])
-# *Composite atomType; examples for S6dc: [CH-]=[SH3+], [CH-]=[SH2+]O, [CH-][SH2+], O=[S+](=O)[O-], [OH+]=[S-](=O)=O
+ single=[0,1,2,3,4,5], allDouble=[1,2,3], rDouble=[], oDouble=[], sDouble=[], triple=[0], benzene=[0], lonePairs=[0], charge=[-1,+1,+2])
+# *Composite atomType; examples for S6dc: O=[S+2]([O-])[O-], [CH-]=[SH3+], [CH-]=[SH2+]O, [CH-][SH2+], O=[S+](=O)[O-], [OH+]=[S-](=O)=O
atomTypes['S6t' ] = AtomType('S6t', generic=['R','R!H','S','Val6'], specific=[], # (shared electrons = 9-12)
single=[0,1,2,3], allDouble=[0], rDouble=[], oDouble=[], sDouble=[], triple=[1], benzene=[0], lonePairs=[0], charge=[0])
# examples for S6t: H3S#N
@@ -555,13 +552,12 @@ def getFeatures(self):
atomTypes['N3s' ].setActions(incrementBond=['N3d'], decrementBond=[], formBond=['N3s'], breakBond=['N3s'], incrementRadical=['N3s'], decrementRadical=['N3s'], incrementLonePair=['N1s','N1sc'],decrementLonePair=['N5sc'])
atomTypes['N3sc'].setActions(incrementBond=['N3d'], decrementBond=[], formBond=['N3sc'], breakBond=['N3sc'], incrementRadical=['N3sc'], decrementRadical=['N3sc'], incrementLonePair=['N1s','N1sc'],decrementLonePair=['N5sc'])
atomTypes['N3d' ].setActions(incrementBond=['N3t'], decrementBond=['N3s','N3sc'], formBond=['N3d'], breakBond=['N3d'], incrementRadical=['N3d'], decrementRadical=['N3d'], incrementLonePair=['N1dc'],decrementLonePair=['N5dc'])
-atomTypes['N3t' ].setActions(incrementBond=[], decrementBond=['N3d'], formBond=[], breakBond=[], incrementRadical=[], decrementRadical=[], incrementLonePair=[], decrementLonePair=['N5t'])
+atomTypes['N3t' ].setActions(incrementBond=[], decrementBond=['N3d'], formBond=[], breakBond=[], incrementRadical=[], decrementRadical=[], incrementLonePair=[], decrementLonePair=[])
atomTypes['N3b' ].setActions(incrementBond=[], decrementBond=[], formBond=[], breakBond=[], incrementRadical=[], decrementRadical=[], incrementLonePair=[], decrementLonePair=[])
atomTypes['N5sc'].setActions(incrementBond=['N5dc'], decrementBond=[], formBond=['N5sc'], breakBond=['N5sc'], incrementRadical=['N5sc'], decrementRadical=['N5sc'], incrementLonePair=['N3s','N3sc'],decrementLonePair=[])
-atomTypes['N5dc'].setActions(incrementBond=['N5ddc','N5tc','N5t'],decrementBond=['N5sc'], formBond=['N5dc'], breakBond=['N5dc'], incrementRadical=['N5dc'], decrementRadical=['N5dc'], incrementLonePair=['N3d'], decrementLonePair=[])
+atomTypes['N5dc'].setActions(incrementBond=['N5ddc','N5tc'], decrementBond=['N5sc'], formBond=['N5dc'], breakBond=['N5dc'], incrementRadical=['N5dc'], decrementRadical=['N5dc'], incrementLonePair=['N3d'], decrementLonePair=[])
atomTypes['N5ddc'].setActions(incrementBond=['N5dddc'], decrementBond=['N5dc'], formBond=[], breakBond=[], incrementRadical=[], decrementRadical=[], incrementLonePair=[], decrementLonePair=[])
atomTypes['N5dddc'].setActions(incrementBond=[], decrementBond=['N5ddc'], formBond=[], breakBond=[], incrementRadical=[], decrementRadical=[], incrementLonePair=[], decrementLonePair=[])
-atomTypes['N5t' ].setActions(incrementBond=[], decrementBond=['N5dc'], formBond=['N5t'], breakBond=['N5t'], incrementRadical=['N5t'], decrementRadical=['N5t'], incrementLonePair=['N3t'], decrementLonePair=[])
atomTypes['N5tc'].setActions(incrementBond=[], decrementBond=['N5dc'], formBond=['N5tc'], breakBond=['N5tc'], incrementRadical=['N5tc'], decrementRadical=['N5tc'], incrementLonePair=[], decrementLonePair=[])
atomTypes['N5b' ].setActions(incrementBond=['N5bd'], decrementBond=[], formBond=['N5b'], breakBond=['N5b'], incrementRadical=['N5b'], decrementRadical=['N5b'], incrementLonePair=[], decrementLonePair=[])
atomTypes['N5bd'].setActions(incrementBond=[], decrementBond=['N5b'], formBond=[], breakBond=[], incrementRadical=[], decrementRadical=[], incrementLonePair=[], decrementLonePair=[])
diff --git a/rmgpy/molecule/atomtypeTest.py b/rmgpy/molecule/atomtypeTest.py
index b0c05fcfc6..e384f858e1 100644
--- a/rmgpy/molecule/atomtypeTest.py
+++ b/rmgpy/molecule/atomtypeTest.py
@@ -450,12 +450,6 @@ def setUp(self):
3 N u0 p2 c-1 {2,D}
4 H u0 p0 c0 {1,S}''')
- self.mol65 = Molecule().fromAdjacencyList('''1 N u0 p0 c0 {2,T} {3,S} {4,S}
- 2 C u0 p0 c0 {1,T} {5,S}
- 3 H u0 p0 c0 {1,S}
- 4 H u0 p0 c0 {1,S}
- 5 H u0 p0 c0 {2,S}''')
-
self.mol69 = Molecule().fromAdjacencyList('''1 N u0 p0 c+1 {2,T} {3,S}
2 S u0 p2 c-1 {1,T}
3 H u0 p0 c0 {1,S}''')
@@ -546,7 +540,6 @@ def testNitrogenTypes(self):
self.assertEqual(self.atomType(self.mol5, 2), 'N5dc')
self.assertEqual(self.atomType(self.mol64, 1), 'N5ddc')
self.assertEqual(self.atomType(self.mol53, 0), 'N5dddc')
- self.assertEqual(self.atomType(self.mol65, 0), 'N5t')
self.assertEqual(self.atomType(self.mol15, 1), 'N5tc')
self.assertEqual(self.atomType(self.mol39, 2), 'N5tc')
self.assertEqual(self.atomType(self.mol18, 0), 'N5b')
diff --git a/rmgpy/molecule/converter.py b/rmgpy/molecule/converter.py
index e7f120b4ae..178c791720 100644
--- a/rmgpy/molecule/converter.py
+++ b/rmgpy/molecule/converter.py
@@ -69,6 +69,8 @@ def toRDKitMol(mol, removeHs=True, returnMapping=False, sanitize=True):
rdkitmol = Chem.rdchem.EditableMol(Chem.rdchem.Mol())
for index, atom in enumerate(mol.vertices):
rdAtom = Chem.rdchem.Atom(atom.element.symbol)
+ if atom.element.isotope != -1:
+ rdAtom.SetIsotope(atom.element.isotope)
rdAtom.SetNumRadicalElectrons(atom.radicalElectrons)
rdAtom.SetFormalCharge(atom.charge)
if atom.element.symbol == 'C' and atom.lonePairs == 1 and mol.multiplicity == 1: rdAtom.SetNumRadicalElectrons(2)
@@ -131,7 +133,8 @@ def fromRDKitMol(mol, rdkitmol):
# Use atomic number as key for element
number = rdkitatom.GetAtomicNum()
- element = elements.getElement(number)
+ isotope = rdkitatom.GetIsotope()
+ element = elements.getElement(number, isotope or -1)
# Process charge
charge = rdkitatom.GetFormalCharge()
@@ -214,6 +217,8 @@ def toOBMol(mol, returnMapping=False):
for atom in atoms:
a = obmol.NewAtom()
a.SetAtomicNum(atom.number)
+ if atom.element.isotope != -1:
+ a.SetIsotope(atom.element.isotope)
a.SetFormalCharge(atom.charge)
obAtomIds[atom] = a.GetId()
orders = {1: 1, 2: 2, 3: 3, 1.5: 5}
@@ -255,7 +260,8 @@ def fromOBMol(mol, obmol):
for obatom in openbabel.OBMolAtomIter(obmol):
# Use atomic number as key for element
number = obatom.GetAtomicNum()
- element = elements.getElement(number)
+ isotope = obatom.GetIsotope()
+ element = elements.getElement(number, isotope or -1)
# Process charge
charge = obatom.GetFormalCharge()
obatom_multiplicity = obatom.GetSpinMultiplicity()
diff --git a/rmgpy/molecule/converterTest.py b/rmgpy/molecule/converterTest.py
index ac701ed1ac..76f1a50c7d 100644
--- a/rmgpy/molecule/converterTest.py
+++ b/rmgpy/molecule/converterTest.py
@@ -35,7 +35,7 @@
import unittest
from rmgpy.exceptions import AtomTypeError
-from rmgpy.molecule.converter import debugRDKitMol, toRDKitMol, fromRDKitMol
+from rmgpy.molecule.converter import debugRDKitMol, toRDKitMol, fromRDKitMol, toOBMol, fromOBMol
from rmgpy.molecule.molecule import Molecule
@@ -123,3 +123,38 @@ def test_atom_mapping_2(self):
rdkitmol.GetBondBetweenAtoms(rdAtomIndices[at1], rdAtomIndices[at2])
except RuntimeError:
self.fail("RDKit failed in finding the bond in the original atom!")
+
+class ConverterTest(unittest.TestCase):
+
+ def setUp(self):
+ """Function run before each test in this class."""
+ self.test_mols = [
+ Molecule().fromSMILES('C'),
+ Molecule().fromSMILES('O'),
+ Molecule().fromSMILES('N'),
+ Molecule().fromSMILES('S'),
+ Molecule().fromSMILES('[CH2]C'),
+ Molecule().fromSMILES('[CH]C'),
+ Molecule().fromSMILES('C=CC=C'),
+ Molecule().fromSMILES('C#C[CH2]'),
+ Molecule().fromSMILES('c1ccccc1'),
+ Molecule().fromSMILES('[13CH3]C')
+ ]
+
+ def test_rdkit_round_trip(self):
+ """Test conversion to and from RDKitMol"""
+ for mol in self.test_mols:
+ rdkit_mol = toRDKitMol(mol)
+ new_mol = fromRDKitMol(Molecule(), rdkit_mol)
+
+ self.assertTrue(mol.isIsomorphic(new_mol))
+ self.assertEqual(mol.get_element_count(), new_mol.get_element_count())
+
+ def test_ob_round_trip(self):
+ """Test conversion to and from OBMol"""
+ for mol in self.test_mols:
+ ob_mol = toOBMol(mol)
+ new_mol = fromOBMol(Molecule(), ob_mol)
+
+ self.assertTrue(mol.isIsomorphic(new_mol))
+ self.assertEqual(mol.get_element_count(), new_mol.get_element_count())
diff --git a/rmgpy/molecule/filtration.py b/rmgpy/molecule/filtration.py
index 2daa7aa722..aa8fdb3b25 100644
--- a/rmgpy/molecule/filtration.py
+++ b/rmgpy/molecule/filtration.py
@@ -29,44 +29,52 @@
###############################################################################
"""
-This module contains methods for filtering a list of Molecules representing a single Species,
+This module contains functions for filtering a list of Molecules representing a single Species,
keeping only the representative structures. Relevant for filtration of negligible mesomerism contributing structures.
The rules this module follows are (by order of importance):
-1. Minimum overall deviation from the Octet Rule (elaborated for Dectet and Duodectet for hypervalance heteroatoms)
-2. Additional charge separation is only important for radicals and if it makes a new radical site in the species
+1. Minimum overall deviation from the Octet Rule (elaborated for Dectet for sulfur as a third row element)
+2. Additional charge separation is only allowed for radicals if it makes a new radical site in the species
3. If a structure must have charge separation, negative charges will be assigned to more electronegative atoms, whereas
- positive charges will be assigned to less electronegative atoms
-4. Opposite charges will be as close as possible to one another, and vice versa
+ positive charges will be assigned to less electronegative atoms (charge stabilization)
+4. Opposite charges will be as close as possible to one another, and vice versa (charge stabilization)
(inspired by http://www.chem.ucla.edu/~harding/tutorials/resonance/imp_res_str.html)
"""
import logging
-from .molecule import Molecule
-from .element import PeriodicSystem
-from .pathfinder import find_shortest_path
+
+from rmgpy.molecule.molecule import Molecule
+from rmgpy.molecule.element import PeriodicSystem
+from rmgpy.molecule.pathfinder import find_shortest_path
from rmgpy.exceptions import ResonanceError
-def filter_structures(mol_list, mark_unreactive=True):
+def filter_structures(mol_list, mark_unreactive=True, allow_expanded_octet=True, features=None):
"""
We often get too many resonance structures from the combination of all rules, particularly for species containing
- lone pairs. This method filters them out by minimizing the number of C/N/O/S atoms without a full octet.
+ lone pairs. This function filters them out by minimizing the number of C/N/O/S atoms without a full octet.
"""
-
if not all([(mol.multiplicity == mol_list[0].multiplicity) for mol in mol_list]):
raise ValueError("Cannot filter structures with different multiplicities!")
# Get an octet deviation list
- octet_deviation_list = get_octet_deviation_list(mol_list)
+ octet_deviation_list = get_octet_deviation_list(mol_list, allow_expanded_octet=allow_expanded_octet)
# Filter mol_list using the octet rule and the respective octet deviation list
filtered_list, charge_span_list = octet_filtration(mol_list, octet_deviation_list)
- # Filter by charge span
+ # Filter by charge
filtered_list = charge_filtration(filtered_list, charge_span_list)
+ # Filter aromatic structures
+ if features is not None and features['isAromatic']:
+ filtered_list = aromaticity_filtration(filtered_list, features)
+
+ if not filtered_list:
+ raise ResonanceError('Could not determine representative localized structures for species {0}'.format(
+ mol_list[0].toSMILES()))
+
if mark_unreactive:
# Mark selected unreactive structures if OS and/or adjacent birad unidirectional transitions were used
mark_unreactive_structures(filtered_list, mol_list)
@@ -77,58 +85,56 @@ def filter_structures(mol_list, mark_unreactive=True):
return filtered_list
-def get_octet_deviation_list(mol_list):
+def get_octet_deviation_list(mol_list, allow_expanded_octet=True):
"""
Returns the a list of octet deviations for a respective list of :class:Molecule objects
"""
-
octet_deviation_list = []
for mol in mol_list:
- octet_deviation_list.append(get_octet_deviation(mol))
+ octet_deviation_list.append(get_octet_deviation(mol, allow_expanded_octet=allow_expanded_octet))
return octet_deviation_list
-def get_octet_deviation(mol):
+def get_octet_deviation(mol, allow_expanded_octet=True):
"""
Returns the octet deviation for a :class:Molecule object
+ if `allow_expanded_octet` is ``True`` (by default), then the function also considers dectet for
+ third row elements (currently sulfur is the only hypervalance third row element in RMG)
"""
-
if not isinstance(mol, Molecule):
- raise ValueError("Octet deviation could only be determined for Molecule objects.")
+ raise TypeError("Octet deviation could only be determined for Molecule objects.")
- octet_deviation = 0 # This is the overall "score" for the molecule, summed across all C/N/O/S atoms
+ octet_deviation = 0 # This is the overall "score" for the molecule, summed across all non-H atoms
for atom in mol.vertices:
+ if atom.isHydrogen():
+ continue
val_electrons = 2 * (int(atom.getBondOrdersForAtom()) + atom.lonePairs) + atom.radicalElectrons
- if atom.isCarbon():
- octet_deviation += abs(8 - val_electrons) # expecting C to be near octet
- elif atom.isNitrogen():
- if atom.lonePairs:
- octet_deviation += abs(8 - val_electrons) # expecting N p1/2/3 to be near octet
- else:
- octet_deviation += min(abs(10 - val_electrons), abs(8 - val_electrons)) # N p0 could be near octet or
- # dectet. N p0 could be closer to an octet rather than a dectet such as in O=[N+][O-]
- if val_electrons > 8:
- octet_deviation += 1 # penalty for N with valance greater than 8 (as in O=[N.]=O,
- # [NH2.]=[:NH.], N#[N.]O, CCN=N#N)
- elif atom.isOxygen():
- octet_deviation += abs(8 - val_electrons) # expecting O to be near octet
- if atom.atomType.label in ['O4sc', 'O4dc', 'O4tc']:
- octet_deviation += 1 # penalty for O p1 c+1
- # as in [N-2][N+]#[O+], [O-]S#[O+], OS(S)([O-])#[O+], [OH+]=S(O)(=O)[O-], [OH.+][S-]=O.
- # [C-]#[O+] and [O-][O+]=O which are correct structures also get penalized here, but that's OK
- # since they are still eventually selected as representative structures according to the rules here.
+ if atom.isCarbon() or atom.isNitrogen() or atom.isOxygen():
+ octet_deviation += abs(8 - val_electrons) # expecting C/N/O to be near octet
elif atom.isSulfur():
- if atom.lonePairs == 0:
- octet_deviation += abs(12 - val_electrons) # duodectet on S p0, eg O=S(=O)(O)O val 12, O[S](=O)=O val 11
- elif atom.lonePairs == 1:
- octet_deviation += min(abs(8 - val_electrons), abs(10 - val_electrons)) # octet/dectet on S p1,
- # eg [O-][S+]=O val 8, O[S]=O val 9, OS([O])=O val 10
- elif atom.lonePairs == 2:
- octet_deviation += min(abs(8 - val_electrons), abs(10 - val_electrons)) # octet/dectet on S p2,
- # eg [S][S] val 7, OS[O] val 8, [NH+]#[N+][S-][O-] val 9, O[S-](O)[N+]#N val 10
- elif atom.lonePairs == 3:
- octet_deviation += abs(8 - val_electrons) # octet on S p3, eg [S-][O+]=O
+ if not allow_expanded_octet:
+ # If allow_expanded_octet is False, then adhere to the octet rule for sulfur as well.
+ # This is in accordance with J. Chem. Educ., 1995, 72 (7), p 583, DOI: 10.1021/ed072p583
+ # This results in O=[:S+][:::O-] as a representative structure for SO2 rather than O=S=O,
+ # and in C[:S+]([:::O-])C as a representative structure for DMSO rather than CS(=O)C.
+ octet_deviation += abs(8 - val_electrons)
+ else:
+ # If allow_expanded_octet is True, then do not adhere to the octet rule for sulfur
+ # and allow dectet structures (but don't prefer duedectet).
+ # This is in accordance with:
+ # - J. Chem. Educ., 1972, 49 (12), p 819, DOI: 10.1021/ed049p819
+ # - J. Chem. Educ., 1986, 63 (1), p 28, DOI: 10.1021/ed063p28
+ # - J. Chem. Educ., 1992, 69 (10), p 791, DOI: 10.1021/ed069p791
+ # - J. Chem. Educ., 1999, 76 (7), p 1013, DOI: 10.1021/ed076p1013
+ # This results in O=S=O as a representative structure for SO2 rather than O=[:S+][:::O-],
+ # and in CS(=O)C as a representative structure for DMSO rather than C[:S+]([:::O-])C.
+ if atom.lonePairs <= 1:
+ octet_deviation += min(abs(8 - val_electrons), abs(10 - val_electrons)) # octet/dectet on S p[0,1]
+ # eg [O-][S+]=O, O[S]=O, OS([O])=O, O=S(=O)(O)O
+ elif atom.lonePairs >= 2:
+ octet_deviation += abs(8 - val_electrons) # octet on S p[2,3]
+ # eg [S][S], OS[O], [NH+]#[N+][S-][O-], O[S-](O)[N+]#N, S=[O+][O-]
for atom2, bond in atom.bonds.iteritems():
if atom2.isSulfur() and bond.isTriple():
octet_deviation += 0.5 # penalty for S#S substructures. Often times sulfur can have a triple
@@ -139,11 +145,11 @@ def get_octet_deviation(mol):
# Examples: CS(=O)SC <=> CS(=O)#SC;
# [O.]OSS[O.] <=> [O.]OS#S[O.] <=> [O.]OS#[S.]=O; N#[N+]SS[O-] <=> N#[N+]C#S[O-]
# Penalize birad sites only if they theoretically substitute a lone pair.
- # E.g. O=[:S..] is penalized, but [C]=C=O isn't.
- if (atom.radicalElectrons == 2 and
+ # E.g., O=[:S..] is penalized, but [C..]=C=O isn't.
+ if (atom.radicalElectrons >= 2 and
((atom.isNitrogen() and atom.lonePairs == 0)
- or (atom.isOxygen() and atom.lonePairs in [0,1])
- or (atom.isSulfur() and atom.lonePairs in [0,1]))):
+ or (atom.isOxygen() and atom.lonePairs in [0,1,2])
+ or (atom.isSulfur() and atom.lonePairs in [0,1,2]))):
octet_deviation += 3
return octet_deviation
@@ -151,12 +157,11 @@ def get_octet_deviation(mol):
def octet_filtration(mol_list, octet_deviation_list):
"""
- Returns the a filtered list based on the octet_deviation_list. Also computes and returns a charge_span_list.
+ Returns a filtered list based on the octet_deviation_list. Also computes and returns a charge_span_list.
Filtering using the octet deviation criterion rules out most unrepresentative structures. However, since some
charge-strained species are still kept (e.g., [NH]N=S=O <-> [NH+]#[N+][S-][O-]), we also generate during the same
loop a charge_span_list to keep track of the charge spans. This is used for further filtering.
"""
-
filtered_list = []
charge_span_list = []
for index, mol in enumerate(mol_list):
@@ -170,9 +175,8 @@ def octet_filtration(mol_list, octet_deviation_list):
def get_charge_span_list(mol_list):
"""
Returns the a list of charge spans for a respective list of :class:Molecule objects
- This is also calculated in the octet_filtration() method along with the octet filtration process
+ This is also calculated in the octet_filtration() function along with the octet filtration process
"""
-
charge_span_list = []
for mol in mol_list:
charge_span_list.append(mol.getChargeSpan())
@@ -183,105 +187,202 @@ def get_charge_span_list(mol_list):
def charge_filtration(filtered_list, charge_span_list):
"""
Returns a new filtered_list, filtered based on charge_span_list, electronegativity and proximity considerations.
- If a structure must have charge separation, negative charges will be assigned to more electronegative atoms, whereas
- positive charges will be assigned to less electronegative atoms. Also, opposite charges will be as close as possible
- to one another, and vice versa.
- If the species is a radical, we first check whether keeping an extra charge span separation might be important for
- reactivity by relocating the radical site. If so, we keep these structures.
+ If structures with an additional charge layer introduce reactive sites (i.e., radicals or multiple bonds) they will
+ also be considered.
For example:
- Both of NO2's resonance structures will be kept: [O]N=O <=> O=[N+.][O-]
- NCO will only have two resonance structures [N.]=C=O <=> N#C[O.], and will loose the third structure which has
the same octet deviation, has a charge separation, but the radical site has already been considered: [N+.]#C[O-]
- CH2NO keeps all three structures, since a new radical site is introduced: [CH2.]N=O <=> C=N[O.] <=> C=[N+.][O-]
- However, if the species is not a radical we only keep the structures with the minimal charge span.
- For example:
- - NSH will only keep N#S and not [N-]=[SH+]
+ - NH2CHO has two structures, one of which is charged since it introduces a multiple bond: NC=O <=> [NH2+]=C[O-]
+ However, if the species is not a radical, or multiple bonds do not alter, we only keep the structures with the
+ minimal charge span. For example:
+ - NSH will only keep the N#S form and not [N-]=[SH+]
- The following species will loose two thirds of its resonance structures, which are charged: CS(=O)SC <=>
CS(=O)#SC <=> C[S+]([O-]SC <=> CS([O-])=[S+]C <=> C[S+]([O-])#SC <=> C[S+](=O)=[S-]C
- - The azide structure is know to have three resonance structures: [NH-][N+]#N <=> N=[N+]=[N-] <=> [NH+]#[N+][N-2];
- here we'll lose the third one, which is theoretically "true", but doesn't contribute to reactivity.
+ - Azide is know to have three resonance structures: [NH-][N+]#N <=> N=[N+]=[N-] <=> [NH+]#[N+][N-2];
+ here we filter the third one out due to the higher charge span, which does not contribute to reactivity in RMG
"""
-
min_charge_span = min(charge_span_list)
if len(set(charge_span_list)) > 1:
- # Proceed only if there are structures with different charge spans and the species is a radical.
- if filtered_list[0].isRadical():
- charged_list = [filtered_mol for index, filtered_mol in enumerate(filtered_list) if
- charge_span_list[index] == min_charge_span + 1] # save the 2nd charge span layer
- filtered_list = [filtered_mol for index, filtered_mol in enumerate(filtered_list) if
- charge_span_list[index] == min_charge_span] # keep at least one charge span layer
- # Find the radical sites in all filtered_list structures:
- sorting_list = []
- for mol in filtered_list:
- for atom in mol.vertices:
- if atom.radicalElectrons:
- sorting_list.append(int(atom.sortingLabel))
- # Find unique radical sites in charged_list and append these structures to filtered_list:
- unique_charged_list = []
- for mol in charged_list:
- for atom in mol.vertices:
- if atom.radicalElectrons and int(atom.sortingLabel) not in sorting_list:
- unique_charged_list.append(mol)
-
- if unique_charged_list:
- # only keep structures that obey the electronegativity and the charge proximity rules
- indices_to_pop = []
- charge_distance_list = [] # matching i indices to unique_charged_list
- for i, mol in enumerate(unique_charged_list):
- electroneg_positively_charged_atoms = electroneg_negatively_charged_atoms = 0
- for atom in mol.vertices:
- if atom.charge > 0:
- electroneg_positively_charged_atoms += PeriodicSystem.electronegativity[atom.symbol]
- elif atom.charge < 0:
- electroneg_negatively_charged_atoms += PeriodicSystem.electronegativity[atom.symbol]
- if electroneg_positively_charged_atoms > electroneg_negatively_charged_atoms:
- # This condition is NOT hermetic: It is possible to think of a situation where one structure has
- # several pairs of formally charged atoms, where one of the pairs isn't obeying the
- # electronegativity rule, while the sum of the pairs does.
- indices_to_pop.append(i)
- # try to find well-defined pairs of formally-charged atoms to apply the proximity principle
- # (opposite charges will be as close as possible to one another, and vice versa)
- cumulative_opposite_charge_distance = cumulative_similar_charge_distance = 0
- for atom1 in mol.vertices:
- if atom1.charge:
- for atom2 in mol.vertices:
- if atom2.charge and atom2.sortingLabel > atom1.sortingLabel:
- # found two charged atoms
- if (atom1.charge > 0) ^ (atom2.charge > 0): # xor
- # they have opposing signs when ONLY one is positive
- cumulative_opposite_charge_distance += len(find_shortest_path(atom1,atom2))
- else:
- # they have similar signs
- cumulative_similar_charge_distance += len(find_shortest_path(atom1,atom2))
- charge_distance_list.append([cumulative_opposite_charge_distance,
- cumulative_similar_charge_distance])
-
- min_cumulative_opposite_charge_distance = min([distances[0] for distances in charge_distance_list]
- or [0]) # in Python 3 use `min(list, default=0)`
- for i, distances in enumerate(charge_distance_list):
- # after generating the charge_distance_list, iterate through it and mark structures to pop
- if distances[0] > min_cumulative_opposite_charge_distance:
- indices_to_pop.append(i)
- max_cumulative_similar_charge_distance = max([distances[1] for i, distances in
- enumerate(charge_distance_list) if i not in indices_to_pop] or [0])
- for i, distances in enumerate(charge_distance_list):
- if distances[0] < max_cumulative_similar_charge_distance:
- indices_to_pop.append(i)
-
- # pop structures that do not obey the electronegativity or charge proximity rules
- for i in reversed(xrange(len(unique_charged_list))):
- # pop from the end, so indices won't change
- if i in indices_to_pop:
- unique_charged_list.pop(i)
-
- # append unique_charged_list to filtered_list
- filtered_list += unique_charged_list
+ # Proceed if there are structures with different charge spans
+ charged_list = [filtered_mol for index, filtered_mol in enumerate(filtered_list) if
+ charge_span_list[index] == min_charge_span + 1] # save the 2nd charge span layer
+ filtered_list = [filtered_mol for index, filtered_mol in enumerate(filtered_list) if
+ charge_span_list[index] == min_charge_span] # the minimal charge span layer
+ # Find the radical and multiple bond sites in all filtered_list structures:
+ rad_sorting_list = [] # sortingLabels for radical sites
+ mul_bond_sorting_list = [] # sortingLabels for multiple bind sites in the form of (atom1,atom2) tuples
+ for mol in filtered_list:
+ for atom in mol.vertices:
+ if atom.radicalElectrons and int(atom.sortingLabel) not in rad_sorting_list:
+ rad_sorting_list.append(int(atom.sortingLabel))
+ for atom2, bond in atom.bonds.iteritems():
+ # check if bond is multiple, store only from one side (atom1 < atom2) for consistency
+ if atom2.sortingLabel > atom.sortingLabel and bond.isDouble() or bond.isTriple():
+ mul_bond_sorting_list.append((int(atom.sortingLabel), int(atom2.sortingLabel)))
+ # Find unique radical and multiple bond sites in charged_list and append to unique_charged_list:
+ unique_charged_list = []
+ for mol in charged_list:
+ unique_charged_list.extend(find_unique_sites_in_charged_list(mol, rad_sorting_list, mul_bond_sorting_list))
+
+ # Charge stabilization considerations for the case where there are several charge span layers
+ # are checked here for filtered_list and unique_charged_list separately.
+ filtered_list = stabilize_charges_by_electronegativity(filtered_list)
+ filtered_list = stabilize_charges_by_proximity(filtered_list)
+ if unique_charged_list:
+ unique_charged_list = stabilize_charges_by_electronegativity(unique_charged_list, allow_empty_list=True)
+ unique_charged_list = stabilize_charges_by_proximity(unique_charged_list)
+ filtered_list.extend(unique_charged_list)
+
+ if min_charge_span:
+ # If the species has charge separation, apply charge stability considerations.
+ # These considerations should be checked regardless of the existence of radical sites.
+ # They should also be checked if len(set(charge_span_list)) == 1.
+ filtered_list = stabilize_charges_by_electronegativity(filtered_list)
+ filtered_list = stabilize_charges_by_proximity(filtered_list)
+
+ return filtered_list
+
+
+def find_unique_sites_in_charged_list(mol, rad_sorting_list, mul_bond_sorting_list):
+ """
+ A helper function for reactive site discovery in charged species
+ """
+ for atom in mol.vertices:
+ if atom.radicalElectrons and int(atom.sortingLabel) not in rad_sorting_list:
+ return [mol]
+ for atom2, bond in atom.bonds.iteritems():
+ if atom2.sortingLabel > atom.sortingLabel and (bond.isDouble() or bond.isTriple())\
+ and (int(atom.sortingLabel), int(atom2.sortingLabel)) not in mul_bond_sorting_list\
+ and not (atom.isSulfur() and atom2.isSulfur()):
+ # We check that both atoms aren't S, otherwise we get [S.-]=[S.+] as a structure of S2 triplet
+ return [mol]
+ return []
+
+
+def stabilize_charges_by_electronegativity(mol_list, allow_empty_list=False):
+ """
+ Only keep structures that obey the electronegativity rule. If a structure must have charge separation, negative
+ charges will be assigned to more electronegative atoms, and vice versa.
+ If allow_empty_list is set to ``False`` (default), this function will not return an empty list. If it is set
+ to ``True`` and all structures in `mol_list` violate the electronegativity heuristic, the original `mol_list`
+ is returned (examples: [C-]#[O+], CS, [NH+]#[C-], [OH+]=[N-], [C-][S+]=C violate this heuristic).
+ """
+ indices_to_pop = []
+ mol_list_copy = list(mol_list)
+ for i, mol in enumerate(mol_list):
+ electroneg_positively_charged_atoms = electroneg_negatively_charged_atoms = 0
+ for atom in mol.vertices:
+ if atom.charge > 0:
+ electroneg_positively_charged_atoms += PeriodicSystem.electronegativity[atom.symbol] * abs(atom.charge)
+ if atom.isOxygen():
+ for atom2 in atom.edges.keys():
+ if atom2.isFluorine() and atom2.charge < 0:
+ break
+ else:
+ electroneg_positively_charged_atoms += 1 # penalty for positively charged O not adjacent to F-,
+ # as in [N-2][N+]#[O+], [O-]S#[O+], OS(S)([O-])#[O+], [OH+]=S(O)(=O)[O-], [OH.+][S-]=O.
+ # [C-]#[O+] and [O-][O+]=O, which are correct structures, also get penalized here, but that's OK
+ # since they are still eventually selected as representative structures according to the rules here.
+ elif atom.charge < 0:
+ electroneg_negatively_charged_atoms += PeriodicSystem.electronegativity[atom.symbol] * abs(atom.charge)
+ if electroneg_positively_charged_atoms > electroneg_negatively_charged_atoms:
+ # Filter structures in which more electronegative atoms are positively charged.
+ # This condition is NOT hermetic: It is possible to think of a situation where one structure has
+ # several pairs of formally charged atoms, where one of the pairs isn't obeying the
+ # electronegativity rule, while the sum of the pairs does.
+ indices_to_pop.append(i)
+ for i in reversed(xrange(len(mol_list))): # pop starting from the end, so indices won't change
+ if i in indices_to_pop:
+ mol_list.pop(i)
+ if mol_list or allow_empty_list:
+ return mol_list
+ else:
+ return mol_list_copy
+
+def stabilize_charges_by_proximity(mol_list):
+ """
+ Only keep structures that obey the charge proximity rule.
+ Opposite charges will be as close as possible to one another, and vice versa.
+ """
+ indices_to_pop = []
+ charge_distance_list = [] # indices match mol_list
+ for i, mol in enumerate(mol_list):
+ # Try finding well-defined pairs of formally-charged atoms to apply the proximity principle
+ # (opposite charges will be as close as possible to one another, and vice versa)
+ cumulative_opposite_charge_distance = cumulative_similar_charge_distance = 0
+ for atom1 in mol.vertices:
+ if atom1.charge:
+ for atom2 in mol.vertices:
+ if atom2.charge and atom2.sortingLabel > atom1.sortingLabel:
+ # found two charged atoms
+ if (atom1.charge > 0) ^ (atom2.charge > 0): # xor
+ # they have opposing signs when ONLY one is positive
+ cumulative_opposite_charge_distance += len(find_shortest_path(atom1, atom2))
+ else:
+ # they have similar signs
+ cumulative_similar_charge_distance += len(find_shortest_path(atom1, atom2))
+ charge_distance_list.append([cumulative_opposite_charge_distance,
+ cumulative_similar_charge_distance])
+ min_cumulative_opposite_charge_distance = min([distances[0] for distances in charge_distance_list]
+ or [0]) # in Python 3 use `min(list, default=0)`
+ for i, distances in enumerate(charge_distance_list):
+ # after generating the charge_distance_list, iterate through it and mark structures to pop
+ if distances[0] > min_cumulative_opposite_charge_distance:
+ indices_to_pop.append(i)
+ max_cumulative_similar_charge_distance = max([distances[1] for i, distances in
+ enumerate(charge_distance_list) if i not in indices_to_pop] or [0])
+ for i, distances in enumerate(charge_distance_list):
+ if distances[0] < max_cumulative_similar_charge_distance:
+ indices_to_pop.append(i)
+ for i in reversed(xrange(len(mol_list))): # pop starting from the end, so indices won't change
+ if i in indices_to_pop:
+ mol_list.pop(i)
+ return mol_list
+
+
+def aromaticity_filtration(mol_list, features):
+ """
+ Returns a filtered list of molecules based on heuristics for determining
+ representative aromatic resonance structures.
+
+ For monocyclic aromatics, Kekule structures are removed, with the
+ assumption that an equivalent aromatic structure exists. Non-aromatic
+ structures are maintained if they present new radical sites. Instead of
+ explicitly checking the radical sites, we only check for the SDSDSD bond
+ motif since radical delocalization will disrupt that pattern.
+
+ For polycyclic aromatics, structures without any benzene bonds are removed.
+ The idea is that radical delocalization into the aromatic pi system is
+ unfavorable because it disrupts aromaticity. Therefore, structures where
+ the radical is delocalized so far into the molecule such that none of the
+ rings are aromatic anymore are not representative. While this isn't strictly
+ true, it helps reduce the number of representative structures by focusing
+ on the most important ones.
+ """
+ # Start by selecting all aromatic resonance structures
+ filtered_list = []
+ other_list = []
+ for mol in mol_list:
+ if mol.isAromatic():
+ filtered_list.append(mol)
else:
- # There are structures with different charge spans, but the species is not a radical.
- # Additional charge span levels are removed
- filtered_list = [filtered for index, filtered in enumerate(filtered_list) if
- charge_span_list[index] == min_charge_span]
+ other_list.append(mol)
+
+ if not features['isPolycyclicAromatic']:
+ # Look for structures that don't have standard SDSDSD bond orders
+ for mol in other_list:
+ # Check all 6 membered rings
+ rings = [ring for ring in mol.getRelevantCycles() if len(ring) == 6]
+ for ring in rings:
+ bond_list = mol.get_edges_in_cycle(ring)
+ bond_orders = ''.join([bond.getOrderStr() for bond in bond_list])
+ if bond_orders == 'SDSDSD' or bond_orders == 'DSDSDS':
+ break
+ else:
+ filtered_list.append(mol)
return filtered_list
@@ -291,7 +392,6 @@ def mark_unreactive_structures(filtered_list, mol_list):
Mark selected structures in filtered_list with the Molecule.reactive flag set to `False` (it is `True` by default)
Changes the filtered_list object, and does not return anything
"""
-
# sort all structures in filtered_list so that the reactive ones are first
filtered_list.sort(key=lambda mol: mol.reactive, reverse=True)
@@ -321,7 +421,6 @@ def check_reactive(filtered_list):
Check that there's at least one reactive structure in the returned list.
If not, raise an error (does not return anything)
"""
-
if not any([mol.reactive for mol in filtered_list]):
logging.info('\n\n')
logging.error('No reactive structures were attributed to species {0}'.format(filtered_list[0].toSMILES()))
diff --git a/rmgpy/molecule/filtrationTest.py b/rmgpy/molecule/filtrationTest.py
index 3a5bf68704..3ea5105e59 100644
--- a/rmgpy/molecule/filtrationTest.py
+++ b/rmgpy/molecule/filtrationTest.py
@@ -29,10 +29,12 @@
###############################################################################
import unittest
-import molecule
-from .resonance import generate_resonance_structures
-from .filtration import get_octet_deviation_list, get_octet_deviation, filter_structures,charge_filtration, get_charge_span_list
+from rmgpy.molecule.molecule import Molecule
+from rmgpy.molecule.resonance import generate_resonance_structures, analyze_molecule
+from rmgpy.molecule.filtration import get_octet_deviation_list, get_octet_deviation, filter_structures, \
+ charge_filtration, get_charge_span_list, aromaticity_filtration
+
################################################################################
@@ -54,47 +56,40 @@ def basic_filtration_test(self):
"""
adj3 = """
multiplicity 2
- 1 N u1 p0 c0 {2,T} {3,S}
- 2 O u0 p1 c+1 {1,T}
- 3 O u0 p3 c-1 {1,S}
+ 1 O u1 p2 c0 {3,S}
+ 2 O u0 p3 c-1 {3,S}
+ 3 N u0 p1 c+1 {1,S} {2,S}
"""
- mol1 = molecule.Molecule().fromAdjacencyList(adj1)
- mol2 = molecule.Molecule().fromAdjacencyList(adj2)
- mol3 = molecule.Molecule().fromAdjacencyList(adj3)
+ mol1 = Molecule().fromAdjacencyList(adj1)
+ mol2 = Molecule().fromAdjacencyList(adj2)
+ mol3 = Molecule().fromAdjacencyList(adj3)
mol_list = [mol1,mol2,mol3]
octet_deviation_list = get_octet_deviation_list(mol_list)
filtered_list = filter_structures(mol_list)
- self.assertEqual(octet_deviation_list,[1,3,3])
+ self.assertEqual(octet_deviation_list,[1, 3, 3])
self.assertEqual(len(filtered_list), 1)
self.assertTrue(all([atom.charge == 0 for atom in filtered_list[0].vertices]))
- def penalty_for_N_val_9_test(self):
- """Test that N atoms with valance 9 get penalized in the octet deviation score"""
- adj = """
- multiplicity 2
- 1 N u1 p0 c0 {2,S} {3,T}
- 2 O u0 p2 c0 {1,S} {4,S}
- 3 N u0 p1 c0 {1,T}
- 4 H u0 p0 c0 {2,S}
- """
- mol = molecule.Molecule().fromAdjacencyList(adj)
- octet_deviation = get_octet_deviation(mol)
- self.assertEqual(octet_deviation, 2)
-
def penalty_for_O4tc_test(self):
- """Test that an O4tc atomType with octet 8 gets penalized in the octet deviation score"""
+ """Test that an O4tc atomType with octet 8 gets penalized in the electronegativity heuristic"""
adj = """
1 S u0 p1 c0 {2,S} {3,T}
2 O u0 p3 c-1 {1,S}
3 O u0 p1 c+1 {1,T}
"""
- mol = molecule.Molecule().fromAdjacencyList(adj)
+ mol = Molecule().fromAdjacencyList(adj)
octet_deviation = get_octet_deviation(mol)
- self.assertEqual(octet_deviation, 1)
+ self.assertEqual(octet_deviation, 0)
self.assertEqual(mol.vertices[2].atomType.label, 'O4tc')
+ mol_list = generate_resonance_structures(mol)
+ self.assertEqual(len(mol_list), 2)
+ for mol in mol_list:
+ if mol.reactive:
+ for atom in mol.vertices:
+ self.assertTrue(atom.charge == 0)
def penalty_birads_replacing_lone_pairs_test(self):
"""Test that birads on `S u2 p0` are penalized"""
@@ -104,7 +99,7 @@ def penalty_birads_replacing_lone_pairs_test(self):
2 O u0 p2 c0 {1,D}
3 O u0 p2 c0 {1,D}
"""
- mol = molecule.Molecule().fromAdjacencyList(adj)
+ mol = Molecule().fromAdjacencyList(adj)
mol.update()
mol_list = generate_resonance_structures(mol, keep_isomorphic=False, filter_structures=True)
for mol in mol_list:
@@ -130,9 +125,48 @@ def penalty_for_s_triple_s_test(self):
10 H u0 p0 c0 {2,S}
11 O u0 p2 c0 {3,D}
"""
- mol = molecule.Molecule().fromAdjacencyList(adj)
+ mol = Molecule().fromAdjacencyList(adj)
octet_deviation = get_octet_deviation(mol)
- self.assertEqual(octet_deviation, 1)
+ self.assertEqual(octet_deviation, 3.0)
+
+ def radical_site_test(self):
+ """Test that a charged molecule isn't filtered if it introduces new radical site"""
+ adj1 = """
+ multiplicity 2
+ 1 O u1 p2 c0 {3,S}
+ 2 O u0 p2 c0 {3,D}
+ 3 N u0 p1 c0 {1,S} {2,D}
+ """
+ adj2 = """
+ multiplicity 2
+ 1 O u0 p3 c-1 {3,S}
+ 2 O u0 p2 c0 {3,D}
+ 3 N u1 p0 c+1 {1,S} {2,D}
+ """
+ adj3 = """
+ multiplicity 2
+ 1 O u1 p2 c0 {3,S}
+ 2 O u0 p3 c-1 {3,S}
+ 3 N u0 p1 c+1 {1,S} {2,S}
+ """
+
+ mol_list = [Molecule().fromAdjacencyList(adj1),
+ Molecule().fromAdjacencyList(adj2),
+ Molecule().fromAdjacencyList(adj3)]
+
+ for mol in mol_list:
+ mol.update() # the charge_filtration uses the atom.sortingLabel attribute
+
+ filtered_list = charge_filtration(mol_list, get_charge_span_list(mol_list))
+ self.assertEqual(len(filtered_list), 2)
+ self.assertTrue(any([mol.getChargeSpan() == 1 for mol in filtered_list]))
+ for mol in filtered_list:
+ if mol.getChargeSpan() == 1:
+ for atom in mol.vertices:
+ if atom.charge == -1:
+ self.assertTrue(atom.isOxygen())
+ if atom.charge == 1:
+ self.assertTrue(atom.isNitrogen())
def electronegativity_test(self):
"""Test that structures with charge separation are only kept if they obey the electronegativity rule
@@ -199,13 +233,13 @@ def electronegativity_test(self):
5 O u0 p3 c-1 {3,S}
"""
- mol_list = [molecule.Molecule().fromAdjacencyList(adj1),
- molecule.Molecule().fromAdjacencyList(adj2),
- molecule.Molecule().fromAdjacencyList(adj3),
- molecule.Molecule().fromAdjacencyList(adj4),
- molecule.Molecule().fromAdjacencyList(adj5),
- molecule.Molecule().fromAdjacencyList(adj6),
- molecule.Molecule().fromAdjacencyList(adj7)]
+ mol_list = [Molecule().fromAdjacencyList(adj1),
+ Molecule().fromAdjacencyList(adj2),
+ Molecule().fromAdjacencyList(adj3),
+ Molecule().fromAdjacencyList(adj4),
+ Molecule().fromAdjacencyList(adj5),
+ Molecule().fromAdjacencyList(adj6),
+ Molecule().fromAdjacencyList(adj7)]
for mol in mol_list:
mol.update() # the charge_filtration uses the atom.sortingLabel attribute
@@ -218,3 +252,80 @@ def electronegativity_test(self):
for atom in mol.vertices:
if abs(atom.charge) == 1:
self.assertTrue(atom.isNitrogen())
+
+ def aromaticity_test(self):
+ """Test that aromatics are properly filtered."""
+ adj1 = """multiplicity 2
+1 C u0 p0 c0 {2,D} {3,S} {7,S}
+2 C u0 p0 c0 {1,D} {4,S} {8,S}
+3 C u0 p0 c0 {1,S} {6,D} {12,S}
+4 C u0 p0 c0 {2,S} {5,D} {9,S}
+5 C u0 p0 c0 {4,D} {6,S} {10,S}
+6 C u0 p0 c0 {3,D} {5,S} {11,S}
+7 C u1 p0 c0 {1,S} {13,S} {14,S}
+8 H u0 p0 c0 {2,S}
+9 H u0 p0 c0 {4,S}
+10 H u0 p0 c0 {5,S}
+11 H u0 p0 c0 {6,S}
+12 H u0 p0 c0 {3,S}
+13 H u0 p0 c0 {7,S}
+14 H u0 p0 c0 {7,S}
+"""
+ adj2 = """multiplicity 2
+1 C u0 p0 c0 {2,B} {3,B} {7,S}
+2 C u0 p0 c0 {1,B} {4,B} {8,S}
+3 C u0 p0 c0 {1,B} {6,B} {12,S}
+4 C u0 p0 c0 {2,B} {5,B} {9,S}
+5 C u0 p0 c0 {4,B} {6,B} {10,S}
+6 C u0 p0 c0 {3,B} {5,B} {11,S}
+7 C u1 p0 c0 {1,S} {13,S} {14,S}
+8 H u0 p0 c0 {2,S}
+9 H u0 p0 c0 {4,S}
+10 H u0 p0 c0 {5,S}
+11 H u0 p0 c0 {6,S}
+12 H u0 p0 c0 {3,S}
+13 H u0 p0 c0 {7,S}
+14 H u0 p0 c0 {7,S}
+"""
+ adj3 = """multiplicity 2
+1 C u0 p0 c0 {2,S} {3,S} {7,D}
+2 C u1 p0 c0 {1,S} {4,S} {8,S}
+3 C u0 p0 c0 {1,S} {6,D} {12,S}
+4 C u0 p0 c0 {2,S} {5,D} {9,S}
+5 C u0 p0 c0 {4,D} {6,S} {10,S}
+6 C u0 p0 c0 {3,D} {5,S} {11,S}
+7 C u0 p0 c0 {1,D} {13,S} {14,S}
+8 H u0 p0 c0 {2,S}
+9 H u0 p0 c0 {4,S}
+10 H u0 p0 c0 {5,S}
+11 H u0 p0 c0 {6,S}
+12 H u0 p0 c0 {3,S}
+13 H u0 p0 c0 {7,S}
+14 H u0 p0 c0 {7,S}
+"""
+ adj4 = """multiplicity 2
+1 C u0 p0 c0 {2,S} {3,S} {7,D}
+2 C u0 p0 c0 {1,S} {5,D} {8,S}
+3 C u0 p0 c0 {1,S} {6,D} {12,S}
+4 C u1 p0 c0 {5,S} {6,S} {10,S}
+5 C u0 p0 c0 {2,D} {4,S} {9,S}
+6 C u0 p0 c0 {3,D} {4,S} {11,S}
+7 C u0 p0 c0 {1,D} {13,S} {14,S}
+8 H u0 p0 c0 {2,S}
+9 H u0 p0 c0 {5,S}
+10 H u0 p0 c0 {4,S}
+11 H u0 p0 c0 {6,S}
+12 H u0 p0 c0 {3,S}
+13 H u0 p0 c0 {7,S}
+14 H u0 p0 c0 {7,S}
+"""
+
+ mol_list = [
+ Molecule().fromAdjacencyList(adj1),
+ Molecule().fromAdjacencyList(adj2),
+ Molecule().fromAdjacencyList(adj3),
+ Molecule().fromAdjacencyList(adj4),
+ ]
+
+ filtered_list = aromaticity_filtration(mol_list, analyze_molecule(mol_list[0]))
+ self.assertEqual(len(filtered_list), 3)
diff --git a/rmgpy/molecule/graph.pxd b/rmgpy/molecule/graph.pxd
index b769b632e8..5df91402ea 100644
--- a/rmgpy/molecule/graph.pxd
+++ b/rmgpy/molecule/graph.pxd
@@ -151,7 +151,11 @@ cdef class Graph:
cpdef list getRelevantCycles(self)
cpdef list _sortCyclicVertices(self, list vertices)
+
+ cpdef int getMaxCycleOverlap(self)
cpdef list getLargestRing(self, Vertex vertex)
cpdef bint isMappingValid(self, Graph other, dict mapping, bint equivalent=?) except -2
+
+ cpdef list get_edges_in_cycle(self, list vertices, bint sort=?)
diff --git a/rmgpy/molecule/graph.pyx b/rmgpy/molecule/graph.pyx
index 75e0ea7f08..da60b36d19 100644
--- a/rmgpy/molecule/graph.pyx
+++ b/rmgpy/molecule/graph.pyx
@@ -33,7 +33,7 @@ the vertices and edges (:class:`Vertex` and :class:`Edge`, respectively) that
are the components of a graph.
"""
-import logging
+import itertools
import py_rdl
from .vf2 cimport VF2
@@ -1031,6 +1031,25 @@ cdef class Graph:
return ordered
+ cpdef int getMaxCycleOverlap(self):
+ """
+ Return the maximum number of vertices that are shared between
+ any two cycles in the graph. For example, if there are only
+ disparate monocycles or no cycles, the maximum overlap is zero;
+ if there are "spiro" cycles, it is one; if there are "fused"
+ cycles, it is two; and if there are "bridged" cycles, it is
+ three.
+ """
+ cdef list cycles
+ cdef int max_overlap, overlap, i, j
+
+ cycles = self.getSmallestSetOfSmallestRings()
+ max_overlap = 0
+ for i, j in itertools.combinations(range(len(cycles)), 2):
+ overlap = len(set(cycles[i]) & set(cycles[j]))
+ max_overlap = max(overlap, max_overlap)
+ return max_overlap
+
cpdef list getLargestRing(self, Vertex vertex):
"""
returns the largest ring containing vertex. This is typically
@@ -1087,3 +1106,28 @@ cdef class Graph:
# mapping is valid
return True
+ cpdef list get_edges_in_cycle(self, list vertices, bint sort=False):
+ """
+ For a given list of atoms comprising a ring, return the set of bonds
+ connecting them, in order around the ring.
+
+ If `sort=True`, then sort the vertices to match their connectivity.
+ Otherwise, assumes that they are already sorted, which is true for
+ cycles returned by getRelevantCycles or getSmallestSetOfSmallestRings.
+ """
+ cdef list edges
+ cdef int i, j
+
+ if sort:
+ self._sortCyclicVertices(vertices)
+
+ edges = []
+ for i, j in zip(range(len(vertices)), range(-1, len(vertices)-1)):
+ try:
+ edges.append(self.getEdge(vertices[i], vertices[j]))
+ except ValueError:
+ raise ValueError('Edge does not exist between vertices in ring. '
+ 'Check that the vertices are properly ordered '
+ 'such that consecutive vertices are connected.')
+
+ return edges
diff --git a/rmgpy/molecule/graphTest.py b/rmgpy/molecule/graphTest.py
index 0b579893e0..9513b02c52 100644
--- a/rmgpy/molecule/graphTest.py
+++ b/rmgpy/molecule/graphTest.py
@@ -744,6 +744,37 @@ def test_getPolycyclicRings(self):
for ring in expectedContinuousRings:
self.assertTrue(ring in continuousRings)
+ def test_getMaxCycleOverlap(self):
+ """
+ Test that getMaxCycleOverlap returns the correct overlap numbers
+ for different graphs.
+ """
+ def make_graph(edge_inds):
+ nvert = max(max(inds) for inds in edge_inds) + 1
+ vertices = [Vertex() for _ in range(nvert)]
+ graph = Graph(vertices)
+ for idx1, idx2 in edge_inds:
+ graph.addEdge(Edge(vertices[idx1], vertices[idx2]))
+ return graph
+
+ linear = make_graph([(0, 1), (1, 2)])
+ mono = make_graph([(0, 1), (0, 2), (1, 2), (2, 3), (3, 4), (3, 5), (4, 5)])
+ spiro = make_graph([(0, 1), (0, 2), (1, 2), (2, 3), (2, 4), (3, 4)])
+ fused = make_graph([(0, 1), (0, 2), (1, 2), (1, 3), (2, 3)])
+ bridged = make_graph([(0, 1), (0, 2), (1, 3), (1, 4), (2, 3), (2, 5), (4, 5)])
+ cube = make_graph([(0, 1), (0, 2), (0, 4), (1, 3), (1, 5), (2, 3),
+ (2, 6), (3, 7), (4, 5), (4, 6), (5, 7), (6, 7)])
+
+ self.assertEqual(linear.getMaxCycleOverlap(), 0)
+ self.assertEqual(mono.getMaxCycleOverlap(), 0)
+ self.assertEqual(spiro.getMaxCycleOverlap(), 1)
+ self.assertEqual(fused.getMaxCycleOverlap(), 2)
+ self.assertEqual(bridged.getMaxCycleOverlap(), 3)
+ # With the current algorithm for maximum overlap determination, a cube
+ # only has an overlap of 2, because the set of relevant cycles
+ # contains the six four-membered faces. This could be changed in the
+ # future.
+ self.assertEqual(cube.getMaxCycleOverlap(), 2)
def test_getLargestRing(self):
"""
diff --git a/rmgpy/molecule/group.py b/rmgpy/molecule/group.py
index 9ba91fdbd2..b269559a33 100644
--- a/rmgpy/molecule/group.py
+++ b/rmgpy/molecule/group.py
@@ -799,6 +799,9 @@ def __changeBond(self, order):
if 2.5 in newOrder:
newOrder.remove(2.5)
newOrder.add(2)
+ # Allow formation of benzene bonds if a double bond can be formed
+ if 2 in newOrder:
+ newOrder.add(1.5)
# Set the new bond orders
self.order = list(newOrder)
diff --git a/rmgpy/molecule/kekulize.pyx b/rmgpy/molecule/kekulize.pyx
index 74757cb02c..ffe1f38b4b 100644
--- a/rmgpy/molecule/kekulize.pyx
+++ b/rmgpy/molecule/kekulize.pyx
@@ -59,28 +59,28 @@ from rmgpy.exceptions import KekulizationError, AtomTypeError
cpdef kekulize(Molecule mol):
"""
Kekulize an aromatic molecule in place. If the molecule cannot be kekulized,
- an AtomTypeError will be raised. However, the molecule will be left in
+ a KekulizationError will be raised. However, the molecule will be left in
a semi-kekulized state. Therefore, if the original molecule needs to be kept,
it is advisable to create a copy before kekulizing.
Args: :class:`Molecule` object to be kekulized
"""
- cdef list ring, rings, aromaticRings, resolvedRings
- cdef set endoBonds, exoBonds
+ cdef list ring, rings, aromatic_rings, resolved_rings
+ cdef set endo_bonds, exo_bonds
cdef Atom atom1, atom2, atom
cdef Bond bond
cdef bint aromatic, successful, bridged
cdef int itercount, maxiter
- cdef AromaticRing aromaticRing
+ cdef AromaticRing aromatic_ring
# Get all potentially aromatic rings
rings = mol.getAllCyclesOfSize(6)
# Identify aromatic rings and categorize endocyclic and exocyclic bonds for each ring
- aromaticRings = []
+ aromatic_rings = []
for ring in rings:
- endoBonds = set()
- exoBonds = set()
+ endo_bonds = set()
+ exo_bonds = set()
aromatic = True
for atom1 in ring:
# Check if this is a bridged ring
@@ -88,57 +88,60 @@ cpdef kekulize(Molecule mol):
for atom2, bond in atom1.bonds.iteritems():
if bridged and sum([1 if atom in ring else 0 for atom in atom2.bonds.iterkeys()]) > 2:
# This atom2 is the other end of the bridging bond, so don't consider it as a part of the ring
- exoBonds.add(bond)
+ exo_bonds.add(bond)
continue
elif atom2 in ring:
if abs(round(bond.order) - bond.order) < 1e-9:
aromatic = False
break
- endoBonds.add(bond)
+ endo_bonds.add(bond)
else:
- exoBonds.add(bond)
+ exo_bonds.add(bond)
if not aromatic:
break
if aromatic:
# Use an AromaticRing object to store the info about this ring
- aromaticRings.append(AromaticRing(atoms=ring, endoBonds=endoBonds, exoBonds=exoBonds))
+ aromatic_rings.append(AromaticRing(atoms=ring, endo_bonds=endo_bonds, exo_bonds=exo_bonds))
- resolvedRings = []
+ resolved_rings = []
itercount = 0
- maxiter = 2 * len(aromaticRings)
- while aromaticRings and itercount < maxiter:
+ maxiter = 2 * len(aromatic_rings)
+ while aromatic_rings and itercount < maxiter:
# Update and sort the remaining rings
- prioritizeRings(aromaticRings)
+ prioritize_rings(aromatic_rings)
# Take the next ring off the stack
- aromaticRing = aromaticRings.pop()
+ aromatic_ring = aromatic_rings.pop()
# Try to kekulize this ring
- successful = aromaticRing.kekulize()
+ successful = aromatic_ring.kekulize()
if successful:
- resolvedRings.append(aromaticRing)
+ resolved_rings.append(aromatic_ring)
else:
# Put it back in the list, which will get resorted by DOF in the next iteration
- aromaticRings.append(aromaticRing)
+ aromatic_rings.append(aromatic_ring)
itercount += 1
+ if aromatic_rings:
+ raise KekulizationError('Unable to kekulize molecule, reached maximum attempts:/n{0}'.format(mol.toAdjacencyList()))
+
try:
mol.updateAtomTypes(logSpecies=False)
except AtomTypeError:
logging.debug('Unable to kekulize molecule, final result was invalid:/n{0}'.format(mol.toAdjacencyList()))
raise KekulizationError('Unable to kekulize molecule, final result was invalid.')
-cdef list prioritizeRings(list aromaticList):
+cdef list prioritize_rings(list item_list):
"""Update list of AromaticRing objects, then sort by DOF."""
cdef AromaticRing item, x
- for item in aromaticList:
+ for item in item_list:
item.update()
- return aromaticList.sort(key=lambda x: (x.endoDOF, x.exoDOF), reverse=True)
+ return item_list.sort(key=lambda x: (x.endo_dof, x.exo_dof), reverse=True)
-cdef list prioritizeBonds(list aromaticList):
+cdef list prioritize_bonds(list item_list):
"""Update list of Aromatic Bond objects, then sort by DOF."""
cdef AromaticBond item, x
- for item in aromaticList:
+ for item in item_list:
item.update()
- return aromaticList.sort(key=lambda x: (x.doublePossible, not x.doubleRequired, x.endoDOF, x.exoDOF), reverse=True)
+ return item_list.sort(key=lambda x: (x.double_possible, not x.double_required, x.endo_dof, x.exo_dof), reverse=True)
cdef class AromaticRing(object):
"""
@@ -146,68 +149,72 @@ cdef class AromaticRing(object):
DO NOT use outside of this module. This class does not do any aromaticity perception.
"""
- cdef list atoms
- cdef set endoBonds, exoBonds
- cdef public int endoDOF, exoDOF
+ cdef public list atoms, resolved, unresolved
+ cdef set endo_bonds, exo_bonds
+ cdef public int endo_dof, exo_dof
- def __init__(self, atoms=None, endoBonds=None, exoBonds=None, endoDOF=-1, exoDOF=-1):
+ def __init__(self, atoms=None, endo_bonds=None, exo_bonds=None, endo_dof=-1, exo_dof=-1):
self.atoms = atoms
- self.endoBonds = endoBonds
- self.exoBonds = exoBonds
- self.endoDOF = endoDOF
- self.exoDOF = exoDOF
+ self.endo_bonds = endo_bonds
+ self.exo_bonds = exo_bonds
+ self.endo_dof = endo_dof
+ self.exo_dof = exo_dof
+ self.resolved = []
+ self.unresolved = []
cpdef update(self):
"""
Update the degree of freedom information for this aromatic ring.
- `endoDOF` refers to the number of bonds in the ring without fixed bond orders.
- `exoDOF` refers to the number of bonds outside the ring without fixed bond orders.
+ `endo_dof` refers to the number of bonds in the ring without fixed bond orders.
+ `exo_dof` refers to the number of bonds outside the ring without fixed bond orders.
"""
- cdef int endoDOF, exoDOF
+ cdef int endo_dof, exo_dof
cdef Bond bond
- endoDOF = 0
- for bond in self.endoBonds:
+ endo_dof = 0
+ for bond in self.endo_bonds:
if bond.isBenzene():
# Add one dof for each aromatic bond
- endoDOF += 1
- exoDOF = 0
- for bond in self.exoBonds:
+ endo_dof += 1
+ exo_dof = 0
+ for bond in self.exo_bonds:
if bond.isBenzene():
# Add one dof for each aromatic bond
- exoDOF += 1
- self.endoDOF = endoDOF
- self.exoDOF = exoDOF
+ exo_dof += 1
+ self.endo_dof = endo_dof
+ self.exo_dof = exo_dof
+
+ self.process_bonds()
- cpdef tuple processBonds(self):
+ cpdef tuple process_bonds(self):
"""Create AromaticBond objects for each endocyclic bond."""
- cdef list resolved, unresolved
cdef Bond bond0
- cdef AromaticBond aromaticBond
+ cdef int i
- resolved = []
- unresolved = []
- for bond0 in self.endoBonds:
- aromaticBond = AromaticBond(bond=bond0, ringBonds=self.endoBonds)
+ if not self.unresolved and not self.resolved:
+ # We just started on this ring
+ for bond0 in self.endo_bonds:
+ self.unresolved.append(AromaticBond(bond=bond0, ring_bonds=self.endo_bonds))
- if abs(round(bond0.order) - bond0.order) < 1e-9:
+ i = 0
+ while i < len(self.unresolved):
+ bond0 = self.unresolved[i].bond
+ if bond0.isOrder(round(bond0.order)):
# Bond has already been assigned, so mark as resolved
- resolved.append(aromaticBond)
+ self.resolved.append(self.unresolved.pop(i))
elif bond0.isOrder(2.5):
# Bond was incremented, so it must be a double bond
bond0.order = 2
- resolved.append(aromaticBond)
+ self.resolved.append(self.unresolved.pop(i))
elif bond0.isOrder(0.5):
# Bond was decremented, so it must be a single bond
bond0.order = 1
- resolved.append(aromaticBond)
+ self.resolved.append(self.unresolved.pop(i))
else:
- unresolved.append(aromaticBond)
+ i += 1
- assert len(resolved) + len(unresolved) == len(self.endoBonds)
-
- return resolved, unresolved
+ assert len(self.resolved) + len(self.unresolved) == len(self.endo_bonds)
cpdef bint kekulize(self) except -2:
"""
@@ -219,52 +226,50 @@ cdef class AromaticRing(object):
cdef int itercount, maxiter
cdef AromaticBond bond
- resolved, unresolved = self.processBonds()
-
# Check status
- if len(unresolved) == 0:
+ if len(self.unresolved) == 0:
return True
itercount = 0
- maxiter = 2 * len(unresolved)
- while unresolved and itercount < maxiter:
+ maxiter = 2 * len(self.unresolved)
+ while self.unresolved and itercount < maxiter:
# Update and sort the unresolved bonds
- prioritizeBonds(unresolved)
+ prioritize_bonds(self.unresolved)
# Take the next bond off the stack
- bond = unresolved.pop()
+ bond = self.unresolved.pop()
- if bond.doublePossible and bond.doubleRequired:
+ if bond.double_possible and bond.double_required:
# This bond must be a double bond to satisfy atom valence
bond.bond.order = 2
- resolved.append(bond)
- self.endoDOF -= 1
- elif bond.doublePossible and not bond.doubleRequired:
+ self.resolved.append(bond)
+ self.endo_dof -= 1
+ elif bond.double_possible and not bond.double_required:
# This could be a double bond, but we don't know for sure
# There are a few cases where it's safe to assume that it is a double bond:
# - All exo bonds are defined, and no endo bonds have been defined
# - Exo bonds adjacent to the current bond are defined, and no endo bonds have been defined
# - Exo bonds adjacent to the current bond are not defined, but one adjacent endo bond is defined
# - This is the last undefined endo bond
- if ((self.endoDOF == 6 and self.exoDOF == 0)
- or (self.endoDOF == 6 and bond.exoDOF == 0)
- or (bond.endoDOF == 1 and (bond.exoDOF == 1 or bond.exoDOF == 2))
- or self.endoDOF == 1):
+ if ((self.endo_dof == 6 and self.exo_dof == 0)
+ or (self.endo_dof == 6 and bond.exo_dof == 0)
+ or (bond.endo_dof == 1 and (bond.exo_dof == 1 or bond.exo_dof == 2))
+ or self.endo_dof == 1):
# Go ahead an assume this bond is double
bond.bond.order = 2
- resolved.append(bond)
- self.endoDOF -= 1
+ self.resolved.append(bond)
+ self.endo_dof -= 1
else:
# Come back to this bond later
- unresolved.append(bond)
+ self.unresolved.append(bond)
else:
# Double bond is not possible, so it must be a single bond
bond.bond.order = 1
- resolved.append(bond)
- self.endoDOF -= 1
+ self.resolved.append(bond)
+ self.endo_dof -= 1
itercount += 1
- if unresolved:
+ if self.unresolved:
# We've hit the iteration limit, but could not solve the ring
return False
@@ -276,36 +281,36 @@ cdef class AromaticBond(object):
DO NOT use outside of this module. This class does not do any aromaticity perception.
"""
- cdef Bond bond
- cdef set ringBonds
- cdef public int endoDOF, exoDOF
- cdef public bint doublePossible, doubleRequired
+ cdef public Bond bond
+ cdef public set ring_bonds
+ cdef public int endo_dof, exo_dof
+ cdef public bint double_possible, double_required
- def __init__(self, bond=None, ringBonds=None, endoDOF=-1, exoDOF=-1, doublePossible=True, doubleRequired=False):
+ def __init__(self, bond=None, ring_bonds=None, endo_dof=-1, exo_dof=-1, double_possible=True, double_required=False):
self.bond = bond
- self.ringBonds = ringBonds
- self.endoDOF = endoDOF
- self.exoDOF = exoDOF
- self.doublePossible = doublePossible
- self.doubleRequired = doubleRequired
+ self.ring_bonds = ring_bonds
+ self.endo_dof = endo_dof
+ self.exo_dof = exo_dof
+ self.double_possible = double_possible
+ self.double_required = double_required
cpdef update(self):
"""
Update the local degree of freedom information for this aromatic bond.
The DOF counts do not include the bond itself, only its adjacent bonds.
- `endoDOF` refers to the number of adjacent bonds in the ring without fixed bond orders.
- `exoDOF` refers to the number of adjacent bonds outside the ring without fixed bond orders.
+ `endo_dof` refers to the number of adjacent bonds in the ring without fixed bond orders.
+ `exo_dof` refers to the number of adjacent bonds outside the ring without fixed bond orders.
"""
- cdef dict bondOrders, valences
+ cdef dict valences
cdef Atom atom
cdef Bond bond
- cdef int endoDOF, exoDOF, occupied, uncertain, available
+ cdef int endo_dof, exo_dof, occupied, uncertain, available
valences = PeriodicSystem.valences
- endoDOF = 0
- exoDOF = 0
+ endo_dof = 0
+ exo_dof = 0
for atom in [self.bond.atom1, self.bond.atom2]:
occupied = 0
uncertain = 0
@@ -319,10 +324,10 @@ cdef class AromaticBond(object):
occupied += 1
uncertain += 1
if bond is not self.bond:
- if bond in self.ringBonds:
- endoDOF += 1
+ if bond in self.ring_bonds:
+ endo_dof += 1
else:
- exoDOF += 1
+ exo_dof += 1
else:
raise KekulizationError('Unexpected bond order {0}.'.format(bond.order))
# Count radicals and lone pairs
@@ -334,11 +339,11 @@ cdef class AromaticBond(object):
raise KekulizationError('Atom {0} cannot have negative available valence.'.format(atom))
elif available == 0:
# There are no extra electrons available, so this bond cannot be a double bond
- self.doublePossible = False
+ self.double_possible = False
elif available == 1 and uncertain == 1:
# There is an extra electron available, but the current bond is the only uncertain one,
# so it must be a double bond
- self.doubleRequired = True
+ self.double_required = True
- self.endoDOF = endoDOF
- self.exoDOF = exoDOF
+ self.endo_dof = endo_dof
+ self.exo_dof = exo_dof
diff --git a/rmgpy/molecule/kekulizeTest.py b/rmgpy/molecule/kekulizeTest.py
index db16690229..60217fefd1 100644
--- a/rmgpy/molecule/kekulizeTest.py
+++ b/rmgpy/molecule/kekulizeTest.py
@@ -34,6 +34,7 @@
from rmgpy.molecule import Molecule
from rmgpy.molecule.kekulize import *
+
class KekulizeTest(unittest.TestCase):
def setUp(self):
@@ -56,29 +57,32 @@ def setUp(self):
for atom in molecule.atoms:
bonds.update(atom.bonds.values())
- ringAtoms, ringBonds = molecule.getAromaticRings()
+ ring_atoms, ring_bonds = molecule.getAromaticRings()
- self.aromaticRing = AromaticRing(ringAtoms[0], set(ringBonds[0]), bonds - set(ringBonds[0]))
+ self.aromatic_ring = AromaticRing(ring_atoms[0], set(ring_bonds[0]), bonds - set(ring_bonds[0]))
- def testAromaticRing(self):
- self.aromaticRing.update()
+ def test_aromatic_ring(self):
+ """Test that the AromaticRing class works properly for kekulization."""
+ self.aromatic_ring.update()
- self.assertEqual(self.aromaticRing.endoDOF, 6)
- self.assertEqual(self.aromaticRing.exoDOF, 0)
+ self.assertEqual(self.aromatic_ring.endo_dof, 6)
+ self.assertEqual(self.aromatic_ring.exo_dof, 0)
- result = self.aromaticRing.kekulize()
+ result = self.aromatic_ring.kekulize()
self.assertTrue(result)
- def testAromaticBond(self):
- resolved, unresolved = self.aromaticRing.processBonds()
+ def test_aromatic_bond(self):
+ """Test that the AromaticBond class works properly for kekulization."""
+ self.aromatic_ring.process_bonds()
+ resolved, unresolved = self.aromatic_ring.resolved, self.aromatic_ring.unresolved
self.assertEqual(len(resolved), 0)
self.assertEqual(len(unresolved), 6)
for bond in unresolved:
bond.update()
- self.assertEqual(bond.endoDOF, 2)
- self.assertEqual(bond.exoDOF, 0)
- self.assertTrue(bond.doublePossible)
- self.assertFalse(bond.doubleRequired)
+ self.assertEqual(bond.endo_dof, 2)
+ self.assertEqual(bond.exo_dof, 0)
+ self.assertTrue(bond.double_possible)
+ self.assertFalse(bond.double_required)
diff --git a/rmgpy/molecule/molecule.pxd b/rmgpy/molecule/molecule.pxd
index f1067c7730..d70b36f457 100644
--- a/rmgpy/molecule/molecule.pxd
+++ b/rmgpy/molecule/molecule.pxd
@@ -223,6 +223,8 @@ cdef class Molecule(Graph):
cpdef bint isRadical(self) except -2
+ cpdef bint has_lone_pairs(self) except -2
+
cpdef bint isArylRadical(self, list aromaticRings=?) except -2
cpdef float calculateSymmetryNumber(self) except -1
diff --git a/rmgpy/molecule/molecule.py b/rmgpy/molecule/molecule.py
index 05f29c4fe9..0418572190 100644
--- a/rmgpy/molecule/molecule.py
+++ b/rmgpy/molecule/molecule.py
@@ -1746,6 +1746,17 @@ def isRadical(self):
return True
return False
+ def has_lone_pairs(self):
+ """
+ Return ``True`` if the molecule contains at least one lone electron pair,
+ or ``False`` otherwise.
+ """
+ cython.declare(atom=Atom)
+ for atom in self.vertices:
+ if atom.lonePairs > 0:
+ return True
+ return False
+
def isArylRadical(self, aromaticRings=None):
"""
Return ``True`` if the molecule only contains aryl radicals,
@@ -1935,6 +1946,8 @@ def getAromaticRings(self, rings=None):
break
for atom2 in ring0[i + 1:]:
if self.hasBond(atom1, atom2):
+ # Check for aromaticity using the bond type rather than GetIsAromatic because
+ # aryne triple bonds return True for GetIsAromatic but are not aromatic bonds
if rdkitmol.GetBondBetweenAtoms(rdAtomIndices[atom1],
rdAtomIndices[atom2]).GetBondType() is AROMATIC:
aromaticBondsInRing.append(self.getBond(atom1, atom2))
diff --git a/rmgpy/molecule/pathfinder.pxd b/rmgpy/molecule/pathfinder.pxd
index f65cb13b51..c230d385b7 100644
--- a/rmgpy/molecule/pathfinder.pxd
+++ b/rmgpy/molecule/pathfinder.pxd
@@ -46,18 +46,16 @@ cpdef dict compute_atom_distance(list atom_indices, Molecule mol)
cpdef list find_allyl_delocalization_paths(Atom atom1)
-cpdef list find_lone_pair_radical_delocalization_paths(Atom atom1)
+cpdef list find_lone_pair_multiple_bond_paths(Atom atom1)
-cpdef list find_lone_pair_multiple_bond_delocalization_paths(Atom atom1)
+cpdef list find_adj_lone_pair_radical_delocalization_paths(Atom atom1)
-cpdef list find_lone_pair_radical_multiple_bond_delocalization_paths(Atom atom1)
+cpdef list find_adj_lone_pair_multiple_bond_delocalization_paths(Atom atom1)
-cpdef list find_N5ddc_N5tc_delocalization_paths(Atom atom1)
+cpdef list find_adj_lone_pair_radical_multiple_bond_delocalization_paths(Atom atom1)
cpdef list find_N5dc_radical_delocalization_paths(Atom atom1)
-cpdef list find_N5dc_delocalization_paths(Atom atom1)
+cpdef bint is_atom_able_to_gain_lone_pair(Atom atom)
-cpdef bint is_NOS_able_to_gain_lone_pair(Atom atom)
-
-cpdef bint is_NOS_able_to_lose_lone_pair(Atom atom)
+cpdef bint is_atom_able_to_lose_lone_pair(Atom atom)
diff --git a/rmgpy/molecule/pathfinder.py b/rmgpy/molecule/pathfinder.py
index cd8672f70a..8b046d7e31 100644
--- a/rmgpy/molecule/pathfinder.py
+++ b/rmgpy/molecule/pathfinder.py
@@ -39,6 +39,7 @@
from rmgpy.molecule.molecule import Atom, Bond
+
def find_butadiene(start, end):
"""
Search for a path between start and end atom that consists of
@@ -70,6 +71,7 @@ def find_butadiene(start, end):
# Could not find a resonance path from start atom to end atom
return None
+
def find_butadiene_end_with_charge(start):
"""
Search for a (4-atom, 3-bond) path between start and end atom that consists of
@@ -101,6 +103,7 @@ def find_butadiene_end_with_charge(start):
# Could not find a resonance path from start atom to end atom
return None
+
def find_allyl_end_with_charge(start):
"""
Search for a (3-atom, 2-bond) path between start and end atom that consists of
@@ -140,6 +143,7 @@ def find_allyl_end_with_charge(start):
# Could not find a resonance path from start atom to end atom
return paths
+
def find_shortest_path(start, end, path=None):
path = path if path else []
path = path + [start]
@@ -155,6 +159,7 @@ def find_shortest_path(start, end, path=None):
shortest = newpath
return shortest
+
def add_unsaturated_bonds(path):
"""
Find all the (2-atom, 1-bond) patterns "X=X" starting from the
@@ -173,6 +178,7 @@ def add_unsaturated_bonds(path):
paths.append(new_path)
return paths
+
def add_allyls(path):
"""
Find all the (3-atom, 2-bond) patterns "X=X-X" starting from the
@@ -194,6 +200,7 @@ def add_allyls(path):
paths.append(new_path)
return paths
+
def add_inverse_allyls(path):
"""
Find all the (3-atom, 2-bond) patterns "start~atom2=atom3" starting from the
@@ -214,6 +221,7 @@ def add_inverse_allyls(path):
paths.append(new_path)
return paths
+
def compute_atom_distance(atom_indices, mol):
"""
Compute the distances between each pair of atoms in the atom_indices.
@@ -243,8 +251,7 @@ def compute_atom_distance(atom_indices, mol):
def find_allyl_delocalization_paths(atom1):
"""
- Find all the delocalization paths allyl to the radical center indicated
- by `atom1`. Used to generate resonance isomers.
+ Find all the delocalization paths allyl to the radical center indicated by `atom1`.
"""
cython.declare(paths=list, atom2=Atom, atom3=Atom, bond12=Bond, bond23=Bond)
@@ -252,11 +259,10 @@ def find_allyl_delocalization_paths(atom1):
if atom1.radicalElectrons <= 0:
return []
- # Find all delocalization paths
paths = []
for atom2, bond12 in atom1.edges.items():
# Vinyl bond must be capable of gaining an order
- if (bond12.isSingle() or bond12.isDouble()) and atom1.radicalElectrons:
+ if bond12.isSingle() or bond12.isDouble():
for atom3, bond23 in atom2.edges.items():
# Allyl bond must be capable of losing an order without breaking
if atom1 is not atom3 and (bond23.isDouble() or bond23.isTriple()):
@@ -264,7 +270,38 @@ def find_allyl_delocalization_paths(atom1):
return paths
-def find_lone_pair_radical_delocalization_paths(atom1):
+def find_lone_pair_multiple_bond_paths(atom1):
+ """
+ Find all the delocalization paths between lone electron pair and multiple bond in a 3-atom system
+ `atom1` indicates the localized lone pair site. Currently carbenes are excluded from this path.
+
+ Examples:
+
+ - N2O (N#[N+][O-] <-> [N-]=[N+]=O)
+ - Azide (N#[N+][NH-] <-> [N-]=[N+]=N <-> [N-2][N+]#[NH+])
+ - N#N group on sulfur (O[S-](O)[N+]#N <-> OS(O)=[N+]=[N-] <-> O[S+](O)#[N+][N-2])
+ - N[N+]([O-])=O <=> N[N+](=O)[O-], these structures are isomorphic but not identical, this transition is
+ important for correct degeneracy calculations
+ """
+ cython.declare(paths=list, atom2=Atom, atom3=Atom, bond12=Bond, bond23=Bond)
+
+ # No paths if atom1 has no lone pairs, or cannot lose them, or is a carbon atom
+ if atom1.lonePairs <= 0 or not is_atom_able_to_lose_lone_pair(atom1) or atom1.isCarbon():
+ return []
+
+ paths = []
+ for atom2, bond12 in atom1.edges.items():
+ # Bond must be capable of gaining an order
+ if bond12.isSingle() or bond12.isDouble():
+ for atom3, bond23 in atom2.edges.items():
+ # Bond must be capable of losing an order without breaking, atom3 must be able to gain a lone pair
+ if atom1 is not atom3 and (bond23.isDouble() or bond23.isTriple())\
+ and (atom3.isCarbon() or is_atom_able_to_gain_lone_pair(atom3)):
+ paths.append([atom1, atom2, atom3, bond12, bond23])
+ return paths
+
+
+def find_adj_lone_pair_radical_delocalization_paths(atom1):
"""
Find all the delocalization paths of lone electron pairs next to the radical center indicated
by `atom1`. Used to generate resonance isomers in adjacent N/O/S atoms.
@@ -298,21 +335,23 @@ def find_lone_pair_radical_delocalization_paths(atom1):
cython.declare(paths=list, atom2=Atom, bond12=Bond)
paths = []
- if atom1.isNOS():
- if ((atom1.isNitrogen() and atom1.radicalElectrons >= 1 and atom1.lonePairs in [0, 1])
- or (atom1.isOxygen() and atom1.radicalElectrons >= 1 and atom1.lonePairs in [1, 2])
- or (atom1.isSulfur() and atom1.radicalElectrons >= 1 and atom1.lonePairs in [0, 1, 2])):
- for atom2 in atom1.edges.keys():
- if ((atom2.isNitrogen() and atom2.lonePairs in [1, 2])
- or (atom2.isOxygen() and atom2.lonePairs in [2, 3] and not atom1.isOxygen()) #avoid RO[::O.] <-> R[:O.+][:::O-], see RMG-Py #1223
- or (atom2.isSulfur() and atom2.lonePairs in [1, 2, 3])):
- paths.append([atom1, atom2])
+ if atom1.radicalElectrons >= 1 and\
+ ((atom1.isCarbon() and atom1.lonePairs == 0)
+ or (atom1.isNitrogen() and atom1.lonePairs in [0, 1])
+ or (atom1.isOxygen() and atom1.lonePairs in [1, 2])
+ or (atom1.isSulfur() and atom1.lonePairs in [0, 1, 2])):
+ for atom2 in atom1.edges.keys():
+ if ((atom2.isCarbon() and atom2.lonePairs == 1)
+ or (atom2.isNitrogen() and atom2.lonePairs in [1, 2])
+ or (atom2.isOxygen() and atom2.lonePairs in [2, 3] and not atom1.isOxygen()) # avoid RO[::O.] <-> R[:O.+][:::O-], see RMG-Py #1223
+ or (atom2.isSulfur() and atom2.lonePairs in [1, 2, 3])):
+ paths.append([atom1, atom2])
return paths
-def find_lone_pair_multiple_bond_delocalization_paths(atom1):
+def find_adj_lone_pair_multiple_bond_delocalization_paths(atom1):
"""
- Find all the delocalization paths of a N/O/S atom1 which either:
+ Find all the delocalization paths of atom1 which either
- Has a lonePair and is bonded by a single/double bond (e.g., [::NH-]-[CH2+], [::N-]=[CH+]) -- direction 1
- Can obtain a lonePair and is bonded by a double/triple bond (e.g., [:NH]=[CH2], [:N]#[CH]) -- direction 2
@@ -321,9 +360,7 @@ def find_lone_pair_multiple_bond_delocalization_paths(atom1):
- [::NH-]-[CH2+] <=> [:NH]=[CH2]
- [:N]#[CH] <=> [::N-]=[CH+]
- - N#[N+][O-] <=> <=> [N-]=[N+]=O
- - C[N+](=O)[NH-] <=> <=> C[N+]([O-])=[NH]
- - other examples: S#N, N#[S], O=S([O])=O, [NH]=[N+]=[N-]
+ - other examples: S#N, N#[S], O=S([O])=O
Direction "1" is the direction the bond order as in [::NH-]-[CH2+] <=> [:NH]=[CH2]
Direction "2" is the direction the bond order as in [:NH]=[CH2] <=> [::NH-]-[CH2+]
@@ -333,25 +370,30 @@ def find_lone_pair_multiple_bond_delocalization_paths(atom1):
cython.declare(paths=list, atom2=Atom, atom3=Atom, bond12=Bond, bond23=Bond)
paths = []
- if atom1.isNOS():
- for atom2, bond12 in atom1.edges.items():
- if atom2.isNonHydrogen(): # don't bother with hydrogen atoms.
- # Find paths in the direction the bond order,
- # atom1 must posses at least one lone pair to loose it
- if ((bond12.isSingle() or bond12.isDouble())
- and is_NOS_able_to_lose_lone_pair(atom1)):
- paths.append([atom1, atom2, bond12, 1]) # direction = 1
- # Find paths in the direction the bond order,
- # atom1 gains a lone pair, hence cannot already have more than two lone pairs
- if ((bond12.isDouble() or bond12.isTriple())
- and is_NOS_able_to_gain_lone_pair(atom1)):
- paths.append([atom1, atom2, bond12, 2]) # direction = 2
+
+ # Carbenes are currently excluded from this path.
+ # Only atom1 is checked since it is either the donor or acceptor of the lone pair
+ if atom1.isCarbon():
+ return paths
+
+ for atom2, bond12 in atom1.edges.items():
+ if atom2.isNonHydrogen(): # don't bother with hydrogen atoms.
+ # Find paths in the direction the bond order,
+ # atom1 must posses at least one lone pair to loose it
+ if ((bond12.isSingle() or bond12.isDouble())
+ and is_atom_able_to_lose_lone_pair(atom1)):
+ paths.append([atom1, atom2, bond12, 1]) # direction = 1
+ # Find paths in the direction the bond order,
+ # atom1 gains a lone pair, hence cannot already have more than two lone pairs
+ if ((bond12.isDouble() or bond12.isTriple())
+ and is_atom_able_to_gain_lone_pair(atom1)):
+ paths.append([atom1, atom2, bond12, 2]) # direction = 2
return paths
-def find_lone_pair_radical_multiple_bond_delocalization_paths(atom1):
+def find_adj_lone_pair_radical_multiple_bond_delocalization_paths(atom1):
"""
- Find all the delocalization paths of a N/O/S atom1 which either:
+ Find all the delocalization paths of atom1 which either
- Has a lonePair and is bonded by a single/double bond to a radical atom (e.g., [::N]-[.CH2])
- Can obtain a lonePair, has a radical, and is bonded by a double/triple bond (e.g., [:N.]=[CH2])
@@ -370,63 +412,23 @@ def find_lone_pair_radical_multiple_bond_delocalization_paths(atom1):
cython.declare(paths=list, atom2=Atom, atom3=Atom, bond12=Bond, bond23=Bond)
paths = []
- if atom1.isNOS():
- for atom2, bond12 in atom1.edges.items():
- # Find paths in the direction the bond order
- # atom1 must posses at least one lone pair to loose it, atom2 must be a radical
- if (atom2.radicalElectrons and (bond12.isSingle() or bond12.isDouble())
- and is_NOS_able_to_lose_lone_pair(atom1)):
- paths.append([atom1, atom2, bond12, 1]) # direction = 1
- # Find paths in the direction the bond order
- # atom1 gains a lone pair, hence cannot already have more than two lone pairs, and is also a radical
- if (atom1.radicalElectrons and (bond12.isDouble() or bond12.isTriple())
- and is_NOS_able_to_gain_lone_pair(atom1)):
- paths.append([atom1, atom2, bond12, 2]) # direction = 2
- return paths
-
-def find_N5ddc_N5tc_delocalization_paths(atom1):
- """
- Find all the resonance structures of nitrogen atoms with two double bonds (atomType N5ddc)
- and nitrogen atoms with one triple and one single bond (atomType N5tc).
-
- Examples:
-
- - N2O (N#[N+][O-] <-> [N-]=[N+]=O)
- - Azide (N#[N+][NH-] <-> [N-]=[N+]=N <-> [N-2][N+]#[NH+])
- - N#N group on sulfur (O[S-](O)[N+]#N <-> OS(O)=[N+]=[N-] <-> O[S+](O)#[N+][N-2])
-
- In this transition atom1 is the middle N+ (N5ddc or N5tc)
- A "if atom.atomType.label in ['N5ddc','N5tc']" check should be done before calling this function
- """
- cython.declare(paths=list, atom2=Atom, atom3=Atom, bond12=Bond, bond23=Bond)
-
- paths = []
+ # Carbenes are currently excluded from this path.
+ # Only atom1 is checked since it is either the donor or acceptor of the lone pair
+ if atom1.isCarbon():
+ return paths
for atom2, bond12 in atom1.edges.items():
- if atom2.isNOS():
- for atom3, bond23 in atom1.edges.items():
- if atom2 is not atom3:
- # Find this transitions from the N5tc side.
- # atom2 is single-bonded to atom1 and looses a lone pair
- # atom3 is triple-bonded to atom1 and gains a lone pair (atom3 cannot be oxygen)
- # bond12 is incremented, bond23 is decremented
- if (((atom2.isNitrogen() and atom2.lonePairs in [2, 3])
- or (atom2.isOxygen() and atom2.lonePairs == 3)
- or (atom2.isSulfur() and atom2.lonePairs in [1, 2, 3]))
- and ((atom3.isNitrogen() or atom3.isSulfur()) and atom3.lonePairs in [0, 1])
- and bond12.isSingle() and bond23.isTriple()):
- paths.append([atom1, atom2, atom3, bond12, bond23])
- # Find this transitions from the N5ddc side.
- # atom2 looses a lone pair and ends up with a triple bond to atom1 (atom2 cannot be oxygen)
- # atom3 gains a lone pair and ends up with a single bond to atom1
- # bond12 is incremented, bond23 is decremented (same actions as above under these definitions)
- elif (((atom2.isNitrogen() or atom2.isSulfur()) and atom2.lonePairs in [1, 2])
- and ((atom3.isNitrogen() and atom3.lonePairs in [1, 2])
- or (atom3.isOxygen() and atom3.lonePairs == 2)
- or (atom3.isSulfur() and atom3.lonePairs in [0, 1, 2]))
- and bond12.isDouble() and bond23.isDouble()):
- paths.append([atom1, atom2, atom3, bond12, bond23])
+ # Find paths in the direction the bond order
+ # atom1 must posses at least one lone pair to loose it, atom2 must be a radical
+ if (atom2.radicalElectrons and (bond12.isSingle() or bond12.isDouble())
+ and is_atom_able_to_lose_lone_pair(atom1)):
+ paths.append([atom1, atom2, bond12, 1]) # direction = 1
+ # Find paths in the direction the bond order
+ # atom1 gains a lone pair, hence cannot already have more than two lone pairs, and is also a radical
+ if (atom1.radicalElectrons and (bond12.isDouble() or bond12.isTriple())
+ and is_atom_able_to_gain_lone_pair(atom1)):
+ paths.append([atom1, atom2, bond12, 2]) # direction = 2
return paths
@@ -434,9 +436,12 @@ def find_N5dc_radical_delocalization_paths(atom1):
"""
Find all the resonance structures of an N5dc nitrogen atom with a single bond to a radical N/O/S site, another
single bond to a negatively charged N/O/S site, and one double bond (not participating in this transformation)
+
Example:
+
- N=[N+]([O])([O-]) <=> N=[N+]([O-])([O]), these structures are isomorphic but not identical, the transition is
- important for correct degeneracy calculations
+ important for correct degeneracy calculations
+
In this transition atom1 is the middle N+ (N5dc), atom2 is the radical site, and atom3 is negatively charged
A "if atom1.atomType.label == 'N5dc'" check should be done before calling this function
"""
@@ -445,54 +450,32 @@ def find_N5dc_radical_delocalization_paths(atom1):
path = []
for atom2, bond12 in atom1.edges.items():
- if atom2.radicalElectrons and bond12.isSingle() and not atom2.charge and is_NOS_able_to_gain_lone_pair(atom2):
+ if atom2.radicalElectrons and bond12.isSingle() and not atom2.charge and is_atom_able_to_gain_lone_pair(atom2):
for atom3, bond13 in atom1.edges.items():
if (atom2 is not atom3 and bond13.isSingle() and atom3.charge < 0
- and is_NOS_able_to_lose_lone_pair(atom3)):
+ and is_atom_able_to_lose_lone_pair(atom3)):
path.append([atom2, atom3])
return path # there could only be one such path per atom1, return if found
return path
-def find_N5dc_delocalization_paths(atom1):
- """
- Find all the resonance structures of an N5dc nitrogen atom with a double bond to a N/O/S site, another
- single bond to a negatively charged N/O/S site, and one single bond (not participating in this transformation)
- Example:
- - N[N+]([O-])=O <=> N[N+](=O)[O-], these structures are isomorphic but not identical, the transition is
- important for correct degeneracy calculations
- In this transition atom1 is the middle N+ (N5dc), atom2 double bonded to atom1, and atom3 is negatively charged
- A "if atom1.atomType.label == 'N5dc'" check should be done before calling this function
- """
- cython.declare(paths=list, atom2=Atom, atom3=Atom, bond12=Bond, bond23=Bond)
-
- path = []
-
- for atom2, bond12 in atom1.edges.items():
- if atom2.isNOS() and bond12.isDouble() and not atom2.charge and is_NOS_able_to_gain_lone_pair(atom2):
- for atom3, bond13 in atom1.edges.items():
- if (atom2 is not atom3 and bond13.isSingle() and atom3.charge < 0
- and is_NOS_able_to_lose_lone_pair(atom3)):
- path.append([atom2, atom3, bond12, bond13])
- return path # there could only be one such path per atom1, return if found
- return path
-
-
-def is_NOS_able_to_gain_lone_pair(atom):
+def is_atom_able_to_gain_lone_pair(atom):
"""
Helper function
Returns True if atom is N/O/S and is able to an additional lone pair, False otherwise
We don't allow O to remain with no lone pairs
"""
return (((atom.isNitrogen() or atom.isSulfur()) and atom.lonePairs in [0, 1, 2])
- or (atom.isOxygen() and atom.lonePairs in [1, 2]))
+ or (atom.isOxygen() and atom.lonePairs in [1, 2])
+ or atom.isCarbon() and atom.lonePairs == 0)
-def is_NOS_able_to_lose_lone_pair(atom):
+def is_atom_able_to_lose_lone_pair(atom):
"""
Helper function
Returns True if atom is N/O/S and is able to a lone pair, False otherwise
We don't allow O to remain with no lone pairs
"""
return (((atom.isNitrogen() or atom.isSulfur()) and atom.lonePairs in [1, 2, 3])
- or (atom.isOxygen() and atom.lonePairs in [2, 3]))
+ or (atom.isOxygen() and atom.lonePairs in [2, 3])
+ or atom.isCarbon() and atom.lonePairs == 1)
diff --git a/rmgpy/molecule/pathfinderTest.py b/rmgpy/molecule/pathfinderTest.py
index 6e0cbf92a3..17132c4588 100644
--- a/rmgpy/molecule/pathfinderTest.py
+++ b/rmgpy/molecule/pathfinderTest.py
@@ -405,26 +405,73 @@ def test_nitrogenated_birad(self):
self.assertTrue(paths)
-class FindLonePairRadicalDelocalizationPaths(unittest.TestCase):
+class FindLonePairMultipleBondPathsTest(unittest.TestCase):
+ """
+ test the find_lone_pair_multiple_bond_paths method
+ """
+ def test_azide(self):
+ smiles = "[N-]=[N+]=N"
+ mol = Molecule().fromSMILES(smiles)
+ paths = find_lone_pair_multiple_bond_paths(mol.atoms[2])
+ self.assertTrue(paths)
+
+ def test_NH2CHO(self):
+ smiles = 'NC=O'
+ mol = Molecule().fromSMILES(smiles)
+ paths = find_lone_pair_multiple_bond_paths(mol.atoms[0])
+ self.assertTrue(paths)
+
+ def test_N2Oa(self):
+ smiles = "[N-]=[N+]=O"
+ mol = Molecule().fromSMILES(smiles)
+ paths = find_lone_pair_multiple_bond_paths(mol.atoms[0])
+ self.assertTrue(paths)
+
+ def test_N2Ob(self):
+ smiles = "N#[N+][O-]"
+ mol = Molecule().fromSMILES(smiles)
+ paths = find_lone_pair_multiple_bond_paths(mol.atoms[2])
+ self.assertTrue(paths)
+
+ def test_HN3(self):
+ smiles = "[NH-][N+]#N"
+ mol = Molecule().fromSMILES(smiles)
+ paths = find_lone_pair_multiple_bond_paths(mol.atoms[0])
+ self.assertTrue(paths)
+
+ def test_SN2(self):
+ smiles = "OS(O)=[N+]=[N-]"
+ mol = Molecule().fromSMILES(smiles)
+ paths = find_lone_pair_multiple_bond_paths(mol.atoms[2])
+ self.assertTrue(paths)
+
+ def test_H2NNOO(self):
+ smiles = "N[N+]([O-])=O"
+ mol = Molecule().fromSMILES(smiles)
+ paths = find_lone_pair_multiple_bond_paths(mol.atoms[0])
+ self.assertTrue(paths)
+
+
+class FindAdjLonePairRadicalDelocalizationPaths(unittest.TestCase):
"""
test the find_lone_pair_radical_delocalization_paths method
"""
def test_NO2a(self):
smiles = "[O]N=O"
mol = Molecule().fromSMILES(smiles)
- paths = find_lone_pair_radical_delocalization_paths(mol.atoms[0])
+ paths = find_adj_lone_pair_radical_delocalization_paths(mol.atoms[0])
self.assertTrue(paths)
def test_NO2b(self):
smiles = "[O-][N+]=O"
mol = Molecule().fromSMILES(smiles)
- paths = find_lone_pair_radical_delocalization_paths(mol.atoms[1])
+ paths = find_adj_lone_pair_radical_delocalization_paths(mol.atoms[1])
self.assertTrue(paths)
def test_HOSO(self):
smiles = "[O]SO"
mol = Molecule().fromSMILES(smiles)
- paths = find_lone_pair_radical_delocalization_paths(mol.atoms[0])
+ paths = find_adj_lone_pair_radical_delocalization_paths(mol.atoms[0])
self.assertTrue(paths)
def test_double_bond(self):
@@ -432,64 +479,35 @@ def test_double_bond(self):
1 O u1 p1 c+1 {2,D}
2 N u0 p2 c-1 {1,D}"""
mol = Molecule().fromAdjacencyList(adj)
- paths = find_lone_pair_radical_delocalization_paths(mol.atoms[0])
+ paths = find_adj_lone_pair_radical_delocalization_paths(mol.atoms[0])
self.assertTrue(paths)
-class FindLonePairMultipleBondDelocalizationPaths(unittest.TestCase):
+class FindAdjLonePairMultipleBondDelocalizationPaths(unittest.TestCase):
"""
test the find_lone_pair_multiple_bond_delocalization_paths method
"""
def test_SHO3(self):
smiles = "O=[SH](=O)[O]"
mol = Molecule().fromSMILES(smiles)
- paths = find_lone_pair_multiple_bond_delocalization_paths(mol.atoms[0])
+ paths = find_adj_lone_pair_multiple_bond_delocalization_paths(mol.atoms[0])
self.assertTrue(paths)
-class FindLonePairRadicalMultipleBondDelocalizationPaths(unittest.TestCase):
+class FindAdjLonePairRadicalMultipleBondDelocalizationPaths(unittest.TestCase):
"""
test the find_lone_pair_radical_multiple_bond_delocalization_paths method
"""
def test_NS(self):
smiles = "N#[S]"
mol = Molecule().fromSMILES(smiles)
- paths = find_lone_pair_radical_multiple_bond_delocalization_paths(mol.atoms[1])
+ paths = find_adj_lone_pair_radical_multiple_bond_delocalization_paths(mol.atoms[1])
self.assertTrue(paths)
def test_HSO3(self):
smiles = "O[S](=O)=O"
mol = Molecule().fromSMILES(smiles)
- paths = find_lone_pair_radical_multiple_bond_delocalization_paths(mol.atoms[1])
- self.assertTrue(paths)
-
-
-class FindN5ddcN5tcDelocalizationPaths(unittest.TestCase):
- """
- test the find_N5ddc_N5tc_delocalization_paths method
- """
- def test_N2Oa(self):
- smiles = "[N-]=[N+]=O"
- mol = Molecule().fromSMILES(smiles)
- paths = find_N5ddc_N5tc_delocalization_paths(mol.atoms[1])
- self.assertTrue(paths)
-
- def test_N2Ob(self):
- smiles = "N#[N+][O-]"
- mol = Molecule().fromSMILES(smiles)
- paths = find_N5ddc_N5tc_delocalization_paths(mol.atoms[1])
- self.assertTrue(paths)
-
- def test_HN3(self):
- smiles = "[NH-][N+]#N"
- mol = Molecule().fromSMILES(smiles)
- paths = find_N5ddc_N5tc_delocalization_paths(mol.atoms[2])
- self.assertTrue(paths)
-
- def test_SN2(self):
- smiles = "OS(O)=[N+]=[N-]"
- mol = Molecule().fromSMILES(smiles)
- paths = find_N5ddc_N5tc_delocalization_paths(mol.atoms[3])
+ paths = find_adj_lone_pair_radical_multiple_bond_delocalization_paths(mol.atoms[1])
self.assertTrue(paths)
@@ -502,14 +520,3 @@ def test_HNNOO(self):
mol = Molecule().fromSMILES(smiles)
paths = find_N5dc_radical_delocalization_paths(mol.atoms[1])
self.assertTrue(paths)
-
-
-class FindN5dcDelocalizationPaths(unittest.TestCase):
- """
- test the find_N5dc_delocalization_paths method
- """
- def test_H2NNOO(self):
- smiles = "N[N+]([O-])=O"
- mol = Molecule().fromSMILES(smiles)
- paths = find_N5dc_delocalization_paths(mol.atoms[1])
- self.assertTrue(paths)
diff --git a/rmgpy/molecule/resonance.pxd b/rmgpy/molecule/resonance.pxd
index bf3f4215f5..61b4c027be 100644
--- a/rmgpy/molecule/resonance.pxd
+++ b/rmgpy/molecule/resonance.pxd
@@ -34,32 +34,32 @@ cpdef dict analyze_molecule(Molecule mol)
cpdef list generate_resonance_structures(Molecule mol, bint clar_structures=?, bint keep_isomorphic=?, bint filter_structures=?)
-cpdef list _generate_resonance_structures(list mol_list, list method_list, bint keep_isomorphic=?, bint copy=?)
+cpdef list _generate_resonance_structures(list mol_list, list method_list, bint keep_isomorphic=?, bint copy=?, bint filter_structures=?)
cpdef list generate_allyl_delocalization_resonance_structures(Molecule mol)
-cpdef list generate_lone_pair_radical_resonance_structures(Molecule mol)
-
cpdef list generate_lone_pair_multiple_bond_resonance_structures(Molecule mol)
-cpdef list generate_lone_pair_radical_multiple_bond_resonance_structures(Molecule mol)
+cpdef list generate_adj_lone_pair_radical_resonance_structures(Molecule mol)
-cpdef list generate_N5ddc_N5tc_resonance_structures(Molecule mol)
+cpdef list generate_adj_lone_pair_multiple_bond_resonance_structures(Molecule mol)
-cpdef list generate_N5dc_radical_resonance_structures(Molecule mol)
+cpdef list generate_adj_lone_pair_radical_multiple_bond_resonance_structures(Molecule mol)
-cpdef list generate_N5dc_resonance_structures(Molecule mol)
+cpdef list generate_N5dc_radical_resonance_structures(Molecule mol)
cpdef list generate_isomorphic_resonance_structures(Molecule mol, bint saturate_h=?)
-cpdef list generate_aromatic_resonance_structures(Molecule mol, dict features=?)
+cpdef list generate_optimal_aromatic_resonance_structures(Molecule mol, dict features=?)
-cpdef list generate_kekule_structure(Molecule mol)
+cpdef list generate_aromatic_resonance_structure(Molecule mol, list aromatic_bonds=?, bint copy=?)
+
+cpdef list generate_aryne_resonance_structures(Molecule mol)
-cpdef list generate_opposite_kekule_structure(Molecule mol)
+cpdef list generate_kekule_structure(Molecule mol)
cpdef list generate_clar_structures(Molecule mol)
-cpdef list _clar_optimization(Molecule mol, list constraints=?, maxNum=?)
+cpdef list _clar_optimization(Molecule mol, list constraints=?, max_num=?)
-cpdef list _clar_transformation(Molecule mol, list ring)
+cpdef list _clar_transformation(Molecule mol, list aromatic_ring)
diff --git a/rmgpy/molecule/resonance.py b/rmgpy/molecule/resonance.py
index 552e36c678..cac6f06397 100644
--- a/rmgpy/molecule/resonance.py
+++ b/rmgpy/molecule/resonance.py
@@ -39,14 +39,14 @@
- All species:
- ``generate_allyl_delocalization_resonance_structures``: single radical shift with double or triple bond
- - ``generate_lone_pair_radical_resonance_structures``: single radical shift with lone pair
- - ``generate_lone_pair_multiple_bond_resonance_structures``: multiple bond shift with lone pair
- - ``generate_lone_pair_radical_multiple_bond_resonance_structures``: multiple bond and radical shift with lone pair and radical
- - ``generate_N5ddc_N5tc_resonance_structures``: shift between nitrogen with two double bonds and single + triple bond
+ - ``generate_lone_pair_multiple_bond_resonance_structures``: lone pair shift with double or triple bond in a 3-atom system (between nonadjacent atoms)
+ - ``generate_adj_lone_pair_radical_resonance_structures``: single radical shift with lone pair between adjacent atoms
+ - ``generate_adj_lone_pair_multiple_bond_resonance_structures``: multiple bond shift with lone pair between adjacent atoms
+ - ``generate_adj_lone_pair_radical_multiple_bond_resonance_structures``: multiple bond and radical shift with lone pair and radical between adjacent atoms
- ``generate_N5dc_radical_resonance_structures``: shift between radical and lone pair mediated by an N5dc atom
- - ``generate_N5dc_resonance_structures``: shift between double bond and lone pair mediated by an N5dc atom
+ - ``generate_aryne_resonance_structures``: shift between cumulene and alkyne forms of arynes, which are not considered aromatic in RMG
- Aromatic species only:
- - ``generate_aromatic_resonance_structures``: fully delocalized structure, where all aromatic rings have benzene bonds
+ - ``generate_optimal_aromatic_resonance_structures``: fully delocalized structure, where all aromatic rings have benzene bonds
- ``generate_kekule_structure``: generate a single Kekule structure for an aromatic compound (single/double bond form)
- ``generate_opposite_kekule_structure``: for monocyclic aromatic species, rotate the double bond assignment
- ``generate_clar_structures``: generate all structures with the maximum number of pi-sextet assignments
@@ -78,15 +78,14 @@ def populate_resonance_algorithms(features=None):
if features is None:
method_list = [
generate_allyl_delocalization_resonance_structures,
- generate_lone_pair_radical_resonance_structures,
generate_lone_pair_multiple_bond_resonance_structures,
- generate_lone_pair_radical_multiple_bond_resonance_structures,
- generate_N5ddc_N5tc_resonance_structures,
+ generate_adj_lone_pair_radical_resonance_structures,
+ generate_adj_lone_pair_multiple_bond_resonance_structures,
+ generate_adj_lone_pair_radical_multiple_bond_resonance_structures,
generate_N5dc_radical_resonance_structures,
- generate_N5dc_resonance_structures,
- generate_aromatic_resonance_structures,
+ generate_optimal_aromatic_resonance_structures,
+ generate_aryne_resonance_structures,
generate_kekule_structure,
- generate_opposite_kekule_structure,
generate_clar_structures,
]
else:
@@ -95,14 +94,22 @@ def populate_resonance_algorithms(features=None):
# cases where the radical is in an orbital that is orthogonal to the pi orbitals.
if features['isRadical'] and not features['isAromatic'] and not features['isArylRadical']:
method_list.append(generate_allyl_delocalization_resonance_structures)
- if features['hasNitrogen']:
- method_list.append(generate_N5ddc_N5tc_resonance_structures)
+ if features['isCyclic']:
+ method_list.append(generate_aryne_resonance_structures)
+ if features['hasNitrogenVal5']:
method_list.append(generate_N5dc_radical_resonance_structures)
- method_list.append(generate_N5dc_resonance_structures)
if features['hasLonePairs']:
- method_list.append(generate_lone_pair_radical_resonance_structures)
- method_list.append(generate_lone_pair_multiple_bond_resonance_structures)
- method_list.append(generate_lone_pair_radical_multiple_bond_resonance_structures)
+ method_list.append(generate_adj_lone_pair_radical_resonance_structures)
+ method_list.append(generate_adj_lone_pair_multiple_bond_resonance_structures)
+ method_list.append(generate_adj_lone_pair_radical_multiple_bond_resonance_structures)
+ if not features['isAromatic']:
+ # The generate_lone_pair_multiple_bond_resonance_structures method may purturb the electronic
+ # configuration of a conjugated aromatic system, causing a major slow-down (two orders of magnitude
+ # slower in one observed case), and it doesn't necessarily result in new representative localized
+ # structures. Here we forbid it for all structures bearing at least one aromatic ring as a "good enough"
+ # solution. A more holistic approach would be to identify these cases in generate_resonance_structures,
+ # and pass a list of forbidden atom ID's to find_lone_pair_multiple_bond_paths.
+ method_list.append(generate_lone_pair_multiple_bond_resonance_structures)
return method_list
@@ -120,21 +127,21 @@ def analyze_molecule(mol):
'isAromatic': False,
'isPolycyclicAromatic': False,
'isArylRadical': False,
- 'hasNitrogen': False,
+ 'hasNitrogenVal5': False,
'hasLonePairs': False,
}
if features['isCyclic']:
- aromaticRings = mol.getAromaticRings()[0]
- if len(aromaticRings) > 0:
+ aromatic_rings = mol.getAromaticRings()[0]
+ if len(aromatic_rings) > 0:
features['isAromatic'] = True
- if len(aromaticRings) > 1:
+ if len(aromatic_rings) > 1:
features['isPolycyclicAromatic'] = True
if features['isRadical'] and features['isAromatic']:
- features['isArylRadical'] = mol.isArylRadical(aromaticRings)
+ features['isArylRadical'] = mol.isArylRadical(aromatic_rings)
for atom in mol.vertices:
- if atom.isNitrogen():
- features['hasNitrogen'] = True
+ if atom.isNitrogen() and atom.lonePairs == 0:
+ features['hasNitrogenVal5'] = True
if atom.lonePairs > 0:
features['hasLonePairs'] = True
@@ -166,8 +173,6 @@ def generate_resonance_structures(mol, clar_structures=True, keep_isomorphic=Fal
"""
cython.declare(mol_list=list, new_mol_list=list, features=dict, method_list=list)
- logging.debug('Generating resonance structures for {0}...'.format(mol.toSMILES()))
-
# Check that mol is a valid structure in terms of atomTypes and net charge. Since SMILES with hypervalance
# heteroatoms are not always read correctly, print a suggestion to input the structure using an adjList.
try:
@@ -192,9 +197,9 @@ def generate_resonance_structures(mol, clar_structures=True, keep_isomorphic=Fal
# Analyze molecule
features = analyze_molecule(mol)
- # Use generate_aromatic_resonance_structures to check for false positives and negatives
+ # Use generate_optimal_aromatic_resonance_structures to check for false positives and negatives
if features['isAromatic'] or (features['isCyclic'] and features['isRadical'] and not features['isArylRadical']):
- new_mol_list = generate_aromatic_resonance_structures(mol, features)
+ new_mol_list = generate_optimal_aromatic_resonance_structures(mol, features)
if len(new_mol_list) == 0:
# Encountered false positive, ie. the molecule is not actually aromatic
features['isAromatic'] = False
@@ -203,60 +208,41 @@ def generate_resonance_structures(mol, clar_structures=True, keep_isomorphic=Fal
features['isAromatic'] = True
if len(new_mol_list[0].getAromaticRings()[0]) > 1:
features['isPolycyclicAromatic'] = True
- else:
- new_mol_list = []
+ for new_mol in new_mol_list:
+ # Append to structure list if unique
+ if not keep_isomorphic and mol.isIsomorphic(new_mol):
+ continue
+ elif keep_isomorphic and mol.isIdentical(new_mol):
+ continue
+ else:
+ mol_list.append(new_mol)
# Special handling for aromatic species
- if len(new_mol_list) > 0:
+ if features['isAromatic']:
if features['isRadical'] and not features['isArylRadical']:
- if features['isPolycyclicAromatic']:
- if clar_structures:
- _generate_resonance_structures(new_mol_list, [generate_kekule_structure], keep_isomorphic)
- _generate_resonance_structures(new_mol_list, [generate_allyl_delocalization_resonance_structures], keep_isomorphic)
- _generate_resonance_structures(new_mol_list, [generate_clar_structures], keep_isomorphic)
- # Remove non-aromatic structures under the assumption that they aren't important resonance contributors
- new_mol_list = [m for m in new_mol_list if m.isAromatic()]
- else:
- pass
- else:
- _generate_resonance_structures(new_mol_list, [generate_kekule_structure,
- generate_opposite_kekule_structure], keep_isomorphic)
- _generate_resonance_structures(new_mol_list, [generate_allyl_delocalization_resonance_structures], keep_isomorphic)
- elif features['isPolycyclicAromatic']:
- if clar_structures:
- _generate_resonance_structures(new_mol_list, [generate_clar_structures], keep_isomorphic)
- else:
- pass
+ _generate_resonance_structures(mol_list, [generate_kekule_structure],
+ keep_isomorphic=keep_isomorphic, filter_structures=filter_structures)
+ _generate_resonance_structures(mol_list, [generate_allyl_delocalization_resonance_structures],
+ keep_isomorphic=keep_isomorphic, filter_structures=filter_structures)
+ if features['isPolycyclicAromatic'] and clar_structures:
+ _generate_resonance_structures(mol_list, [generate_clar_structures],
+ keep_isomorphic=keep_isomorphic, filter_structures=filter_structures)
else:
- # The molecule is an aryl radical or stable mono-ring aromatic
- # In this case, generate the kekulized form
- _generate_resonance_structures(new_mol_list, [generate_kekule_structure,
- generate_opposite_kekule_structure], keep_isomorphic)
-
- # Check for isomorphism against the original molecule
- for i, new_mol in enumerate(new_mol_list):
- if not keep_isomorphic and mol.isIsomorphic(new_mol):
- # There will be at most one isomorphic molecule, since the new molecules have
- # already been checked against each other, so we can break after removing it
- del new_mol_list[i]
- break
- elif keep_isomorphic and mol.isIdentical(new_mol):
- del new_mol_list[i]
- break
- # Add the newly generated structures to the original list
- # This is not optimal, but is a temporary measure to ensure compatibility until other issues are fixed
- mol_list.extend(new_mol_list)
+ _generate_resonance_structures(mol_list, [generate_aromatic_resonance_structure],
+ keep_isomorphic=keep_isomorphic, filter_structures=filter_structures)
# Generate remaining resonance structures
method_list = populate_resonance_algorithms(features)
- _generate_resonance_structures(mol_list, method_list, keep_isomorphic)
+ _generate_resonance_structures(mol_list, method_list, keep_isomorphic=keep_isomorphic,
+ filter_structures=filter_structures)
if filter_structures:
- return filtration.filter_structures(mol_list)
+ return filtration.filter_structures(mol_list, features=features)
return mol_list
-def _generate_resonance_structures(mol_list, method_list, keep_isomorphic=False, copy=False):
+
+def _generate_resonance_structures(mol_list, method_list, keep_isomorphic=False, copy=False, filter_structures=True):
"""
Iteratively generate all resonance structures for a list of starting molecules using the specified methods.
@@ -276,20 +262,21 @@ def _generate_resonance_structures(mol_list, method_list, keep_isomorphic=False,
min_octet_deviation = min(filtration.get_octet_deviation_list(mol_list))
min_charge_span = min(filtration.get_charge_span_list(mol_list))
+
# Iterate over resonance structures
index = 0
while index < len(mol_list):
molecule = mol_list[index]
new_mol_list = []
- # On-the-fly filtration: Extend methods for molecule only if it is relatively close to the octet rule
- # (don't explore structures that will certainly be filtered out)
- # Sometimes rearranging the structure requires an additional higher charge span structure, so allow structures
- # with a +1 higher charge span compared to the minimum, e.g., [O-]S#S[N+]#N
+ # On-the-fly filtration: Extend methods only for molecule that don't deviate too much from the octet rule
+ # (a +2 distance from the minimal deviation is used, octet deviations per species are in increments of 2)
+ # Sometimes rearranging the structure requires an additional higher charge span structure, so allow
+ # structures with a +1 higher charge span compared to the minimum, e.g., [O-]S#S[N+]#N
+ # This is run by default even if filter_structures=False.
octet_deviation = filtration.get_octet_deviation(molecule)
charge_span = molecule.getChargeSpan()
- if octet_deviation <= min_octet_deviation and charge_span <= min_charge_span + 1:
- # logging.debug('Extending resonance structures for {0}...'.format(molecule.toSMILES()))
+ if octet_deviation <= min_octet_deviation + 2 and charge_span <= min_charge_span + 1:
for method in method_list:
new_mol_list.extend(method(molecule))
if octet_deviation < min_octet_deviation:
@@ -312,6 +299,13 @@ def _generate_resonance_structures(mol_list, method_list, keep_isomorphic=False,
# Move to the next resonance structure
index += 1
+ # check net charge
+ for mol in mol_list:
+ if mol.getNetCharge() != 0:
+ raise ResonanceError('Resonance generation gave a net charged molecule:\n{0}'
+ 'Ions are not yet supported in RMG.'.format(
+ mol.toAdjacencyList()))
+
return mol_list
@@ -335,7 +329,7 @@ def generate_allyl_delocalization_resonance_structures(mol):
atom3.incrementRadical()
bond12.incrementOrder()
bond23.decrementOrder()
- # Make a copy of isomer
+ # Make a copy of structure
structure = mol.copy(deep=True)
# Also copy the connectivity values, since they are the same
# for all resonance structures
@@ -360,9 +354,58 @@ def generate_allyl_delocalization_resonance_structures(mol):
return structures
-def generate_lone_pair_radical_resonance_structures(mol):
+def generate_lone_pair_multiple_bond_resonance_structures(mol):
"""
- Generate all of the resonance structures formed by lone electron pair - radical shifts.
+ Generate all of the resonance structures formed by lone electron pair - multiple bond shifts in 3-atom systems.
+ Examples: aniline (Nc1ccccc1), azide, [:NH2]C=[::O] <=> [NH2+]=C[:::O-]
+ (where ':' denotes a lone pair, '.' denotes a radical, '-' not in [] denotes a single bond, '-'/'+' denote charge)
+ """
+ cython.declare(structures=list, paths=list, index=cython.int, structure=Molecule)
+ cython.declare(atom=Atom, atom1=Atom, atom2=Atom, atom3=Atom, bond12=Bond, bond23=Bond)
+ cython.declare(v1=Vertex, v2=Vertex)
+
+ structures = []
+ for atom in mol.vertices:
+ if atom.lonePairs >= 1:
+ paths = pathfinder.find_lone_pair_multiple_bond_paths(atom)
+ for atom1, atom2, atom3, bond12, bond23 in paths:
+ # Adjust to (potentially) new resonance structure
+ atom1.decrementLonePairs()
+ atom3.incrementLonePairs()
+ bond12.incrementOrder()
+ bond23.decrementOrder()
+ atom1.updateCharge()
+ atom3.updateCharge()
+ # Make a copy of structure
+ structure = mol.copy(deep=True)
+ # Also copy the connectivity values, since they are the same
+ # for all resonance structures
+ for index in xrange(len(mol.vertices)):
+ v1 = mol.vertices[index]
+ v2 = structure.vertices[index]
+ v2.connectivity1 = v1.connectivity1
+ v2.connectivity2 = v1.connectivity2
+ v2.connectivity3 = v1.connectivity3
+ v2.sortingLabel = v1.sortingLabel
+ # Restore current structure
+ atom1.incrementLonePairs()
+ atom3.decrementLonePairs()
+ bond12.decrementOrder()
+ bond23.incrementOrder()
+ atom1.updateCharge()
+ atom3.updateCharge()
+ try:
+ structure.updateAtomTypes(logSpecies=False)
+ except AtomTypeError:
+ pass # Don't append resonance structure if it creates an undefined atomType
+ else:
+ structures.append(structure)
+ return structures
+
+
+def generate_adj_lone_pair_radical_resonance_structures(mol):
+ """
+ Generate all of the resonance structures formed by lone electron pair - radical shifts between adjacent atoms.
These resonance transformations do not involve changing bond orders.
NO2 example: O=[:N]-[::O.] <=> O=[N.+]-[:::O-]
(where ':' denotes a lone pair, '.' denotes a radical, '-' not in [] denotes a single bond, '-'/'+' denote charge)
@@ -374,7 +417,7 @@ def generate_lone_pair_radical_resonance_structures(mol):
structures = []
if mol.isRadical(): # Iterate over radicals in structure
for atom in mol.vertices:
- paths = pathfinder.find_lone_pair_radical_delocalization_paths(atom)
+ paths = pathfinder.find_adj_lone_pair_radical_delocalization_paths(atom)
for atom1, atom2 in paths:
# Adjust to (potentially) new resonance structure
atom1.decrementRadical()
@@ -410,9 +453,9 @@ def generate_lone_pair_radical_resonance_structures(mol):
return structures
-def generate_lone_pair_multiple_bond_resonance_structures(mol):
+def generate_adj_lone_pair_multiple_bond_resonance_structures(mol):
"""
- Generate all of the resonance structures formed by lone electron pair - multiple bond shifts.
+ Generate all of the resonance structures formed by lone electron pair - multiple bond shifts between adjacent atoms.
Example: [:NH]=[CH2] <=> [::NH-]-[CH2+]
(where ':' denotes a lone pair, '.' denotes a radical, '-' not in [] denotes a single bond, '-'/'+' denote charge)
Here atom1 refers to the N/S/O atom, atom 2 refers to the any R!H (atom2's lonePairs aren't affected)
@@ -424,7 +467,7 @@ def generate_lone_pair_multiple_bond_resonance_structures(mol):
structures = []
for atom in mol.vertices:
- paths = pathfinder.find_lone_pair_multiple_bond_delocalization_paths(atom)
+ paths = pathfinder.find_adj_lone_pair_multiple_bond_delocalization_paths(atom)
for atom1, atom2, bond12, direction in paths:
if direction == 1: # The direction the bond order
atom1.decrementLonePairs()
@@ -463,13 +506,13 @@ def generate_lone_pair_multiple_bond_resonance_structures(mol):
return structures
-def generate_lone_pair_radical_multiple_bond_resonance_structures(mol):
+def generate_adj_lone_pair_radical_multiple_bond_resonance_structures(mol):
"""
- Generate all of the resonance structures formed by lone electron pair - radical - multiple bond shifts.
+ Generate all of the resonance structures formed by lone electron pair - radical - multiple bond shifts between adjacent atoms.
Example: [:N.]=[CH2] <=> [::N]-[.CH2]
(where ':' denotes a lone pair, '.' denotes a radical, '-' not in [] denotes a single bond, '-'/'+' denote charge)
Here atom1 refers to the N/S/O atom, atom 2 refers to the any R!H (atom2's lonePairs aren't affected)
- This function is similar to generate_lone_pair_multiple_bond_resonance_structures() except for dealing with the
+ This function is similar to generate_adj_lone_pair_multiple_bond_resonance_structures() except for dealing with the
radical transformations.
(In direction 1 atom1 a lone pair, gains a radical, and atom2 looses a radical.
In direction 2 atom1 a lone pair, looses a radical, and atom2 gains a radical)
@@ -481,7 +524,7 @@ def generate_lone_pair_radical_multiple_bond_resonance_structures(mol):
structures = []
if mol.isRadical(): # Iterate over radicals in structure
for atom in mol.vertices:
- paths = pathfinder.find_lone_pair_radical_multiple_bond_delocalization_paths(atom)
+ paths = pathfinder.find_adj_lone_pair_radical_multiple_bond_delocalization_paths(atom)
for atom1, atom2, bond12, direction in paths:
if direction == 1: # The direction the bond order
atom1.decrementLonePairs()
@@ -528,54 +571,6 @@ def generate_lone_pair_radical_multiple_bond_resonance_structures(mol):
return structures
-def generate_N5ddc_N5tc_resonance_structures(mol):
- """
- Generate all of the resonance structures formed by shifts between N5ddc and N5tc.
- """
- cython.declare(structures=list, paths=list, index=cython.int, structure=Molecule)
- cython.declare(atom=Atom, atom1=Atom, atom2=Atom, atom3=Atom, bond12=Bond, bond23=Bond)
- cython.declare(v1=Vertex, v2=Vertex)
-
- structures = []
- for atom in mol.vertices:
- if atom.atomType.label in ['N5ddc','N5tc'] and atom.radicalElectrons == 0:
- paths = pathfinder.find_N5ddc_N5tc_delocalization_paths(atom)
- for atom1, atom2, atom3, bond12, bond23 in paths:
- atom2.decrementLonePairs()
- atom3.incrementLonePairs()
- bond12.incrementOrder()
- bond23.decrementOrder()
- atom1.updateCharge()
- atom2.updateCharge()
- atom3.updateCharge()
- # Make a copy of structure
- structure = mol.copy(deep=True)
- # Also copy the connectivity values, since they are the same
- # for all resonance structures
- for index in xrange(len(mol.vertices)):
- v1 = mol.vertices[index]
- v2 = structure.vertices[index]
- v2.connectivity1 = v1.connectivity1
- v2.connectivity2 = v1.connectivity2
- v2.connectivity3 = v1.connectivity3
- v2.sortingLabel = v1.sortingLabel
- # Restore current structure
- atom2.incrementLonePairs()
- atom3.decrementLonePairs()
- bond12.decrementOrder()
- bond23.incrementOrder()
- atom1.updateCharge()
- atom2.updateCharge()
- atom3.updateCharge()
- try:
- structure.updateAtomTypes(logSpecies=False)
- except AtomTypeError:
- pass # Don't append resonance structure if it creates an undefined atomType
- else:
- structures.append(structure)
- return structures
-
-
def generate_N5dc_radical_resonance_structures(mol):
"""
Generate all of the resonance structures formed by radical and lone pair shifts mediated by an N5dc atom.
@@ -622,53 +617,7 @@ def generate_N5dc_radical_resonance_structures(mol):
return structures
-def generate_N5dc_resonance_structures(mol):
- """
- Generate all of the resonance structures formed by double bond and lone pair shifts mediated by an N5dc atom.
- """
- cython.declare(structures=list, paths=list, index=cython.int, structure=Molecule)
- cython.declare(atom=Atom, atom2=Atom, atom3=Atom)
- cython.declare(v1=Vertex, v2=Vertex)
-
- structures = []
- for atom in mol.vertices:
- if atom.atomType.label == 'N5dc' and atom.radicalElectrons == 0 and len(atom.edges) == 3:
- paths = pathfinder.find_N5dc_delocalization_paths(atom)
- for atom2, atom3, bond12, bond13 in paths:
- bond12.decrementOrder()
- atom2.incrementLonePairs()
- atom3.decrementLonePairs()
- bond13.incrementOrder()
- atom2.updateCharge()
- atom3.updateCharge()
- # Make a copy of structure
- structure = mol.copy(deep=True)
- # Also copy the connectivity values, since they are the same
- # for all resonance structures
- for index in xrange(len(mol.vertices)):
- v1 = mol.vertices[index]
- v2 = structure.vertices[index]
- v2.connectivity1 = v1.connectivity1
- v2.connectivity2 = v1.connectivity2
- v2.connectivity3 = v1.connectivity3
- v2.sortingLabel = v1.sortingLabel
- # Restore current structure
- bond13.decrementOrder()
- atom3.incrementLonePairs()
- atom2.decrementLonePairs()
- bond12.incrementOrder()
- atom2.updateCharge()
- atom3.updateCharge()
- try:
- structure.updateAtomTypes(logSpecies=False)
- except AtomTypeError:
- pass # Don't append resonance structure if it creates an undefined atomType
- else:
- structures.append(structure)
- return structures
-
-
-def generate_aromatic_resonance_structures(mol, features=None):
+def generate_optimal_aromatic_resonance_structures(mol, features=None):
"""
Generate the aromatic form of the molecule. For radicals, generates the form with the most aromatic rings.
@@ -693,86 +642,47 @@ def generate_aromatic_resonance_structures(mol, features=None):
rings = molecule.getAllSimpleCyclesOfSize(6)
# Then determine which ones are aromatic
- aromaticBonds = molecule.getAromaticRings(rings)[1]
+ aromatic_bonds = molecule.getAromaticRings(rings)[1]
- # If the species is a radical, then there is a chance that the radical can be shifted
- # to a location that increases the number of perceived aromatic rings.
+ # Attempt to rearrange electrons to obtain a structure with the most aromatic rings
+ # Possible rearrangements include aryne resonance and allyl resonance
+ res_list = [generate_aryne_resonance_structures]
if features['isRadical'] and not features['isArylRadical']:
- if molecule.isAromatic():
- kekuleList = generate_kekule_structure(molecule)
- else:
- kekuleList = [molecule]
- _generate_resonance_structures(kekuleList, [generate_allyl_delocalization_resonance_structures])
+ res_list.append(generate_allyl_delocalization_resonance_structures)
+
+ if molecule.isAromatic():
+ kekule_list = generate_kekule_structure(molecule)
+ else:
+ kekule_list = [molecule]
+
+ _generate_resonance_structures(kekule_list, res_list)
- maxNum = 0
+ if len(kekule_list) > 1:
+ # We found additional structures, so we need to evaluate all of them
+ max_num = 0
mol_list = []
# Iterate through the adjacent resonance structures and keep the structures with the most aromatic rings
- for mol0 in kekuleList:
- aromaticBonds = mol0.getAromaticRings()[1]
- if len(aromaticBonds) > maxNum:
- maxNum = len(aromaticBonds)
- mol_list = [(mol0, aromaticBonds)]
- elif len(aromaticBonds) == maxNum:
- mol_list.append((mol0, aromaticBonds))
+ for mol0 in kekule_list:
+ aromatic_bonds = mol0.getAromaticRings()[1]
+ if len(aromatic_bonds) > max_num:
+ max_num = len(aromatic_bonds)
+ mol_list = [(mol0, aromatic_bonds)]
+ elif len(aromatic_bonds) == max_num:
+ mol_list.append((mol0, aromatic_bonds))
else:
# Otherwise, it is not possible to increase the number of aromatic rings by moving electrons,
# so go ahead with the inputted form of the molecule
- mol_list = [(molecule, aromaticBonds)]
+ mol_list = [(molecule, aromatic_bonds)]
new_mol_list = []
# Generate the aromatic resonance structure(s)
- for mol0, aromaticBonds in mol_list:
- if not aromaticBonds:
+ for mol0, aromatic_bonds in mol_list:
+ # Aromatize the molecule in place
+ success = generate_aromatic_resonance_structure(mol0, aromatic_bonds, copy=False)
+ if not success:
continue
- # Save original bond orders in case this doesn't work out
- originalBonds = []
- for ring in aromaticBonds:
- originalOrder = []
- for bond in ring:
- originalOrder.append(bond.order)
- originalBonds.append(originalOrder)
- # Change bond types to benzene bonds for all aromatic rings
- for ring in aromaticBonds:
- for bond in ring:
- bond.order = 1.5
-
- try:
- mol0.updateAtomTypes(logSpecies=False)
- except AtomTypeError:
- # If this didn't work the first time, then there might be a ring that is not actually aromatic
- # Reset our changes
- for ring, originalOrder in itertools.izip(aromaticBonds, originalBonds):
- for bond, order in itertools.izip(ring, originalOrder):
- bond.order = order
- # Try to make each ring aromatic, one by one
- i = 0
- counter = 0
- while i < len(aromaticBonds) and counter < 2*len(aromaticBonds):
- counter += 1
- originalOrder = []
- for bond in aromaticBonds[i]:
- originalOrder.append(bond.order)
- bond.order = 1.5
- try:
- mol0.updateAtomTypes(logSpecies=False)
- except AtomTypeError:
- # This ring could not be made aromatic, possibly because it depends on other rings
- # Undo changes
- for bond, order in itertools.izip(aromaticBonds[i], originalOrder):
- bond.order = order
- # Move it to the end of the list, and go on to the next ring
- aromaticBonds.append(aromaticBonds.pop(i))
- mol0.updateAtomTypes(logSpecies=False)
- continue
- else:
- # We're done with this ring, so go on to the next ring
- i += 1
- # If we didn't end up making any of the rings aromatic, then this molecule is not actually aromatic
- if i == 0:
- # Move onto next molecule in the list
- continue
for mol1 in new_mol_list:
if mol1.isIsomorphic(mol0):
@@ -782,6 +692,160 @@ def generate_aromatic_resonance_structures(mol, features=None):
return new_mol_list
+
+def generate_aromatic_resonance_structure(mol, aromatic_bonds=None, copy=True):
+ """
+ Generate the aromatic form of the molecule in place without considering other resonance.
+
+ Args:
+ mol: :class:`Molecule` object to modify
+ aromatic_bonds (optional): list of previously identified aromatic bonds
+ copy (optional): copy the molecule if ``True``, otherwise modify in place
+
+ Returns:
+ List of one molecule if successful, empty list otherwise
+ """
+ if copy:
+ molecule = mol.copy(deep=True)
+ else:
+ molecule = mol
+
+ if aromatic_bonds is None:
+ aromatic_bonds = molecule.getAromaticRings()[1]
+ if len(aromatic_bonds) == 0:
+ return []
+
+ # Save original bond orders in case this doesn't work out
+ original_bonds = []
+ for ring in aromatic_bonds:
+ original_order = []
+ for bond in ring:
+ original_order.append(bond.order)
+ original_bonds.append(original_order)
+ # Change bond types to benzene bonds for all aromatic rings
+ for ring in aromatic_bonds:
+ for bond in ring:
+ bond.order = 1.5
+
+ try:
+ molecule.updateAtomTypes(logSpecies=False)
+ except AtomTypeError:
+ # If this didn't work the first time, then there might be a ring that is not actually aromatic
+ # Reset our changes
+ for ring, original_order in itertools.izip(aromatic_bonds, original_bonds):
+ for bond, order in itertools.izip(ring, original_order):
+ bond.order = order
+ # Try to make each ring aromatic, one by one
+ i = 0 # Track how many rings are aromatic
+ counter = 0 # Track total number of attempts to avoid infinite loops
+ while i < len(aromatic_bonds) and counter < 2*len(aromatic_bonds):
+ counter += 1
+ original_order = []
+ for bond in aromatic_bonds[i]:
+ original_order.append(bond.order)
+ bond.order = 1.5
+ try:
+ molecule.updateAtomTypes(logSpecies=False)
+ except AtomTypeError:
+ # This ring could not be made aromatic, possibly because it depends on other rings
+ # Undo changes
+ for bond, order in itertools.izip(aromatic_bonds[i], original_order):
+ bond.order = order
+ # Move it to the end of the list, and go on to the next ring
+ aromatic_bonds.append(aromatic_bonds.pop(i))
+ molecule.updateAtomTypes(logSpecies=False)
+ continue
+ else:
+ # We're done with this ring, so go on to the next ring
+ i += 1
+ # If we didn't end up making any of the rings aromatic, then this molecule is not actually aromatic
+ if i == 0:
+ # Move onto next molecule in the list
+ return []
+
+ return [molecule]
+
+
+def generate_aryne_resonance_structures(mol):
+ """
+ Generate aryne resonance structures, including the cumulene and alkyne forms.
+
+ For all 6-membered rings, check for the following bond patterns:
+
+ - DDDSDS
+ - STSDSD
+
+ This does NOT cover all possible aryne resonance forms, only the simplest ones.
+ Especially for polycyclic arynes, enumeration of all resonance forms is
+ related to enumeration of all Kekule structures, which is very difficult.
+ """
+ cython.declare(rings=list, ring=list, new_mol_list=list, bond_list=list,
+ i=cython.int, j=cython.int, bond_orders=str, new_orders=str,
+ ind=cython.int, bond=Bond, new_mol=Molecule)
+
+ rings = mol.getRelevantCycles()
+ rings = [ring for ring in rings if len(ring) == 6]
+
+ new_mol_list = []
+ for ring in rings:
+ # Get bond orders
+ bond_list = mol.get_edges_in_cycle(ring)
+ bond_orders = ''.join([bond.getOrderStr() for bond in bond_list])
+ new_orders = None
+ # Check for expected bond patterns
+ if bond_orders.count('T') == 1:
+ # Reorder the list so the triple bond is first
+ ind = bond_orders.index('T')
+ bond_orders = bond_orders[ind:] + bond_orders[:ind]
+ bond_list = bond_list[ind:] + bond_list[:ind]
+ # Check for patterns
+ if bond_orders == 'TSDSDS':
+ new_orders = 'DDSDSD'
+ elif bond_orders.count('D') == 4:
+ # Search for DDD and reorder the list so that it comes first
+ if 'DDD' in bond_orders:
+ ind = bond_orders.index('DDD')
+ bond_orders = bond_orders[ind:] + bond_orders[:ind]
+ bond_list = bond_list[ind:] + bond_list[:ind]
+ elif bond_orders.startswith('DD') and bond_orders.endswith('D'):
+ bond_orders = bond_orders[-1:] + bond_orders[:-1]
+ bond_list = bond_list[-1:] + bond_list[:-1]
+ elif bond_orders.startswith('D') and bond_orders.endswith('DD'):
+ bond_orders = bond_orders[-2:] + bond_orders[:-2]
+ bond_list = bond_list[-2:] + bond_list[:-2]
+ # Check for patterns
+ if bond_orders == 'DDDSDS':
+ new_orders = 'STSDSD'
+
+ if new_orders is not None:
+ # We matched one of our patterns, so we can now change the bonds
+ for i, bond in enumerate(bond_list):
+ bond.setOrderStr(new_orders[i])
+ # Make a copy of the molecule
+ new_mol = mol.copy(deep=True)
+ # Also copy the connectivity values, since they are the same
+ # for all resonance structures
+ for i in xrange(len(mol.vertices)):
+ v1 = mol.vertices[i]
+ v2 = new_mol.vertices[i]
+ v2.connectivity1 = v1.connectivity1
+ v2.connectivity2 = v1.connectivity2
+ v2.connectivity3 = v1.connectivity3
+ v2.sortingLabel = v1.sortingLabel
+ # Undo the changes to the current molecule
+ for i, bond in enumerate(bond_list):
+ bond.setOrderStr(bond_orders[i])
+ # Try to update atom types
+ try:
+ new_mol.updateAtomTypes(logSpecies=False)
+ except AtomTypeError:
+ pass # Don't append resonance structure if it creates an undefined atomType
+ else:
+ new_mol_list.append(new_mol)
+
+ return new_mol_list
+
+
def generate_kekule_structure(mol):
"""
Generate a kekulized (single-double bond) form of the molecule.
@@ -807,48 +871,6 @@ def generate_kekule_structure(mol):
return [molecule]
-def generate_opposite_kekule_structure(mol):
- """
- Generate the Kekule structure with opposite single/double bond arrangement
- for single ring aromatics.
-
- Returns a single Kekule structure as an element of a list of length 1.
- """
-
- # This won't work with the aromatic form of the molecule
- if mol.isAromatic():
- return []
-
- molecule = mol.copy(deep=True)
-
- aromaticBonds = molecule.getAromaticRings()[1]
-
- # We can only do this for single ring aromatics for now
- if len(aromaticBonds) != 1:
- return []
-
- numS = 0
- numD = 0
- for bond in aromaticBonds[0]:
- if bond.isSingle():
- numS += 1
- bond.order = 2
- elif bond.isDouble():
- numD += 1
- bond.order = 1
- else:
- # Something is wrong: there is a bond that is not single or double
- return []
-
- if numS != 3 or numD != 3:
- return []
-
- try:
- molecule.updateAtomTypes()
- except AtomTypeError:
- return []
- else:
- return [molecule]
def generate_isomorphic_resonance_structures(mol, saturate_h=False):
"""
@@ -881,11 +903,11 @@ def generate_isomorphic_resonance_structures(mol, saturate_h=False):
while index < len(isomers):
isomer = isomers[index]
- newIsomers = []
+ new_isomers = []
for algo in populate_resonance_algorithms():
- newIsomers.extend(algo(isomer))
+ new_isomers.extend(algo(isomer))
- for newIsomer in newIsomers:
+ for newIsomer in new_isomers:
# Append to isomer list if unique
for isom in isomers:
if isom.copy(deep=True).isIsomorphic(newIsomer.copy(deep=True)):
@@ -928,13 +950,13 @@ def generate_clar_structures(mol):
mol_list = []
- for new_mol, aromaticRings, bonds, solution in output:
+ for new_mol, aromatic_rings, bonds, solution in output:
# The solution includes a part corresponding to rings, y, and a part corresponding to bonds, x, using
# nomenclature from the paper. In y, 1 means the ring as a sextet, 0 means it does not.
# In x, 1 corresponds to a double bond, 0 either means a single bond or the bond is part of a sextet.
- y = solution[0:len(aromaticRings)]
- x = solution[len(aromaticRings):]
+ y = solution[0:len(aromatic_rings)]
+ x = solution[len(aromatic_rings):]
# Apply results to molecule - double bond locations first
for index, bond in enumerate(bonds):
@@ -946,7 +968,7 @@ def generate_clar_structures(mol):
raise ValueError('Unaccepted bond value {0} obtained from optimization.'.format(x[index]))
# Then apply locations of aromatic sextets by converting to benzene bonds
- for index, ring in enumerate(aromaticRings):
+ for index, ring in enumerate(aromatic_rings):
if y[index] == 1:
_clar_transformation(new_mol, ring)
@@ -960,7 +982,7 @@ def generate_clar_structures(mol):
return mol_list
-def _clar_optimization(mol, constraints=None, maxNum=None):
+def _clar_optimization(mol, constraints=None, max_num=None):
"""
Implements linear programming algorithm for finding Clar structures. This algorithm maximizes the number
of Clar sextets within the constraints of molecular geometry and atom valency.
@@ -990,15 +1012,15 @@ def _clar_optimization(mol, constraints=None, maxNum=None):
# Make a copy of the molecule so we don't destroy the original
molecule = mol.copy(deep=True)
- aromaticRings = molecule.getAromaticRings()[0]
- aromaticRings.sort(key=lambda x: sum([atom.id for atom in x]))
+ aromatic_rings = molecule.getAromaticRings()[0]
+ aromatic_rings.sort(key=lambda x: sum([atom.id for atom in x]))
- if not aromaticRings:
+ if not aromatic_rings:
return []
# Get list of atoms that are in rings
atoms = set()
- for ring in aromaticRings:
+ for ring in aromatic_rings:
atoms.update(ring)
atoms = sorted(atoms, key=lambda x: x.id)
@@ -1020,7 +1042,7 @@ def _clar_optimization(mol, constraints=None, maxNum=None):
exo.append(None)
# Dimensions
- l = len(aromaticRings)
+ l = len(aromatic_rings)
m = len(atoms)
n = l + len(bonds)
@@ -1028,9 +1050,9 @@ def _clar_optimization(mol, constraints=None, maxNum=None):
# Part of equality constraint Ax=b
a = []
for atom in atoms:
- inRing = [1 if atom in ring else 0 for ring in aromaticRings]
- inBond = [1 if atom in [bond.atom1, bond.atom2] else 0 for bond in bonds]
- a.append(inRing + inBond)
+ in_ring = [1 if atom in ring else 0 for ring in aromatic_rings]
+ in_bond = [1 if atom in [bond.atom1, bond.atom2] else 0 for bond in bonds]
+ a.append(in_ring + in_bond)
# Objective vector for optimization: sextets have a weight of 1, double bonds have a weight of 0
objective = [1] * l + [0] * len(bonds)
@@ -1066,7 +1088,7 @@ def _clar_optimization(mol, constraints=None, maxNum=None):
raise e
status = lpsolve('solve', lp)
- objVal, solution = lpsolve('get_solution', lp)[0:2]
+ obj_val, solution = lpsolve('get_solution', lp)[0:2]
lpsolve('delete_lp', lp) # Delete the LP problem to clear up memory
# Reset signal handling since lpsolve changed it
@@ -1081,13 +1103,13 @@ def _clar_optimization(mol, constraints=None, maxNum=None):
raise ILPSolutionError('Optimization could not find a valid solution.')
# Check that we the result contains at least one aromatic sextet
- if objVal == 0:
+ if obj_val == 0:
return []
# Check that the solution contains the maximum number of sextets possible
- if maxNum is None:
- maxNum = objVal # This is the first solution, so the result should be an upper limit
- elif objVal < maxNum:
+ if max_num is None:
+ max_num = obj_val # This is the first solution, so the result should be an upper limit
+ elif obj_val < max_num:
raise ILPSolutionError('Optimization obtained a sub-optimal solution.')
if any([x != 1 and x != 0 for x in solution]):
@@ -1104,14 +1126,14 @@ def _clar_optimization(mol, constraints=None, maxNum=None):
# Run optimization with additional constraints
try:
- innerSolutions = _clar_optimization(mol, constraints=constraints, maxNum=maxNum)
+ inner_solutions = _clar_optimization(mol, constraints=constraints, max_num=max_num)
except ILPSolutionError:
- innerSolutions = []
+ inner_solutions = []
- return innerSolutions + [(molecule, aromaticRings, bonds, solution)]
+ return inner_solutions + [(molecule, aromatic_rings, bonds, solution)]
-def _clar_transformation(mol, aromaticRing):
+def _clar_transformation(mol, aromatic_ring):
"""
Performs Clar transformation for given ring in a molecule, ie. conversion to aromatic sextet.
@@ -1123,12 +1145,12 @@ def _clar_transformation(mol, aromaticRing):
"""
cython.declare(bondList=list, i=cython.int, atom1=Atom, atom2=Atom, bond=Bond)
- bondList = []
+ bond_list = []
- for i, atom1 in enumerate(aromaticRing):
- for atom2 in aromaticRing[i + 1:]:
+ for i, atom1 in enumerate(aromatic_ring):
+ for atom2 in aromatic_ring[i + 1:]:
if mol.hasBond(atom1, atom2):
- bondList.append(mol.getBond(atom1, atom2))
+ bond_list.append(mol.getBond(atom1, atom2))
- for bond in bondList:
+ for bond in bond_list:
bond.order = 1.5
diff --git a/rmgpy/molecule/resonanceTest.py b/rmgpy/molecule/resonanceTest.py
index 55f8cc1f93..6135197f83 100644
--- a/rmgpy/molecule/resonanceTest.py
+++ b/rmgpy/molecule/resonanceTest.py
@@ -60,7 +60,7 @@ def testOxime(self):
def testRingAllylShift(self):
"""Test allyl shift for a cyclic species with heteroatoms"""
molList = generate_resonance_structures(Molecule(SMILES="[CH]1C=NC=N1"))
- self.assertEqual(len(molList), 3)
+ self.assertEqual(len(molList), 5)
def testCarbeneAllylShift(self):
"""Test allyl shift for a carbene species"""
@@ -144,8 +144,7 @@ def testAzide(self):
"""Test resonance structure generation for ethyl azide
Simple case for N5ddc <=> N5tc resonance
- Azides are described by three resonance structures: N=[N+]=[N-] <=> [NH-][N+]#N <=> [NH+]#[N+][N-2]
- However, since the third does not contribute to reactivity and has a higher charge span, it is filtered out"""
+ Azides are described by three resonance structures: N=[N+]=[N-] <=> [NH-][N+]#N <=> [NH+]#[N+][N-2]"""
molList = generate_resonance_structures(Molecule(SMILES="CCN=[N+]=[N-]"))
self.assertEqual(len(molList), 2)
self.assertTrue(all([any([atom.charge != 0 for atom in mol.vertices]) for mol in molList]))
@@ -210,11 +209,7 @@ def testN5dc(self):
mol = Molecule(SMILES="N[N+]([O-])=O")
mol_list = generate_resonance_structures(mol, keep_isomorphic=True)
self.assertEqual(len(mol_list), 2)
- isomorphic_counter = 0
- for mol1 in mol_list:
- if mol1.isIsomorphic(mol):
- isomorphic_counter += 1
- self.assertEquals(isomorphic_counter, 2)
+ self.assertTrue(mol_list[0].isIsomorphic(mol_list[1]))
def testStyryl1(self):
"""Test resonance structure generation for styryl, with radical on branch
@@ -228,7 +223,7 @@ def testStyryl2(self):
In this case, the radical can be delocalized into the aromatic ring"""
molList = generate_resonance_structures(Molecule(SMILES="C=C=C1C=C[CH]C=C1"))
- self.assertEqual(len(molList), 4)
+ self.assertEqual(len(molList), 3)
def testNaphthyl(self):
"""Test resonance structure generation for naphthyl radical
@@ -261,10 +256,12 @@ def testMethylPhenanthreneRadical(self):
def testAromaticWithLonePairResonance(self):
"""Test resonance structure generation for aromatic species with lone pair <=> radical resonance"""
molList = generate_resonance_structures(Molecule(SMILES="c1ccccc1CC=N[O]"))
- self.assertEqual(len(molList), 6)
+ self.assertEqual(len(molList), 4)
+ @work_in_progress
def testAromaticWithNResonance(self):
"""Test resonance structure generation for aromatic species with N5ddc <=> N5tc resonance"""
+ # WIP: currently generate_N5dc_resonance_structures does not apply for aromatic structures
molList = generate_resonance_structures(Molecule(SMILES="c1ccccc1CCN=[N+]=[N-]"))
self.assertEqual(len(molList), 4)
# TODO: this test cannot be run because RDKit (which checks for aromaticity) cannot process hyper-valence N
@@ -348,14 +345,52 @@ def test_C10H12_aro(self):
"""Test cyclopropylmethyl benzene, aromatic SMILES"""
mol = Molecule(SMILES="C1CC1c1c(C)cccc1")
molList = generate_resonance_structures(mol)
- self.assertEqual(len(molList), 3)
+ self.assertEqual(len(molList), 2)
def test_C9H10_aro_2(self):
"""Test cyclopropyl benzene, generate aromatic resonance isomers"""
mol = Molecule(SMILES="C1CC1c1ccccc1")
- molList = generate_aromatic_resonance_structures(mol)
+ molList = generate_optimal_aromatic_resonance_structures(mol)
self.assertEqual(len(molList), 1)
+ def test_aryne_1_ring(self):
+ """Test aryne resonance for benzyne"""
+ mol1 = Molecule(SMILES="C1=CC=C=C=C1")
+ mol2 = Molecule(SMILES="C1C#CC=CC=1")
+
+ mol_list1 = generate_resonance_structures(mol1)
+ self.assertEqual(len(mol_list1), 2)
+
+ mol_list2 = generate_resonance_structures(mol2)
+ self.assertEqual(len(mol_list2), 2)
+
+ self.assertTrue(mol_list1[1].isIsomorphic(mol2))
+ self.assertTrue(mol_list2[1].isIsomorphic(mol1))
+
+ def test_aryne_2_rings(self):
+ """Test aryne resonance in naphthyne"""
+ mol1 = Molecule(SMILES="C12=CC=C=C=C1C=CC=C2")
+ mol2 = Molecule(SMILES="C12C#CC=CC=1C=CC=C2")
+
+ mol_list1 = generate_resonance_structures(mol1)
+ self.assertEqual(len(mol_list1), 2)
+ self.assertEqual(sum(1 for mol in mol_list1 if mol.reactive), 2)
+
+ mol_list2 = generate_resonance_structures(mol2)
+ self.assertEqual(len(mol_list2), 3)
+ self.assertEqual(sum(1 for mol in mol_list2 if mol.reactive), 2)
+
+ # Check that they both have an aromatic resonance form
+ self.assertTrue(mol_list1[1].isIsomorphic(mol_list2[0]))
+
+ def test_aryne_3_rings(self):
+ """Test aryne resonance in phenanthryne"""
+ mol = Molecule(SMILES="C12C#CC=CC=1C=CC3=C2C=CC=C3")
+
+ mol_list = generate_resonance_structures(mol)
+ self.assertEqual(len(mol_list), 5)
+ self.assertEqual(sum(1 for mol in mol_list if mol.reactive), 4)
+
def testFusedAromatic1(self):
"""Test we can make aromatic perylene from both adjlist and SMILES"""
perylene = Molecule().fromAdjacencyList("""
@@ -393,7 +428,7 @@ def testFusedAromatic1(self):
32 H u0 p0 c0 {16,S}
""")
perylene2 = Molecule().fromSMILES('c1cc2cccc3c4cccc5cccc(c(c1)c23)c54')
- for isomer in generate_aromatic_resonance_structures(perylene2):
+ for isomer in generate_optimal_aromatic_resonance_structures(perylene2):
if perylene.isIsomorphic(isomer):
break
else: # didn't break
@@ -425,7 +460,7 @@ def testFusedAromatic2(self):
18 H u0 p0 c0 {6,S}
""")
naphthalene2 = Molecule().fromSMILES('C1=CC=C2C=CC=CC2=C1')
- for isomer in generate_aromatic_resonance_structures(naphthalene2):
+ for isomer in generate_optimal_aromatic_resonance_structures(naphthalene2):
if naphthalene.isIsomorphic(isomer):
break
else: # didn't break
@@ -435,7 +470,7 @@ def testFusedAromatic2(self):
))
def testAromaticResonanceStructures(self):
- """Test that generate_aromatic_resonance_structures gives consistent output
+ """Test that generate_optimal_aromatic_resonance_structures gives consistent output
Check that we get the same resonance structure regardless of which structure we start with"""
# Kekulized form, radical on methyl
@@ -528,9 +563,9 @@ def testAromaticResonanceStructures(self):
25 H u0 p0 c0 {15,S}
26 H u0 p0 c0 {15,S}
""")
- result1 = generate_aromatic_resonance_structures(struct1)
- result2 = generate_aromatic_resonance_structures(struct2)
- result3 = generate_aromatic_resonance_structures(struct3)
+ result1 = generate_optimal_aromatic_resonance_structures(struct1)
+ result2 = generate_optimal_aromatic_resonance_structures(struct2)
+ result3 = generate_optimal_aromatic_resonance_structures(struct3)
self.assertEqual(len(result1), 1)
self.assertEqual(len(result2), 1)
@@ -567,7 +602,7 @@ def testBridgedAromatic(self):
out = generate_resonance_structures(mol)
self.assertEqual(len(out), 3)
- self.assertTrue(arom.isIsomorphic(out[1]))
+ self.assertTrue(arom.isIsomorphic(out[0]))
def testPolycyclicAromaticWithNonAromaticRing(self):
"""Test that we can make aromatic resonance structures when there is a pseudo-aromatic ring.
@@ -599,7 +634,7 @@ def testPolycyclicAromaticWithNonAromaticRing(self):
out = generate_resonance_structures(mol)
self.assertEqual(len(out), 2)
- self.assertTrue(arom.isIsomorphic(out[1]))
+ self.assertTrue(arom.isIsomorphic(out[0]))
def testPolycyclicAromaticWithNonAromaticRing2(self):
"""Test that we can make aromatic resonance structures when there is a pseudo-aromatic ring.
@@ -653,7 +688,7 @@ def testPolycyclicAromaticWithNonAromaticRing2(self):
out = generate_resonance_structures(mol)
self.assertEqual(len(out), 4)
- self.assertTrue(arom.isIsomorphic(out[1]))
+ self.assertTrue(arom.isIsomorphic(out[0]))
def testKekulizeBenzene(self):
"""Test that we can kekulize benzene."""
@@ -960,85 +995,6 @@ def testKekulizeBridgedAromatic(self):
self.assertEqual(dBonds, 5)
- def testKekulizeResonanceIsomer(self):
- """
- Tests that an aromatic molecule returns at least one Kekulized resonance isomer.
-
- A molecule formed using an aromatic adjacency list returns both
- the aromatic and a kekulized form as resonance isomers.
- """
- toluene = Molecule().fromAdjacencyList("""
-1 H 0 {2,S}
-2 C 0 {3,S} {9,S} {10,S} {1,S}
-3 C 0 {4,B} {8,B} {2,S}
-4 C 0 {3,B} {5,B} {11,S}
-5 C 0 {4,B} {6,B} {12,S}
-6 C 0 {5,B} {7,B} {13,S}
-7 C 0 {6,B} {8,B} {14,S}
-8 C 0 {3,B} {7,B} {15,S}
-9 H 0 {2,S}
-10 H 0 {2,S}
-11 H 0 {4,S}
-12 H 0 {5,S}
-13 H 0 {6,S}
-14 H 0 {7,S}
-15 H 0 {8,S}""")
-
- toluene_kekulized = Molecule().fromAdjacencyList("""
-1 C u0 p0 c0 {2,D} {6,S} {7,S}
-2 C u0 p0 c0 {1,D} {3,S} {8,S}
-3 C u0 p0 c0 {2,S} {4,D} {9,S}
-4 C u0 p0 c0 {3,D} {5,S} {10,S}
-5 C u0 p0 c0 {4,S} {6,D} {11,S}
-6 C u0 p0 c0 {1,S} {5,D} {12,S}
-7 C u0 p0 c0 {1,S} {13,S} {14,S} {15,S}
-8 H u0 p0 c0 {2,S}
-9 H u0 p0 c0 {3,S}
-10 H u0 p0 c0 {4,S}
-11 H u0 p0 c0 {5,S}
-12 H u0 p0 c0 {6,S}
-13 H u0 p0 c0 {7,S}
-14 H u0 p0 c0 {7,S}
-15 H u0 p0 c0 {7,S}
-""")
- kekulized_isomer = generate_kekule_structure(toluene)[0]
- self.assertTrue(kekulized_isomer.isIsomorphic(toluene_kekulized))
-
- for isomer in generate_resonance_structures(toluene):
- if isomer.isIsomorphic(toluene_kekulized):
- break
- else: # didn't brake
- self.assertTrue(False, "Didn't find the Kekulized toulene in the result of getResonanceIsomers()")
-
- def testMultipleKekulizedResonanceIsomers(self):
- """Test we can make both Kekule structures of o-cresol"""
-
- adjlist_aromatic = """
-1 C u0 p0 c0 {2,S} {9,S} {10,S} {11,S}
-2 C u0 p0 c0 {1,S} {3,B} {4,B}
-3 C u0 p0 c0 {2,B} {5,B} {8,S}
-4 C u0 p0 c0 {2,B} {7,B} {15,S}
-5 C u0 p0 c0 {3,B} {6,B} {12,S}
-6 C u0 p0 c0 {5,B} {7,B} {13,S}
-7 C u0 p0 c0 {4,B} {6,B} {14,S}
-8 O u0 p2 c0 {3,S} {16,S}
-9 H u0 p0 c0 {1,S}
-10 H u0 p0 c0 {1,S}
-11 H u0 p0 c0 {1,S}
-12 H u0 p0 c0 {5,S}
-13 H u0 p0 c0 {6,S}
-14 H u0 p0 c0 {7,S}
-15 H u0 p0 c0 {4,S}
-16 H u0 p0 c0 {8,S}
-"""
- molecule = Molecule().fromAdjacencyList(adjlist_aromatic)
- self.assertTrue(molecule.isAromatic(), "Starting molecule should be aromatic")
- isomers = generate_resonance_structures(molecule)
- self.assertEqual(len(isomers), 3, "Didn't generate 3 resonance isomers")
- self.assertFalse(isomers[1].isAromatic(), "Second resonance isomer shouldn't be aromatic")
- self.assertFalse(isomers[2].isAromatic(), "Third resonance isomer shouldn't be aromatic")
- self.assertFalse(isomers[1].isIsomorphic(isomers[2]), "Second and third resonance isomers should be different")
-
def testMultipleKekulizedResonanceIsomersRad(self):
"""Test we can make all resonance structures of o-cresol radical"""
@@ -1062,174 +1018,13 @@ def testMultipleKekulizedResonanceIsomersRad(self):
molecule = Molecule().fromAdjacencyList(adjlist_aromatic)
self.assertTrue(molecule.isAromatic(), "Starting molecule should be aromatic")
molList = generate_resonance_structures(molecule)
- self.assertEqual(len(molList), 6, "Expected 6 resonance structures, but generated {0}.".format(len(molList)))
+ self.assertEqual(len(molList), 4, "Expected 4 resonance structures, but generated {0}.".format(len(molList)))
aromatic = 0
for mol in molList:
if mol.isAromatic():
aromatic += 1
self.assertEqual(aromatic, 1, "Should only have 1 aromatic resonance structure")
- @work_in_progress
- def testKekulizedResonanceIsomersFused(self):
- """Test we can make aromatic and Kekulized resonance isomers of 2-methylanthracen-1-ol
-
- This fused ring PAH will be harder"""
-
- kekulized1 = """multiplicity 1
-1 C u0 p0 c0 {2,S} {17,S} {18,S} {19,S}
-2 C u0 p0 c0 {1,S} {7,S} {10,D}
-3 C u0 p0 c0 {4,S} {7,D} {9,S}
-4 C u0 p0 c0 {3,S} {8,S} {11,D}
-5 C u0 p0 c0 {6,S} {8,D} {12,S}
-6 C u0 p0 c0 {5,S} {9,D} {13,S}
-7 C u0 p0 c0 {2,S} {3,D} {16,S}
-8 C u0 p0 c0 {4,S} {5,D} {22,S}
-9 C u0 p0 c0 {3,S} {6,D} {27,S}
-10 C u0 p0 c0 {2,D} {11,S} {20,S}
-11 C u0 p0 c0 {4,D} {10,S} {21,S}
-12 C u0 p0 c0 {5,S} {14,D} {23,S}
-13 C u0 p0 c0 {6,S} {15,D} {26,S}
-14 C u0 p0 c0 {12,D} {15,S} {24,S}
-15 C u0 p0 c0 {13,D} {14,S} {25,S}
-16 O u0 p2 c0 {7,S} {28,S}
-17 H u0 p0 c0 {1,S}
-18 H u0 p0 c0 {1,S}
-19 H u0 p0 c0 {1,S}
-20 H u0 p0 c0 {10,S}
-21 H u0 p0 c0 {11,S}
-22 H u0 p0 c0 {8,S}
-23 H u0 p0 c0 {12,S}
-24 H u0 p0 c0 {14,S}
-25 H u0 p0 c0 {15,S}
-26 H u0 p0 c0 {13,S}
-27 H u0 p0 c0 {9,S}
-28 H u0 p0 c0 {16,S}
-"""
- kekulized2 = """multiplicity 1
-1 C u0 p0 c0 {2,S} {17,S} {18,S} {19,S}
-2 C u0 p0 c0 {1,S} {7,D} {10,S}
-3 C u0 p0 c0 {4,S} {7,S} {9,D}
-4 C u0 p0 c0 {3,S} {8,D} {11,S}
-5 C u0 p0 c0 {6,S} {8,S} {12,D}
-6 C u0 p0 c0 {5,S} {9,S} {13,D}
-7 C u0 p0 c0 {2,D} {3,S} {16,S}
-8 C u0 p0 c0 {4,D} {5,S} {22,S}
-9 C u0 p0 c0 {3,D} {6,S} {27,S}
-10 C u0 p0 c0 {2,S} {11,D} {20,S}
-11 C u0 p0 c0 {4,S} {10,D} {21,S}
-12 C u0 p0 c0 {5,D} {14,S} {23,S}
-13 C u0 p0 c0 {6,D} {15,S} {26,S}
-14 C u0 p0 c0 {12,S} {15,D} {24,S}
-15 C u0 p0 c0 {13,S} {14,D} {25,S}
-16 O u0 p2 c0 {7,S} {28,S}
-17 H u0 p0 c0 {1,S}
-18 H u0 p0 c0 {1,S}
-19 H u0 p0 c0 {1,S}
-20 H u0 p0 c0 {10,S}
-21 H u0 p0 c0 {11,S}
-22 H u0 p0 c0 {8,S}
-23 H u0 p0 c0 {12,S}
-24 H u0 p0 c0 {14,S}
-25 H u0 p0 c0 {15,S}
-26 H u0 p0 c0 {13,S}
-27 H u0 p0 c0 {9,S}
-28 H u0 p0 c0 {16,S}
-"""
- kekulized3 = """multiplicity 1
-1 C u0 p0 c0 {2,S} {17,S} {18,S} {19,S}
-2 C u0 p0 c0 {1,S} {7,D} {10,S}
-3 C u0 p0 c0 {4,S} {7,S} {9,D}
-4 C u0 p0 c0 {3,S} {8,D} {11,S}
-5 C u0 p0 c0 {6,D} {8,S} {12,S}
-6 C u0 p0 c0 {5,D} {9,S} {13,S}
-7 C u0 p0 c0 {2,D} {3,S} {16,S}
-8 C u0 p0 c0 {4,D} {5,S} {20,S}
-9 C u0 p0 c0 {3,D} {6,S} {21,S}
-10 C u0 p0 c0 {2,S} {11,D} {22,S}
-11 C u0 p0 c0 {4,S} {10,D} {23,S}
-12 C u0 p0 c0 {5,S} {14,D} {24,S}
-13 C u0 p0 c0 {6,S} {15,D} {25,S}
-14 C u0 p0 c0 {12,D} {15,S} {26,S}
-15 C u0 p0 c0 {13,D} {14,S} {27,S}
-16 O u0 p2 c0 {7,S} {28,S}
-17 H u0 p0 c0 {1,S}
-18 H u0 p0 c0 {1,S}
-19 H u0 p0 c0 {1,S}
-20 H u0 p0 c0 {8,S}
-21 H u0 p0 c0 {9,S}
-22 H u0 p0 c0 {10,S}
-23 H u0 p0 c0 {11,S}
-24 H u0 p0 c0 {12,S}
-25 H u0 p0 c0 {13,S}
-26 H u0 p0 c0 {14,S}
-27 H u0 p0 c0 {15,S}
-28 H u0 p0 c0 {16,S}
-"""
- kekulized4 = """multiplicity 1
-1 C u0 p0 c0 {2,S} {17,S} {18,S} {19,S}
-2 C u0 p0 c0 {1,S} {7,D} {10,S}
-3 C u0 p0 c0 {4,D} {7,S} {9,S}
-4 C u0 p0 c0 {3,D} {8,S} {11,S}
-5 C u0 p0 c0 {6,S} {8,D} {12,S}
-6 C u0 p0 c0 {5,S} {9,D} {13,S}
-7 C u0 p0 c0 {2,D} {3,S} {16,S}
-8 C u0 p0 c0 {4,S} {5,D} {20,S}
-9 C u0 p0 c0 {3,S} {6,D} {21,S}
-10 C u0 p0 c0 {2,S} {11,D} {22,S}
-11 C u0 p0 c0 {4,S} {10,D} {23,S}
-12 C u0 p0 c0 {5,S} {14,D} {24,S}
-13 C u0 p0 c0 {6,S} {15,D} {25,S}
-14 C u0 p0 c0 {12,D} {15,S} {26,S}
-15 C u0 p0 c0 {13,D} {14,S} {27,S}
-16 O u0 p2 c0 {7,S} {28,S}
-17 H u0 p0 c0 {1,S}
-18 H u0 p0 c0 {1,S}
-19 H u0 p0 c0 {1,S}
-20 H u0 p0 c0 {8,S}
-21 H u0 p0 c0 {9,S}
-22 H u0 p0 c0 {10,S}
-23 H u0 p0 c0 {11,S}
-24 H u0 p0 c0 {12,S}
-25 H u0 p0 c0 {13,S}
-26 H u0 p0 c0 {14,S}
-27 H u0 p0 c0 {15,S}
-28 H u0 p0 c0 {16,S}
-"""
- m1 = Molecule().fromAdjacencyList(kekulized1)
- m2 = Molecule().fromAdjacencyList(kekulized2)
- m3 = Molecule().fromAdjacencyList(kekulized3)
- m4 = Molecule().fromAdjacencyList(kekulized4)
- resonance_forms = (m1, m2, m3, m4)
-
- for starting in resonance_forms:
- self.assertFalse(starting.isAromatic(), "Starting molecule should not be aromatic")
-
- isomers = generate_resonance_structures(starting)
- # print "starting with {0!r} I generated these:".format(starting)
- # print repr(isomers)
- for isomer in isomers:
- if isomer.isAromatic():
- break
- else: # didn't break
- self.fail("None of the generated resonance isomers {0!r} are aromatic".format(isomers))
-
- for generated in isomers:
- for expected in resonance_forms:
- if generated.isIsomorphic(expected):
- break
- else: # didn't break
- if generated.isAromatic():
- continue # because the aromatic isomer isn't in our resonance_forms list
- self.fail("Generated a resonance form {0!r} that was not expected!\n{1}\nAlthough that may be a bug in the unit test (not sure I got them all)".format(generated, generated.toAdjacencyList()))
-
- for expected in resonance_forms:
- for generated in isomers:
- if expected.isIsomorphic(generated):
- break
- else: # didn't break
- self.fail(("Expected a resonance form {0!r} that was not generated.\n"
- "Only generated these:\n{1}").format(expected, '\n'.join([repr(g) for g in isomers])))
-
def testKeepIsomorphicStructuresFunctionsWhenTrue(self):
"""Test that keep_isomorphic works for resonance structure generation when True."""
mol = Molecule(SMILES='C=C[CH2]')
@@ -1275,7 +1070,7 @@ def testFalseNegativeAromaticityPerception(self):
18 H u0 p0 c0 {9,S}
""")
- self.assertEqual(len(out), 5)
+ self.assertEqual(len(out), 4)
self.assertTrue(any([m.isIsomorphic(aromatic) for m in out]))
def testFalseNegativePolycyclicAromaticityPerception(self):
diff --git a/rmgpy/molecule/symmetry.pxd b/rmgpy/molecule/symmetry.pxd
index 6a3b896ff6..efec26b090 100644
--- a/rmgpy/molecule/symmetry.pxd
+++ b/rmgpy/molecule/symmetry.pxd
@@ -37,4 +37,6 @@ cpdef float calculateAxisSymmetryNumber(Molecule molecule) except -1
cpdef float calculateCyclicSymmetryNumber(Molecule molecule) except -1
+cpdef bint _indistinguishable(Atom atom1, Atom atom2) except -2
+
cpdef float calculateSymmetryNumber(Molecule molecule) except -1
diff --git a/rmgpy/molecule/symmetry.py b/rmgpy/molecule/symmetry.py
index 7e25551284..b3beda2190 100644
--- a/rmgpy/molecule/symmetry.py
+++ b/rmgpy/molecule/symmetry.py
@@ -109,6 +109,9 @@ def calculateAtomSymmetryNumber(molecule, atom):
if count == [3]: symmetryNumber *= 6
elif count == [2, 1]: symmetryNumber *= 2
elif count == [1, 1, 1]: symmetryNumber *= 1
+ elif single == 1:
+ if count == [2, 1]: symmetryNumber *= 2
+ elif count == [1, 1, 1]: symmetryNumber *= 1
elif atom.radicalElectrons == 2:
if single == 2:
# Two single bonds
@@ -241,10 +244,6 @@ def calculateAxisSymmetryNumber(molecule):
# For each set of adjacent double bonds, check for axis symmetry
for bonds in cumulatedBonds:
-
- # Do nothing if less than two cumulated bonds
- if len(bonds) < 1: continue
-
# Do nothing if axis is in cycle
found = False
for atom1, atom2 in bonds:
@@ -344,10 +343,6 @@ def calculateCyclicSymmetryNumber(molecule):
Get the symmetry number correction for cyclic regions of a molecule.
For complicated fused rings the smallest set of smallest rings is used.
"""
- from rmgpy.molecule.vf2 import VF2
- # setup isomorphism checker
- vf2 = VF2(molecule, molecule)
-
symmetryNumber = 1
# for polycyclics, We should be getting the largest ring, not the smallest
@@ -370,7 +365,7 @@ def calculateCyclicSymmetryNumber(molecule):
starting_index = 0
while all_the_same and starting_index < size / 2:
for atom_index in range(num_rotations,size,num_rotations):
- if not vf2.feasible(ring[starting_index],ring[(starting_index + atom_index) % size]):
+ if not _indistinguishable(ring[starting_index],ring[(starting_index + atom_index) % size]):
all_the_same = False
break
starting_index += 1
@@ -393,7 +388,7 @@ def calculateCyclicSymmetryNumber(molecule):
while min_index <= max_index:
# ensure the two atoms are different. use mod size to loop to the start
# of the list when index out of bounds
- if not vf2.feasible(ring[min_index % size], ring[max_index % size]):
+ if not _indistinguishable(ring[min_index % size], ring[max_index % size]):
all_the_same = False
break
min_index += 1
@@ -409,19 +404,19 @@ def calculateCyclicSymmetryNumber(molecule):
pass # all_the_same still true
elif len(non_ring_bonded_atoms) == 3:
# at least one of these much be a match for flipping to happen
- identical = vf2.feasible(non_ring_bonded_atoms[0],non_ring_bonded_atoms[1])
- identical2 = vf2.feasible(non_ring_bonded_atoms[0],non_ring_bonded_atoms[2])
- identical3 = vf2.feasible(non_ring_bonded_atoms[1],non_ring_bonded_atoms[2])
+ identical = _indistinguishable(non_ring_bonded_atoms[0],non_ring_bonded_atoms[1])
+ identical2 = _indistinguishable(non_ring_bonded_atoms[0],non_ring_bonded_atoms[2])
+ identical3 = _indistinguishable(non_ring_bonded_atoms[1],non_ring_bonded_atoms[2])
if not (identical or identical2 or identical3):
all_the_same = False
elif len(non_ring_bonded_atoms) == 4:
- same_sides = vf2.feasible(non_ring_bonded_atoms[0],non_ring_bonded_atoms[1]) and \
- vf2.feasible(non_ring_bonded_atoms[2],non_ring_bonded_atoms[3])
+ same_sides = _indistinguishable(non_ring_bonded_atoms[0],non_ring_bonded_atoms[1]) and \
+ _indistinguishable(non_ring_bonded_atoms[2],non_ring_bonded_atoms[3])
if not same_sides:
- atom0_matching = vf2.feasible(non_ring_bonded_atoms[0],non_ring_bonded_atoms[2]) or\
- vf2.feasible(non_ring_bonded_atoms[0],non_ring_bonded_atoms[3])
- atom1_matching = vf2.feasible(non_ring_bonded_atoms[1],non_ring_bonded_atoms[2]) or\
- vf2.feasible(non_ring_bonded_atoms[1],non_ring_bonded_atoms[3])
+ atom0_matching = _indistinguishable(non_ring_bonded_atoms[0],non_ring_bonded_atoms[2]) or\
+ _indistinguishable(non_ring_bonded_atoms[0],non_ring_bonded_atoms[3])
+ atom1_matching = _indistinguishable(non_ring_bonded_atoms[1],non_ring_bonded_atoms[2]) or\
+ _indistinguishable(non_ring_bonded_atoms[1],non_ring_bonded_atoms[3])
if not (atom0_matching and atom1_matching):
all_the_same = False
else:
@@ -430,7 +425,7 @@ def calculateCyclicSymmetryNumber(molecule):
if len(non_ring_bonded_atoms) < 2:
pass # all_the_same still true
elif len(non_ring_bonded_atoms) == 2:
- identical = vf2.feasible(non_ring_bonded_atoms[0],non_ring_bonded_atoms[1])
+ identical = _indistinguishable(non_ring_bonded_atoms[0],non_ring_bonded_atoms[1])
if not identical:
# flipping a tetrahedral will not work
all_the_same = False
@@ -445,7 +440,7 @@ def calculateCyclicSymmetryNumber(molecule):
while min_index < max_index:
# ensure the two atoms are different. use mod size to loop to the start
# of the list when index out of bounds
- if not vf2.feasible(ring[min_index % size], ring[max_index % size]):
+ if not _indistinguishable(ring[min_index % size], ring[max_index % size]):
all_the_same = False
break
min_index += 1
@@ -457,6 +452,39 @@ def calculateCyclicSymmetryNumber(molecule):
return symmetryNumber
################################################################################
+
+def _indistinguishable(atom1, atom2):
+ """
+ Determine if two atoms are feasibly indistinguishable based on connections
+ to nearest neighbors.
+ """
+ if (not atom1.equivalent(atom2)
+ or atom1.connectivity1 != atom2.connectivity1
+ or atom1.connectivity2 != atom2.connectivity2
+ or atom1.connectivity3 != atom2.connectivity3):
+ return False
+
+ bond_orders_1 = [bond.order for bond in atom1.bonds.itervalues()].sort()
+ bond_orders_2 = [bond.order for bond in atom2.bonds.itervalues()].sort()
+
+ if bond_orders_1 != bond_orders_2:
+ return False
+
+ bonds_1 = atom1.bonds.items()
+ bonds_2 = atom2.bonds.items()
+
+ for i, (neighbor1, bond1) in enumerate(bonds_1):
+ for j, (neighbor2, bond2) in enumerate(bonds_2):
+ if bond1.equivalent(bond2) and neighbor1.equivalent(neighbor2):
+ del bonds_2[j]
+ break
+ else:
+ return False
+
+ # We were able to match up all neighbors
+ return True
+
+
def calculateSymmetryNumber(molecule):
"""
Return the symmetry number for the structure. The symmetry number
diff --git a/rmgpy/molecule/symmetryTest.py b/rmgpy/molecule/symmetryTest.py
index cc4ba1424b..a01b5d0ee2 100644
--- a/rmgpy/molecule/symmetryTest.py
+++ b/rmgpy/molecule/symmetryTest.py
@@ -32,9 +32,9 @@
from external.wip import work_in_progress
from rmgpy.molecule.molecule import Molecule
-from rmgpy.molecule.symmetry import calculateAtomSymmetryNumber, calculateAxisSymmetryNumber, calculateBondSymmetryNumber, calculateCyclicSymmetryNumber
+from rmgpy.molecule.symmetry import calculateAtomSymmetryNumber, calculateAxisSymmetryNumber, calculateBondSymmetryNumber, calculateCyclicSymmetryNumber, _indistinguishable
from rmgpy.species import Species
-from rmgpy.molecule.resonance import generate_aromatic_resonance_structures
+from rmgpy.molecule.resonance import generate_optimal_aromatic_resonance_structures
################################################################################
class TestMoleculeSymmetry(unittest.TestCase):
@@ -503,7 +503,6 @@ def testTotalSymmetryNumberSpecialCyclic(self):
symmetryNumber = species.getSymmetryNumber()
self.assertEqual(symmetryNumber, 12)
- @work_in_progress
def testTotalSymmetryNumberChlorobenzene(self):
"""
Test the Species.getSymmetryNumber() (total symmetry) on c1ccccc1Cl
@@ -523,14 +522,13 @@ def testTotalSymmetryNumberPhenoxyKecle(self):
symmetryNumber = species.getSymmetryNumber()
self.assertEqual(symmetryNumber, 2)
- @work_in_progress
def testTotalSymmetryNumberPhenoxyBenzene(self):
"""
Test symmetry on c1ccccc1[O] using phenoxy benzene structure
"""
molecule = Molecule().fromSMILES('c1ccccc1[O]')
species = Species(molecule=[molecule])
- aromatic_molecule = generate_aromatic_resonance_structures(molecule)[0]
+ aromatic_molecule = generate_optimal_aromatic_resonance_structures(molecule)[0]
symmetryNumber = aromatic_molecule.getSymmetryNumber()
self.assertEqual(symmetryNumber, 2)
@@ -710,6 +708,33 @@ def test_symmetry_number_dimethylcylcobutane_total(self):
Test the Molecule.calculateSymmetryNumber() on CC1CC(C)C1
"""
self.assertEqual(Species().fromSMILES('CC1CC(C)C1').getSymmetryNumber(),36)
+
+ def test_indistinguishable(self):
+ """
+ Test that the _indistinguishable function works properly
+ """
+ mol = Molecule().fromSMILES('c1ccccc1')
+ self.assertTrue(_indistinguishable(mol.atoms[0], mol.atoms[1]))
+ self.assertTrue(_indistinguishable(mol.atoms[0], mol.atoms[2]))
+ self.assertTrue(_indistinguishable(mol.atoms[0], mol.atoms[3]))
+
+ def test_indistinguishable_2(self):
+ """
+ Test that the _indistinguishable function works properly
+ """
+ mol = Molecule().fromSMILES('c1ccccc1[O]')
+ # Carbon with O different from other carbons (with H)
+ self.assertFalse(_indistinguishable(mol.atoms[5], mol.atoms[4]))
+ self.assertFalse(_indistinguishable(mol.atoms[5], mol.atoms[3]))
+ self.assertFalse(_indistinguishable(mol.atoms[5], mol.atoms[2]))
+ # Ortho carbons are the same
+ self.assertTrue(_indistinguishable(mol.atoms[0], mol.atoms[4]))
+ # Meta carbons are the same
+ self.assertTrue(_indistinguishable(mol.atoms[1], mol.atoms[3]))
+ # O is different from H
+ self.assertFalse(_indistinguishable(mol.atoms[6], mol.atoms[7]))
+
+
################################################################################
if __name__ == '__main__':
diff --git a/rmgpy/molecule/translatorTest.py b/rmgpy/molecule/translatorTest.py
index b58225faa2..25f2e7b240 100644
--- a/rmgpy/molecule/translatorTest.py
+++ b/rmgpy/molecule/translatorTest.py
@@ -295,31 +295,25 @@ def test_C11H16(self):
aug_inchi = 'InChI=1S/C11H16/c1-5-9-11(7-3,8-4)10-6-2/h5-8H,1-4,9-10H2/u1,3,5,7'
self.compare(adjlist, aug_inchi)
- def test_singlet_vs_closed_shell(self):
+ def test_singlet_vs_triplet(self):
adjlist_singlet = """
-1 C u0 p0 c0 {2,D} {3,S} {4,S}
-2 C u0 p0 c0 {1,D} {3,S} {5,S}
-3 C u0 p1 c0 {1,S} {2,S}
-4 H u0 p0 c0 {1,S}
-5 H u0 p0 c0 {2,S}
+ 1 C u0 p1 c0 {2,S} {3,S}
+ 2 H u0 p0 c0 {1,S}
+ 3 H u0 p0 c0 {1,S}
"""
- adjlist_closed_shell = """
-1 C u0 p0 c0 {2,D} {3,S} {4,S}
-2 C u0 p0 c0 {1,D} {3,D}
-3 C u0 p0 c0 {1,S} {2,D} {5,S}
-4 H u0 p0 c0 {1,S}
-5 H u0 p0 c0 {3,S}
+ adjlist_triplet = """
+ multiplicity 3
+ 1 C u2 p0 c0 {2,S} {3,S}
+ 2 H u0 p0 c0 {1,S}
+ 3 H u0 p0 c0 {1,S}
"""
singlet = Species(molecule=[Molecule().fromAdjacencyList(adjlist_singlet)])
- singlet.generate_resonance_structures()
- closed_shell = Species(molecule=[Molecule().fromAdjacencyList(adjlist_closed_shell)])
- closed_shell.generate_resonance_structures()
-
+ triplet = Species(molecule=[Molecule().fromAdjacencyList(adjlist_triplet)])
singlet_aug_inchi = singlet.getAugmentedInChI()
- closed_shell_aug_inchi = closed_shell.getAugmentedInChI()
- self.assertTrue(singlet_aug_inchi != closed_shell_aug_inchi)
+ triplet_aug_inchi = triplet.getAugmentedInChI()
+ self.assertTrue(singlet_aug_inchi != triplet_aug_inchi)
# def test_C6H5(self):
# """Test that the u-layer of phenyl shows atom 1."""
@@ -341,29 +335,28 @@ def test_singlet_vs_closed_shell(self):
# aug_inchi = 'InChI=1S/C6H5/c1-2-4-6-5-3-1/h1-5H/u1'
# self.compare(adjlist, aug_inchi)
- def test_C5H6_triplet_singlet(self):
+ def test_C5H6_singlet(self):
"""
- n-C5 chain with 2 unpaired electrons at the terminal carbon atoms,
- and 2 carbon atoms with each a lone pair, next to a terminal
- carbon atom.
+ n-C5 chain with 1 lone pair at the central carbon atom
"""
-
adjlist = """
-multiplicity 3
-1 C u1 p0 c0 {2,S} {6,S} {7,S}
-2 C u0 p1 c0 {1,S} {3,S}
-3 C u0 p1 c0 {2,S} {5,S}
-4 C u1 p0 c0 {5,S} {8,S} {9,S}
-5 C u0 p0 c0 {3,S} {4,S} {10,S} {11,S}
-6 H u0 p0 c0 {1,S}
-7 H u0 p0 c0 {1,S}
-8 H u0 p0 c0 {4,S}
-9 H u0 p0 c0 {4,S}
-10 H u0 p0 c0 {5,S}
-11 H u0 p0 c0 {5,S}
+ 1 C u0 p0 c0 {2,S} {6,S} {7,S} {8,S}
+ 2 C u0 p0 c0 {1,S} {3,S} {9,S} {10,S}
+ 3 C u0 p1 c0 {2,S} {4,S}
+ 4 C u0 p0 c0 {3,S} {5,S} {11,S} {12,S}
+ 5 C u0 p0 c0 {4,S} {13,S} {14,S} {15,S}
+ 6 H u0 p0 c0 {1,S}
+ 7 H u0 p0 c0 {1,S}
+ 8 H u0 p0 c0 {1,S}
+ 9 H u0 p0 c0 {2,S}
+ 10 H u0 p0 c0 {2,S}
+ 11 H u0 p0 c0 {4,S}
+ 12 H u0 p0 c0 {4,S}
+ 13 H u0 p0 c0 {5,S}
+ 14 H u0 p0 c0 {5,S}
+ 15 H u0 p0 c0 {5,S}
"""
-
- aug_inchi = 'InChI=1S/C5H6/c1-3-5-4-2/h1-3H2/u1,2/lp4,5'
+ aug_inchi = 'C5H10/c1-3-5-4-2/h3-4H2,1-2H3/lp5'
self.compare(adjlist, aug_inchi)
def test_aromatic_resonance_structures(self):
@@ -414,6 +407,22 @@ def test_disconnected_molecule(self):
self.assertEqual(mol.toInChI(), inchi)
+ def test_isotopic_molecule_1(self):
+ """Test that we can generate an InChI for an isotopic molecule."""
+ mol = Molecule().fromSMILES('[13CH4]')
+
+ inchi = 'InChI=1S/CH4/h1H4/i1+1'
+
+ self.assertEqual(mol.toInChI(), inchi)
+
+ def test_isotopic_molecule_2(self):
+ """Test that we can generate an InChI for an isotopic molecule."""
+ mol = Molecule().fromSMILES('[13CH3]C')
+
+ inchi = 'InChI=1S/C2H6/c1-2/h1-2H3/i1+1'
+
+ self.assertEqual(mol.toInChI(), inchi)
+
class SMILESGenerationTest(unittest.TestCase):
def compare(self, adjlist, smiles):
@@ -1372,3 +1381,17 @@ def test_NO(self):
inchi = 'InChI=1S/NO/c1-2'
u_indices = [1]
self.compare(inchi, u_indices)
+
+ def test_isotopic_molecule_1(self):
+ """Test that we can parse an InChI for an isotopic molecule."""
+ mol = Molecule().fromInChI('InChI=1S/CH4/h1H4/i1+1')
+
+ self.assertTrue(len(mol.atoms), 4)
+ self.assertEqual([atom.element.isotope for atom in mol.atoms].count(13), 1)
+
+ def test_isotopic_molecule_2(self):
+ """Test that we can parse an InChI for an isotopic molecule."""
+ mol = Molecule().fromInChI('InChI=1S/C2H6/c1-2/h1-2H3/i1+1')
+
+ self.assertTrue(len(mol.atoms), 6)
+ self.assertEqual([atom.element.isotope for atom in mol.atoms].count(13), 1)
diff --git a/rmgpy/pdep/collision.pyx b/rmgpy/pdep/collision.pyx
index 81e4375650..ebfd9be451 100644
--- a/rmgpy/pdep/collision.pyx
+++ b/rmgpy/pdep/collision.pyx
@@ -101,8 +101,6 @@ cdef class SingleExponentialDown:
except quantity.QuantityError:
self._alpha0 = quantity.Energy(value)
- self._alpha0 = quantity.Energy(value)
-
property T0:
"""The reference temperature."""
def __get__(self):
diff --git a/rmgpy/pdep/configuration.pyx b/rmgpy/pdep/configuration.pyx
index 6a0d548bee..c0212b699c 100644
--- a/rmgpy/pdep/configuration.pyx
+++ b/rmgpy/pdep/configuration.pyx
@@ -225,6 +225,8 @@ cdef class Configuration:
cdef list modes
cdef int i
+ logging.debug('calculating density of states for {}'.format(self.__str__()))
+
self.Elist = Elist
self.activeJRotor = activeJRotor
self.activeKRotor = activeKRotor
@@ -234,7 +236,7 @@ cdef class Configuration:
for i, species in enumerate(self.species):
modes.extend(species.conformer.getActiveModes(activeKRotor=activeKRotor, activeJRotor=activeJRotor))
- if rmgmode:
+ if rmgmode or len(modes) == 0:
# Include an arbitrary active rigid rotor if needed
# The moments of inertia cancel in all subsequent calculations
for mode in modes:
diff --git a/rmgpy/pdep/msc.pyx b/rmgpy/pdep/msc.pyx
index cebaa8c375..b48b5ce0d6 100644
--- a/rmgpy/pdep/msc.pyx
+++ b/rmgpy/pdep/msc.pyx
@@ -37,7 +37,7 @@ from libc.math cimport exp, log, sqrt
import rmgpy.constants as constants
from rmgpy.exceptions import ModifiedStrongCollisionError
-
+import logging
################################################################################
cpdef applyModifiedStrongCollisionMethod(network, str efficiencyModel='default'):
@@ -67,6 +67,10 @@ cpdef applyModifiedStrongCollisionMethod(network, str efficiencyModel='default')
Ngrains = network.Ngrains
NJ = network.NJ
+ if numpy.isnan(densStates.sum()):
+ raise AttributeError('Network {0} has NaN in the density of states. '
+ 'This will prevent adequate solution to the network'.format(network.label))
+
K = numpy.zeros((Nisom+Nreac+Nprod, Nisom+Nreac+Nprod), numpy.float64)
pa = numpy.zeros((Nisom,Nisom+Nreac,Ngrains,NJ), numpy.float64)
@@ -125,11 +129,15 @@ cpdef applyModifiedStrongCollisionMethod(network, str efficiencyModel='default')
for i in range(Nisom):
# Thermal activation via collisions
b[i,i] = collFreq[i] * collEff[i] * densStates[i,r,s] * (2*Jlist[s]+1) * exp(-Elist[r] * beta)
+ if numpy.isnan(b[i,i]):
+ logging.warning('Non-number generated for grain {0} for isomer {1}'.format(r,network.isomers[i]))
for n in range(Nisom, Nisom+Nreac):
# Chemical activation via association reaction
for j in range(Nisom):
b[j,n] = Fim[j,n-Nisom,r,s] * densStates[n,r,s] * (2*Jlist[s]+1) * exp(-Elist[r] * beta)
-
+ if numpy.isnan(b[j,n]):
+ logging.warning('Non-number generated for grain {0} for isomer {1} and isomer/reactant {2}'.format(r,network.isomers[j],(network.reactants)[n-Nisom]))
+ logging.debug(str([Fim[j,n-Nisom,r,s], densStates[n,r,s], (2*Jlist[s]+1), exp(-Elist[r] * beta), Elist[r], beta]))
# Solve for steady-state population
x = -numpy.linalg.solve(A, b)
for n in range(Nisom+Nreac):
@@ -138,6 +146,11 @@ cpdef applyModifiedStrongCollisionMethod(network, str efficiencyModel='default')
# Check that our populations are all positive
if not (pa >= 0).all():
+ for reactant_index in range(len(pa[:,0,0,0])):
+ for isomer_index in range(len(pa[0,:,0,0])):
+ populations =pa[reactant_index,isomer_index,:,:]
+ if not (populations >=0).all():
+ logging.debug('A negative concentration was encountered for reactant/isomer {0} and isomer {1} with matrix\n{2}'.format(network.isomers+network.reactants, network.reactants,populations))
raise ModifiedStrongCollisionError('A negative steady-state concentration was encountered.')
# Compute rate coefficients from PSSA concentrations
diff --git a/rmgpy/pdep/network.py b/rmgpy/pdep/network.py
index 74a1953738..6f1bdfa92c 100644
--- a/rmgpy/pdep/network.py
+++ b/rmgpy/pdep/network.py
@@ -51,8 +51,8 @@ class Network:
Attribute Description
======================= ====================================================
`isomers` A list of the unimolecular isomers in the network
- `reactants` A list of the bimolecular reactant channels in the network
- `products` A list of the bimolecular product channels in the network
+ `reactants` A list of the bimolecular reactant channels (Configuration objects) in the network
+ `products` A list of the bimolecular product channels (Configuration objects) in the network
`pathReactions` A list of "path" reaction objects that connect adjacent isomers (the high-pressure-limit)
`bathGas` A dictionary of the bath gas species (keys) and their mole fractions (values)
`netReactions` A list of "net" reaction objects that connect any pair of isomers
@@ -74,6 +74,11 @@ class Network:
`activeKRotor` ``True`` if the K-rotor is treated as active, ``False`` if treated as adiabatic
`activeJRotor` ``True`` if the J-rotor is treated as active, ``False`` if treated as adiabatic
`rmgmode` ``True`` if in RMG mode, ``False`` otherwise
+ ----------------------- ----------------------------------------------------
+ `eqRatios` An array containing concentration of each isomer and reactant channel present at equilibrium
+ `collFreq` An array of the frequency of collision between
+ `Mcoll` Matrix of first-order rate coefficients for collisional population transfer between grains for each isomer
+ `densStates` 3D np array of stable configurations, number of grains, and number of J
======================= ====================================================
"""
@@ -142,7 +147,7 @@ def __repr__(self):
return string
def __str__(self):
- """return Network like it would be seen in cantherm input file"""
+ """return Network like it would be seen in an Arkane input file"""
return "Network(label = '{0}', isomers = {1}, reactants = {2}, products = {3}, "\
"pathReactions = {4}, bathGas = {5}, "\
"netReactions = {6})".format(self.label, [i.species[0].label for i in self.isomers],
@@ -187,6 +192,8 @@ def initialize(self, Tmin, Tmax, Pmin, Pmax, maximumGrainSize=0.0, minimumGrainC
maximum energy grain size `grainSize` in J/mol and/or the minimum
number of grains `grainCount`.
"""
+
+ logging.debug("initializing network")
if maximumGrainSize == 0.0 and minimumGrainCount == 0:
raise NetworkError('Must provide either grainSize or Ngrains parameter to Network.determineEnergyGrains().')
@@ -249,7 +256,7 @@ def calculateRateCoefficients(self, Tlist, Plist, method, errorCheck=True):
elif method.lower() == 'chemically-significant eigenvalues':
self.applyChemicallySignificantEigenvaluesMethod()
else:
- raise NetworkError('Unknown method "{0}".'.format(method))
+ raise NetworkError('Unknown method "{0}". Valid options are "modified strong collision", "reservoir state", or "chemically-significant eigenvalues"'.format(method))
K[t,p,:,:] = self.K
@@ -353,7 +360,7 @@ def setConditions(self, T, P, ymB=None):
badness = error.badness()
if previous_error and (previous_error.message == error.message): # only compare badness if same reaction is causing problem
improvement = previous_error.badness()/badness
- if improvement < 0.2 or (grainCount > 1e4 and improvement < 1.1) or (grainCount > 1.5e6): # allow it to get worse at first
+ if improvement < 0.2 or (Ngrains > 1e4 and improvement < 1.1) or (Ngrains > 1.5e6): # allow it to get worse at first
logging.error(error.message)
logging.error("Increasing number of grains did not decrease error enough (Current badness: {0:.1f}, previous {1:.1f}). Something must be wrong with network {2}".format(badness,previous_error.badness(),self.label))
raise error
@@ -497,8 +504,8 @@ def calculateDensitiesOfStates(self):
logging.debug('Calculating density of states for reactant channel "{0}"'.format(self.reactants[n]))
self.reactants[n].calculateDensityOfStates(Elist, activeKRotor=self.activeKRotor, activeJRotor=self.activeJRotor, rmgmode=self.rmgmode)
else:
- logging.debug('NOT calculating density of states for reactant channel "{0}"'.format(self.reactants[n]))
-
+ logging.warning('NOT calculating density of states for reactant channel "{0}". Missing Statmech.'.format(self.reactants[n]))
+ logging.warning('Reactants: {}'.format(repr(self.reactants[n])))
# Densities of states for product channels
if not self.rmgmode:
for n in range(Nprod):
@@ -506,8 +513,8 @@ def calculateDensitiesOfStates(self):
logging.debug('Calculating density of states for product channel "{0}"'.format(self.products[n]))
self.products[n].calculateDensityOfStates(Elist, activeKRotor=self.activeKRotor, activeJRotor=self.activeJRotor, rmgmode=self.rmgmode)
else:
- logging.debug('NOT calculating density of states for product channel "{0}"'.format(self.products[n]))
-
+ logging.warning('NOT calculating density of states for product channel "{0}" Missing Statmech.'.format(self.products[n]))
+ logging.warning('Products: {}'.format(repr(self.products[n])))
logging.debug('')
# import pylab
@@ -636,13 +643,14 @@ def calculateMicrocanonicalRates(self):
for mol in pro.molecule:
logging.info(mol.toAdjacencyList())
logging.info('reactive = {0}\n'.format(mol.reactive))
- raise NetworkError('Unexpected type of path reaction "{0}"'.format(rxn))
+ logging.info('Path reaction {0} not found in reaction network {1}'.format(rxn,self.label))
+ continue
# Compute the microcanonical rate coefficient k(E)
reacDensStates = densStates[reac,:,:]
prodDensStates = densStates[prod,:,:]
kf, kr = rxn.calculateMicrocanonicalRateCoefficient(self.Elist, self.Jlist, reacDensStates, prodDensStates, T)
-
+
# Check for NaN (just to be safe)
if numpy.isnan(kf).any() or numpy.isnan(kr).any():
raise NetworkError('One or more k(E) values is NaN for path reaction "{0}".'.format(rxn))
@@ -650,9 +658,11 @@ def calculateMicrocanonicalRates(self):
# Determine the expected value of the rate coefficient k(T)
if rxn.canTST():
# RRKM theory was used to compute k(E), so use TST to compute k(T)
+ logging.debug('Using RRKM rate for Expected kf')
kf_expected = rxn.calculateTSTRateCoefficient(T)
else:
# ILT was used to compute k(E), so use high-P kinetics to compute k(T)
+ logging.debug('Using high pressure rate coefficient rate for Expected kf')
kf_expected = rxn.kinetics.getRateCoefficient(T) if rxn.network_kinetics is None else\
rxn.network_kinetics.getRateCoefficient(T)
@@ -775,6 +785,7 @@ def calculateEquilibriumRatios(self):
conc = (1e5 / constants.R / T) # [=] mol/m^3
for i in range(Nisom):
G = self.isomers[i].getFreeEnergy(T)
+ logging.debug("Free energy for isomer {} is {}.".format(i,G))
eqRatios[i] = math.exp(-G / constants.R / T)
for i in range(Nreac):
G = self.reactants[i].getFreeEnergy(T)
@@ -1028,5 +1039,8 @@ def printSummary(self, level=logging.INFO):
logging.log(level, 'Path reactions:')
for rxn in self.pathReactions:
logging.log(level, ' {0:<48s} {1:12g} kJ/mol'.format(rxn, float(rxn.transitionState.conformer.E0.value_si*0.001)))
+ logging.log(level, 'Net reactions:')
+ for rxn in self.netReactions:
+ logging.log(level, ' {0:<48s}'.format(rxn))
logging.log(level, '========================================================================')
logging.log(level, '')
diff --git a/rmgpy/pdep/reaction.pyx b/rmgpy/pdep/reaction.pyx
index 355a28e73f..ceeab40f34 100644
--- a/rmgpy/pdep/reaction.pyx
+++ b/rmgpy/pdep/reaction.pyx
@@ -43,7 +43,7 @@ from libc.math cimport abs, exp, sqrt, cosh, log
cimport rmgpy.constants as constants
from rmgpy.kinetics.arrhenius cimport Arrhenius
from rmgpy.statmech.schrodinger import convolve
-
+from rmgpy.exceptions import PressureDependenceError
################################################################################
@cython.boundscheck(False)
@@ -112,7 +112,7 @@ def calculateMicrocanonicalRateCoefficient(reaction,
kr *= C0inv**(len(reaction.products) - 1)
forward = False
else:
- raise Exception('Unable to compute k(E) values via RRKM theory for path reaction "{0}".'.format(reaction))
+ raise PressureDependenceError('Unable to compute k(E) values via RRKM theory for path reaction "{0}".'.format(reaction))
elif reaction.kinetics is not None:
# We've been provided with high-pressure-limit rate coefficient data,
@@ -127,10 +127,10 @@ def calculateMicrocanonicalRateCoefficient(reaction,
kr = applyInverseLaplaceTransformMethod(reaction.transitionState, kinetics, Elist, Jlist, prodDensStates, T)
forward = False
else:
- raise Exception('Unable to compute k(E) values via ILT method for path reaction "{0}".'.format(reaction))
+ raise PressureDependenceError('Unable to compute k(E) values via ILT method for path reaction "{0}".'.format(reaction))
else:
- raise Exception('Unable to compute k(E) values for path reaction "{0}".'.format(reaction))
+ raise PressureDependenceError('Unable to compute k(E) values for path reaction "{0}".'.format(reaction))
# If the reaction is endothermic and barrierless, it is possible that the
# forward k(E) will have a nonzero value at an energy where the product
@@ -324,7 +324,7 @@ def applyInverseLaplaceTransformMethod(transitionState,
k[r,s] = A * phi[r] / densStates[r,s]
else:
- raise Exception('Unable to use inverse Laplace transform method for non-Arrhenius kinetics or for n < 0.')
+ raise PressureDependenceError('Unable to use inverse Laplace transform method for non-Arrhenius kinetics or for n < 0.')
logging.debug('Finished applying inverse lapace transform for path transition state {}'.format(transitionState))
logging.debug('The rate constant is found to be {}'.format(k))
diff --git a/rmgpy/reaction.py b/rmgpy/reaction.py
index 8222263809..e72b5fe628 100644
--- a/rmgpy/reaction.py
+++ b/rmgpy/reaction.py
@@ -56,7 +56,7 @@
from rmgpy.kinetics.arrhenius import Arrhenius #PyDev: @UnresolvedImport
from rmgpy.kinetics import KineticsData, ArrheniusEP, ThirdBody, Lindemann, Troe, Chebyshev, PDepArrhenius, MultiArrhenius, MultiPDepArrhenius, getRateCoefficientUnitsFromReactionOrder #PyDev: @UnresolvedImport
from rmgpy.pdep.reaction import calculateMicrocanonicalRateCoefficient
-from rmgpy.exceptions import ReactionError
+from rmgpy.exceptions import ReactionError, KineticsError
from rmgpy.kinetics.diffusionLimited import diffusionLimiter
################################################################################
@@ -643,6 +643,9 @@ def fixBarrierHeight(self, forcePositive=False):
"""
cython.declare(H0=cython.double, H298=cython.double, Ea=cython.double)
+ if self.kinetics is None:
+ raise KineticsError("Cannot fix barrier height for reactions with no kinetics attribute")
+
H298 = self.getEnthalpyOfReaction(298)
H0 = sum([spec.getThermoData().E0.value_si for spec in self.products]) \
- sum([spec.getThermoData().E0.value_si for spec in self.reactants])
diff --git a/rmgpy/rmg/input.py b/rmgpy/rmg/input.py
index 7570433ada..6e8eae6b07 100644
--- a/rmgpy/rmg/input.py
+++ b/rmgpy/rmg/input.py
@@ -193,9 +193,13 @@ def simpleReactor(temperature,
sensitiveSpecies = []
if sensitivity:
- if isinstance(sensitivity, str): sensitivity = [sensitivity]
- for spec in sensitivity:
- sensitiveSpecies.append(speciesDict[spec])
+ if sensitivity != 'all':
+ if isinstance(sensitivity, str): sensitivity = [sensitivity]
+ for spec in sensitivity:
+ sensitiveSpecies.append(speciesDict[spec])
+
+ else:
+ sensitiveSpecies.append('all')
if not isinstance(T,list):
sensitivityTemperature = T
@@ -315,7 +319,8 @@ def model(toleranceMoveToCore=None, toleranceMoveEdgeReactionToCore=numpy.inf,to
toleranceMoveEdgeReactionToSurfaceInterrupt=None,
toleranceMoveEdgeReactionToCoreInterrupt=None, maximumEdgeSpecies=1000000, minCoreSizeForPrune=50,
minSpeciesExistIterationsForPrune=2, filterReactions=False, filterThreshold=1e8, ignoreOverallFluxCriterion=False,
- maxNumSpecies=None,maxNumObjsPerIter=1,terminateAtMaxObjects=False,toleranceThermoKeepSpeciesInEdge=numpy.inf,dynamicsTimeScale=(0.0,'sec')):
+ maxNumSpecies=None,maxNumObjsPerIter=1,terminateAtMaxObjects=False,toleranceThermoKeepSpeciesInEdge=numpy.inf,dynamicsTimeScale=(0.0,'sec'),
+ toleranceBranchReactionToCore=0.0, branchingIndex=0.5, branchingRatioMax=1.0):
"""
How to generate the model. `toleranceMoveToCore` must be specified.
toleranceMoveReactionToCore and toleranceReactionInterruptSimulation refers to an additional criterion for forcing an edge reaction to be included in the core
@@ -350,7 +355,10 @@ def model(toleranceMoveToCore=None, toleranceMoveEdgeReactionToCore=numpy.inf,to
maxNumObjsPerIter=maxNumObjsPerIter,
terminateAtMaxObjects=terminateAtMaxObjects,
toleranceThermoKeepSpeciesInEdge=toleranceThermoKeepSpeciesInEdge,
- dynamicsTimeScale=Quantity(dynamicsTimeScale)
+ dynamicsTimeScale=Quantity(dynamicsTimeScale),
+ toleranceBranchReactionToCore=toleranceBranchReactionToCore,
+ branchingIndex=branchingIndex,
+ branchingRatioMax=branchingRatioMax,
)
)
@@ -370,6 +378,52 @@ def quantumMechanics(
onlyCyclics = onlyCyclics,
maxRadicalNumber = maxRadicalNumber,
)
+
+def mlEstimator(thermo=True,
+ name='main',
+ minHeavyAtoms=1,
+ maxHeavyAtoms=None,
+ minCarbonAtoms=0,
+ maxCarbonAtoms=None,
+ minOxygenAtoms=0,
+ maxOxygenAtoms=None,
+ minNitrogenAtoms=0,
+ maxNitrogenAtoms=None,
+ onlyCyclics=False,
+ minCycleOverlap=0,
+ H298UncertaintyCutoff=(3.0, 'kcal/mol'),
+ S298UncertaintyCutoff=(2.0, 'cal/(mol*K)'),
+ CpUncertaintyCutoff=(2.0, 'cal/(mol*K)')):
+ from rmgpy.ml.estimator import MLEstimator
+
+ # Currently only support thermo
+ if thermo:
+ models_path = os.path.join(settings['database.directory'], 'thermo', 'ml', name)
+ if not os.path.exists(models_path):
+ raise InputError('Cannot find ML models folder {}'.format(models_path))
+ H298_path = os.path.join(models_path, 'H298')
+ S298_path = os.path.join(models_path, 'S298')
+ Cp_path = os.path.join(models_path, 'Cp')
+ rmg.ml_estimator = MLEstimator(H298_path, S298_path, Cp_path)
+
+ uncertainty_cutoffs = dict(
+ H298=Quantity(*H298UncertaintyCutoff),
+ S298=Quantity(*S298UncertaintyCutoff),
+ Cp=Quantity(*CpUncertaintyCutoff)
+ )
+ rmg.ml_settings = dict(
+ min_heavy_atoms=minHeavyAtoms,
+ max_heavy_atoms=maxHeavyAtoms,
+ min_carbon_atoms=minCarbonAtoms,
+ max_carbon_atoms=maxCarbonAtoms,
+ min_oxygen_atoms=minOxygenAtoms,
+ max_oxygen_atoms=maxOxygenAtoms,
+ min_nitrogen_atoms=minNitrogenAtoms,
+ max_nitrogen_atoms=maxNitrogenAtoms,
+ only_cyclics=onlyCyclics,
+ min_cycle_overlap=minCycleOverlap,
+ uncertainty_cutoffs=uncertainty_cutoffs,
+ )
def pressureDependence(
@@ -382,7 +436,7 @@ def pressureDependence(
maximumAtoms=None,
):
- from rmgpy.cantherm.pdep import PressureDependenceJob
+ from arkane.pdep import PressureDependenceJob
# Setting the pressureDependence attribute to non-None enables pressure dependence
rmg.pressureDependence = PressureDependenceJob(network=None)
@@ -531,6 +585,7 @@ def readInputFile(path, rmg0):
'solvation': solvation,
'model': model,
'quantumMechanics': quantumMechanics,
+ 'mlEstimator': mlEstimator,
'pressureDependence': pressureDependence,
'options': options,
'generatedSpeciesConstraints': generatedSpeciesConstraints,
@@ -599,6 +654,7 @@ def readThermoInputFile(path, rmg0):
'solvation': solvation,
'adjacencyList': adjacencyList,
'quantumMechanics': quantumMechanics,
+ 'mlEstimator': mlEstimator,
}
try:
@@ -797,6 +853,8 @@ def getInput(name):
return rmg.speciesConstraints
elif name == 'quantumMechanics':
return rmg.quantumMechanics
+ elif name == 'MLEstimator':
+ return rmg.ml_estimator, rmg.ml_settings
elif name == 'thermoCentralDatabase':
return rmg.thermoCentralDatabase
else:
diff --git a/rmgpy/rmg/inputTest.py b/rmgpy/rmg/inputTest.py
index fe51e6f316..915f0fc00b 100644
--- a/rmgpy/rmg/inputTest.py
+++ b/rmgpy/rmg/inputTest.py
@@ -90,6 +90,25 @@ def testImportingDatabaseReactionLibrariesFromTrueTuple(self):
self.assertIsInstance(rmg.reactionLibraries[0], tuple)
self.assertTrue(rmg.reactionLibraries[0][1])
+class TestInputMLEstimator(unittest.TestCase):
+ """
+ Contains unit tests rmgpy.rmg.input.mlEstimator
+ """
+ def tearDown(self):
+ # remove the reactionLibraries value
+ global rmg
+ rmg.ml_estimator = None
+
+ def testMLEstimator(self):
+ """
+ Test that we can input.
+ """
+ from rmgpy.ml.estimator import MLEstimator
+ global rmg
+ # add database properties to RMG
+ inp.mlEstimator(thermo=True)
+ self.assertIsInstance(rmg.ml_estimator, MLEstimator)
+ self.assertIsInstance(rmg.ml_settings, dict)
class TestInputThemoCentralDatabase(unittest.TestCase):
"""
diff --git a/rmgpy/rmg/main.py b/rmgpy/rmg/main.py
index 1f62245add..bfb92c373d 100644
--- a/rmgpy/rmg/main.py
+++ b/rmgpy/rmg/main.py
@@ -130,6 +130,8 @@ class RMG(util.Subject):
`trimolecularProductReversible` ``True`` (default) to allow families with trimolecular products to react in the reverse direction, ``False`` otherwise
`pressureDependence` Whether to process unimolecular (pressure-dependent) reaction networks
`quantumMechanics` Whether to apply quantum mechanical calculations instead of group additivity to certain molecular types.
+ `ml_estimator` To use thermo estimation with machine learning
+ `ml_settings` Settings for ML estimation
`wallTime` The maximum amount of CPU time in the form DD:HH:MM:SS to expend on this job; used to stop gracefully so we can still get profiling information
`kineticsdatastore` ``True`` if storing details of each kinetic database entry in text file, ``False`` otherwise
----------------------------------- ------------------------------------------------
@@ -200,6 +202,8 @@ def clear(self):
self.trimolecularProductReversible = None
self.pressureDependence = None
self.quantumMechanics = None
+ self.ml_estimator = None
+ self.ml_settings = None
self.speciesConstraints = {}
self.wallTime = '00:00:00:00'
self.initializationTime = 0
@@ -614,7 +618,9 @@ def execute(self, **kwargs):
pass
self.rmg_memories = []
-
+
+ logging.info('Initialization complete. Starting model generation.\n')
+
# Initiate first reaction discovery step after adding all core species
for index, reactionSystem in enumerate(self.reactionSystems):
# Initialize memory object to track conditions for ranged reactors
@@ -642,11 +648,14 @@ def execute(self, **kwargs):
rxnSysBimolecularThreshold=reactionSystem.bimolecularThreshold,
rxnSysTrimolecularThreshold=reactionSystem.trimolecularThreshold,
)
+
+ logging.info('Generating initial reactions for reaction system {0}...'.format(index + 1))
else:
# If we're not filtering reactions, then we only need to react
# the first reaction system since they share the same core
if index > 0:
continue
+ logging.info('Generating initial reactions...')
# React core species to enlarge edge
self.reactionModel.enlarge(reactEdge=True,
@@ -666,7 +675,7 @@ def execute(self, **kwargs):
if not np.isinf(self.modelSettingsList[0].toleranceThermoKeepSpeciesInEdge):
self.reactionModel.thermoFilterDown(maximumEdgeSpecies=self.modelSettingsList[0].maximumEdgeSpecies)
- logging.info('Completed initial enlarge edge step...')
+ logging.info('Completed initial enlarge edge step.\n')
self.saveEverything()
@@ -683,7 +692,7 @@ def execute(self, **kwargs):
self.filterReactions = modelSettings.filterReactions
- logging.info('Beginning model generation stage {0}\n\n'.format(q+1))
+ logging.info('Beginning model generation stage {0}...\n'.format(q+1))
self.done = False
@@ -737,7 +746,7 @@ def execute(self, **kwargs):
if len(self.reactionModel.core.reactions) > 5:
logging.error("Too many to print in detail")
else:
- from rmgpy.cantherm.output import prettify
+ from arkane.output import prettify
logging.error(prettify(repr(self.reactionModel.core.reactions)))
if self.generateSeedEachIteration:
self.makeSeedMech()
@@ -891,6 +900,9 @@ def execute(self, **kwargs):
if reactionSystem.sensitiveSpecies and reactionSystem.sensConditions:
logging.info('Conducting sensitivity analysis of reaction system %s...' % (index+1))
+
+ if reactionSystem.sensitiveSpecies == ['all']:
+ reactionSystem.sensitiveSpecies = self.reactionModel.core.species
sensWorksheet = []
for spec in reactionSystem.sensitiveSpecies:
@@ -971,17 +983,19 @@ def check_model(self):
violators.extend(violator_list)
num_rxn_violators += 1
# Whether or not violators were found, rename 'collision_rate_violators.log' if it exists
- if os.path.isfile('collision_rate_violators.log'):
+ new_file = os.path.join(self.outputDirectory, 'collision_rate_violators.log')
+ old_file = os.path.join(self.outputDirectory, 'collision_rate_violators_OLD.log')
+ if os.path.isfile(new_file):
# If there are no violators, yet the violators log exists (probably from a previous run
# in the same folder), rename it.
- if os.path.isfile('collision_rate_violators_OLD.log'):
- os.remove('collision_rate_violators_OLD.log')
- os.rename('collision_rate_violators.log', 'collision_rate_violators_OLD.log')
+ if os.path.isfile(old_file):
+ os.remove(old_file)
+ os.rename(new_file, old_file)
if violators:
logging.info("\n")
logging.warning("{0} CORE reactions violate the collision rate limit!"
"\nSee the 'collision_rate_violators.log' for details.\n\n".format(num_rxn_violators))
- with open('collision_rate_violators.log', 'w') as violators_f:
+ with open(new_file, 'w') as violators_f:
violators_f.write('*** Collision rate limit violators report ***\n'
'"Violation factor" is the ratio of the rate coefficient to the collision limit'
' rate at the relevant conditions\n\n')
diff --git a/rmgpy/rmg/model.py b/rmgpy/rmg/model.py
index 19815b8c09..80cb95d038 100644
--- a/rmgpy/rmg/model.py
+++ b/rmgpy/rmg/model.py
@@ -53,6 +53,9 @@
from rmgpy.data.kinetics.library import KineticsLibrary, LibraryReaction
from rmgpy.kinetics import KineticsData, Arrhenius
+
+from rmgpy.data.rmg import getDB
+
import rmgpy.data.rmg
from .react import reactAll
@@ -254,8 +257,8 @@ def checkForExistingSpecies(self, molecule):
# within the list of isomers for a species object describing a unique aromatic compound
if molecule.isCyclic():
obj = Species(molecule=[molecule])
- from rmgpy.molecule.resonance import generate_aromatic_resonance_structures
- aromaticIsomers = generate_aromatic_resonance_structures(molecule)
+ from rmgpy.molecule.resonance import generate_optimal_aromatic_resonance_structures
+ aromaticIsomers = generate_optimal_aromatic_resonance_structures(molecule)
obj.molecule.extend(aromaticIsomers)
# First check cache and return if species is found
@@ -688,7 +691,8 @@ def enlarge(self, newObject=None, reactEdge=False,
# Begin processing the new species and reactions
# Generate kinetics of new reactions
- logging.info('Generating kinetics for new reactions...')
+ if self.newReactionList:
+ logging.info('Generating kinetics for new reactions...')
for reaction in self.newReactionList:
# If the reaction already has kinetics (e.g. from a library),
# assume the kinetics are satisfactory
@@ -1051,6 +1055,28 @@ def addSpeciesToCore(self, spec):
assert spec not in self.core.species, "Tried to add species {0} to core, but it's already there".format(spec.label)
+ forbidden_structures = getDB('forbidden')
+
+ # check RMG globally forbidden structures
+ if not spec.explicitlyAllowed and forbidden_structures.isMoleculeForbidden(spec.molecule[0]):
+
+ rxnList = []
+ if spec in self.edge.species:
+
+ #remove forbidden species from edge
+ logging.info("Species {0} was Forbidden and not added to Core...Removing from Edge.".format(spec))
+ self.edge.species.remove(spec)
+ # Search edge for reactions that contain forbidden species
+ for rxn in self.edge.reactions:
+ if spec in rxn.reactants or spec in rxn.products:
+ rxnList.append(rxn)
+
+ #Remove any reactions that are globally forbidden from Edge
+ for rxn in rxnList:
+ self.edge.reactions.remove(rxn)
+ logging.info("Removing Forbidden Reaction from Edge: {0}".format(rxn))
+ return []
+
# Add the species to the core
self.core.species.append(spec)
@@ -1452,7 +1478,7 @@ def addSeedMechanismToCore(self, seedMechanism, react=False):
rxns = seedMechanism.getLibraryReactions()
for rxn in rxns:
- if isinstance(rxn,LibraryReaction) and not (rxn.library in libraryNames): #if one of the reactions in the library is from another library load that library
+ if isinstance(rxn,LibraryReaction) and not (rxn.library in libraryNames) and not (rxn.library == 'kineticsjobs'): #if one of the reactions in the library is from another library load that library
database.kinetics.libraryOrder.append((rxn.library,'Internal'))
database.kinetics.loadLibraries(path=path,libraries=[rxn.library])
libraryNames = database.kinetics.libraries.keys()
@@ -1479,6 +1505,7 @@ def addSeedMechanismToCore(self, seedMechanism, react=False):
for spec in self.newSpeciesList:
if database.forbiddenStructures.isMoleculeForbidden(spec.molecule[0]):
if 'allowed' in rmg.speciesConstraints and 'seed mechanisms' in rmg.speciesConstraints['allowed']:
+ spec.explicitlyAllowed = True
logging.warning("Species {0} from seed mechanism {1} is globally forbidden. It will behave as an inert unless found in a seed mechanism or reaction library.".format(spec.label, seedMechanism.label))
else:
raise ForbiddenStructureException("Species {0} from seed mechanism {1} is globally forbidden. You may explicitly allow it, but it will remain inert unless found in a seed mechanism or reaction library.".format(spec.label, seedMechanism.label))
@@ -1567,6 +1594,7 @@ def addReactionLibraryToEdge(self, reactionLibrary):
for spec in self.newSpeciesList:
if database.forbiddenStructures.isMoleculeForbidden(spec.molecule[0]):
if 'allowed' in rmg.speciesConstraints and 'reaction libraries' in rmg.speciesConstraints['allowed']:
+ spec.explicitlyAllowed = True
logging.warning("Species {0} from reaction library {1} is globally forbidden. It will behave as an inert unless found in a seed mechanism or reaction library.".format(spec.label, reactionLibrary.label))
else:
raise ForbiddenStructureException("Species {0} from reaction library {1} is globally forbidden. You may explicitly allow it, but it will remain inert unless found in a seed mechanism or reaction library.".format(spec.label, reactionLibrary.label))
diff --git a/rmgpy/rmg/pdep.py b/rmgpy/rmg/pdep.py
index e2fe0c9be1..07f043b478 100644
--- a/rmgpy/rmg/pdep.py
+++ b/rmgpy/rmg/pdep.py
@@ -35,9 +35,13 @@
import logging
import os.path
+import numpy as np
+import mpmath as mp
+import scipy.optimize as opt
import rmgpy.pdep.network
import rmgpy.reaction
+from rmgpy.constants import R
from rmgpy.pdep import Conformer, Configuration
from rmgpy.rmg.react import react
@@ -318,6 +322,200 @@ def addPathReaction(self, newReaction):
self.pathReactions.append(newReaction)
self.invalidate()
+ def get_energy_filtered_reactions(self,T,tol):
+ """
+ Returns a list of products and isomers that are greater in Free Energy
+ than a*R*T + Gfsource(T)
+ """
+ dE = tol*R*T
+ for conf in self.isomers+self.products+self.reactants:
+ if len(conf.species) == len(self.source):
+ if len(self.source) == 1:
+ if self.source[0].isIsomorphic(conf.species[0]):
+ E0source = conf.E0
+ break
+ elif len(self.source) == 2:
+ boo00 = self.source[0].isIsomorphic(conf.species[0])
+ boo01 = self.source[0].isIsomorphic(conf.species[1])
+ if boo00 or boo01: # if we found source[0]
+ boo10 = self.source[1].isIsomorphic(conf.species[0])
+ boo11 = self.source[1].isIsomorphic(conf.species[1])
+ if (boo00 and boo11) or (boo01 and boo10):
+ E0source = conf.E0
+ break
+ else:
+ raise ValueError('No isomer, product or reactant channel is isomorphic to the source')
+
+ filtered_rxns = []
+ for rxn in self.pathReactions:
+ E0 = rxn.transitionState.conformer.E0.value_si
+ if E0-E0source > dE:
+ filtered_rxns.append(rxn)
+
+ return filtered_rxns
+
+ def get_rate_filtered_reactions(self,T,P,tol):
+ """
+ determines the set of pathReactions that have fluxes less than
+ tol at steady state where all A => B + C reactions are irreversible
+ and there is a constant flux from/to the source configuration of 1.0
+ """
+ c = self.solve_SS_network(T,P)
+ isomerSpcs = [iso.species[0] for iso in self.isomers]
+ filtered_rxns = []
+ for rxn in self.pathReactions:
+ val = 0.0
+ val2 = 0.0
+ if rxn.reactants[0] in isomerSpcs:
+ ind = isomerSpcs.index(rxn.reactants[0])
+ kf = rxn.getRateCoefficient(T,P)
+ val = kf*c[ind]
+ if rxn.products[0] in isomerSpcs:
+ ind2 = isomerSpcs.index(rxn.products[0])
+ kr = rxn.getRateCoefficient(T,P)/rxn.getEquilibriumConstant(T)
+ val2 = kr*c[ind2]
+
+ if max(val,val2) < tol:
+ filtered_rxns.append(rxn)
+
+ return filtered_rxns
+
+ def solve_SS_network(self,T,P):
+ """
+ calculates the steady state concentrations if all A => B + C
+ reactions are irreversible and the flux from/to the source
+ configuration is 1.0
+ """
+ A = np.zeros((len(self.isomers),len(self.isomers)))
+ b = np.zeros(len(self.isomers))
+ bimolecular = len(self.source) > 1
+
+ isomerSpcs = [iso.species[0] for iso in self.isomers]
+
+ for rxn in self.pathReactions:
+
+ if rxn.reactants[0] in isomerSpcs:
+ ind = isomerSpcs.index(rxn.reactants[0])
+ kf = rxn.getRateCoefficient(T,P)
+ A[ind,ind] -= kf
+ else:
+ ind = None
+ if rxn.products[0] in isomerSpcs:
+ ind2 = isomerSpcs.index(rxn.products[0])
+ kr = rxn.getRateCoefficient(T,P)/rxn.getEquilibriumConstant(T)
+ A[ind2,ind2] -= kr
+ else:
+ ind2 = None
+
+ if ind and ind2:
+ A[ind,ind2] += kr
+ A[ind2,ind] += kf
+
+ if bimolecular:
+ if rxn.reactants[0].species == self.source:
+ kf = rxn.getRateCoefficient(T,P)
+ b[ind2] += kf
+ elif rxn.products[0].species == self.source:
+ kr = rxn.getRateCoefficient(T,P)/rxn.getEquilibriumConstant(T)
+ b[ind] += kr
+
+
+ if not bimolecular:
+ ind = isomerSpcs.index(self.source[0])
+ b[ind] = -1.0 #flux at source
+ else:
+ b = -b/b.sum() #1.0 flux from source
+
+ if len(b) == 1:
+ return np.array([b[0]/A[0,0]])
+
+ con = np.linalg.cond(A) #this matrix can be very ill-conditioned so we enhance precision accordingly
+ mp.dps = 30+int(np.log10(con))
+ Amp = mp.matrix(A.tolist())
+ bmp = mp.matrix(b.tolist())
+
+ c = mp.qr_solve(Amp,bmp)
+
+ c = np.array(list(c[0]))
+
+ if any(c<=0.0):
+ c, rnorm = opt.nnls(A,b)
+
+ c = c.astype(np.float64)
+
+ return c
+
+
+ def remove_disconnected_reactions(self):
+ """
+ gets rid of reactions/isomers/products not connected to the source by a reaction sequence
+ """
+ keptReactions = []
+ keptProducts = [self.source]
+ incomplete = True
+ while incomplete:
+ s = len(keptReactions)
+ for rxn in self.pathReactions:
+ if not rxn in keptReactions:
+ if rxn.reactants in keptProducts:
+ keptProducts.append(rxn.products)
+ keptReactions.append(rxn)
+ elif rxn.products in keptProducts:
+ keptProducts.append(rxn.reactants)
+ keptReactions.append(rxn)
+
+ incomplete = s != len(keptReactions)
+
+ logging.info('Removing disconnected items')
+ for rxn in self.pathReactions:
+ if rxn not in keptReactions:
+ logging.info('Removing rxn: {}'.format(rxn))
+ self.pathReactions.remove(rxn)
+
+ for prod in self.products:
+ if prod.species not in keptProducts:
+ logging.info('Removing product: {}'.format(prod))
+ self.products.remove(prod)
+
+ for rct in self.reactants:
+ if rct.species not in keptProducts:
+ logging.info('Removing product: {}'.format(rct))
+ self.reactants.remove(react)
+
+ for iso in self.isomers:
+ if iso.species not in keptProducts:
+ logging.info('Removing isomer: {}'.format(iso))
+ self.isomers.remove(iso)
+ if iso in self.explored:
+ self.explored.remove(iso)
+
+ def remove_reactions(self,reactionModel,rxns):
+ """
+ removes a list of reactions from the network and all reactions/products
+ left disconnected by removing those reactions
+ """
+ for rxn in rxns:
+ self.pathReactions.remove(rxn)
+
+ self.remove_disconnected_reactions()
+
+ self.invalidate()
+
+ assert self.pathReactions != [], 'Reduction process removed all reactions, cannot update network with no reactions'
+
+ reactionModel.updateUnimolecularReactionNetworks()
+
+ if reactionModel.pressureDependence.outputFile:
+ path = os.path.join(reactionModel.pressureDependence.outputFile,'pdep')
+
+ for name in os.listdir(path): #remove the old reduced file
+ if name.endswith('reduced.py'):
+ os.remove(os.path.join(path,name))
+
+ for name in os.listdir(path): #find the new file and name it network_reduced.py
+ if not name.endswith('full.py'):
+ os.rename(os.path.join(path,name),os.path.join(path,'network_reduced.py'))
+
def merge(self, other):
"""
Merge the partial network `other` into this network.
@@ -546,14 +744,18 @@ def update(self, reactionModel, pdepSettings):
# Set collision model
bathGas = [spec for spec in reactionModel.core.species if not spec.reactive]
+ assert len(bathGas) > 0, 'No unreactive species to identify as bath gas'
+
self.bathGas = {}
for spec in bathGas:
# is this really the only/best way to weight them?
self.bathGas[spec] = 1.0 / len(bathGas)
-
+
# Save input file
if not self.label: self.label = str(self.index)
- job.saveInputFile(os.path.join(outputDirectory, 'pdep', 'network{0:d}_{1:d}.py'.format(self.index, len(self.isomers))))
+
+ if outputDirectory:
+ job.saveInputFile(os.path.join(outputDirectory, 'pdep', 'network{0:d}_{1:d}.py'.format(self.index, len(self.isomers))))
self.printSummary(level=logging.INFO)
diff --git a/rmgpy/rmg/pdepTest.py b/rmgpy/rmg/pdepTest.py
new file mode 100644
index 0000000000..1c9ecfc209
--- /dev/null
+++ b/rmgpy/rmg/pdepTest.py
@@ -0,0 +1,180 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+###############################################################################
+# #
+# RMG - Reaction Mechanism Generator #
+# #
+# Copyright (c) 2002-2018 Prof. William H. Green (whgreen@mit.edu), #
+# Prof. Richard H. West (r.west@neu.edu) and the RMG Team (rmg_dev@mit.edu) #
+# #
+# Permission is hereby granted, free of charge, to any person obtaining a #
+# copy of this software and associated documentation files (the 'Software'), #
+# to deal in the Software without restriction, including without limitation #
+# the rights to use, copy, modify, merge, publish, distribute, sublicense, #
+# and/or sell copies of the Software, and to permit persons to whom the #
+# Software is furnished to do so, subject to the following conditions: #
+# #
+# The above copyright notice and this permission notice shall be included in #
+# all copies or substantial portions of the Software. #
+# #
+# THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE #
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING #
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER #
+# DEALINGS IN THE SOFTWARE. #
+# #
+###############################################################################
+
+import unittest
+import logging
+from copy import deepcopy
+
+from rmgpy.pdep.network import Network
+from rmgpy.pdep.configuration import Configuration
+from rmgpy.reaction import Reaction
+from rmgpy.statmech.vibration import HarmonicOscillator
+from rmgpy.statmech.torsion import HinderedRotor
+from rmgpy.statmech.conformer import Conformer
+from rmgpy.species import Species, TransitionState
+from rmgpy.rmg.pdep import PDepNetwork
+from rmgpy.transport import TransportData
+from rmgpy.statmech.translation import IdealGasTranslation
+from rmgpy.statmech.rotation import NonlinearRotor
+from rmgpy.pdep.collision import SingleExponentialDown
+from rmgpy.kinetics.arrhenius import Arrhenius
+
+###################################################
+
+class TestPdep(unittest.TestCase):
+
+ def setUp(self):
+ """
+ A method that is run before each unit test in this class.
+ """
+ self.nC4H10O = Species(
+ label = 'n-C4H10O',
+ conformer = Conformer(
+ E0 = (-317.807,'kJ/mol'),
+ modes = [
+ IdealGasTranslation(mass=(74.07,"g/mol")),
+ NonlinearRotor(inertia=([41.5091,215.751,233.258],"amu*angstrom^2"), symmetry=1),
+ HarmonicOscillator(frequencies=([240.915,341.933,500.066,728.41,809.987,833.93,926.308,948.571,1009.3,1031.46,1076,1118.4,1184.66,1251.36,1314.36,1321.42,1381.17,1396.5,1400.54,1448.08,1480.18,1485.34,1492.24,1494.99,1586.16,2949.01,2963.03,2986.19,2988.1,2995.27,3026.03,3049.05,3053.47,3054.83,3778.88],"cm^-1")),
+ HinderedRotor(inertia=(0.854054,"amu*angstrom^2"), symmetry=1, fourier=([[0.25183,-1.37378,-2.8379,0.0305112,0.0028088], [0.458307,0.542121,-0.599366,-0.00283925,0.0398529]],"kJ/mol")),
+ HinderedRotor(inertia=(8.79408,"amu*angstrom^2"), symmetry=1, fourier=([[0.26871,-0.59533,-8.15002,-0.294325,-0.145357], [1.1884,0.99479,-0.940416,-0.186538,0.0309834]],"kJ/mol")),
+ HinderedRotor(inertia=(7.88153,"amu*angstrom^2"), symmetry=1, fourier=([[-4.67373,2.03735,-6.25993,-0.27325,-0.048748], [-0.982845,1.76637,-1.57619,0.474364,-0.000681718]],"kJ/mol")),
+ HinderedRotor(inertia=(2.81525,"amu*angstrom^2"), symmetry=3, barrier=(2.96807,"kcal/mol")),
+ ],
+ spinMultiplicity = 1,
+ opticalIsomers = 1,
+ ),
+ molecularWeight = (74.07,"g/mol"),
+ transportData=TransportData(sigma=(5.94, 'angstrom'), epsilon=(559, 'K')),
+ energyTransferModel = SingleExponentialDown(alpha0=(447.5*0.011962,"kJ/mol"), T0=(300,"K"), n=0.85),
+ )
+
+ self.nC4H10O.fromSMILES('CCCCO')
+
+ self.nC4H8 = Species(
+ label = 'n-C4H8',
+ conformer = Conformer(
+ E0 = (-17.8832,'kJ/mol'),
+ modes = [
+ IdealGasTranslation(mass=(56.06,"g/mol")),
+ NonlinearRotor(inertia=([22.2748,122.4,125.198],"amu*angstrom^2"), symmetry=1),
+ HarmonicOscillator(frequencies=([308.537,418.67,636.246,788.665,848.906,936.762,979.97,1009.48,1024.22,1082.96,1186.38,1277.55,1307.65,1332.87,1396.67,1439.09,1469.71,1484.45,1493.19,1691.49,2972.12,2994.31,3018.48,3056.87,3062.76,3079.38,3093.54,3174.52],"cm^-1")),
+ HinderedRotor(inertia=(5.28338,"amu*angstrom^2"), symmetry=1, fourier=([[-0.579364,-0.28241,-4.46469,0.143368,0.126756], [1.01804,-0.494628,-0.00318651,-0.245289,0.193728]],"kJ/mol")),
+ HinderedRotor(inertia=(2.60818,"amu*angstrom^2"), symmetry=3, fourier=([[0.0400372,0.0301986,-6.4787,-0.0248675,-0.0324753], [0.0312541,0.0538,-0.493785,0.0965968,0.125292]],"kJ/mol")),
+ ],
+ spinMultiplicity = 1,
+ opticalIsomers = 1,
+ ),
+ )
+
+ self.nC4H8.fromSMILES('CCC=C')
+
+ self.H2O = Species(
+ label = 'H2O',
+ conformer = Conformer(
+ E0 = (-269.598,'kJ/mol'),
+ modes = [
+ IdealGasTranslation(mass=(18.01,"g/mol")),
+ NonlinearRotor(inertia=([0.630578,1.15529,1.78586],"amu*angstrom^2"), symmetry=2),
+ HarmonicOscillator(frequencies=([1622.09,3771.85,3867.85],"cm^-1")),
+ ],
+ spinMultiplicity = 1,
+ opticalIsomers = 1,
+ ),
+ )
+
+ self.H2O.fromSMILES('O')
+
+ self.N2 = Species(
+ label = 'N2',
+ molecularWeight = (28.04,"g/mol"),
+ transportData=TransportData(sigma=(3.41, "angstrom"), epsilon=(124, "K")),
+ energyTransferModel = None,
+ )
+
+ self.N2.fromSMILES('N#N')
+
+ logging.error('to TS')
+
+ self.TS = TransitionState(
+ label = 'TS',
+ conformer = Conformer(
+ E0 = (-42.4373,"kJ/mol"),
+ modes = [
+ IdealGasTranslation(mass=(74.07,"g/mol")),
+ NonlinearRotor(inertia=([40.518,232.666,246.092],"u*angstrom**2"), symmetry=1, quantum=False),
+ HarmonicOscillator(frequencies=([134.289,302.326,351.792,407.986,443.419,583.988,699.001,766.1,777.969,829.671,949.753,994.731,1013.59,1073.98,1103.79,1171.89,1225.91,1280.67,1335.08,1373.9,1392.32,1417.43,1469.51,1481.61,1490.16,1503.73,1573.16,2972.85,2984.3,3003.67,3045.78,3051.77,3082.37,3090.44,3190.73,3708.52],"kayser")),
+ HinderedRotor(inertia=(2.68206,"amu*angstrom^2"), symmetry=3, barrier=(3.35244,"kcal/mol")),
+ HinderedRotor(inertia=(9.77669,"amu*angstrom^2"), symmetry=1, fourier=([[0.208938,-1.55291,-4.05398,-0.105798,-0.104752], [2.00518,-0.020767,-0.333595,0.137791,-0.274578]],"kJ/mol")),
+ ],
+ spinMultiplicity = 1,
+ opticalIsomers = 1,
+ ),
+ frequency=(-2038.34,'cm^-1'),
+ )
+
+ self.reaction = Reaction(
+ label = 'dehydration',
+ reactants = [self.nC4H10O],
+ products = [self.nC4H8, self.H2O],
+ transitionState = self.TS,
+ kinetics = Arrhenius(A=(0.0387, 'm^3/(mol*s)'), n=2.7, Ea=(2.6192e4, 'J/mol'), T0=(1, 'K'))
+ )
+
+ self.network = Network(
+ label = 'n-butanol',
+ isomers = [Configuration(self.nC4H10O)],
+ reactants = [],
+ products = [Configuration(self.nC4H8, self.H2O)],
+ pathReactions = [self.reaction],
+ bathGas = {self.N2: 1.0},
+ )
+
+ self.pdepnetwork = deepcopy(self.network)
+ self.pdepnetwork.__class__ = PDepNetwork
+ self.pdepnetwork.source = [self.pdepnetwork.isomers[0].species[0]]
+ self.pdepnetwork.index = 1
+ self.pdepnetwork.explored = []
+
+
+ def test_SS_solver(self):
+ c = self.pdepnetwork.solve_SS_network(1000.0,100000.0)
+ self.assertAlmostEquals(c[0],4.791463e-06,2)
+
+ def test_energy_filter(self):
+ rxns = self.pdepnetwork.get_energy_filtered_reactions(1000.0,0.0)
+ self.assertEquals(len(rxns),1)
+ self.assertEquals(rxns[0],self.pdepnetwork.pathReactions[0])
+
+ def test_flux_filter(self):
+ rxns = self.pdepnetwork.get_rate_filtered_reactions(1000.0,100000.0,1.0)
+ self.assertEquals(len(rxns),0)
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/rmgpy/rmg/settings.py b/rmgpy/rmg/settings.py
index 0e9bdfc8dd..c3da9a7020 100644
--- a/rmgpy/rmg/settings.py
+++ b/rmgpy/rmg/settings.py
@@ -65,7 +65,8 @@ def __init__(self,toleranceMoveToCore=None, toleranceMoveEdgeReactionToCore=nump
toleranceMoveEdgeReactionToSurface=numpy.inf, toleranceMoveSurfaceSpeciesToCore=numpy.inf, toleranceMoveSurfaceReactionToCore=numpy.inf,
toleranceMoveEdgeReactionToSurfaceInterrupt=None,toleranceMoveEdgeReactionToCoreInterrupt=None, maximumEdgeSpecies=1000000, minCoreSizeForPrune=50,
minSpeciesExistIterationsForPrune=2, filterReactions=False, filterThreshold=1e8, ignoreOverallFluxCriterion=False, maxNumSpecies=None, maxNumObjsPerIter=1,
- terminateAtMaxObjects=False,toleranceThermoKeepSpeciesInEdge=numpy.inf,dynamicsTimeScale = Quantity((0.0,'sec'))):
+ terminateAtMaxObjects=False,toleranceThermoKeepSpeciesInEdge=numpy.inf,dynamicsTimeScale = Quantity((0.0,'sec')),
+ toleranceBranchReactionToCore=0.0, branchingIndex=0.5, branchingRatioMax=1.0):
self.fluxToleranceKeepInEdge = toleranceKeepInEdge
@@ -84,6 +85,9 @@ def __init__(self,toleranceMoveToCore=None, toleranceMoveEdgeReactionToCore=nump
self.toleranceThermoKeepSpeciesInEdge = toleranceThermoKeepSpeciesInEdge
self.terminateAtMaxObjects = terminateAtMaxObjects
self.dynamicsTimeScale = dynamicsTimeScale.value_si
+ self.toleranceBranchReactionToCore = toleranceBranchReactionToCore
+ self.branchingIndex = branchingIndex
+ self.branchingRatioMax = branchingRatioMax
if toleranceInterruptSimulation:
self.fluxToleranceInterrupt = toleranceInterruptSimulation
diff --git a/rmgpy/solver/base.pyx b/rmgpy/solver/base.pyx
index 909a64e21b..4e14f450f2 100644
--- a/rmgpy/solver/base.pyx
+++ b/rmgpy/solver/base.pyx
@@ -304,7 +304,7 @@ cdef class ReactionSystem(DASx):
cdef bool notInSurface
cdef object obj
- logging.info('initializing surface ...')
+ logging.debug('Initializing surface...')
productIndices = self.productIndices
reactantIndices = self.reactantIndices
@@ -354,7 +354,7 @@ cdef class ReactionSystem(DASx):
surfaceSpecies = [coreSpecies[i] for i in surfaceSpeciesIndices]
surfaceReactions = [coreReactions[i] for i in surfaceReactionIndices]
- logging.info('surface initialization complete')
+ logging.debug('Surface initialization complete')
return surfaceSpecies,surfaceReactions
@@ -577,7 +577,7 @@ cdef class ReactionSystem(DASx):
cdef double toleranceKeepInEdge,toleranceMoveToCore,toleranceMoveEdgeReactionToCore,toleranceInterruptSimulation
cdef double toleranceMoveEdgeReactionToCoreInterrupt,toleranceMoveEdgeReactionToSurface
cdef double toleranceMoveSurfaceSpeciesToCore,toleranceMoveSurfaceReactionToCore
- cdef double toleranceMoveEdgeReactionToSurfaceInterrupt
+ cdef double toleranceMoveEdgeReactionToSurfaceInterrupt, BNum
cdef bool ignoreOverallFluxCriterion, filterReactions
cdef double absoluteTolerance, relativeTolerance, sensitivityAbsoluteTolerance, sensitivityRelativeTolerance
cdef dict speciesIndex
@@ -595,17 +595,17 @@ cdef class ReactionSystem(DASx):
cdef numpy.float64_t maxSurfaceDifLnAccumNum, maxSurfaceSpeciesRate, conversion
cdef int maxSurfaceAccumReactionIndex, maxSurfaceSpeciesIndex
cdef object maxSurfaceAccumReaction, maxSurfaceSpecies
- cdef numpy.ndarray[numpy.float64_t,ndim=1] surfaceSpeciesProduction, surfaceSpeciesConsumption
+ cdef numpy.ndarray[numpy.float64_t,ndim=1] surfaceSpeciesProduction, surfaceSpeciesConsumption, branchingNums
cdef numpy.ndarray[numpy.float64_t,ndim=1] surfaceTotalDivAccumNums, surfaceSpeciesRateRatios
cdef numpy.ndarray[numpy.float64_t, ndim=1] forwardRateCoefficients, coreSpeciesConcentrations
- cdef double prevTime, totalMoles, c, volume, RTP, maxCharRate
+ cdef double prevTime, totalMoles, c, volume, RTP, maxCharRate, BR, RR
cdef double unimolecularThresholdVal, bimolecularThresholdVal, trimolecularThresholdVal
cdef bool useDynamicsTemp, firstTime, useDynamics, terminateAtMaxObjects, schanged
cdef numpy.ndarray[numpy.float64_t, ndim=1] edgeReactionRates
cdef double reactionRate, production, consumption
cdef numpy.ndarray[numpy.int_t,ndim=1] surfaceSpeciesIndices, surfaceReactionIndices
# cython declations for sensitivity analysis
- cdef numpy.ndarray[numpy.int_t, ndim=1] sensSpeciesIndices
+ cdef numpy.ndarray[numpy.int_t, ndim=1] sensSpeciesIndices, reactantSide, productSide
cdef numpy.ndarray[numpy.float64_t, ndim=1] moleSens, dVdk, normSens
cdef list time_array, normSens_array, newSurfaceReactions, newSurfaceReactionInds, newObjects, newObjectInds
@@ -639,6 +639,14 @@ cdef class ReactionSystem(DASx):
sensitivityRelativeTolerance = simulatorSettings.sens_rtol
filterReactions = modelSettings.filterReactions
maxNumObjsPerIter = modelSettings.maxNumObjsPerIter
+
+ if modelSettings.toleranceBranchReactionToCore != 0.0:
+ branchFactor = 1.0/modelSettings.toleranceBranchReactionToCore
+ BRmax = modelSettings.branchingRatioMax
+ branchingIndex = modelSettings.branchingIndex
+ else:
+ branchFactor = 0.0
+
#if not pruning always terminate at max objects, otherwise only do so if terminateAtMaxObjects=True
terminateAtMaxObjects = True if not prune else modelSettings.terminateAtMaxObjects
@@ -663,7 +671,8 @@ cdef class ReactionSystem(DASx):
surfaceReactionIndices = self.surfaceReactionIndices
totalDivAccumNums = None #the product of the ratios between accumulation numbers with and without a given reaction for products and reactants
-
+ branchingNums = None
+
invalidObjects = []
newSurfaceReactions = []
newSurfaceReactionInds = []
@@ -791,6 +800,7 @@ cdef class ReactionSystem(DASx):
coreSpeciesProductionRates = self.coreSpeciesProductionRates
edgeSpeciesRates = numpy.abs(self.edgeSpeciesRates)
networkLeakRates = numpy.abs(self.networkLeakRates)
+ coreSpeciesRateRatios = numpy.abs(self.coreSpeciesRates/charRate)
edgeSpeciesRateRatios = numpy.abs(self.edgeSpeciesRates/charRate)
networkLeakRateRatios = numpy.abs(self.networkLeakRates/charRate)
numEdgeReactions = self.numEdgeReactions
@@ -815,6 +825,47 @@ cdef class ReactionSystem(DASx):
invalidObjects.append(maxSpecies)
break
+ if branchFactor != 0.0 and not firstTime:
+ ######################################################
+ # Calculation of branching numbers for edge reactions#
+ ######################################################
+ branchingNums = numpy.zeros(numEdgeReactions)
+ for index in xrange(numEdgeReactions):
+ reactionRate = edgeReactionRates[index]
+
+ if reactionRate > 0:
+ reactantSide = self.reactantIndices[index+numCoreReactions,:]
+ productSide = self.productIndices[index+numCoreReactions,:]
+ else:
+ reactantSide = self.productIndices[index+numCoreReactions,:]
+ productSide = self.reactantIndices[index+numCoreReactions,:]
+
+ mults = []
+ for i in productSide:
+ if i == -1:
+ continue
+ elif i 2:
+ continue
+
+ for spcIndex in reactantSide:
+ if spcIndex != -1 and spcIndexBRmax:
+ BR = BRmax
+ BNum = branchFactor*BR*RR**branchingIndex
+ if BNum>branchingNums[index]:
+ branchingNums[index] = BNum
+
if useDynamics and not firstTime and self.t >= dynamicsTimeScale:
#######################################################
# Calculation of dynamics criterion for edge reactions#
@@ -956,10 +1007,12 @@ cdef class ReactionSystem(DASx):
newObjectInds = []
newObjects = []
newObjectVals = []
+ newObjectType = []
tempNewObjects = []
tempNewObjectInds = []
tempNewObjectVals = []
+ tempNewObjectType = []
newSurfaceRxnInds = []
interrupt = False
@@ -974,6 +1027,7 @@ cdef class ReactionSystem(DASx):
tempNewObjects.append(edgeSpecies[ind])
tempNewObjectInds.append(ind)
tempNewObjectVals.append(RR)
+ tempNewObjectType.append('RR')
if RR > toleranceInterruptSimulation:
logging.info('At time {0:10.4e} s, species {1} at {2} exceeded the minimum rate for simulation interruption of {3}'.format(self.t, obj, RR, toleranceInterruptSimulation))
interrupt = True
@@ -984,11 +1038,37 @@ cdef class ReactionSystem(DASx):
newObjects.extend([tempNewObjects[q] for q in sortedInds])
newObjectInds.extend([tempNewObjectInds[q] for q in sortedInds])
newObjectVals.extend([tempNewObjectVals[q] for q in sortedInds])
+ newObjectType.extend([tempNewObjectType[q] for q in sortedInds])
+
+ tempNewObjects = []
+ tempNewObjectInds = []
+ tempNewObjectVals = []
+ tempNewObjectType = []
+
+ if branchFactor != 0.0 and not firstTime:
+ #movement of reactions to core based on branching number
+ for ind,obj in enumerate(edgeReactions):
+ BNum = branchingNums[ind]
+ if BNum > 1:
+ if not(obj in newObjects or obj in invalidObjects):
+ tempNewObjects.append(edgeReactions[ind])
+ tempNewObjectInds.append(ind)
+ tempNewObjectVals.append(BNum)
+ tempNewObjectType.append('branching')
+
+
+ sortedInds = numpy.argsort(numpy.array(tempNewObjectVals)).tolist()[::-1]
+
+ newObjects.extend([tempNewObjects[q] for q in sortedInds])
+ newObjectInds.extend([tempNewObjectInds[q] for q in sortedInds])
+ newObjectVals.extend([tempNewObjectVals[q] for q in sortedInds])
+ newObjectType.extend([tempNewObjectType[q] for q in sortedInds])
tempNewObjects = []
tempNewObjectInds = []
tempNewObjectVals = []
-
+ tempNewObjectType = []
+
if useDynamics and not firstTime and self.t >= dynamicsTimeScale:
#movement of reactions to core/surface based on dynamics number
validLayeringIndices = self.validLayeringIndices
@@ -1001,12 +1081,14 @@ cdef class ReactionSystem(DASx):
tempNewObjects.append(edgeReactions[ind])
tempNewObjectInds.append(ind)
tempNewObjectVals.append(dlnaccum)
+ tempNewObjectType.append('dyn')
elif dlnaccum > toleranceMoveEdgeReactionToSurface and ind in validLayeringIndices:
if not(obj in newObjects or obj in invalidObjects):
tempNewObjects.append(edgeReactions[ind])
tempNewObjectInds.append(ind)
tempNewObjectVals.append(dlnaccum)
tempSurfaceObjects.append(edgeReactions[ind])
+ tempNewObjectType.append('dyn')
if dlnaccum > toleranceMoveEdgeReactionToCoreInterrupt:
logging.info('At time {0:10.4e} s, Reaction {1} at {2} exceeded the minimum difference in total log(accumulation number) for simulation interruption of {3}'.format(self.t, obj,dlnaccum,toleranceMoveEdgeReactionToCoreInterrupt))
interrupt = True
@@ -1016,12 +1098,14 @@ cdef class ReactionSystem(DASx):
newObjects.extend([tempNewObjects[q] for q in sortedInds])
newObjectInds.extend([tempNewObjectInds[q] for q in sortedInds])
newObjectVals.extend([tempNewObjectVals[q] for q in sortedInds])
+ newObjectType.extend([tempNewObjectType[q] for q in sortedInds])
newSurfaceRxnInds = [newObjects.index(obj) for obj in tempSurfaceObjects]
tempNewObjects = []
tempNewObjectInds = []
tempNewObjectVals = []
+ tempNewObjectType = []
#Determination of pdepNetworks in need of exploring
@@ -1033,6 +1117,7 @@ cdef class ReactionSystem(DASx):
tempNewObjects.append(pdepNetworks[ind])
tempNewObjectInds.append(ind)
tempNewObjectVals.append(LR)
+ tempNewObjectType.append('pdep')
if LR > toleranceInterruptSimulation:
logging.info('At time {0:10.4e} s, PDepNetwork #{1:d} at {2} exceeded the minimum rate for simulation interruption of {3}'.format(self.t, obj.index,LR,toleranceInterruptSimulation))
interrupt = True
@@ -1042,10 +1127,12 @@ cdef class ReactionSystem(DASx):
newObjects.extend([tempNewObjects[q] for q in sortedInds])
newObjectInds.extend([tempNewObjectInds[q] for q in sortedInds])
newObjectVals.extend([tempNewObjectVals[q] for q in sortedInds])
+ newObjectType.extend([tempNewObjectType[q] for q in sortedInds])
tempNewObjects = []
tempNewObjectInds = []
tempNewObjectVals = []
+ tempNewObjectType = []
###########################
#Overall Object Processing#
@@ -1058,7 +1145,8 @@ cdef class ReactionSystem(DASx):
newObjects = newObjects[:num]
newObjectInds = newObjectInds[:num]
newObjectVals = newObjectVals[:num]
-
+ newObjectType = newObjectType[:num]
+
if terminateAtMaxObjects and len(invalidObjects)+len(newObjects) >= maxNumObjsPerIter:
logging.info('Reached max number of objects...preparing to terminate')
interrupt = True
@@ -1070,12 +1158,15 @@ cdef class ReactionSystem(DASx):
if isinstance(obj,Species):
logging.info('At time {0:10.4e} s, species {1} at rate ratio {2} exceeded the minimum rate for moving to model core of {3}'.format(self.t, obj,val,toleranceMoveToCore))
elif isinstance(obj,Reaction):
- if i in newSurfaceRxnInds:
- logging.info('At time {0:10.4e} s, Reaction {1} at {2} exceeded the minimum difference in total log(accumulation number) for moving to model surface of {3}'.format(self.t, obj, val,toleranceMoveEdgeReactionToSurface))
- newSurfaceReactions.append(obj)
- newSurfaceReactionInds.append(ind)
- else:
- logging.info('At time {0:10.4e} s, Reaction {1} at {2} exceeded the minimum difference in total log(accumulation number) for moving to model core of {3}'.format(self.t, obj, val,toleranceMoveEdgeReactionToCore))
+ if newObjectType[i] == 'dyn':
+ if i in newSurfaceRxnInds:
+ logging.info('At time {0:10.4e} s, Reaction {1} at {2} exceeded the minimum difference in total log(accumulation number) for moving to model surface of {3}'.format(self.t, obj, val,toleranceMoveEdgeReactionToSurface))
+ newSurfaceReactions.append(obj)
+ newSurfaceReactionInds.append(ind)
+ else:
+ logging.info('At time {0:10.4e} s, Reaction {1} at {2} exceeded the minimum difference in total log(accumulation number) for moving to model core of {3}'.format(self.t, obj, val,toleranceMoveEdgeReactionToCore))
+ elif newObjectType[i] == 'branching':
+ logging.info('At time {0:10.4e} s, Reaction {1} at a branching number of {2} exceeded the threshold of 1 for moving to model core'.format(self.t, obj, val))
else:
logging.info('At time {0:10.4e} s, PDepNetwork #{1:d} at {2} exceeded the minimum rate for exploring of {3}'.format(self.t, obj.index, val,toleranceMoveToCore))
diff --git a/rmgpy/solver/liquid.pyx b/rmgpy/solver/liquid.pyx
index 314379f486..62d5faa684 100644
--- a/rmgpy/solver/liquid.pyx
+++ b/rmgpy/solver/liquid.pyx
@@ -63,7 +63,7 @@ cdef class LiquidReactor(ReactionSystem):
cdef public dict sensConditions
- def __init__(self, T, initialConcentrations, nSims=None, termination=None, sensitiveSpecies=None, sensitivityThreshold=1e-3, sensConditions=None, constSPCNames=None):
+ def __init__(self, T, initialConcentrations, nSims=1, termination=None, sensitiveSpecies=None, sensitivityThreshold=1e-3, sensConditions=None, constSPCNames=None):
ReactionSystem.__init__(self, termination, sensitiveSpecies, sensitivityThreshold)
diff --git a/rmgpy/solver/simple.pyx b/rmgpy/solver/simple.pyx
index 4b4f354ce2..8b755f6179 100644
--- a/rmgpy/solver/simple.pyx
+++ b/rmgpy/solver/simple.pyx
@@ -108,7 +108,7 @@ cdef class SimpleReactor(ReactionSystem):
cdef public list Prange
cdef public int nSims
- def __init__(self, T, P, initialMoleFractions, nSims=None, termination=None, sensitiveSpecies=None, sensitivityThreshold=1e-3,sensConditions=None):
+ def __init__(self, T, P, initialMoleFractions, nSims=1, termination=None, sensitiveSpecies=None, sensitivityThreshold=1e-3,sensConditions=None):
ReactionSystem.__init__(self, termination, sensitiveSpecies, sensitivityThreshold)
diff --git a/rmgpy/species.pxd b/rmgpy/species.pxd
index 4102d71cd2..377bc0a56c 100644
--- a/rmgpy/species.pxd
+++ b/rmgpy/species.pxd
@@ -52,6 +52,7 @@ cdef class Species:
cdef public float symmetryNumber
cdef public bint isSolvent
cdef public int creationIteration
+ cdef public bint explicitlyAllowed
cpdef generate_resonance_structures(self, bint keep_isomorphic=?, bint filter_structures=?)
diff --git a/rmgpy/species.py b/rmgpy/species.py
index 589ea3b3d4..7db5212623 100644
--- a/rmgpy/species.py
+++ b/rmgpy/species.py
@@ -73,7 +73,7 @@ class Species(object):
`thermo` The heat capacity model for the species
`conformer` The molecular conformer for the species
`molecule` A list of the :class:`Molecule` objects describing the molecular structure
- `transportData` A set of transport collision parameters
+ `transportData` A set of transport collision parameters
`molecularWeight` The molecular weight of the species
`energyTransferModel` The collisional energy transfer model to use
`reactive` ``True`` if the species participates in reaction families, ``False`` if not
@@ -90,7 +90,7 @@ class Species(object):
def __init__(self, index=-1, label='', thermo=None, conformer=None,
molecule=None, transportData=None, molecularWeight=None,
energyTransferModel=None, reactive=True, props=None, aug_inchi=None,
- symmetryNumber = -1, creationIteration = 0):
+ symmetryNumber = -1, creationIteration = 0, explicitlyAllowed=False):
self.index = index
self.label = label
self.thermo = thermo
@@ -105,6 +105,7 @@ def __init__(self, index=-1, label='', thermo=None, conformer=None,
self.symmetryNumber = symmetryNumber
self.isSolvent = False
self.creationIteration = creationIteration
+ self.explicitlyAllowed = explicitlyAllowed
# Check multiplicity of each molecule is the same
if molecule is not None and len(molecule)>1:
mult = molecule[0].multiplicity
@@ -153,11 +154,16 @@ def __reduce__(self):
"""
return (Species, (self.index, self.label, self.thermo, self.conformer, self.molecule, self.transportData, self.molecularWeight, self.energyTransferModel, self.reactive, self.props))
- def getMolecularWeight(self):
+ @property
+ def molecularWeight(self):
+ """The molecular weight of the species. (Note: value_si is in kg/molecule not kg/mol)"""
+ if self._molecularWeight is None and self.molecule is not None and len(self.molecule) > 0:
+ self._molecularWeight = quantity.Mass(self.molecule[0].getMolecularWeight(), 'kg/mol')
return self._molecularWeight
- def setMolecularWeight(self, value):
+
+ @molecularWeight.setter
+ def molecularWeight(self, value):
self._molecularWeight = quantity.Mass(value)
- molecularWeight = property(getMolecularWeight, setMolecularWeight, """The molecular weight of the species. (Note: value_si is in kg/molecule not kg/mole)""")
def generate_resonance_structures(self, keep_isomorphic=True, filter_structures=True):
"""
@@ -418,8 +424,13 @@ def getDensityOfStates(self, Elist):
Return the density of states :math:`\\rho(E) \\ dE` at the specified
energies `Elist` in J/mol above the ground state.
"""
+ from rmgpy.exceptions import StatmechError
if self.hasStatMech():
- return self.conformer.getDensityOfStates(Elist)
+ try:
+ return self.conformer.getDensityOfStates(Elist)
+ except StatmechError:
+ logging.error('StatmechError raised for species {0}'.format(self.label))
+ raise
else:
raise Exception('Unable to calculate density of states for species {0!r}: no statmech data available.'.format(self.label))
@@ -451,9 +462,12 @@ def getResonanceHybrid(self):
# get labeled resonance isomers
self.generate_resonance_structures(keep_isomorphic=True)
+ # only consider reactive molecules as representative structures
+ molecules = [mol for mol in self.molecule if mol.reactive]
+
# return if no resonance
- if len(self.molecule) == 1:
- return self.molecule[0]
+ if len(molecules) == 1:
+ return molecules[0]
# create a sorted list of atom objects for each resonance structure
cython.declare(atomsFromStructures = list, oldAtoms = list, newAtoms = list,
@@ -466,11 +480,11 @@ def getResonanceHybrid(self):
atoms=list,)
atomsFromStructures = []
- for newMol in self.molecule:
+ for newMol in molecules:
newMol.atoms.sort(key=lambda atom: atom.id)
atomsFromStructures.append(newMol.atoms)
- numResonanceStructures = len(self.molecule)
+ numResonanceStructures = len(molecules)
# make original structure with no bonds
newMol = Molecule()
@@ -489,17 +503,21 @@ def getResonanceHybrid(self):
newMol.addBond(bond)
# set bonds to the proper value
- for structureNum, oldMol in enumerate(self.molecule):
+ for structureNum, oldMol in enumerate(molecules):
oldAtoms = atomsFromStructures[structureNum]
for index1, atom1 in enumerate(oldAtoms):
+ # make bond orders average of resonance structures
for atom2 in atom1.bonds:
index2 = oldAtoms.index(atom2)
newBond = newMol.getBond(newAtoms[index1], newAtoms[index2])
oldBondOrder = oldMol.getBond(oldAtoms[index1], oldAtoms[index2]).getOrderNum()
newBond.applyAction(('CHANGE_BOND',None,oldBondOrder / numResonanceStructures / 2))
-
+ # set radicals in resonance hybrid to maximum of all structures
+ if atom1.radicalElectrons > 0:
+ newAtoms[index1].radicalElectrons = max(atom1.radicalElectrons,
+ newAtoms[index1].radicalElectrons)
newMol.updateAtomTypes(logSpecies = False, raiseException=False)
return newMol
@@ -637,7 +655,7 @@ def generateStatMech(self):
have already provided a thermodynamics model using e.g.
:meth:`generateThermoData()`.
"""
-
+ logging.debug("Generating statmech for species {}".format(self.label))
from rmgpy.data.rmg import getDB
try:
statmechDB = getDB('statmech')
@@ -651,10 +669,30 @@ def generateStatMech(self):
if self.conformer is None:
self.conformer = Conformer()
- self.conformer.E0 = self.getThermoData().E0
+
+ if self.conformer.E0 is None:
+ self.setE0WithThermo()
+
self.conformer.modes = conformer.modes
self.conformer.spinMultiplicity = conformer.spinMultiplicity
-
+ if self.conformer.E0 is None or not self.hasStatMech():
+ from rmgpy.exceptions import StatmechError
+ logging.error('The conformer in question is {}'.format(self.conformer))
+ raise StatmechError('Species {0} does not have stat mech after generateStatMech called'.format(self.label))
+
+ def setE0WithThermo(self):
+ """
+ Helper method that sets species' E0 using the species' thermo data
+ """
+ if self.getThermoData().E0 is not None:
+ self.conformer.E0 = self.getThermoData().E0
+ else:
+ if not self.thermo.Cp0 or not self.thermo.CpInf:
+ # set Cp0 and CpInf
+ from rmgpy.data.thermo import findCp0andCpInf
+ findCp0andCpInf(self, self.thermo)
+ self.conformer.E0 = self.getThermoData().toWilhoit().E0
+
def generateEnergyTransferModel(self):
"""
Generate the collisional energy transfer model parameters for the
@@ -725,7 +763,7 @@ def getPartitionFunction(self, T):
if self.conformer is not None and len(self.conformer.modes) > 0:
Q = self.conformer.getPartitionFunction(T)
else:
- raise Exception('Unable to calculate partition function for transition state {0!r}: no statmech data available.'.format(self.label))
+ raise SpeciesError('Unable to calculate partition function for transition state {0!r}: no statmech data available.'.format(self.label))
return Q
def getHeatCapacity(self, T):
diff --git a/rmgpy/speciesTest.py b/rmgpy/speciesTest.py
index 75ac892ed0..4d7ce56bcb 100644
--- a/rmgpy/speciesTest.py
+++ b/rmgpy/speciesTest.py
@@ -206,7 +206,7 @@ def test_is_isomorphic_to_filtered_resonance_structure(self):
3 O u1 p2 c0 {1,S}
4 O u0 p1 c+1 {1,T}
5 H u0 p0 c0 {2,S}""")
- spc4_correct = Species().fromSMILES('N#[N+][S-](O)O') # check O4dc penalty
+ spc4_correct = Species().fromSMILES('OS(=[N+]=[N-])O') # check O4dc penalty
spc4_nonrepresentative = Species().fromAdjacencyList("""1 S u0 p0 c+1 {2,D} {3,D} {4,S}
2 N u0 p1 c0 {1,D} {5,S}
3 O u0 p1 c+1 {1,D} {6,S}
@@ -214,18 +214,12 @@ def test_is_isomorphic_to_filtered_resonance_structure(self):
5 N u0 p3 c-2 {2,S}
6 H u0 p0 c0 {3,S}
7 H u0 p0 c0 {4,S}""")
- spc5_correct = Species().fromSMILES('[N]=NO') # check val N > 8 penalty
- spc5_nonrepresentative = Species().fromAdjacencyList("""multiplicity 2
- 1 N u1 p0 c0 {2,S} {3,T}
- 2 O u0 p2 c0 {1,S} {4,S}
- 3 N u0 p1 c0 {1,T}
- 4 H u0 p0 c0 {2,S}""")
- spc6_correct = Species().fromSMILES('[O][S]') # checks birad penalty
- spc6_nonrepresentative = Species().fromAdjacencyList("""multiplicity 3
+ spc5_correct = Species().fromSMILES('[O][S]') # checks birad penalty
+ spc5_nonrepresentative = Species().fromAdjacencyList("""multiplicity 3
1 O u0 p2 c0 {2,D}
2 S u2 p1 c0 {1,D}""")
- spc7_correct = Species().fromSMILES('N#[N+]SS[O-]') # checks the S#S case
- spc7_nonrepresentative = Species().fromAdjacencyList("""1 S u0 p1 c0 {2,S} {3,T}
+ spc6_correct = Species().fromSMILES('[N-]=[N+]=S=S=O') # checks the S#S case
+ spc6_nonrepresentative = Species().fromAdjacencyList("""1 S u0 p1 c0 {2,S} {3,T}
2 N u0 p0 c+1 {1,S} {4,T}
3 S u0 p1 c0 {1,T} {5,S}
4 N u0 p1 c0 {2,T}
@@ -241,7 +235,6 @@ def test_is_isomorphic_to_filtered_resonance_structure(self):
self.assertTrue(spc4_correct.isIsomorphic(spc4_nonrepresentative, generate_res=True))
self.assertTrue(spc5_correct.isIsomorphic(spc5_nonrepresentative, generate_res=True))
self.assertTrue(spc6_correct.isIsomorphic(spc6_nonrepresentative, generate_res=True))
- self.assertTrue(spc7_correct.isIsomorphic(spc7_nonrepresentative, generate_res=True))
def testGetResonanceHybrid(self):
"""
diff --git a/rmgpy/statmech/conformer.pyx b/rmgpy/statmech/conformer.pyx
index a436b2e0fc..b7ef457af1 100644
--- a/rmgpy/statmech/conformer.pyx
+++ b/rmgpy/statmech/conformer.pyx
@@ -46,7 +46,7 @@ from rmgpy.statmech.rotation cimport *
from rmgpy.statmech.vibration cimport *
from rmgpy.statmech.torsion cimport *
import logging
-
+from rmgpy.exceptions import StatmechError
################################################################################
cdef class Conformer:
@@ -198,6 +198,8 @@ cdef class Conformer:
cdef Mode mode
for mode in self.modes:
densStates = mode.getDensityOfStates(Elist, densStates)
+ if any(numpy.isnan(densStates)):
+ raise StatmechError("Obtained NaN for some of the density of states")
return densStates * self.spinMultiplicity * self.opticalIsomers
cpdef double getTotalMass(self, atoms=None) except -1:
diff --git a/rmgpy/statmech/torsion.pyx b/rmgpy/statmech/torsion.pyx
index 1b93eba647..866a32a224 100644
--- a/rmgpy/statmech/torsion.pyx
+++ b/rmgpy/statmech/torsion.pyx
@@ -204,8 +204,9 @@ cdef class HinderedRotor(Torsion):
V0 -= fourier[0,k] * (k+1) * (k+1)
V0 /= constants.Na
if V0 < 0:
- raise NegativeBarrierException(" Hindered rotor barrier height is less than 0 \n Try running cantherm in verbose mode, -v, to identify which hindered rotor \n Try changing the Hindered rotor fit to 'cosine'")
-# raise Exception("Hindered rotor barrier height is less than 0 \nTry running cantherm in verbose mode, -v, to identify which hindered rotor \nTry changing the Hindered rotor fit to 'cosine'")
+ raise NegativeBarrierException("Hindered rotor barrier height is less than 0 \n Try running Arkane"
+ "in verbose mode, -v, to identify which rotor caused the error\n"
+ "Also, try changing the Hindered rotor fit to 'cosine'")
frequency = 1.0 / (2. * constants.pi) * sqrt(V0 / I)
else:
V0 = self._barrier.value_si / constants.Na
diff --git a/rmgpy/test_data/Cantherm/tst1/pdep_sa.py b/rmgpy/test_data/arkane/tst1/pdep_sa.py
similarity index 100%
rename from rmgpy/test_data/Cantherm/tst1/pdep_sa.py
rename to rmgpy/test_data/arkane/tst1/pdep_sa.py
diff --git a/rmgpy/test_data/testing_database/kinetics/families/R_Addition_MultipleBond/groups.py b/rmgpy/test_data/testing_database/kinetics/families/R_Addition_MultipleBond/groups.py
index d6ebc0a7fc..4fef873ce4 100644
--- a/rmgpy/test_data/testing_database/kinetics/families/R_Addition_MultipleBond/groups.py
+++ b/rmgpy/test_data/testing_database/kinetics/families/R_Addition_MultipleBond/groups.py
@@ -21,7 +21,11 @@
entry(
index = 0,
label = "R_R",
- group = "OR{Cd_R, Ct_R, Od_R, Sd_R, Nd_R, Nt_R}",
+ group =
+"""
+1 *1 R!H u0 {2,[D,T,B]}
+2 *2 R!H u0 {1,[D,T,B]}
+""",
kinetics = None,
)
@@ -34,6 +38,17 @@
entry(
index = 2,
+ label = "Cb_Cb",
+ group =
+"""
+1 *1 [Cb,Cbf] u0 {2,B}
+2 *2 [Cb,Cbf] u0 {1,B}
+""",
+ kinetics = None,
+)
+
+entry(
+ index = 3,
label = "Cd_R",
group =
"""
@@ -44,7 +59,7 @@
)
entry(
- index = 3,
+ index = 4,
label = "Ck_O",
group =
"""
@@ -56,7 +71,7 @@
)
entry(
- index = 127,
+ index = 5,
label = "Ck_Ca",
group =
"""
@@ -69,7 +84,7 @@
)
entry(
- index = 838,
+ index = 6,
label = "Ct_R",
group =
"""
@@ -80,7 +95,7 @@
)
entry(
- index = 4,
+ index = 7,
label = "Od_R",
group =
"""
@@ -91,14 +106,14 @@
)
entry(
- index = 5,
+ index = 8,
label = "Nd_R",
group = "OR{N1dc_R, N3d_R}",
kinetics = None,
)
entry(
- index = 6,
+ index = 9,
label = "N1dc_R",
group =
"""
@@ -109,7 +124,7 @@
)
entry(
- index = 7,
+ index = 10,
label = "N3d_R",
group =
"""
@@ -120,14 +135,14 @@
)
entry(
- index = 8,
+ index = 11,
label = "Nt_R",
group = "OR{N3t_R, N5t_R}",
kinetics = None,
)
entry(
- index = 9,
+ index = 12,
label = "N3t_R",
group =
"""
@@ -138,7 +153,7 @@
)
entry(
- index = 10,
+ index = 13,
label = "N5t_R",
group =
"""
@@ -149,7 +164,7 @@
)
entry(
- index = 11,
+ index = 14,
label = "Sd_R",
group =
"""
@@ -160,7 +175,7 @@
)
entry(
- index = 12,
+ index = 15,
label = "HJ",
group =
"""
@@ -170,14 +185,14 @@
)
entry(
- index = 13,
+ index = 16,
label = "Y_1centerquadrad",
group = "OR{C_quintet, C_triplet}",
kinetics = None,
)
entry(
- index = 14,
+ index = 17,
label = "C_quintet",
group =
"""
@@ -187,7 +202,7 @@
)
entry(
- index = 15,
+ index = 18,
label = "C_triplet",
group =
"""
@@ -197,14 +212,14 @@
)
entry(
- index = 16,
+ index = 19,
label = "Y_1centertrirad",
group = "OR{N_atom_quartet, N_atom_doublet, CH_quartet, CH_doublet}",
kinetics = None,
)
entry(
- index = 17,
+ index = 20,
label = "N_atom_quartet",
group =
"""
@@ -214,7 +229,7 @@
)
entry(
- index = 18,
+ index = 21,
label = "N_atom_doublet",
group =
"""
@@ -224,7 +239,7 @@
)
entry(
- index = 19,
+ index = 22,
label = "CH_quartet",
group =
"""
@@ -235,7 +250,7 @@
)
entry(
- index = 20,
+ index = 23,
label = "CH_doublet",
group =
"""
@@ -246,7 +261,7 @@
)
entry(
- index = 21,
+ index = 24,
label = "Y_1centerbirad",
group =
"""
@@ -256,7 +271,7 @@
)
entry(
- index = 22,
+ index = 25,
label = "CJ",
group =
"""
@@ -266,7 +281,7 @@
)
entry(
- index = 23,
+ index = 26,
label = "CbJ",
group =
"""
@@ -276,7 +291,7 @@
)
entry(
- index = 24,
+ index = 27,
label = "CtJ",
group =
"""
@@ -287,7 +302,7 @@
)
entry(
- index = 25,
+ index = 28,
label = "C2b",
group =
"""
@@ -298,7 +313,7 @@
)
entry(
- index = 26,
+ index = 29,
label = "C=SJ",
group =
"""
@@ -309,7 +324,7 @@
)
entry(
- index = 27,
+ index = 30,
label = "CO_rad",
group =
"""
@@ -321,7 +336,7 @@
)
entry(
- index = 28,
+ index = 31,
label = "CsJ",
group =
"""
@@ -334,14 +349,14 @@
)
entry(
- index = 29,
+ index = 32,
label = "OJ",
group = "OR{OJ_pri, OJ_sec, O2b}",
kinetics = None,
)
entry(
- index = 30,
+ index = 33,
label = "OJ_pri",
group =
"""
@@ -352,7 +367,7 @@
)
entry(
- index = 31,
+ index = 34,
label = "OJ_sec",
group =
"""
@@ -363,7 +378,7 @@
)
entry(
- index = 32,
+ index = 35,
label = "O2b",
group =
"""
@@ -374,7 +389,7 @@
)
entry(
- index = 33,
+ index = 36,
label = "SJ",
group =
"""
@@ -384,7 +399,7 @@
)
entry(
- index = 34,
+ index = 37,
label = "SsJ",
group =
"""
@@ -395,14 +410,14 @@
)
entry(
- index = 35,
+ index = 38,
label = "NJ",
group = "OR{N3J}",
kinetics = None,
)
entry(
- index = 36,
+ index = 39,
label = "N3J",
group =
"""
@@ -412,7 +427,7 @@
)
entry(
- index = 37,
+ index = 40,
label = "N3sJ",
group =
"""
@@ -422,7 +437,7 @@
)
entry(
- index = 38,
+ index = 41,
label = "N3dJ",
group =
"""
@@ -434,6 +449,7 @@
tree(
"""
L1: R_R
+ L2: Cb_Cb
L2: Cd_R
L3: Ck_O
L3: Ck_Ca
diff --git a/rmgpy/tools/loader.py b/rmgpy/tools/loader.py
index 2f0758fb26..7e15b1cdce 100644
--- a/rmgpy/tools/loader.py
+++ b/rmgpy/tools/loader.py
@@ -108,7 +108,8 @@ def loadRMGPyJob(inputFile, chemkinFile=None, speciesDict=None, generateImages=T
for t in reactionSystem.termination:
if isinstance(t, TerminationConversion):
t.species = speciesDict[t.species]
- reactionSystem.sensitiveSpecies = [speciesDict[spec] for spec in reactionSystem.sensitiveSpecies]
+ if reactionSystem.sensitiveSpecies != ['all']:
+ reactionSystem.sensitiveSpecies = [speciesDict[spec] for spec in reactionSystem.sensitiveSpecies]
# Set reaction model to match model loaded from Chemkin file
rmg.reactionModel.core.species = speciesList
diff --git a/rmgpy/tools/plot.py b/rmgpy/tools/plot.py
index 0a2f5a3d8d..80c77e76f2 100644
--- a/rmgpy/tools/plot.py
+++ b/rmgpy/tools/plot.py
@@ -194,7 +194,7 @@ def plot(self, filename=''):
if self.title:
plt.title(self.title)
- ax.grid('on')
+ ax.grid(True)
handles, labels = ax.get_legend_handles_labels()
if labels:
# Create a legend outside the plot and adjust width based off of longest legend label
@@ -291,7 +291,7 @@ def comparePlot(self, otherGenericPlot, filename='', title='', xlabel='', ylabel
if title:
plt.title(title)
- ax.grid('on')
+ ax.grid(True)
handles, labels = ax.get_legend_handles_labels()
if labels:
# Create a legend outside the plot and adjust width based off of longest legend label
diff --git a/rmgpy/tools/simulate.py b/rmgpy/tools/simulate.py
index 3da1b14d0a..1f47670ed9 100644
--- a/rmgpy/tools/simulate.py
+++ b/rmgpy/tools/simulate.py
@@ -90,6 +90,8 @@ def simulate(rmg, diffusionLimited=True):
if reactionSystem.sensitiveSpecies:
logging.info('Conducting simulation and sensitivity analysis of reaction system %s...' % (index+1))
+ if reactionSystem.sensitiveSpecies == ['all']:
+ reactionSystem.sensitiveSpecies = rmg.reactionModel.core.species
else:
logging.info('Conducting simulation of reaction system %s...' % (index+1))
diff --git a/rmgpy/tools/uncertainty.py b/rmgpy/tools/uncertainty.py
index a7d583057a..f38b79901a 100644
--- a/rmgpy/tools/uncertainty.py
+++ b/rmgpy/tools/uncertainty.py
@@ -593,7 +593,12 @@ def sensitivityAnalysis(self, initialMoleFractions, sensitiveSpecies, T, P, term
P = Quantity(P)
termination=[TerminationTime(Quantity(terminationTime))]
- reactionSystem = SimpleReactor(T, P, initialMoleFractions, termination, sensitiveSpecies, sensitivityThreshold)
+ reactionSystem = SimpleReactor(T=T,
+ P=P,
+ initialMoleFractions=initialMoleFractions,
+ termination=termination,
+ sensitiveSpecies=sensitiveSpecies,
+ sensitivityThreshold=sensitivityThreshold)
# Create the csv worksheets for logging sensitivity
util.makeOutputSubdirectory(self.outputDirectory, 'solver')
diff --git a/rmgpy/version.py b/rmgpy/version.py
index ad3d8c090e..6eae07b946 100644
--- a/rmgpy/version.py
+++ b/rmgpy/version.py
@@ -34,4 +34,4 @@
This value can be accessed via `rmgpy.__version__`.
"""
-__version__ = '2.2.1'
+__version__ = '2.3.0'
diff --git a/scripts/convertFAME.py b/scripts/convertFAME.py
index f7a39d8f55..fa38c65713 100644
--- a/scripts/convertFAME.py
+++ b/scripts/convertFAME.py
@@ -29,7 +29,9 @@
###############################################################################
"""
-Convert a FAME input file to a MEASURE input file. MEASURE is the previous version of CanTherm.
+Convert a FAME input file to a MEASURE input file.
+MEASURE is the previous version of CanTherm.
+CanTherm is the previous version of Arkane.
"""
import argparse
@@ -40,7 +42,7 @@
import rmgpy.constants as constants
from rmgpy.quantity import Quantity, Energy
-from rmgpy.cantherm.pdep import PressureDependenceJob
+from arkane.pdep import PressureDependenceJob
from rmgpy.pdep import Network, Configuration, SingleExponentialDown
from rmgpy.species import Species, TransitionState
@@ -478,7 +480,7 @@ def ismatch(speciesList1, speciesList2):
for fstr in args.file:
- # Construct CanTherm job from FAME input
+ # Construct Arkane job from FAME input
job = loadFAMEInput(fstr, moleculeDict)
if Emax is not None:
diff --git a/scripts/generateChemkinHTML.py b/scripts/generateChemkinHTML.py
index 8b6dfc033f..86023b0cf4 100644
--- a/scripts/generateChemkinHTML.py
+++ b/scripts/generateChemkinHTML.py
@@ -76,7 +76,7 @@ def main(chemkin, dictionary, output, foreign):
chemkin = os.path.abspath(args.chemkin[0])
dictionary = os.path.abspath(args.dictionary[0])
- output = os.path.abspath(args.output[0]) if args.output is not None else os.getcwd()
+ output = os.path.abspath(args.output) if args.output is not None else os.getcwd()
foreign = args.foreign
main(chemkin, dictionary, output, foreign)
diff --git a/setup.py b/setup.py
index 61a8dd271e..31a811f334 100644
--- a/setup.py
+++ b/setup.py
@@ -59,6 +59,7 @@
################################################################################
+
def getMainExtensionModules():
return [
# Kinetics
@@ -111,7 +112,8 @@ def getMainExtensionModules():
Extension('rmgpy.species', ['rmgpy/species.py'], include_dirs=['.']),
Extension('rmgpy.chemkin', ['rmgpy/chemkin.pyx'], include_dirs=['.']),
]
-
+
+
def getSolverExtensionModules():
return [
Extension('rmgpy.solver.base', ['rmgpy/solver/base.pyx'], include_dirs=['.']),
@@ -119,7 +121,8 @@ def getSolverExtensionModules():
Extension('rmgpy.solver.liquid', ['rmgpy/solver/liquid.pyx'], include_dirs=['.']),
]
-def getCanthermExtensionModules():
+
+def getArkaneExtensionModules():
return [
# Kinetics
Extension('rmgpy.kinetics.arrhenius', ['rmgpy/kinetics/arrhenius.pyx']),
@@ -169,11 +172,11 @@ def getCanthermExtensionModules():
# This is for `python setup.py build_ext solver`
sys.argv.remove('solver')
ext_modules.extend(getSolverExtensionModules())
-if 'cantherm' in sys.argv:
- # This is for `python setup.py build_ext cantherm`
- sys.argv.remove('cantherm')
+if 'arkane' in sys.argv:
+ # This is for `python setup.py build_ext arkane`
+ sys.argv.remove('arkane')
ext_modules.extend(getMainExtensionModules())
- ext_modules.extend(getCanthermExtensionModules())
+ ext_modules.extend(getArkaneExtensionModules())
if 'minimal' in sys.argv:
# This starts with the full install list, but removes anything that has a pure python mode
# i.e. in only includes things whose source is .pyx
@@ -186,7 +189,7 @@ def getCanthermExtensionModules():
if os.path.splitext(source)[1] == '.pyx':
ext_modules.append(module)
-scripts=['cantherm.py',
+scripts=['arkane.py',
'rmg.py',
'scripts/checkModels.py',
'scripts/convertFAME.py',
@@ -208,9 +211,16 @@ def getCanthermExtensionModules():
for file in files:
if file.endswith('.py') or file.endswith('.pyx'):
if 'Test' not in file and '__init__' not in file:
- if not root.endswith('rmgpy/cantherm/files'):
- module = 'rmgpy' + root.partition('rmgpy')[-1].replace('/','.') + '.' + file.partition('.py')[0]
- modules.append(module)
+ module = 'rmgpy' + root.partition('rmgpy')[-1].replace('/','.') + '.' + file.partition('.py')[0]
+ modules.append(module)
+for root, dirs, files in os.walk('arkane'):
+ if 'data' in root:
+ continue
+ for file in files:
+ if file.endswith('.py') or file.endswith('.pyx'):
+ if 'Test' not in file and '__init__' not in file:
+ module = 'arkane' + root.partition('arkane')[-1].replace('/','.') + '.' + file.partition('.py')[0]
+ modules.append(module)
# Initiate the build and/or installation
@@ -223,7 +233,7 @@ def getCanthermExtensionModules():
author='William H. Green and the RMG Team',
author_email='rmg_dev@mit.edu',
url='http://reactionmechanismgenerator.github.io',
- packages=['rmgpy'],
+ packages=['rmgpy','arkane'],
py_modules = modules,
scripts=scripts,
cmdclass = {'build_ext': build_ext},
diff --git a/utilities.py b/utilities.py
index 0483fe93ea..0282dc4914 100644
--- a/utilities.py
+++ b/utilities.py
@@ -253,12 +253,12 @@ def replace_header(oldfile):
os.makedirs('tmp')
# Compile list of files to modify
- filelist = ['rmg.py', 'cantherm.py', 'setup.py']
+ filelist = ['rmg.py', 'arkane.py', 'setup.py']
root_dirs = ['rmgpy', 'scripts']
for root_dir in root_dirs:
for root, dirs, files in os.walk(root_dir):
- if 'test_data' in root or 'files' in root or '/tools/data' in root or '/cantherm/data' in root:
+ if 'test_data' in root or 'files' in root or '/tools/data' in root or '/arkane/data' in root:
continue
print root
for f in files: