| [ce133f] | 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 | /**
 | 
|---|
| [19bc74] | 9 |  * \file fragmentation.dox
 | 
|---|
| [ce133f] | 10 |  *
 | 
|---|
| [19bc74] | 11 |  * Created on: Oct 28, 2011
 | 
|---|
| [ce133f] | 12 |  *    Author: heber
 | 
|---|
 | 13 |  */
 | 
|---|
| [750cff] | 14 | 
 | 
|---|
 | 15 | /** \page fragmentation Fragmentation
 | 
|---|
 | 16 |  *
 | 
|---|
 | 17 |  * Fragmentation contains all routines that are required to split a given
 | 
|---|
 | 18 |  * molecular system into fragments. This is part of the so-called BOSSANOVA
 | 
|---|
 | 19 |  * (Bond Order diSSection in an ANOVA-like fashion) approach to get linear
 | 
|---|
| [caece4] | 20 |  * scaling complexity for ab-initio quantum chemistry methods. This method is
 | 
|---|
 | 21 |  * explained in the doctoral thesis of Frederik Heber.
 | 
|---|
| [750cff] | 22 |  *
 | 
|---|
| [caece4] | 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.
 | 
|---|
| [750cff] | 30 |  * The class Fragmentation contains with Fragmentation::FragmentMolecule()
 | 
|---|
| [caece4] | 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.
 | 
|---|
 | 37 |  *
 | 
|---|
 | 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
 | 
|---|
| [750cff] | 50 |  *
 | 
|---|
| [caece4] | 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
 | 
|---|
| [750cff] | 66 |  * to the total energy and forces of the whole molecular system. Later,
 | 
|---|
 | 67 |  * \b analyzer additionally gives data on how good this approximation has
 | 
|---|
 | 68 |  * worked out in plotable format.
 | 
|---|
 | 69 |  *
 | 
|---|
 | 70 |  *
 | 
|---|
| [caece4] | 71 |  * \date 2014-03-10
 | 
|---|
| [750cff] | 72 |  *
 | 
|---|
 | 73 |  */
 | 
|---|