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

A container class for Scine::Utils::PositionCollection classes.

Mainly an override of std::vector<PositionCollection>, plus Element Type information. Generally used for storing the positions of several consecutive molecular structures.

Public Types

using Container = std::vector<PositionCollection>
using EnergyContainer = std::vector<double>
using iterator = Container::iterator
using const_iterator = Container::const_iterator
using reference = Container::reference
using const_reference = Container::const_reference

Public Functions

MolecularTrajectory()

Default constructor.

void setElementType(int index, ElementType e)

Set a single element type.

Parameters
  • index: The index of the atom to be altered

  • e: The element type to be set.

void setElementTypes(const ElementTypeCollection &elements)

Set the all element types.

Parameters
  • elements: The new element types.

const ElementTypeCollection &getElementTypes() const

Get all the element types.

Return

const ElementTypeCollection& A reference to all element types.

void setEnergies(const EnergyContainer &energies)

Setter for the energies.

   Energies can only be set if the size of the energy vector
   matches the size of the structure vector.

Parameters
  • energies: The energies.

EnergyContainer getEnergies() const

Getter for the vector of energies corresponding to the structures.

Return

The vector of energies.

void clearEnergies()

Clears the energy container.

void clear()

Clears all steps in the trajectory, element information is retained.

void resize(int n)

Resets the number of PositionCollections.

Parameters
  • n: Number of PositionCollections.

void push_back(PositionCollection p)

Adds a new set of positions (a frame)

   This function is only usable if no energies have been previously added,
   thus the energy vector has to be empty.

Parameters
  • p: The new positions to be added.

void push_back(PositionCollection p, double e)

Adds a new set of positions (a frame) with a corresponding energy.

   This function is only usable if the energy vector already
   has the same size as the structure vector. Therefore, if a few
   structures are added without an energy, the energies have to be
   first set for the other structures, before this function becomes
   applicable.

Parameters
  • p: The new positions to be added.

  • e: The corresponding energy.

bool empty() const

Checks if there are structures present.

Return

true If no PositionCollections are stored.

false If any PositionCollections are present.

int size() const

Getter for the number of structures.

Return

int Returns the number of stored structures/frames/PositionCollections.

int molecularSize() const

Getter for the size of the structure.

Return

int Returns number of atoms in the structure.

iterator begin()

An iterator pointing to the start of the structures (not the elements!).

Return

iterator The iterator.

const_iterator begin() const

The const version of the start() iterator.

Return

const_iterator The iterator.

iterator erase(iterator position)

Erases one PositionCollection from the stored list.

Return

iterator An iterator to the nex position in the new list.

Parameters
  • position: The position to erase.

iterator end()

An iterator pointing to the end of the structures (not the elements!).

Return

iterator The iterator.

const_iterator end() const

The const version of the end() iterator.

Return

const_iterator The iterator.

reference operator[](int i)

The access operator.

Return

reference A reference to the structure at index i.

Parameters
  • i: The index to be accessed.

const_reference operator[](int i) const

The const version of the access operator.

Return

const_reference A const reference to the structure at index i.

Parameters
  • i: The index to be accessed.

reference at(int i)

The at() function to access single structures in the trajectory.

Return

reference A reference to the structure at index i.

Parameters
  • i: The index to be accessed.

const_reference at(int i) const

The const version of the at() function.

Return

const_reference A const reference to the structure at index i.

Parameters
  • i: The index to be accessed.

reference front()

A function referencing the front of the list of structure.

Return

reference A reference to the first entry in the list of structures.

const_reference front() const

The const version of the front() function.

Return

const_reference A const reference to the first entry in the list of structures.

reference back()

A function referencing the back of the list of structure.

Return

reference A reference to the last entry in the list of structures.

const_reference back() const

The const version of the back() function.

Return

const_reference A const reference to the last entry in the list of structures.

const MolecularTrajectory &operator*=(double f)

Multiplication assignment operator (for example for unit conversion)

Return

const MolecularTrajectory& The trajectory, in-place.

Parameters
  • f: The scalar to multiply with.

const MolecularTrajectory &operator/=(double f)

Division assignment operator (for example for unit conversion)

Return

const MolecularTrajectory& The trajectory, in-place.

Parameters
  • f: The scalar to divide by.

MolecularTrajectory operator*(double f) const

Multiplication operator (for example for unit conversion)

Return

MolecularTrajectory The resulting trajectory.

Parameters
  • f: The scalar to multiply with.

MolecularTrajectory operator/(double f) const

Division operator (for example for unit conversion)

Return

MolecularTrajectory The resulting trajectory.

Parameters
  • f: The scalar to divide by.

Private Functions

bool resettingElementTypeCollectionIsAllowed(const ElementTypeCollection &ec) const

Checks if a reset of the elements with a given collection is allowed.

Return

true If the reset is allowed.

false If the reset is not allowed.

Parameters
  • ec: The Element collection.

bool additionOfPositionCollectionIsAllowed(const PositionCollection &p) const

Checks if the addition of a given collection of positionsis allowed.

Return

true If the addition is allowed.

false If the addition is not allowed.

Parameters
  • ec: The collection of positions.

Private Members

Container structureVector_
ElementTypeCollection elements_
EnergyContainer energies_