LCOV - code coverage report
Current view: top level - coupling - BoundaryForceController.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 4 25.0 %
Date: 2025-06-25 11:26:37 Functions: 0 2 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_BOUNDARYFORCECONTROLLER_H_
       6             : #define _MOLECULARDYNAMICS_COUPLING_BOUNDARYFORCECONTROLLER_H_
       7             : 
       8             : #include "coupling/datastructures/CouplingCellWithLinkedCells.h"
       9             : #include "coupling/interface/MDSolverInterface.h"
      10             : 
      11             : namespace coupling {
      12             : template <class LinkedCell, unsigned int dim> class BoundaryForceController;
      13             : }
      14             : 
      15             : /** There is an interface method applyBoundaryForce which triggers potential
      16             :  * boundary forcing in each coupling cell that is located at the very outer
      17             :  * MD boundary (first layer of non-ghost coupling cells).
      18             :  *  @brief controller for forces acting at open MD boundaries
      19             :  *  @tparam LinkedCell the LinkedCell class is given by the implementation of
      20             :  * linked cells in the molecular dynamics simulation
      21             :  *  @tparam dim the integer dim refers to the spacial dimension of the
      22             :  * simulation, can be 1, 2, or 3
      23             :  *  @author Philipp Neumann
      24             :  */
      25             : template <class LinkedCell, unsigned int dim> class coupling::BoundaryForceController {
      26             : public:
      27             :   /**@brief A simple constructor
      28             :    *  @param mdSolverInterface interface to the molecular dynamics solver*/
      29           4 :   BoundaryForceController(coupling::interface::MDSolverInterface<LinkedCell, dim>* const mdSolverInterface) : _mdSolverInterface(mdSolverInterface) {}
      30             :   /**@brief A simple destructor*/
      31           0 :   virtual ~BoundaryForceController() {}
      32             : 
      33             :   /** iterates over all linked cells of the given coupling cell and applies
      34             :    * the cellmapping for the boundary force
      35             :    * @brief applies the boundary force on a boundary cell
      36             :    * @param cell the boundary coupling cell to apply the boundary force
      37             :    */
      38             :   virtual void applyBoundaryForce(coupling::datastructures::CouplingCellWithLinkedCells<LinkedCell, dim>& cell) = 0;
      39             : 
      40             :   /** @brief calculates the potential energy for a given position
      41             :    *  @param position the position for which the potential energy will be
      42             :    * calculated
      43             :    *  @returns the potential energy for the given position  */
      44           0 :   virtual double getPotentialEnergy(const tarch::la::Vector<dim, double>& position) const { return 0; }
      45             : 
      46             :   /** @brief calculates the boundary force for the given particle position
      47             :    *  @param position particle position for the force calculation
      48             :    *  @returns the force for the given position */
      49           0 :   virtual tarch::la::Vector<dim, double> getForce(const tarch::la::Vector<dim, double>& position) const { return tarch::la::Vector<dim, double>(0.0); }
      50             : 
      51             : protected:
      52             :   coupling::interface::MDSolverInterface<LinkedCell, dim>* const _mdSolverInterface; ///< interface of the molecular dynamics solver
      53             : };
      54             : #endif // _MOLECULARDYNAMICS_COUPLING_BOUNDARYFORCECONTROLLER_H_

Generated by: LCOV version 1.14