| [750cff] | 1 | /*
 | 
|---|
 | 2 |  * Project: MoleCuilder
 | 
|---|
 | 3 |  * Description: creates and alters molecular systems
 | 
|---|
 | 4 |  * Copyright (C)  2010 University of Bonn. All rights reserved.
 | 
|---|
 | 5 |  * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
 | 
|---|
 | 6 |  */
 | 
|---|
 | 7 | 
 | 
|---|
 | 8 | /**
 | 
|---|
 | 9 |  * \file molecules.dox
 | 
|---|
 | 10 |  *
 | 
|---|
 | 11 |  * Created on: Oct 31, 2011
 | 
|---|
 | 12 |  *    Author: heber
 | 
|---|
 | 13 |  */
 | 
|---|
 | 14 | 
 | 
|---|
 | 15 | /**
 | 
|---|
 | 16 |  * \page molecules Molecules
 | 
|---|
 | 17 |  *
 | 
|---|
 | 18 |  * Molecule is the next important structure to atom.
 | 
|---|
 | 19 |  *
 | 
|---|
 | 20 |  * Molecule are especially important for \ref fragmentation and lots of
 | 
|---|
 | 21 |  * their (old) code comes from this theme.
 | 
|---|
 | 22 |  *
 | 
|---|
 | 23 |  * Basically, a molecule is just a conglomerate of atoms whose nodes form a
 | 
|---|
 | 24 |  * connected subgraph of the entire molecular system.
 | 
|---|
 | 25 |  *
 | 
|---|
 | 26 |  * A molecule has its own internal array of atoms that may be traversed.
 | 
|---|
 | 27 |  * Similar concepts as with the World with regards to const and non-const
 | 
|---|
 | 28 |  * traversal, the former involving an Observer mechanism, come into play here
 | 
|---|
 | 29 |  * as well.
 | 
|---|
 | 30 |  *
 | 
|---|
| [560bbe] | 31 |  * \section molecules-atoms Atoms
 | 
|---|
 | 32 |  *
 | 
|---|
 | 33 |  * Atoms are added to the molecule via molecule::AddAtom() and removed via
 | 
|---|
 | 34 |  * molecule::RemoveAtom(). Therein, the atom receives a unique ParticleInfo::Nr
 | 
|---|
 | 35 |  * that is useful only within the molecule and is displayed in the atoms name,
 | 
|---|
 | 36 |  * i.e. atom names only vary within the molecule.
 | 
|---|
 | 37 |  *
 | 
|---|
 | 38 |  * The molecule only stores the atoms global id and uses a boost::transform_iterator
 | 
|---|
 | 39 |  * to map the ids to the true refs obtained from the World.
 | 
|---|
 | 40 |  *
 | 
|---|
| [750cff] | 41 |  * \section molecules-formula Formula
 | 
|---|
 | 42 |  *
 | 
|---|
 | 43 |  * One important concept of molecules is the associated Formula. It, as well
 | 
|---|
 | 44 |  * as the AtomCount, are implemented as Cachables, i.e. they are aware of
 | 
|---|
 | 45 |  * changes to the contained atoms via the Observer mechanism but update
 | 
|---|
 | 46 |  * themselves only when requested.
 | 
|---|
 | 47 |  *
 | 
|---|
 | 48 |  * Formulas are very powerful because they can also be used as a Descriptor
 | 
|---|
 | 49 |  * (\ref descriptors) to access only a certain subsets of molecules, e.g.
 | 
|---|
 | 50 |  * "H2O" selects all water molecules.
 | 
|---|
 | 51 |  *
 | 
|---|
 | 52 |  * \section molecules-bondgraph Notes on the BondGraph
 | 
|---|
 | 53 |  *
 | 
|---|
 | 54 |  * Note that molecules are very volatile: Changing the bond graph also changes
 | 
|---|
 | 55 |  * most of the present molecules at this time as so far there is no update
 | 
|---|
 | 56 |  * mechanism. Hence, be aware of it.
 | 
|---|
 | 57 |  *
 | 
|---|
 | 58 |  *
 | 
|---|
 | 59 |  * \date 2011-10-31
 | 
|---|
 | 60 |  *
 | 
|---|
 | 61 |  */
 | 
|---|