Changeset 3cfb31 for src/documentation/constructs
- Timestamp:
- Jul 3, 2017, 3:06:53 PM (8 years ago)
- Branches:
- Action_Thermostats, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_StructOpt_integration_tests, AutomationFragmentation_failures, Candidate_v1.6.1, ChemicalSpaceEvaluator, EmpiricalPotential_contain_HomologyGraph_documentation, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, Fix_Verbose_Codepatterns, ForceAnnealing_oldresults, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, Gui_displays_atomic_force_velocity, IndependentFragmentGrids_IntegrationTest, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, PythonUI_with_named_parameters, Recreated_GuiChecks, StoppableMakroAction, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps
- Children:
- 95b64f
- Parents:
- b52710e
- git-author:
- Frederik Heber <heber@…> (03/01/17 20:36:01)
- git-committer:
- Frederik Heber <frederik.heber@…> (07/03/17 15:06:53)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/documentation/constructs/potentials.dox
rb52710e r3cfb31 21 21 * fragments (ab-initio) and summing up to a good approximation of the total 22 22 * energy of the whole system, \sa fragmentation. 23 * Second, having calculated these energies, there quickly comes up the thought23 * Second, having calculated these energies, there quickly comes up the idea 24 24 * that one actually calculates quite similar systems all time and if one could 25 25 * not cache results in an intelligent (i.e. interpolating) fashion ... … … 30 30 * give a value for the total energy without the need to solve a complex 31 31 * ab-initio model (essentially, not solving the electronic Schrödinger equation 32 * anymore). 32 * anymore). And they are accompanied by a specific binding model that 33 * represents what kind of many-body force is represented by the potential. 33 34 * 34 35 * Empirical potentials have been thought of by fellows such as Lennard-Jones, 35 * Morse, Tersoff, Stillinger and Weber, etc. And in their honor, the36 * potential form isnamed after its inventor. Hence, we speak e.g. of a36 * Morse, Tersoff, Stillinger and Weber, etc. And in their honor, most of the 37 * potential forms are named after its inventor. Hence, we speak e.g. of a 37 38 * Lennard-Jones potential. 38 39 * … … 43 44 * -# evaluate the potential instead of an ab-initio calculation 44 45 * 45 * The terms we use, model the classes that are implemented: 46 * However, we need more: What are similar fragments? How do we perform the 47 * fitting procedure? And as the potentials are mathematical functions, what 48 * arguments do they depend on? 49 * 50 * Similar fragments are those that share the same bond graph, i.e. they have 51 * the same number of nodes and the same number of edges. And each edge is 52 * between the same two elements. 53 * 54 * The fitting procedure works by looking at a training set, i.e. a list of 55 * elements where each contains an energy and a number of arguments, namely 56 * pair-wise distances. The error is then the difference between the energies 57 * in the set and all the energy values that we obtain when we feed the 58 * arguments into the fitted potentials. This error is minimized in the 59 * euclidian norm, i.e. least squares regression. But other norms might be 60 * possible in the future, too. 61 * 62 * And the pair-wise distances, we mentioned are the arguments. 63 * 64 * The terms, that we use, model the classes that are implemented: 46 65 * -# EmpiricalPotential: Contains the interface to a function that can be 47 66 * evaluated given a number of arguments_t, i.e. distances. Also, one might 48 67 * want to evaluate derivatives. 49 * -# FunctionModel: Is a function that can be fitted, i.e. that has internal50 * parameters tobe set and got.68 * -# FunctionModel: Is a function that can be fitted, i.e. it depends on a 69 * set of internal parameters that can be set and got. 51 70 * -# argument_t: The Argument stores not only the distance but also the index 52 71 * pair of the associated atoms and also their charges, to let the potential … … 56 75 * class. 57 76 * -# HomologyGraph: "Similar" fragments in our case have to have the same bond 58 * graph. It is stored in the HomologyGraph that acts as representative 59 * -# HomologyContainer: This container combines, in multimap fashion, all77 * graph. It is stored in the HomologyGraph that acts as representative. 78 * -# HomologyContainer: This container combines, in a ultimap fashion, all 60 79 * similar fragments with their energies together, with the HomologyGraph 61 80 * as their "key". … … 63 82 * the set of distances required for the FunctionModel (e.g. only a single 64 83 * distance/argument for a pair potential, three for an angle potential, 65 * etc.) and also the expected OutputVector . This in combination with the66 * FunctionModel is the basis for the non-linear regression used for the67 * fitting procedure.84 * etc.) and also the expected OutputVector, i.e. the energy of the specific 85 * configuration in our case. This in combination with the FunctionModel is 86 * the basis for the non-linear regression used for the fitting procedure. 68 87 * -# Extractors: These set of functions yield the set of distances from a 69 88 * given fragment that is stored in the HomologyContainer. … … 74 93 * \section potentials-fit-potential-action What happens in FitPotentialAction. 75 94 * 76 * First, either a potential file is parsed via PotentialDeserializer or charges77 * and a potential type from the given options. This is used to instantiate78 * EmpiricalPotentials via the PotentialFactory, stored within the79 * PotentialRegistry. This is the available set of potentials (without requiring80 * any knowledge as to the nature of the fragment employedin fitting).95 * First, charges and a potential type is used from the given options. This 96 * is used to instantiate EmpiricalPotentials via the PotentialFactory, stored 97 * within the PotentialRegistry. This is the available set of potentials 98 * (without requiring any knowledge as to the nature of the fragment employed 99 * in fitting). 81 100 * 82 101 * Second, the given fragment is used to get a suitable HomologyGraph from … … 114 133 * to find the minimum in the L2-norm. 115 134 * 116 * This is done more than once as high-dimensional regression is sensiti tive the135 * This is done more than once as high-dimensional regression is sensitive to 117 136 * the starting values as there are possible numerous local minima. The lowest 118 137 * of the found minima is taken, either via a given threshold or the best of a … … 139 158 * The main issue with the evaluation is picking the right set of distances from 140 159 * ones given in the input vector and feed it to each potential contained in 141 * CompoundPotential. Note that the distances have already been prepared by 142 * the TrainingData instantiation. 160 * CompoundPotential. 143 161 * 144 162 * Initially, the HomologyGraph only contains a list of configurations of a … … 146 164 * energy value. These first have to be converted into distances. 147 165 * 148 * 166 * These distances are prepared by the TrainingData instantiation, i.e. a 167 * fragment with all its atomic positions has already been converted to the 168 * set of all pair-wise interatomic distances. 169 * 170 * \section potentials-distance-picking How does the distance picking work 171 * 172 * Given a set of pair-wise distances, how do we pick the subset of distances 173 * needed by a particular potential. 174 * 175 * Let's make an example first: Imagine a water molecule, i.e. one oxygen and 176 * and two hydrogen atoms with two O-H bonds. Naturally, we obtain three pair- 177 * wise distances, OH1, OH2 and H1H2. Now, we would like to fit a Morse 178 * potential that just depends on a single interatomic distance. We would like 179 * it to represents the O-H bond energy. Hence, the distance picker, namely 180 * the Extractor function, needs to pick any subset of distance that contains 181 * a unique single O-H distance. In effect, it needs to return a list 182 * containing OH1 and OH2 as the Morse potential needs to represent both bond 183 * energies together. 184 * 185 * Now, this is really still quite simple as long as the potential only 186 * depends on a single distance. However, what if we continue and look at a 187 * angle potential, requiring three atoms, i.e. H-O-H? 188 * 189 * Or even more complicated: Imagine an ethane molecule (C2H6) and we would 190 * to represent the H-C-C angular interaction by a harmonic angle potential. 191 * Now, there are multiple of these at the same time, namely six angular 192 * interactions. 193 * 194 * What have to do is look for subgraphs inside a graph. Each potential comes 195 * with a small graph that represents the binding structure, in our terms 196 * the bond model, that we expect. And we need to find the all matching 197 * subgraphs in the whole graph being the fragment itself. Then, for each 198 * subgraph the potential tells us in what order the pair-wise distances 199 * associated with the subgraph are required to be. All of these subset of 200 * distances are eventually concatenated and fed into the model on evaluation. 201 * 149 202 * \section potentials-howto-use Howto use the potentials 150 203 * … … 208 261 * As we always start from random initial parameters (within a certain sensible 209 262 * range at least), the non-linear fit does not always converge. Note that the 210 * random values are drawn from the defined distribution and the uniform distribution m263 * random values are drawn from the defined distribution and the uniform distribution 211 264 * engine is obtained from the currently set, see \ref randomnumbers. Hence, you 212 265 * can manipulate both in order to get different results or to set the seed such that 213 266 * some "randomly" drawn value always work well (e.g. for testing). 214 267 * 215 * In any case, For this casethe FragmentationFitPotentialAction has the option268 * In any case, the FragmentationFitPotentialAction has the option 216 269 * "take-best-of" to allow for multiple fits where the best (in terms of l2 error) 217 270 * is taken eventually. Furthermore, you can use the "set-threshold" option to 218 * stop restarting the fit procedure first when the L2 error has dropped below the219 * giventhreshold.271 * repeat the fit procedure until the L2 error has dropped below the given 272 * threshold. 220 273 * 221 274 * \section potentials-howto-add Howto add new potentials … … 237 290 * 238 291 * 239 * \date 201 3-04-09292 * \date 2017-05-14 240 293 */
Note:
See TracChangeset
for help on using the changeset viewer.