LCOV - code coverage report
Current view: top level - coupling/interface - Molecule.h Coverage Total Hit
Test: coverage.info Lines: 50.0 % 2 1
Test Date: 2026-08-21 15:14:06 Functions: - 0 0

            Line data    Source code
       1              : // Copyright (C) 2015 Technische Universitaet Muenchen
       2              : // This file is part of the Mamico project. For conditions of distribution
       3              : // and use, please see the copyright notice in Mamico's main folder, or at
       4              : // www5.in.tum.de/mamico
       5              : #ifndef _MOLECULARDYNAMICS_COUPLING_INTERFACE_MOLECULE_H_
       6              : #define _MOLECULARDYNAMICS_COUPLING_INTERFACE_MOLECULE_H_
       7              : 
       8              : #include "tarch/la/Vector.h"
       9              : 
      10              : namespace coupling {
      11              : namespace interface {
      12              : template <unsigned int dim> class Molecule;
      13              : }
      14              : } // namespace coupling
      15              : 
      16              : /** This class provides interface to access a single molecule in the MD
      17              :  *simulation. The MaMiCo molecule in datastructures also inherits from this
      18              :  *class.
      19              :  *      @brief interface to access a single molecule in the MD simulation.
      20              :  *      @tparam dim Number of dimensions; it can be 1, 2 or 3
      21              :  *  @author Philipp Neumann
      22              :  */
      23            0 : template <unsigned int dim> class coupling::interface::Molecule {
      24              : public:
      25              :   /** Destructor */
      26            8 :   virtual ~Molecule() {}
      27              : 
      28              :   /** returnsthe velocity of the molecule */
      29              :   virtual tarch::la::Vector<dim, double> getVelocity() const = 0;
      30              : 
      31              :   /** sets the velocity of the molecule
      32              :    *    @param velocity
      33              :    */
      34              :   virtual void setVelocity(const tarch::la::Vector<dim, double>& velocity) = 0;
      35              : 
      36              :   /** returns the position of the molecule */
      37              :   virtual tarch::la::Vector<dim, double> getPosition() const = 0;
      38              : 
      39              :   /** sets the position of the molecule
      40              :    *    @param position
      41              :    */
      42              :   virtual void setPosition(const tarch::la::Vector<dim, double>& position) = 0;
      43              : 
      44              :   /** sets the force acting on this molecule. This function is only called in
      45              :    *the USHER scheme so far If you want to set the force of a newly created
      46              :    *molecule, you need to implement this function.
      47              :    *    @param force
      48              :    */
      49              :   virtual void setForce(const tarch::la::Vector<dim, double>& force) = 0;
      50              : 
      51              :   /** returns the force acting on this molecule.
      52              :    *    @sa setForce
      53              :    */
      54              :   virtual tarch::la::Vector<dim, double> getForce() const = 0;
      55              : 
      56              :   /** returns the potential energy of the molecule */
      57              :   virtual double getPotentialEnergy() const = 0;
      58              : 
      59              :   /** sets the potential energy of the molecule
      60              :    *    @param potentialEnergy
      61              :    */
      62              :   virtual void setPotentialEnergy(const double& potentialEnergy) = 0;
      63              : };
      64              : #endif // _MOLECULARDYNAMICS_COUPLING_INTERFACE_MOLECULE_H_
        

Generated by: LCOV version 2.0-1