| 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 |  *
 | 
|---|
| 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 |  *
 | 
|---|
| 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 |  */
 | 
|---|