GMBE Weights
GMBE Fragment Weights
Given the list of subsystems (subsystem being defined as either a fragment or an intersection) this module will determine the weights of each subsystem. This module will NOT add intersections to the input list.
This module adopts the algorithm from DOI:10.1021/jp103074f. More specifically, each subsystem with \(\eta\) nuclei in it represents an \(eta\)-body interaction. Each \(\eta\)-body interaction should only occur once when we sum up the subsystems. Therefore the coefficient of the \(i\)-th subsystem is \(c_i = 1-\sum_{j\supset i}c_j\) where the sum is over the weights of the proper supersets of the \(i\)-th subsystem.
While the non-linear nature of the weights may seem troubling at first, we can exploit the fact that a proper superset must have more members. More specifically, if we start with the supersystem(s) with the most members we know they have weights of 1 because they can’t be subsets of any other subsystem. We can then move on to the next largest subsystem(s) which can only be subsets of the largest subsystem(s). The process then continues with the next largest subsystem(s), so on and so forth. More formally:
Sort subsystems by length (remembering their original offset)
Let \(\eta\) be the length of the largest subsystem(s)
Set \(n\) to \(\eta\)
Let \(c^n_i\) be the weight for the \(i\)-th subsystem of length \(n\); set :math:c^n_i: to 1.0.
Loop over subsystem lengths \(m\) such that \(m>n\).
Loop over subsystems of length \(m\), if the \(j\)-th subsystem of length \(m\) is a supersystem of the \(i\)-th subsystem of length
\(n\) subtract \(c^m_j\) from \(c^n_i\)
Set \(n\) to \(n-1\). If \(n\) is 0 terminate, otherwise return to step 4.
Please Cite
No citations
Property Types
The following is a list of property types that this module satisfies.
ghostfragment::pt::FragmentWeights
Module Inputs
This section details the full list of inputs that the module accepts. Inputs
that are not listed as optional must have their value set before the module can
be run. Inputs can be set manually by calling the module’s change_input
function or by passing arguments to a property type.
Quick Reference
The following table provides a quick summary of the inputs available to this module. The columns are:
Key
: The key used to retrieve the option,Default
: The initial value, if one exists, andDescription
: A human readable description of what the option is used for.
Key |
Default |
Description |
---|---|---|
Fragments |
N/A |
N/A |
Detailed Descriptions
The following subsections provide detailed descriptions of each input recognized by this module. The subsection headings are the name of the input. Within each subsection we list:
Description
: A human readable description of what the option is used for.Default Value
: The initial value, if one exists.Optional?
: Whether the value must be set inorder for the module to run.Opaque?
: Does the value of the input influence memoization?.Domain Restrictions
: Criteria a value must obey to be deemed valid.
Fragments
Description : N/A
Default Value : N/A
Optional? : False
Opaque? : True
Domain Restrictions :
Type == chemist::fragmenting::FragmentedChemicalSystem<chemist::ChemicalSystem>
Module Results
This section tabulates the full list of results that the module returns. The columns respectively are:
Key: What the result is called
Type: The C++ type of the result
Description: What the result is/how it was computed.
Note
A given property type will only return a subset of the available results. Additional results can be accessed by using other property types or by using the Module class’s advanced API.
Key |
Type |
Description |
---|---|---|
Weights |
std::vector<double, std::allocator<double>> |
N/A |
Submodules
The module defines no submodules.