File SinglePointMethod.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

This header file contains functions that allow for common notation for common things that can be done at a different degree of derivatives.

This header contains alias definitions defining which classes to use for the different degrees of derivatives.

namespace Utils
class SinglePointMethod
#include <SinglePointMethod.h>

This class is the base class of any method to be used in Real-time quantum chemistry. It contain declarations for variables methods concerning energy and gradients.

Subclassed by Scine::Utils::LCAOMethod

Public Functions

SinglePointMethod(Utils::derivOrder maximalOrder)
virtual ~SinglePointMethod()
virtual void calculate(Utils::derivativeType d) = 0

Performs one single-point calculation of the energy.

Parameters
  • derivativesOrder: which derivative to calculate up to, if possible.

void setAtomCollection(const Utils::AtomCollection &structure)
void initializeStructure(const Utils::ElementTypeCollection &elements, const Utils::PositionCollection &positions)

Set up the structure from the positions and element types.

Parameters
  • positions: Vector of positions, in bohr.

void initializeStructure(const Utils::ElementTypeCollection &elements)

Set up the structure from the element types.

void setPositions(Utils::PositionCollection positions)

Update the positions. Do not use to initialize the structure!.

const Utils::PositionCollection &getPositions() const

Get the positions (bohr).

const Utils::GradientCollection &getGradients() const

Get the gradients (Hartree / bohr).

const Utils::AtomicSecondDerivativeCollection &getAtomicSecondDerivatives() const

Get the second derivatives with respect to the single atomic nuclei (Hartree / bohr^2).

const Utils::FullSecondDerivativeCollection &getFullSecondDerivatives() const

Get the full second derivatives containers.

const Utils::ElementTypeCollection &getElementTypes() const

Get the elements.

bool canCalculateSecondDerivatives() const

Returns true if the method is able to calculate second derivatives.

const Utils::BondOrderCollection &getBondOrderCollection() const

Returns the lower-triangular bond-order matrix.

void setBondOrderCollection(const Utils::BondOrderCollection &B)
int getNumberAtoms() const
double getEnergy() const

Function returning the energy in Hartree.

void setEnergy(double energy)

Set the energy in Hartree.

const std::vector<double> &getAtomicCharges() const
double getAtomicCharge(int index) const
void setAtomicCharges(const std::vector<double> &charges)
void startLogger(const std::string &loggerSeverity) const

starts the Utils::Logger so that the static function can in fact be operated from outside of the module boundaries.

Protected Functions

void resizeRealTimeMethodMembers()

Resets the size of gradients_, positions_, bondOrderMatrix_ and atomicCharges_. To be called during initialization of the specific method.

Protected Attributes

Utils::BondOrderCollection bondOrders_
Utils::ElementTypeCollection elementTypes_
Utils::PositionCollection positions_
const Utils::derivOrder maximalCalculableDerivativeOrder_
Utils::GradientCollection gradients_
Utils::AtomicSecondDerivativeCollection secondDerivatives_
Utils::FullSecondDerivativeCollection fullSecondDerivatives_
std::vector<double> atomicCharges_
double energy_