LCOV - code coverage report
Current view: top level - coupling/interface/impl/SimpleMD - SimpleMDMolecule.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 4 11 36.4 %
Date: 2025-06-25 11:26:37 Functions: 0 10 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_SIMPLEMDMOLECULE_H_
       6             : #define _MOLECULARDYNAMICS_COUPLING_INTERFACE_SIMPLEMDMOLECULE_H_
       7             : 
       8             : #include "coupling/interface/Molecule.h"
       9             : #include "simplemd/MolecularDynamicsDefinitions.h"
      10             : #include "simplemd/Molecule.h"
      11             : 
      12             : namespace coupling {
      13             : namespace interface {
      14             : class SimpleMDMolecule;
      15             : }
      16             : } // namespace coupling
      17             : 
      18             : /** interface to access molecule of SimpleMD.
      19             :  *  @author Philipp Neumann
      20             :  */
      21             : class coupling::interface::SimpleMDMolecule : public coupling::interface::Molecule<MD_DIM> {
      22             : public:
      23          20 :   SimpleMDMolecule(simplemd::Molecule* myMolecule) : _myMolecule(myMolecule) {}
      24           8 :   virtual ~SimpleMDMolecule() {}
      25             : 
      26           0 :   void setMolecule(simplemd::Molecule* newMolecule) { _myMolecule = newMolecule; }
      27             : 
      28             :   /** returns/ sets the velocity of the molecule */
      29           0 :   virtual tarch::la::Vector<MD_DIM, double> getVelocity() const { return _myMolecule->getConstVelocity(); }
      30    10628820 :   virtual void setVelocity(const tarch::la::Vector<MD_DIM, double>& velocity) { _myMolecule->setVelocity(velocity); }
      31             : 
      32             :   /** returns/ sets the position of the molecule */
      33           0 :   virtual tarch::la::Vector<MD_DIM, double> getPosition() const { return _myMolecule->getConstPosition(); }
      34             : 
      35           0 :   virtual void setPosition(const tarch::la::Vector<MD_DIM, double>& position) { _myMolecule->setPosition(position); }
      36             : 
      37             :   /** sets the force acting on this molecule. This function is only called in the USHER
      38             :    *  scheme so far If you want to set the force of a newly created molecule,
      39             :    *  you need to implement this function.
      40             :    */
      41    10628820 :   virtual void setForce(const tarch::la::Vector<MD_DIM, double>& force) { _myMolecule->setForce(force); }
      42           0 :   virtual tarch::la::Vector<MD_DIM, double> getForce() const { return _myMolecule->getConstForce(); }
      43             : 
      44             :   /** returns/ sets the potential energy of the molecule */
      45           0 :   virtual double getPotentialEnergy() const { return _myMolecule->getPotentialEnergy(); }
      46           0 :   virtual void setPotentialEnergy(const double& potentialEnergy) { _myMolecule->setPotentialEnergy(potentialEnergy); }
      47             : 
      48             : private:
      49             :   simplemd::Molecule* _myMolecule;
      50             : };
      51             : #endif // _MOLECULARDYNAMICS_COUPLING_INTERFACE_SIMPLEMDMOLECULE_H_

Generated by: LCOV version 1.14