File AM1RepulsionEnergy.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
class AM1RepulsionEnergy : public RepulsionCalculator
#include <AM1RepulsionEnergy.h>

This class sums up the core-core repulsion energies and the corresponding derivatives with respect to the nuclear cartesian coordinate between all pairs of cores.

It inherits from Utils::RepulsionCalculator in order for it to work with the LCAO/ScfMethod polymorphic system.

Public Types

using PairRepulsionType = std::unique_ptr<AM1PairwiseRepulsion>
using Container = std::vector<std::vector<PairRepulsionType>>

Public Functions

AM1RepulsionEnergy(const Utils::ElementTypeCollection &elements, const Utils::PositionCollection &positions, const ElementParameters &elementParameters)

Constructor.

~AM1RepulsionEnergy()

Overrides virtual base class desctructor with default implementation.

void initialize()

Initializes the core-core repulsion pairs.

void calculateRepulsion(Utils::derivOrder order)

Starts the calculation of the core-core repulsion up to the.

Parameters
  • order: derivative order.

double getRepulsionEnergy() const

Sums up all the single core-core contributions to return the overall core-core repulsion energy.

void addRepulsionDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType<Utils::derivativeType::first> &derivatives) const

Functions calculating the core-core derivative contributions up to the corresponding derivative order.

void addRepulsionDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType<Utils::derivativeType::second_atomic> &derivatives) const
void addRepulsionDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType<Utils::derivativeType::second_full> &derivatives) const

Private Functions

template<Utils::derivativeType O>
void addRepulsionDerivativesImpl(Utils::AutomaticDifferentiation::DerivativeContainerType<O> &derivatives) const
void calculatePairRepulsion(int i, int j, Utils::derivOrder order)
void initializePair(int i, int j)

Private Members

const ElementParameters &elementParameters_
Container rep_
int nAtoms_