File BondOrderCollection.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 BondOrderCollection
#include <BondOrderCollection.h>

Class defining the bond orders between atoms of some molecular system.

Public Functions

BondOrderCollection()

Default Constructor.

BondOrderCollection(int numberAtoms)

Create an empty collection.

Parameters
  • numberAtoms: The number of atoms.

bool empty() const

Whether this collection is empty, i.e.

whether there are any non-zero bond orders in this collection

const Eigen::SparseMatrix<double> &getMatrix() const

Get the Matrix.

Return

const Eigen::SparseMatrix<double>& The bond order matrix. This is a symmetric matrix.

template<typename T>
void setMatrix(T &&bondOrderMatrix)

Set the Matrix.

Template Parameters
  • T: Any matrix type.

Parameters
  • bondOrderMatrix: The new matrix. This must be a symmetric matrix.

void resize(int numberAtoms)

Resize the matrix.

This operation does not preserve any existing values.

Parameters
  • numberAtoms: The new number of atoms.

void setZero()

Set all bond orders to zero and frees the memory.

template<typename Index = int>
Index getSystemSize() const

Get the system size.

Return

int Returns the number of atoms considered in the BondOrderCollection.

Template Parameters
  • Index: The type of the index desired. Defaults to integer

template<typename Index>
void setOrder(Index i, Index j, double order)

Set the bond order.

Sets both \(M_{ij}\) and \(M_{ji}\)

Template Parameters
  • Index:

Parameters
  • i: The index of the first atom.

  • j: The index of the second atom.

  • double: The new bond order.

template<typename Index>
double getOrder(Index i, Index j) const

Get the Order object.

Return

double The bond order.

Template Parameters
  • Index:

Parameters
  • i: The index of the first atom.

  • j: The index of the second atom.

bool operator==(const BondOrderCollection &other) const

Checks whether two bond order collections are approximately equal.

Note

Uses Eigen’s isApprox to fuzzy-compare. Elements in both matrices need not be exactly the same.

Return

Whether the matrices are approximately the same

Parameters
  • other: The other bond order collection to compare against

bool operator!=(const BondOrderCollection &other) const

Negates.

See

operator ==

Private Members

Eigen::SparseMatrix<double> bondOrderMatrix_