Ignore:
Timestamp:
May 20, 2014, 9:14:56 AM (11 years ago)
Author:
Frederik Heber <heber@…>
Branches:
Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
Children:
6029a6
Parents:
74459a
git-author:
Frederik Heber <heber@…> (03/20/14 17:23:35)
git-committer:
Frederik Heber <heber@…> (05/20/14 09:14:56)
Message:

Enhanced documentation significantly.

  • went through all of the constructs and updated each.
  • enhanced documentation ofr Fragmentation::FragmentMolecule().
Location:
src/documentation/constructs
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • src/documentation/constructs/actions.dox

    r74459a rcaece4  
    33 * Description: creates and alters molecular systems
    44 * Copyright (C)  2010 University of Bonn. All rights reserved.
     5 * Copyright (C)  2014 Frederik Heber. All rights reserved.
    56 * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
    67 */
     
    2627 *  the Action does.
    2728 *
    28  *  Each Action has thus three types of functionality: do, undo, and redo.
     29 *  Each Action has thus three types of functionality: do, undo, and redo. And
     30 *  each action has a unique \a token: a name without white space that is
     31 *  descriptive.
    2932 *
    30  *  The ActionRegistry contains a prototype of each Action under its token
    31  *  such that an instance can be retrieved by knowing this token.
     33 *  The ActionRegistry contains a prototype of each Action under its token.
     34 *  If an Action is requested via its known token from the ActionQueue
     35 *  (that contains the ActionRegistry), this prototype is cloned and added to the
     36 *  queue.
    3237 *
    33  *  Each Action can contain multiple \ref parameters in its specific ActionParameters
    34  *  structure that represent the options. Executing call() first fills a dialog
    35  *  with \ref queries, one for each option. The UI then tries to obtain the
    36  *  values from the user. Depending on the type of the UI in use that could mean
    37  *  parsing stored command line parameters or displaying a real dialog box with widgets.
     38 *  Each Action can contain multiple \ref parameters in its specific
     39 *  ActionParameters structure that represent the options. Executing call() first
     40 *  fills a dialog with \ref queries, one for each option. The UI then tries to
     41 *  obtain the values from the user. Depending on the type of the UI in use that
     42 *  could mean parsing stored command line parameters or displaying a real dialog
     43 *  box with widgets.
    3844 *
    3945 *  Also there is a regression test (\ref regression-test) for each Action to
    4046 *  check that it always behaves the same no matter how much the code
    41  *  implementing actually has changed.
     47 *  implementing actually has changed. In most cases also for testing undo and
     48 *  redo.
    4249 *
    4350 * \section actions-add To add a new action ...
     
    5360 *
    5461 * The central points of Actions is that they can be undone and redone. This
    55  * has to be implemented in two more functions beside the "do".
     62 * has to be implemented in two more functions beside the "do" in performCall().
    5663 *
    5764 * Note that undoing means to get everything back to its original state and by whatever
     
    6168 * E.g. if your Action creates some new atoms, store their info as \ref AtomicInfo.
    6269 * Then, undo can simply delete the newly created atoms and redo can quickly re-
    63  * create them in the state they have been before.
     70 * create them in the state they have been before. Types required for storage are
     71 * contained in the Action's state and are filled during performCall(). Undo and
     72 * redo both get access to this state and may use the information as described.
    6473 *
    6574 * Have a look at \ref UndoRedoHelpers.hpp for some helper functions on this.
     
    7281 *
    7382 *
    74  *  \date 2013-02-07
     83 *  \date 2014-03-10
    7584 *
    7685 */
  • src/documentation/constructs/atoms.dox

    r74459a rcaece4  
    33 * Description: creates and alters molecular systems
    44 * Copyright (C)  2010 University of Bonn. All rights reserved.
     5 * Copyright (C)  2014 Frederik Heber. All rights reserved.
    56 * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
    67 */
     
    6566 * -# CopyAtoms_Simple: Fills the internal set with true copies.
    6667 * -# CopyAtoms_withBonds: Additionally also adds bonds in between the copies
    67  *    as they exist in between the original atoms.
     68 *    when they exist in between the original atoms.
    6869 * -# CopyAtoms_SaturateDanglingBonds: additionally checks for cut bond that
    6970 *    would now become dangling bonds and inserts additional hydrogens for
  • src/documentation/constructs/bondgraph.dox

    r74459a rcaece4  
    1919 * externally given bond table that gives typical bond lengths per element.
    2020 *
    21  * The BondGraph's main working horse is the BondGraph::CreateAdjacency()
     21 * The BondGraph's main work horse is the BondGraph::CreateAdjacency()
    2222 * function. It is strongly connected to the following graph actions:
    2323 * - GraphCreateAdjacencyAction
    2424 * - GraphSubgraphDissectionAction
    2525 *
    26  * Therein, the bond structure is recognized again from scratch or/and the
     26 * Therein, the bond structure is recognized from scratch or/and the
    2727 * molecules afterwards represent disconnected subgraphs.
    2828 *
  • src/documentation/constructs/filling.dox

    r74459a rcaece4  
    1515/** \page filling Filling a domain
    1616 *
    17  * The idea behind filling a domain is to cluster it with a set of nodes,
    18  * i.e. a position in space in such a way that e.g. around node is sufficient
     17 * The idea behind filling a domain is to cluster it with a set of \b nodes,
     18 * i.e. a position in space in such a way that e.g. around a node is sufficient
    1919 * space to fill in the desired molecule. The logic of generating the nodes
    2020 * is responsible to create them in such a way as to allow for dense (or
     
    2323 * filling the specific domain (sphere, ellipsoid, cuboid, pyramid, ...)
    2424 * in the best possible way.
    25  * Whether each node can be filled is then to be decided by a predicate.
     25 * Whether each node can be filled is then to be decided by a \b predicate.
    2626 *
    2727 * The filling routine uses then both to traverse the given nodes and
     
    4040 *
    4141 * The node generation is basically just a point or mesh generator that fills
    42  * a specified region (best would be based on the class Shape) with a mesh in
    43  * such a way as to fulfill certain criteria:
     42 * a specified region based on the class Shape with a mesh in such a way as to
     43 * fulfill certain criteria:
    4444 *
    4545 *    -# equidistant
     
    5555 * be composable via logic operators such as || (or), && (and), ! (not), ...
    5656 *
    57  * Note that each predicate receives on construction all the required
     57 * \note each predicate receives on construction all the required
    5858 * information, e.g. LinkedCell_View or Tesselation references or objects, ...
    5959 *
     
    6565 *
    6666 * It rejects all nodes that evaluate to false, the list of valid points is
    67  * then traversed again and at each node a Cluster is created.
     67 * then traversed again and at each node a Cluster is created by the copy method.
    6868 *
    6969 * Note that we rely on \ref Cluster's, objects containing a set of atomicId_t
    70  * and that are inside a contained \ref Shape, to fill at each node. We use
     70 * and a \ref Shape, containing all of these atoms, to fill at each node. We use
    7171 * Cluster::clone() to create a copy that is subsequently placed at the desired
    7272 * node via an \ref Inserter functor. This allows to either simply shift the
     
    7575 *
    7676 *
    77  * \date 2012-01-16
     77 * \date 2014-03-10
    7878 */
  • src/documentation/constructs/fragmentation.dox

    r74459a rcaece4  
    1818 * molecular system into fragments. This is part of the so-called BOSSANOVA
    1919 * (Bond Order diSSection in an ANOVA-like fashion) approach to get linear
    20  * scaling complexity for ab-initio quantum chemistry methods.
     20 * scaling complexity for ab-initio quantum chemistry methods. This method is
     21 * explained in the doctoral thesis of Frederik Heber.
    2122 *
     23 * \secton fragmentation-fragmentation Fragmenting molecules
     24 *
     25 * Everything starts in the Action FragmentationFragmentationAction. We require
     26 * a list of selected atoms. These are browsed and we note down all the associated
     27 * molecules (fragmentation is molecule-based). Subsequently, we make sure that
     28 * the bond degree has correct bond degress with respect to the selected set.
     29 * Then, Fragmentation is created for each molecule in the list.
    2230 * The class Fragmentation contains with Fragmentation::FragmentMolecule()
    23  * the main routine that dissect a given system and stores the fragments
    24  * as configuration files.
     31 * the main routine that dissect a given molecule
     32 * Afterwards, all KeySet's are obtained as a Graph from the Fragmentation
     33 * instance and combined into a single graph.
     34 * Via a depth first search analysis cycles are detected and added as
     35 * cycle fragments to this sets of KeySet.
     36 * Finally, all fragments are placed in the FragmentationResultContainer.
    2537 *
    26  * After these have been treated with a supported ab-initio solver, the
    27  * energies and forces can be put together via \b joiner to approximation
     38 * If desired, \b inter-fragments, that fragments are combined if they are only
     39 * a certain distance apart from another and their summed fragmentation orders
     40 * do not exceed the specified value. This is required for local correlation
     41 * calculation. Otherwise correlation is only calculated (if supported by the
     42 * solver) within covalently connected fragments, i.e. we do not get any van
     43 * der Waals interactions.
     44 *
     45 * These fragments may be exported to file if output file types \sa fileformats
     46 * are given. There, the current FormatParserParameters are used. If none are
     47 * given, fragments remain in the FragmentationResultContainer.
     48 *
     49 * \secton fragmentation-automation Calculating fragments
     50 *
     51 * If then FragmentationFragmentationAutomationAction is used, these are converted
     52 * into MPQCJobs (and VMGJobs) that are passed on via a network connection to a
     53 * JobMarket's server as a FragmentJob.
     54 * Any idling connected clients will then process each one of the jobs until the
     55 * whole bundle is completed. The Action checks on the current tatus of the jobs
     56 * and requests any finished jobs (FragmentResult).
     57 * After all jobs' results have been received, they are stored in
     58 * FragmentationShortRangeResults and FragmentationLongrangeResults.
     59 * FragmentationAnalyseFragmentResultsAction will process both these results and
     60 * sum up the approximate energy and forces (where these are set as the atoms'
     61 * forces for the current time step).
     62 *
     63 * Alternatively to automation, where everything is done inside MoleCuilder, one
     64 * may also use the exported files to calculate an approximation. To this end,
     65 * the energies and forces are put together via \b joiner to approximation
    2866 * to the total energy and forces of the whole molecular system. Later,
    2967 * \b analyzer additionally gives data on how good this approximation has
     
    3169 *
    3270 *
    33  * \date 2011-10-31
     71 * \date 2014-03-10
    3472 *
    3573 */
  • src/documentation/constructs/potentials.dox

    r74459a rcaece4  
    2020 * bond structure into connected subgraphs, calculating the energies of the
    2121 * fragments (ab-initio) and summing up to a good approximation of the total
    22  * energy of the whole system.
     22 * energy of the whole system, \sa fragmentation.
    2323 * Second, having calculated these energies, there quickly comes up the thought
    2424 * that one actually calculates quite similar systems all time and if one could
     
    2929 * distances within a molecular fragment (i.e. the bond lengths) in order to
    3030 * give a value for the total energy without the need to solve a complex
    31  * ab-initio model.
     31 * ab-initio model (essentially, not solving the electronic Schrödinger equation
     32 * anymore).
    3233 *
    3334 * Empirical potentials have been thought of by fellows such as Lennard-Jones,
     
    8586 *  h2o += 8,1,1;
    8687 *  // TrainingData needs so called Extractors to get the required distances
    87  *  // from the stored fragment. These are functions are bound.
     88 *  // from the stored fragment. These functions are bound via boost::bind.
    8889 *  TrainingData AngleData(
    8990 *      boost::bind(&Extractors::gatherDistancesFromFragment,
  • src/documentation/constructs/serialization.dox

    r74459a rcaece4  
    1717/** \page serialization Serialization
    1818 *
    19  *  Serialization is a mighty concept. The is only possible within an object-
     19 *  Serialization is a mighty concept. This is only possible within an object-
    2020 *  oriented framework. The member variables of a class make up its internal
    2121 *  state. By storing this state, creating another instance and restoring
     
    2323 *  we obtain additional control as to the moment of restoration because the
    2424 *  internal state is stored temporarily. To allow for this storage all of
    25  *  these variables have to be \e serialized.
     25 *  these variables have to be \e serializable.
    2626 *
    2727 *  Serialization refers to putting one after another into a writable form
     
    114114 *  again make it a friend).
    115115 *
     116 *  \subsection serialization-add-complicated The more complicated case
     117 *
     118 *  Noted the additional \a version parameter up there in the serialize functions'
     119 *  signature? When classes change, we might still want to be able to parse in
     120 *  older states. As as state is always written to a default constructed object.
     121 *  this is possible. You can check the version variable like this to make your
     122 *  function compatible with older functions.
     123 *
     124 *  \code
     125 *    void serialize(Archive & ar, const unsigned int version) const
     126 *    {
     127 *      ar & content;
     128 *      if (version > 0)
     129 *        are & newcontent;
     130 *    }
     131 *    ...
     132 *    double newcontent;
     133 *  };
     134 *  \endcode
     135 *
     136 *  The version itself is set as follows,
     137 *  \code
     138 *    BOOST_CLASS_VERSION(foo, 1)
     139 *  \endcode
     140 *  where you give the name of your class and the version.
     141 *
    116142 *  \subsection serialization-important notes Some important notes
    117143 *
     
    119145 *  a stupid mistake is introduced that is trivial once understand but hard
    120146 *  to find otherwise. This is especially so because compiler errors with
    121  *  respect to the serialization part are always length (whole page) and
     147 *  respect to the serialization part are always lengthy (whole page) and
    122148 *  very hard to read:
    123149 *  \li Always obtain the same type from an archive that you put into it!
     
    151177 *    boost::serialization::base_object<base type>(*this);
    152178 *    \endcode
     179 *  \li When you have code in header and implementation module, boost might get
     180      confused, use \code BOOST_CLASS_EXPORT_KEY(foo) \endcode and
     181          \code BOOST_CLASS_EXPORT_IMPLEMENT(foo) \encode for this.
     182 *  \li The only other issues encountered so far is that a class needs to get
     183 *    instantiated. Otherwise its (templated) serialization code is not present.
     184 *    There are ..._EXPORT keywords in boost::serialization for this. Similarly
     185 *    required when just the base class is created/instantiated but you also need
     186 *    derived classes.
     187 *  \li The boost::serialization documentation is in general quite helpful. Use
     188 *    above mentioned keywords to look for more information.
    153189 *
    154190 *
    155  * \date 2011-11-01
     191 * \date 2014-03-10
    156192 */
  • src/documentation/constructs/shaperegistry.dox

    r74459a rcaece4  
    22 * Project: MoleCuilder
    33 * Description: creates and alters molecular systems
    4  * Copyright (C)  2010 University of Bonn. All rights reserved.
     4 * Copyright (C)  2013 University of Bonn. All rights reserved.
    55 * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
    66 */
     
    4040 * registry.
    4141 *
    42  * It is planned to create a more specialized ShapeTesselation class. Basic
    43  * shapes (sphere, cube, etc.) would have predefined meshes. For combined
     42 * \todo It is planned to create a more specialized ShapeTesselation class.
     43 * Basic shapes (sphere, cube, etc.) would have predefined meshes. For combined
    4444 * shaped these basic meshes could then be intersected. That would be faster
    4545 * and allow correct rendering of topologically nontrivial shapes.
  • src/documentation/constructs/shapes.dox

    r74459a rcaece4  
    3333 * space, here via a tesselated mesh.
    3434 *
     35 * \section shapes-constructive-geometry Constructive Geometry
     36 *
    3537 * Again, Shapes can be joined via boolean operators:
    3638 * - add
     
    3840 * - not
    3941 *
    40  * And thus are a very powerful concept.
     42 * And thus are a very powerful concept called constructive geometry.
    4143 *
    4244 * E.g. a shape can be used like this
     
    4850 *
    4951 *
    50  * \date 2013-02-07
     52 * \date 2014-03-10
    5153 *
    5254 */
  • src/documentation/constructs/tesselation.dox

    r74459a rcaece4  
    2323 *
    2424 * In the tesselation all atoms act as possible hindrance to a rolling sphere
    25  * that moves in from infinity. whenever it rests uniquely on three distinct
    26  * points (atoms) a triangle is created. The algorithm continues by flipping the
     25 * that moves in from infinity. Whenever it rests uniquely on three distinct
     26 * points (atoms) a triangle is created. The algorithm continues by pushing the
    2727 * sphere over one of the triangle's edges to eventually obtain a closed,
    28  * tesselated surface of the molecule.
     28 * tesselated surface of the whole molecule.
    2929 *
    3030 * \note This mesh is different to the usual sense of a molecular surface as
    3131 * atoms are directly located on it. Normally, one considers a so-called
    32  * Van-der-Waals sphere around the atoms and tesselates over these. However,
    33  * the mesh can easily be modified and even expanded to match the other
    34  * (although the code for that is not yet fully implemented).
     32 * Van-der-Waals sphere around the atoms and tesselates over these.
     33 * \todo However, the mesh can easily be modified and even expanded to match the
     34 * other (although the code for that is not yet fully implemented).
    3535 *
    3636 * \section tesselation-extension
     
    4444 * van-der-Waals spheres.
    4545 *
    46  * \date 2011-10-31
     46 * Note that it is possible to select a number of atoms and create a bounding box
     47 * from a combination of spheres with van der Waals radii.
     48 *
     49 * \date 2014-03-10
    4750 *
    4851 */
  • src/documentation/constructs/validators.dox

    r74459a rcaece4  
    1717 *
    1818 * Validators define constraints for variables. A given variable can be
    19  * testet whether or not it fulfills the constraints by executing the
    20  * validator's isValid() function. Equivalently the operator::() can be used.
     19 * tested whether or not it fulfills the constraints by executing the
     20 * validator's isValid() function. Equivalently the Validator::operator()
     21 * can be used.
    2122 *
    2223 * Their main purpose is to constrain user input for \ref parameters in \ref actions.
     
    3334 * \endcode
    3435 *
    35  * The type of the variale is static. The base class Validator has a template parameter
    36  * to define the type. Some derived validators don't have template parameters because
    37  * they are derived from a Validator<SomeFixedType>.
     36 * The type of the variable is static. The base class Validator has a template
     37 * parameter to define the type. Some derived validators don't have template
     38 * parameters because they are derived from a Validator<SomeFixedType>.
    3839 *
    3940 * \date 2013-01-28
Note: See TracChangeset for help on using the changeset viewer.