[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 |
|
---|
[9bce96] | 1152 | <section xml:id='bond.add-bond'>
|
---|
| 1153 | <title xml:id='bond.add-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.
|
---|
| 1157 | First, you must have selected two atoms.</para>
|
---|
| 1158 |
|
---|
| 1159 | <programlisting>... --add-bond</programlisting>
|
---|
| 1160 | </section>
|
---|
| 1161 |
|
---|
[9bce96] | 1162 | <section xml:id='bond.remove-bond'>
|
---|
| 1163 | <title xml:id='bond.remove-bond.title'>Removing a bond manually
|
---|
| 1164 | </title>
|
---|
[6029a6] | 1165 |
|
---|
| 1166 | <para>In much the same way as adding a bond, you can also remove a
|
---|
| 1167 | bond.</para>
|
---|
| 1168 |
|
---|
| 1169 | <programlisting>... --remove-bond</programlisting>
|
---|
| 1170 | </section>
|
---|
| 1171 |
|
---|
[9bce96] | 1172 | <section xml:id='bond.save-bonds'>
|
---|
| 1173 | <title xml:id='bond.save-bonds.title'>Saving bond information
|
---|
| 1174 | </title>
|
---|
[f73e06] | 1175 |
|
---|
| 1176 | <para>Bond information can be saved to a file in <link
|
---|
[9bce96] | 1177 | xlink:href="http://www.molecuilder.com/"><productname>TREMOLO
|
---|
| 1178 | </productname></link>'s dbond style.</para>
|
---|
[f73e06] | 1179 |
|
---|
| 1180 | <programlisting>... --save-bonds system.dbonds</programlisting>
|
---|
| 1181 |
|
---|
| 1182 | <para>Similarly is the following Action which saves the bond
|
---|
| 1183 | information as a simple list of one atomic id per line and in
|
---|
| 1184 | the same line, separated by spaces, the ids of all atoms connected
|
---|
| 1185 | to it.</para>
|
---|
| 1186 |
|
---|
| 1187 | <programlisting>... --save-adjacency system.adj</programlisting>
|
---|
| 1188 |
|
---|
| 1189 | </section>
|
---|
| 1190 |
|
---|
[9bce96] | 1191 | <section xml:id='bond.stretch-bond'>
|
---|
| 1192 | <title xml:id='bond.stretch-bond.title'>Stretching a bond</title>
|
---|
[6029a6] | 1193 |
|
---|
| 1194 | <para>Stretching a bond actually refers to translation of the
|
---|
| 1195 | associated pair of atoms. However, this action will keep the rest of
|
---|
| 1196 | the molecule to which both atoms belong to invariant as well.</para>
|
---|
| 1197 |
|
---|
| 1198 | <programlisting>... --stretch-bond 1.2</programlisting>
|
---|
| 1199 |
|
---|
| 1200 | <para>This scales the original bond distance to the new bond
|
---|
| 1201 | distance 1.2, shifting the right hand side and the left hand side of
|
---|
| 1202 | the molecule accordingly.</para>
|
---|
| 1203 |
|
---|
| 1204 | <warning>
|
---|
| 1205 | <para>this fails with aromatic rings (but you can always
|
---|
| 1206 | undo).</para>
|
---|
| 1207 | </warning>
|
---|
| 1208 | </section>
|
---|
| 1209 |
|
---|
[9bce96] | 1210 | <section xml:id='bond.change-bond-angle'>
|
---|
| 1211 | <title xml:id='bond.change-bond-angle.title'>Changing a bond angle
|
---|
| 1212 | </title>
|
---|
[6029a6] | 1213 |
|
---|
| 1214 | <para>In the same way as stretching a bond, you can change the angle
|
---|
| 1215 | in between two bonds. This works if exactly three atoms are selected
|
---|
| 1216 | and two pairs are bonded.</para>
|
---|
| 1217 |
|
---|
| 1218 | <programlisting>... --change-bond-angle 90</programlisting>
|
---|
| 1219 |
|
---|
| 1220 | <para>This will change the angle from its value to 90 degree by
|
---|
| 1221 | translating the two outer atoms of this triangle (the atom connected
|
---|
| 1222 | to both others is the axis of the rotation).</para>
|
---|
| 1223 | </section>
|
---|
| 1224 | </section>
|
---|
| 1225 |
|
---|
[9bce96] | 1226 | <section xml:id='molecule'>
|
---|
| 1227 | <title xml:id='molecule.title'>Manipulate molecules</title>
|
---|
[6029a6] | 1228 |
|
---|
| 1229 | <para>Molecules are agglomerations of atoms that are bonded. Hence,
|
---|
| 1230 | the actions working on molecules differ from those working on atoms.
|
---|
| 1231 | Joining two molecules can only be accomplished by adding a bond in
|
---|
| 1232 | between, and in the reverse fashion splitting a molecule by removing
|
---|
| 1233 | all bonds in between. Actions below mostly deal with copying
|
---|
| 1234 | molecules. Removing of molecules is done via selecting the molecule's
|
---|
| 1235 | atoms and removing them, which removes the atoms as well.</para>
|
---|
| 1236 |
|
---|
| 1237 | <note>
|
---|
| 1238 | <para>Initially when you load a file via the input action all atoms
|
---|
| 1239 | are placed in a single molecule despite any present bond
|
---|
[9bce96] | 1240 | information, see <link linkend="fragmentation">Dissecting the
|
---|
| 1241 | molecular system into molecules</link></para>
|
---|
[6029a6] | 1242 | </note>
|
---|
| 1243 |
|
---|
[9bce96] | 1244 | <section xml:id='molecule.copy'>
|
---|
| 1245 | <title xml:id='molecule.copy.title'>Copy molecules</title>
|
---|
[6029a6] | 1246 |
|
---|
| 1247 | <para>A basic operation is to duplicate a molecule. This works on a
|
---|
| 1248 | single, currently selected molecule. Afterwards, we elaborate on a
|
---|
| 1249 | more complex manner of copying, filling a specific shape with
|
---|
| 1250 | molecules.</para>
|
---|
| 1251 |
|
---|
| 1252 | <programlisting>
|
---|
| 1253 | ... --copy-molecule \
|
---|
| 1254 | --position "10,10,10"
|
---|
| 1255 | </programlisting>
|
---|
| 1256 |
|
---|
| 1257 | <para>This action copies the selected molecule and inserts it at the
|
---|
| 1258 | position (10,10,10) in the domain with respect to the molecule's
|
---|
| 1259 | center. In effect, it copies all the atoms of the original molecule
|
---|
| 1260 | and adds new bonds in between these copied atoms such that their
|
---|
| 1261 | bond subgraphs are identical.</para>
|
---|
| 1262 | </section>
|
---|
| 1263 |
|
---|
[9bce96] | 1264 | <section xml:id='molecule.change-molname'>
|
---|
| 1265 | <title xml:id='molecule.change-molname.title'>Change a molecules
|
---|
| 1266 | name</title>
|
---|
[6029a6] | 1267 |
|
---|
| 1268 | <para>You can change the name of a molecule which is important for
|
---|
| 1269 | selection.</para>
|
---|
| 1270 |
|
---|
| 1271 | <programlisting>... -change-molname "test</programlisting>
|
---|
| 1272 |
|
---|
| 1273 | <para>This will change the name of the (only) selected molecule to
|
---|
| 1274 | "test".</para>
|
---|
| 1275 |
|
---|
| 1276 | <para>Connected with this is the default name an unknown molecule
|
---|
| 1277 | gets.</para>
|
---|
| 1278 |
|
---|
| 1279 | <programlisting>... --default-molname test</programlisting>
|
---|
| 1280 |
|
---|
| 1281 | <para>This will change the default name of a molecule to
|
---|
| 1282 | "test".</para>
|
---|
| 1283 |
|
---|
| 1284 | <note>
|
---|
| 1285 | <para>Note that a molecule loaded from file gets the filename
|
---|
| 1286 | (without suffix) as its name.</para>
|
---|
| 1287 | </note>
|
---|
| 1288 | </section>
|
---|
| 1289 |
|
---|
[867473] | 1290 | <section xml:id='molecule.remove-molecule'>
|
---|
| 1291 | <title xml:id='molecule.remove-molecule.title'>Remove molecules
|
---|
| 1292 | </title>
|
---|
| 1293 |
|
---|
| 1294 | <para>This removes one or multiple selected molecules.</para>
|
---|
| 1295 |
|
---|
| 1296 | <programlisting>... -remove-molecule</programlisting>
|
---|
| 1297 |
|
---|
| 1298 | <para>This essentially just removes all of the molecules' atoms
|
---|
| 1299 | which in turn also causes the removal of the molecule.</para>
|
---|
| 1300 | </section>
|
---|
| 1301 |
|
---|
[066442] | 1302 | <section xml:id='molecule.translate-molecules'>
|
---|
| 1303 | <title xml:id='molecule.translate-molecules.title'>Translate molecules
|
---|
| 1304 | </title>
|
---|
| 1305 |
|
---|
| 1306 | <para>This translates one or multiple selected molecules by a
|
---|
| 1307 | specific offset..</para>
|
---|
| 1308 |
|
---|
| 1309 | <programlisting>... -translate-molecules</programlisting>
|
---|
| 1310 |
|
---|
| 1311 | <para>This essentially translates all of the molecules' atoms.</para>
|
---|
| 1312 | </section>
|
---|
| 1313 |
|
---|
[9bce96] | 1314 | <section xml:id='molecule.rotate-around-self'>
|
---|
| 1315 | <title xml:id='molecule.rotate-around-self.title'>Rotate around self
|
---|
| 1316 | </title>
|
---|
[6029a6] | 1317 |
|
---|
| 1318 | <para>You can rotate a molecule around its own axis.</para>
|
---|
| 1319 |
|
---|
| 1320 | <programlisting>
|
---|
| 1321 | ... --rotate-around-self "90" \
|
---|
| 1322 | --axis "0,0,1"
|
---|
| 1323 | </programlisting>
|
---|
| 1324 |
|
---|
| 1325 | <para>This rotates the molecule around the z axis by 90 degrees as
|
---|
| 1326 | if the origin were at its center of origin.</para>
|
---|
| 1327 | </section>
|
---|
| 1328 |
|
---|
[9bce96] | 1329 | <section xml:id='molecule.rotate-around-origin'>
|
---|
| 1330 | <title xml:id='molecule.rotate-around-origin.title'>Rotate around
|
---|
| 1331 | origin</title>
|
---|
[6029a6] | 1332 |
|
---|
| 1333 | <para>In the same manner the molecule can be rotated around an
|
---|
| 1334 | external origin.</para>
|
---|
| 1335 |
|
---|
| 1336 | <programlisting>
|
---|
| 1337 | ... --rotate-around-origin 90 \
|
---|
| 1338 | --position "0,0,1"\
|
---|
| 1339 | </programlisting>
|
---|
| 1340 |
|
---|
| 1341 | <para>This rotates the molecule around an axis from the origin to
|
---|
| 1342 | the position (0,0,1), i.e. around the z axis, by 90 degrees.</para>
|
---|
| 1343 | </section>
|
---|
| 1344 |
|
---|
[9bce96] | 1345 | <section xml:id='molecule.rotate-to-principal-axis-system'>
|
---|
| 1346 | <title xml:id='molecule.rotate-to-principal-axis-system.title'>
|
---|
| 1347 | Rotate to principal axis system</title>
|
---|
[6029a6] | 1348 |
|
---|
| 1349 | <para>The principal axis system is given by an ellipsoid that mostly
|
---|
| 1350 | matches the molecules shape. The principal axis system can be just
|
---|
| 1351 | simply determined by</para>
|
---|
| 1352 |
|
---|
| 1353 | <programlisting>... --principal-axis-system</programlisting>
|
---|
| 1354 |
|
---|
| 1355 | <para>To rotate the molecule around itself to align with this system
|
---|
| 1356 | do as follows.</para>
|
---|
| 1357 |
|
---|
[9bce96] | 1358 | <programlisting>... --rotate-to-principal-axis-system "0,0,1"
|
---|
| 1359 | </programlisting>
|
---|
[6029a6] | 1360 |
|
---|
| 1361 | <para>This rotates the molecule in such a manner that the ellipsoids
|
---|
| 1362 | largest axis is aligned with the z axis. <remark>Note that "0,0,-1"
|
---|
| 1363 | would align anti-parallel.</remark></para>
|
---|
| 1364 | </section>
|
---|
| 1365 |
|
---|
[9bce96] | 1366 | <section xml:id='molecule.verlet-integration'>
|
---|
| 1367 | <title xml:id='molecule.verlet-integration.title'>Perform verlet
|
---|
| 1368 | integration</title>
|
---|
[6029a6] | 1369 |
|
---|
| 1370 | <para>Atoms not only have a position, but each instance also stores
|
---|
| 1371 | velocity and a force vector. These can be used in a velocity verlet
|
---|
| 1372 | integration step. Velocity verlet is a often employed time
|
---|
| 1373 | integration algorithm in molecular dynamics simulations.</para>
|
---|
| 1374 |
|
---|
| 1375 | <programlisting>
|
---|
| 1376 | ... --verlet-integration \
|
---|
| 1377 | --deltat 0.1 \
|
---|
| 1378 | --keep-fixed-CenterOfMass 0
|
---|
| 1379 | </programlisting>
|
---|
| 1380 |
|
---|
| 1381 | <para>This will integrate with a timestep of <inlineequation>
|
---|
| 1382 | <m:math display="inline">
|
---|
| 1383 | <m:mi>\Delta_t = 0.1</m:mi>
|
---|
| 1384 | </m:math>
|
---|
| 1385 | </inlineequation>and correcting forces and velocities such that
|
---|
| 1386 | the sum over all atoms is zero.</para>
|
---|
| 1387 | </section>
|
---|
[f73e06] | 1388 |
|
---|
[9bce96] | 1389 | <section xml:id='molecule.force-annealing'>
|
---|
| 1390 | <title xml:id='molecule.force-annealing.title'>Anneal the atomic
|
---|
| 1391 | forces</title>
|
---|
[f73e06] | 1392 |
|
---|
| 1393 | <para>This will shift the atoms in a such a way as to decrease (or
|
---|
| 1394 | anneal) the forces acting upon them.</para>
|
---|
| 1395 |
|
---|
| 1396 | <para>Forces may either be already present for the set of atoms by
|
---|
| 1397 | some other way (e.g. from a prior fragmentation calculation) or,
|
---|
| 1398 | as shown here, from an external file. We anneal the forces for
|
---|
| 1399 | one step with a certain initial step width of 0.5 atomic time
|
---|
| 1400 | units and do not create a new timestep for each optimization
|
---|
| 1401 | step.</para>
|
---|
| 1402 |
|
---|
| 1403 | <programlisting>
|
---|
| 1404 | ... --force-annealing \
|
---|
| 1405 | --forces-file test.forces \
|
---|
| 1406 | --deltat 0.5 \
|
---|
| 1407 | --steps 1 \
|
---|
| 1408 | --output-every-step 0
|
---|
| 1409 | </programlisting>
|
---|
| 1410 | </section>
|
---|
| 1411 |
|
---|
[9bce96] | 1412 | <section xml:id='molecule.linear-interpolation-of-trajectories'>
|
---|
| 1413 | <title xml:id='molecule.linear-interpolation-of-trajectories.title'>
|
---|
| 1414 | Linear interpolation between configurations</title>
|
---|
[f73e06] | 1415 |
|
---|
| 1416 | <para>This is similar to verlet-integration, only that it performs
|
---|
| 1417 | a linear integration irrespective of the acting atomic forces.
|
---|
| 1418 | </para>
|
---|
| 1419 |
|
---|
| 1420 | <para>The following call will produce an interpolation between the
|
---|
| 1421 | configurations in time step 0 and time step 1 with 98 intermediate
|
---|
| 1422 | steps, i.e. current step 1 will end up in time step 99. In this
|
---|
| 1423 | case an idential mapping is used to associated atoms in start and
|
---|
| 1424 | end configuration.</para>
|
---|
| 1425 |
|
---|
| 1426 | <programlisting>
|
---|
| 1427 | ... --linear-interpolation-of-trajectories \
|
---|
| 1428 | --start-step 0 \
|
---|
| 1429 | --end-step 1 \
|
---|
| 1430 | --interpolation-steps 100 \
|
---|
| 1431 | --id-mapping 1
|
---|
| 1432 | </programlisting>
|
---|
| 1433 | </section>
|
---|
[6029a6] | 1434 | </section>
|
---|
| 1435 |
|
---|
[9bce96] | 1436 | <section xml:id='domain'>
|
---|
| 1437 | <title xml:id='domain.title'>Manipulate domain</title>
|
---|
[6029a6] | 1438 |
|
---|
| 1439 | <para>Here, we elaborate on how to duplicate all the atoms inside the
|
---|
| 1440 | domain, how the scale the coordinate system, how to center the atoms
|
---|
| 1441 | with respect to certain points, how to realign them by given
|
---|
| 1442 | constraints, how to mirror and most importantly how to specify the
|
---|
| 1443 | domain.</para>
|
---|
| 1444 |
|
---|
[9bce96] | 1445 | <section xml:id='domain.change-box'>
|
---|
| 1446 | <title xml:id='domain.change-box.title'>Changing the domain</title>
|
---|
[6029a6] | 1447 |
|
---|
| 1448 | <para>The domain is specified by a symmetric 3x3 matrix. The
|
---|
| 1449 | eigenvalues (diagonal entries in case of a diagonal matrix) give the
|
---|
| 1450 | length of the edges, additional entries specify transformations of
|
---|
| 1451 | the box such that it becomes a more general parallelepiped.</para>
|
---|
| 1452 |
|
---|
| 1453 | <programlisting>... change-box "20,0,20,0,0,20"</programlisting>
|
---|
| 1454 |
|
---|
| 1455 | <para>As the domain matrix is symmetric, six values suffice to fully
|
---|
| 1456 | specify it. We have to give the six components of the lower diagonal
|
---|
| 1457 | matrix. Here, we change the box to a cuboid of equal edge length of
|
---|
| 1458 | 20.</para>
|
---|
| 1459 | </section>
|
---|
| 1460 |
|
---|
[9bce96] | 1461 | <section xml:id='domain.bound-in-box'>
|
---|
| 1462 | <title xml:id='domain.bound-in-box.title'>Bound atoms inside box
|
---|
| 1463 | </title>
|
---|
[6029a6] | 1464 |
|
---|
| 1465 | <para>The following applies the current boundary conditions to the
|
---|
| 1466 | atoms. In case of periodic or wrapped boundary conditions the atoms
|
---|
| 1467 | will be periodically translated to be inside the domain
|
---|
| 1468 | again.</para>
|
---|
| 1469 |
|
---|
| 1470 | <programlisting>... --bound-in-box</programlisting>
|
---|
| 1471 | </section>
|
---|
| 1472 |
|
---|
[9bce96] | 1473 | <section xml:id='domain.center-in-box'>
|
---|
| 1474 | <title xml:id='domain.center-in-box.title'>Center atoms inside the
|
---|
| 1475 | domain</title>
|
---|
[6029a6] | 1476 |
|
---|
| 1477 | <para>This is a combination of changing the box and bounding the
|
---|
| 1478 | atoms inside it.</para>
|
---|
| 1479 |
|
---|
| 1480 | <programlisting>... --center-in-box "20,0,20,0,0,"</programlisting>
|
---|
| 1481 | </section>
|
---|
| 1482 |
|
---|
[9bce96] | 1483 | <section xml:id='domain.center-edge'>
|
---|
| 1484 | <title xml:id='domain.center-edge.title'>Center the atoms at an
|
---|
| 1485 | edge</title>
|
---|
[6029a6] | 1486 |
|
---|
| 1487 | <para>MoleCuilder can calculate the minimum box (parallel to the
|
---|
| 1488 | cardinal axis) all atoms would fit in and translate all atoms in
|
---|
| 1489 | such a way that the lower, left, front edge of this minimum is at
|
---|
| 1490 | the origin (0,0,0).</para>
|
---|
| 1491 |
|
---|
| 1492 | <programlisting>... --center-edge</programlisting>
|
---|
| 1493 | </section>
|
---|
| 1494 |
|
---|
[9bce96] | 1495 | <section xml:id='domain.add-empty-boundary'>
|
---|
| 1496 | <title xml:id='domain.add-empty-boundary.title'>Extending the
|
---|
| 1497 | boundary by adding an empty boundary</title>
|
---|
[6029a6] | 1498 |
|
---|
| 1499 | <para>In the same manner as above a minimum box is determined that
|
---|
| 1500 | is subsequently expanded by a boundary of the given additional
|
---|
| 1501 | thickness. This applies to either side.</para>
|
---|
| 1502 |
|
---|
| 1503 | <programlisting>... --add-empty-boundary "5,5,5"</programlisting>
|
---|
| 1504 |
|
---|
| 1505 | <para>This will enlarge the box in such a way that every atom is at
|
---|
| 1506 | least by a distance of 5 away from the boundary of the domain (in
|
---|
| 1507 | the infinity norm).</para>
|
---|
| 1508 | </section>
|
---|
| 1509 |
|
---|
[9bce96] | 1510 | <section xml:id='domain.scale-box'>
|
---|
| 1511 | <title xml:id='domain.scale-box.title'>Scaling the box</title>
|
---|
[6029a6] | 1512 |
|
---|
| 1513 | <para>You can enlarge the domain by simple scaling factors.</para>
|
---|
| 1514 |
|
---|
| 1515 | <programlisting>... --scale-box "1,1,2.5"</programlisting>
|
---|
| 1516 |
|
---|
| 1517 | <para>Here, the domain is stretched in the z direction by a factor
|
---|
| 1518 | of 2.5.</para>
|
---|
| 1519 | </section>
|
---|
| 1520 |
|
---|
[9bce96] | 1521 | <section xml:id='domain.repeat-box'>
|
---|
| 1522 | <title xml:id='domain.repeat-box.title'>Repeating the box</title>
|
---|
[6029a6] | 1523 |
|
---|
| 1524 | <para>Under periodic boundary conditions often only the minimal
|
---|
| 1525 | periodic cell is stored. If need be, multiple images can be easily
|
---|
| 1526 | added to the current state of the system by repeating the box, i.e.
|
---|
| 1527 | the box along with all contained atoms is copied and placed
|
---|
| 1528 | adjacently.</para>
|
---|
| 1529 |
|
---|
| 1530 | <programlisting>... --repeat-box "1,2,2"</programlisting>
|
---|
| 1531 |
|
---|
| 1532 | <para>This will create a 2x2 grid of the current domain, replicating
|
---|
| 1533 | it along the y and z direction along with all atoms. If the domain
|
---|
| 1534 | contained before a single water molecule, we will now have four of
|
---|
| 1535 | them.</para>
|
---|
| 1536 | </section>
|
---|
[f73e06] | 1537 |
|
---|
[9bce96] | 1538 | <section xml:id='domain.set-boundary-conditions'>
|
---|
| 1539 | <title xml:id='domain.set-boundary-conditions.title'>Change the
|
---|
| 1540 | boundary conditions</title>
|
---|
[f73e06] | 1541 |
|
---|
| 1542 | <para>Various boundary conditions can be applied that affect how
|
---|
| 1543 | certain Actions work, e.g. translate-atoms. We briefly give a list
|
---|
| 1544 | of all possible conditions:</para>
|
---|
| 1545 | <itemizedlist>
|
---|
| 1546 | <listitem>
|
---|
| 1547 | <para>Wrap</para>
|
---|
| 1548 | <para>Coordinates are wrapped to the other side of the domain,
|
---|
| 1549 | i.e. periodic boundary conditions.</para>
|
---|
| 1550 | </listitem>
|
---|
| 1551 | <listitem>
|
---|
| 1552 | <para>Bounce</para>
|
---|
| 1553 | <para>Coordinates are bounced back into the domain, i.e. they
|
---|
| 1554 | are reflected from the domain walls.</para>
|
---|
| 1555 | </listitem>
|
---|
| 1556 | <listitem>
|
---|
| 1557 | <para>Ignore</para>
|
---|
| 1558 | <para>No boundary conditions apply.</para>
|
---|
| 1559 | </listitem>
|
---|
| 1560 | </itemizedlist>
|
---|
| 1561 |
|
---|
| 1562 | <para>The following will set the boundary conditions to periodic.
|
---|
| 1563 | </para>
|
---|
| 1564 |
|
---|
| 1565 | <programlisting>... --set-boundary-conditions "Wrap Wrap Wrap"
|
---|
| 1566 | </programlisting>
|
---|
| 1567 | </section>
|
---|
| 1568 | </section>
|
---|
| 1569 |
|
---|
[9bce96] | 1570 | <section xml:id='filling'>
|
---|
| 1571 | <title xml:id='filling.title'>Filling</title>
|
---|
[f73e06] | 1572 |
|
---|
| 1573 | <para>Filling a specific part of the domain with one type of
|
---|
| 1574 | molecule, e.g. a water molecule, is the more advanced type of
|
---|
| 1575 | copying of a molecule (see copy-molecule) and we need several
|
---|
| 1576 | ingredients.</para>
|
---|
| 1577 |
|
---|
| 1578 | <para>First, we need to specify the part of the domain. This is done
|
---|
| 1579 | via a shape. We have already learned how to create and select
|
---|
| 1580 | shapes. The currently selected shape will serve as the fill-in
|
---|
| 1581 | region.</para>
|
---|
| 1582 |
|
---|
| 1583 | <para>Then, they are three types of filling, domain, volume, and
|
---|
| 1584 | surface. The domain is filled with a regular grid of fill-in points.
|
---|
| 1585 | A volume and a surface are filled by a set of equidistant points
|
---|
| 1586 | distributed within the volume or on the surface of a selected
|
---|
| 1587 | shape. Molecules will then be copied and translated points when they
|
---|
| 1588 | "fit".</para>
|
---|
| 1589 |
|
---|
| 1590 | <para>The filler procedure checks each fill-in point whether there
|
---|
| 1591 | is enough space for the molecule. To know this, we require a cluster
|
---|
| 1592 | instead of a molecule. This is just a general agglomeration of atoms
|
---|
| 1593 | combined with a bounding box that contains all of them and serves as
|
---|
| 1594 | its minimal volume. I.e. we need this cluster. For this a number of
|
---|
| 1595 | atoms have to be specified, the minimum bounding box is generated
|
---|
| 1596 | automatically.</para>
|
---|
| 1597 |
|
---|
| 1598 | <para>On top of that molecules can be selected whose volume is
|
---|
| 1599 | additionally excluded from the filling region.</para>
|
---|
| 1600 |
|
---|
[9bce96] | 1601 | <section xml:id='filling.fill-regular-grid'>
|
---|
| 1602 | <title xml:id='filling.fill-regular-grid.title'>Fill the domain with
|
---|
| 1603 | molecules</title>
|
---|
[f73e06] | 1604 |
|
---|
| 1605 | <para>The call to fill the volume of the selected shape with the
|
---|
| 1606 | selected atoms is then as follows,</para>
|
---|
| 1607 |
|
---|
| 1608 | <programlisting>
|
---|
| 1609 | ... --fill-regular-grid \
|
---|
| 1610 | --mesh-size "5,5,5" \
|
---|
| 1611 | --mesh-offset ".5,.5,.5" \
|
---|
| 1612 | --DoRotate 1 \
|
---|
| 1613 | --min-distance 1. \
|
---|
| 1614 | --random-atom-displacement 0.05 \
|
---|
| 1615 | --random-molecule-displacement 0.4 \
|
---|
| 1616 | --tesselation-radius 2.5
|
---|
| 1617 | </programlisting>
|
---|
| 1618 |
|
---|
| 1619 | <para>This generates a grid of 5x5x5 fill-in points within the
|
---|
| 1620 | sphere that are offset such as to lay centered within the sphere
|
---|
| 1621 | (offset per axis in [0,1]). Additionally, each molecule is rotated
|
---|
| 1622 | by random rotation matrix, each atom is translated randomly by at
|
---|
| 1623 | most 0.05, each molecule's center at most by 0.4. The selected
|
---|
| 1624 | molecules' volume is obtained by tesselating their surface and
|
---|
| 1625 | excluding every fill-in point whose distance to this surface does
|
---|
[9bce96] | 1626 | not exceed 1. We refer to our comments in
|
---|
| 1627 | <link linkend="randomization">Randomization</link>for details on
|
---|
| 1628 | changing the randomness.</para>
|
---|
[f73e06] | 1629 | </section>
|
---|
| 1630 |
|
---|
[9bce96] | 1631 | <section xml:id='filling.fill-volume'>
|
---|
| 1632 | <title xml:id='filling.fill-volume.title'>Fill a shape's volume
|
---|
| 1633 | with molecules</title>
|
---|
[f73e06] | 1634 |
|
---|
| 1635 | <para>More specifically than filling the whole domain with molecules,
|
---|
| 1636 | maybe except areas where other molecules already are, we also can
|
---|
| 1637 | fill only specific parts by selecting a shape and calling upon
|
---|
| 1638 | the following action:</para>
|
---|
| 1639 |
|
---|
| 1640 | <programlisting>
|
---|
| 1641 | ... --fill-volume \
|
---|
| 1642 | --counts 12 \
|
---|
| 1643 | --min-distance 1. \
|
---|
| 1644 | --DoRotate 1 \
|
---|
| 1645 | --random-atom-displacement 0.05 \
|
---|
| 1646 | --random-molecule-displacement 0.4 \
|
---|
| 1647 | --tesselation-radius 2.5
|
---|
| 1648 | </programlisting>
|
---|
| 1649 | </section>
|
---|
| 1650 |
|
---|
[9bce96] | 1651 | <section xml:id='filling.fill-surface'>
|
---|
| 1652 | <title xml:id='filling.fill-surface.title'>Fill a shape's surface
|
---|
| 1653 | with molecules</title>
|
---|
[f73e06] | 1654 |
|
---|
| 1655 | <para>Filling a surface is very similar to filling its volume.
|
---|
| 1656 | Again the number of equidistant points has to be specified.
|
---|
| 1657 | However, randomness is constrained as the molecule is be aligned
|
---|
| 1658 | with the surface in a specific manner. The alignment axis refers
|
---|
| 1659 | to the largest principal axis of the filler molecule and will
|
---|
| 1660 | be aligned parallel to the surface normal at the fill-in point.
|
---|
| 1661 | </para>
|
---|
| 1662 |
|
---|
| 1663 | <para>The call below fill in 12 points with a minimum distance
|
---|
| 1664 | between the instances of 1 angstroem. We allow for certain random
|
---|
| 1665 | displacements and use the z-axis for aligning the molecules on
|
---|
| 1666 | the surface.</para>
|
---|
| 1667 |
|
---|
| 1668 | <programlisting>
|
---|
| 1669 | ... --fill-surface \
|
---|
| 1670 | --counts 12 \
|
---|
| 1671 | --min-distance 1. \
|
---|
| 1672 | --DoRotate 1 \
|
---|
| 1673 | --random-atom-displacement 0.05 \
|
---|
| 1674 | --random-molecule-displacement 0.4 \
|
---|
| 1675 | --Alignment-Axis "0,0,1"
|
---|
| 1676 | </programlisting>
|
---|
| 1677 | </section>
|
---|
| 1678 |
|
---|
[9bce96] | 1679 | <section xml:id='filling.suspend-in-molecule'>
|
---|
| 1680 | <title xml:id='filling.suspend-in-molecule.title'>Suspend in molecule
|
---|
| 1681 | </title>
|
---|
[f73e06] | 1682 |
|
---|
| 1683 | <para>Add a given molecule in the simulation domain in such a way
|
---|
| 1684 | that the total density is as desired.</para>
|
---|
| 1685 |
|
---|
| 1686 | <programlisting>
|
---|
| 1687 | ... --suspend-in-molecule 1.
|
---|
| 1688 | </programlisting>
|
---|
| 1689 | </section>
|
---|
| 1690 |
|
---|
[9bce96] | 1691 | <section xml:id='filling.fill-molecule'>
|
---|
| 1692 | <title xml:id='filling.fill-molecule.title'>Fill in molecule</title>
|
---|
[f73e06] | 1693 |
|
---|
| 1694 | <para>This action will be soon be removed.</para>
|
---|
| 1695 |
|
---|
| 1696 | <programlisting>
|
---|
| 1697 | ... --fill-molecule
|
---|
| 1698 | </programlisting>
|
---|
| 1699 | </section>
|
---|
| 1700 |
|
---|
[9bce96] | 1701 | <section xml:id='filling.fill-void'>
|
---|
| 1702 | <title xml:id='filling.fill-void.title'>Fill void with molecule
|
---|
| 1703 | </title>
|
---|
[f73e06] | 1704 |
|
---|
| 1705 | <para>This action will be soon be removed.</para>
|
---|
| 1706 |
|
---|
| 1707 | <programlisting>
|
---|
| 1708 | ... --fill-void
|
---|
| 1709 | </programlisting>
|
---|
| 1710 | </section>
|
---|
| 1711 | </section>
|
---|
| 1712 |
|
---|
[9bce96] | 1713 | <section xml:id='analysis'>
|
---|
| 1714 | <title xml:id='analysis.title'>Analysis</title>
|
---|
[f73e06] | 1715 |
|
---|
| 1716 | <para></para>
|
---|
| 1717 |
|
---|
[9bce96] | 1718 | <section xml:id='analysis.pair-correlation'>
|
---|
| 1719 | <title xml:id='analysis.pair-correlation.title'>Pair Correlation
|
---|
| 1720 | </title>
|
---|
[f73e06] | 1721 |
|
---|
| 1722 | <para>Pair correlation checks for two given elements on the typical
|
---|
| 1723 | distance they can be found with respect to one another. E.g. for
|
---|
| 1724 | water one might be interested what is the typical distance for
|
---|
| 1725 | hydrogen and oxygen atoms.</para>
|
---|
| 1726 |
|
---|
| 1727 | <programlisting>
|
---|
| 1728 | ... --pair-correlation \
|
---|
| 1729 | --elements 1 8 \
|
---|
| 1730 | --bin-start 0 \
|
---|
| 1731 | --bin-width 0.7 \
|
---|
| 1732 | --bin-end 10 \
|
---|
| 1733 | --output-file histogram.dat \
|
---|
| 1734 | --bin-output-file bins.dat \
|
---|
| 1735 | --periodic 0
|
---|
| 1736 | </programlisting>
|
---|
| 1737 |
|
---|
| 1738 | <para>This will compile a histogram for the interval [0,10] in steps
|
---|
| 1739 | of 0.7 and increment a specific bin if the distance of one such pair
|
---|
| 1740 | of a hydrogen and an oxygen atom can be found within its distance
|
---|
| 1741 | interval.</para>
|
---|
| 1742 | </section>
|
---|
| 1743 |
|
---|
[9bce96] | 1744 | <section xml:id='analysis.dipole-correlation'>
|
---|
| 1745 | <title xml:id='analysis.dipole-correlation.title'>Dipole Correlation
|
---|
| 1746 | </title>
|
---|
[f73e06] | 1747 |
|
---|
| 1748 | <para>The dipole correlation is similar to the pair correlation, only
|
---|
| 1749 | that it correlates the orientation of dipoles in the molecular
|
---|
| 1750 | system with one another.</para>
|
---|
| 1751 | <para>Note that the dipole correlation works on the currently
|
---|
| 1752 | selected molecules, e.g. all water molecules if so selected.</para>
|
---|
| 1753 |
|
---|
| 1754 | <programlisting>
|
---|
| 1755 | ... --dipole-correlation \
|
---|
| 1756 | --bin-start 0 \
|
---|
| 1757 | --bin-width 0.7 \
|
---|
| 1758 | --bin-end 10 \
|
---|
| 1759 | --output-file histogram.dat \
|
---|
| 1760 | --bin-output-file bins.dat \
|
---|
| 1761 | --periodic 0
|
---|
| 1762 | </programlisting>
|
---|
| 1763 | </section>
|
---|
| 1764 |
|
---|
[9bce96] | 1765 | <section xml:id='analysis.dipole-angular-correlation'>
|
---|
| 1766 | <title xml:id='analysis.dipole-angular-correlation.title'>Dipole
|
---|
| 1767 | Angular Correlation</title>
|
---|
[f73e06] | 1768 |
|
---|
| 1769 | <para>The dipole angular correlation looks at the angles of a
|
---|
| 1770 | dipole over time. It takes the orientation of a certain time step
|
---|
| 1771 | as the zero angle and bins all other orientations found in later
|
---|
| 1772 | time steps relative to it.
|
---|
| 1773 | </para>
|
---|
| 1774 | <para>Note that in contrast to the dipole correlation the dipole
|
---|
| 1775 | angular correlation works on the molecules determined by a formula.
|
---|
| 1776 | This is because selections do not work over time steps as molecules
|
---|
| 1777 | might change.
|
---|
| 1778 | </para>
|
---|
| 1779 |
|
---|
| 1780 | <programlisting>
|
---|
| 1781 | ... --dipole-angular-correlation H2O \
|
---|
| 1782 | --bin-start 0 \
|
---|
| 1783 | --bin-width 5 \
|
---|
| 1784 | --bin-end 360 \
|
---|
| 1785 | --output-file histogram.dat \
|
---|
| 1786 | --bin-output-file bins.dat \
|
---|
| 1787 | --periodic 0 \
|
---|
| 1788 | --time-step-zero 0
|
---|
| 1789 | </programlisting>
|
---|
| 1790 | </section>
|
---|
| 1791 |
|
---|
[9bce96] | 1792 | <section xml:id='analysis.point-correlation'>
|
---|
| 1793 | <title xml:id='analysis.point-correlation.title'>Point Correlation
|
---|
| 1794 | </title>
|
---|
[f73e06] | 1795 |
|
---|
| 1796 | <para>Point correlation is very similar to pair correlation, only
|
---|
| 1797 | that it correlates not positions of atoms among one another but
|
---|
| 1798 | against a fixed, given point.</para>
|
---|
| 1799 |
|
---|
| 1800 | <programlisting>
|
---|
| 1801 | ... --point-correlation \
|
---|
| 1802 | --elements 1 8 \
|
---|
| 1803 | --position "0,0,0" \
|
---|
| 1804 | --bin-start 0 \
|
---|
| 1805 | --bin-width 0.7 \
|
---|
| 1806 | --bin-end 10 \
|
---|
| 1807 | --output-file histogram.dat \
|
---|
| 1808 | --bin-output-file bins.dat \
|
---|
| 1809 | --periodic 0
|
---|
| 1810 | </programlisting>
|
---|
| 1811 |
|
---|
| 1812 | <para>This would calculate the correlation of all hydrogen and
|
---|
| 1813 | oxygen atoms with respect to the origin.</para>
|
---|
| 1814 | </section>
|
---|
| 1815 |
|
---|
[9bce96] | 1816 | <section xml:id='analysis.surface-correlation'>
|
---|
| 1817 | <title xml:id='analysis.surface-correlation.title'>Surface
|
---|
| 1818 | Correlation</title>
|
---|
[f73e06] | 1819 |
|
---|
| 1820 | <para>The surface correlation calculates the distance of a set
|
---|
| 1821 | of atoms with respect to a tesselated surface.</para>
|
---|
| 1822 |
|
---|
| 1823 | <programlisting>
|
---|
| 1824 | ... --surface-correlation \
|
---|
| 1825 | --elements 1 8 \
|
---|
| 1826 | --bin-start 0 \
|
---|
| 1827 | --bin-width 0.7 \
|
---|
| 1828 | --bin-end 10 \
|
---|
| 1829 | --output-file histogram.dat \
|
---|
| 1830 | --bin-output-file bins.dat \
|
---|
| 1831 | --periodic 0
|
---|
| 1832 | </programlisting>
|
---|
| 1833 | </section>
|
---|
| 1834 |
|
---|
[f4b626a] | 1835 | <section xml:id='analysis.molecular-volume'>
|
---|
| 1836 | <title xml:id='analysis.molecular-volume.title'>Molecular Volume
|
---|
[9bce96] | 1837 | </title>
|
---|
[f73e06] | 1838 |
|
---|
| 1839 | <para>This simply calculates the volume that a selected molecule
|
---|
| 1840 | occupies. For this the molecular surface is determined via a
|
---|
| 1841 | tesselation. Note that this surface is minimal is that aspect
|
---|
| 1842 | that each node of the tesselation consists of an atom of the
|
---|
| 1843 | molecule.</para>
|
---|
| 1844 |
|
---|
| 1845 | <programlisting>... --molecular-volume</programlisting>
|
---|
| 1846 | </section>
|
---|
| 1847 |
|
---|
[f4b626a] | 1848 | <section xml:id='analysis.average-molecule-force'>
|
---|
| 1849 | <title xml:id='analysis.average-molecule-forcetitle'>Average force
|
---|
| 1850 | acting on a molecule</title>
|
---|
| 1851 |
|
---|
| 1852 | <para>This sums up all the forces of each atom of a currently
|
---|
| 1853 | selected molecule and returns the average force vector. This should
|
---|
| 1854 | give you the general direction of acceleration of the molecule.
|
---|
| 1855 | </para>
|
---|
| 1856 |
|
---|
| 1857 | <programlisting>... --molecular-volume</programlisting>
|
---|
| 1858 | </section>
|
---|
| 1859 |
|
---|
[6029a6] | 1860 | </section>
|
---|
| 1861 |
|
---|
[9bce96] | 1862 | <section xml:id='fragmentation'>
|
---|
| 1863 | <title xml:id='fragmentation.title'>Fragmentation</title>
|
---|
[6029a6] | 1864 |
|
---|
| 1865 | <para>Fragmentation refers to a so-called linear-scaling method called
|
---|
| 1866 | "Bond-Order diSSection in an ANOVA-like fashion" (BOSSANOVA),
|
---|
| 1867 | developed by <personname>Frederik Heber</personname>. In this section
|
---|
| 1868 | we briefly explain what the method does and how the associated actions
|
---|
| 1869 | work.</para>
|
---|
| 1870 |
|
---|
| 1871 | <para>The central idea behind the BOSSANOVA scheme is to fragment the
|
---|
| 1872 | graph of the molecular system into connected subgraphs of a certain
|
---|
| 1873 | number of vertices (atoms). To give an example, loading a ethane atom
|
---|
| 1874 | with the chemical formula C2H6, fragmenting the molecule up to order 1
|
---|
| 1875 | means creating two fragments, both methane-like from either carbon
|
---|
| 1876 | atom including surrounding hydrogen atoms. Fragmenting up to order 2
|
---|
| 1877 | would return both the methane fragments and additionally the full
|
---|
| 1878 | ethane molecule as it resembles a fragment of order 2, namely
|
---|
| 1879 | containing two (non-hydrogen) atoms.</para>
|
---|
| 1880 |
|
---|
| 1881 | <para>The reason for doing this is that usual ab-initio calculations
|
---|
| 1882 | of molecular systems via methods such as Density Functional Theory or
|
---|
| 1883 | Hartree-Fock scale at least as <inlineequation>
|
---|
| 1884 | <m:math display="inline">
|
---|
| 1885 | <m:mi>{\cal O}(M^3}</m:mi>
|
---|
| 1886 | </m:math>
|
---|
| 1887 | </inlineequation>with the number of atoms <inlineequation>
|
---|
| 1888 | <m:math display="inline">
|
---|
| 1889 | <m:mi>M</m:mi>
|
---|
| 1890 | </m:math>
|
---|
| 1891 | </inlineequation>. Hence, calculating the ground state energy of a
|
---|
| 1892 | number of fragment molecules scaling linearly with the number of atoms
|
---|
| 1893 | yields a linear-scaling methods. In the doctoral thesis of Frederik
|
---|
| 1894 | Heber, it is explained why this is a sensible ansatz mathematically
|
---|
| 1895 | and shown that it delivers a very good accuracy if electrons (and
|
---|
| 1896 | hence interactions) are in general localized.</para>
|
---|
| 1897 |
|
---|
| 1898 | <para>Long-range interactions are artificially truncated, however,
|
---|
| 1899 | with this fragment ansatz. It can be obtained in a perturbation manner
|
---|
| 1900 | by sampling the resulting electronic and nuclei charge density on a
|
---|
| 1901 | grid, summing over all fragments, and solving the associated Poisson
|
---|
| 1902 | equation. Such a calculation is implemented via the solver
|
---|
| 1903 | <productname>vmg</productname> by Julian Iseringhausen that is
|
---|
[f73e06] | 1904 | contained in the <link xlink:href="http://www.scafacos.org/">
|
---|
| 1905 | <productname>ScaFaCoS</productname></link>.</para>
|
---|
[6029a6] | 1906 |
|
---|
| 1907 | <para>Note that we treat hydrogen special (but can be switched off) as
|
---|
| 1908 | fragments are calculated as closed shell (total spin equals zero).
|
---|
| 1909 | Also, we use hydrogen to saturate any dangling bonds that occur as
|
---|
| 1910 | bonds are cut when fragmenting a molecule (this, too, can be switched
|
---|
| 1911 | off).</para>
|
---|
| 1912 |
|
---|
[9bce96] | 1913 | <section xml:id='fragmentation.fragment-molecule'>
|
---|
| 1914 | <title xml:id='fragmentation.fragment-molecule.title'>Fragmenting a
|
---|
| 1915 | molecular system</title>
|
---|
[6029a6] | 1916 |
|
---|
| 1917 | <para>For the current selection of atoms, all fragments consisting
|
---|
| 1918 | of these (sub)set of atoms are created in the following
|
---|
| 1919 | manner.</para>
|
---|
| 1920 |
|
---|
| 1921 | <programlisting>
|
---|
| 1922 | ... --fragment-molecule "BondFragment" \
|
---|
| 1923 | --DoCyclesFull 1 \
|
---|
| 1924 | --distance 3. \
|
---|
| 1925 | --order 3 \
|
---|
| 1926 | --grid-level 5 \
|
---|
| 1927 | --output-types xyz mpqc
|
---|
| 1928 | </programlisting>
|
---|
| 1929 |
|
---|
| 1930 | <para>We go through each of the options one after the other. During
|
---|
| 1931 | fragmentation some files are created storing state information, i.e.
|
---|
| 1932 | the vertex/atom indices per fragment and so on. These files all need
|
---|
| 1933 | a common prefix, here "BondFragment". Then, we specify that cycles
|
---|
| 1934 | should be treated fully. This compensates for electrons in aromatic
|
---|
| 1935 | rings being delocalized over the ring. If cycles in the graph,
|
---|
| 1936 | originating from aromatic rings, are always calculated fully, i.e.
|
---|
| 1937 | the whole ring becomes a fragment, we partially overcome these
|
---|
| 1938 | issues. This does however not work indefinitely and accuracy of the
|
---|
| 1939 | approximation is limited (<inlineequation>
|
---|
| 1940 | <m:math display="inline">
|
---|
| 1941 | <m:mi>>10^{-4}</m:mi>
|
---|
| 1942 | </m:math>
|
---|
| 1943 | </inlineequation>) in systems with many interconnected aromatic
|
---|
| 1944 | rings, such as graphene. Next, we give a distance cutoff of 3 used
|
---|
| 1945 | in bond graph creation. Then, we specify the maximum order, i.e. the
|
---|
| 1946 | maximum number of (non-hydrogen) atoms per fragment, here 3. The
|
---|
| 1947 | higher this number the more expensive the calculation becomes
|
---|
| 1948 | (because substantially more fragments are created) but also the more
|
---|
| 1949 | accurate. The grid level refers to the part where long-range Coulomb
|
---|
| 1950 | interactions are calculated. This is done via solving the associated
|
---|
| 1951 | Poisson equation with a multigrid solver. As input the solver
|
---|
| 1952 | requires the density which is sampled on a cartesian grid whose
|
---|
| 1953 | resolution these parameter defines (<inlineequation>
|
---|
| 1954 | <m:math display="inline">
|
---|
| 1955 | <m:mi>2^{\mathrm{level}}</m:mi>
|
---|
| 1956 | </m:math>
|
---|
| 1957 | </inlineequation>). And finally, we give the output file formats,
|
---|
| 1958 | i.e. which file formats are used for writing each fragment
|
---|
| 1959 | configuration (prefix is "BondFragment", remember?). Here, we use
|
---|
| 1960 | XYZ (mainly for checking the configurations visually) and MPQC,
|
---|
| 1961 | which is a very robust Hartree-Fock solver. We refer to the
|
---|
[9bce96] | 1962 | discussion of the <link linkend="fileparsers">Parsers</link> above
|
---|
| 1963 | on how to change the parameters of the ab-initio calculation.</para>
|
---|
[6029a6] | 1964 |
|
---|
| 1965 | <para>After having written all fragment configuration files, you
|
---|
| 1966 | need to calculate each fragment, grab the resulting energy (and
|
---|
| 1967 | force vectors) and place them into a result file manually. This at
|
---|
| 1968 | least is necessary if you have specified output-types above. If not,
|
---|
| 1969 | the fragments are not written to file but stored internally. Read
|
---|
| 1970 | on.</para>
|
---|
| 1971 | </section>
|
---|
| 1972 |
|
---|
[9bce96] | 1973 | <section xml:id='fragmentation.fragment-automation'>
|
---|
| 1974 | <title xml:id='fragmentation.fragment-automation.title'>Calculating
|
---|
| 1975 | fragment energies automatically</title>
|
---|
[6029a6] | 1976 |
|
---|
| 1977 | <para>Another way of doing this is enabled if you have
|
---|
| 1978 | <productname>JobMarket</productname> package. JobMarket implements a
|
---|
| 1979 | client/server ansatz, i.e. two (or more) independent programs are
|
---|
| 1980 | running (even on another computer but connected via an IP network),
|
---|
| 1981 | namely a server and at least one client. The server receives
|
---|
| 1982 | fragment configurations from MoleCuilder and assigns these to a
|
---|
| 1983 | client who is not busy. The client launches an executable that is
|
---|
| 1984 | specified in the work package he is assigned and gathers after
|
---|
| 1985 | calculation a number of values, samewise specified in the package.
|
---|
| 1986 | The results are gathered together by the server and can be requested
|
---|
| 1987 | from MoleCuilder once they are done. This essentially describe what
|
---|
| 1988 | is happening during the execution of this action.</para>
|
---|
| 1989 |
|
---|
| 1990 | <para>Stored fragment jobs can also be parsed again, i.e. reversing
|
---|
| 1991 | the effect of having output-types specified in <link
|
---|
[9bce96] | 1992 | linkend="fragmentation.fragment-molecule">Fragmenting a molecule
|
---|
| 1993 | </link>.</para>
|
---|
[6029a6] | 1994 |
|
---|
| 1995 | <programlisting>
|
---|
| 1996 | ... --parse-fragment-jobs \
|
---|
| 1997 | --fragment-jobs "BondFragment00.in" "BondFragment01.in" \
|
---|
| 1998 | --fragment-path "./" \
|
---|
| 1999 | --grid-level 5
|
---|
| 2000 | </programlisting>
|
---|
| 2001 |
|
---|
| 2002 | <para>Here, we have specified two files, namely
|
---|
| 2003 | <filename>BondFragment00.in</filename> and
|
---|
| 2004 | <filename>BondFragment01.in</filename>, to be parsed from the path
|
---|
| 2005 | "./", i.e. the current directory. Also, we have specified to sample
|
---|
| 2006 | the electronic charge density obtained from the calculated ground
|
---|
| 2007 | state energy solution with a resolution of 5 (see fragment molecule
|
---|
| 2008 | and also below).</para>
|
---|
| 2009 |
|
---|
| 2010 | <para>This allows for automated and parallel calculation of all
|
---|
| 2011 | fragment energies and forces directly within MoleCuilder. The
|
---|
| 2012 | FragmentationAutomation action takes the fragment configurations
|
---|
| 2013 | from an internal storage wherein they are placed if in
|
---|
| 2014 | FragmentMolecule no output-types have been specified.</para>
|
---|
| 2015 |
|
---|
| 2016 | <programlisting>
|
---|
| 2017 | ... --fragment-automation \
|
---|
| 2018 | --fragment-executable mpqc \
|
---|
| 2019 | --fragment-resultfile BondFragment_results.dat \
|
---|
| 2020 | --DoLongrange 1 \
|
---|
| 2021 | --DoValenceOnly 1 \
|
---|
| 2022 | --grid-level 5 \
|
---|
| 2023 | --interpolation-degree 3 \
|
---|
| 2024 | --near-field-cells 4 \
|
---|
| 2025 | --server-address 127.0.0.1 \
|
---|
| 2026 | --server-port 1025
|
---|
| 2027 | </programlisting>
|
---|
| 2028 |
|
---|
| 2029 | <para>Again, we go through each of the action's options step by
|
---|
| 2030 | step.</para>
|
---|
| 2031 |
|
---|
| 2032 | <para>The executable is required if you do not have a patched
|
---|
| 2033 | version of <productname>MPQC</productname> that may directly act as
|
---|
| 2034 | a client to JobMarket's server. All calculated results are placed in
|
---|
| 2035 | the result file. If none is given, they are instead again placed in
|
---|
| 2036 | an internal storage for later access.</para>
|
---|
| 2037 |
|
---|
| 2038 | <note>
|
---|
| 2039 | <para>Long-calculations are only possible with a client that knows
|
---|
| 2040 | how to handle VMG jobs. If you encounter failures, then it is most
|
---|
| 2041 | likely that you do not have a suitable client.</para>
|
---|
| 2042 | </note>
|
---|
| 2043 |
|
---|
| 2044 | <para>In the next line, we have all options related to calculation
|
---|
| 2045 | of long-range interactions. We only sample valence charges on the
|
---|
| 2046 | grid, i.e. not core electrons and the nuclei charge is reduces
|
---|
| 2047 | respectively. This avoids problems with sampling highly localized
|
---|
| 2048 | charges on the grid and is in general recommended. Next, there
|
---|
| 2049 | follow parameters for the multi grid solver, namely the resolution
|
---|
| 2050 | of the grid, see under fragmenting the molecule, the interpolation
|
---|
| 2051 | degree and the number of near field cells. A grid level of 6 is
|
---|
| 2052 | recommended but costly in terms of memory, the other values are at
|
---|
| 2053 | their recommend values.</para>
|
---|
| 2054 |
|
---|
| 2055 | <para>In the last line, parameters are given on how to access the
|
---|
| 2056 | JobMarket server, namely it address and its port.</para>
|
---|
| 2057 | </section>
|
---|
| 2058 |
|
---|
[9bce96] | 2059 | <section xml:id='fragmentation.analyse-fragment-results'>
|
---|
| 2060 | <title xml:id='fragmentation.analyse-fragment-results.title'>
|
---|
| 2061 | Analyse fragment results</title>
|
---|
[6029a6] | 2062 |
|
---|
| 2063 | <para>After the energies and force vectors of each fragment have
|
---|
| 2064 | been calculated, they need to be summed up to an approximation for
|
---|
| 2065 | the energy and force vectors of the whole molecular system. This is
|
---|
| 2066 | done by calling this action.</para>
|
---|
| 2067 |
|
---|
| 2068 | <programlisting>
|
---|
| 2069 | ... --analyse-fragment-results \
|
---|
| 2070 | --fragment-prefix "BondFragment" \
|
---|
| 2071 | --fragment-resultfile BondFragment_results.dat \
|
---|
| 2072 | --store-grids 1
|
---|
| 2073 | </programlisting>
|
---|
| 2074 |
|
---|
| 2075 | <para>The purpose of the prefix should already be known to you, same
|
---|
| 2076 | with the result file that is the file parsed by MoleCuilder. The
|
---|
| 2077 | last option states that the sampled charge densities and the
|
---|
| 2078 | calculated potential from the long-range calculations should be
|
---|
| 2079 | stored with the summed up energies and forces. Note that this makes
|
---|
| 2080 | the resulting files substantially larger (Hundreds of megabyte or
|
---|
| 2081 | even gigabytes). Fragment energies and forces are stored in
|
---|
| 2082 | so-called internal homology containers. These are explained in the
|
---|
| 2083 | next section.</para>
|
---|
| 2084 |
|
---|
| 2085 | <para>Note that this action sets the force vector if these have been
|
---|
[9bce96] | 2086 | calculated for the fragment. Hence, a
|
---|
| 2087 | <link linkend="molecule.verlet-integration">verlet integration</link>
|
---|
| 2088 | is possible afterwards.</para>
|
---|
[6029a6] | 2089 | </section>
|
---|
[f73e06] | 2090 |
|
---|
[9bce96] | 2091 | <section xml:id='fragmentation.store-saturated-fragment'>
|
---|
| 2092 | <title xml:id='fragmentation.store-saturated-fragment.title'>Store
|
---|
| 2093 | a saturated fragment</title>
|
---|
[f73e06] | 2094 |
|
---|
| 2095 | <para>After the energies and force vectors of each fragment have
|
---|
| 2096 | been calculated, they need to be summed up to an approximation for
|
---|
| 2097 | the energy and force vectors of the whole molecular system. This is
|
---|
| 2098 | done by calling this action.</para>
|
---|
| 2099 |
|
---|
| 2100 | <para>This will store the currently selected atoms as a fragment
|
---|
| 2101 | where all dangling bonds (by atoms that are connected in the bond
|
---|
| 2102 | graph but have not been selected as well) are saturated with
|
---|
| 2103 | additional hydrogen atoms. The output formats are set to just xyz.
|
---|
| 2104 | </para>
|
---|
| 2105 |
|
---|
| 2106 | <programlisting>
|
---|
| 2107 | ... --store-saturated-fragment \
|
---|
| 2108 | --DoSaturate 1 \
|
---|
| 2109 | --output-types xyz
|
---|
| 2110 | </programlisting>
|
---|
| 2111 | </section>
|
---|
[6029a6] | 2112 | </section>
|
---|
| 2113 |
|
---|
[9bce96] | 2114 | <section xml:id='homology'>
|
---|
| 2115 | <title xml:id='homology.title'>Homologies</title>
|
---|
[6029a6] | 2116 |
|
---|
| 2117 | <para>After a fragmentation procedure has been performed fully, what
|
---|
| 2118 | to do with the results? The forces can be used already but what about
|
---|
| 2119 | the energies? The energy value is basically the function evaluation of
|
---|
| 2120 | the Born-Oppenheimer surface. For molecular dynamics simulations
|
---|
| 2121 | continuous ab-initio calculations to evaluate the Born-Oppenheimer
|
---|
| 2122 | surface is not feasible. Instead usually empirical potential functions
|
---|
| 2123 | are fitted as to resemble the Born-Oppenheimer surface to a sufficient
|
---|
| 2124 | degree.</para>
|
---|
| 2125 |
|
---|
| 2126 | <para>One frequent method is the many-body expansion of said surface
|
---|
| 2127 | which is basically nothing else than the fragment ansatz described
|
---|
| 2128 | above. Potential functions resemble a specific term in this many-body
|
---|
| 2129 | expansion. These are discussed in the next section.</para>
|
---|
| 2130 |
|
---|
| 2131 | <para>For each of these terms all homologous fragments (i.e. having
|
---|
| 2132 | the same atoms with respect to the present elements and bonded in the
|
---|
| 2133 | same way), differing only in the coordinate of each atom, are just a
|
---|
| 2134 | sampling or a function evaluation of this term of the many-body
|
---|
| 2135 | expansion with respect to varying nuclei coordinates. Hence, it is
|
---|
| 2136 | appropriate to use these function evaluations in a non-linear
|
---|
| 2137 | regression procedure. That is, we want to tune the parameter of the
|
---|
| 2138 | empirical potential function in such a way as to most closely obtain
|
---|
| 2139 | the same function evaluation as the ab-initio calculation did with the
|
---|
| 2140 | same nuclear coordinates. Usually, this is done in a least-square
|
---|
| 2141 | sense, minimising the euclidean norm.</para>
|
---|
| 2142 |
|
---|
| 2143 | <para>Homologies are then nothing else but containers for a specific
|
---|
| 2144 | type of fragment of all the different, calculated configurations (i.e.
|
---|
| 2145 | varying nuclear coordinates of the same fragment).</para>
|
---|
| 2146 |
|
---|
| 2147 | <para>Now, we explain the actions that parse and store
|
---|
| 2148 | homologies.</para>
|
---|
| 2149 |
|
---|
| 2150 | <programlisting>... --parse-homologies homologies.dat</programlisting>
|
---|
| 2151 |
|
---|
| 2152 | <para>This parses the all homologies contained in the file
|
---|
| 2153 | <filename>homologies.dat</filename> and appends them to the homology
|
---|
| 2154 | container.</para>
|
---|
| 2155 |
|
---|
[f73e06] | 2156 | <programlisting>... --save-homologies homologies.dat</programlisting>
|
---|
[6029a6] | 2157 |
|
---|
| 2158 | <para>Complementary, this stores the current contents of the homology
|
---|
| 2159 | container, overwriting the file
|
---|
| 2160 | <filename>homologies.dat</filename>.</para>
|
---|
| 2161 | </section>
|
---|
| 2162 |
|
---|
[9bce96] | 2163 | <section xml:id='potentials'>
|
---|
| 2164 | <title xml:id='potentials.title'>Potentials</title>
|
---|
[6029a6] | 2165 |
|
---|
| 2166 | <para>In much the same manner, we would now ask what are homology
|
---|
| 2167 | files or containers good for but with the just had explanation it
|
---|
| 2168 | should be clear: We fit potential function to these function
|
---|
| 2169 | evaluation of terms of the many-body expansion of the Born-Oppenheimer
|
---|
| 2170 | surface of the full system.</para>
|
---|
| 2171 |
|
---|
[9bce96] | 2172 | <section xml:id='potentials.fit-potential'>
|
---|
| 2173 | <title xml:id='potentials.fit-potential.title'>Fitting empirical
|
---|
| 2174 | potentials</title>
|
---|
[6029a6] | 2175 |
|
---|
| 2176 | <para>Let's take a look at an exemplary call to the fit potential
|
---|
| 2177 | action.</para>
|
---|
| 2178 |
|
---|
| 2179 | <programlisting>
|
---|
| 2180 | ... --fit-potential \
|
---|
| 2181 | --fragment-charges 8 1 1 \
|
---|
| 2182 | --potential-charges 8 1 \
|
---|
| 2183 | --potential-type morse \
|
---|
| 2184 | --take-best-of 5
|
---|
| 2185 | </programlisting>
|
---|
| 2186 |
|
---|
| 2187 | <para>Again, we look at each option in turn. The first is the
|
---|
| 2188 | charges or elements specifying the set of homologous fragments that
|
---|
| 2189 | we want to look at. Here, obviously we are interested in water
|
---|
| 2190 | molecules, consisting of a single oxygen and two hydrogen atoms.
|
---|
| 2191 | Next, we specify the nuclei coordinates of the potential. We give
|
---|
| 2192 | the type of the potential as morse, which requires a single distance
|
---|
| 2193 | or two nuclear coordinates, here between an oxygen and a hydrogen
|
---|
| 2194 | atom. Finally, we state that the non-linear regression should be
|
---|
| 2195 | done with five random starting positions and the set of parameters
|
---|
| 2196 | with the smallest L2 norm wins.</para>
|
---|
| 2197 |
|
---|
| 2198 | <note>
|
---|
| 2199 | <para>Due to translational and rotational degrees of freedom for
|
---|
| 2200 | fragments smaller than 7 atoms, it is appropriate to look at the
|
---|
| 2201 | pair-wise distances and not at the absolute coordinates. Hence,
|
---|
| 2202 | the two atomic positions, here for oxygen and hydrogen, are
|
---|
| 2203 | converted to a single distance. If we had given an harmonic
|
---|
| 2204 | angular potential and three charges/element, 8 1 1, i.e. oxygen
|
---|
| 2205 | and two hydrogens, we would have obtained three distances.</para>
|
---|
| 2206 |
|
---|
| 2207 | <para>MoleCuilder always adds a so-called constant potential to
|
---|
| 2208 | the fit containing only a single parameter, the energy offset.
|
---|
| 2209 | This offset compensates for the interaction energy associated with
|
---|
| 2210 | a fragment of order 1, e.g. a single hydrogen atom.</para>
|
---|
| 2211 | </note>
|
---|
[f1eabd] | 2212 | </section>
|
---|
| 2213 |
|
---|
| 2214 | <section xml:id='potentials.fit-compound-potential'>
|
---|
| 2215 | <title xml:id='potentials.fit-compound-potential.title'>Fitting
|
---|
| 2216 | many empirical potentials simultaneously</title>
|
---|
| 2217 |
|
---|
[6029a6] | 2218 |
|
---|
| 2219 | <para>Another way is using a file containing a specific set of
|
---|
| 2220 | potential functions, possibly even with initial values.</para>
|
---|
| 2221 |
|
---|
| 2222 | <programlisting>
|
---|
[98d166] | 2223 | ... --fit-compound-potential \
|
---|
[6029a6] | 2224 | --fragment-charges 8 1 1 \
|
---|
| 2225 | --potential-file water.potentials \
|
---|
| 2226 | --set-threshold 1e-3 \
|
---|
| 2227 | --training-file test.dat
|
---|
| 2228 | </programlisting>
|
---|
| 2229 |
|
---|
| 2230 | <para>Now, all empirical potential functions are summed up into a
|
---|
| 2231 | so-called compound potential over the combined set of parameters.
|
---|
| 2232 | These are now fitted simultaneously. For example, if the potential
|
---|
| 2233 | file <filename>water.potentials</filename> contains a harmonic bond
|
---|
| 2234 | potential between oxygen and hydrogen and another angular potential
|
---|
| 2235 | for the angle between hydrogen, oxygen, and hydrogen atom we would
|
---|
| 2236 | fit a still simple function approximating the energy of a single
|
---|
| 2237 | water molecule. Here, the threshold takes the place of the
|
---|
| 2238 | take-best-of option. Here, random starting parameters are used as
|
---|
| 2239 | long as the final L2 error is not below 1e-3. Also, all data used
|
---|
| 2240 | for training, i.e. the tuples consisting of the fragments nuclei
|
---|
| 2241 | coordinates and the associated energy value are written to the file
|
---|
| 2242 | <filename>test.dat</filename>. This allows for graphical or other
|
---|
| 2243 | type of analysis.</para>
|
---|
| 2244 |
|
---|
[98d166] | 2245 | <para>Note that you can combine the two ways, i.e. start with a
|
---|
| 2246 | fit-potential call but give an empty potential file. The resulting
|
---|
| 2247 | parameters are stored in it. Fit other potentials and give different
|
---|
| 2248 | file names for each in turn. Eventually, you have to combine the file
|
---|
| 2249 | in a text editor at the moment. And perform a fit-compound-potential
|
---|
| 2250 | with this file.</para>
|
---|
[6029a6] | 2251 | </section>
|
---|
| 2252 |
|
---|
[f1eabd] | 2253 |
|
---|
| 2254 | <section xml:id='potentials.parse-potential'>
|
---|
| 2255 | <title xml:id='potentials.parse-potential.title'>Parsing an
|
---|
| 2256 | empirical potentials file</title>
|
---|
| 2257 |
|
---|
| 2258 | <para>Responsible for the compound potential is every potential
|
---|
| 2259 | function whose signature matches with the designated fragment-charges
|
---|
| 2260 | and who is currently known to an internal instance called the
|
---|
| 2261 | PotentialRegistry.</para>
|
---|
| 2262 |
|
---|
| 2263 | <para>More potentials can be registered (fit-potential will also
|
---|
| 2264 | register the potential it fits) by parsing them from a file.</para>
|
---|
| 2265 |
|
---|
| 2266 | <programlisting>
|
---|
| 2267 | ... --parse-potentials water.potentials
|
---|
| 2268 | </programlisting>
|
---|
| 2269 |
|
---|
| 2270 | <note>Currently, only <productname>TREMOLO</productname> potential
|
---|
| 2271 | files are understood and can be parsed.</note>
|
---|
| 2272 | </section>
|
---|
| 2273 |
|
---|
[0ea063] | 2274 | <section xml:id='potentials.save-potential'>
|
---|
| 2275 | <title xml:id='potentials.save-potential.title'>Saving an
|
---|
| 2276 | empirical potentials file</title>
|
---|
| 2277 |
|
---|
| 2278 | <para>The opposite to parse-potentials is save-potentials that writes
|
---|
| 2279 | every potential currently known to the PotentialRegistry to the given
|
---|
| 2280 | file along with the currently fitted parameters</para>
|
---|
| 2281 |
|
---|
| 2282 | <programlisting>
|
---|
| 2283 | ... --save-potentials water.potentials
|
---|
| 2284 | </programlisting>
|
---|
| 2285 |
|
---|
| 2286 | <note>Again, only the <productname>TREMOLO</productname> potential
|
---|
| 2287 | format is understood currently and is written.</note>
|
---|
[6029a6] | 2288 | </section>
|
---|
| 2289 |
|
---|
[9bce96] | 2290 | <section xml:id='potentials.fit-particle-charges'>
|
---|
| 2291 | <title xml:id='potentials.fit-particle-charges.title'>Fitting
|
---|
| 2292 | particle charges</title>
|
---|
[6029a6] | 2293 |
|
---|
| 2294 | <para>The above empirical potential just model the short-range
|
---|
| 2295 | behavior in the molecular fragment, namely the bonded interaction.
|
---|
| 2296 | In order to model the long-range interaction as well without solving
|
---|
[f73e06] | 2297 | for the electronic ground state in each time step, particle charges
|
---|
[6029a6] | 2298 | are used that capture to some degree the created dipoles due to
|
---|
| 2299 | charge transfer from one atom to another when bonded.</para>
|
---|
| 2300 |
|
---|
| 2301 | <para>To allow least-squares regression of these partial charges we
|
---|
| 2302 | need the results of long-range calculations and the store-grids
|
---|
[9bce96] | 2303 | option (see above under <link linkend="fragmentation">Fragmentation
|
---|
| 2304 | </link>) must have been given. With these sampled charge density and
|
---|
| 2305 | Coulomb potential stored in the homology containers, we call this
|
---|
| 2306 | action as follows.</para>
|
---|
[6029a6] | 2307 |
|
---|
| 2308 | <programlisting>
|
---|
[f73e06] | 2309 | ... --fit-particle-charges \
|
---|
[6029a6] | 2310 | --fragment-charges 8 1 1 \
|
---|
| 2311 | --potential-file water.potentials \
|
---|
| 2312 | --radius 0.2
|
---|
| 2313 | </programlisting>
|
---|
| 2314 |
|
---|
| 2315 | <para>This will again use water molecule as homologous fragment
|
---|
| 2316 | "key" to request configurations from the container. Results are
|
---|
| 2317 | stored in <filename>water.potentials</filename>. The radius is used
|
---|
| 2318 | to mark the region directly around the nuclei from the fit
|
---|
| 2319 | procedure. As here the charges of the core electrons and the nuclei
|
---|
| 2320 | itself dominate, we however are only interested in a good
|
---|
| 2321 | approximation to the long-range potential, this mask radius allows
|
---|
| 2322 | to give the range of the excluded zone.</para>
|
---|
| 2323 | </section>
|
---|
| 2324 | </section>
|
---|
| 2325 |
|
---|
[9bce96] | 2326 | <section xml:id='dynamics'>
|
---|
| 2327 | <title xml:id='dynamics.title'>Dynamics</title>
|
---|
[f73e06] | 2328 |
|
---|
| 2329 | <para>For fitting potentials or charges we need many homologuous but
|
---|
| 2330 | different fragments, i.e. atoms with slightly different positions.
|
---|
| 2331 | How can we generate these?</para>
|
---|
| 2332 |
|
---|
| 2333 | <para>One possibility is to use molecular dynamics. With the
|
---|
| 2334 | aforementioned fragmentation scheme we can quickly calculate not only
|
---|
| 2335 | energies but also forces if the chosen solver, such as
|
---|
| 2336 | <link xlink:href="http://www.mpqc.org/"><productname>MPQC
|
---|
[9bce96] | 2337 | </productname></link>, supports it. Integrating these forces
|
---|
| 2338 | discretely over time gives insight into vibrational features of a
|
---|
| 2339 | molecular system and allows to generate those positions for fitting
|
---|
| 2340 | potentials that describe these vibrations.</para>
|
---|
[f73e06] | 2341 |
|
---|
[9bce96] | 2342 | <section xml:id='dynamics.molecular-dynamics'>
|
---|
| 2343 | <title xml:id='dynamics.molecular-dynamics.title'>Molecular dynamics
|
---|
| 2344 | </title>
|
---|
[f73e06] | 2345 |
|
---|
| 2346 | <para>The molecular dynamics action is a so-called macro Action,
|
---|
| 2347 | i.e. it combines several other Actions into one, namely:</para>
|
---|
| 2348 | <itemizedlist>
|
---|
| 2349 | <listitem>
|
---|
| 2350 | <para>--verlet-integration</para>
|
---|
| 2351 | </listitem>
|
---|
| 2352 | <listitem>
|
---|
| 2353 | <para>--output</para>
|
---|
| 2354 | </listitem>
|
---|
| 2355 | <listitem>
|
---|
| 2356 | <para>--clear-fragment-results</para>
|
---|
| 2357 | </listitem>
|
---|
| 2358 | <listitem>
|
---|
| 2359 | <para>--destroy-adjacency</para>
|
---|
| 2360 | </listitem>
|
---|
| 2361 | <listitem>
|
---|
| 2362 | <para>--create-adjacency</para>
|
---|
| 2363 | </listitem>
|
---|
| 2364 | <listitem>
|
---|
| 2365 | <para>--update-molecules</para>
|
---|
| 2366 | </listitem>
|
---|
| 2367 | <listitem>
|
---|
| 2368 | <para>--fragment-molecule</para>
|
---|
| 2369 | </listitem>
|
---|
| 2370 | <listitem>
|
---|
| 2371 | <para>--fragment-automation</para>
|
---|
| 2372 | </listitem>
|
---|
| 2373 | <listitem>
|
---|
| 2374 | <para>--analyse-fragment-results</para>
|
---|
| 2375 | </listitem>
|
---|
| 2376 | </itemizedlist>
|
---|
| 2377 |
|
---|
| 2378 | <para>The following will perform a molecular dynamics simulation
|
---|
| 2379 | for 100 time steps, each time step combining 0.5 atomic time units,
|
---|
| 2380 | i.e. 1.2 1e-17 s. The other options listed below will seem familiar
|
---|
| 2381 | to you if you have read about the other Actions listed above. Below
|
---|
| 2382 | we will not keep the bondgraph, i.e bonds and molecules may change
|
---|
| 2383 | over the simulation and hence also the created fragments per time
|
---|
| 2384 | step.
|
---|
| 2385 | </para>
|
---|
| 2386 |
|
---|
| 2387 | <programlisting>
|
---|
| 2388 | ... --molecular-dynamics \
|
---|
| 2389 | --steps 100 \
|
---|
| 2390 | --keep-bondgraph 0 \
|
---|
| 2391 | --order 3 \
|
---|
| 2392 | --distance 3. \
|
---|
| 2393 | --deltat 0.5 \
|
---|
| 2394 | --keep-fixed-CenterOfMass 1 \
|
---|
| 2395 | --fragment-executable mpqc \
|
---|
| 2396 | </programlisting>
|
---|
| 2397 | </section>
|
---|
| 2398 |
|
---|
[9bce96] | 2399 | <section xml:id='dynamics.optimize-structure'>
|
---|
| 2400 | <title xml:id='dynamics.optimize-structure.title'>Structure
|
---|
| 2401 | optimization</title>
|
---|
[f73e06] | 2402 |
|
---|
| 2403 | <para>Structure optimization is also a macro Action, it basically
|
---|
| 2404 | combines the same Actions as molecular-dynamics does. However, it
|
---|
| 2405 | uses force-annealing instead of verlet-integration.</para>
|
---|
| 2406 |
|
---|
| 2407 | <para>The following performs a structure optimization of the
|
---|
| 2408 | currently selected atoms (may also be a subset) for up to 100 time
|
---|
| 2409 | steps, where each time step ist 0.5 atomic time units. The time
|
---|
| 2410 | step here is the initial step with for annealing.
|
---|
| 2411 | </para>
|
---|
| 2412 |
|
---|
| 2413 | <programlisting>
|
---|
| 2414 | ... --optimize-structure \
|
---|
| 2415 | --keep-bondgraph 1 \
|
---|
| 2416 | --output-every-step 1 \
|
---|
| 2417 | --steps 100 \
|
---|
| 2418 | --order 3 \
|
---|
| 2419 | --distance 3. \
|
---|
| 2420 | --deltat 0.5 \
|
---|
| 2421 | --keep-fixed-CenterOfMass 1 \
|
---|
| 2422 | --fragment-executable mpqc \
|
---|
| 2423 | </programlisting>
|
---|
| 2424 |
|
---|
| 2425 | <para>Note that output-every-step will allow you to watch the
|
---|
| 2426 | optimization as each step is placed into a distinct time step.
|
---|
| 2427 | Otherwise only two time steps would be created: the initial and
|
---|
| 2428 | the final one containing the optimized structure.</para>
|
---|
| 2429 | </section>
|
---|
| 2430 |
|
---|
[9bce96] | 2431 | <section xml:id='dynamics.set-world-time'>
|
---|
| 2432 | <title xml:id='dynamics.set-world-time.title'>Set the world's time
|
---|
| 2433 | step</title>
|
---|
[f73e06] | 2434 |
|
---|
| 2435 | <para>In order to inspect or manipulate atoms and molecules at a
|
---|
| 2436 | certain time step, the World's time has to be set with the following
|
---|
| 2437 | Action.
|
---|
| 2438 | </para>
|
---|
| 2439 |
|
---|
| 2440 | <para>This will set the World's time to the fifth step (counting
|
---|
| 2441 | starts at zero).</para>
|
---|
| 2442 |
|
---|
| 2443 | <programlisting>... --set-world-time 4</programlisting>
|
---|
| 2444 | </section>
|
---|
| 2445 |
|
---|
[9bce96] | 2446 | <section xml:id='dynamics.save-temperature'>
|
---|
| 2447 | <title xml:id='dynamics.save-temperature.title'>Save the
|
---|
| 2448 | temperature information</title>
|
---|
[f73e06] | 2449 |
|
---|
| 2450 | <para>For each time step the temperature (i.e. the average velocity
|
---|
| 2451 | per atom times its mass) will be stored to a file.</para>
|
---|
| 2452 |
|
---|
| 2453 | <programlisting>
|
---|
| 2454 | ... --save-temperature temperature.dat \
|
---|
| 2455 | </programlisting>
|
---|
| 2456 | </section>
|
---|
| 2457 | </section>
|
---|
| 2458 |
|
---|
[9bce96] | 2459 | <section xml:id='dynamics.tesselation'>
|
---|
| 2460 | <title xml:id='dynamics.tesselation.title'>Tesselations</title>
|
---|
[f73e06] | 2461 |
|
---|
| 2462 | <para>Tesselations obtain molecular surfaces (and volumes) by rolling
|
---|
| 2463 | a virtual sphere of a certain radii on a molecule until a closed
|
---|
| 2464 | surface of connected triangles is created.</para>
|
---|
| 2465 |
|
---|
[9bce96] | 2466 | <section xml:id='dynamics.tesselation.nonconvex-envelope'>
|
---|
| 2467 | <title xml:id='dynamics.tesselation.nonconvex-envelope.title'>
|
---|
| 2468 | Non-convex envelope</title>
|
---|
[f73e06] | 2469 |
|
---|
[8544b32] | 2470 | <para>This will create a non-convex envelope for a molecule and store
|
---|
| 2471 | it to a file for viewing with external programs.</para>
|
---|
[f73e06] | 2472 |
|
---|
| 2473 | <programlisting>
|
---|
| 2474 | ... --nonconvex-envelope 6. \
|
---|
| 2475 | --nonconvex-file nonconvex.dat
|
---|
| 2476 | </programlisting>
|
---|
| 2477 |
|
---|
| 2478 | <para>This tesselation file can be conveniently viewed with
|
---|
[9bce96] | 2479 | <productname>TecPlot</productname> or with one of the Tcl script
|
---|
[cead3f] | 2480 | in the util folder with <productname>VMD</productname>. Also,
|
---|
| 2481 | still pictures can be produced with <productname>Raster3D
|
---|
| 2482 | </productname>.
|
---|
| 2483 | <note>The required file header.r3d can be found in a subfolder of
|
---|
| 2484 | the util folder.</note>
|
---|
| 2485 | </para>
|
---|
[f73e06] | 2486 | </section>
|
---|
| 2487 |
|
---|
[9bce96] | 2488 | <section xml:id='dynamics.tesselation.convex-envelope'>
|
---|
| 2489 | <title xml:id='dynamics.tesselation.convex-envelope.title'>Convex
|
---|
| 2490 | envelope</title>
|
---|
[f73e06] | 2491 |
|
---|
[8544b32] | 2492 | <para>This will create a convex envelope for a molecule and give the
|
---|
| 2493 | volumes of both the non-convex and the convex envelope. This is good
|
---|
| 2494 | for measuring the space a molecule takes up, e.g. when filling a
|
---|
| 2495 | domain and taking care of correct densities.</para>
|
---|
[f73e06] | 2496 |
|
---|
| 2497 | <programlisting>
|
---|
| 2498 | ... --convex-envelope 6. \
|
---|
| 2499 | --convex-file convex.dat
|
---|
| 2500 | </programlisting>
|
---|
| 2501 |
|
---|
[8544b32] | 2502 | <para>This tesselation file can be likewise viewed with
|
---|
[9bce96] | 2503 | <productname>TecPlot</productname> or with one of the Tcl script
|
---|
| 2504 | in the util folder with <productname>VMD</productname>.</para>
|
---|
[f73e06] | 2505 | </section>
|
---|
| 2506 | </section>
|
---|
| 2507 |
|
---|
[9bce96] | 2508 | <section xml:id='various'>
|
---|
| 2509 | <title xml:id='various.title'>Various commands</title>
|
---|
[6029a6] | 2510 |
|
---|
| 2511 | <para>Here, we gather all commands that do not fit into one of above
|
---|
| 2512 | categories for completeness.</para>
|
---|
| 2513 |
|
---|
[9bce96] | 2514 | <section xml:id='various.verbose'>
|
---|
| 2515 | <title xml:id='various.verbose.title'>Changing verbosity</title>
|
---|
[6029a6] | 2516 |
|
---|
| 2517 | <para>The verbosity level is the amount of stuff printed to screen.
|
---|
| 2518 | This information will in general help you to understand when
|
---|
| 2519 | something does not work. Mind the <emphasis>ERROR</emphasis> and
|
---|
| 2520 | <emphasis>WARNING</emphasis> messages in any case.</para>
|
---|
| 2521 |
|
---|
| 2522 | <para>This sets the verbosity from default of 2 to 4,</para>
|
---|
| 2523 |
|
---|
| 2524 | <programlisting>... --verbose 4</programlisting>
|
---|
| 2525 |
|
---|
| 2526 | <para>or shorter,</para>
|
---|
| 2527 |
|
---|
| 2528 | <programlisting>... -v 4</programlisting>
|
---|
| 2529 | </section>
|
---|
| 2530 |
|
---|
[9bce96] | 2531 | <section xml:id='various.element-db'>
|
---|
| 2532 | <title xml:id='various.element-db.title'>Loading an element
|
---|
| 2533 | database</title>
|
---|
[f73e06] | 2534 |
|
---|
| 2535 | <para>Element databases contain information on valency, van der
|
---|
| 2536 | Waals-radii and other information for each element.</para>
|
---|
| 2537 |
|
---|
| 2538 | <para>This loads all element database from the current folder (in a
|
---|
| 2539 | unix environment):</para>
|
---|
| 2540 |
|
---|
| 2541 | <programlisting>... --element-db ./</programlisting>
|
---|
| 2542 |
|
---|
| 2543 | </section>
|
---|
| 2544 |
|
---|
[9bce96] | 2545 | <section xml:id='various.fastparsing'>
|
---|
| 2546 | <title xml:id='various.fastparsing.title'>Fast parsing</title>
|
---|
[f73e06] | 2547 |
|
---|
| 2548 | <para>Parsing all time steps from a given input file can take a
|
---|
| 2549 | while, especially for larger systems. If fast parsing is activated,
|
---|
| 2550 | only the first time step is loaded, all other are ignored.</para>
|
---|
| 2551 |
|
---|
| 2552 | <programlisting>... --fastparsing 1</programlisting>
|
---|
| 2553 | </section>
|
---|
| 2554 |
|
---|
[9bce96] | 2555 | <section xml:id='various.version'>
|
---|
| 2556 | <title xml:id='various.version.title'>Giving the version of the
|
---|
| 2557 | program</title>
|
---|
[6029a6] | 2558 |
|
---|
| 2559 | <para>This prints the version information of the code, especially
|
---|
| 2560 | important when you request the fixing of bugs or implementation of
|
---|
| 2561 | features.</para>
|
---|
| 2562 |
|
---|
| 2563 | <programlisting>... --version</programlisting>
|
---|
| 2564 | </section>
|
---|
| 2565 |
|
---|
[9bce96] | 2566 | <section xml:id='various.warranty'>
|
---|
| 2567 | <title xml:id='various.warranty.title'>Giving warranty
|
---|
| 2568 | information</title>
|
---|
[6029a6] | 2569 |
|
---|
| 2570 | <para>As follows warranty information is given,</para>
|
---|
| 2571 |
|
---|
| 2572 | <programlisting>... --warranty</programlisting>
|
---|
| 2573 | </section>
|
---|
[f73e06] | 2574 |
|
---|
[9bce96] | 2575 | <section xml:id='various.help-redistribute'>
|
---|
| 2576 | <title xml:id='various.help-redistribute.title'>Giving
|
---|
| 2577 | redistribution information</title>
|
---|
[f73e06] | 2578 |
|
---|
| 2579 | <para>This gives information on the license and how to redistribute
|
---|
| 2580 | the program and its source code</para>
|
---|
| 2581 |
|
---|
| 2582 | <programlisting>... --help-redistribute</programlisting>
|
---|
| 2583 | </section>
|
---|
[6029a6] | 2584 | </section>
|
---|
| 2585 |
|
---|
[9bce96] | 2586 | <section xml:id='sessions'>
|
---|
| 2587 | <title xml:id='sessions.title'>Sessions</title>
|
---|
[6029a6] | 2588 |
|
---|
| 2589 | <para>A session refers to the queue of actions you have executed.
|
---|
| 2590 | Together with the initial configuration (and all files required for
|
---|
| 2591 | actions in the queue) this might be seen as a clever way of storing
|
---|
| 2592 | the state of a molecular system. When proceeding in a try&error
|
---|
| 2593 | fashion to construct a certain system, it is a good idea, to store the
|
---|
| 2594 | session at the point where your attempts start to deviate from one
|
---|
| 2595 | another.</para>
|
---|
| 2596 |
|
---|
[9bce96] | 2597 | <section xml:id='sessions.store-session'>
|
---|
| 2598 | <title xml:id='sessions.store-session.title'>Storing a session
|
---|
| 2599 | </title>
|
---|
[6029a6] | 2600 |
|
---|
[f73e06] | 2601 | <para>Storing sessions is simple,</para>
|
---|
[6029a6] | 2602 |
|
---|
[f73e06] | 2603 | <programlisting>
|
---|
| 2604 | ... --store-session "session.py" \
|
---|
| 2605 | --session-type python
|
---|
| 2606 | </programlisting>
|
---|
| 2607 |
|
---|
| 2608 | <para>Here, the session type is given as python (the other option is
|
---|
| 2609 | cli for in the manner of the command-line interface) and the written
|
---|
| 2610 | python script <filename>session.py</filename> can even be used with
|
---|
| 2611 | the python interface described below, i.e. it is a full python script
|
---|
| 2612 | (that however requires the so-called pyMoleCuilder module).</para>
|
---|
| 2613 | </section>
|
---|
| 2614 |
|
---|
[9bce96] | 2615 | <section xml:id='sessions.load-session'>
|
---|
| 2616 | <title xml:id='sessions.load-session.title'>Loading a session</title>
|
---|
[f73e06] | 2617 |
|
---|
| 2618 | <para>Loading a session only works for python scripts. This actually
|
---|
| 2619 | blurs the line between the command-line interface and the python
|
---|
| 2620 | interface a bit. But even more, MoleCuilder automatically executes a
|
---|
| 2621 | script called <filename>molecuilder.py</filename> if such a file is
|
---|
| 2622 | contained in the current directory.</para>
|
---|
[6029a6] | 2623 |
|
---|
[f73e06] | 2624 | <programlisting>... --load-session "session.py"</programlisting>
|
---|
| 2625 |
|
---|
| 2626 | <para>This will execute every action with its options contained in the
|
---|
| 2627 | script <filename>session.py</filename>.</para>
|
---|
| 2628 | </section>
|
---|
[6029a6] | 2629 | </section>
|
---|
| 2630 |
|
---|
[9bce96] | 2631 | <section xml:id='various-specific'>
|
---|
| 2632 | <title xml:id='various-specific.title'>Various specific commands
|
---|
| 2633 | </title>
|
---|
[f73e06] | 2634 |
|
---|
| 2635 | <para>In this (final) section of the action description we list a number
|
---|
| 2636 | Actions that are very specific to some purposes (or other programs).
|
---|
| 2637 | </para>
|
---|
| 2638 |
|
---|
[9bce96] | 2639 | <section xml:id='various-specific.save-selected-atoms-as-exttypes'>
|
---|
| 2640 | <title xml:id='various-specific.save-selected-atoms-as-exttypes.title'>
|
---|
| 2641 | Saving exttypes of a set of atoms</title>
|
---|
[f73e06] | 2642 |
|
---|
| 2643 | <para>This saves the atomic ids of all currently selected atoms in a
|
---|
[9bce96] | 2644 | <link xlink:href="http://www.tremolo-x.com/"><productname>TREMOLO
|
---|
| 2645 | </productname></link> exttypes file with the given name.</para>
|
---|
[f73e06] | 2646 |
|
---|
| 2647 | <programlisting>
|
---|
| 2648 | ... --save-selected-atoms-as-exttypes \
|
---|
| 2649 | --filename test.exttypes </programlisting>
|
---|
| 2650 | </section>
|
---|
| 2651 |
|
---|
[9bce96] | 2652 | <section xml:id='various-specific.set-parser-parameters'>
|
---|
| 2653 | <title xml:id='various-specific.set-parser-parameters.title'>Setting
|
---|
| 2654 | parser specific parameters</title>
|
---|
[f73e06] | 2655 |
|
---|
| 2656 | <para>You can also tweak the parameters stored in this file easily.
|
---|
| 2657 | For example, <productname>MPQC</productname> stores various
|
---|
| 2658 | parameters modifying the specific ab-initio calculation performed.
|
---|
| 2659 | For <link xlink:href="http://www.mpqc.org/"><productname>MPQC
|
---|
| 2660 | </productname></link> and
|
---|
| 2661 | <link xlink:href="http://www.psicode.org/"><productname>Psi4
|
---|
| 2662 | </productname></link> this can be modified as follows.</para>
|
---|
| 2663 |
|
---|
| 2664 | <programlisting>
|
---|
| 2665 | ... --set-parser-parameters mpqc \
|
---|
| 2666 | --parser-parameters "theory=CLHF;basis=6-31*G;"
|
---|
| 2667 | </programlisting>
|
---|
| 2668 |
|
---|
| 2669 | <para>This sets the ab-initio theory to closed-shell Hartree-Fock
|
---|
| 2670 | and the basis set to 6-31*G. Please check the
|
---|
| 2671 | <productname>MPQC</productname> manual on specific
|
---|
| 2672 | parameters.</para>
|
---|
| 2673 | </section>
|
---|
| 2674 |
|
---|
[9bce96] | 2675 | <section xml:id='various-specific.set-tremolo-atomdata'>
|
---|
| 2676 | <title xml:id='various-specific.set-tremolo-atomdata.title'>Tremolo
|
---|
| 2677 | specific options and potential files</title>
|
---|
[6029a6] | 2678 |
|
---|
[f73e06] | 2679 | <para><productname>TREMOLO</productname>'s configuration files start
|
---|
| 2680 | with a specific line telling the amount of information stored in the
|
---|
| 2681 | file. This file can be modified, e.g. to enforce storing of
|
---|
| 2682 | velocities and forces as well as the atoms positions and
|
---|
| 2683 | element.</para>
|
---|
| 2684 |
|
---|
| 2685 | <programlisting>
|
---|
| 2686 | ... --set-tremolo-atomdata "ATOM id element u=3 v=3 F=3" \
|
---|
| 2687 | --reset 1
|
---|
| 2688 | </programlisting>
|
---|
| 2689 |
|
---|
| 2690 | <para>This will not append but reset the old line and fill it with
|
---|
| 2691 | the given string.</para>
|
---|
[6029a6] | 2692 |
|
---|
[f73e06] | 2693 | <para>One specific action is required when loading certain
|
---|
| 2694 | <productname>TREMOLO</productname> configuration files. These
|
---|
| 2695 | contain element notations that refer to parameterized names used in
|
---|
| 2696 | empirical potentials and molecular dynamics simulations and not the
|
---|
| 2697 | usual chemical symbols, such as H or O. We may load an auxiliary
|
---|
| 2698 | file that gives the required conversion from OH1 to H, which is the
|
---|
| 2699 | so-called potential file.</para>
|
---|
[6029a6] | 2700 |
|
---|
[f73e06] | 2701 | <programlisting>... --parse-tremolo-potentials water.potentials</programlisting>
|
---|
| 2702 |
|
---|
| 2703 | <para>This parses the lookup table from the file
|
---|
| 2704 | <filename>water.potentials</filename> and it can be used in
|
---|
| 2705 | following load actions.</para>
|
---|
| 2706 | </section>
|
---|
[6029a6] | 2707 | </section>
|
---|
| 2708 | </section>
|
---|
| 2709 |
|
---|
[9bce96] | 2710 | <section xml:id='textmenu-interface'>
|
---|
| 2711 | <title xml:id='textmenu-interface.title'>Text menu</title>
|
---|
[6029a6] | 2712 |
|
---|
| 2713 | <para>We now discuss how to use the text menu interface.</para>
|
---|
| 2714 |
|
---|
| 2715 | <para>The text menu is very much the interface counterpart to the
|
---|
| 2716 | command-line interface. Both work in a terminal session.</para>
|
---|
| 2717 |
|
---|
| 2718 | <para>In the text menu, actions can be selected from hierarchical lists.
|
---|
| 2719 | Note that the menus for the graphical interface are organized in the
|
---|
| 2720 | exactly same way. After an action has been chosen, the option values
|
---|
| 2721 | have to be entered one after the other. After the last option value has
|
---|
| 2722 | been given, the action is executed and the result printed to the
|
---|
| 2723 | screen.</para>
|
---|
| 2724 |
|
---|
| 2725 | <para>With regards to the other functionality, it is very much the same
|
---|
| 2726 | as the command-line interface above.</para>
|
---|
| 2727 | </section>
|
---|
| 2728 |
|
---|
[9bce96] | 2729 | <section xml:id='graphical-user-interface'>
|
---|
| 2730 | <title xml:id='graphical-user-interface.title'>Graphical user interface
|
---|
| 2731 | </title>
|
---|
[6029a6] | 2732 |
|
---|
| 2733 | <para>The main point of the GUI is that it renders the atoms and
|
---|
| 2734 | molecules visually. These are represented by the common
|
---|
| 2735 | stick-and-ball-model. Single or multiple atoms and molecules can easily
|
---|
| 2736 | be accessed, activated and manipulated via tables. Changes made in the
|
---|
| 2737 | tables cause immediate update of the visual representation. Under the
|
---|
| 2738 | hood each of these manipulations is nothing but the call to an action,
|
---|
| 2739 | hence is fully undo- and redoable.</para>
|
---|
| 2740 |
|
---|
| 2741 | <para>This is mostly helpful to design more advanced structures that are
|
---|
| 2742 | conceptually difficult to imagine without visual aid. At the end, a
|
---|
| 2743 | session may be stored and this script can then be used to construct
|
---|
| 2744 | various derived or slightly modified structures.</para>
|
---|
| 2745 |
|
---|
[9bce96] | 2746 | <section xml:id='graphical-user-interface.basic-view'>
|
---|
| 2747 | <title xml:id='graphical-user-interface.basic-view.title'>Basic view
|
---|
| 2748 | </title>
|
---|
[6029a6] | 2749 |
|
---|
| 2750 | <para>Let us first give an impression of the basic view of the gui
|
---|
| 2751 | after a molecule has been loaded.</para>
|
---|
| 2752 |
|
---|
| 2753 | <figure>
|
---|
| 2754 | <title>Screenshot of the basic view of the GUI after loading a file
|
---|
| 2755 | with eight water molecules.</title>
|
---|
| 2756 |
|
---|
| 2757 | <mediaobject>
|
---|
| 2758 | <imageobject>
|
---|
| 2759 | <imagedata entityref="example_basic_view" scalefit="1" width="100%"/>
|
---|
| 2760 | </imageobject>
|
---|
| 2761 | </mediaobject>
|
---|
| 2762 | </figure>
|
---|
| 2763 |
|
---|
[9bce96] | 2764 | <section xml:id='graphical-user-interface.3d-view'>
|
---|
| 2765 | <title xml:id='graphical-user-interface.3d-view.title'>3D view
|
---|
| 2766 | </title>
|
---|
[6029a6] | 2767 |
|
---|
| 2768 | <para>In the above figure, you see the stick-and-ball representation
|
---|
| 2769 | of the water molecules, the dreibein giving the positive axis
|
---|
| 2770 | direction and the cuboidal domain on a black background.</para>
|
---|
| 2771 | </section>
|
---|
| 2772 |
|
---|
[9bce96] | 2773 | <section xml:id='graphical-user-interface.information-tabs'>
|
---|
| 2774 | <title xml:id='graphical-user-interface.information-tabs.title'>
|
---|
| 2775 | Information Tabs</title>
|
---|
[6029a6] | 2776 |
|
---|
| 2777 | <para>Beneath this 3D view that you can rotate at will your mouse
|
---|
| 2778 | and zoom in and out with your scroll wheel, you find to the right a
|
---|
| 2779 | part containing two tabs named Atom and Molecule. Look at where the
|
---|
| 2780 | mouse pointer is. It has colored the atom underneath in cyan
|
---|
| 2781 | (although it's also an oxygen atom and should bne coloured in rose
|
---|
| 2782 | as the rest). You can inspect its properties in the tab Atom: Name,
|
---|
| 2783 | element, mass, charge, position and number of bonds. If you switch
|
---|
| 2784 | to the Molecule tab, you would see the properties of the water
|
---|
| 2785 | molecule this specific atom belongs to.</para>
|
---|
| 2786 | </section>
|
---|
| 2787 |
|
---|
[9bce96] | 2788 | <section xml:id='graphical-user-interface.shape'>
|
---|
| 2789 | <title xml:id='graphical-user-interface.shape.title'>Shape section
|
---|
| 2790 | </title>
|
---|
[6029a6] | 2791 |
|
---|
| 2792 | <para>Beneath these information tabs you find the shape sections.
|
---|
| 2793 | There you find a list of all currently created shapes and you can
|
---|
| 2794 | manipulate them via the buttons beneath this list.</para>
|
---|
| 2795 | </section>
|
---|
| 2796 |
|
---|
[9bce96] | 2797 | <section xml:id='graphical-user-interface.timeline'>
|
---|
| 2798 | <title xml:id='graphical-user-interface.timeline.title'>Timeline
|
---|
| 2799 | </title>
|
---|
[6029a6] | 2800 |
|
---|
| 2801 | <para>Directly below the 3D view there is a long slider. If a loaded
|
---|
| 2802 | file has multiple time step entries, this slider allows you to
|
---|
| 2803 | smoothly select one time frame after another. Sliding it with the
|
---|
| 2804 | mouse from left to right will reveal the animation that is hidden
|
---|
| 2805 | behind the distinct snapshots stored in the configuration
|
---|
| 2806 | file.</para>
|
---|
| 2807 | </section>
|
---|
| 2808 |
|
---|
[9bce96] | 2809 | <section xml:id='graphical-user-interface.tables'>
|
---|
| 2810 | <title xml:id='graphical-user-interface.tables.title'>Selection
|
---|
| 2811 | tables</title>
|
---|
[6029a6] | 2812 |
|
---|
| 2813 | <para>Underneath the time line there is another place for
|
---|
| 2814 | tabs.</para>
|
---|
| 2815 |
|
---|
| 2816 | <para>The first is on molecules, listing all present molecules of
|
---|
| 2817 | the molecular system in a list view. If you click on a specific
|
---|
| 2818 | molecule, the one will get selected or unselected depending on its
|
---|
| 2819 | current selection state (see below for details on this with respect
|
---|
| 2820 | to the GUI).</para>
|
---|
| 2821 |
|
---|
| 2822 | <para>The next tab enumerates all elements known to MoleCuilder
|
---|
| 2823 | where the ones are greyed out that are not present in the molecular
|
---|
| 2824 | system. Clicking on a present element will select all atoms of this
|
---|
| 2825 | specific element. A subsequent click unselects again.</para>
|
---|
| 2826 |
|
---|
| 2827 | <para>Subsequent follow tabs on enumerating the fragments and their
|
---|
| 2828 | fragment energies if calculated and the homologies along with
|
---|
| 2829 | graphical depiction (via QWT) if present.</para>
|
---|
| 2830 | </section>
|
---|
| 2831 | </section>
|
---|
| 2832 |
|
---|
[9bce96] | 2833 | <section xml:id='graphical-user-interface.selections'>
|
---|
| 2834 | <title xml:id='graphical-user-interface.selections.title'>Selections
|
---|
| 2835 | </title>
|
---|
[6029a6] | 2836 |
|
---|
| 2837 | <para>Selections work generally always by selecting the respective
|
---|
| 2838 | action from the pull-down menu.</para>
|
---|
| 2839 |
|
---|
| 2840 | <para>However, it may also be accessed directly. The row of icons
|
---|
| 2841 | above the 3D view has two icons depicting the selection of individual
|
---|
| 2842 | atoms or molecules. If either of them is selected, clicking with the
|
---|
| 2843 | left mouse button on an atom will either (un)select the atom or its
|
---|
| 2844 | associated molecule. Multiple atoms can be selected in this
|
---|
| 2845 | manner.</para>
|
---|
| 2846 |
|
---|
| 2847 | <para>Also the selection tabs may be used by clicking on the name of a
|
---|
| 2848 | molecule as stated above or at an element.</para>
|
---|
| 2849 |
|
---|
| 2850 | <para>Similarly, if shapes are present in the shape section, clicking
|
---|
| 2851 | them with select them and also cause a translucent visualization to
|
---|
| 2852 | appear in the 3D view. Note that this visualization is quite costly
|
---|
| 2853 | right now and not suited to complex shapes.</para>
|
---|
| 2854 | </section>
|
---|
| 2855 |
|
---|
[9bce96] | 2856 | <section xml:id='graphical-user-interface.dialogs'>
|
---|
| 2857 | <title xml:id='graphical-user-interface.dialogs.title'>Dialogs</title>
|
---|
[6029a6] | 2858 |
|
---|
| 2859 | <para>Most essential, however, to the GUI are the dialogs. Each action
|
---|
| 2860 | calls forth such a dialog even if no options are required (the
|
---|
| 2861 | execution of the action has at least to be confirmed). Each dialog
|
---|
| 2862 | consisting of queries for a particular option value. As each option
|
---|
| 2863 | value has a specific type, we briefly go into the details of how these
|
---|
| 2864 | queries look like.</para>
|
---|
| 2865 |
|
---|
| 2866 | <note>
|
---|
| 2867 | <para>Each dialog's Ok is greyed out until all entered option values
|
---|
| 2868 | are valid.</para>
|
---|
| 2869 | </note>
|
---|
| 2870 |
|
---|
[9bce96] | 2871 | <section xml:id='graphical-user-interface.dialogs.domain'>
|
---|
| 2872 | <title xml:id='graphical-user-interface.dialogs.domain.title'>Domain
|
---|
| 2873 | query</title>
|
---|
[6029a6] | 2874 |
|
---|
| 2875 | <figure>
|
---|
| 2876 | <title>Screenshot of a dialog showing a domain query</title>
|
---|
| 2877 |
|
---|
| 2878 | <mediaobject>
|
---|
| 2879 | <imageobject>
|
---|
| 2880 | <imagedata entityref="dialog_box" scalefit="1" width="100%"/>
|
---|
| 2881 | </imageobject>
|
---|
| 2882 | </mediaobject>
|
---|
| 2883 |
|
---|
| 2884 | <para>In the domain query a 3x3 symmetric matrix has to be
|
---|
| 2885 | entered. In the above screenshots you notice that the only
|
---|
| 2886 | non-zero entries are on the main diagonal. Here, we have simply
|
---|
| 2887 | specified a cube of edge length 8. The ok button will be greyed
|
---|
| 2888 | out if the matrix is either singular or not symmetric.</para>
|
---|
| 2889 | </figure>
|
---|
| 2890 | </section>
|
---|
| 2891 |
|
---|
[9bce96] | 2892 | <section xml:id='graphical-user-interface.dialogs.element'>
|
---|
| 2893 | <title xml:id='graphical-user-interface.dialogs.element.title'>
|
---|
| 2894 | Element query</title>
|
---|
[6029a6] | 2895 |
|
---|
| 2896 | <figure>
|
---|
| 2897 | <title>Screenshot the add atom action containing an element
|
---|
| 2898 | query</title>
|
---|
| 2899 |
|
---|
| 2900 | <mediaobject>
|
---|
| 2901 | <imageobject>
|
---|
| 2902 | <imagedata entityref="dialog_add-atom_tooltip" scalefit="1" width="100%"/>
|
---|
| 2903 | </imageobject>
|
---|
| 2904 | </mediaobject>
|
---|
| 2905 |
|
---|
| 2906 | <para>Elements are picked from a pull-down box where all known
|
---|
| 2907 | elements are listed.</para>
|
---|
| 2908 |
|
---|
| 2909 | <para>In this dialog you also notice that a tooltip is given,
|
---|
| 2910 | briefly explaining what the action does.</para>
|
---|
| 2911 | </figure>
|
---|
| 2912 | </section>
|
---|
| 2913 |
|
---|
[9bce96] | 2914 | <section xml:id='graphical-user-interface.dialogs.action'>
|
---|
| 2915 | <title xml:id='graphical-user-interface.dialogs.action.title'>
|
---|
| 2916 | Complex query</title>
|
---|
[6029a6] | 2917 |
|
---|
| 2918 | <figure>
|
---|
| 2919 | <title>Screenshot of a complex dialog consisting of multiple
|
---|
| 2920 | queries</title>
|
---|
| 2921 |
|
---|
| 2922 | <mediaobject>
|
---|
| 2923 | <imageobject>
|
---|
| 2924 | <imagedata entityref="dialog_complex" scalefit="1" width="100%"/>
|
---|
| 2925 | </imageobject>
|
---|
| 2926 | </mediaobject>
|
---|
| 2927 |
|
---|
| 2928 | <para>Here we show a more complex dialog. It queries for strings,
|
---|
| 2929 | for integer values (see the increase/decrease arrows), for
|
---|
| 2930 | booleans and for files (the "choose" buttons opens a file
|
---|
| 2931 | dialog).</para>
|
---|
| 2932 | </figure>
|
---|
| 2933 | </section>
|
---|
| 2934 |
|
---|
[9bce96] | 2935 | <section xml:id='graphical-user-interface.dialogs.exit'>
|
---|
| 2936 | <title xml:id='graphical-user-interface.dialogs.exit.title'>Exit
|
---|
| 2937 | query</title>
|
---|
[6029a6] | 2938 |
|
---|
| 2939 | <figure>
|
---|
| 2940 | <title>Screenshort showing the exit dialog</title>
|
---|
| 2941 |
|
---|
| 2942 | <mediaobject>
|
---|
| 2943 | <imageobject>
|
---|
| 2944 | <imagedata entityref="dialog_exit" scalefit="1" width="100%"/>
|
---|
| 2945 | </imageobject>
|
---|
| 2946 | </mediaobject>
|
---|
| 2947 |
|
---|
| 2948 | <para>Finally, we show the dialog that will pop up when exiting
|
---|
| 2949 | the graphical interface. It will ask whether it should store the
|
---|
| 2950 | current state of the system in the input file or not. You may
|
---|
| 2951 | cancel the exit, close without saving or save the current
|
---|
| 2952 | state.</para>
|
---|
| 2953 | </figure>
|
---|
| 2954 | </section>
|
---|
| 2955 | </section>
|
---|
| 2956 | </section>
|
---|
| 2957 |
|
---|
[9bce96] | 2958 | <section xml:id='python-interface'>
|
---|
| 2959 | <title xml:id='python-interface.title'>Python interface</title>
|
---|
[6029a6] | 2960 |
|
---|
| 2961 | <para>Last but not least we elaborate on the python interface. We have
|
---|
| 2962 | already discusses this interface to some extent. The current session,
|
---|
| 2963 | i.e. the queue of actions you have executed, can be stored as a python
|
---|
| 2964 | script and subsequently executed independently of the user interface it
|
---|
| 2965 | was created with. More general, MoleCuilder can execute arbitrary python
|
---|
| 2966 | scripts where prior to its execution a specific module is loaded by
|
---|
| 2967 | default enabling access to MoleCuilder's actions from inside the
|
---|
| 2968 | script.</para>
|
---|
| 2969 |
|
---|
| 2970 | <para>MoleCuilder's python module is called pyMoleCuilder. it is
|
---|
| 2971 | essentially a library that can be imported into python just as any other
|
---|
| 2972 | module. Let us assume you have started the python interpreter and you
|
---|
| 2973 | have added the destination of the <filename>pyMoleCuilder</filename>
|
---|
| 2974 | library to the <varname>PYTHONPATH</varname> variable.</para>
|
---|
| 2975 |
|
---|
| 2976 | <programlisting>import pyMoleCuilder as mol</programlisting>
|
---|
| 2977 |
|
---|
| 2978 | <para>Subsequently, you can access the help via</para>
|
---|
| 2979 |
|
---|
| 2980 | <programlisting>help(mol)</programlisting>
|
---|
| 2981 |
|
---|
| 2982 | <para>This will list all of MoleCuilder's actions with their function
|
---|
| 2983 | signatures within python as contained in the module pyMoleCuilder named
|
---|
| 2984 | as mol in the scope of the currently running interpreter. Note that the
|
---|
| 2985 | function names are not the names you know from the command-line
|
---|
| 2986 | interface, they might be called
|
---|
| 2987 | <computeroutput>WorldChangeBox(...)</computeroutput> or alike.</para>
|
---|
| 2988 |
|
---|
| 2989 | <para>Let's try it out.</para>
|
---|
| 2990 |
|
---|
| 2991 | <programlisting>print mol.CommandVersion()</programlisting>
|
---|
| 2992 |
|
---|
| 2993 | <para>This will state the current version of the library.</para>
|
---|
| 2994 |
|
---|
| 2995 | <para>Go ahead and try out other commands. Refer to the documentation
|
---|
| 2996 | under the command-line interface and look up the function name via
|
---|
| 2997 | help.</para>
|
---|
| 2998 | </section>
|
---|
| 2999 | </chapter>
|
---|
| 3000 |
|
---|
| 3001 | <chapter>
|
---|
| 3002 | <title>Conclusions</title>
|
---|
| 3003 |
|
---|
| 3004 | <para>This ends this user guide.</para>
|
---|
| 3005 |
|
---|
| 3006 | <para>We have given you a brief introduction to the aim of the program and
|
---|
| 3007 | how each of the four interfaces are to be used. The rest is up to
|
---|
| 3008 | you.</para>
|
---|
| 3009 |
|
---|
| 3010 | <para>Tutorials and more information is available online, see <link
|
---|
[f73e06] | 3011 | xlink:href="http://www.molecuilder.com/">MoleCuilder's website</link>.
|
---|
| 3012 | </para>
|
---|
[6029a6] | 3013 |
|
---|
| 3014 | <para>Be aware that in general knowing how the code works allows you to
|
---|
| 3015 | understand what's going wrong if something's going wrong.</para>
|
---|
| 3016 |
|
---|
| 3017 | <section>
|
---|
| 3018 | <title>Thanks</title>
|
---|
| 3019 |
|
---|
| 3020 | <para>Huge thanks go out to Saskia Metzler who was patient enough to let
|
---|
| 3021 | me sit next to her while riding ten hours in a bus to Berlin.</para>
|
---|
| 3022 | </section>
|
---|
| 3023 | </chapter>
|
---|
| 3024 | </book>
|
---|