Changeset caece4 for src/documentation/constructs
- Timestamp:
- May 20, 2014, 9:14:56 AM (11 years ago)
- 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)
- Location:
- src/documentation/constructs
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
src/documentation/constructs/actions.dox
r74459a rcaece4 3 3 * Description: creates and alters molecular systems 4 4 * Copyright (C) 2010 University of Bonn. All rights reserved. 5 * Copyright (C) 2014 Frederik Heber. All rights reserved. 5 6 * Please see the LICENSE file or "Copyright notice" in builder.cpp for details. 6 7 */ … … 26 27 * the Action does. 27 28 * 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. 29 32 * 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. 32 37 * 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. 38 44 * 39 45 * Also there is a regression test (\ref regression-test) for each Action to 40 46 * 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. 42 49 * 43 50 * \section actions-add To add a new action ... … … 53 60 * 54 61 * 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(). 56 63 * 57 64 * Note that undoing means to get everything back to its original state and by whatever … … 61 68 * E.g. if your Action creates some new atoms, store their info as \ref AtomicInfo. 62 69 * 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. 64 73 * 65 74 * Have a look at \ref UndoRedoHelpers.hpp for some helper functions on this. … … 72 81 * 73 82 * 74 * \date 201 3-02-0783 * \date 2014-03-10 75 84 * 76 85 */ -
src/documentation/constructs/atoms.dox
r74459a rcaece4 3 3 * Description: creates and alters molecular systems 4 4 * Copyright (C) 2010 University of Bonn. All rights reserved. 5 * Copyright (C) 2014 Frederik Heber. All rights reserved. 5 6 * Please see the LICENSE file or "Copyright notice" in builder.cpp for details. 6 7 */ … … 65 66 * -# CopyAtoms_Simple: Fills the internal set with true copies. 66 67 * -# CopyAtoms_withBonds: Additionally also adds bonds in between the copies 67 * asthey exist in between the original atoms.68 * when they exist in between the original atoms. 68 69 * -# CopyAtoms_SaturateDanglingBonds: additionally checks for cut bond that 69 70 * would now become dangling bonds and inserts additional hydrogens for -
src/documentation/constructs/bondgraph.dox
r74459a rcaece4 19 19 * externally given bond table that gives typical bond lengths per element. 20 20 * 21 * The BondGraph's main work inghorse is the BondGraph::CreateAdjacency()21 * The BondGraph's main work horse is the BondGraph::CreateAdjacency() 22 22 * function. It is strongly connected to the following graph actions: 23 23 * - GraphCreateAdjacencyAction 24 24 * - GraphSubgraphDissectionAction 25 25 * 26 * Therein, the bond structure is recognized againfrom scratch or/and the26 * Therein, the bond structure is recognized from scratch or/and the 27 27 * molecules afterwards represent disconnected subgraphs. 28 28 * -
src/documentation/constructs/filling.dox
r74459a rcaece4 15 15 /** \page filling Filling a domain 16 16 * 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 sufficient17 * 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 19 19 * space to fill in the desired molecule. The logic of generating the nodes 20 20 * is responsible to create them in such a way as to allow for dense (or … … 23 23 * filling the specific domain (sphere, ellipsoid, cuboid, pyramid, ...) 24 24 * 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. 26 26 * 27 27 * The filling routine uses then both to traverse the given nodes and … … 40 40 * 41 41 * 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 in43 * such a way as tofulfill certain criteria:42 * a specified region based on the class Shape with a mesh in such a way as to 43 * fulfill certain criteria: 44 44 * 45 45 * -# equidistant … … 55 55 * be composable via logic operators such as || (or), && (and), ! (not), ... 56 56 * 57 * Note thateach predicate receives on construction all the required57 * \note each predicate receives on construction all the required 58 58 * information, e.g. LinkedCell_View or Tesselation references or objects, ... 59 59 * … … 65 65 * 66 66 * 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. 68 68 * 69 69 * 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 use70 * and a \ref Shape, containing all of these atoms, to fill at each node. We use 71 71 * Cluster::clone() to create a copy that is subsequently placed at the desired 72 72 * node via an \ref Inserter functor. This allows to either simply shift the … … 75 75 * 76 76 * 77 * \date 201 2-01-1677 * \date 2014-03-10 78 78 */ -
src/documentation/constructs/fragmentation.dox
r74459a rcaece4 18 18 * molecular system into fragments. This is part of the so-called BOSSANOVA 19 19 * (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. 21 22 * 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. 22 30 * 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. 25 37 * 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 28 66 * to the total energy and forces of the whole molecular system. Later, 29 67 * \b analyzer additionally gives data on how good this approximation has … … 31 69 * 32 70 * 33 * \date 201 1-10-3171 * \date 2014-03-10 34 72 * 35 73 */ -
src/documentation/constructs/potentials.dox
r74459a rcaece4 20 20 * bond structure into connected subgraphs, calculating the energies of the 21 21 * 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. 23 23 * Second, having calculated these energies, there quickly comes up the thought 24 24 * that one actually calculates quite similar systems all time and if one could … … 29 29 * distances within a molecular fragment (i.e. the bond lengths) in order to 30 30 * 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). 32 33 * 33 34 * Empirical potentials have been thought of by fellows such as Lennard-Jones, … … 85 86 * h2o += 8,1,1; 86 87 * // 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. 88 89 * TrainingData AngleData( 89 90 * boost::bind(&Extractors::gatherDistancesFromFragment, -
src/documentation/constructs/serialization.dox
r74459a rcaece4 17 17 /** \page serialization Serialization 18 18 * 19 * Serialization is a mighty concept. Th eis only possible within an object-19 * Serialization is a mighty concept. This is only possible within an object- 20 20 * oriented framework. The member variables of a class make up its internal 21 21 * state. By storing this state, creating another instance and restoring … … 23 23 * we obtain additional control as to the moment of restoration because the 24 24 * internal state is stored temporarily. To allow for this storage all of 25 * these variables have to be \e serializ ed.25 * these variables have to be \e serializable. 26 26 * 27 27 * Serialization refers to putting one after another into a writable form … … 114 114 * again make it a friend). 115 115 * 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 * 116 142 * \subsection serialization-important notes Some important notes 117 143 * … … 119 145 * a stupid mistake is introduced that is trivial once understand but hard 120 146 * to find otherwise. This is especially so because compiler errors with 121 * respect to the serialization part are always length (whole page) and147 * respect to the serialization part are always lengthy (whole page) and 122 148 * very hard to read: 123 149 * \li Always obtain the same type from an archive that you put into it! … … 151 177 * boost::serialization::base_object<base type>(*this); 152 178 * \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. 153 189 * 154 190 * 155 * \date 201 1-11-01191 * \date 2014-03-10 156 192 */ -
src/documentation/constructs/shaperegistry.dox
r74459a rcaece4 2 2 * Project: MoleCuilder 3 3 * Description: creates and alters molecular systems 4 * Copyright (C) 201 0University of Bonn. All rights reserved.4 * Copyright (C) 2013 University of Bonn. All rights reserved. 5 5 * Please see the LICENSE file or "Copyright notice" in builder.cpp for details. 6 6 */ … … 40 40 * registry. 41 41 * 42 * It is planned to create a more specialized ShapeTesselation class. Basic43 * shapes (sphere, cube, etc.) would have predefined meshes. For combined42 * \todo It is planned to create a more specialized ShapeTesselation class. 43 * Basic shapes (sphere, cube, etc.) would have predefined meshes. For combined 44 44 * shaped these basic meshes could then be intersected. That would be faster 45 45 * and allow correct rendering of topologically nontrivial shapes. -
src/documentation/constructs/shapes.dox
r74459a rcaece4 33 33 * space, here via a tesselated mesh. 34 34 * 35 * \section shapes-constructive-geometry Constructive Geometry 36 * 35 37 * Again, Shapes can be joined via boolean operators: 36 38 * - add … … 38 40 * - not 39 41 * 40 * And thus are a very powerful concept .42 * And thus are a very powerful concept called constructive geometry. 41 43 * 42 44 * E.g. a shape can be used like this … … 48 50 * 49 51 * 50 * \date 201 3-02-0752 * \date 2014-03-10 51 53 * 52 54 */ -
src/documentation/constructs/tesselation.dox
r74459a rcaece4 23 23 * 24 24 * 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 distinct26 * points (atoms) a triangle is created. The algorithm continues by flipping the25 * 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 27 27 * 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. 29 29 * 30 30 * \note This mesh is different to the usual sense of a molecular surface as 31 31 * 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 other34 * (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). 35 35 * 36 36 * \section tesselation-extension … … 44 44 * van-der-Waals spheres. 45 45 * 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 47 50 * 48 51 */ -
src/documentation/constructs/validators.dox
r74459a rcaece4 17 17 * 18 18 * 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. 21 22 * 22 23 * Their main purpose is to constrain user input for \ref parameters in \ref actions. … … 33 34 * \endcode 34 35 * 35 * The type of the varia le is static. The base class Validator has a template parameter36 * to define the type. Some derived validators don't have template parameters because37 * 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>. 38 39 * 39 40 * \date 2013-01-28
Note:
See TracChangeset
for help on using the changeset viewer.