LCOV - code coverage report
Current view: top level - coupling - BoundaryForceController.h (source / functions) Coverage Total Hit
Test: coverage.info Lines: 25.0 % 4 1
Test Date: 2026-08-21 15:14:06 Functions: 0.0 % 2 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 2.0-1