File MultipoleMultipoleInteractionContainer.h

Copyright

This code is licensed under the 3-clause BSD license.

Copyright ETH Zurich, Laboratory for Physical Chemistry, Reiher Group.

See LICENSE.txt for details.

namespace Scine
namespace Sparrow
namespace nddo
namespace multipole
class MultipoleMultipoleInteractionContainer
#include <MultipoleMultipoleInteractionContainer.h>

This class keeps a list of terms of charge-charge-interactions for a pair of multipoles.

All the possible interactions can be stored in a 13x13 matrix, as there are 13 multipole types: 1 monopole, 3 dipoles, 3 linear quadrupoles, 3 square quadrupoles with charges between the axis, 3 square quadrupoles with charges along the axis.

Public Types

using InteractionLists = std::array<std::array<MultipoleMultipoleInteraction, 13>, 13>

InteractionLists is the matrix storing the 13x13 possible interactions.

Public Static Functions

template<Utils::derivOrder O>
static Utils::AutomaticDifferentiation::Value1DType<O> calculate(multipole_t m1, multipole_t m2, double R, double D1, double d2, double squaredRhos)

this function calculates all the possible interactions between the two multipoles m1 and m2

Return

an Utils::AutomaticDifferentiation::Value1D<O>, i.e. a collection of all the derivative orders up to the O-th for a 1-dimensional object

Template Parameters
  • O: The order of the derivative required

Parameters
  • m1: The first multipole

  • m2: The second multipole

  • R: The distance between the two multipole centers

  • D1: The charge separation in the first multipole

  • d2: The charge separation in the second multipole

  • squaredRhos: The squared Klopman-Ohno parameters

const MultipoleMultipoleInteraction &get(multipole_t m1, multipole_t m2)

The function generated the list of multipole interactions statically, and then returns a MultipoleMultipoleInteraction object with these two multipoles.

Private Static Functions

static InteractionLists generateTermLists()
static MultipoleMultipoleInteraction termList(multipole_t m1, multipole_t m2)