File MNDORepulsionEnergy.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 MNDORepulsionEnergy : public RepulsionCalculator
#include <MNDORepulsionEnergy.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 pairRepulsion_t = std::unique_ptr<MNDOPairwiseRepulsion>
using Container = std::vector<std::vector<pairRepulsion_t>>

Public Functions

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

Constructor.

~MNDORepulsionEnergy()

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_
const Utils::ElementTypeCollection &elementTypes_
const Utils::PositionCollection &positions_