source: src/documentation/constructs/filling.dox@ 0d57cbe

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
Last change on this file since 0d57cbe was b380ed, checked in by Frederik Heber <heber@…>, 13 years ago

DOCU: Added concept for new construct Filling.

  • Property mode set to 100644
File size: 2.6 KB
Line 
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 filling.dox
10 *
11 * Created on: Jan 16, 2012
12 * Author: heber
13 */
14
15/** \page filling Filling a domain
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 sufficient
19 * space to fill in the desired molecule. The logic of generating the nodes
20 * is responsible to create them in such a way as to allow for dense (or
21 * whatever specific) filling is desired. However, we must not make it too
22 * complicated. The generation logic for these nodes should concentrate on
23 * filling the specific domain (sphere, ellipsoid, cuboid, pyramid, ...)
24 * in the best possible way.
25 * Whether each node can be filled is then to ve decided by a predicate.
26 *
27 * The filling routine uses then both to traverse the given nodes and
28 * evaluate the predicate at each.
29 *
30 * Hence, the filling of a domain is abstracted into the following parts:
31 *
32 * -# node generation
33 * -# predicates
34 * -# filling routine
35 *
36 * \section filling-node-generation Node generation
37 *
38 * The node generation is basically just a point or mesh generator that fills
39 * a specified region (best would be based on the class Shape) with a mesh in
40 * such a way as to fulfill certain criteria:
41 *
42 * -# equidistant
43 * -# containing certain primitive volumes (e.g. for fitting polymers)
44 * -# ...
45 *
46 * \section filling-predicate Predicates
47 *
48 * The Predicate pattern has already been used with Descriptors and Shapes.
49 * These are simply function objects that return a boolean value. I.e. they
50 * decide whether the current node in the mesh is vacant and can be filled or
51 * not. As with the predicate() function in the class Descriptor, these should
52 * be composable via logic operators such as , &&, not, ...
53 *
54 * Note that each predicate receives on construction all the required
55 * information, e.g. LinkedCell_View or Tesselation references or objects, ...
56 *
57 * \section filling-filling-routine Filling routine
58 *
59 * The filling routine is then simply a function that goes through the given
60 * number of nodes (completely unaware of the geometry) and evaluates for each
61 * point the given predicates (which might be a composition of other predicates).
62 *
63 * It rejects all nodes that evaluate to false, the list of valid points is
64 * then traversed again and at each node a molecule is created.
65 *
66 *
67 *
68 * \date 2012-01-16
69 */
Note: See TracBrowser for help on using the repository browser.