All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Protected Member Functions | Protected Attributes | Private Attributes | Friends | List of all members
PLMD::ReferenceAtoms Class Referenceabstract

In many applications (e.g. More...

#include <ReferenceAtoms.h>

Inheritance diagram for PLMD::ReferenceAtoms:
Inheritance graph
[legend]

Public Member Functions

 ReferenceAtoms (const ReferenceConfigurationOptions &ro)
 
virtual void getAtomRequests (std::vector< AtomNumber > &, bool disable_checks=false)
 Get the atoms required (additional checks are required when we have multiple domains) More...
 
void setAtomNumbers (const std::vector< AtomNumber > &numbers)
 Set the indices of the reference atoms. More...
 
virtual void setReferenceAtoms (const std::vector< Vector > &conf, const std::vector< double > &align_in, const std::vector< double > &displace_in)=0
 Set the positions of the reference atoms. More...
 
void printAtoms (OFile &ofile) const
 Print the atomic positions. More...
 
const std::vector< AtomNumber > & getAbsoluteIndexes ()
 Return all atom indexes. More...
 
std::string getName () const
 Return the name of this metric. More...
 
virtual void getArgumentRequests (std::vector< std::string > &, bool disable_checks=false)
 Retrieve the arguments that are required for this guy. More...
 
virtual void setNumberOfArguments (const unsigned &)
 Set the final number of arguments. More...
 
virtual void setNumberOfAtoms (const unsigned &)
 Set the final number of atoms. More...
 
virtual void set (const PDB &)
 Set the reference configuration using a PDB. More...
 
virtual void read (const PDB &)=0
 Do all local business for setting the configuration. More...
 
void setWeight (const double &ww)
 Set the weight for this frame. More...
 
double getWeight () const
 Return the weight for this frame. More...
 
double calculate (const std::vector< Vector > &pos, const Pbc &pbc, const std::vector< Value * > &vals, const bool &squared=false)
 Calculate the distance from the reference configuration. More...
 
virtual double calc (const std::vector< Vector > &pos, const Pbc &pbc, const std::vector< Value * > &vals, const std::vector< double > &args, const bool &squared)=0
 Calculate the distance from the reference configuration. More...
 
Vector getAtomDerivative (const unsigned &) const
 Return the derivative wrt to the ith atom. More...
 
double getArgumentDerivative (const unsigned &) const
 Return the derivative wrt to the ith argument. More...
 
bool getVirial (Tensor &virout) const
 Return the derivatives of the distance wrt the cell vectors. More...
 
template<class T >
bool parse (const std::string &key, T &t, bool ignore_missing=false)
 Parse something from the pdb remarks. More...
 
template<class T >
bool parseVector (const std::string &key, std::vector< T > &t, bool ignore_missing=false)
 Parse vector from the pdb remarks. More...
 
void parseFlag (const std::string &key, bool &t)
 Parse a flag. More...
 
void checkRead ()
 Check that all the remarks in the pdb have been read in. More...
 
void copyDerivatives (const ReferenceConfiguration *)
 Copy derivatives from one frame to this frame. More...
 
void setNamesAndAtomNumbers (const std::vector< AtomNumber > &numbers, const std::vector< std::string > &arg)
 Set the atom numbers and the argument names. More...
 
void setReferenceConfig (const std::vector< Vector > &pos, const std::vector< double > &arg, const std::vector< double > &metric)
 Set the reference structure (perhaps should also pass the pbc and align and displace ) More...
 
void print (OFile &ofile, const double &time, const double &weight, const double &old_norm)
 Print a pdb file containing the reference configuration. More...
 
void print (OFile &ofile, const std::string &fmt)
 
virtual double getReferenceArgument (const unsigned &i)
 Get one of the referene arguments. More...
 
virtual const std::vector
< double > & 
getReferenceArguments ()
 
virtual const std::vector
< double > & 
getReferenceMetric ()
 
virtual const std::vector
< std::string > & 
getArgumentNames ()
 

Protected Member Functions

void readAtomsFromPDB (const PDB &)
 Read in the atoms from the pdb file. More...
 
void setAtomIndices (const std::vector< AtomNumber > &atomnumbers)
 Add atom indices to list. More...
 
bool parseAtomList (const std::string &, std::vector< unsigned > &)
 Read a list of atoms from the pdb input file. More...
 
const std::vector< double > & getAlign () const
 Get the vector of alignment weights. More...
 
const std::vector< double > & getDisplace () const
 Get the vector of displacement weights. More...
 
Vector getReferencePosition (const unsigned &iatom) const
 Get the position of the ith atom. More...
 
const std::vector< Vector > & getReferencePositions ()
 Get the reference positions. More...
 
void addAtomicDerivatives (const unsigned &, const Vector &)
 Add derivatives to iatom th atom in list. More...
 
Vector retrieveAtomicDerivatives (const unsigned &) const
 Get the atomic derivatives on the ith atom in the list. More...
 
void addBoxDerivatives (const Tensor &)
 Add derivatives to the viral. More...
 
void singleDomainRequests (std::vector< AtomNumber > &, bool disable_checks)
 This does the checks that are always required. More...
 
unsigned getNumberOfReferencePositions () const
 This returns the number of reference atom positions. More...
 
unsigned getNumberOfAtoms () const
 This returns how many atoms there should be. More...
 
unsigned getAtomIndex (const unsigned &) const
 This allows us to use a single pos array with RMSD objects using different atom indexes. More...
 
void error (const std::string &msg)
 Crash with an error. More...
 
void clearDerivatives ()
 Clear the derivatives. More...
 

Protected Attributes

std::vector< double > arg_ders
 Derivatives wrt to the arguments. More...
 
bool virialWasSet
 The virial contribution has to be stored. More...
 
Tensor virial
 
std::vector< Vectoratom_ders
 Derivatives wrt to the atoms. More...
 

Private Attributes

bool checks_were_disabled
 This flag tells us if the user has disabled checking of the input in order to do fancy paths with weird inputs. More...
 
std::vector< double > align
 The atoms to be used to align the instantaneous atomic positions to the reference configuration. More...
 
std::vector< double > displace
 The atoms to be used to calculate the distance the atoms have moved from the reference configuration. More...
 
std::vector< Vectorreference_atoms
 The positions of the atoms in the reference configuration. More...
 
std::vector< AtomNumberindices
 The indices of the atoms in the pdb file. More...
 
std::vector< unsigned > der_index
 The indeces for setting derivatives. More...
 

Friends

class SingleDomainRMSD
 

Detailed Description

In many applications (e.g.

paths, fields, property maps) it is necessary to calculate the distance between two configurations. These distances can be calculated in a variety of different ways. For instance, one can assert that the distance between the two configuration is the distance one would have to move all the atoms to transform configuration 1 into configuration

  1. Alternatively, one could calculate the values of a large set of collective coordinates in the two configurations and then calculate the Euclidean distances between these two points in the resulting high-dimensional vector space. Lastly, one can combine these two forms of distance calculation to calculate a hybrid distance. Plumed allows one to use all these forms of distance calculations and also to implement new forms of distance. You should inherit from this class if your distance involves reference atomic positions. This class and PLMD::ReferenceArguments mirror the functionalities in and PLMD::ActionAtomistic and PLMD::ActionWithArguments respectively but for distances.

Constructor & Destructor Documentation

PLMD::ReferenceAtoms::ReferenceAtoms ( const ReferenceConfigurationOptions ro)

Member Function Documentation

void PLMD::ReferenceAtoms::addAtomicDerivatives ( const unsigned &  iatom,
const Vector der 
)
inlineprotected

Add derivatives to iatom th atom in list.

void PLMD::ReferenceAtoms::addBoxDerivatives ( const Tensor vir)
inlineprotected

Add derivatives to the viral.

virtual double PLMD::ReferenceConfiguration::calc ( const std::vector< Vector > &  pos,
const Pbc pbc,
const std::vector< Value * > &  vals,
const std::vector< double > &  args,
const bool &  squared 
)
pure virtualinherited

Calculate the distance from the reference configuration.

Implemented in PLMD::MultiDomainRMSD, PLMD::ArgumentOnlyDistance, PLMD::SingleDomainRMSD, and PLMD::FakeFrame.

double PLMD::ReferenceConfiguration::calculate ( const std::vector< Vector > &  pos,
const Pbc pbc,
const std::vector< Value * > &  vals,
const bool &  squared = false 
)
inherited

Calculate the distance from the reference configuration.

void PLMD::ReferenceConfiguration::checkRead ( )
inherited

Check that all the remarks in the pdb have been read in.

void PLMD::ReferenceConfiguration::clearDerivatives ( )
protectedinherited

Clear the derivatives.

void PLMD::ReferenceConfiguration::copyDerivatives ( const ReferenceConfiguration ref)
inherited

Copy derivatives from one frame to this frame.

void PLMD::ReferenceConfiguration::error ( const std::string &  msg)
protectedinherited

Crash with an error.

const std::vector< AtomNumber > & PLMD::ReferenceAtoms::getAbsoluteIndexes ( )
inlinevirtual

Return all atom indexes.

Reimplemented from PLMD::ReferenceConfiguration.

const std::vector< double > & PLMD::ReferenceAtoms::getAlign ( ) const
inlineprotected

Get the vector of alignment weights.

double PLMD::ReferenceConfiguration::getArgumentDerivative ( const unsigned &  ider) const
inlineinherited

Return the derivative wrt to the ith argument.

const std::vector< std::string > & PLMD::ReferenceConfiguration::getArgumentNames ( )
inlinevirtualinherited

Reimplemented in PLMD::ReferenceArguments.

virtual void PLMD::ReferenceConfiguration::getArgumentRequests ( std::vector< std::string > &  ,
bool  disable_checks = false 
)
inlinevirtualinherited

Retrieve the arguments that are required for this guy.

Reimplemented in PLMD::ReferenceArguments.

Vector PLMD::ReferenceConfiguration::getAtomDerivative ( const unsigned &  ider) const
inlineinherited

Return the derivative wrt to the ith atom.

unsigned PLMD::ReferenceAtoms::getAtomIndex ( const unsigned &  iatom) const
inlineprotected

This allows us to use a single pos array with RMSD objects using different atom indexes.

void PLMD::ReferenceAtoms::getAtomRequests ( std::vector< AtomNumber > &  numbers,
bool  disable_checks = false 
)
virtual

Get the atoms required (additional checks are required when we have multiple domains)

Reimplemented from PLMD::ReferenceConfiguration.

const std::vector< double > & PLMD::ReferenceAtoms::getDisplace ( ) const
inlineprotected

Get the vector of displacement weights.

std::string PLMD::ReferenceConfiguration::getName ( ) const
inherited

Return the name of this metric.

unsigned PLMD::ReferenceAtoms::getNumberOfAtoms ( ) const
inlineprotected

This returns how many atoms there should be.

unsigned PLMD::ReferenceAtoms::getNumberOfReferencePositions ( ) const
inlineprotected

This returns the number of reference atom positions.

virtual double PLMD::ReferenceConfiguration::getReferenceArgument ( const unsigned &  i)
inlinevirtualinherited

Get one of the referene arguments.

Reimplemented in PLMD::ReferenceArguments.

const std::vector< double > & PLMD::ReferenceConfiguration::getReferenceArguments ( )
inlinevirtualinherited

Reimplemented in PLMD::ReferenceArguments.

const std::vector< double > & PLMD::ReferenceConfiguration::getReferenceMetric ( )
inlinevirtualinherited

Reimplemented in PLMD::ReferenceArguments.

Vector PLMD::ReferenceAtoms::getReferencePosition ( const unsigned &  iatom) const
inlineprotected

Get the position of the ith atom.

const std::vector< Vector > & PLMD::ReferenceAtoms::getReferencePositions ( )
inlineprotectedvirtual

Get the reference positions.

Reimplemented from PLMD::ReferenceConfiguration.

bool PLMD::ReferenceConfiguration::getVirial ( Tensor virout) const
inherited

Return the derivatives of the distance wrt the cell vectors.

This returns false for everything other than DRMSD as these sort of calculations have to be done separately when you use RMSD

double PLMD::ReferenceConfiguration::getWeight ( ) const
inlineinherited

Return the weight for this frame.

template<class T >
bool PLMD::ReferenceConfiguration::parse ( const std::string &  key,
T &  t,
bool  ignore_missing = false 
)
inherited

Parse something from the pdb remarks.

bool PLMD::ReferenceAtoms::parseAtomList ( const std::string &  key,
std::vector< unsigned > &  numbers 
)
protected

Read a list of atoms from the pdb input file.

void PLMD::ReferenceConfiguration::parseFlag ( const std::string &  key,
bool &  t 
)
inherited

Parse a flag.

template<class T >
bool PLMD::ReferenceConfiguration::parseVector ( const std::string &  key,
std::vector< T > &  t,
bool  ignore_missing = false 
)
inherited

Parse vector from the pdb remarks.

void PLMD::ReferenceConfiguration::print ( OFile ofile,
const double &  time,
const double &  weight,
const double &  old_norm 
)
inherited

Print a pdb file containing the reference configuration.

void PLMD::ReferenceConfiguration::print ( OFile ofile,
const std::string &  fmt 
)
inherited
void PLMD::ReferenceAtoms::printAtoms ( OFile ofile) const

Print the atomic positions.

virtual void PLMD::ReferenceConfiguration::read ( const PDB )
pure virtualinherited
void PLMD::ReferenceAtoms::readAtomsFromPDB ( const PDB pdb)
protected

Read in the atoms from the pdb file.

Vector PLMD::ReferenceAtoms::retrieveAtomicDerivatives ( const unsigned &  iatom) const
inlineprotected

Get the atomic derivatives on the ith atom in the list.

void PLMD::ReferenceConfiguration::set ( const PDB pdb)
virtualinherited

Set the reference configuration using a PDB.

void PLMD::ReferenceAtoms::setAtomIndices ( const std::vector< AtomNumber > &  atomnumbers)
protected

Add atom indices to list.

void PLMD::ReferenceAtoms::setAtomNumbers ( const std::vector< AtomNumber > &  numbers)

Set the indices of the reference atoms.

void PLMD::ReferenceConfiguration::setNamesAndAtomNumbers ( const std::vector< AtomNumber > &  numbers,
const std::vector< std::string > &  arg 
)
inherited

Set the atom numbers and the argument names.

void PLMD::ReferenceConfiguration::setNumberOfArguments ( const unsigned &  n)
virtualinherited

Set the final number of arguments.

void PLMD::ReferenceConfiguration::setNumberOfAtoms ( const unsigned &  n)
virtualinherited

Set the final number of atoms.

virtual void PLMD::ReferenceAtoms::setReferenceAtoms ( const std::vector< Vector > &  conf,
const std::vector< double > &  align_in,
const std::vector< double > &  displace_in 
)
pure virtual

Set the positions of the reference atoms.

Implemented in PLMD::MultiDomainRMSD, PLMD::DRMSD, and PLMD::SingleDomainRMSD.

void PLMD::ReferenceConfiguration::setReferenceConfig ( const std::vector< Vector > &  pos,
const std::vector< double > &  arg,
const std::vector< double > &  metric 
)
inherited

Set the reference structure (perhaps should also pass the pbc and align and displace )

void PLMD::ReferenceConfiguration::setWeight ( const double &  ww)
inlineinherited

Set the weight for this frame.

void PLMD::ReferenceAtoms::singleDomainRequests ( std::vector< AtomNumber > &  numbers,
bool  disable_checks 
)
protected

This does the checks that are always required.

Friends And Related Function Documentation

friend class SingleDomainRMSD
friend

Member Data Documentation

std::vector<double> PLMD::ReferenceAtoms::align
private

The atoms to be used to align the instantaneous atomic positions to the reference configuration.

std::vector<double> PLMD::ReferenceConfiguration::arg_ders
protectedinherited

Derivatives wrt to the arguments.

std::vector<Vector> PLMD::ReferenceConfiguration::atom_ders
protectedinherited

Derivatives wrt to the atoms.

bool PLMD::ReferenceAtoms::checks_were_disabled
private

This flag tells us if the user has disabled checking of the input in order to do fancy paths with weird inputs.

std::vector<unsigned> PLMD::ReferenceAtoms::der_index
private

The indeces for setting derivatives.

std::vector<double> PLMD::ReferenceAtoms::displace
private

The atoms to be used to calculate the distance the atoms have moved from the reference configuration.

std::vector<AtomNumber> PLMD::ReferenceAtoms::indices
private

The indices of the atoms in the pdb file.

std::vector<Vector> PLMD::ReferenceAtoms::reference_atoms
private

The positions of the atoms in the reference configuration.

Tensor PLMD::ReferenceConfiguration::virial
protectedinherited
bool PLMD::ReferenceConfiguration::virialWasSet
protectedinherited

The virial contribution has to be stored.


The documentation for this class was generated from the following files: