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:

  1. Sort subsystems by length (remembering their original offset)

  2. Let \(\eta\) be the length of the largest subsystem(s)

  3. Set \(n\) to \(\eta\)

  4. Let \(c^n_i\) be the weight for the \(i\)-th subsystem of length \(n\); set :math:c^n_i: to 1.0.

  5. Loop over subsystem lengths \(m\) such that \(m>n\).

    1. 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\)

  6. 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, and

  • Description : 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.