| [6029a6] | 1 | <?xml version="1.0" encoding="UTF-8"?>
 | 
|---|
 | 2 | <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
 | 
|---|
 | 3 |                "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
 | 
|---|
 | 4 | <!ENTITY molecuilder_logo SYSTEM "pictures/molecuilder_logo.png" NDATA PNG>
 | 
|---|
 | 5 | <!ENTITY dialog_box SYSTEM "pictures/dialog_box.png" NDATA PNG>
 | 
|---|
 | 6 | <!ENTITY dialog_add-atom_tooltip SYSTEM "pictures/dialog_add-atom_tooltip.png" NDATA PNG>
 | 
|---|
 | 7 | <!ENTITY dialog_complex SYSTEM "pictures/dialog_complex.png" NDATA PNG>
 | 
|---|
 | 8 | <!ENTITY dialog_exit SYSTEM "pictures/dialog_exit.png" NDATA PNG>
 | 
|---|
 | 9 | <!ENTITY example_basic_view SYSTEM "pictures/example_basic_view.png" NDATA PNG>
 | 
|---|
 | 10 | ]>
 | 
|---|
 | 11 | <book version="5.0" xmlns="http://docbook.org/ns/docbook"
 | 
|---|
 | 12 |       xmlns:xlink="http://www.w3.org/1999/xlink"
 | 
|---|
 | 13 |       xmlns:xi="http://www.w3.org/2001/XInclude"
 | 
|---|
 | 14 |       xmlns:svg="http://www.w3.org/2000/svg"
 | 
|---|
 | 15 |       xmlns:m="http://www.w3.org/1998/Math/MathML"
 | 
|---|
 | 16 |       xmlns:html="http://www.w3.org/1999/xhtml"
 | 
|---|
 | 17 |       xmlns:db="http://docbook.org/ns/docbook">
 | 
|---|
 | 18 |   <info>
 | 
|---|
 | 19 |     <title>MoleCuilder - a Molecule Builder</title>
 | 
|---|
 | 20 | 
 | 
|---|
 | 21 |     <author>
 | 
|---|
 | 22 |       <personname><firstname>Frederik</firstname><surname>Heber</surname></personname>
 | 
|---|
 | 23 | 
 | 
|---|
 | 24 |       <affiliation>
 | 
|---|
 | 25 |         <orgname>heber@ins.uni-bonn.de</orgname>
 | 
|---|
 | 26 |       </affiliation>
 | 
|---|
 | 27 |     </author>
 | 
|---|
 | 28 | 
 | 
|---|
 | 29 |     <pubdate>07/03/14</pubdate>
 | 
|---|
 | 30 |   </info>
 | 
|---|
 | 31 | 
 | 
|---|
 | 32 |   <chapter>
 | 
|---|
 | 33 |     <title>Introduction</title>
 | 
|---|
 | 34 | 
 | 
|---|
 | 35 |     <figure>
 | 
|---|
 | 36 |       <title>MoleCuilder logo depicting a tesselated buckyball and a benzene
 | 
|---|
 | 37 |       molecule</title>
 | 
|---|
 | 38 | 
 | 
|---|
 | 39 |       <mediaobject>
 | 
|---|
 | 40 |         <imageobject>
 | 
|---|
 | 41 |           <imagedata entityref="molecuilder_logo" scalefit="1" width="100%"/>
 | 
|---|
 | 42 |         </imageobject>
 | 
|---|
 | 43 |       </mediaobject>
 | 
|---|
 | 44 |     </figure>
 | 
|---|
 | 45 | 
 | 
|---|
| [9bce96] | 46 |     <section xml:id='whatis'>
 | 
|---|
 | 47 |       <title  xml:id='whatis.title'>What is MoleCuilder?</title>
 | 
|---|
| [6029a6] | 48 | 
 | 
|---|
 | 49 |       <para>In Short,<command> MoleCuilder</command> is a concatenation of
 | 
|---|
 | 50 |       molecule and builder.</para>
 | 
|---|
 | 51 | 
 | 
|---|
 | 52 |       <para>In more words, molecular dynamics simulations are frequently
 | 
|---|
 | 53 |       employed to simulate material behavior under stress, chemical reactions
 | 
|---|
 | 54 |       such as of cementitious materials, or folding pathways and docking
 | 
|---|
 | 55 |       procedures of bio proteins. Even if the computational load, due to the
 | 
|---|
 | 56 |       large number of atoms, is very demanding, nonetheless they may serve as
 | 
|---|
 | 57 |       a starting point, e.g. extracting parameters for a coarser model.
 | 
|---|
 | 58 |       However, what is on the other hand the starting point of molecular
 | 
|---|
 | 59 |       dynamics simulations? It is the coordinate and element of each atom
 | 
|---|
 | 60 |       combined with potential functions that model the interactions.</para>
 | 
|---|
 | 61 | 
 | 
|---|
 | 62 |       <para>MoleCuilder allows to fully construct such a starting point:
 | 
|---|
 | 63 |       letting the user construct atomic and molecular geometries by a simple
 | 
|---|
 | 64 |       point&click approach, a CAD-pendant on the nanoscale. Creating
 | 
|---|
 | 65 |       suitable empirical potentials by fitting parameters to ab-initio
 | 
|---|
 | 66 |       calculations within hours. Specific emphasis is placed on a
 | 
|---|
 | 67 |       simple-to-use interface, allowing for the quick-and-dirty building of
 | 
|---|
 | 68 |       molecular systems, and on scriptability. Eventually, not a single, but
 | 
|---|
 | 69 |       many, related molecular systems have to be created.</para>
 | 
|---|
 | 70 | 
 | 
|---|
| [9bce96] | 71 |       <section xml:id='installation'>
 | 
|---|
 | 72 |         <title xml:id='installation.title'>Installation requirements</title>
 | 
|---|
| [6029a6] | 73 | 
 | 
|---|
 | 74 |         <para>For installations requirements and instructions we refer to the
 | 
|---|
 | 75 |         internal documentation of MoleCuilder, created via doxgen from the
 | 
|---|
 | 76 |         source code.</para>
 | 
|---|
 | 77 |       </section>
 | 
|---|
 | 78 | 
 | 
|---|
| [9bce96] | 79 |       <section xml:id='license'>
 | 
|---|
 | 80 |         <title xml:id='license.title'>License</title>
 | 
|---|
| [6029a6] | 81 | 
 | 
|---|
 | 82 |         <para>As long as no other license statement is given, MoleCuilder is
 | 
|---|
 | 83 |         free for user under the GNU Public License (GPL) Version 2 (see
 | 
|---|
 | 84 |         <uri>www.gnu.de/documents/gpl-2.0.de.html</uri>).</para>
 | 
|---|
 | 85 |       </section>
 | 
|---|
 | 86 | 
 | 
|---|
| [9bce96] | 87 |       <section xml:id='disclaimer'>
 | 
|---|
 | 88 |         <title xml:id='disclaimer.title'>Disclaimer</title>
 | 
|---|
| [6029a6] | 89 | 
 | 
|---|
 | 90 |         <para>We quote section 11 from the GPLv2 license:</para>
 | 
|---|
 | 91 | 
 | 
|---|
 | 92 |         <remark>Because the program is licensed free of charge, there is not
 | 
|---|
 | 93 |         warranty for the program, to the extent permitted by applicable law.
 | 
|---|
 | 94 |         Except when otherwise stated in writing in the copyright holders
 | 
|---|
 | 95 |         and/or other parties provide the program "as is" without warranty of
 | 
|---|
 | 96 |         any kind, either expressed or implied. Including, but not limited to,
 | 
|---|
 | 97 |         the implied warranties of merchantability and fitness for a particular
 | 
|---|
 | 98 |         purpose. The entire risk as to the quality and performance of the
 | 
|---|
 | 99 |         program is with you. Should the program prove defective, you assume
 | 
|---|
 | 100 |         the cost of all necessary servicing, repair, or correction.</remark>
 | 
|---|
 | 101 |       </section>
 | 
|---|
 | 102 | 
 | 
|---|
| [9bce96] | 103 |       <section xml:id='feedback'>
 | 
|---|
 | 104 |         <title xml:id='feedback.title'>Feedback</title>
 | 
|---|
| [6029a6] | 105 | 
 | 
|---|
 | 106 |         <para>If you encounter any bugs, errors, or would like to submit
 | 
|---|
 | 107 |         feature request, please use the email address provided at the very
 | 
|---|
 | 108 |         beginning of this user guide. The author is especially thankful for
 | 
|---|
 | 109 |         any description of all related events prior to occurrence of the
 | 
|---|
 | 110 |         error, saved "session scripts" (see below) and auxiliary files. Please
 | 
|---|
 | 111 |         mind sensible space restrictions of email attachments.</para>
 | 
|---|
 | 112 |       </section>
 | 
|---|
 | 113 | 
 | 
|---|
| [9bce96] | 114 |       <section xml:id='notation'>
 | 
|---|
 | 115 |         <title xml:id='notation.title'>Notation</title>
 | 
|---|
| [6029a6] | 116 | 
 | 
|---|
 | 117 |         <para>We briefly explain a few specific wordings associated with the
 | 
|---|
 | 118 |         program:</para>
 | 
|---|
 | 119 | 
 | 
|---|
 | 120 |         <itemizedlist>
 | 
|---|
 | 121 |           <listitem>
 | 
|---|
 | 122 |             <para><emphasis>Action</emphasis> is a command that allows for
 | 
|---|
 | 123 |             undoing and redoing, i.e. a single atomic procedure for
 | 
|---|
 | 124 |             manipulating the molecular system.</para>
 | 
|---|
 | 125 |           </listitem>
 | 
|---|
 | 126 | 
 | 
|---|
 | 127 |           <listitem>
 | 
|---|
 | 128 |             <para>Selection refers to a subsets from the set of instances of a
 | 
|---|
 | 129 |             particular type, e.g. atoms.</para>
 | 
|---|
 | 130 |           </listitem>
 | 
|---|
 | 131 | 
 | 
|---|
 | 132 |           <listitem>
 | 
|---|
 | 133 |             <para>Shape means a specific region of the domain that can be
 | 
|---|
 | 134 |             described in the way of constructive geometry, i.e. as the
 | 
|---|
 | 135 |             intersection, negation, and combination of primitives such as
 | 
|---|
 | 136 |             spheres or cylinders.</para>
 | 
|---|
 | 137 |           </listitem>
 | 
|---|
 | 138 |         </itemizedlist>
 | 
|---|
 | 139 |       </section>
 | 
|---|
 | 140 | 
 | 
|---|
| [9bce96] | 141 |       <section xml:id='completeness'>
 | 
|---|
 | 142 |         <title xml:id='completeness.title'>Completeness</title>
 | 
|---|
| [6029a6] | 143 | 
 | 
|---|
 | 144 |         <para>This documentation takes quite some effort to write. Hence, the
 | 
|---|
 | 145 |         described features and especially the actions herein are settled with
 | 
|---|
 | 146 |         respect to their functionality, while newer features or actions are
 | 
|---|
 | 147 |         probably missing. This should be a clear sign to you that these are
 | 
|---|
 | 148 |         probably not safe to use yet. If you nonetheless require them and thus
 | 
|---|
 | 149 |         should acquire some familiarity with the code itself. This suggests
 | 
|---|
 | 150 |         changing to the developer documentation which is maintained along with
 | 
|---|
 | 151 |         the source code with <productname>doxygen</productname>.</para>
 | 
|---|
 | 152 |       </section>
 | 
|---|
 | 153 |     </section>
 | 
|---|
 | 154 |   </chapter>
 | 
|---|
 | 155 | 
 | 
|---|
 | 156 |   <chapter>
 | 
|---|
 | 157 |     <title>Features</title>
 | 
|---|
 | 158 | 
 | 
|---|
 | 159 |     <para>Basically, <command>MoleCuilder</command> parses geometries from
 | 
|---|
 | 160 |     files, manipulates them and stores them again in files. The manipulation
 | 
|---|
 | 161 |     can be done either via a command-line interface or via the graphical user
 | 
|---|
 | 162 |     interface.</para>
 | 
|---|
 | 163 | 
 | 
|---|
| [9bce96] | 164 |     <section xml:id='concepts'>
 | 
|---|
 | 165 |       <title xml:id='concepts.title'>Concepts</title>
 | 
|---|
| [6029a6] | 166 | 
 | 
|---|
 | 167 |       <para>In general, we divide the molecular systems into three different
 | 
|---|
 | 168 |       components or scales.</para>
 | 
|---|
 | 169 | 
 | 
|---|
 | 170 |       <orderedlist>
 | 
|---|
 | 171 |         <listitem>
 | 
|---|
 | 172 |           <para>Atoms</para>
 | 
|---|
 | 173 | 
 | 
|---|
 | 174 |           <para>Atoms are the undividable objects of the molecular systems.
 | 
|---|
 | 175 |           They have an element <quote>Z</quote> and three coordinates
 | 
|---|
 | 176 |           <quote>(x,y,z)</quote>.</para>
 | 
|---|
 | 177 |         </listitem>
 | 
|---|
 | 178 | 
 | 
|---|
 | 179 |         <listitem>
 | 
|---|
 | 180 |           <para>Molecules</para>
 | 
|---|
 | 181 | 
 | 
|---|
 | 182 |           <para>Molecules are bound conglomeration of atoms. They contain a
 | 
|---|
 | 183 |           number of atoms and a specific center in the domain such that its
 | 
|---|
 | 184 |           atoms are placed relative to this center. Also, they may have a
 | 
|---|
 | 185 |           bounding box, i.e. a subdomain that contains all of the atoms in the
 | 
|---|
 | 186 |           molecule.</para>
 | 
|---|
 | 187 | 
 | 
|---|
 | 188 |           <para>Note that the molecular structure of the system, i.e. the
 | 
|---|
 | 189 |           bonding graph, is determined by MoleCuilder and used to dissect the
 | 
|---|
 | 190 |           system into distinct molecules automatically.</para>
 | 
|---|
 | 191 |         </listitem>
 | 
|---|
 | 192 | 
 | 
|---|
 | 193 |         <listitem>
 | 
|---|
 | 194 |           <para>Clusters</para>
 | 
|---|
 | 195 | 
 | 
|---|
 | 196 |           <para>Clusters are unbound conglomeration of atoms. Clusters serves
 | 
|---|
 | 197 |           as groups of atoms for specific operations that would be to
 | 
|---|
 | 198 |           restricted if they worked on just molecules.</para>
 | 
|---|
 | 199 |         </listitem>
 | 
|---|
 | 200 | 
 | 
|---|
 | 201 |         <listitem>
 | 
|---|
 | 202 |           <para>Domain</para>
 | 
|---|
 | 203 | 
 | 
|---|
 | 204 |           <para>The domain refers to the simulation domain. It is
 | 
|---|
 | 205 |           parallelepiped in <inlineequation>
 | 
|---|
 | 206 |               <m:math display="inline">
 | 
|---|
 | 207 |                 <m:mi>\mathbb{R}^3</m:mi>
 | 
|---|
 | 208 |               </m:math>
 | 
|---|
 | 209 |             </inlineequation>where either periodic, wrapped, or open boundary
 | 
|---|
 | 210 |           conditions apply. The domain contains all atoms, i.e. the box
 | 
|---|
 | 211 |           containing all atoms.</para>
 | 
|---|
 | 212 |         </listitem>
 | 
|---|
 | 213 |       </orderedlist>
 | 
|---|
 | 214 |     </section>
 | 
|---|
 | 215 | 
 | 
|---|
| [9bce96] | 216 |     <section xml:id='interfaces'>
 | 
|---|
 | 217 |       <title xml:id='interfaces.title'>Interfaces</title>
 | 
|---|
| [6029a6] | 218 | 
 | 
|---|
 | 219 |       <para>MoleCuilder has four different interfaces: Command-line, text
 | 
|---|
 | 220 |       menu, graphical user interface, and python interface.</para>
 | 
|---|
 | 221 | 
 | 
|---|
 | 222 |       <orderedlist>
 | 
|---|
 | 223 |         <listitem>
 | 
|---|
 | 224 |           <para>Command-Line</para>
 | 
|---|
 | 225 | 
 | 
|---|
 | 226 |           <para>The command-line interface allows to use MoleCuilder
 | 
|---|
 | 227 |           non-interactively via a terminal session. The program is executed by
 | 
|---|
 | 228 |           expanding the shell command with a number of commands including all
 | 
|---|
 | 229 |           required options that are executed one after the other. After
 | 
|---|
 | 230 |           execution of the last command, the program quits. The command-line
 | 
|---|
 | 231 |           interface usually works on a specific file that is given as input,
 | 
|---|
 | 232 |           manipulated, analysed, ... via the sequence of commands and
 | 
|---|
 | 233 |           eventually all changes are stored in the this file. Hence, the input
 | 
|---|
 | 234 |           file acts as the state of the starting configuration that is
 | 
|---|
 | 235 |           modified via MoleCuilder.</para>
 | 
|---|
 | 236 |         </listitem>
 | 
|---|
 | 237 | 
 | 
|---|
 | 238 |         <listitem>
 | 
|---|
 | 239 |           <para>Text menu</para>
 | 
|---|
 | 240 | 
 | 
|---|
 | 241 |           <para>The text-menu is similar to the command-line interface with
 | 
|---|
 | 242 |           the exception that it allows for interactive sessions. Commands are
 | 
|---|
 | 243 |           chosen from a text menu and executed directly after selection by the
 | 
|---|
 | 244 |           user.</para>
 | 
|---|
 | 245 |         </listitem>
 | 
|---|
 | 246 | 
 | 
|---|
 | 247 |         <listitem>
 | 
|---|
 | 248 |           <para>Graphical interface</para>
 | 
|---|
 | 249 | 
 | 
|---|
 | 250 |           <para>The graphical interface is based on Qt. It features a full
 | 
|---|
 | 251 |           graphical representation of the simulation domain with atoms and
 | 
|---|
 | 252 |           their bonds. It allows manipulation in point&click fashion.
 | 
|---|
 | 253 |           Commands are selected from pull-down menus and dialogs are used to
 | 
|---|
 | 254 |           query the user for all required parameters to such a command.</para>
 | 
|---|
 | 255 |         </listitem>
 | 
|---|
 | 256 | 
 | 
|---|
 | 257 |         <listitem>
 | 
|---|
 | 258 |           <para>Python interface</para>
 | 
|---|
 | 259 | 
 | 
|---|
 | 260 |           <para>The last interface is accessible only within the python
 | 
|---|
 | 261 |           programming language. MoleCuilder can be loaded as a module and its
 | 
|---|
 | 262 |           commands can be executed with either the python interpreter
 | 
|---|
 | 263 |           interactively or via python scripts non-interactively. Note that
 | 
|---|
 | 264 |           this allows auxiliary calculations to be performed in pythons whose
 | 
|---|
 | 265 |           results may be used as parameters in subsequent commands.</para>
 | 
|---|
 | 266 |         </listitem>
 | 
|---|
 | 267 |       </orderedlist>
 | 
|---|
 | 268 |     </section>
 | 
|---|
 | 269 | 
 | 
|---|
| [9bce96] | 270 |     <section xml:id='fileformats'>
 | 
|---|
 | 271 |       <title xml:id='fileformats.title'>Known File formats</title>
 | 
|---|
| [6029a6] | 272 | 
 | 
|---|
 | 273 |       <para>We briefly the file formats MoleCuilder can parse and
 | 
|---|
 | 274 |       store.</para>
 | 
|---|
 | 275 | 
 | 
|---|
 | 276 |       <itemizedlist>
 | 
|---|
 | 277 |         <listitem>
 | 
|---|
 | 278 |           <para>XYZ, <filename>.xyz</filename> (simplest of all formats,
 | 
|---|
 | 279 |           line-wise element and three coordinates with two line header, number
 | 
|---|
 | 280 |           of lines and a comment line)</para>
 | 
|---|
 | 281 |         </listitem>
 | 
|---|
 | 282 | 
 | 
|---|
 | 283 |         <listitem>
 | 
|---|
| [9bce96] | 284 |           <para><link xlink:href="http://www.mpqc.org/"><productname>MPQC
 | 
|---|
 | 285 |           </productname></link>, <filename>.in</filename></para>
 | 
|---|
| [6029a6] | 286 |         </listitem>
 | 
|---|
 | 287 | 
 | 
|---|
 | 288 |         <listitem>
 | 
|---|
| [9bce96] | 289 |           <para><link xlink:href="http://www.pdb.org/">PDB</link>, <filename>
 | 
|---|
 | 290 |           .pdb</filename></para>
 | 
|---|
| [6029a6] | 291 |         </listitem>
 | 
|---|
 | 292 | 
 | 
|---|
 | 293 |         <listitem>
 | 
|---|
 | 294 |           <para><productname>ESPACK</productname>, <filename>.conf</filename>
 | 
|---|
 | 295 |           (electronic structure package by Institute for Numerical Simulation,
 | 
|---|
 | 296 |           University of Bonn, code not in circulation)</para>
 | 
|---|
 | 297 |         </listitem>
 | 
|---|
 | 298 | 
 | 
|---|
 | 299 |         <listitem>
 | 
|---|
| [9bce96] | 300 |           <para><link xlink:href="http://www.psicode.org/"><productname>PSI4
 | 
|---|
 | 301 |           </productname></link>, <filename>.psi</filename></para>
 | 
|---|
| [6029a6] | 302 |         </listitem>
 | 
|---|
 | 303 | 
 | 
|---|
 | 304 |         <listitem>
 | 
|---|
| [9bce96] | 305 |           <para><link xlink:href="http://www.tremolo-x.org/"><productname>
 | 
|---|
 | 306 |           TREMOLO</productname></link>, <filename>.data</filename></para>
 | 
|---|
| [6029a6] | 307 |         </listitem>
 | 
|---|
 | 308 | 
 | 
|---|
 | 309 |         <listitem>
 | 
|---|
| [9bce96] | 310 |           <para>XML, <filename>.xml</filename> (XML as read by 
 | 
|---|
 | 311 |           <link xlink:href="http://www.scafacos.org/">ScaFaCoS</link>
 | 
|---|
 | 312 |           project)</para>
 | 
|---|
| [6029a6] | 313 |         </listitem>
 | 
|---|
 | 314 |       </itemizedlist>
 | 
|---|
 | 315 | 
 | 
|---|
 | 316 |       <para>These are identified via their suffixes and can be converted from
 | 
|---|
 | 317 |       one into another (with loss of all data not in the intersection of
 | 
|---|
 | 318 |       stored properties of the two involved file formats).</para>
 | 
|---|
 | 319 |     </section>
 | 
|---|
 | 320 |   </chapter>
 | 
|---|
 | 321 | 
 | 
|---|
 | 322 |   <chapter>
 | 
|---|
 | 323 |     <title>Interfaces</title>
 | 
|---|
 | 324 | 
 | 
|---|
 | 325 |     <para>In this chapter, we explain the intention and use of the four
 | 
|---|
 | 326 |     interfaces.</para>
 | 
|---|
 | 327 | 
 | 
|---|
 | 328 |     <para>We give the most extensive explanation of the command-line
 | 
|---|
 | 329 |     interface, all subsequent interfaces are explained in highlighting their
 | 
|---|
 | 330 |     differences with respect to the command-line interface. This is because
 | 
|---|
 | 331 |     the command-line lends itself very well to representation in this textual
 | 
|---|
 | 332 |     user guide. Although some images of the graphical interface are given
 | 
|---|
 | 333 |     below, they would blow the size of the guide out of proportion.</para>
 | 
|---|
 | 334 | 
 | 
|---|
 | 335 |     <para>In any case, you should make yourself familiar with at least one of
 | 
|---|
 | 336 |     the interactive (text menu, GUI) and one of the non-interactive
 | 
|---|
 | 337 |     (command-line, python) interfaces to use MoleCuilder to is full potential:
 | 
|---|
 | 338 |     The interactive interface gives you the immediate feedback in constructing
 | 
|---|
 | 339 |     "synthesis" (build) chains (of commands) for constructing your specific
 | 
|---|
 | 340 |     molecular system in the computer. The non-interactive interface lends
 | 
|---|
 | 341 |     itself to quick creation of related systems that differ only by specific
 | 
|---|
 | 342 |     parameters you have modified in the script (command-line can be used in
 | 
|---|
 | 343 |     shell scripts, python itself is a scripted language). Also, the
 | 
|---|
 | 344 |     non-interactive interfaces are used for storing sessions which helps you
 | 
|---|
 | 345 |     in documentation your experiments and lateron understanding of what has
 | 
|---|
 | 346 |     been done.</para>
 | 
|---|
 | 347 | 
 | 
|---|
| [9bce96] | 348 |     <section xml:id='command-line-interface'>
 | 
|---|
 | 349 |       <title xml:id='command-line-interface.title'>Command-line interface</title>
 | 
|---|
| [6029a6] | 350 | 
 | 
|---|
 | 351 |       <para>The command-line interface reads options and commands from the
 | 
|---|
 | 352 |       command line and executes them sequentially. This may be for example:
 | 
|---|
 | 353 |       Open an empty file, add 2 hydrogen atoms and add 1 oxygen atom, choose a
 | 
|---|
 | 354 |       simulation box, fill the box with this given "filler" molecule, save the
 | 
|---|
 | 355 |       file. This enables the use of MoleCuilder in simple script-files to
 | 
|---|
 | 356 |       create a whole range of geometries that only differ in a few parameters
 | 
|---|
 | 357 |       automatically.</para>
 | 
|---|
 | 358 | 
 | 
|---|
 | 359 |       <para>Traditionally, <command>MoleCuilder</command> operates on a single
 | 
|---|
 | 360 |       configuration file - the state - which may also store additional
 | 
|---|
 | 361 |       information depending on the chosen file format such as parameters for
 | 
|---|
 | 362 |       ab-initio computations. An example for the above procedure is given
 | 
|---|
 | 363 |       below:</para>
 | 
|---|
 | 364 | 
 | 
|---|
 | 365 |       <programlisting>
 | 
|---|
 | 366 |         ./molecuilder \
 | 
|---|
 | 367 |                 -i sample.xyz \
 | 
|---|
 | 368 |                 --add-atom H \
 | 
|---|
 | 369 |                 --domain-position "0.,0.,0." \
 | 
|---|
 | 370 |                 ...
 | 
|---|
 | 371 |         </programlisting>
 | 
|---|
 | 372 | 
 | 
|---|
 | 373 |       <para>The first argument is the executable itself. Second, there is a
 | 
|---|
 | 374 |       slew of arguments -- one per line split with a backslash telling the 
 | 
|---|
 | 375 |       shell that the line still continues -- consisting of the input action and 
 | 
|---|
 | 376 |       an arbitrarily named file <filename>sample.xyz</filename>, which may be 
 | 
|---|
 | 377 |       empty and whose file format is chosen by the given extension. The third 
 | 
|---|
 | 378 |       is the add-atom action following by an option that gives the position in 
 | 
|---|
 | 379 |       the domain where to add the "H"ydrogen atom. An action is always 
 | 
|---|
 | 380 |       introduced via a double hyphen and its full name (containing just 
 | 
|---|
 | 381 |       non-capital letters and hyphens) or a single hyphen and a single letter 
 | 
|---|
 | 382 |       for its shortform, e.g. -a for adding an atom to the system. It is 
 | 
|---|
 | 383 |       followed by a fixed number of options. Most of these have default values 
 | 
|---|
 | 384 |       and in this do not have to be specified. If not enough options are given 
 | 
|---|
 | 385 |       or invalid values have been entered, an error message is printed stating 
 | 
|---|
 | 386 |       the name of the first missing or invalid option value.</para>
 | 
|---|
 | 387 | 
 | 
|---|
 | 388 |       <note>
 | 
|---|
 | 389 |         <para>Note that not all action have shortforms and it is best practice
 | 
|---|
 | 390 |         to have the full action name instead of its shortform to make the
 | 
|---|
 | 391 |         command-line understable to you in years to come.</para>
 | 
|---|
 | 392 |       </note>
 | 
|---|
 | 393 | 
 | 
|---|
| [9bce96] | 394 |       <section xml:id='preliminaries'>
 | 
|---|
 | 395 |         <title xml:id='preliminaries.title'>Preliminaries</title>
 | 
|---|
| [6029a6] | 396 | 
 | 
|---|
 | 397 |         <para>Some preliminary remarks are in order which we have gathered
 | 
|---|
 | 398 |         here on how these actions work in general.</para>
 | 
|---|
 | 399 | 
 | 
|---|
 | 400 |         <para>Below we first delve into some details about secondary structure
 | 
|---|
 | 401 |         such as selections, shapes, and randomization required to specify
 | 
|---|
 | 402 |         subsets of atoms and molecules you wish to manipulate. Then, we have
 | 
|---|
 | 403 |         ordered the subsequent details on the manipulation depending on the
 | 
|---|
 | 404 |         scale they act upon - single atoms, multiple atoms organised as
 | 
|---|
 | 405 |         molecules, and all atoms organised by their containing domain.</para>
 | 
|---|
 | 406 | 
 | 
|---|
 | 407 |         <para>In the following we will always give a command to illustrate the
 | 
|---|
 | 408 |         procedure but just the necessary parts, i.e. "..." implies to prepend
 | 
|---|
 | 409 |         it with the executable and input command for a specific configuration
 | 
|---|
 | 410 |         file, for storing the manipulated state of the molecular system. Note
 | 
|---|
 | 411 |         that</para>
 | 
|---|
 | 412 | 
 | 
|---|
 | 413 |         <programlisting>./molecuilder --help</programlisting>
 | 
|---|
 | 414 | 
 | 
|---|
 | 415 |         <para>will always give you a list of all available actions and also a
 | 
|---|
 | 416 |         brief explanation on how to properly enter values of a specific type,
 | 
|---|
 | 417 |         e.g. an element, a vector, or a list of numbers. Details to a specific
 | 
|---|
 | 418 |         action can be requested when its full name is known, e.g. for
 | 
|---|
 | 419 |         "add-atom",</para>
 | 
|---|
 | 420 | 
 | 
|---|
 | 421 |         <programlisting>./molecuilder --help --actionname add-atom</programlisting>
 | 
|---|
 | 422 | 
 | 
|---|
 | 423 |         <para>which fills you in on each option to the action: its full name,
 | 
|---|
 | 424 |         its expected type, and a possibly present default value, and a brief
 | 
|---|
 | 425 |         description of the option.</para>
 | 
|---|
 | 426 | 
 | 
|---|
 | 427 |         <para>An Action can be undone and redone, e.g. undo adding an atom as
 | 
|---|
 | 428 |         follows,</para>
 | 
|---|
 | 429 | 
 | 
|---|
 | 430 |         <programlisting>... --add-atom H --domain-position "0,0,0" --undo</programlisting>
 | 
|---|
 | 431 | 
 | 
|---|
 | 432 |         <para>and redo as follows</para>
 | 
|---|
 | 433 | 
 | 
|---|
 | 434 |         <programlisting>... --add-atom H --domain-position "0,0,0" --undo --redo</programlisting>
 | 
|---|
 | 435 | 
 | 
|---|
 | 436 |         <para>With the non-interactive interfaces this may seem rather
 | 
|---|
 | 437 |         superfluous but it comes in very handy in the interactive ones. Also
 | 
|---|
 | 438 |         this tells you that actions are placed in a queue, i.e. a history,
 | 
|---|
 | 439 |         that undo and redo manipulate.</para>
 | 
|---|
 | 440 |       </section>
 | 
|---|
 | 441 | 
 | 
|---|
| [9bce96] | 442 |       <section xml:id='fileparsers'>
 | 
|---|
 | 443 |         <title xml:id='fileparsers.title'>File parsers</title>
 | 
|---|
| [6029a6] | 444 | 
 | 
|---|
 | 445 |         <para>We have already given a list of all known file formats, see
 | 
|---|
| [9bce96] | 446 |         <link linkend="fileformats">File formats</link>. Next, we explain how these
 | 
|---|
| [6029a6] | 447 |         file formats are picked and manipulated.</para>
 | 
|---|
 | 448 | 
 | 
|---|
| [9bce96] | 449 |         <section xml:id='fileparsers.parsing'>
 | 
|---|
 | 450 |           <title xml:id='fileparsers.parsing.title'>Parsing files</title>
 | 
|---|
| [6029a6] | 451 | 
 | 
|---|
 | 452 |           <para>We already discussed that the command-line interface works
 | 
|---|
 | 453 |           state-based and hence you should supply it with a file to work
 | 
|---|
 | 454 |           on.</para>
 | 
|---|
 | 455 | 
 | 
|---|
 | 456 |           <programlisting>... --input water.data</programlisting>
 | 
|---|
 | 457 | 
 | 
|---|
 | 458 |           <para>This will load all information, especially atoms with their
 | 
|---|
 | 459 |           element and position, from the file <filename>water.data</filename>
 | 
|---|
 | 460 |           into the state. All changes will eventually be stored to this file,
 | 
|---|
 | 461 |           or to files with the prefix <filename>water</filename> and suffixes
 | 
|---|
 | 462 |           of desired file formats, e.g. <filename>water.in</filename> if you
 | 
|---|
 | 463 |           specified <productname>MPQC</productname>.</para>
 | 
|---|
 | 464 | 
 | 
|---|
 | 465 |           <programlisting>... --load morewater.xyz</programlisting>
 | 
|---|
 | 466 | 
 | 
|---|
 | 467 |           <para>This will load another file <filename>water.xyz</filename>,
 | 
|---|
 | 468 |           however changes will still be written to files prefixed with
 | 
|---|
 | 469 |           <filename>water</filename>. Note that now already two state files
 | 
|---|
 | 470 |           will stored, <filename>water.data</filename> and
 | 
|---|
 | 471 |           <filename>water.xyz</filename> as these two different file formats
 | 
|---|
 | 472 |           have been used.</para>
 | 
|---|
 | 473 |         </section>
 | 
|---|
 | 474 | 
 | 
|---|
| [9bce96] | 475 |         <section xml:id='fileparsers.set-output'>
 | 
|---|
 | 476 |           <title xml:id='fileparsers.set-output.tile'>Adding output file 
 | 
|---|
 | 477 |           formats</title>
 | 
|---|
| [6029a6] | 478 | 
 | 
|---|
 | 479 |           <para>We already know that loading a file also picks a file format
 | 
|---|
 | 480 |           by its suffix. We may add further file formats to which the state of
 | 
|---|
 | 481 |           the molecular system on program exit.</para>
 | 
|---|
 | 482 | 
 | 
|---|
 | 483 |           <programlisting>... --set-output mpqc tremolo</programlisting>
 | 
|---|
 | 484 | 
 | 
|---|
 | 485 |           <para>This will store the final state of the molecular systems as
 | 
|---|
 | 486 |           <productname>MPQC</productname> and as
 | 
|---|
 | 487 |           <productname>TREMOLO</productname> configuration file.</para>
 | 
|---|
 | 488 |         </section>
 | 
|---|
 | 489 | 
 | 
|---|
| [9bce96] | 490 |         <section xml:id='fileparsers.output-as'>
 | 
|---|
 | 491 |           <title xml:id='fileparsers.output-as.title'>Output the current 
 | 
|---|
 | 492 |           molecular system</title>
 | 
|---|
| [6029a6] | 493 | 
 | 
|---|
| [f73e06] | 494 |           <para>This will store the current World, i.e. all its atoms, to a 
 | 
|---|
 | 495 |           given file, where the output format is determined from the file
 | 
|---|
 | 496 |           suffix.</para>
 | 
|---|
| [6029a6] | 497 | 
 | 
|---|
| [f73e06] | 498 |           <programlisting>... --output-as world.xyz</programlisting>
 | 
|---|
| [6029a6] | 499 |         </section>
 | 
|---|
 | 500 | 
 | 
|---|
| [9bce96] | 501 |         <section xml:id='fileparsers.save-selected-molecules'>
 | 
|---|
 | 502 |           <title xml:id='fileparsers.save-selected-molecules.title'>Output 
 | 
|---|
 | 503 |           the current molecular system</title>
 | 
|---|
| [6029a6] | 504 | 
 | 
|---|
| [f73e06] | 505 |           <para>This will store all atoms contained in the currently selected
 | 
|---|
 | 506 |           molecules to file. This is different to "store-saturated-fragment"
 | 
|---|
 | 507 |           as it will not saturate dangling bonds because only whole molecules,
 | 
|---|
 | 508 |           i.e. whose bond graph is connected, will be stored.</para>
 | 
|---|
| [6029a6] | 509 | 
 | 
|---|
| [f73e06] | 510 |           <programlisting>... --save-selected-molecules waters.pdb
 | 
|---|
 | 511 |           </programlisting>
 | 
|---|
 | 512 |         </section>
 | 
|---|
| [6029a6] | 513 | 
 | 
|---|
| [9bce96] | 514 |         <section xml:id='fileparsers.bond-file'>
 | 
|---|
 | 515 |           <title xml:id='fileparsers.bond-file.title'>Load extra bond 
 | 
|---|
 | 516 |           information</title>
 | 
|---|
| [6029a6] | 517 | 
 | 
|---|
| [f73e06] | 518 |           <para>For some parsers bond information is stored not with the atoms
 | 
|---|
 | 519 |           coordinates but in an extra file. This action parses such a file.</para>
 | 
|---|
| [6029a6] | 520 | 
 | 
|---|
| [f73e06] | 521 |           <programlisting>... --bond-file water.dbond
 | 
|---|
 | 522 |           </programlisting>
 | 
|---|
| [6029a6] | 523 |         </section>
 | 
|---|
 | 524 |       </section>
 | 
|---|
 | 525 | 
 | 
|---|
| [9bce96] | 526 |       <section xml:id='selections'>
 | 
|---|
 | 527 |         <title xml:id='selections.title'>Selections and unselections</title>
 | 
|---|
| [6029a6] | 528 | 
 | 
|---|
 | 529 |         <para>In order to tell MoleCuilder on what subset of atoms a specific
 | 
|---|
 | 530 |         Action is to be performed, there are <emphasis>selection
 | 
|---|
 | 531 |         actions</emphasis>. Note that a selection per se does not change
 | 
|---|
 | 532 |         anything in the state of the molecular system in any way.</para>
 | 
|---|
 | 533 | 
 | 
|---|
 | 534 |         <para>Selections either work on atoms, on molecules, or on shapes
 | 
|---|
 | 535 |         (this we explain lateron). A given selection is maintained from the
 | 
|---|
 | 536 |         execution of the selection action to the end of program or until
 | 
|---|
 | 537 |         modified by another selection applied on the same type (atom,
 | 
|---|
 | 538 |         molecule, shape).</para>
 | 
|---|
 | 539 | 
 | 
|---|
 | 540 |         <para>We only give a brief list on the kind of selections per type,
 | 
|---|
 | 541 |         each action is executed either as follows, exemplified by selecting
 | 
|---|
 | 542 |         all atoms.</para>
 | 
|---|
 | 543 | 
 | 
|---|
 | 544 |         <programlisting>.... --select-all-atoms</programlisting>
 | 
|---|
 | 545 | 
 | 
|---|
 | 546 |         <para>or, exemplified by unselecting the last molecule,</para>
 | 
|---|
 | 547 | 
 | 
|---|
 | 548 |         <programlisting>... --unselect-molecule-by-order -1</programlisting>
 | 
|---|
 | 549 | 
 | 
|---|
 | 550 |         <itemizedlist>
 | 
|---|
 | 551 |           <listitem>
 | 
|---|
 | 552 |             <para>Atoms</para>
 | 
|---|
 | 553 | 
 | 
|---|
 | 554 |             <itemizedlist>
 | 
|---|
| [f73e06] | 555 |               <listitem>
 | 
|---|
 | 556 |                 <para>All</para>
 | 
|---|
 | 557 |                 <programlisting>
 | 
|---|
 | 558 |                 ... --select-all-atoms
 | 
|---|
 | 559 |                 </programlisting>
 | 
|---|
 | 560 |               </listitem>
 | 
|---|
 | 561 | 
 | 
|---|
 | 562 |               <listitem>
 | 
|---|
 | 563 |                 <para>None</para>
 | 
|---|
 | 564 |                 <programlisting>
 | 
|---|
 | 565 |                 ... --unselect-all-atoms
 | 
|---|
 | 566 |                 </programlisting>
 | 
|---|
 | 567 |                 <programlisting>
 | 
|---|
 | 568 |                 ... --clear-atom-selection
 | 
|---|
 | 569 |                 </programlisting>
 | 
|---|
 | 570 |               </listitem>
 | 
|---|
 | 571 | 
 | 
|---|
 | 572 |               <listitem>
 | 
|---|
 | 573 |                 <para>Invert selection</para>
 | 
|---|
 | 574 |                 <programlisting>
 | 
|---|
 | 575 |                 ... --invert-atoms
 | 
|---|
 | 576 |                 </programlisting>
 | 
|---|
 | 577 |               </listitem>
 | 
|---|
 | 578 | 
 | 
|---|
| [6029a6] | 579 |               <listitem>
 | 
|---|
 | 580 |                 <para>By Element (all hydrogen atoms, all sulphur atoms,
 | 
|---|
 | 581 |                 ...)</para>
 | 
|---|
| [f73e06] | 582 |                 <programlisting>
 | 
|---|
 | 583 |                 ... --select-atom-by-element 1
 | 
|---|
 | 584 |                 </programlisting>
 | 
|---|
 | 585 |                 <programlisting>
 | 
|---|
 | 586 |                 ... --unselect-atom-by-element 1
 | 
|---|
 | 587 |                 </programlisting>
 | 
|---|
| [6029a6] | 588 |               </listitem>
 | 
|---|
 | 589 | 
 | 
|---|
 | 590 |               <listitem>
 | 
|---|
 | 591 |                 <para>By Id (atom with id 76)</para>
 | 
|---|
| [f73e06] | 592 |                 <programlisting>
 | 
|---|
 | 593 |                 ... --select-atom-by-id 76
 | 
|---|
 | 594 |                 </programlisting>
 | 
|---|
 | 595 |                 <programlisting>
 | 
|---|
 | 596 |                 ... --unselect-atom-by-id 76
 | 
|---|
 | 597 |                 </programlisting>
 | 
|---|
| [6029a6] | 598 |               </listitem>
 | 
|---|
 | 599 | 
 | 
|---|
 | 600 |               <listitem>
 | 
|---|
| [f73e06] | 601 |                 <para>By Order (the first (1), the second, ... the last 
 | 
|---|
 | 602 |                 created(-1), the last but one)</para>
 | 
|---|
 | 603 |                 <programlisting>
 | 
|---|
 | 604 |                 ... --select-atom-by-order 1
 | 
|---|
 | 605 |                 </programlisting>
 | 
|---|
 | 606 |                 <programlisting>
 | 
|---|
 | 607 |                 ... --unselect-atom-by-order -2
 | 
|---|
 | 608 |                 </programlisting>
 | 
|---|
| [6029a6] | 609 |               </listitem>
 | 
|---|
 | 610 | 
 | 
|---|
 | 611 |               <listitem>
 | 
|---|
 | 612 |                 <para>By Shape (specific region of the domain)</para>
 | 
|---|
| [f73e06] | 613 |                 <programlisting>
 | 
|---|
 | 614 |                 ... --select-atom-inside-volume
 | 
|---|
 | 615 |                 </programlisting>
 | 
|---|
 | 616 |                 <programlisting>
 | 
|---|
 | 617 |                 ... --unselect-atoms-inside-volume
 | 
|---|
 | 618 |                 </programlisting>
 | 
|---|
| [6029a6] | 619 |               </listitem>
 | 
|---|
 | 620 | 
 | 
|---|
 | 621 |               <listitem>
 | 
|---|
 | 622 |                 <para>By Molecule (all atoms belonging to currently selected
 | 
|---|
 | 623 |                 molecules)</para>
 | 
|---|
| [f73e06] | 624 |                 <programlisting>
 | 
|---|
 | 625 |                 ... --select-molecules-atoms
 | 
|---|
 | 626 |                 </programlisting>
 | 
|---|
 | 627 |                 <programlisting>
 | 
|---|
 | 628 |                 ... --unselect-molecules-atoms
 | 
|---|
 | 629 |                 </programlisting>
 | 
|---|
| [6029a6] | 630 |               </listitem>
 | 
|---|
| [3213f2] | 631 | 
 | 
|---|
 | 632 |               <listitem>
 | 
|---|
 | 633 |                 <para>Push/Pop the current selection to/from a stack to store 
 | 
|---|
 | 634 |                 it momentarily and allow modifications in MakroActions.</para>
 | 
|---|
 | 635 |                 <programlisting>
 | 
|---|
 | 636 |                 ... --push-atom-selection
 | 
|---|
 | 637 |                 </programlisting>
 | 
|---|
 | 638 |                 <programlisting>
 | 
|---|
 | 639 |                 ... --pop-atom-selection
 | 
|---|
 | 640 |                 </programlisting>
 | 
|---|
 | 641 |               </listitem>
 | 
|---|
| [6029a6] | 642 |             </itemizedlist>
 | 
|---|
 | 643 |           </listitem>
 | 
|---|
 | 644 | 
 | 
|---|
 | 645 |           <listitem>
 | 
|---|
 | 646 |             <para>Molecules</para>
 | 
|---|
 | 647 | 
 | 
|---|
 | 648 |             <itemizedlist>
 | 
|---|
| [f73e06] | 649 |               <listitem>
 | 
|---|
 | 650 |                 <para>All</para>
 | 
|---|
 | 651 |                 <programlisting>
 | 
|---|
 | 652 |                 ... --select-all-molecules
 | 
|---|
 | 653 |                 </programlisting>
 | 
|---|
 | 654 |               </listitem>
 | 
|---|
 | 655 | 
 | 
|---|
 | 656 |               <listitem>
 | 
|---|
 | 657 |                 <para>None</para>
 | 
|---|
 | 658 |                 <programlisting>
 | 
|---|
 | 659 |                 ... --unselect-all-molecules
 | 
|---|
 | 660 |                 </programlisting>
 | 
|---|
 | 661 |                 <programlisting>
 | 
|---|
 | 662 |                 ... --clear-molecule-selection
 | 
|---|
 | 663 |                 </programlisting>
 | 
|---|
 | 664 |               </listitem>
 | 
|---|
 | 665 | 
 | 
|---|
 | 666 |               <listitem>
 | 
|---|
 | 667 |                 <para>Invert selection</para>
 | 
|---|
 | 668 |                 <programlisting>
 | 
|---|
 | 669 |                 ... --invert-molecules
 | 
|---|
 | 670 |                 </programlisting>
 | 
|---|
 | 671 |               </listitem>
 | 
|---|
 | 672 | 
 | 
|---|
| [6029a6] | 673 |               <listitem>
 | 
|---|
 | 674 |                 <para>By Id (molecule with id 4)</para>
 | 
|---|
| [f73e06] | 675 |                 <programlisting>
 | 
|---|
 | 676 |                 ... --select-molecule-by-id 2
 | 
|---|
 | 677 |                 </programlisting>
 | 
|---|
 | 678 |                 <programlisting>
 | 
|---|
 | 679 |                 ... --unselect-molecule-by-id 2
 | 
|---|
 | 680 |                 </programlisting>
 | 
|---|
| [6029a6] | 681 |               </listitem>
 | 
|---|
 | 682 | 
 | 
|---|
 | 683 |               <listitem>
 | 
|---|
| [f73e06] | 684 |                 <para>By Order (first created molecule, second created 
 | 
|---|
 | 685 |                 molecule, ...)</para>
 | 
|---|
 | 686 |                 <programlisting>
 | 
|---|
 | 687 |                 ... --select-molecule-by-order 2
 | 
|---|
 | 688 |                 </programlisting>
 | 
|---|
 | 689 |                 <programlisting>
 | 
|---|
 | 690 |                 ... --unselect-molecule-by-order -2
 | 
|---|
 | 691 |                 </programlisting>
 | 
|---|
| [6029a6] | 692 |               </listitem>
 | 
|---|
 | 693 | 
 | 
|---|
 | 694 |               <listitem>
 | 
|---|
| [f73e06] | 695 |                 <para>By Formula (molecule with H2O as formula)</para>
 | 
|---|
 | 696 |                 <programlisting>
 | 
|---|
 | 697 |                 ... --select-molecules-by-formula "H2O"
 | 
|---|
 | 698 |                 </programlisting>
 | 
|---|
 | 699 |                 <programlisting>
 | 
|---|
 | 700 |                 ... --unselect-molecules-by-formula "H2O"
 | 
|---|
 | 701 |                 </programlisting>
 | 
|---|
 | 702 |               </listitem>
 | 
|---|
 | 703 | 
 | 
|---|
 | 704 |               <listitem>
 | 
|---|
 | 705 |                 <para>By Name (molecule named "water4")</para>
 | 
|---|
 | 706 |                 <programlisting>
 | 
|---|
 | 707 |                 ... --select-molecules-by-name "water4"
 | 
|---|
 | 708 |                 </programlisting>
 | 
|---|
 | 709 |                 <programlisting>
 | 
|---|
 | 710 |                 ... --unselect-molecules-by-name "water4"
 | 
|---|
 | 711 |                 </programlisting>
 | 
|---|
| [6029a6] | 712 |               </listitem>
 | 
|---|
 | 713 | 
 | 
|---|
 | 714 |               <listitem>
 | 
|---|
 | 715 |                 <para>By Atom (all molecules for which at least one atom is
 | 
|---|
 | 716 |                 currently selected)</para>
 | 
|---|
| [f73e06] | 717 |                 <programlisting>
 | 
|---|
 | 718 |                 ... --select-atoms-molecules
 | 
|---|
 | 719 |                 </programlisting>
 | 
|---|
 | 720 |                 <programlisting>
 | 
|---|
 | 721 |                 ... --unselect-atoms-molecules
 | 
|---|
 | 722 |                 </programlisting>
 | 
|---|
| [6029a6] | 723 |               </listitem>
 | 
|---|
| [a84e8d] | 724 | 
 | 
|---|
 | 725 |               <listitem>
 | 
|---|
 | 726 |                 <para>Push/Pop the current selection to/from a stack to store 
 | 
|---|
 | 727 |                 it momentarily and allow modifications in MakroActions.</para>
 | 
|---|
 | 728 |                 <programlisting>
 | 
|---|
 | 729 |                 ... --push-molecule-selection
 | 
|---|
 | 730 |                 </programlisting>
 | 
|---|
 | 731 |                 <programlisting>
 | 
|---|
 | 732 |                 ... --pop-molecule-selection
 | 
|---|
 | 733 |                 </programlisting>
 | 
|---|
 | 734 |               </listitem>
 | 
|---|
| [6029a6] | 735 |             </itemizedlist>
 | 
|---|
 | 736 |           </listitem>
 | 
|---|
 | 737 | 
 | 
|---|
 | 738 |           <listitem>
 | 
|---|
 | 739 |             <para>Shapes</para>
 | 
|---|
 | 740 | 
 | 
|---|
 | 741 |             <itemizedlist>
 | 
|---|
 | 742 |               <listitem>
 | 
|---|
| [f73e06] | 743 |                 <para>All</para>
 | 
|---|
 | 744 |                 <programlisting>
 | 
|---|
 | 745 |                 ... --select-all-shapes
 | 
|---|
 | 746 |                 </programlisting>
 | 
|---|
| [6029a6] | 747 |               </listitem>
 | 
|---|
 | 748 | 
 | 
|---|
 | 749 |               <listitem>
 | 
|---|
| [f73e06] | 750 |                 <para>None</para>
 | 
|---|
 | 751 |                 <programlisting>
 | 
|---|
 | 752 |                 ... --unselect-all-shapes
 | 
|---|
 | 753 |                 </programlisting>
 | 
|---|
| [6029a6] | 754 |               </listitem>
 | 
|---|
 | 755 | 
 | 
|---|
 | 756 |               <listitem>
 | 
|---|
| [f73e06] | 757 |                 <para>By Name (shape name "sphere1")</para>
 | 
|---|
 | 758 |                 <programlisting>
 | 
|---|
 | 759 |                 ... --select-shape-by-name "sphere1"
 | 
|---|
 | 760 |                 </programlisting>
 | 
|---|
 | 761 |                 <programlisting>
 | 
|---|
 | 762 |                 ... --unselect-shape-by-name "sphere1"
 | 
|---|
 | 763 |                 </programlisting>
 | 
|---|
| [6029a6] | 764 |               </listitem>
 | 
|---|
 | 765 |             </itemizedlist>
 | 
|---|
 | 766 |           </listitem>
 | 
|---|
 | 767 | 
 | 
|---|
| [f73e06] | 768 |         </itemizedlist>
 | 
|---|
| [6029a6] | 769 | 
 | 
|---|
 | 770 |         <remark>Note that an unselected instance (e.g. an atom) remains
 | 
|---|
 | 771 |         unselected upon further unselection and vice versa with
 | 
|---|
 | 772 |         selection.</remark>
 | 
|---|
 | 773 | 
 | 
|---|
 | 774 |         <para>These above selections work then in conjunction with other
 | 
|---|
 | 775 |         actions and make them very powerful, e.g. you can remove all atoms
 | 
|---|
 | 776 |         inside a sphere by a selecting the spherical shape and subsequently
 | 
|---|
 | 777 |         selecting all atoms inside the shape and then removing them.</para>
 | 
|---|
 | 778 |       </section>
 | 
|---|
 | 779 | 
 | 
|---|
| [9bce96] | 780 |       <section xml:id='shapes'>
 | 
|---|
 | 781 |         <title xml:id='shapes.title'>Shapes</title>
 | 
|---|
| [6029a6] | 782 | 
 | 
|---|
 | 783 |         <para>Shapes are specific regions of the domain. There are just a few
 | 
|---|
 | 784 |         so-called <emphasis>primitive</emphasis> shapes such as cuboid,
 | 
|---|
 | 785 |         sphere, cylinder, the whole domain, none of it. However, these can be
 | 
|---|
 | 786 |         combined via boolean operations such as and, or, and not. This
 | 
|---|
 | 787 |         approach is called <emphasis>constructive geometry</emphasis>. E.g. by
 | 
|---|
 | 788 |         combining a sphere with the negated (not) of a smaller sphere, we
 | 
|---|
 | 789 |         obtain a spherical surface of specific thickness.</para>
 | 
|---|
 | 790 | 
 | 
|---|
| [9bce96] | 791 |         <section xml:id='shapes.create-shape'>
 | 
|---|
 | 792 |           <title xml:id='shapes.create-shape.title'>Creating shapes</title>
 | 
|---|
| [6029a6] | 793 | 
 | 
|---|
 | 794 |           <para>Primitive shapes can be created as follows,</para>
 | 
|---|
 | 795 | 
 | 
|---|
 | 796 |           <programlisting>
 | 
|---|
 | 797 |                 ... --create-shape \
 | 
|---|
 | 798 |                     --shape-type sphere \
 | 
|---|
 | 799 |                     --shape-name "sphere1" \
 | 
|---|
 | 800 |                     --stretch "2,2,2" \
 | 
|---|
 | 801 |                     --translation "5,5,5"
 | 
|---|
 | 802 |           </programlisting>
 | 
|---|
 | 803 | 
 | 
|---|
 | 804 |           <para>This will create a sphere of radius 2 (initial radius is 1)
 | 
|---|
 | 805 |           with name "sphere1" that is centered at (5,5,5). Other primitives at
 | 
|---|
 | 806 |           cuboid and cylinder, where a rotation can be specified as
 | 
|---|
 | 807 |           follows.</para>
 | 
|---|
 | 808 | 
 | 
|---|
 | 809 |           <programlisting>
 | 
|---|
 | 810 |                 ... --create-shape \
 | 
|---|
 | 811 |                     --shape-type cuboid \
 | 
|---|
 | 812 |                     --shape-name "box" \
 | 
|---|
 | 813 |                     --stretch "1,2,2" \
 | 
|---|
 | 814 |                     --translation "5,5,5" \
 | 
|---|
 | 815 |                     --angle-x "90"
 | 
|---|
 | 816 |           </programlisting>
 | 
|---|
 | 817 |         </section>
 | 
|---|
 | 818 | 
 | 
|---|
| [9bce96] | 819 |         <section xml:id='shapes.combine-shapes'>
 | 
|---|
 | 820 |           <title xml:id='shapes.combine-shapes.title'>Combining shapes</title>
 | 
|---|
| [f73e06] | 821 | 
 | 
|---|
 | 822 |           <para>Any two shapes can be combined by boolean operations as follows</para>
 | 
|---|
 | 823 | 
 | 
|---|
 | 824 |           <programlisting>
 | 
|---|
 | 825 |                 ... --combine-shapes \
 | 
|---|
 | 826 |                     --shape-name "combinedshape" \
 | 
|---|
 | 827 |                     --shape-op "AND" \
 | 
|---|
 | 828 |           </programlisting>
 | 
|---|
 | 829 | 
 | 
|---|
 | 830 |           <para>This will combine two currently selected shapes vis the "AND" operation
 | 
|---|
 | 831 |           and create a new shape called "combinedshape". Note that the two old shapes
 | 
|---|
 | 832 |           are still present after this operation. We briefly explain each operation:
 | 
|---|
 | 833 |           </para>
 | 
|---|
 | 834 |           <itemizedlist>
 | 
|---|
 | 835 |             <listitem>
 | 
|---|
 | 836 |               <para><emphasis>AND</emphasis> combines two currently selected shapes
 | 
|---|
 | 837 |               into a new shape that only consists of the volume where shapes overlap.</para>
 | 
|---|
 | 838 |             </listitem>
 | 
|---|
 | 839 |             <listitem>
 | 
|---|
 | 840 |               <para><emphasis>OR</emphasis> combines two currently selected shapes
 | 
|---|
 | 841 |               into a new shape that consists of all the volume where that either shape
 | 
|---|
 | 842 |               occupies.</para>
 | 
|---|
 | 843 |             </listitem>
 | 
|---|
 | 844 |             <listitem>
 | 
|---|
 | 845 |               <para><emphasis>NOT</emphasis> creates the inverse to a currently selected
 | 
|---|
 | 846 |               single shape that contains the volume with respect to the simulation domain
 | 
|---|
 | 847 |               that the present one does not.</para>
 | 
|---|
 | 848 |             </listitem>
 | 
|---|
 | 849 |           </itemizedlist>
 | 
|---|
 | 850 |         </section>
 | 
|---|
 | 851 | 
 | 
|---|
| [9bce96] | 852 |         <section xml:id='shapes.remove-shape'>
 | 
|---|
 | 853 |           <title xml:id='shapes.remove-shape.title'>Removing shapes</title>
 | 
|---|
| [6029a6] | 854 | 
 | 
|---|
 | 855 |           <para>Removing a shape is as simple as removing an atom.</para>
 | 
|---|
 | 856 | 
 | 
|---|
 | 857 |           <programlisting>... --remove-shape </programlisting>
 | 
|---|
 | 858 | 
 | 
|---|
 | 859 |           <para>This removes the currently selected shapes.</para>
 | 
|---|
 | 860 |         </section>
 | 
|---|
 | 861 | 
 | 
|---|
| [9bce96] | 862 |         <section xml:id='shapes.manipulation'>
 | 
|---|
 | 863 |           <title xml:id='shapes.manipulation.title'>Manipulating shapes</title>
 | 
|---|
| [6029a6] | 864 | 
 | 
|---|
 | 865 |           <para>Shapes can be stretched, scaled, rotated, and translated to
 | 
|---|
 | 866 |           modify primitives or combined primitive shapes. As you have seen
 | 
|---|
 | 867 |           this manipulation could have occurred already at creation but also
 | 
|---|
 | 868 |           later on. We just the list examples of the various manipulations
 | 
|---|
 | 869 |           below, each works on the currently selected shapes.</para>
 | 
|---|
 | 870 | 
 | 
|---|
 | 871 |           <programlisting>
 | 
|---|
 | 872 |                 ... --stretch-shapes "1,1,2" \
 | 
|---|
 | 873 |                     --stretch-center "5,5,5"
 | 
|---|
 | 874 |           </programlisting>
 | 
|---|
 | 875 | 
 | 
|---|
 | 876 |           <para>This stretches the shapes relative to the center at (5,5,5)
 | 
|---|
 | 877 |           (default is origin) by a factor of 2 in the z direction.</para>
 | 
|---|
 | 878 | 
 | 
|---|
 | 879 |           <programlisting>
 | 
|---|
| [f73e06] | 880 |                 ... --rotate-shapes \
 | 
|---|
| [6029a6] | 881 |                     --center "10,2,2" \
 | 
|---|
 | 882 |                     --angle-x 90 \
 | 
|---|
 | 883 |                     --angle-y 0 \
 | 
|---|
 | 884 |                     --angle-z 0
 | 
|---|
 | 885 |           </programlisting>
 | 
|---|
 | 886 | 
 | 
|---|
 | 887 |           <para>This way all selected shapes are rotated by 90 degrees around
 | 
|---|
 | 888 |           the x axis with respect to the center at (10,2,2).</para>
 | 
|---|
 | 889 | 
 | 
|---|
 | 890 |           <programlisting>... --translate-shapes "5,0,0" </programlisting>
 | 
|---|
 | 891 | 
 | 
|---|
 | 892 |           <para>This translates all selected shapes by 5 along the x
 | 
|---|
 | 893 |           axis.</para>
 | 
|---|
 | 894 |         </section>
 | 
|---|
 | 895 |       </section>
 | 
|---|
 | 896 | 
 | 
|---|
| [9bce96] | 897 |       <section xml:id='randomization'>
 | 
|---|
 | 898 |         <title xml:id='randomization.title'>Randomization</title>
 | 
|---|
| [6029a6] | 899 | 
 | 
|---|
 | 900 |         <para>Some operations require randomness as input, e.g. when filling a
 | 
|---|
 | 901 |         domain with molecules these may be randomly translated and rotated.
 | 
|---|
 | 902 |         Random values are obtained by a random number generator that consists
 | 
|---|
 | 903 |         of two parts: engine and distribution. The engine yields a uniform set
 | 
|---|
 | 904 |         of random numbers in a specific interval, the distribution modifies
 | 
|---|
 | 905 |         them, e.g. to become gaussian.</para>
 | 
|---|
 | 906 | 
 | 
|---|
 | 907 |         <para>There are several Actions to modify the specific engine and
 | 
|---|
 | 908 |         distribution and their parameters. One example usage is that with the
 | 
|---|
 | 909 |         aforementioned filling of the domain molecules are rotated randomly.
 | 
|---|
 | 910 |         If you specify a random number generator that randomly just spills out
 | 
|---|
 | 911 |         values 0,1,2,3, then the randomness is just the orientation of the
 | 
|---|
 | 912 |         molecule with respect to a specific axis: x,y,z. (rotation is at most
 | 
|---|
 | 913 |         360 degrees and 0,1,2,3 act as divisor, hence rotation angle is always
 | 
|---|
 | 914 |         a multiple of 90 degrees).</para>
 | 
|---|
 | 915 | 
 | 
|---|
 | 916 |         <programlisting>
 | 
|---|
 | 917 |                 ... --set-random-number-distribution "uniform_int" \
 | 
|---|
 | 918 |                     --random-number-distribution-parameters "p=1"
 | 
|---|
 | 919 |         </programlisting>
 | 
|---|
 | 920 | 
 | 
|---|
 | 921 |         <para>This changes the distribution to "uniform_int", i.e. integer
 | 
|---|
 | 922 |         numbers distributed uniformly.</para>
 | 
|---|
 | 923 | 
 | 
|---|
 | 924 |         <programlisting>
 | 
|---|
 | 925 |                 ... --set-random-number-engine "mt19937" \
 | 
|---|
 | 926 |                     --random-numner-engine-parameters "seed=10"
 | 
|---|
 | 927 |         </programlisting>
 | 
|---|
 | 928 | 
 | 
|---|
 | 929 |         <para>Specifying the seed allows you to obtain the same sequence of
 | 
|---|
 | 930 |         random numbers for testing purposes.</para>
 | 
|---|
 | 931 |       </section>
 | 
|---|
 | 932 | 
 | 
|---|
| [9bce96] | 933 |       <section xml:id='atoms'>
 | 
|---|
 | 934 |         <title xml:id='atoms.title'>Manipulate atoms</title>
 | 
|---|
| [6029a6] | 935 | 
 | 
|---|
 | 936 |         <para>Here, we explain in detail how to add, remove atoms, change its
 | 
|---|
 | 937 |         element type, scale the bond in between or measure the bond length or
 | 
|---|
 | 938 |         angle.</para>
 | 
|---|
 | 939 | 
 | 
|---|
| [9bce96] | 940 |         <section xml:id='atoms.add-atom'>
 | 
|---|
 | 941 |           <title xml:id='atoms.add-atom.title'>Adding atoms</title>
 | 
|---|
| [6029a6] | 942 | 
 | 
|---|
 | 943 |           <para>Adding an atom to the domain requires the element of the atom
 | 
|---|
 | 944 |           and its coordinates as follows,</para>
 | 
|---|
 | 945 | 
 | 
|---|
 | 946 |           <programlisting>
 | 
|---|
 | 947 |                 ... --add-atom O \
 | 
|---|
 | 948 |                     --domain-position "2.,3.,2.35"
 | 
|---|
 | 949 |           </programlisting>
 | 
|---|
 | 950 | 
 | 
|---|
 | 951 |           <para>where the element is given via its chemical symbol and the
 | 
|---|
 | 952 |           vector gives the position within the domain</para>
 | 
|---|
 | 953 |         </section>
 | 
|---|
 | 954 | 
 | 
|---|
| [9bce96] | 955 |         <section xml:id='atoms.remove-atom'>
 | 
|---|
 | 956 |           <title xml:id='atoms.remove-atom.title'>Removing atoms</title>
 | 
|---|
| [6029a6] | 957 | 
 | 
|---|
 | 958 |           <para>Removing atom(s) does not need any option and operates on the
 | 
|---|
 | 959 |           currently selected ones.</para>
 | 
|---|
 | 960 | 
 | 
|---|
 | 961 |           <programlisting>... --remove-atom</programlisting>
 | 
|---|
 | 962 |         </section>
 | 
|---|
 | 963 | 
 | 
|---|
| [2fcef3] | 964 |         <section xml:id='atoms.saturate-atom'>
 | 
|---|
 | 965 |           <title xml:id='atoms.saturate-atom.title'>Saturating atoms</title>
 | 
|---|
 | 966 | 
 | 
|---|
 | 967 |           <para>Newly instantiated atoms have no bonds to any other atom. If
 | 
|---|
 | 968 |           you want to fill up their valence by a slew of hydrogen atoms 
 | 
|---|
 | 969 |           residing on a sphere around this atom, use this action.</para>
 | 
|---|
 | 970 | 
 | 
|---|
 | 971 |           <programlisting>
 | 
|---|
 | 972 |                 ... --saturate-atoms
 | 
|---|
 | 973 |           </programlisting>
 | 
|---|
 | 974 | 
 | 
|---|
 | 975 |           <para>A number of hydrogen atoms is added. The number corrresponding
 | 
|---|
 | 976 |           to the valence of each selected atom. They are placed in the same
 | 
|---|
 | 977 |           distance to this atom and approximately with same distance to their
 | 
|---|
 | 978 |           nearest neighbors.</para>
 | 
|---|
 | 979 |         </section>
 | 
|---|
 | 980 | 
 | 
|---|
| [9bce96] | 981 |         <section xml:id='atoms.translate-atom'>
 | 
|---|
 | 982 |           <title xml:id='atoms.translate-atom.title'>Translating atoms</title>
 | 
|---|
| [6029a6] | 983 | 
 | 
|---|
 | 984 |           <para>In order to translate the current selected subset of atoms you
 | 
|---|
 | 985 |           specify a translation vector.</para>
 | 
|---|
 | 986 | 
 | 
|---|
 | 987 |           <programlisting>
 | 
|---|
 | 988 |                 ... --translate-atoms "-1,0,0" \
 | 
|---|
 | 989 |                     --periodic 0
 | 
|---|
 | 990 |           </programlisting>
 | 
|---|
 | 991 | 
 | 
|---|
 | 992 |           <para>This translate all atoms by "-1" along the x axis and does not
 | 
|---|
 | 993 |           mind the boundary conditions, i.e. might shift atoms outside of the
 | 
|---|
 | 994 |           domain.</para>
 | 
|---|
 | 995 |         </section>
 | 
|---|
 | 996 | 
 | 
|---|
| [bbf6dc] | 997 |         <section xml:id='atoms.mirror-atoms'>
 | 
|---|
 | 998 |           <title xml:id='atoms.mirror-atoms.title'>Mirroring atoms</title>
 | 
|---|
 | 999 | 
 | 
|---|
 | 1000 |           <para>Present (and selected) atoms can be mirrored with respect to
 | 
|---|
 | 1001 |           a certain plane. You have to specify the normal vector of the plane
 | 
|---|
 | 1002 |           and the offset with respect to the origin as follows</para>
 | 
|---|
 | 1003 | 
 | 
|---|
 | 1004 |           <programlisting>
 | 
|---|
 | 1005 |                 ... --mirror-atoms "1,0,0" \
 | 
|---|
 | 1006 |                     --plane-offset 10.1 \
 | 
|---|
 | 1007 |                     --periodic 0
 | 
|---|
 | 1008 |           </programlisting>
 | 
|---|
 | 1009 |         </section>
 | 
|---|
 | 1010 | 
 | 
|---|
| [c7fe90] | 1011 |         <section xml:id='atoms.translate-to-origin'>
 | 
|---|
 | 1012 |           <title xml:id='atoms.translate-to-origin.title'>Translating atoms</title>
 | 
|---|
 | 1013 | 
 | 
|---|
 | 1014 |           <para>The following Action is convenient to place a subset of atoms
 | 
|---|
 | 1015 |           at a known position, the origin, and then translate to some other
 | 
|---|
 | 1016 |           absolute coordinate. It calculates the average position of the set
 | 
|---|
 | 1017 |           of selected atoms and then translates all atoms by the negative of
 | 
|---|
 | 1018 |           this center, i.e. the center is afterwards at the origin.</para>
 | 
|---|
 | 1019 | 
 | 
|---|
 | 1020 |           <programlisting>... --translate-to-origin</programlisting>
 | 
|---|
 | 1021 |         </section>
 | 
|---|
 | 1022 | 
 | 
|---|
| [9bce96] | 1023 |         <section xml:id='atoms.change-element'>
 | 
|---|
 | 1024 |           <title xml:id='atoms.change-element.title'>Changing an atoms element
 | 
|---|
 | 1025 |           </title>
 | 
|---|
| [6029a6] | 1026 | 
 | 
|---|
 | 1027 |           <para>You can easily turn lead or silver into gold, by selecting the
 | 
|---|
 | 1028 |           silver atom and calling the change element action.</para>
 | 
|---|
 | 1029 | 
 | 
|---|
 | 1030 |           <programlisting>... --change-element Au</programlisting>
 | 
|---|
 | 1031 |         </section>
 | 
|---|
 | 1032 |       </section>
 | 
|---|
 | 1033 | 
 | 
|---|
| [9bce96] | 1034 |       <section xml:id='bond'>
 | 
|---|
 | 1035 |         <title xml:id='bond.title'>Bond-related manipulation</title>
 | 
|---|
| [6029a6] | 1036 | 
 | 
|---|
 | 1037 |         <para>Atoms can also be manipulated with respect to the bonds.
 | 
|---|
 | 1038 |         <remark>Note that with bonds we always mean covalent bonds.</remark>
 | 
|---|
 | 1039 |         First, we explain how to modify the bond structure itself, then we go
 | 
|---|
 | 1040 |         in the details of using the bond information to change bond distance
 | 
|---|
 | 1041 |         and angles.</para>
 | 
|---|
 | 1042 | 
 | 
|---|
| [9bce96] | 1043 |         <section xml:id='bond.create-adjacency'>
 | 
|---|
 | 1044 |           <title xml:id='bond.create-adjacency.title'>Creating a bond graph
 | 
|---|
 | 1045 |           </title>
 | 
|---|
| [6029a6] | 1046 | 
 | 
|---|
 | 1047 |           <para>In case you have loaded a configuration file with no bond
 | 
|---|
 | 1048 |           information, e.g. XYZ, it is necessary to create the bond graph.
 | 
|---|
 | 1049 |           This is done by a heuristic distance criterion.</para>
 | 
|---|
 | 1050 | 
 | 
|---|
 | 1051 |           <programlisting>... --create-adjacency</programlisting>
 | 
|---|
 | 1052 | 
 | 
|---|
 | 1053 |           <para>This uses by default a criterion based on van-der-Waals radii,
 | 
|---|
 | 1054 |           i.e. if we look at two atoms indexed by "a" and "b"</para>
 | 
|---|
 | 1055 | 
 | 
|---|
 | 1056 |           <equation>
 | 
|---|
 | 1057 |             <title>V(a) + V(b) - \tau < R_{ab} < V(a) + V(b) +
 | 
|---|
 | 1058 |             \tau</title>
 | 
|---|
 | 1059 | 
 | 
|---|
 | 1060 |             <m:math display="block">
 | 
|---|
 | 1061 |               <m:mi>where V(.) is the lookup table for the radii for a given
 | 
|---|
 | 1062 |               element and \tau is a threshold value, set to 0.4.</m:mi>
 | 
|---|
 | 1063 |             </m:math>
 | 
|---|
 | 1064 |           </equation>
 | 
|---|
 | 1065 | 
 | 
|---|
 | 1066 |           <para>As a second option, you may load a file containing bond table
 | 
|---|
 | 1067 |           information.</para>
 | 
|---|
 | 1068 | 
 | 
|---|
 | 1069 |           <programlisting>... --bond-table table.dat</programlisting>
 | 
|---|
 | 1070 | 
 | 
|---|
 | 1071 |           <para>which would parse a file <filename>table.dat</filename> for a
 | 
|---|
 | 1072 |           table giving typical bond distances between elements a and b. These
 | 
|---|
 | 1073 |           are used in the above criterion as <inlineequation>
 | 
|---|
 | 1074 |               <m:math display="inline">
 | 
|---|
 | 1075 |                 <m:mi>V(a,b)</m:mi>
 | 
|---|
 | 1076 |               </m:math>
 | 
|---|
 | 1077 |             </inlineequation> in place of <inlineequation>
 | 
|---|
 | 1078 |               <m:math display="inline">
 | 
|---|
 | 1079 |                 <m:mi>V(a)+V(b)</m:mi>
 | 
|---|
 | 1080 |               </m:math>
 | 
|---|
 | 1081 |             </inlineequation>.</para>
 | 
|---|
 | 1082 |         </section>
 | 
|---|
 | 1083 | 
 | 
|---|
| [9bce96] | 1084 |         <section xml:id='bond.destroy-adjacency'>
 | 
|---|
 | 1085 |           <title xml:id='bond.destroy-adjacency.title'>Destroying the bond 
 | 
|---|
 | 1086 |           graph</title>
 | 
|---|
| [6029a6] | 1087 | 
 | 
|---|
 | 1088 |           <para>The bond graph can be removed completely (and all bonds along
 | 
|---|
 | 1089 |           with it).</para>
 | 
|---|
 | 1090 | 
 | 
|---|
 | 1091 |           <programlisting>... --destroy-adjacency</programlisting>
 | 
|---|
 | 1092 |         </section>
 | 
|---|
 | 1093 | 
 | 
|---|
| [9bce96] | 1094 |         <section xml:id='bond.correct-bonddegree'>
 | 
|---|
 | 1095 |           <title xml:id='bond.correct-bonddegree.title'>Correcting bond 
 | 
|---|
 | 1096 |           degrees</title>
 | 
|---|
| [f73e06] | 1097 | 
 | 
|---|
 | 1098 |           <para>Typically, after loading an input file bond information, e.g.
 | 
|---|
 | 1099 |           a PDB file, the bond graph is complete but we lack the weights. That
 | 
|---|
 | 1100 |           is we do not know whether a bond is single, double, triple, ...
 | 
|---|
 | 1101 |           This action corrects the bond degree by enforcing charge neutrality
 | 
|---|
 | 1102 |           among the connected atoms.
 | 
|---|
 | 1103 |           </para>
 | 
|---|
 | 1104 |           <para>This action is in fact quadratically scaling in the number of
 | 
|---|
 | 1105 |           atoms. Hence, for large systems this may take longer than expected.
 | 
|---|
 | 1106 |           </para>
 | 
|---|
 | 1107 | 
 | 
|---|
 | 1108 |           <programlisting>... --correct-bonddegree</programlisting>
 | 
|---|
 | 1109 |         </section>
 | 
|---|
 | 1110 | 
 | 
|---|
| [9bce96] | 1111 |         <section xml:id='bond.depth-first-search'>
 | 
|---|
 | 1112 |           <title xml:id='bond.depth-first-search.title'>Analysing a bond 
 | 
|---|
 | 1113 |           graph</title>
 | 
|---|
| [6029a6] | 1114 | 
 | 
|---|
 | 1115 |           <para>You can perform a depth-first search analysis that reveals
 | 
|---|
 | 1116 |           cycles and other graph-related information.</para>
 | 
|---|
 | 1117 | 
 | 
|---|
 | 1118 |           <programlisting>... --depth-first-search</programlisting>
 | 
|---|
 | 1119 |         </section>
 | 
|---|
 | 1120 | 
 | 
|---|
| [9bce96] | 1121 |         <section xml:id='bond.subgraph-dissection'>
 | 
|---|
 | 1122 |           <title xml:id='bond.subgraph-dissection.title'>Dissecting the 
 | 
|---|
 | 1123 |           molecular system into molecules</title>
 | 
|---|
| [6029a6] | 1124 | 
 | 
|---|
 | 1125 |           <para>The bond graph information can be used to recognize the
 | 
|---|
 | 1126 |           molecule within the system. Imagine you have just loaded a PDB file
 | 
|---|
 | 1127 |           containing bond information. However, initially all atoms are dumped
 | 
|---|
 | 1128 |           into the same molecule. Before you can start manipulating, you need
 | 
|---|
 | 1129 |           to dissect the system into individual molecules. Note that this is
 | 
|---|
 | 1130 |           just structural information and does not change the state of the
 | 
|---|
 | 1131 |           system.</para>
 | 
|---|
 | 1132 | 
 | 
|---|
 | 1133 |           <programlisting>... --subgraph-dissection</programlisting>
 | 
|---|
 | 1134 | 
 | 
|---|
 | 1135 |           <para>This analyses the bond graph and splits the single molecule up
 | 
|---|
 | 1136 |           into individual (new) ones that each contain a single connected
 | 
|---|
 | 1137 |           subgraph, hence the naming.</para>
 | 
|---|
 | 1138 |         </section>
 | 
|---|
 | 1139 | 
 | 
|---|
| [9bce96] | 1140 |         <section xml:id='bond.update-molecules'>
 | 
|---|
 | 1141 |           <title xml:id='bond.update-molecules.title'>Updating molecule 
 | 
|---|
 | 1142 |           structure</title>
 | 
|---|
| [f73e06] | 1143 | 
 | 
|---|
 | 1144 |           <para>When the bond information has changed, new molecules might 
 | 
|---|
 | 1145 |           have formed, this action updates all the molecules by scanning
 | 
|---|
 | 1146 |           the connectedness of the bond grapf of the molecular system.
 | 
|---|
 | 1147 |           </para>
 | 
|---|
 | 1148 | 
 | 
|---|
 | 1149 |           <programlisting>... --update-molecules</programlisting>
 | 
|---|
 | 1150 |         </section>
 | 
|---|
 | 1151 | 
 | 
|---|
| [88afc9] | 1152 |         <section xml:id='bond.adds-bond'>
 | 
|---|
 | 1153 |           <title xml:id='bond.adds-bond.title'>Adding a bond manually</title>
 | 
|---|
| [6029a6] | 1154 | 
 | 
|---|
 | 1155 |           <para>When the automatically created adjacency or bond graph
 | 
|---|
 | 1156 |           contains faulty bonds or lacks some, you can add them manually.
 | 
|---|
| [88afc9] | 1157 |           </para>
 | 
|---|
| [6029a6] | 1158 | 
 | 
|---|
| [88afc9] | 1159 |           <programlisting>... --add-bonds</programlisting>
 | 
|---|
 | 1160 | 
 | 
|---|
 | 1161 |           <para>If two atoms are selected, the single bond in between, if not
 | 
|---|
 | 1162 |           present, is added. If more than two atoms are selected, than the
 | 
|---|
 | 1163 |           bond between any pair of these is added.</para>
 | 
|---|
 | 1164 |          <note><para>This is especially useful in conjunction with the
 | 
|---|
 | 1165 |           fragmentation scheme. If you want to know the contribution from
 | 
|---|
 | 1166 |           certain fragments whose subgraph is not connected you can simply
 | 
|---|
 | 1167 |           make the associated subset of atoms connected by selecting all
 | 
|---|
 | 1168 |           bonds and adding the bonds.</para>
 | 
|---|
 | 1169 |          </note>
 | 
|---|
| [6029a6] | 1170 |         </section>
 | 
|---|
 | 1171 | 
 | 
|---|
| [88afc9] | 1172 |         <section xml:id='bond.remove-bonds'>
 | 
|---|
 | 1173 |           <title xml:id='bond.remove-bonds.title'>Removing a bond manually
 | 
|---|
| [9bce96] | 1174 |           </title>
 | 
|---|
| [6029a6] | 1175 | 
 | 
|---|
 | 1176 |           <para>In much the same way as adding a bond, you can also remove a
 | 
|---|
 | 1177 |           bond.</para>
 | 
|---|
 | 1178 | 
 | 
|---|
| [88afc9] | 1179 |           <programlisting>... --remove-bonds</programlisting>
 | 
|---|
 | 1180 | 
 | 
|---|
 | 1181 |           <para>Similarly, if more than two atoms are selected, then all bonds
 | 
|---|
 | 1182 |           found between any pair of these is removed.</para>
 | 
|---|
| [6029a6] | 1183 |         </section>
 | 
|---|
 | 1184 | 
 | 
|---|
| [9bce96] | 1185 |         <section xml:id='bond.save-bonds'>
 | 
|---|
 | 1186 |           <title xml:id='bond.save-bonds.title'>Saving bond information
 | 
|---|
 | 1187 |           </title>
 | 
|---|
| [f73e06] | 1188 | 
 | 
|---|
 | 1189 |           <para>Bond information can be saved to a file in <link 
 | 
|---|
| [9bce96] | 1190 |           xlink:href="http://www.molecuilder.com/"><productname>TREMOLO
 | 
|---|
 | 1191 |           </productname></link>'s dbond style.</para>
 | 
|---|
| [f73e06] | 1192 | 
 | 
|---|
 | 1193 |           <programlisting>... --save-bonds system.dbonds</programlisting>
 | 
|---|
 | 1194 |           
 | 
|---|
 | 1195 |           <para>Similarly is the following Action which saves the bond
 | 
|---|
 | 1196 |           information as a simple list of one atomic id per line and in
 | 
|---|
 | 1197 |           the same line, separated by spaces, the ids of all atoms connected
 | 
|---|
 | 1198 |           to it.</para>
 | 
|---|
 | 1199 |           
 | 
|---|
 | 1200 |           <programlisting>... --save-adjacency system.adj</programlisting>
 | 
|---|
 | 1201 |           
 | 
|---|
 | 1202 |         </section>
 | 
|---|
 | 1203 | 
 | 
|---|
| [9bce96] | 1204 |         <section xml:id='bond.stretch-bond'>
 | 
|---|
 | 1205 |           <title xml:id='bond.stretch-bond.title'>Stretching a bond</title>
 | 
|---|
| [6029a6] | 1206 | 
 | 
|---|
 | 1207 |           <para>Stretching a bond actually refers to translation of the
 | 
|---|
 | 1208 |           associated pair of atoms. However, this action will keep the rest of
 | 
|---|
 | 1209 |           the molecule to which both atoms belong to invariant as well.</para>
 | 
|---|
 | 1210 | 
 | 
|---|
 | 1211 |           <programlisting>... --stretch-bond 1.2</programlisting>
 | 
|---|
 | 1212 | 
 | 
|---|
 | 1213 |           <para>This scales the original bond distance to the new bond
 | 
|---|
 | 1214 |           distance 1.2, shifting the right hand side and the left hand side of
 | 
|---|
 | 1215 |           the molecule accordingly.</para>
 | 
|---|
 | 1216 | 
 | 
|---|
 | 1217 |           <warning>
 | 
|---|
 | 1218 |             <para>this fails with aromatic rings (but you can always
 | 
|---|
 | 1219 |             undo).</para>
 | 
|---|
 | 1220 |           </warning>
 | 
|---|
 | 1221 |         </section>
 | 
|---|
 | 1222 | 
 | 
|---|
| [9bce96] | 1223 |         <section xml:id='bond.change-bond-angle'>
 | 
|---|
 | 1224 |           <title xml:id='bond.change-bond-angle.title'>Changing a bond angle
 | 
|---|
 | 1225 |           </title>
 | 
|---|
| [6029a6] | 1226 | 
 | 
|---|
 | 1227 |           <para>In the same way as stretching a bond, you can change the angle
 | 
|---|
 | 1228 |           in between two bonds. This works if exactly three atoms are selected
 | 
|---|
 | 1229 |           and two pairs are bonded.</para>
 | 
|---|
 | 1230 | 
 | 
|---|
 | 1231 |           <programlisting>... --change-bond-angle 90</programlisting>
 | 
|---|
 | 1232 | 
 | 
|---|
 | 1233 |           <para>This will change the angle from its value to 90 degree by
 | 
|---|
 | 1234 |           translating the two outer atoms of this triangle (the atom connected
 | 
|---|
 | 1235 |           to both others is the axis of the rotation).</para>
 | 
|---|
 | 1236 |         </section>
 | 
|---|
 | 1237 |       </section>
 | 
|---|
 | 1238 | 
 | 
|---|
| [9bce96] | 1239 |       <section xml:id='molecule'>
 | 
|---|
 | 1240 |         <title xml:id='molecule.title'>Manipulate molecules</title>
 | 
|---|
| [6029a6] | 1241 | 
 | 
|---|
 | 1242 |         <para>Molecules are agglomerations of atoms that are bonded. Hence,
 | 
|---|
 | 1243 |         the actions working on molecules differ from those working on atoms.
 | 
|---|
 | 1244 |         Joining two molecules can only be accomplished by adding a bond in
 | 
|---|
 | 1245 |         between, and in the reverse fashion splitting a molecule by removing
 | 
|---|
 | 1246 |         all bonds in between. Actions below mostly deal with copying
 | 
|---|
 | 1247 |         molecules. Removing of molecules is done via selecting the molecule's
 | 
|---|
 | 1248 |         atoms and removing them, which removes the atoms as well.</para>
 | 
|---|
 | 1249 | 
 | 
|---|
 | 1250 |         <note>
 | 
|---|
 | 1251 |           <para>Initially when you load a file via the input action all atoms
 | 
|---|
 | 1252 |           are placed in a single molecule despite any present bond
 | 
|---|
| [9bce96] | 1253 |           information, see <link linkend="fragmentation">Dissecting the 
 | 
|---|
 | 1254 |           molecular system into molecules</link></para>
 | 
|---|
| [6029a6] | 1255 |         </note>
 | 
|---|
 | 1256 | 
 | 
|---|
| [9bce96] | 1257 |         <section xml:id='molecule.copy'>
 | 
|---|
 | 1258 |           <title xml:id='molecule.copy.title'>Copy molecules</title>
 | 
|---|
| [6029a6] | 1259 | 
 | 
|---|
 | 1260 |           <para>A basic operation is to duplicate a molecule. This works on a
 | 
|---|
 | 1261 |           single, currently selected molecule. Afterwards, we elaborate on a
 | 
|---|
 | 1262 |           more complex manner of copying, filling a specific shape with
 | 
|---|
 | 1263 |           molecules.</para>
 | 
|---|
 | 1264 | 
 | 
|---|
 | 1265 |           <programlisting>
 | 
|---|
 | 1266 |                 ... --copy-molecule \
 | 
|---|
 | 1267 |                     --position "10,10,10"
 | 
|---|
 | 1268 |           </programlisting>
 | 
|---|
 | 1269 | 
 | 
|---|
 | 1270 |           <para>This action copies the selected molecule and inserts it at the
 | 
|---|
 | 1271 |           position (10,10,10) in the domain with respect to the molecule's
 | 
|---|
 | 1272 |           center. In effect, it copies all the atoms of the original molecule
 | 
|---|
 | 1273 |           and adds new bonds in between these copied atoms such that their
 | 
|---|
 | 1274 |           bond subgraphs are identical.</para>
 | 
|---|
 | 1275 |         </section>
 | 
|---|
 | 1276 | 
 | 
|---|
| [9bce96] | 1277 |         <section xml:id='molecule.change-molname'>
 | 
|---|
 | 1278 |           <title xml:id='molecule.change-molname.title'>Change a molecules 
 | 
|---|
 | 1279 |           name</title>
 | 
|---|
| [6029a6] | 1280 | 
 | 
|---|
 | 1281 |           <para>You can change the name of a molecule which is important for
 | 
|---|
 | 1282 |           selection.</para>
 | 
|---|
 | 1283 | 
 | 
|---|
 | 1284 |           <programlisting>... -change-molname "test</programlisting>
 | 
|---|
 | 1285 | 
 | 
|---|
 | 1286 |           <para>This will change the name of the (only) selected molecule to
 | 
|---|
 | 1287 |           "test".</para>
 | 
|---|
 | 1288 | 
 | 
|---|
 | 1289 |           <para>Connected with this is the default name an unknown molecule
 | 
|---|
 | 1290 |           gets.</para>
 | 
|---|
 | 1291 | 
 | 
|---|
 | 1292 |           <programlisting>... --default-molname test</programlisting>
 | 
|---|
 | 1293 | 
 | 
|---|
 | 1294 |           <para>This will change the default name of a molecule to
 | 
|---|
 | 1295 |           "test".</para>
 | 
|---|
 | 1296 | 
 | 
|---|
 | 1297 |           <note>
 | 
|---|
 | 1298 |             <para>Note that a molecule loaded from file gets the filename
 | 
|---|
 | 1299 |             (without suffix) as its name.</para>
 | 
|---|
 | 1300 |           </note>
 | 
|---|
 | 1301 |         </section>
 | 
|---|
 | 1302 | 
 | 
|---|
| [867473] | 1303 |         <section xml:id='molecule.remove-molecule'>
 | 
|---|
 | 1304 |           <title xml:id='molecule.remove-molecule.title'>Remove molecules
 | 
|---|
 | 1305 |           </title>
 | 
|---|
 | 1306 | 
 | 
|---|
 | 1307 |           <para>This removes one or multiple selected molecules.</para>
 | 
|---|
 | 1308 | 
 | 
|---|
 | 1309 |           <programlisting>... -remove-molecule</programlisting>
 | 
|---|
 | 1310 | 
 | 
|---|
 | 1311 |           <para>This essentially just removes all of the molecules' atoms
 | 
|---|
 | 1312 |           which in turn also causes the removal of the molecule.</para>
 | 
|---|
 | 1313 |         </section>
 | 
|---|
 | 1314 | 
 | 
|---|
| [066442] | 1315 |         <section xml:id='molecule.translate-molecules'>
 | 
|---|
 | 1316 |           <title xml:id='molecule.translate-molecules.title'>Translate molecules
 | 
|---|
 | 1317 |           </title>
 | 
|---|
 | 1318 | 
 | 
|---|
 | 1319 |           <para>This translates one or multiple selected molecules by a
 | 
|---|
 | 1320 |           specific offset..</para>
 | 
|---|
 | 1321 | 
 | 
|---|
 | 1322 |           <programlisting>... -translate-molecules</programlisting>
 | 
|---|
 | 1323 | 
 | 
|---|
 | 1324 |           <para>This essentially translates all of the molecules' atoms.</para>
 | 
|---|
 | 1325 |         </section>
 | 
|---|
 | 1326 | 
 | 
|---|
| [9bce96] | 1327 |         <section xml:id='molecule.rotate-around-self'>
 | 
|---|
 | 1328 |           <title xml:id='molecule.rotate-around-self.title'>Rotate around self
 | 
|---|
 | 1329 |           </title>
 | 
|---|
| [6029a6] | 1330 | 
 | 
|---|
 | 1331 |           <para>You can rotate a molecule around its own axis.</para>
 | 
|---|
 | 1332 | 
 | 
|---|
 | 1333 |           <programlisting>
 | 
|---|
 | 1334 |                 ... --rotate-around-self "90" \
 | 
|---|
 | 1335 |                     --axis "0,0,1"
 | 
|---|
 | 1336 |           </programlisting>
 | 
|---|
 | 1337 | 
 | 
|---|
 | 1338 |           <para>This rotates the molecule around the z axis by 90 degrees as
 | 
|---|
 | 1339 |           if the origin were at its center of origin.</para>
 | 
|---|
 | 1340 |         </section>
 | 
|---|
 | 1341 | 
 | 
|---|
| [9bce96] | 1342 |         <section xml:id='molecule.rotate-around-origin'>
 | 
|---|
 | 1343 |           <title xml:id='molecule.rotate-around-origin.title'>Rotate around 
 | 
|---|
 | 1344 |           origin</title>
 | 
|---|
| [6029a6] | 1345 | 
 | 
|---|
 | 1346 |           <para>In the same manner the molecule can be rotated around an
 | 
|---|
 | 1347 |           external origin.</para>
 | 
|---|
 | 1348 | 
 | 
|---|
 | 1349 |           <programlisting>
 | 
|---|
 | 1350 |                 ... --rotate-around-origin 90 \
 | 
|---|
 | 1351 |                     --position "0,0,1"\
 | 
|---|
 | 1352 |           </programlisting>
 | 
|---|
 | 1353 | 
 | 
|---|
 | 1354 |           <para>This rotates the molecule around an axis from the origin to
 | 
|---|
 | 1355 |           the position (0,0,1), i.e. around the z axis, by 90 degrees.</para>
 | 
|---|
 | 1356 |         </section>
 | 
|---|
 | 1357 | 
 | 
|---|
| [9bce96] | 1358 |         <section xml:id='molecule.rotate-to-principal-axis-system'>
 | 
|---|
 | 1359 |           <title xml:id='molecule.rotate-to-principal-axis-system.title'>
 | 
|---|
 | 1360 |           Rotate to principal axis system</title>
 | 
|---|
| [6029a6] | 1361 | 
 | 
|---|
 | 1362 |           <para>The principal axis system is given by an ellipsoid that mostly
 | 
|---|
 | 1363 |           matches the molecules shape. The principal axis system can be just
 | 
|---|
 | 1364 |           simply determined by</para>
 | 
|---|
 | 1365 | 
 | 
|---|
 | 1366 |           <programlisting>... --principal-axis-system</programlisting>
 | 
|---|
 | 1367 | 
 | 
|---|
 | 1368 |           <para>To rotate the molecule around itself to align with this system
 | 
|---|
 | 1369 |           do as follows.</para>
 | 
|---|
 | 1370 | 
 | 
|---|
| [9bce96] | 1371 |           <programlisting>... --rotate-to-principal-axis-system "0,0,1"
 | 
|---|
 | 1372 |           </programlisting>
 | 
|---|
| [6029a6] | 1373 | 
 | 
|---|
 | 1374 |           <para>This rotates the molecule in such a manner that the ellipsoids
 | 
|---|
 | 1375 |           largest axis is aligned with the z axis. <remark>Note that "0,0,-1"
 | 
|---|
 | 1376 |           would align anti-parallel.</remark></para>
 | 
|---|
 | 1377 |         </section>
 | 
|---|
 | 1378 | 
 | 
|---|
| [9bce96] | 1379 |         <section xml:id='molecule.verlet-integration'>
 | 
|---|
 | 1380 |           <title xml:id='molecule.verlet-integration.title'>Perform verlet 
 | 
|---|
 | 1381 |           integration</title>
 | 
|---|
| [6029a6] | 1382 | 
 | 
|---|
 | 1383 |           <para>Atoms not only have a position, but each instance also stores
 | 
|---|
 | 1384 |           velocity and a force vector. These can be used in a velocity verlet
 | 
|---|
 | 1385 |           integration step. Velocity verlet is a often employed time
 | 
|---|
 | 1386 |           integration algorithm in molecular dynamics simulations.</para>
 | 
|---|
 | 1387 | 
 | 
|---|
 | 1388 |           <programlisting>
 | 
|---|
 | 1389 |                 ... --verlet-integration \
 | 
|---|
 | 1390 |                     --deltat 0.1 \
 | 
|---|
 | 1391 |                     --keep-fixed-CenterOfMass 0
 | 
|---|
 | 1392 |           </programlisting>
 | 
|---|
 | 1393 | 
 | 
|---|
 | 1394 |           <para>This will integrate with a timestep of <inlineequation>
 | 
|---|
 | 1395 |               <m:math display="inline">
 | 
|---|
 | 1396 |                 <m:mi>\Delta_t = 0.1</m:mi>
 | 
|---|
 | 1397 |               </m:math>
 | 
|---|
 | 1398 |             </inlineequation>and correcting forces and velocities such that
 | 
|---|
 | 1399 |           the sum over all atoms is zero.</para>
 | 
|---|
 | 1400 |         </section>
 | 
|---|
| [f73e06] | 1401 | 
 | 
|---|
| [9bce96] | 1402 |         <section xml:id='molecule.force-annealing'>
 | 
|---|
 | 1403 |           <title xml:id='molecule.force-annealing.title'>Anneal the atomic 
 | 
|---|
 | 1404 |           forces</title>
 | 
|---|
| [f73e06] | 1405 | 
 | 
|---|
 | 1406 |           <para>This will shift the atoms in a such a way as to decrease (or
 | 
|---|
 | 1407 |           anneal) the forces acting upon them.</para>
 | 
|---|
 | 1408 | 
 | 
|---|
 | 1409 |           <para>Forces may either be already present for the set of atoms by
 | 
|---|
 | 1410 |           some other way (e.g. from a prior fragmentation calculation) or,
 | 
|---|
 | 1411 |           as shown here, from an external file. We anneal the forces for
 | 
|---|
 | 1412 |           one step with a certain initial step width of 0.5 atomic time
 | 
|---|
 | 1413 |           units and do not create a new timestep for each optimization
 | 
|---|
 | 1414 |           step.</para>
 | 
|---|
 | 1415 | 
 | 
|---|
 | 1416 |           <programlisting>
 | 
|---|
 | 1417 |           ... --force-annealing \
 | 
|---|
 | 1418 |           --forces-file test.forces \
 | 
|---|
 | 1419 |           --deltat 0.5 \
 | 
|---|
 | 1420 |           --steps 1 \
 | 
|---|
 | 1421 |           --output-every-step 0
 | 
|---|
 | 1422 |           </programlisting>
 | 
|---|
 | 1423 |         </section>
 | 
|---|
 | 1424 | 
 | 
|---|
| [9bce96] | 1425 |         <section xml:id='molecule.linear-interpolation-of-trajectories'>
 | 
|---|
 | 1426 |           <title xml:id='molecule.linear-interpolation-of-trajectories.title'>
 | 
|---|
 | 1427 |           Linear interpolation between configurations</title>
 | 
|---|
| [f73e06] | 1428 | 
 | 
|---|
 | 1429 |           <para>This is similar to verlet-integration, only that it performs
 | 
|---|
 | 1430 |           a linear integration irrespective of the acting atomic forces.
 | 
|---|
 | 1431 |           </para>
 | 
|---|
 | 1432 | 
 | 
|---|
 | 1433 |           <para>The following call will produce an interpolation between the
 | 
|---|
 | 1434 |           configurations in time step 0 and time step 1 with 98 intermediate
 | 
|---|
 | 1435 |           steps, i.e. current step 1 will end up in time step 99. In this
 | 
|---|
 | 1436 |           case an idential mapping is used to associated atoms in start and
 | 
|---|
 | 1437 |           end configuration.</para>
 | 
|---|
 | 1438 | 
 | 
|---|
 | 1439 |           <programlisting>
 | 
|---|
 | 1440 |           ... --linear-interpolation-of-trajectories \
 | 
|---|
 | 1441 |           --start-step 0 \
 | 
|---|
 | 1442 |           --end-step 1 \
 | 
|---|
 | 1443 |           --interpolation-steps 100 \
 | 
|---|
 | 1444 |           --id-mapping 1
 | 
|---|
 | 1445 |           </programlisting>
 | 
|---|
 | 1446 |         </section>
 | 
|---|
| [6029a6] | 1447 |       </section>
 | 
|---|
 | 1448 | 
 | 
|---|
| [9bce96] | 1449 |       <section xml:id='domain'>
 | 
|---|
 | 1450 |         <title xml:id='domain.title'>Manipulate domain</title>
 | 
|---|
| [6029a6] | 1451 | 
 | 
|---|
 | 1452 |         <para>Here, we elaborate on how to duplicate all the atoms inside the
 | 
|---|
 | 1453 |         domain, how the scale the coordinate system, how to center the atoms
 | 
|---|
 | 1454 |         with respect to certain points, how to realign them by given
 | 
|---|
 | 1455 |         constraints, how to mirror and most importantly how to specify the
 | 
|---|
 | 1456 |         domain.</para>
 | 
|---|
 | 1457 | 
 | 
|---|
| [9bce96] | 1458 |         <section xml:id='domain.change-box'>
 | 
|---|
 | 1459 |           <title xml:id='domain.change-box.title'>Changing the domain</title>
 | 
|---|
| [6029a6] | 1460 | 
 | 
|---|
 | 1461 |           <para>The domain is specified by a symmetric 3x3 matrix. The
 | 
|---|
 | 1462 |           eigenvalues (diagonal entries in case of a diagonal matrix) give the
 | 
|---|
 | 1463 |           length of the edges, additional entries specify transformations of
 | 
|---|
 | 1464 |           the box such that it becomes a more general parallelepiped.</para>
 | 
|---|
 | 1465 | 
 | 
|---|
 | 1466 |           <programlisting>... change-box "20,0,20,0,0,20"</programlisting>
 | 
|---|
 | 1467 | 
 | 
|---|
 | 1468 |           <para>As the domain matrix is symmetric, six values suffice to fully
 | 
|---|
 | 1469 |           specify it. We have to give the six components of the lower diagonal
 | 
|---|
 | 1470 |           matrix. Here, we change the box to a cuboid of equal edge length of
 | 
|---|
 | 1471 |           20.</para>
 | 
|---|
 | 1472 |         </section>
 | 
|---|
 | 1473 | 
 | 
|---|
| [9bce96] | 1474 |         <section xml:id='domain.bound-in-box'>
 | 
|---|
 | 1475 |           <title xml:id='domain.bound-in-box.title'>Bound atoms inside box
 | 
|---|
 | 1476 |           </title>
 | 
|---|
| [6029a6] | 1477 | 
 | 
|---|
 | 1478 |           <para>The following applies the current boundary conditions to the
 | 
|---|
 | 1479 |           atoms. In case of periodic or wrapped boundary conditions the atoms
 | 
|---|
 | 1480 |           will be periodically translated to be inside the domain
 | 
|---|
 | 1481 |           again.</para>
 | 
|---|
 | 1482 | 
 | 
|---|
 | 1483 |           <programlisting>... --bound-in-box</programlisting>
 | 
|---|
 | 1484 |         </section>
 | 
|---|
 | 1485 | 
 | 
|---|
| [9bce96] | 1486 |         <section xml:id='domain.center-in-box'>
 | 
|---|
 | 1487 |           <title xml:id='domain.center-in-box.title'>Center atoms inside the 
 | 
|---|
 | 1488 |           domain</title>
 | 
|---|
| [6029a6] | 1489 | 
 | 
|---|
 | 1490 |           <para>This is a combination of changing the box and bounding the
 | 
|---|
 | 1491 |           atoms inside it.</para>
 | 
|---|
 | 1492 | 
 | 
|---|
 | 1493 |           <programlisting>... --center-in-box "20,0,20,0,0,"</programlisting>
 | 
|---|
 | 1494 |         </section>
 | 
|---|
 | 1495 | 
 | 
|---|
| [9bce96] | 1496 |         <section xml:id='domain.center-edge'>
 | 
|---|
 | 1497 |           <title xml:id='domain.center-edge.title'>Center the atoms at an 
 | 
|---|
 | 1498 |           edge</title>
 | 
|---|
| [6029a6] | 1499 | 
 | 
|---|
 | 1500 |           <para>MoleCuilder can calculate the minimum box (parallel to the
 | 
|---|
 | 1501 |           cardinal axis) all atoms would fit in and translate all atoms in
 | 
|---|
 | 1502 |           such a way that the lower, left, front edge of this minimum is at
 | 
|---|
 | 1503 |           the origin (0,0,0).</para>
 | 
|---|
 | 1504 | 
 | 
|---|
 | 1505 |           <programlisting>... --center-edge</programlisting>
 | 
|---|
 | 1506 |         </section>
 | 
|---|
 | 1507 | 
 | 
|---|
| [9bce96] | 1508 |         <section xml:id='domain.add-empty-boundary'>
 | 
|---|
 | 1509 |           <title xml:id='domain.add-empty-boundary.title'>Extending the 
 | 
|---|
 | 1510 |           boundary by adding an empty boundary</title>
 | 
|---|
| [6029a6] | 1511 | 
 | 
|---|
 | 1512 |           <para>In the same manner as above a minimum box is determined that
 | 
|---|
 | 1513 |           is subsequently expanded by a boundary of the given additional
 | 
|---|
 | 1514 |           thickness. This applies to either side.</para>
 | 
|---|
 | 1515 | 
 | 
|---|
 | 1516 |           <programlisting>... --add-empty-boundary "5,5,5"</programlisting>
 | 
|---|
 | 1517 | 
 | 
|---|
 | 1518 |           <para>This will enlarge the box in such a way that every atom is at
 | 
|---|
 | 1519 |           least by a distance of 5 away from the boundary of the domain (in
 | 
|---|
 | 1520 |           the infinity norm).</para>
 | 
|---|
 | 1521 |         </section>
 | 
|---|
 | 1522 | 
 | 
|---|
| [9bce96] | 1523 |         <section xml:id='domain.scale-box'>
 | 
|---|
 | 1524 |           <title xml:id='domain.scale-box.title'>Scaling the box</title>
 | 
|---|
| [6029a6] | 1525 | 
 | 
|---|
 | 1526 |           <para>You can enlarge the domain by simple scaling factors.</para>
 | 
|---|
 | 1527 | 
 | 
|---|
 | 1528 |           <programlisting>... --scale-box "1,1,2.5"</programlisting>
 | 
|---|
 | 1529 | 
 | 
|---|
 | 1530 |           <para>Here, the domain is stretched in the z direction by a factor
 | 
|---|
 | 1531 |           of 2.5.</para>
 | 
|---|
 | 1532 |         </section>
 | 
|---|
 | 1533 | 
 | 
|---|
| [9bce96] | 1534 |         <section xml:id='domain.repeat-box'>
 | 
|---|
 | 1535 |           <title xml:id='domain.repeat-box.title'>Repeating the box</title>
 | 
|---|
| [6029a6] | 1536 | 
 | 
|---|
 | 1537 |           <para>Under periodic boundary conditions often only the minimal
 | 
|---|
 | 1538 |           periodic cell is stored. If need be, multiple images can be easily
 | 
|---|
 | 1539 |           added to the current state of the system by repeating the box, i.e.
 | 
|---|
 | 1540 |           the box along with all contained atoms is copied and placed
 | 
|---|
 | 1541 |           adjacently.</para>
 | 
|---|
 | 1542 | 
 | 
|---|
 | 1543 |           <programlisting>... --repeat-box "1,2,2"</programlisting>
 | 
|---|
 | 1544 | 
 | 
|---|
 | 1545 |           <para>This will create a 2x2 grid of the current domain, replicating
 | 
|---|
 | 1546 |           it along the y and z direction along with all atoms. If the domain
 | 
|---|
 | 1547 |           contained before a single water molecule, we will now have four of
 | 
|---|
 | 1548 |           them.</para>
 | 
|---|
 | 1549 |         </section>
 | 
|---|
| [f73e06] | 1550 |         
 | 
|---|
| [9bce96] | 1551 |         <section xml:id='domain.set-boundary-conditions'>
 | 
|---|
 | 1552 |           <title xml:id='domain.set-boundary-conditions.title'>Change the 
 | 
|---|
 | 1553 |           boundary conditions</title>
 | 
|---|
| [f73e06] | 1554 | 
 | 
|---|
 | 1555 |           <para>Various boundary conditions can be applied that affect how
 | 
|---|
 | 1556 |           certain Actions work, e.g. translate-atoms. We briefly give a list
 | 
|---|
 | 1557 |           of all possible conditions:</para>
 | 
|---|
 | 1558 |           <itemizedlist>
 | 
|---|
 | 1559 |             <listitem>
 | 
|---|
 | 1560 |               <para>Wrap</para>
 | 
|---|
 | 1561 |               <para>Coordinates are wrapped to the other side of the domain, 
 | 
|---|
 | 1562 |               i.e. periodic boundary conditions.</para>
 | 
|---|
 | 1563 |             </listitem>
 | 
|---|
 | 1564 |             <listitem>
 | 
|---|
 | 1565 |               <para>Bounce</para>
 | 
|---|
 | 1566 |               <para>Coordinates are bounced back into the domain, i.e. they
 | 
|---|
 | 1567 |               are reflected from the domain walls.</para>
 | 
|---|
 | 1568 |             </listitem>
 | 
|---|
 | 1569 |             <listitem>
 | 
|---|
 | 1570 |               <para>Ignore</para>
 | 
|---|
 | 1571 |               <para>No boundary conditions apply.</para>
 | 
|---|
 | 1572 |             </listitem>
 | 
|---|
 | 1573 |           </itemizedlist>
 | 
|---|
 | 1574 |           
 | 
|---|
 | 1575 |           <para>The following will set the boundary conditions to periodic.
 | 
|---|
 | 1576 |           </para>
 | 
|---|
 | 1577 | 
 | 
|---|
 | 1578 |           <programlisting>... --set-boundary-conditions "Wrap Wrap Wrap"
 | 
|---|
 | 1579 |           </programlisting>
 | 
|---|
 | 1580 |         </section>
 | 
|---|
 | 1581 |       </section>
 | 
|---|
 | 1582 | 
 | 
|---|
| [9bce96] | 1583 |       <section xml:id='filling'>
 | 
|---|
 | 1584 |         <title xml:id='filling.title'>Filling</title>
 | 
|---|
| [f73e06] | 1585 |         
 | 
|---|
 | 1586 |           <para>Filling a specific part of the domain with one type of
 | 
|---|
 | 1587 |           molecule, e.g. a water molecule, is the more advanced type of
 | 
|---|
 | 1588 |           copying of a molecule (see copy-molecule) and we need several 
 | 
|---|
 | 1589 |           ingredients.</para>
 | 
|---|
 | 1590 | 
 | 
|---|
 | 1591 |           <para>First, we need to specify the part of the domain. This is done
 | 
|---|
 | 1592 |           via a shape. We have already learned how to create and select
 | 
|---|
 | 1593 |           shapes. The currently selected shape will serve as the fill-in
 | 
|---|
 | 1594 |           region.</para>
 | 
|---|
 | 1595 | 
 | 
|---|
 | 1596 |           <para>Then, they are three types of filling, domain, volume, and 
 | 
|---|
 | 1597 |           surface. The domain is filled with a regular grid of fill-in points.
 | 
|---|
 | 1598 |           A volume and a surface are filled by a set of equidistant points
 | 
|---|
 | 1599 |           distributed within the volume or on the surface of a selected
 | 
|---|
 | 1600 |           shape. Molecules will then be copied and translated points when they
 | 
|---|
 | 1601 |           "fit".</para>
 | 
|---|
 | 1602 | 
 | 
|---|
 | 1603 |           <para>The filler procedure checks each fill-in point whether there
 | 
|---|
 | 1604 |           is enough space for the molecule. To know this, we require a cluster
 | 
|---|
 | 1605 |           instead of a molecule. This is just a general agglomeration of atoms
 | 
|---|
 | 1606 |           combined with a bounding box that contains all of them and serves as
 | 
|---|
 | 1607 |           its minimal volume. I.e. we need this cluster. For this a number of
 | 
|---|
 | 1608 |           atoms have to be specified, the minimum bounding box is generated
 | 
|---|
 | 1609 |           automatically.</para>
 | 
|---|
 | 1610 | 
 | 
|---|
 | 1611 |           <para>On top of that molecules can be selected whose volume is
 | 
|---|
 | 1612 |           additionally excluded from the filling region.</para>
 | 
|---|
 | 1613 | 
 | 
|---|
| [9bce96] | 1614 |         <section xml:id='filling.fill-regular-grid'>
 | 
|---|
 | 1615 |           <title xml:id='filling.fill-regular-grid.title'>Fill the domain with 
 | 
|---|
 | 1616 |           molecules</title>
 | 
|---|
| [f73e06] | 1617 | 
 | 
|---|
 | 1618 |           <para>The call to fill the volume of the selected shape with the
 | 
|---|
 | 1619 |           selected atoms is then as follows,</para>
 | 
|---|
 | 1620 | 
 | 
|---|
 | 1621 |           <programlisting>
 | 
|---|
 | 1622 |                 ... --fill-regular-grid \
 | 
|---|
 | 1623 |                     --mesh-size "5,5,5" \
 | 
|---|
 | 1624 |                     --mesh-offset ".5,.5,.5" \
 | 
|---|
 | 1625 |                     --DoRotate 1 \
 | 
|---|
 | 1626 |                     --min-distance 1. \
 | 
|---|
 | 1627 |                     --random-atom-displacement 0.05 \
 | 
|---|
 | 1628 |                     --random-molecule-displacement 0.4 \
 | 
|---|
 | 1629 |                     --tesselation-radius 2.5
 | 
|---|
 | 1630 |           </programlisting>
 | 
|---|
 | 1631 | 
 | 
|---|
 | 1632 |           <para>This generates a grid of 5x5x5 fill-in points within the
 | 
|---|
 | 1633 |           sphere that are offset such as to lay centered within the sphere
 | 
|---|
 | 1634 |           (offset per axis in [0,1]). Additionally, each molecule is rotated
 | 
|---|
 | 1635 |           by random rotation matrix, each atom is translated randomly by at
 | 
|---|
 | 1636 |           most 0.05, each molecule's center at most by 0.4. The selected
 | 
|---|
 | 1637 |           molecules' volume is obtained by tesselating their surface and
 | 
|---|
 | 1638 |           excluding every fill-in point whose distance to this surface does
 | 
|---|
| [9bce96] | 1639 |           not exceed 1. We refer to our comments in 
 | 
|---|
 | 1640 |           <link linkend="randomization">Randomization</link>for details on 
 | 
|---|
 | 1641 |           changing the randomness.</para>
 | 
|---|
| [f73e06] | 1642 |         </section>
 | 
|---|
 | 1643 | 
 | 
|---|
| [9bce96] | 1644 |         <section xml:id='filling.fill-volume'>
 | 
|---|
 | 1645 |           <title xml:id='filling.fill-volume.title'>Fill a shape's volume 
 | 
|---|
 | 1646 |           with molecules</title>
 | 
|---|
| [f73e06] | 1647 |           
 | 
|---|
 | 1648 |           <para>More specifically than filling the whole domain with molecules,
 | 
|---|
 | 1649 |           maybe except areas where other molecules already are, we also can
 | 
|---|
 | 1650 |           fill only specific parts by selecting a shape and calling upon
 | 
|---|
 | 1651 |           the following action:</para>
 | 
|---|
 | 1652 | 
 | 
|---|
 | 1653 |           <programlisting>
 | 
|---|
 | 1654 |                 ... --fill-volume \
 | 
|---|
 | 1655 |                     --counts 12 \
 | 
|---|
 | 1656 |                     --min-distance 1. \
 | 
|---|
 | 1657 |                     --DoRotate 1 \
 | 
|---|
 | 1658 |                     --random-atom-displacement 0.05 \
 | 
|---|
 | 1659 |                     --random-molecule-displacement 0.4 \
 | 
|---|
 | 1660 |                     --tesselation-radius 2.5
 | 
|---|
 | 1661 |           </programlisting>
 | 
|---|
 | 1662 |         </section>
 | 
|---|
 | 1663 |           
 | 
|---|
| [9bce96] | 1664 |         <section xml:id='filling.fill-surface'>
 | 
|---|
 | 1665 |           <title xml:id='filling.fill-surface.title'>Fill a shape's surface 
 | 
|---|
 | 1666 |           with molecules</title>
 | 
|---|
| [f73e06] | 1667 | 
 | 
|---|
 | 1668 |                   <para>Filling a surface is very similar to filling its volume.
 | 
|---|
 | 1669 |                   Again the number of equidistant points has to be specified.
 | 
|---|
 | 1670 |                   However, randomness is constrained as the molecule is be aligned
 | 
|---|
 | 1671 |                   with the surface in a specific manner. The alignment axis refers
 | 
|---|
 | 1672 |                   to the largest principal axis of the filler molecule and will
 | 
|---|
 | 1673 |                   be aligned parallel to the surface normal at the fill-in point.
 | 
|---|
 | 1674 |                   </para>
 | 
|---|
 | 1675 | 
 | 
|---|
 | 1676 |                   <para>The call below fill in 12 points with a minimum distance
 | 
|---|
 | 1677 |                   between the instances of 1 angstroem. We allow for certain random
 | 
|---|
 | 1678 |                   displacements and use the z-axis for aligning the molecules on
 | 
|---|
 | 1679 |                   the surface.</para>
 | 
|---|
 | 1680 | 
 | 
|---|
 | 1681 |           <programlisting>
 | 
|---|
 | 1682 |                 ... --fill-surface \
 | 
|---|
 | 1683 |                     --counts 12 \
 | 
|---|
 | 1684 |                     --min-distance 1. \
 | 
|---|
 | 1685 |                     --DoRotate 1 \
 | 
|---|
 | 1686 |                     --random-atom-displacement 0.05 \
 | 
|---|
 | 1687 |                     --random-molecule-displacement 0.4 \
 | 
|---|
 | 1688 |                     --Alignment-Axis "0,0,1"
 | 
|---|
 | 1689 |           </programlisting>
 | 
|---|
 | 1690 |         </section>
 | 
|---|
 | 1691 | 
 | 
|---|
| [9bce96] | 1692 |         <section xml:id='filling.suspend-in-molecule'>
 | 
|---|
 | 1693 |           <title xml:id='filling.suspend-in-molecule.title'>Suspend in molecule
 | 
|---|
 | 1694 |           </title>
 | 
|---|
| [f73e06] | 1695 | 
 | 
|---|
 | 1696 |           <para>Add a given molecule in the simulation domain in such a way
 | 
|---|
 | 1697 |           that the total density is as desired.</para>
 | 
|---|
 | 1698 | 
 | 
|---|
 | 1699 |           <programlisting>
 | 
|---|
 | 1700 |                 ... --suspend-in-molecule 1.
 | 
|---|
 | 1701 |               </programlisting>
 | 
|---|
 | 1702 |         </section>
 | 
|---|
 | 1703 | 
 | 
|---|
| [9bce96] | 1704 |         <section xml:id='filling.fill-molecule'>
 | 
|---|
 | 1705 |           <title xml:id='filling.fill-molecule.title'>Fill in molecule</title>
 | 
|---|
| [f73e06] | 1706 | 
 | 
|---|
 | 1707 |           <para>This action will be soon be removed.</para>
 | 
|---|
 | 1708 | 
 | 
|---|
 | 1709 |           <programlisting>
 | 
|---|
 | 1710 |                 ... --fill-molecule
 | 
|---|
 | 1711 |               </programlisting>
 | 
|---|
 | 1712 |         </section>
 | 
|---|
 | 1713 | 
 | 
|---|
| [9bce96] | 1714 |         <section xml:id='filling.fill-void'>
 | 
|---|
 | 1715 |           <title xml:id='filling.fill-void.title'>Fill void with molecule
 | 
|---|
 | 1716 |           </title>
 | 
|---|
| [f73e06] | 1717 | 
 | 
|---|
 | 1718 |           <para>This action will be soon be removed.</para>
 | 
|---|
 | 1719 | 
 | 
|---|
 | 1720 |           <programlisting>
 | 
|---|
 | 1721 |                 ... --fill-void
 | 
|---|
 | 1722 |               </programlisting>
 | 
|---|
 | 1723 |         </section>
 | 
|---|
 | 1724 |       </section>
 | 
|---|
 | 1725 | 
 | 
|---|
| [9bce96] | 1726 |       <section xml:id='analysis'>
 | 
|---|
 | 1727 |         <title xml:id='analysis.title'>Analysis</title>
 | 
|---|
| [f73e06] | 1728 | 
 | 
|---|
 | 1729 |                 <para></para>
 | 
|---|
 | 1730 | 
 | 
|---|
| [9bce96] | 1731 |         <section xml:id='analysis.pair-correlation'>
 | 
|---|
 | 1732 |           <title xml:id='analysis.pair-correlation.title'>Pair Correlation
 | 
|---|
 | 1733 |           </title>
 | 
|---|
| [f73e06] | 1734 |           
 | 
|---|
 | 1735 |           <para>Pair correlation checks for two given elements on the typical 
 | 
|---|
 | 1736 |           distance they can be found with respect to one another. E.g. for 
 | 
|---|
 | 1737 |           water one might be interested what is the typical distance for
 | 
|---|
 | 1738 |           hydrogen and oxygen atoms.</para>
 | 
|---|
 | 1739 | 
 | 
|---|
 | 1740 |           <programlisting>
 | 
|---|
 | 1741 |           ... --pair-correlation \
 | 
|---|
 | 1742 |               --elements 1 8 \
 | 
|---|
 | 1743 |               --bin-start 0 \
 | 
|---|
 | 1744 |               --bin-width 0.7 \
 | 
|---|
 | 1745 |               --bin-end 10 \
 | 
|---|
 | 1746 |               --output-file histogram.dat \
 | 
|---|
 | 1747 |               --bin-output-file bins.dat \
 | 
|---|
 | 1748 |               --periodic 0
 | 
|---|
 | 1749 |           </programlisting>
 | 
|---|
 | 1750 |           
 | 
|---|
 | 1751 |           <para>This will compile a histogram for the interval [0,10] in steps
 | 
|---|
 | 1752 |           of 0.7 and increment a specific bin if the distance of one such pair
 | 
|---|
 | 1753 |           of a hydrogen and an oxygen atom can be found within its distance
 | 
|---|
 | 1754 |           interval.</para>
 | 
|---|
 | 1755 |         </section>
 | 
|---|
 | 1756 | 
 | 
|---|
| [9bce96] | 1757 |         <section xml:id='analysis.dipole-correlation'>
 | 
|---|
 | 1758 |           <title xml:id='analysis.dipole-correlation.title'>Dipole Correlation
 | 
|---|
 | 1759 |           </title>
 | 
|---|
| [f73e06] | 1760 |           
 | 
|---|
 | 1761 |           <para>The dipole correlation is similar to the pair correlation, only
 | 
|---|
 | 1762 |           that it correlates the orientation of dipoles in the molecular
 | 
|---|
 | 1763 |           system with one another.</para>
 | 
|---|
 | 1764 |           <para>Note that the dipole correlation works on the currently 
 | 
|---|
 | 1765 |           selected molecules, e.g. all water molecules if so selected.</para>
 | 
|---|
 | 1766 | 
 | 
|---|
 | 1767 |           <programlisting>
 | 
|---|
 | 1768 |           ... --dipole-correlation \
 | 
|---|
 | 1769 |               --bin-start 0 \
 | 
|---|
 | 1770 |               --bin-width 0.7 \
 | 
|---|
 | 1771 |               --bin-end 10 \
 | 
|---|
 | 1772 |               --output-file histogram.dat \
 | 
|---|
 | 1773 |               --bin-output-file bins.dat \
 | 
|---|
 | 1774 |               --periodic 0
 | 
|---|
 | 1775 |           </programlisting>
 | 
|---|
 | 1776 |         </section>
 | 
|---|
 | 1777 | 
 | 
|---|
| [9bce96] | 1778 |         <section xml:id='analysis.dipole-angular-correlation'>
 | 
|---|
 | 1779 |           <title xml:id='analysis.dipole-angular-correlation.title'>Dipole 
 | 
|---|
 | 1780 |           Angular Correlation</title>
 | 
|---|
| [f73e06] | 1781 |           
 | 
|---|
 | 1782 |           <para>The dipole angular correlation looks at the angles of a
 | 
|---|
 | 1783 |           dipole over time. It takes the orientation of a certain time step
 | 
|---|
 | 1784 |           as the zero angle and bins all other orientations found in later
 | 
|---|
 | 1785 |           time steps relative to it.
 | 
|---|
 | 1786 |           </para>
 | 
|---|
 | 1787 |           <para>Note that in contrast to the dipole correlation the dipole
 | 
|---|
 | 1788 |           angular correlation works on the molecules determined by a formula.
 | 
|---|
 | 1789 |           This is because selections do not work over time steps as molecules
 | 
|---|
 | 1790 |           might change.
 | 
|---|
 | 1791 |           </para>
 | 
|---|
 | 1792 | 
 | 
|---|
 | 1793 |           <programlisting>
 | 
|---|
 | 1794 |           ... --dipole-angular-correlation H2O \
 | 
|---|
 | 1795 |               --bin-start 0 \
 | 
|---|
 | 1796 |               --bin-width 5 \
 | 
|---|
 | 1797 |               --bin-end 360 \
 | 
|---|
 | 1798 |               --output-file histogram.dat \
 | 
|---|
 | 1799 |               --bin-output-file bins.dat \
 | 
|---|
 | 1800 |               --periodic 0 \
 | 
|---|
 | 1801 |               --time-step-zero 0
 | 
|---|
 | 1802 |           </programlisting>
 | 
|---|
 | 1803 |         </section>
 | 
|---|
 | 1804 | 
 | 
|---|
| [9bce96] | 1805 |         <section xml:id='analysis.point-correlation'>
 | 
|---|
 | 1806 |           <title xml:id='analysis.point-correlation.title'>Point Correlation
 | 
|---|
 | 1807 |           </title>
 | 
|---|
| [f73e06] | 1808 |           
 | 
|---|
 | 1809 |           <para>Point correlation is very similar to pair correlation, only
 | 
|---|
 | 1810 |           that it correlates not positions of atoms among one another but
 | 
|---|
 | 1811 |           against a fixed, given point.</para>
 | 
|---|
 | 1812 | 
 | 
|---|
 | 1813 |           <programlisting>
 | 
|---|
 | 1814 |           ... --point-correlation \
 | 
|---|
 | 1815 |               --elements 1 8 \
 | 
|---|
 | 1816 |               --position "0,0,0" \
 | 
|---|
 | 1817 |               --bin-start 0 \
 | 
|---|
 | 1818 |               --bin-width 0.7 \
 | 
|---|
 | 1819 |               --bin-end 10 \
 | 
|---|
 | 1820 |               --output-file histogram.dat \
 | 
|---|
 | 1821 |               --bin-output-file bins.dat \
 | 
|---|
 | 1822 |               --periodic 0
 | 
|---|
 | 1823 |           </programlisting>
 | 
|---|
 | 1824 |           
 | 
|---|
 | 1825 |           <para>This would calculate the correlation of all hydrogen and
 | 
|---|
 | 1826 |           oxygen atoms with respect to the origin.</para>
 | 
|---|
 | 1827 |         </section>
 | 
|---|
 | 1828 | 
 | 
|---|
| [9bce96] | 1829 |         <section xml:id='analysis.surface-correlation'>
 | 
|---|
 | 1830 |           <title xml:id='analysis.surface-correlation.title'>Surface 
 | 
|---|
 | 1831 |           Correlation</title>
 | 
|---|
| [f73e06] | 1832 |           
 | 
|---|
 | 1833 |           <para>The surface correlation calculates the distance of a set
 | 
|---|
 | 1834 |           of atoms with respect to a tesselated surface.</para>
 | 
|---|
 | 1835 | 
 | 
|---|
 | 1836 |           <programlisting>
 | 
|---|
 | 1837 |           ... --surface-correlation \
 | 
|---|
 | 1838 |               --elements 1 8 \
 | 
|---|
 | 1839 |               --bin-start 0 \
 | 
|---|
 | 1840 |               --bin-width 0.7 \
 | 
|---|
 | 1841 |               --bin-end 10 \
 | 
|---|
 | 1842 |               --output-file histogram.dat \
 | 
|---|
 | 1843 |               --bin-output-file bins.dat \
 | 
|---|
 | 1844 |               --periodic 0
 | 
|---|
 | 1845 |           </programlisting>
 | 
|---|
 | 1846 |         </section>
 | 
|---|
 | 1847 | 
 | 
|---|
| [f4b626a] | 1848 |         <section xml:id='analysis.molecular-volume'>
 | 
|---|
 | 1849 |           <title xml:id='analysis.molecular-volume.title'>Molecular Volume
 | 
|---|
| [9bce96] | 1850 |           </title>
 | 
|---|
| [f73e06] | 1851 |           
 | 
|---|
 | 1852 |           <para>This simply calculates the volume that a selected molecule
 | 
|---|
 | 1853 |           occupies. For this the molecular surface is determined via a
 | 
|---|
 | 1854 |           tesselation. Note that this surface is minimal is that aspect
 | 
|---|
 | 1855 |           that each node of the tesselation consists of an atom of the
 | 
|---|
 | 1856 |           molecule.</para>
 | 
|---|
 | 1857 | 
 | 
|---|
 | 1858 |           <programlisting>... --molecular-volume</programlisting>
 | 
|---|
 | 1859 |         </section>
 | 
|---|
 | 1860 | 
 | 
|---|
| [f4b626a] | 1861 |         <section xml:id='analysis.average-molecule-force'>
 | 
|---|
 | 1862 |           <title xml:id='analysis.average-molecule-forcetitle'>Average force
 | 
|---|
 | 1863 |           acting on a molecule</title>
 | 
|---|
 | 1864 |           
 | 
|---|
 | 1865 |           <para>This sums up all the forces of each atom of a currently 
 | 
|---|
 | 1866 |           selected molecule and returns the average force vector. This should
 | 
|---|
 | 1867 |           give you the general direction of acceleration of the molecule.
 | 
|---|
 | 1868 |           </para>
 | 
|---|
 | 1869 | 
 | 
|---|
 | 1870 |           <programlisting>... --molecular-volume</programlisting>
 | 
|---|
 | 1871 |         </section>
 | 
|---|
 | 1872 | 
 | 
|---|
| [6029a6] | 1873 |       </section>
 | 
|---|
 | 1874 | 
 | 
|---|
| [9bce96] | 1875 |       <section xml:id='fragmentation'>
 | 
|---|
 | 1876 |         <title xml:id='fragmentation.title'>Fragmentation</title>
 | 
|---|
| [6029a6] | 1877 | 
 | 
|---|
 | 1878 |         <para>Fragmentation refers to a so-called linear-scaling method called
 | 
|---|
 | 1879 |         "Bond-Order diSSection in an ANOVA-like fashion" (BOSSANOVA),
 | 
|---|
 | 1880 |         developed by <personname>Frederik Heber</personname>. In this section
 | 
|---|
 | 1881 |         we briefly explain what the method does and how the associated actions
 | 
|---|
 | 1882 |         work.</para>
 | 
|---|
 | 1883 | 
 | 
|---|
 | 1884 |         <para>The central idea behind the BOSSANOVA scheme is to fragment the
 | 
|---|
 | 1885 |         graph of the molecular system into connected subgraphs of a certain
 | 
|---|
 | 1886 |         number of vertices (atoms). To give an example, loading a ethane atom
 | 
|---|
 | 1887 |         with the chemical formula C2H6, fragmenting the molecule up to order 1
 | 
|---|
 | 1888 |         means creating two fragments, both methane-like from either carbon
 | 
|---|
 | 1889 |         atom including surrounding hydrogen atoms. Fragmenting up to order 2
 | 
|---|
 | 1890 |         would return both the methane fragments and additionally the full
 | 
|---|
 | 1891 |         ethane molecule as it resembles a fragment of order 2, namely
 | 
|---|
 | 1892 |         containing two (non-hydrogen) atoms.</para>
 | 
|---|
 | 1893 | 
 | 
|---|
 | 1894 |         <para>The reason for doing this is that usual ab-initio calculations
 | 
|---|
 | 1895 |         of molecular systems via methods such as Density Functional Theory or
 | 
|---|
 | 1896 |         Hartree-Fock scale at least as <inlineequation>
 | 
|---|
 | 1897 |             <m:math display="inline">
 | 
|---|
 | 1898 |               <m:mi>{\cal O}(M^3}</m:mi>
 | 
|---|
 | 1899 |             </m:math>
 | 
|---|
 | 1900 |           </inlineequation>with the number of atoms <inlineequation>
 | 
|---|
 | 1901 |             <m:math display="inline">
 | 
|---|
 | 1902 |               <m:mi>M</m:mi>
 | 
|---|
 | 1903 |             </m:math>
 | 
|---|
 | 1904 |           </inlineequation>. Hence, calculating the ground state energy of a
 | 
|---|
 | 1905 |         number of fragment molecules scaling linearly with the number of atoms
 | 
|---|
 | 1906 |         yields a linear-scaling methods. In the doctoral thesis of Frederik
 | 
|---|
 | 1907 |         Heber, it is explained why this is a sensible ansatz mathematically
 | 
|---|
 | 1908 |         and shown that it delivers a very good accuracy if electrons (and
 | 
|---|
 | 1909 |         hence interactions) are in general localized.</para>
 | 
|---|
 | 1910 | 
 | 
|---|
 | 1911 |         <para>Long-range interactions are artificially truncated, however,
 | 
|---|
 | 1912 |         with this fragment ansatz. It can be obtained in a perturbation manner
 | 
|---|
 | 1913 |         by sampling the resulting electronic and nuclei charge density on a
 | 
|---|
 | 1914 |         grid, summing over all fragments, and solving the associated Poisson
 | 
|---|
 | 1915 |         equation. Such a calculation is implemented via the solver
 | 
|---|
 | 1916 |         <productname>vmg</productname> by Julian Iseringhausen that is
 | 
|---|
| [f73e06] | 1917 |         contained in the <link xlink:href="http://www.scafacos.org/">
 | 
|---|
 | 1918 |         <productname>ScaFaCoS</productname></link>.</para>
 | 
|---|
| [6029a6] | 1919 | 
 | 
|---|
 | 1920 |         <para>Note that we treat hydrogen special (but can be switched off) as
 | 
|---|
 | 1921 |         fragments are calculated as closed shell (total spin equals zero).
 | 
|---|
 | 1922 |         Also, we use hydrogen to saturate any dangling bonds that occur as
 | 
|---|
 | 1923 |         bonds are cut when fragmenting a molecule (this, too, can be switched
 | 
|---|
 | 1924 |         off).</para>
 | 
|---|
 | 1925 | 
 | 
|---|
| [9bce96] | 1926 |         <section xml:id='fragmentation.fragment-molecule'>
 | 
|---|
 | 1927 |           <title xml:id='fragmentation.fragment-molecule.title'>Fragmenting a 
 | 
|---|
 | 1928 |           molecular system</title>
 | 
|---|
| [6029a6] | 1929 | 
 | 
|---|
 | 1930 |           <para>For the current selection of atoms, all fragments consisting
 | 
|---|
 | 1931 |           of these (sub)set of atoms are created in the following
 | 
|---|
 | 1932 |           manner.</para>
 | 
|---|
 | 1933 | 
 | 
|---|
 | 1934 |           <programlisting>
 | 
|---|
 | 1935 |                 ... --fragment-molecule "BondFragment" \
 | 
|---|
 | 1936 |                     --DoCyclesFull 1 \
 | 
|---|
 | 1937 |                     --distance 3. \
 | 
|---|
 | 1938 |                     --order 3 \
 | 
|---|
 | 1939 |                     --grid-level 5 \
 | 
|---|
 | 1940 |                     --output-types xyz mpqc
 | 
|---|
 | 1941 |           </programlisting>
 | 
|---|
 | 1942 | 
 | 
|---|
 | 1943 |           <para>We go through each of the options one after the other. During
 | 
|---|
 | 1944 |           fragmentation some files are created storing state information, i.e.
 | 
|---|
 | 1945 |           the vertex/atom indices per fragment and so on. These files all need
 | 
|---|
 | 1946 |           a common prefix, here "BondFragment". Then, we specify that cycles
 | 
|---|
 | 1947 |           should be treated fully. This compensates for electrons in aromatic
 | 
|---|
 | 1948 |           rings being delocalized over the ring. If cycles in the graph,
 | 
|---|
 | 1949 |           originating from aromatic rings, are always calculated fully, i.e.
 | 
|---|
 | 1950 |           the whole ring becomes a fragment, we partially overcome these
 | 
|---|
 | 1951 |           issues. This does however not work indefinitely and accuracy of the
 | 
|---|
 | 1952 |           approximation is limited (<inlineequation>
 | 
|---|
 | 1953 |               <m:math display="inline">
 | 
|---|
 | 1954 |                 <m:mi>>10^{-4}</m:mi>
 | 
|---|
 | 1955 |               </m:math>
 | 
|---|
 | 1956 |             </inlineequation>) in systems with many interconnected aromatic
 | 
|---|
 | 1957 |           rings, such as graphene. Next, we give a distance cutoff of 3 used
 | 
|---|
 | 1958 |           in bond graph creation. Then, we specify the maximum order, i.e. the
 | 
|---|
 | 1959 |           maximum number of (non-hydrogen) atoms per fragment, here 3. The
 | 
|---|
 | 1960 |           higher this number the more expensive the calculation becomes
 | 
|---|
 | 1961 |           (because substantially more fragments are created) but also the more
 | 
|---|
 | 1962 |           accurate. The grid level refers to the part where long-range Coulomb
 | 
|---|
 | 1963 |           interactions are calculated. This is done via solving the associated
 | 
|---|
 | 1964 |           Poisson equation with a multigrid solver. As input the solver
 | 
|---|
 | 1965 |           requires the density which is sampled on a cartesian grid whose
 | 
|---|
 | 1966 |           resolution these parameter defines (<inlineequation>
 | 
|---|
 | 1967 |               <m:math display="inline">
 | 
|---|
 | 1968 |                 <m:mi>2^{\mathrm{level}}</m:mi>
 | 
|---|
 | 1969 |               </m:math>
 | 
|---|
 | 1970 |             </inlineequation>). And finally, we give the output file formats,
 | 
|---|
 | 1971 |           i.e. which file formats are used for writing each fragment
 | 
|---|
 | 1972 |           configuration (prefix is "BondFragment", remember?). Here, we use
 | 
|---|
 | 1973 |           XYZ (mainly for checking the configurations visually) and MPQC,
 | 
|---|
 | 1974 |           which is a very robust Hartree-Fock solver. We refer to the
 | 
|---|
| [9bce96] | 1975 |           discussion of the <link linkend="fileparsers">Parsers</link> above 
 | 
|---|
 | 1976 |           on how to change the parameters of the ab-initio calculation.</para>
 | 
|---|
| [6029a6] | 1977 | 
 | 
|---|
 | 1978 |           <para>After having written all fragment configuration files, you
 | 
|---|
 | 1979 |           need to calculate each fragment, grab the resulting energy (and
 | 
|---|
 | 1980 |           force vectors) and place them into a result file manually. This at
 | 
|---|
 | 1981 |           least is necessary if you have specified output-types above. If not,
 | 
|---|
 | 1982 |           the fragments are not written to file but stored internally. Read
 | 
|---|
 | 1983 |           on.</para>
 | 
|---|
 | 1984 |         </section>
 | 
|---|
 | 1985 | 
 | 
|---|
| [9bce96] | 1986 |         <section xml:id='fragmentation.fragment-automation'>
 | 
|---|
 | 1987 |           <title xml:id='fragmentation.fragment-automation.title'>Calculating 
 | 
|---|
 | 1988 |           fragment energies automatically</title>
 | 
|---|
| [6029a6] | 1989 | 
 | 
|---|
 | 1990 |           <para>Another way of doing this is enabled if you have
 | 
|---|
 | 1991 |           <productname>JobMarket</productname> package. JobMarket implements a
 | 
|---|
 | 1992 |           client/server ansatz, i.e. two (or more) independent programs are
 | 
|---|
 | 1993 |           running (even on another computer but connected via an IP network),
 | 
|---|
 | 1994 |           namely a server and at least one client. The server receives
 | 
|---|
 | 1995 |           fragment configurations from MoleCuilder and assigns these to a
 | 
|---|
 | 1996 |           client who is not busy. The client launches an executable that is
 | 
|---|
 | 1997 |           specified in the work package he is assigned and gathers after
 | 
|---|
 | 1998 |           calculation a number of values, samewise specified in the package.
 | 
|---|
 | 1999 |           The results are gathered together by the server and can be requested
 | 
|---|
 | 2000 |           from MoleCuilder once they are done. This essentially describe what
 | 
|---|
 | 2001 |           is happening during the execution of this action.</para>
 | 
|---|
 | 2002 | 
 | 
|---|
 | 2003 |           <para>Stored fragment jobs can also be parsed again, i.e. reversing
 | 
|---|
 | 2004 |           the effect of having output-types specified in <link
 | 
|---|
| [9bce96] | 2005 |           linkend="fragmentation.fragment-molecule">Fragmenting a molecule
 | 
|---|
 | 2006 |           </link>.</para>
 | 
|---|
| [6029a6] | 2007 | 
 | 
|---|
 | 2008 |           <programlisting>
 | 
|---|
 | 2009 |                 ... --parse-fragment-jobs \
 | 
|---|
 | 2010 |                     --fragment-jobs "BondFragment00.in" "BondFragment01.in" \
 | 
|---|
 | 2011 |                     --fragment-path "./" \
 | 
|---|
 | 2012 |                     --grid-level 5
 | 
|---|
 | 2013 |           </programlisting>
 | 
|---|
 | 2014 | 
 | 
|---|
 | 2015 |           <para>Here, we have specified two files, namely
 | 
|---|
 | 2016 |           <filename>BondFragment00.in</filename> and
 | 
|---|
 | 2017 |           <filename>BondFragment01.in</filename>, to be parsed from the path
 | 
|---|
 | 2018 |           "./", i.e. the current directory. Also, we have specified to sample
 | 
|---|
 | 2019 |           the electronic charge density obtained from the calculated ground
 | 
|---|
 | 2020 |           state energy solution with a resolution of 5 (see fragment molecule
 | 
|---|
 | 2021 |           and also below).</para>
 | 
|---|
 | 2022 | 
 | 
|---|
 | 2023 |           <para>This allows for automated and parallel calculation of all
 | 
|---|
 | 2024 |           fragment energies and forces directly within MoleCuilder. The
 | 
|---|
 | 2025 |           FragmentationAutomation action takes the fragment configurations
 | 
|---|
 | 2026 |           from an internal storage wherein they are placed if in
 | 
|---|
 | 2027 |           FragmentMolecule no output-types have been specified.</para>
 | 
|---|
 | 2028 | 
 | 
|---|
 | 2029 |           <programlisting>
 | 
|---|
 | 2030 |                 ... --fragment-automation \
 | 
|---|
 | 2031 |                     --fragment-executable mpqc \
 | 
|---|
 | 2032 |                     --fragment-resultfile BondFragment_results.dat \
 | 
|---|
 | 2033 |                     --DoLongrange 1 \
 | 
|---|
 | 2034 |                     --DoValenceOnly 1 \
 | 
|---|
 | 2035 |                     --grid-level 5 \
 | 
|---|
 | 2036 |                     --interpolation-degree 3 \
 | 
|---|
 | 2037 |                     --near-field-cells 4 \
 | 
|---|
 | 2038 |                     --server-address 127.0.0.1 \
 | 
|---|
 | 2039 |                     --server-port 1025
 | 
|---|
 | 2040 |           </programlisting>
 | 
|---|
 | 2041 | 
 | 
|---|
 | 2042 |           <para>Again, we go through each of the action's options step by
 | 
|---|
 | 2043 |           step.</para>
 | 
|---|
 | 2044 | 
 | 
|---|
 | 2045 |           <para>The executable is required if you do not have a patched
 | 
|---|
 | 2046 |           version of <productname>MPQC</productname> that may directly act as
 | 
|---|
 | 2047 |           a client to JobMarket's server. All calculated results are placed in
 | 
|---|
 | 2048 |           the result file. If none is given, they are instead again placed in
 | 
|---|
 | 2049 |           an internal storage for later access.</para>
 | 
|---|
 | 2050 | 
 | 
|---|
 | 2051 |           <note>
 | 
|---|
 | 2052 |             <para>Long-calculations are only possible with a client that knows
 | 
|---|
 | 2053 |             how to handle VMG jobs. If you encounter failures, then it is most
 | 
|---|
 | 2054 |             likely that you do not have a suitable client.</para>
 | 
|---|
 | 2055 |           </note>
 | 
|---|
 | 2056 | 
 | 
|---|
 | 2057 |           <para>In the next line, we have all options related to calculation
 | 
|---|
 | 2058 |           of long-range interactions. We only sample valence charges on the
 | 
|---|
 | 2059 |           grid, i.e. not core electrons and the nuclei charge is reduces
 | 
|---|
 | 2060 |           respectively. This avoids problems with sampling highly localized
 | 
|---|
 | 2061 |           charges on the grid and is in general recommended. Next, there
 | 
|---|
 | 2062 |           follow parameters for the multi grid solver, namely the resolution
 | 
|---|
 | 2063 |           of the grid, see under fragmenting the molecule, the interpolation
 | 
|---|
 | 2064 |           degree and the number of near field cells. A grid level of 6 is
 | 
|---|
 | 2065 |           recommended but costly in terms of memory, the other values are at
 | 
|---|
 | 2066 |           their recommend values.</para>
 | 
|---|
 | 2067 | 
 | 
|---|
 | 2068 |           <para>In the last line, parameters are given on how to access the
 | 
|---|
 | 2069 |           JobMarket server, namely it address and its port.</para>
 | 
|---|
 | 2070 |         </section>
 | 
|---|
 | 2071 | 
 | 
|---|
| [9bce96] | 2072 |         <section xml:id='fragmentation.analyse-fragment-results'>
 | 
|---|
 | 2073 |           <title xml:id='fragmentation.analyse-fragment-results.title'>
 | 
|---|
 | 2074 |           Analyse fragment results</title>
 | 
|---|
| [6029a6] | 2075 | 
 | 
|---|
 | 2076 |           <para>After the energies and force vectors of each fragment have
 | 
|---|
 | 2077 |           been calculated, they need to be summed up to an approximation for
 | 
|---|
 | 2078 |           the energy and force vectors of the whole molecular system. This is
 | 
|---|
 | 2079 |           done by calling this action.</para>
 | 
|---|
 | 2080 | 
 | 
|---|
 | 2081 |           <programlisting>
 | 
|---|
 | 2082 |                 ... --analyse-fragment-results \
 | 
|---|
 | 2083 |                     --fragment-prefix "BondFragment" \
 | 
|---|
 | 2084 |                     --fragment-resultfile BondFragment_results.dat \
 | 
|---|
 | 2085 |                     --store-grids 1
 | 
|---|
 | 2086 |           </programlisting>
 | 
|---|
 | 2087 | 
 | 
|---|
 | 2088 |           <para>The purpose of the prefix should already be known to you, same
 | 
|---|
 | 2089 |           with the result file that is the file parsed by MoleCuilder. The
 | 
|---|
 | 2090 |           last option states that the sampled charge densities and the
 | 
|---|
 | 2091 |           calculated potential from the long-range calculations should be
 | 
|---|
 | 2092 |           stored with the summed up energies and forces. Note that this makes
 | 
|---|
 | 2093 |           the resulting files substantially larger (Hundreds of megabyte or
 | 
|---|
 | 2094 |           even gigabytes). Fragment energies and forces are stored in
 | 
|---|
 | 2095 |           so-called internal homology containers. These are explained in the
 | 
|---|
 | 2096 |           next section.</para>
 | 
|---|
 | 2097 | 
 | 
|---|
 | 2098 |           <para>Note that this action sets the force vector if these have been
 | 
|---|
| [9bce96] | 2099 |           calculated for the fragment. Hence, a 
 | 
|---|
 | 2100 |           <link linkend="molecule.verlet-integration">verlet integration</link>
 | 
|---|
 | 2101 |           is possible afterwards.</para>
 | 
|---|
| [6029a6] | 2102 |         </section>
 | 
|---|
| [f73e06] | 2103 |         
 | 
|---|
| [9bce96] | 2104 |         <section xml:id='fragmentation.store-saturated-fragment'>
 | 
|---|
 | 2105 |           <title xml:id='fragmentation.store-saturated-fragment.title'>Store 
 | 
|---|
 | 2106 |           a saturated fragment</title>
 | 
|---|
| [f73e06] | 2107 | 
 | 
|---|
 | 2108 |           <para>After the energies and force vectors of each fragment have
 | 
|---|
 | 2109 |           been calculated, they need to be summed up to an approximation for
 | 
|---|
 | 2110 |           the energy and force vectors of the whole molecular system. This is
 | 
|---|
 | 2111 |           done by calling this action.</para>
 | 
|---|
 | 2112 | 
 | 
|---|
 | 2113 |           <para>This will store the currently selected atoms as a fragment
 | 
|---|
 | 2114 |           where all dangling bonds (by atoms that are connected in the bond
 | 
|---|
 | 2115 |           graph but have not been selected as well) are saturated with
 | 
|---|
 | 2116 |           additional hydrogen atoms. The output formats are set to just xyz.
 | 
|---|
 | 2117 |           </para>
 | 
|---|
 | 2118 | 
 | 
|---|
 | 2119 |           <programlisting>
 | 
|---|
 | 2120 |                 ... --store-saturated-fragment \
 | 
|---|
 | 2121 |                     --DoSaturate 1 \
 | 
|---|
 | 2122 |                     --output-types xyz
 | 
|---|
 | 2123 |               </programlisting>
 | 
|---|
 | 2124 |         </section>
 | 
|---|
| [6029a6] | 2125 |       </section>
 | 
|---|
 | 2126 | 
 | 
|---|
| [9bce96] | 2127 |       <section xml:id='homology'>
 | 
|---|
 | 2128 |         <title xml:id='homology.title'>Homologies</title>
 | 
|---|
| [6029a6] | 2129 | 
 | 
|---|
 | 2130 |         <para>After a fragmentation procedure has been performed fully, what
 | 
|---|
 | 2131 |         to do with the results? The forces can be used already but what about
 | 
|---|
 | 2132 |         the energies? The energy value is basically the function evaluation of
 | 
|---|
 | 2133 |         the Born-Oppenheimer surface. For molecular dynamics simulations
 | 
|---|
 | 2134 |         continuous ab-initio calculations to evaluate the Born-Oppenheimer
 | 
|---|
 | 2135 |         surface is not feasible. Instead usually empirical potential functions
 | 
|---|
 | 2136 |         are fitted as to resemble the Born-Oppenheimer surface to a sufficient
 | 
|---|
 | 2137 |         degree.</para>
 | 
|---|
 | 2138 | 
 | 
|---|
 | 2139 |         <para>One frequent method is the many-body expansion of said surface
 | 
|---|
 | 2140 |         which is basically nothing else than the fragment ansatz described
 | 
|---|
 | 2141 |         above. Potential functions resemble a specific term in this many-body
 | 
|---|
 | 2142 |         expansion. These are discussed in the next section.</para>
 | 
|---|
 | 2143 | 
 | 
|---|
 | 2144 |         <para>For each of these terms all homologous fragments (i.e. having
 | 
|---|
 | 2145 |         the same atoms with respect to the present elements and bonded in the
 | 
|---|
 | 2146 |         same way), differing only in the coordinate of each atom, are just a
 | 
|---|
 | 2147 |         sampling or a function evaluation of this term of the many-body
 | 
|---|
 | 2148 |         expansion with respect to varying nuclei coordinates. Hence, it is
 | 
|---|
 | 2149 |         appropriate to use these function evaluations in a non-linear
 | 
|---|
 | 2150 |         regression procedure. That is, we want to tune the parameter of the
 | 
|---|
 | 2151 |         empirical potential function in such a way as to most closely obtain
 | 
|---|
 | 2152 |         the same function evaluation as the ab-initio calculation did with the
 | 
|---|
 | 2153 |         same nuclear coordinates. Usually, this is done in a least-square
 | 
|---|
 | 2154 |         sense, minimising the euclidean norm.</para>
 | 
|---|
 | 2155 | 
 | 
|---|
 | 2156 |         <para>Homologies are then nothing else but containers for a specific
 | 
|---|
 | 2157 |         type of fragment of all the different, calculated configurations (i.e.
 | 
|---|
 | 2158 |         varying nuclear coordinates of the same fragment).</para>
 | 
|---|
 | 2159 | 
 | 
|---|
 | 2160 |         <para>Now, we explain the actions that parse and store
 | 
|---|
 | 2161 |         homologies.</para>
 | 
|---|
 | 2162 | 
 | 
|---|
 | 2163 |         <programlisting>... --parse-homologies homologies.dat</programlisting>
 | 
|---|
 | 2164 | 
 | 
|---|
 | 2165 |         <para>This parses the all homologies contained in the file
 | 
|---|
 | 2166 |         <filename>homologies.dat</filename> and appends them to the homology
 | 
|---|
 | 2167 |         container.</para>
 | 
|---|
 | 2168 | 
 | 
|---|
| [f73e06] | 2169 |         <programlisting>... --save-homologies homologies.dat</programlisting>
 | 
|---|
| [6029a6] | 2170 | 
 | 
|---|
 | 2171 |         <para>Complementary, this stores the current contents of the homology
 | 
|---|
 | 2172 |         container, overwriting the file
 | 
|---|
 | 2173 |         <filename>homologies.dat</filename>.</para>
 | 
|---|
 | 2174 |       </section>
 | 
|---|
 | 2175 | 
 | 
|---|
| [9bce96] | 2176 |       <section xml:id='potentials'>
 | 
|---|
 | 2177 |         <title xml:id='potentials.title'>Potentials</title>
 | 
|---|
| [6029a6] | 2178 | 
 | 
|---|
 | 2179 |         <para>In much the same manner, we would now ask what are homology
 | 
|---|
 | 2180 |         files or containers good for but with the just had explanation it
 | 
|---|
 | 2181 |         should be clear: We fit potential function to these function
 | 
|---|
 | 2182 |         evaluation of terms of the many-body expansion of the Born-Oppenheimer
 | 
|---|
 | 2183 |         surface of the full system.</para>
 | 
|---|
 | 2184 | 
 | 
|---|
| [9bce96] | 2185 |         <section xml:id='potentials.fit-potential'>
 | 
|---|
 | 2186 |           <title xml:id='potentials.fit-potential.title'>Fitting empirical 
 | 
|---|
 | 2187 |           potentials</title>
 | 
|---|
| [6029a6] | 2188 | 
 | 
|---|
 | 2189 |           <para>Let's take a look at an exemplary call to the fit potential
 | 
|---|
 | 2190 |           action.</para>
 | 
|---|
 | 2191 | 
 | 
|---|
 | 2192 |           <programlisting>
 | 
|---|
 | 2193 |                 ... --fit-potential \
 | 
|---|
 | 2194 |                     --fragment-charges 8 1 1 \
 | 
|---|
 | 2195 |                     --potential-charges 8 1 \
 | 
|---|
 | 2196 |                     --potential-type morse \
 | 
|---|
 | 2197 |                     --take-best-of 5
 | 
|---|
 | 2198 |           </programlisting>
 | 
|---|
 | 2199 | 
 | 
|---|
 | 2200 |           <para>Again, we look at each option in turn. The first is the
 | 
|---|
 | 2201 |           charges or elements specifying the set of homologous fragments that
 | 
|---|
 | 2202 |           we want to look at. Here, obviously we are interested in water
 | 
|---|
 | 2203 |           molecules, consisting of a single oxygen and two hydrogen atoms.
 | 
|---|
 | 2204 |           Next, we specify the nuclei coordinates of the potential. We give
 | 
|---|
 | 2205 |           the type of the potential as morse, which requires a single distance
 | 
|---|
 | 2206 |           or two nuclear coordinates, here between an oxygen and a hydrogen
 | 
|---|
 | 2207 |           atom. Finally, we state that the non-linear regression should be
 | 
|---|
 | 2208 |           done with five random starting positions and the set of parameters
 | 
|---|
 | 2209 |           with the smallest L2 norm wins.</para>
 | 
|---|
 | 2210 | 
 | 
|---|
 | 2211 |           <note>
 | 
|---|
 | 2212 |             <para>Due to translational and rotational degrees of freedom for
 | 
|---|
 | 2213 |             fragments smaller than 7 atoms, it is appropriate to look at the
 | 
|---|
 | 2214 |             pair-wise distances and not at the absolute coordinates. Hence,
 | 
|---|
 | 2215 |             the two atomic positions, here for oxygen and hydrogen, are
 | 
|---|
 | 2216 |             converted to a single distance. If we had given an harmonic
 | 
|---|
 | 2217 |             angular potential and three charges/element, 8 1 1, i.e. oxygen
 | 
|---|
 | 2218 |             and two hydrogens, we would have obtained three distances.</para>
 | 
|---|
 | 2219 | 
 | 
|---|
 | 2220 |             <para>MoleCuilder always adds a so-called constant potential to
 | 
|---|
 | 2221 |             the fit containing only a single parameter, the energy offset.
 | 
|---|
 | 2222 |             This offset compensates for the interaction energy associated with
 | 
|---|
 | 2223 |             a fragment of order 1, e.g. a single hydrogen atom.</para>
 | 
|---|
 | 2224 |           </note>
 | 
|---|
| [f1eabd] | 2225 |         </section>
 | 
|---|
 | 2226 | 
 | 
|---|
 | 2227 |         <section xml:id='potentials.fit-compound-potential'>
 | 
|---|
 | 2228 |           <title xml:id='potentials.fit-compound-potential.title'>Fitting
 | 
|---|
 | 2229 |           many empirical potentials simultaneously</title>
 | 
|---|
 | 2230 | 
 | 
|---|
| [6029a6] | 2231 | 
 | 
|---|
 | 2232 |           <para>Another way is using a file containing a specific set of
 | 
|---|
 | 2233 |           potential functions, possibly even with initial values.</para>
 | 
|---|
 | 2234 | 
 | 
|---|
 | 2235 |           <programlisting>
 | 
|---|
| [98d166] | 2236 |                 ... --fit-compound-potential \
 | 
|---|
| [6029a6] | 2237 |                     --fragment-charges 8 1 1 \
 | 
|---|
 | 2238 |                     --potential-file water.potentials \
 | 
|---|
 | 2239 |                     --set-threshold 1e-3 \
 | 
|---|
 | 2240 |                     --training-file test.dat
 | 
|---|
 | 2241 |           </programlisting>
 | 
|---|
 | 2242 | 
 | 
|---|
 | 2243 |           <para>Now, all empirical potential functions are summed up into a
 | 
|---|
 | 2244 |           so-called compound potential over the combined set of parameters.
 | 
|---|
 | 2245 |           These are now fitted simultaneously. For example, if the potential
 | 
|---|
 | 2246 |           file <filename>water.potentials</filename> contains a harmonic bond
 | 
|---|
 | 2247 |           potential between oxygen and hydrogen and another angular potential
 | 
|---|
 | 2248 |           for the angle between hydrogen, oxygen, and hydrogen atom we would
 | 
|---|
 | 2249 |           fit a still simple function approximating the energy of a single
 | 
|---|
 | 2250 |           water molecule. Here, the threshold takes the place of the
 | 
|---|
 | 2251 |           take-best-of option. Here, random starting parameters are used as
 | 
|---|
 | 2252 |           long as the final L2 error is not below 1e-3. Also, all data used
 | 
|---|
 | 2253 |           for training, i.e. the tuples consisting of the fragments nuclei
 | 
|---|
 | 2254 |           coordinates and the associated energy value are written to the file
 | 
|---|
 | 2255 |           <filename>test.dat</filename>. This allows for graphical or other
 | 
|---|
 | 2256 |           type of analysis.</para>
 | 
|---|
 | 2257 | 
 | 
|---|
| [98d166] | 2258 |           <para>Note that you can combine the two ways, i.e. start with a
 | 
|---|
 | 2259 |           fit-potential call but give an empty potential file. The resulting
 | 
|---|
 | 2260 |           parameters are stored in it. Fit other potentials and give different
 | 
|---|
 | 2261 |           file names for each in turn. Eventually, you have to combine the file
 | 
|---|
 | 2262 |           in a text editor at the moment. And perform a fit-compound-potential
 | 
|---|
 | 2263 |           with this file.</para>
 | 
|---|
| [6029a6] | 2264 |         </section>
 | 
|---|
 | 2265 | 
 | 
|---|
| [f1eabd] | 2266 |         
 | 
|---|
 | 2267 |         <section xml:id='potentials.parse-potential'>
 | 
|---|
 | 2268 |           <title xml:id='potentials.parse-potential.title'>Parsing an
 | 
|---|
 | 2269 |           empirical potentials file</title>
 | 
|---|
 | 2270 | 
 | 
|---|
 | 2271 |           <para>Responsible for the compound potential is every potential
 | 
|---|
 | 2272 |           function whose signature matches with the designated fragment-charges
 | 
|---|
 | 2273 |           and who is currently known to an internal instance called the
 | 
|---|
 | 2274 |           PotentialRegistry.</para>
 | 
|---|
 | 2275 | 
 | 
|---|
 | 2276 |           <para>More potentials can be registered (fit-potential will also
 | 
|---|
 | 2277 |           register the potential it fits) by parsing them from a file.</para>
 | 
|---|
 | 2278 | 
 | 
|---|
 | 2279 |           <programlisting>
 | 
|---|
 | 2280 |                 ... --parse-potentials water.potentials
 | 
|---|
 | 2281 |           </programlisting>
 | 
|---|
 | 2282 | 
 | 
|---|
 | 2283 |           <note>Currently, only <productname>TREMOLO</productname> potential
 | 
|---|
 | 2284 |           files are understood and can be parsed.</note>
 | 
|---|
 | 2285 |         </section>
 | 
|---|
 | 2286 | 
 | 
|---|
| [0ea063] | 2287 |         <section xml:id='potentials.save-potential'>
 | 
|---|
 | 2288 |           <title xml:id='potentials.save-potential.title'>Saving an
 | 
|---|
 | 2289 |           empirical potentials file</title>
 | 
|---|
 | 2290 | 
 | 
|---|
 | 2291 |           <para>The opposite to parse-potentials is save-potentials that writes
 | 
|---|
 | 2292 |           every potential currently known to the PotentialRegistry to the given
 | 
|---|
 | 2293 |           file along with the currently fitted parameters</para>
 | 
|---|
 | 2294 | 
 | 
|---|
 | 2295 |           <programlisting>
 | 
|---|
 | 2296 |                 ... --save-potentials water.potentials
 | 
|---|
 | 2297 |           </programlisting>
 | 
|---|
 | 2298 | 
 | 
|---|
 | 2299 |           <note>Again, only the <productname>TREMOLO</productname> potential
 | 
|---|
 | 2300 |           format is understood currently and is written.</note>
 | 
|---|
| [6029a6] | 2301 |         </section>
 | 
|---|
 | 2302 | 
 | 
|---|
| [9bce96] | 2303 |         <section xml:id='potentials.fit-particle-charges'>
 | 
|---|
 | 2304 |           <title xml:id='potentials.fit-particle-charges.title'>Fitting 
 | 
|---|
 | 2305 |           particle charges</title>
 | 
|---|
| [6029a6] | 2306 | 
 | 
|---|
 | 2307 |           <para>The above empirical potential just model the short-range
 | 
|---|
 | 2308 |           behavior in the molecular fragment, namely the bonded interaction.
 | 
|---|
 | 2309 |           In order to model the long-range interaction as well without solving
 | 
|---|
| [f73e06] | 2310 |           for the electronic ground state in each time step, particle charges
 | 
|---|
| [6029a6] | 2311 |           are used that capture to some degree the created dipoles due to
 | 
|---|
 | 2312 |           charge transfer from one atom to another when bonded.</para>
 | 
|---|
 | 2313 | 
 | 
|---|
 | 2314 |           <para>To allow least-squares regression of these partial charges we
 | 
|---|
 | 2315 |           need the results of long-range calculations and the store-grids
 | 
|---|
| [9bce96] | 2316 |           option (see above under <link linkend="fragmentation">Fragmentation
 | 
|---|
 | 2317 |           </link>) must have been given. With these sampled charge density and 
 | 
|---|
 | 2318 |           Coulomb potential stored in the homology containers, we call this 
 | 
|---|
 | 2319 |           action as follows.</para>
 | 
|---|
| [6029a6] | 2320 | 
 | 
|---|
 | 2321 |           <programlisting>
 | 
|---|
| [f73e06] | 2322 |                 ... --fit-particle-charges \
 | 
|---|
| [6029a6] | 2323 |                     --fragment-charges 8 1 1 \
 | 
|---|
 | 2324 |                     --potential-file water.potentials \
 | 
|---|
 | 2325 |                     --radius 0.2
 | 
|---|
 | 2326 |           </programlisting>
 | 
|---|
 | 2327 | 
 | 
|---|
 | 2328 |           <para>This will again use water molecule as homologous fragment
 | 
|---|
 | 2329 |           "key" to request configurations from the container. Results are
 | 
|---|
 | 2330 |           stored in <filename>water.potentials</filename>. The radius is used
 | 
|---|
 | 2331 |           to mark the region directly around the nuclei from the fit
 | 
|---|
 | 2332 |           procedure. As here the charges of the core electrons and the nuclei
 | 
|---|
 | 2333 |           itself dominate, we however are only interested in a good
 | 
|---|
 | 2334 |           approximation to the long-range potential, this mask radius allows
 | 
|---|
 | 2335 |           to give the range of the excluded zone.</para>
 | 
|---|
 | 2336 |         </section>
 | 
|---|
 | 2337 |       </section>
 | 
|---|
 | 2338 | 
 | 
|---|
| [9bce96] | 2339 |       <section xml:id='dynamics'>
 | 
|---|
 | 2340 |         <title xml:id='dynamics.title'>Dynamics</title>
 | 
|---|
| [f73e06] | 2341 | 
 | 
|---|
 | 2342 |         <para>For fitting potentials or charges we need many homologuous but
 | 
|---|
 | 2343 |         different fragments, i.e. atoms with slightly different positions.
 | 
|---|
 | 2344 |         How can we generate these?</para>
 | 
|---|
 | 2345 | 
 | 
|---|
 | 2346 |         <para>One possibility is to use molecular dynamics. With the 
 | 
|---|
 | 2347 |         aforementioned fragmentation scheme we can quickly calculate not only 
 | 
|---|
 | 2348 |         energies but also forces if the chosen solver, such as 
 | 
|---|
 | 2349 |         <link xlink:href="http://www.mpqc.org/"><productname>MPQC
 | 
|---|
| [9bce96] | 2350 |         </productname></link>, supports it. Integrating these forces 
 | 
|---|
 | 2351 |         discretely over time  gives insight into vibrational features of a 
 | 
|---|
 | 2352 |         molecular system and allows to generate those positions for fitting 
 | 
|---|
 | 2353 |         potentials that describe these vibrations.</para>
 | 
|---|
| [f73e06] | 2354 | 
 | 
|---|
| [9bce96] | 2355 |         <section xml:id='dynamics.molecular-dynamics'>
 | 
|---|
 | 2356 |           <title xml:id='dynamics.molecular-dynamics.title'>Molecular dynamics
 | 
|---|
 | 2357 |           </title>
 | 
|---|
| [f73e06] | 2358 | 
 | 
|---|
 | 2359 |           <para>The molecular dynamics action is a so-called macro Action, 
 | 
|---|
 | 2360 |           i.e. it combines several other Actions into one, namely:</para>
 | 
|---|
 | 2361 |                   <itemizedlist>
 | 
|---|
 | 2362 |             <listitem>
 | 
|---|
 | 2363 |               <para>--verlet-integration</para>
 | 
|---|
 | 2364 |             </listitem>
 | 
|---|
 | 2365 |             <listitem>
 | 
|---|
 | 2366 |               <para>--output</para>
 | 
|---|
 | 2367 |             </listitem>
 | 
|---|
 | 2368 |             <listitem>
 | 
|---|
 | 2369 |               <para>--clear-fragment-results</para>
 | 
|---|
 | 2370 |             </listitem>
 | 
|---|
 | 2371 |             <listitem>
 | 
|---|
 | 2372 |               <para>--destroy-adjacency</para>
 | 
|---|
 | 2373 |             </listitem>
 | 
|---|
 | 2374 |             <listitem>
 | 
|---|
 | 2375 |               <para>--create-adjacency</para>
 | 
|---|
 | 2376 |             </listitem>
 | 
|---|
 | 2377 |             <listitem>
 | 
|---|
 | 2378 |               <para>--update-molecules</para>
 | 
|---|
 | 2379 |             </listitem>
 | 
|---|
 | 2380 |             <listitem>
 | 
|---|
 | 2381 |               <para>--fragment-molecule</para>
 | 
|---|
 | 2382 |             </listitem>
 | 
|---|
 | 2383 |             <listitem>
 | 
|---|
 | 2384 |               <para>--fragment-automation</para>
 | 
|---|
 | 2385 |             </listitem>
 | 
|---|
 | 2386 |             <listitem>
 | 
|---|
 | 2387 |               <para>--analyse-fragment-results</para>
 | 
|---|
 | 2388 |             </listitem>
 | 
|---|
 | 2389 |                   </itemizedlist>
 | 
|---|
 | 2390 |                   
 | 
|---|
 | 2391 |                   <para>The following will perform a molecular dynamics simulation
 | 
|---|
 | 2392 |                   for 100 time steps, each time step combining 0.5 atomic time units,
 | 
|---|
 | 2393 |                   i.e. 1.2 1e-17 s. The other options listed below will seem familiar
 | 
|---|
 | 2394 |                   to you if you have read about the other Actions listed above. Below
 | 
|---|
 | 2395 |                   we will not keep the bondgraph, i.e bonds and molecules may change
 | 
|---|
 | 2396 |                   over the simulation and hence also the created fragments per time
 | 
|---|
 | 2397 |                   step.
 | 
|---|
 | 2398 |                   </para>
 | 
|---|
 | 2399 | 
 | 
|---|
 | 2400 |           <programlisting>
 | 
|---|
 | 2401 |           ... --molecular-dynamics \
 | 
|---|
 | 2402 |           --steps 100 \
 | 
|---|
 | 2403 |           --keep-bondgraph 0 \
 | 
|---|
 | 2404 |           --order 3 \
 | 
|---|
 | 2405 |           --distance 3. \
 | 
|---|
 | 2406 |           --deltat 0.5 \
 | 
|---|
 | 2407 |           --keep-fixed-CenterOfMass 1 \
 | 
|---|
 | 2408 |           --fragment-executable mpqc \
 | 
|---|
 | 2409 |           </programlisting>
 | 
|---|
 | 2410 |         </section>
 | 
|---|
 | 2411 | 
 | 
|---|
| [9bce96] | 2412 |         <section xml:id='dynamics.optimize-structure'>
 | 
|---|
 | 2413 |           <title xml:id='dynamics.optimize-structure.title'>Structure 
 | 
|---|
 | 2414 |           optimization</title>
 | 
|---|
| [f73e06] | 2415 | 
 | 
|---|
 | 2416 |                   <para>Structure optimization is also a macro Action, it basically
 | 
|---|
 | 2417 |                   combines the same Actions as molecular-dynamics does. However, it
 | 
|---|
 | 2418 |                   uses force-annealing instead of verlet-integration.</para>
 | 
|---|
 | 2419 | 
 | 
|---|
 | 2420 |                   <para>The following performs a structure optimization of the 
 | 
|---|
 | 2421 |                   currently selected atoms (may also be a subset) for up to 100 time
 | 
|---|
 | 2422 |                   steps, where each time step ist 0.5 atomic time units. The time
 | 
|---|
 | 2423 |                   step here is the initial step with for annealing.
 | 
|---|
 | 2424 |                   </para>
 | 
|---|
 | 2425 | 
 | 
|---|
 | 2426 |           <programlisting>
 | 
|---|
 | 2427 |           ... --optimize-structure \
 | 
|---|
 | 2428 |           --keep-bondgraph 1 \
 | 
|---|
 | 2429 |           --output-every-step 1 \
 | 
|---|
 | 2430 |           --steps 100 \
 | 
|---|
 | 2431 |           --order 3 \
 | 
|---|
 | 2432 |           --distance 3. \
 | 
|---|
 | 2433 |           --deltat 0.5 \
 | 
|---|
 | 2434 |           --keep-fixed-CenterOfMass 1 \
 | 
|---|
 | 2435 |           --fragment-executable mpqc \
 | 
|---|
 | 2436 |           </programlisting>
 | 
|---|
 | 2437 | 
 | 
|---|
 | 2438 |                   <para>Note that output-every-step will allow you to watch the 
 | 
|---|
 | 2439 |                   optimization as each step is placed into a distinct time step.
 | 
|---|
 | 2440 |                   Otherwise only two time steps would be created: the initial and
 | 
|---|
 | 2441 |                   the final one containing the optimized structure.</para>
 | 
|---|
 | 2442 |         </section>
 | 
|---|
 | 2443 | 
 | 
|---|
| [9bce96] | 2444 |         <section xml:id='dynamics.set-world-time'>
 | 
|---|
 | 2445 |           <title xml:id='dynamics.set-world-time.title'>Set the world's time 
 | 
|---|
 | 2446 |           step</title>
 | 
|---|
| [f73e06] | 2447 | 
 | 
|---|
 | 2448 |                   <para>In order to inspect or manipulate atoms and molecules at a
 | 
|---|
 | 2449 |                   certain time step, the World's time has to be set with the following
 | 
|---|
 | 2450 |                   Action.
 | 
|---|
 | 2451 |                   </para>
 | 
|---|
 | 2452 |                   
 | 
|---|
 | 2453 |                   <para>This will set the World's time to the fifth step (counting
 | 
|---|
 | 2454 |                   starts at zero).</para>
 | 
|---|
 | 2455 | 
 | 
|---|
 | 2456 |           <programlisting>... --set-world-time 4</programlisting>
 | 
|---|
 | 2457 |         </section>
 | 
|---|
 | 2458 | 
 | 
|---|
| [9bce96] | 2459 |         <section xml:id='dynamics.save-temperature'>
 | 
|---|
 | 2460 |           <title xml:id='dynamics.save-temperature.title'>Save the 
 | 
|---|
 | 2461 |           temperature information</title>
 | 
|---|
| [f73e06] | 2462 | 
 | 
|---|
 | 2463 |                   <para>For each time step the temperature (i.e. the average velocity
 | 
|---|
 | 2464 |                   per atom times its mass) will be stored to a file.</para>
 | 
|---|
 | 2465 | 
 | 
|---|
 | 2466 |           <programlisting>
 | 
|---|
 | 2467 |           ... --save-temperature temperature.dat \
 | 
|---|
 | 2468 |           </programlisting>
 | 
|---|
 | 2469 |         </section>
 | 
|---|
 | 2470 |       </section>
 | 
|---|
 | 2471 |     
 | 
|---|
| [9bce96] | 2472 |       <section xml:id='dynamics.tesselation'>
 | 
|---|
 | 2473 |         <title xml:id='dynamics.tesselation.title'>Tesselations</title>
 | 
|---|
| [f73e06] | 2474 | 
 | 
|---|
 | 2475 |         <para>Tesselations obtain molecular surfaces (and volumes) by rolling
 | 
|---|
 | 2476 |         a virtual sphere of a certain radii on a molecule until a closed 
 | 
|---|
 | 2477 |         surface of connected triangles is created.</para>
 | 
|---|
 | 2478 | 
 | 
|---|
| [9bce96] | 2479 |         <section xml:id='dynamics.tesselation.nonconvex-envelope'>
 | 
|---|
 | 2480 |           <title xml:id='dynamics.tesselation.nonconvex-envelope.title'>
 | 
|---|
 | 2481 |           Non-convex envelope</title>
 | 
|---|
| [f73e06] | 2482 |           
 | 
|---|
| [8544b32] | 2483 |           <para>This will create a non-convex envelope for a molecule and store
 | 
|---|
 | 2484 |           it to a file for viewing with external programs.</para>
 | 
|---|
| [f73e06] | 2485 | 
 | 
|---|
 | 2486 |           <programlisting>
 | 
|---|
 | 2487 |           ... --nonconvex-envelope 6. \
 | 
|---|
 | 2488 |           --nonconvex-file nonconvex.dat
 | 
|---|
 | 2489 |           </programlisting>
 | 
|---|
 | 2490 | 
 | 
|---|
 | 2491 |           <para>This tesselation file can be conveniently viewed with 
 | 
|---|
| [9bce96] | 2492 |           <productname>TecPlot</productname> or with one of the Tcl script 
 | 
|---|
| [cead3f] | 2493 |           in the util folder with <productname>VMD</productname>. Also,
 | 
|---|
 | 2494 |           still pictures can be produced with <productname>Raster3D
 | 
|---|
 | 2495 |           </productname>.
 | 
|---|
 | 2496 |           <note>The required file header.r3d can be found in a subfolder of
 | 
|---|
 | 2497 |           the util folder.</note>
 | 
|---|
 | 2498 |           </para>
 | 
|---|
| [f73e06] | 2499 |         </section>
 | 
|---|
 | 2500 | 
 | 
|---|
| [9bce96] | 2501 |         <section xml:id='dynamics.tesselation.convex-envelope'>
 | 
|---|
 | 2502 |           <title xml:id='dynamics.tesselation.convex-envelope.title'>Convex 
 | 
|---|
 | 2503 |           envelope</title>
 | 
|---|
| [f73e06] | 2504 |           
 | 
|---|
| [8544b32] | 2505 |           <para>This will create a convex envelope for a molecule and give the
 | 
|---|
 | 2506 |           volumes of both the non-convex and the convex envelope. This is good
 | 
|---|
 | 2507 |           for measuring the space a molecule takes up, e.g. when filling a 
 | 
|---|
 | 2508 |           domain and taking care of correct densities.</para>
 | 
|---|
| [f73e06] | 2509 | 
 | 
|---|
 | 2510 |           <programlisting>
 | 
|---|
 | 2511 |           ... --convex-envelope 6. \
 | 
|---|
 | 2512 |           --convex-file convex.dat
 | 
|---|
 | 2513 |           </programlisting>
 | 
|---|
 | 2514 | 
 | 
|---|
| [8544b32] | 2515 |           <para>This tesselation file can be likewise viewed with 
 | 
|---|
| [9bce96] | 2516 |           <productname>TecPlot</productname> or with one of the Tcl script 
 | 
|---|
 | 2517 |           in the util folder with <productname>VMD</productname>.</para>
 | 
|---|
| [f73e06] | 2518 |         </section>
 | 
|---|
 | 2519 |       </section>
 | 
|---|
 | 2520 | 
 | 
|---|
| [9bce96] | 2521 |       <section xml:id='various'>
 | 
|---|
 | 2522 |         <title xml:id='various.title'>Various commands</title>
 | 
|---|
| [6029a6] | 2523 | 
 | 
|---|
 | 2524 |         <para>Here, we gather all commands that do not fit into one of above
 | 
|---|
 | 2525 |         categories for completeness.</para>
 | 
|---|
 | 2526 | 
 | 
|---|
| [9bce96] | 2527 |         <section xml:id='various.verbose'>
 | 
|---|
 | 2528 |           <title xml:id='various.verbose.title'>Changing verbosity</title>
 | 
|---|
| [6029a6] | 2529 | 
 | 
|---|
 | 2530 |           <para>The verbosity level is the amount of stuff printed to screen.
 | 
|---|
 | 2531 |           This information will in general help you to understand when
 | 
|---|
 | 2532 |           something does not work. Mind the <emphasis>ERROR</emphasis> and
 | 
|---|
 | 2533 |           <emphasis>WARNING</emphasis> messages in any case.</para>
 | 
|---|
 | 2534 | 
 | 
|---|
 | 2535 |           <para>This sets the verbosity from default of 2 to 4,</para>
 | 
|---|
 | 2536 | 
 | 
|---|
 | 2537 |           <programlisting>... --verbose 4</programlisting>
 | 
|---|
 | 2538 | 
 | 
|---|
 | 2539 |           <para>or shorter,</para>
 | 
|---|
 | 2540 | 
 | 
|---|
 | 2541 |           <programlisting>... -v 4</programlisting>
 | 
|---|
 | 2542 |         </section>
 | 
|---|
| [f3db60] | 2543 |         
 | 
|---|
 | 2544 |         <section xml:id='various.dry-run'>
 | 
|---|
 | 2545 |           <title xml:id='various.dry-run.title'>Dry runs</title>
 | 
|---|
 | 2546 | 
 | 
|---|
 | 2547 |           <para>A "dry run" refers to a test run where commands are not 
 | 
|---|
 | 2548 |           actually executed. You may bracket a certain set of actions by
 | 
|---|
 | 2549 |           putting --dry-run before and --no-dry-run afterwards. Then, all
 | 
|---|
 | 2550 |           action in between will be looked at but not executed, i.e. they
 | 
|---|
 | 2551 |           make it to the history but nothing is changed in the World.</para>
 | 
|---|
 | 2552 | 
 | 
|---|
 | 2553 |           <para>As an example, the following listing contains the adding of a
 | 
|---|
 | 2554 |           hydrogen atom at position (5,5,5) inside the aforementioned dry run
 | 
|---|
 | 2555 |           statements. Hence, no hydrogen atom is added but the add action is
 | 
|---|
 | 2556 |           stored in the history and will make it to a stored session.</para>
 | 
|---|
 | 2557 | 
 | 
|---|
 | 2558 |           <programlisting>
 | 
|---|
 | 2559 |           ... --dry-run \
 | 
|---|
 | 2560 |           --add-atom 1 --domain-position "5,5,5"
 | 
|---|
 | 2561 |           --no-dry-run
 | 
|---|
 | 2562 |           </programlisting>
 | 
|---|
 | 2563 | 
 | 
|---|
 | 2564 |         </section>
 | 
|---|
| [6029a6] | 2565 | 
 | 
|---|
| [9bce96] | 2566 |         <section xml:id='various.element-db'>
 | 
|---|
 | 2567 |           <title xml:id='various.element-db.title'>Loading an element 
 | 
|---|
 | 2568 |           database</title>
 | 
|---|
| [f73e06] | 2569 | 
 | 
|---|
 | 2570 |           <para>Element databases contain information on valency, van der
 | 
|---|
 | 2571 |           Waals-radii and other information for each element.</para>
 | 
|---|
 | 2572 | 
 | 
|---|
 | 2573 |           <para>This loads all element database from the current folder (in a
 | 
|---|
 | 2574 |           unix environment):</para>
 | 
|---|
 | 2575 | 
 | 
|---|
 | 2576 |           <programlisting>... --element-db ./</programlisting>
 | 
|---|
 | 2577 | 
 | 
|---|
 | 2578 |         </section>
 | 
|---|
 | 2579 | 
 | 
|---|
| [9bce96] | 2580 |         <section xml:id='various.fastparsing'>
 | 
|---|
 | 2581 |           <title xml:id='various.fastparsing.title'>Fast parsing</title>
 | 
|---|
| [f73e06] | 2582 | 
 | 
|---|
 | 2583 |           <para>Parsing all time steps from a given input file can take a 
 | 
|---|
 | 2584 |           while, especially for larger systems. If fast parsing is activated,
 | 
|---|
 | 2585 |           only the first time step is loaded, all other are ignored.</para>
 | 
|---|
 | 2586 | 
 | 
|---|
 | 2587 |           <programlisting>... --fastparsing 1</programlisting>
 | 
|---|
 | 2588 |         </section>
 | 
|---|
 | 2589 | 
 | 
|---|
| [9bce96] | 2590 |         <section xml:id='various.version'>
 | 
|---|
 | 2591 |           <title xml:id='various.version.title'>Giving the version of the 
 | 
|---|
 | 2592 |           program</title>
 | 
|---|
| [6029a6] | 2593 | 
 | 
|---|
 | 2594 |           <para>This prints the version information of the code, especially
 | 
|---|
 | 2595 |           important when you request the fixing of bugs or implementation of
 | 
|---|
 | 2596 |           features.</para>
 | 
|---|
 | 2597 | 
 | 
|---|
 | 2598 |           <programlisting>... --version</programlisting>
 | 
|---|
 | 2599 |         </section>
 | 
|---|
 | 2600 | 
 | 
|---|
| [9bce96] | 2601 |         <section xml:id='various.warranty'>
 | 
|---|
 | 2602 |           <title xml:id='various.warranty.title'>Giving warranty 
 | 
|---|
 | 2603 |           information</title>
 | 
|---|
| [6029a6] | 2604 | 
 | 
|---|
 | 2605 |           <para>As follows warranty information is given,</para>
 | 
|---|
 | 2606 | 
 | 
|---|
 | 2607 |           <programlisting>... --warranty</programlisting>
 | 
|---|
 | 2608 |         </section>
 | 
|---|
| [f73e06] | 2609 | 
 | 
|---|
| [9bce96] | 2610 |         <section xml:id='various.help-redistribute'>
 | 
|---|
 | 2611 |           <title xml:id='various.help-redistribute.title'>Giving 
 | 
|---|
 | 2612 |           redistribution information</title>
 | 
|---|
| [f73e06] | 2613 | 
 | 
|---|
 | 2614 |           <para>This gives information on the license and how to redistribute
 | 
|---|
 | 2615 |           the program and its source code</para>
 | 
|---|
 | 2616 | 
 | 
|---|
 | 2617 |           <programlisting>... --help-redistribute</programlisting>
 | 
|---|
 | 2618 |         </section>
 | 
|---|
| [6029a6] | 2619 |       </section>
 | 
|---|
 | 2620 | 
 | 
|---|
| [9bce96] | 2621 |       <section xml:id='sessions'>
 | 
|---|
 | 2622 |         <title xml:id='sessions.title'>Sessions</title>
 | 
|---|
| [6029a6] | 2623 | 
 | 
|---|
 | 2624 |         <para>A session refers to the queue of actions you have executed.
 | 
|---|
 | 2625 |         Together with the initial configuration (and all files required for
 | 
|---|
 | 2626 |         actions in the queue) this might be seen as a clever way of storing
 | 
|---|
 | 2627 |         the state of a molecular system. When proceeding in a try&error
 | 
|---|
 | 2628 |         fashion to construct a certain system, it is a good idea, to store the
 | 
|---|
 | 2629 |         session at the point where your attempts start to deviate from one
 | 
|---|
 | 2630 |         another.</para>
 | 
|---|
 | 2631 | 
 | 
|---|
| [9bce96] | 2632 |         <section xml:id='sessions.store-session'>
 | 
|---|
 | 2633 |           <title xml:id='sessions.store-session.title'>Storing a session
 | 
|---|
 | 2634 |           </title>
 | 
|---|
| [6029a6] | 2635 | 
 | 
|---|
| [f73e06] | 2636 |           <para>Storing sessions is simple,</para>
 | 
|---|
| [6029a6] | 2637 | 
 | 
|---|
| [f73e06] | 2638 |           <programlisting>
 | 
|---|
 | 2639 |                   ... --store-session "session.py" \
 | 
|---|
 | 2640 |                       --session-type python
 | 
|---|
 | 2641 |               </programlisting>
 | 
|---|
 | 2642 | 
 | 
|---|
 | 2643 |           <para>Here, the session type is given as python (the other option is
 | 
|---|
 | 2644 |           cli for in the manner of the command-line interface) and the written
 | 
|---|
 | 2645 |           python script <filename>session.py</filename> can even be used with
 | 
|---|
 | 2646 |           the python interface described below, i.e. it is a full python script
 | 
|---|
 | 2647 |           (that however requires the so-called pyMoleCuilder module).</para>
 | 
|---|
 | 2648 |         </section>
 | 
|---|
 | 2649 | 
 | 
|---|
| [9bce96] | 2650 |         <section xml:id='sessions.load-session'>
 | 
|---|
 | 2651 |           <title xml:id='sessions.load-session.title'>Loading a session</title>
 | 
|---|
| [f73e06] | 2652 | 
 | 
|---|
 | 2653 |           <para>Loading a session only works for python scripts. This actually
 | 
|---|
 | 2654 |           blurs the line between the command-line interface and the python
 | 
|---|
 | 2655 |           interface a bit. But even more, MoleCuilder automatically executes a
 | 
|---|
 | 2656 |           script called <filename>molecuilder.py</filename> if such a file is
 | 
|---|
 | 2657 |           contained in the current directory.</para>
 | 
|---|
| [6029a6] | 2658 | 
 | 
|---|
| [f73e06] | 2659 |           <programlisting>... --load-session "session.py"</programlisting>
 | 
|---|
 | 2660 | 
 | 
|---|
 | 2661 |           <para>This will execute every action with its options contained in the
 | 
|---|
 | 2662 |           script <filename>session.py</filename>.</para>
 | 
|---|
 | 2663 |         </section>
 | 
|---|
| [6029a6] | 2664 |       </section>
 | 
|---|
 | 2665 | 
 | 
|---|
| [9bce96] | 2666 |       <section xml:id='various-specific'>
 | 
|---|
 | 2667 |         <title xml:id='various-specific.title'>Various specific commands
 | 
|---|
 | 2668 |         </title>
 | 
|---|
| [f73e06] | 2669 |         
 | 
|---|
 | 2670 |         <para>In this (final) section of the action description we list a number
 | 
|---|
 | 2671 |         Actions that are very specific to some purposes (or other programs).
 | 
|---|
 | 2672 |         </para>
 | 
|---|
 | 2673 |         
 | 
|---|
| [9bce96] | 2674 |         <section xml:id='various-specific.save-selected-atoms-as-exttypes'>
 | 
|---|
 | 2675 |           <title xml:id='various-specific.save-selected-atoms-as-exttypes.title'>
 | 
|---|
 | 2676 |           Saving exttypes of a set of atoms</title>
 | 
|---|
| [f73e06] | 2677 |           
 | 
|---|
 | 2678 |           <para>This saves the atomic ids of all currently selected atoms in a 
 | 
|---|
| [9bce96] | 2679 |            <link xlink:href="http://www.tremolo-x.com/"><productname>TREMOLO
 | 
|---|
 | 2680 |            </productname></link> exttypes file with the given name.</para>
 | 
|---|
| [f73e06] | 2681 | 
 | 
|---|
 | 2682 |           <programlisting>
 | 
|---|
 | 2683 |           ... --save-selected-atoms-as-exttypes \
 | 
|---|
 | 2684 |           --filename test.exttypes </programlisting>
 | 
|---|
 | 2685 |         </section>
 | 
|---|
 | 2686 |         
 | 
|---|
| [9bce96] | 2687 |         <section xml:id='various-specific.set-parser-parameters'>
 | 
|---|
 | 2688 |           <title xml:id='various-specific.set-parser-parameters.title'>Setting 
 | 
|---|
 | 2689 |           parser specific parameters</title>
 | 
|---|
| [f73e06] | 2690 | 
 | 
|---|
 | 2691 |           <para>You can also tweak the parameters stored in this file easily.
 | 
|---|
 | 2692 |           For example, <productname>MPQC</productname> stores various
 | 
|---|
 | 2693 |           parameters modifying the specific ab-initio calculation performed.
 | 
|---|
 | 2694 |           For <link xlink:href="http://www.mpqc.org/"><productname>MPQC
 | 
|---|
 | 2695 |           </productname></link> and 
 | 
|---|
 | 2696 |           <link xlink:href="http://www.psicode.org/"><productname>Psi4
 | 
|---|
 | 2697 |           </productname></link> this can be modified as follows.</para>
 | 
|---|
 | 2698 | 
 | 
|---|
 | 2699 |           <programlisting>
 | 
|---|
 | 2700 |                 ... --set-parser-parameters mpqc \
 | 
|---|
 | 2701 |                     --parser-parameters "theory=CLHF;basis=6-31*G;"
 | 
|---|
 | 2702 |           </programlisting>
 | 
|---|
 | 2703 | 
 | 
|---|
 | 2704 |           <para>This sets the ab-initio theory to closed-shell Hartree-Fock
 | 
|---|
 | 2705 |           and the basis set to 6-31*G. Please check the
 | 
|---|
 | 2706 |           <productname>MPQC</productname> manual on specific
 | 
|---|
 | 2707 |           parameters.</para>
 | 
|---|
 | 2708 |         </section>
 | 
|---|
 | 2709 | 
 | 
|---|
| [9bce96] | 2710 |         <section xml:id='various-specific.set-tremolo-atomdata'>
 | 
|---|
 | 2711 |           <title xml:id='various-specific.set-tremolo-atomdata.title'>Tremolo 
 | 
|---|
 | 2712 |           specific options and potential files</title>
 | 
|---|
| [6029a6] | 2713 | 
 | 
|---|
| [f73e06] | 2714 |           <para><productname>TREMOLO</productname>'s configuration files start
 | 
|---|
 | 2715 |           with a specific line telling the amount of information stored in the
 | 
|---|
 | 2716 |           file. This file can be modified, e.g. to enforce storing of
 | 
|---|
 | 2717 |           velocities and forces as well as the atoms positions and
 | 
|---|
 | 2718 |           element.</para>
 | 
|---|
 | 2719 | 
 | 
|---|
 | 2720 |           <programlisting>
 | 
|---|
 | 2721 |                 ... --set-tremolo-atomdata "ATOM id element u=3 v=3 F=3" \
 | 
|---|
 | 2722 |                     --reset 1
 | 
|---|
 | 2723 |           </programlisting>
 | 
|---|
 | 2724 | 
 | 
|---|
 | 2725 |           <para>This will not append but reset the old line and fill it with
 | 
|---|
 | 2726 |           the given string.</para>
 | 
|---|
| [6029a6] | 2727 | 
 | 
|---|
| [f73e06] | 2728 |           <para>One specific action is required when loading certain
 | 
|---|
 | 2729 |           <productname>TREMOLO</productname> configuration files. These
 | 
|---|
 | 2730 |           contain element notations that refer to parameterized names used in
 | 
|---|
 | 2731 |           empirical potentials and molecular dynamics simulations and not the
 | 
|---|
 | 2732 |           usual chemical symbols, such as H or O. We may load an auxiliary
 | 
|---|
 | 2733 |           file that gives the required conversion from OH1 to H, which is the
 | 
|---|
 | 2734 |           so-called potential file.</para>
 | 
|---|
| [6029a6] | 2735 | 
 | 
|---|
| [f73e06] | 2736 |           <programlisting>... --parse-tremolo-potentials water.potentials</programlisting>
 | 
|---|
 | 2737 | 
 | 
|---|
 | 2738 |           <para>This parses the lookup table from the file
 | 
|---|
 | 2739 |           <filename>water.potentials</filename> and it can be used in
 | 
|---|
 | 2740 |           following load actions.</para>
 | 
|---|
 | 2741 |         </section>
 | 
|---|
| [6029a6] | 2742 |       </section>
 | 
|---|
 | 2743 |     </section>
 | 
|---|
 | 2744 | 
 | 
|---|
| [9bce96] | 2745 |     <section xml:id='textmenu-interface'>
 | 
|---|
 | 2746 |       <title xml:id='textmenu-interface.title'>Text menu</title>
 | 
|---|
| [6029a6] | 2747 | 
 | 
|---|
 | 2748 |       <para>We now discuss how to use the text menu interface.</para>
 | 
|---|
 | 2749 | 
 | 
|---|
 | 2750 |       <para>The text menu is very much the interface counterpart to the
 | 
|---|
 | 2751 |       command-line interface. Both work in a terminal session.</para>
 | 
|---|
 | 2752 | 
 | 
|---|
 | 2753 |       <para>In the text menu, actions can be selected from hierarchical lists.
 | 
|---|
 | 2754 |       Note that the menus for the graphical interface are organized in the
 | 
|---|
 | 2755 |       exactly same way. After an action has been chosen, the option values
 | 
|---|
 | 2756 |       have to be entered one after the other. After the last option value has
 | 
|---|
 | 2757 |       been given, the action is executed and the result printed to the
 | 
|---|
 | 2758 |       screen.</para>
 | 
|---|
 | 2759 | 
 | 
|---|
 | 2760 |       <para>With regards to the other functionality, it is very much the same
 | 
|---|
 | 2761 |       as the command-line interface above.</para>
 | 
|---|
 | 2762 |     </section>
 | 
|---|
 | 2763 | 
 | 
|---|
| [9bce96] | 2764 |     <section xml:id='graphical-user-interface'>
 | 
|---|
 | 2765 |       <title xml:id='graphical-user-interface.title'>Graphical user interface
 | 
|---|
 | 2766 |       </title>
 | 
|---|
| [6029a6] | 2767 | 
 | 
|---|
 | 2768 |       <para>The main point of the GUI is that it renders the atoms and
 | 
|---|
 | 2769 |       molecules visually. These are represented by the common
 | 
|---|
 | 2770 |       stick-and-ball-model. Single or multiple atoms and molecules can easily
 | 
|---|
 | 2771 |       be accessed, activated and manipulated via tables. Changes made in the
 | 
|---|
 | 2772 |       tables cause immediate update of the visual representation. Under the
 | 
|---|
 | 2773 |       hood each of these manipulations is nothing but the call to an action,
 | 
|---|
 | 2774 |       hence is fully undo- and redoable.</para>
 | 
|---|
 | 2775 | 
 | 
|---|
 | 2776 |       <para>This is mostly helpful to design more advanced structures that are
 | 
|---|
 | 2777 |       conceptually difficult to imagine without visual aid. At the end, a
 | 
|---|
 | 2778 |       session may be stored and this script can then be used to construct
 | 
|---|
 | 2779 |       various derived or slightly modified structures.</para>
 | 
|---|
 | 2780 | 
 | 
|---|
| [9bce96] | 2781 |       <section xml:id='graphical-user-interface.basic-view'>
 | 
|---|
 | 2782 |         <title xml:id='graphical-user-interface.basic-view.title'>Basic view
 | 
|---|
 | 2783 |         </title>
 | 
|---|
| [6029a6] | 2784 | 
 | 
|---|
 | 2785 |         <para>Let us first give an impression of the basic view of the gui
 | 
|---|
 | 2786 |         after a molecule has been loaded.</para>
 | 
|---|
 | 2787 | 
 | 
|---|
 | 2788 |         <figure>
 | 
|---|
 | 2789 |           <title>Screenshot of the basic view of the GUI after loading a file
 | 
|---|
 | 2790 |           with eight water molecules.</title>
 | 
|---|
 | 2791 | 
 | 
|---|
 | 2792 |           <mediaobject>
 | 
|---|
 | 2793 |             <imageobject>
 | 
|---|
 | 2794 |               <imagedata entityref="example_basic_view" scalefit="1" width="100%"/>
 | 
|---|
 | 2795 |             </imageobject>
 | 
|---|
 | 2796 |           </mediaobject>
 | 
|---|
 | 2797 |         </figure>
 | 
|---|
 | 2798 | 
 | 
|---|
| [9bce96] | 2799 |         <section xml:id='graphical-user-interface.3d-view'>
 | 
|---|
 | 2800 |           <title xml:id='graphical-user-interface.3d-view.title'>3D view
 | 
|---|
 | 2801 |           </title>
 | 
|---|
| [6029a6] | 2802 | 
 | 
|---|
 | 2803 |           <para>In the above figure, you see the stick-and-ball representation
 | 
|---|
 | 2804 |           of the water molecules, the dreibein giving the positive axis
 | 
|---|
 | 2805 |           direction and the cuboidal domain on a black background.</para>
 | 
|---|
 | 2806 |         </section>
 | 
|---|
 | 2807 | 
 | 
|---|
| [9bce96] | 2808 |         <section xml:id='graphical-user-interface.information-tabs'>
 | 
|---|
 | 2809 |           <title xml:id='graphical-user-interface.information-tabs.title'>
 | 
|---|
 | 2810 |           Information Tabs</title>
 | 
|---|
| [6029a6] | 2811 | 
 | 
|---|
 | 2812 |           <para>Beneath this 3D view that you can rotate at will your mouse
 | 
|---|
 | 2813 |           and zoom in and out with your scroll wheel, you find to the right a
 | 
|---|
 | 2814 |           part containing two tabs named Atom and Molecule. Look at where the
 | 
|---|
 | 2815 |           mouse pointer is. It has colored the atom underneath in cyan
 | 
|---|
 | 2816 |           (although it's also an oxygen atom and should bne coloured in rose
 | 
|---|
 | 2817 |           as the rest). You can inspect its properties in the tab Atom: Name,
 | 
|---|
 | 2818 |           element, mass, charge, position and number of bonds. If you switch
 | 
|---|
 | 2819 |           to the Molecule tab, you would see the properties of the water
 | 
|---|
 | 2820 |           molecule this specific atom belongs to.</para>
 | 
|---|
 | 2821 |         </section>
 | 
|---|
 | 2822 | 
 | 
|---|
| [9bce96] | 2823 |         <section xml:id='graphical-user-interface.shape'>
 | 
|---|
 | 2824 |           <title xml:id='graphical-user-interface.shape.title'>Shape section
 | 
|---|
 | 2825 |           </title>
 | 
|---|
| [6029a6] | 2826 | 
 | 
|---|
 | 2827 |           <para>Beneath these information tabs you find the shape sections.
 | 
|---|
 | 2828 |           There you find a list of all currently created shapes and you can
 | 
|---|
 | 2829 |           manipulate them via the buttons beneath this list.</para>
 | 
|---|
 | 2830 |         </section>
 | 
|---|
 | 2831 | 
 | 
|---|
| [9bce96] | 2832 |         <section xml:id='graphical-user-interface.timeline'>
 | 
|---|
 | 2833 |           <title xml:id='graphical-user-interface.timeline.title'>Timeline
 | 
|---|
 | 2834 |           </title>
 | 
|---|
| [6029a6] | 2835 | 
 | 
|---|
 | 2836 |           <para>Directly below the 3D view there is a long slider. If a loaded
 | 
|---|
 | 2837 |           file has multiple time step entries, this slider allows you to
 | 
|---|
 | 2838 |           smoothly select one time frame after another. Sliding it with the
 | 
|---|
 | 2839 |           mouse from left to right will reveal the animation that is hidden
 | 
|---|
 | 2840 |           behind the distinct snapshots stored in the configuration
 | 
|---|
 | 2841 |           file.</para>
 | 
|---|
 | 2842 |         </section>
 | 
|---|
 | 2843 | 
 | 
|---|
| [9bce96] | 2844 |         <section xml:id='graphical-user-interface.tables'>
 | 
|---|
 | 2845 |           <title xml:id='graphical-user-interface.tables.title'>Selection 
 | 
|---|
 | 2846 |           tables</title>
 | 
|---|
| [6029a6] | 2847 | 
 | 
|---|
 | 2848 |           <para>Underneath the time line there is another place for
 | 
|---|
 | 2849 |           tabs.</para>
 | 
|---|
 | 2850 | 
 | 
|---|
 | 2851 |           <para>The first is on molecules, listing all present molecules of
 | 
|---|
 | 2852 |           the molecular system in a list view. If you click on a specific
 | 
|---|
 | 2853 |           molecule, the one will get selected or unselected depending on its
 | 
|---|
 | 2854 |           current selection state (see below for details on this with respect
 | 
|---|
 | 2855 |           to the GUI).</para>
 | 
|---|
 | 2856 | 
 | 
|---|
 | 2857 |           <para>The next tab enumerates all elements known to MoleCuilder
 | 
|---|
 | 2858 |           where the ones are greyed out that are not present in the molecular
 | 
|---|
 | 2859 |           system. Clicking on a present element will select all atoms of this
 | 
|---|
 | 2860 |           specific element. A subsequent click unselects again.</para>
 | 
|---|
 | 2861 | 
 | 
|---|
 | 2862 |           <para>Subsequent follow tabs on enumerating the fragments and their
 | 
|---|
 | 2863 |           fragment energies if calculated and the homologies along with
 | 
|---|
 | 2864 |           graphical depiction (via QWT) if present.</para>
 | 
|---|
 | 2865 |         </section>
 | 
|---|
 | 2866 |       </section>
 | 
|---|
 | 2867 | 
 | 
|---|
| [9bce96] | 2868 |       <section xml:id='graphical-user-interface.selections'>
 | 
|---|
 | 2869 |         <title xml:id='graphical-user-interface.selections.title'>Selections
 | 
|---|
 | 2870 |         </title>
 | 
|---|
| [6029a6] | 2871 | 
 | 
|---|
 | 2872 |         <para>Selections work generally always by selecting the respective
 | 
|---|
 | 2873 |         action from the pull-down menu.</para>
 | 
|---|
 | 2874 | 
 | 
|---|
 | 2875 |         <para>However, it may also be accessed directly. The row of icons
 | 
|---|
 | 2876 |         above the 3D view has two icons depicting the selection of individual
 | 
|---|
 | 2877 |         atoms or molecules. If either of them is selected, clicking with the
 | 
|---|
 | 2878 |         left mouse button on an atom will either (un)select the atom or its
 | 
|---|
 | 2879 |         associated molecule. Multiple atoms can be selected in this
 | 
|---|
 | 2880 |         manner.</para>
 | 
|---|
 | 2881 | 
 | 
|---|
 | 2882 |         <para>Also the selection tabs may be used by clicking on the name of a
 | 
|---|
 | 2883 |         molecule as stated above or at an element.</para>
 | 
|---|
 | 2884 | 
 | 
|---|
 | 2885 |         <para>Similarly, if shapes are present in the shape section, clicking
 | 
|---|
 | 2886 |         them with select them and also cause a translucent visualization to
 | 
|---|
 | 2887 |         appear in the 3D view. Note that this visualization is quite costly
 | 
|---|
 | 2888 |         right now and not suited to complex shapes.</para>
 | 
|---|
 | 2889 |       </section>
 | 
|---|
 | 2890 | 
 | 
|---|
| [9bce96] | 2891 |       <section xml:id='graphical-user-interface.dialogs'>
 | 
|---|
 | 2892 |         <title xml:id='graphical-user-interface.dialogs.title'>Dialogs</title>
 | 
|---|
| [6029a6] | 2893 | 
 | 
|---|
 | 2894 |         <para>Most essential, however, to the GUI are the dialogs. Each action
 | 
|---|
 | 2895 |         calls forth such a dialog even if no options are required (the
 | 
|---|
 | 2896 |         execution of the action has at least to be confirmed). Each dialog
 | 
|---|
 | 2897 |         consisting of queries for a particular option value. As each option
 | 
|---|
 | 2898 |         value has a specific type, we briefly go into the details of how these
 | 
|---|
 | 2899 |         queries look like.</para>
 | 
|---|
 | 2900 | 
 | 
|---|
 | 2901 |         <note>
 | 
|---|
 | 2902 |           <para>Each dialog's Ok is greyed out until all entered option values
 | 
|---|
 | 2903 |           are valid.</para>
 | 
|---|
 | 2904 |         </note>
 | 
|---|
 | 2905 | 
 | 
|---|
| [9bce96] | 2906 |         <section xml:id='graphical-user-interface.dialogs.domain'>
 | 
|---|
 | 2907 |           <title xml:id='graphical-user-interface.dialogs.domain.title'>Domain 
 | 
|---|
 | 2908 |           query</title>
 | 
|---|
| [6029a6] | 2909 | 
 | 
|---|
 | 2910 |           <figure>
 | 
|---|
 | 2911 |             <title>Screenshot of a dialog showing a domain query</title>
 | 
|---|
 | 2912 | 
 | 
|---|
 | 2913 |             <mediaobject>
 | 
|---|
 | 2914 |               <imageobject>
 | 
|---|
 | 2915 |                 <imagedata entityref="dialog_box" scalefit="1" width="100%"/>
 | 
|---|
 | 2916 |               </imageobject>
 | 
|---|
 | 2917 |             </mediaobject>
 | 
|---|
 | 2918 | 
 | 
|---|
 | 2919 |             <para>In the domain query a 3x3 symmetric matrix has to be
 | 
|---|
 | 2920 |             entered. In the above screenshots you notice that the only
 | 
|---|
 | 2921 |             non-zero entries are on the main diagonal. Here, we have simply
 | 
|---|
 | 2922 |             specified a cube of edge length 8. The ok button will be greyed
 | 
|---|
 | 2923 |             out if the matrix is either singular or not symmetric.</para>
 | 
|---|
 | 2924 |           </figure>
 | 
|---|
 | 2925 |         </section>
 | 
|---|
 | 2926 | 
 | 
|---|
| [9bce96] | 2927 |         <section xml:id='graphical-user-interface.dialogs.element'>
 | 
|---|
 | 2928 |           <title xml:id='graphical-user-interface.dialogs.element.title'>
 | 
|---|
 | 2929 |           Element query</title>
 | 
|---|
| [6029a6] | 2930 | 
 | 
|---|
 | 2931 |           <figure>
 | 
|---|
 | 2932 |             <title>Screenshot the add atom action containing an element
 | 
|---|
 | 2933 |             query</title>
 | 
|---|
 | 2934 | 
 | 
|---|
 | 2935 |             <mediaobject>
 | 
|---|
 | 2936 |               <imageobject>
 | 
|---|
 | 2937 |                 <imagedata entityref="dialog_add-atom_tooltip" scalefit="1" width="100%"/>
 | 
|---|
 | 2938 |               </imageobject>
 | 
|---|
 | 2939 |             </mediaobject>
 | 
|---|
 | 2940 | 
 | 
|---|
 | 2941 |             <para>Elements are picked from a pull-down box where all known
 | 
|---|
 | 2942 |             elements are listed.</para>
 | 
|---|
 | 2943 | 
 | 
|---|
 | 2944 |             <para>In this dialog you also notice that a tooltip is given,
 | 
|---|
 | 2945 |             briefly explaining what the action does.</para>
 | 
|---|
 | 2946 |           </figure>
 | 
|---|
 | 2947 |         </section>
 | 
|---|
 | 2948 | 
 | 
|---|
| [9bce96] | 2949 |         <section xml:id='graphical-user-interface.dialogs.action'>
 | 
|---|
 | 2950 |           <title xml:id='graphical-user-interface.dialogs.action.title'>
 | 
|---|
 | 2951 |           Complex query</title>
 | 
|---|
| [6029a6] | 2952 | 
 | 
|---|
 | 2953 |           <figure>
 | 
|---|
 | 2954 |             <title>Screenshot of a complex dialog consisting of multiple
 | 
|---|
 | 2955 |             queries</title>
 | 
|---|
 | 2956 | 
 | 
|---|
 | 2957 |             <mediaobject>
 | 
|---|
 | 2958 |               <imageobject>
 | 
|---|
 | 2959 |                 <imagedata entityref="dialog_complex" scalefit="1" width="100%"/>
 | 
|---|
 | 2960 |               </imageobject>
 | 
|---|
 | 2961 |             </mediaobject>
 | 
|---|
 | 2962 | 
 | 
|---|
 | 2963 |             <para>Here we show a more complex dialog. It queries for strings,
 | 
|---|
 | 2964 |             for integer values (see the increase/decrease arrows), for
 | 
|---|
 | 2965 |             booleans and for files (the "choose" buttons opens a file
 | 
|---|
 | 2966 |             dialog).</para>
 | 
|---|
 | 2967 |           </figure>
 | 
|---|
 | 2968 |         </section>
 | 
|---|
 | 2969 | 
 | 
|---|
| [9bce96] | 2970 |         <section xml:id='graphical-user-interface.dialogs.exit'>
 | 
|---|
 | 2971 |           <title xml:id='graphical-user-interface.dialogs.exit.title'>Exit 
 | 
|---|
 | 2972 |           query</title>
 | 
|---|
| [6029a6] | 2973 | 
 | 
|---|
 | 2974 |           <figure>
 | 
|---|
 | 2975 |             <title>Screenshort showing the exit dialog</title>
 | 
|---|
 | 2976 | 
 | 
|---|
 | 2977 |             <mediaobject>
 | 
|---|
 | 2978 |               <imageobject>
 | 
|---|
 | 2979 |                 <imagedata entityref="dialog_exit" scalefit="1" width="100%"/>
 | 
|---|
 | 2980 |               </imageobject>
 | 
|---|
 | 2981 |             </mediaobject>
 | 
|---|
 | 2982 | 
 | 
|---|
 | 2983 |             <para>Finally, we show the dialog that will pop up when exiting
 | 
|---|
 | 2984 |             the graphical interface. It will ask whether it should store the
 | 
|---|
 | 2985 |             current state of the system in the input file or not. You may
 | 
|---|
 | 2986 |             cancel the exit, close without saving or save the current
 | 
|---|
 | 2987 |             state.</para>
 | 
|---|
 | 2988 |           </figure>
 | 
|---|
 | 2989 |         </section>
 | 
|---|
 | 2990 |       </section>
 | 
|---|
 | 2991 |     </section>
 | 
|---|
 | 2992 | 
 | 
|---|
| [9bce96] | 2993 |     <section xml:id='python-interface'>
 | 
|---|
 | 2994 |       <title xml:id='python-interface.title'>Python interface</title>
 | 
|---|
| [6029a6] | 2995 | 
 | 
|---|
 | 2996 |       <para>Last but not least we elaborate on the python interface. We have
 | 
|---|
 | 2997 |       already discusses this interface to some extent. The current session,
 | 
|---|
 | 2998 |       i.e. the queue of actions you have executed, can be stored as a python
 | 
|---|
 | 2999 |       script and subsequently executed independently of the user interface it
 | 
|---|
 | 3000 |       was created with. More general, MoleCuilder can execute arbitrary python
 | 
|---|
 | 3001 |       scripts where prior to its execution a specific module is loaded by
 | 
|---|
 | 3002 |       default enabling access to MoleCuilder's actions from inside the
 | 
|---|
 | 3003 |       script.</para>
 | 
|---|
 | 3004 | 
 | 
|---|
 | 3005 |       <para>MoleCuilder's python module is called pyMoleCuilder. it is
 | 
|---|
 | 3006 |       essentially a library that can be imported into python just as any other
 | 
|---|
 | 3007 |       module. Let us assume you have started the python interpreter and you
 | 
|---|
 | 3008 |       have added the destination of the <filename>pyMoleCuilder</filename>
 | 
|---|
 | 3009 |       library to the <varname>PYTHONPATH</varname> variable.</para>
 | 
|---|
 | 3010 | 
 | 
|---|
 | 3011 |       <programlisting>import pyMoleCuilder as mol</programlisting>
 | 
|---|
 | 3012 | 
 | 
|---|
 | 3013 |       <para>Subsequently, you can access the help via</para>
 | 
|---|
 | 3014 | 
 | 
|---|
 | 3015 |       <programlisting>help(mol)</programlisting>
 | 
|---|
 | 3016 | 
 | 
|---|
 | 3017 |       <para>This will list all of MoleCuilder's actions with their function
 | 
|---|
 | 3018 |       signatures within python as contained in the module pyMoleCuilder named
 | 
|---|
 | 3019 |       as mol in the scope of the currently running interpreter. Note that the
 | 
|---|
 | 3020 |       function names are not the names you know from the command-line
 | 
|---|
 | 3021 |       interface, they might be called
 | 
|---|
 | 3022 |       <computeroutput>WorldChangeBox(...)</computeroutput> or alike.</para>
 | 
|---|
 | 3023 | 
 | 
|---|
 | 3024 |       <para>Let's try it out.</para>
 | 
|---|
 | 3025 | 
 | 
|---|
 | 3026 |       <programlisting>print mol.CommandVersion()</programlisting>
 | 
|---|
 | 3027 | 
 | 
|---|
 | 3028 |       <para>This will state the current version of the library.</para>
 | 
|---|
 | 3029 | 
 | 
|---|
 | 3030 |       <para>Go ahead and try out other commands. Refer to the documentation
 | 
|---|
 | 3031 |       under the command-line interface and look up the function name via
 | 
|---|
 | 3032 |       help.</para>
 | 
|---|
 | 3033 |     </section>
 | 
|---|
 | 3034 |   </chapter>
 | 
|---|
 | 3035 | 
 | 
|---|
 | 3036 |   <chapter>
 | 
|---|
 | 3037 |     <title>Conclusions</title>
 | 
|---|
 | 3038 | 
 | 
|---|
 | 3039 |     <para>This ends this user guide.</para>
 | 
|---|
 | 3040 | 
 | 
|---|
 | 3041 |     <para>We have given you a brief introduction to the aim of the program and
 | 
|---|
 | 3042 |     how each of the four interfaces are to be used. The rest is up to
 | 
|---|
 | 3043 |     you.</para>
 | 
|---|
 | 3044 | 
 | 
|---|
 | 3045 |     <para>Tutorials and more information is available online, see <link
 | 
|---|
| [f73e06] | 3046 |     xlink:href="http://www.molecuilder.com/">MoleCuilder's website</link>.
 | 
|---|
 | 3047 |     </para>
 | 
|---|
| [6029a6] | 3048 | 
 | 
|---|
 | 3049 |     <para>Be aware that in general knowing how the code works allows you to
 | 
|---|
 | 3050 |     understand what's going wrong if something's going wrong.</para>
 | 
|---|
 | 3051 | 
 | 
|---|
 | 3052 |     <section>
 | 
|---|
 | 3053 |       <title>Thanks</title>
 | 
|---|
 | 3054 | 
 | 
|---|
 | 3055 |       <para>Huge thanks go out to Saskia Metzler who was patient enough to let
 | 
|---|
 | 3056 |       me sit next to her while riding ten hours in a bus to Berlin.</para>
 | 
|---|
 | 3057 |     </section>
 | 
|---|
 | 3058 |   </chapter>
 | 
|---|
 | 3059 | </book>
 | 
|---|