LCOV - code coverage report
Current view: top level - coupling/datastructures - CouplingCell.h (source / functions) Coverage Total Hit
Test: coverage.info Lines: 23.8 % 21 5
Test Date: 2026-08-21 15:14:06 Functions: 12.5 % 16 2

            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_DATA_STRUCTURES_COUPLINGCELL_H_
       6              : #define _MOLECULARDYNAMICS_COUPLING_DATA_STRUCTURES_COUPLINGCELL_H_
       7              : 
       8              : #include "tarch/la/Vector.h"
       9              : #include <cstdlib>
      10              : #include <fstream>
      11              : #include <iostream>
      12              : #include <string>
      13              : 
      14              : namespace coupling {
      15              : namespace datastructures {
      16              : 
      17              : template <unsigned int dim> class CouplingCell;
      18              : } // namespace datastructures
      19              : } // namespace coupling
      20              : 
      21              : /** describes a quadratic/ cubic coupling cell filled with fluid (no linked
      22              :  *cells). Base class for the class
      23              :  *coupling::datastructures::CouplingCellWithLinkedCells
      24              :  *      @brief defines the cell type with cell-averaged quantities only (no
      25              :  *linked cells).
      26              :  *      @tparam dim Number of dimensions; it can be 1, 2 or 3
      27              :  *  @author Philipp Neumann
      28              :  */
      29              : template <unsigned int dim> class coupling::datastructures::CouplingCell {
      30              : public:
      31              :   /** Constructor: initialises the coupling cell with zero values.
      32              :    */
      33        56072 :   CouplingCell()
      34        56072 :       : _microscopicMass(0.0), _microscopicMomentum(0.0), _macroscopicMass(0.0), _macroscopicMomentum(0.0), _potentialEnergy(0.0), _temperature(0.0),
      35       112144 :         _currentVelocity(0.0) {}
      36              : 
      37              :   /** Destructor */
      38        55960 :   virtual ~CouplingCell() {}
      39              : 
      40              :   /** sets the microscopic mass
      41              :    * @param mass Mass*/
      42            0 :   void setMicroscopicMass(const double& mass) { _microscopicMass = mass; }
      43              :   /** returns the microscopic mass
      44              :    * @returns _microscopicMass Mass*/
      45            0 :   const double& getMicroscopicMass() const { return _microscopicMass; }
      46              :   /** sets the microscopic moments
      47              :    * @param momentum Momentum*/
      48            0 :   void setMicroscopicMomentum(const tarch::la::Vector<dim, double>& momentum) { _microscopicMomentum = momentum; }
      49              :   /** returns the microscopic moments
      50              :    * @returns _microscopicMomentum Momentum*/
      51            0 :   const tarch::la::Vector<dim, double>& getMicroscopicMomentum() const { return _microscopicMomentum; }
      52              : 
      53              :   /** sets the microscopic mass
      54              :    * @param mass Mass*/
      55        36364 :   void setMacroscopicMass(const double& mass) { _macroscopicMass = mass; }
      56              :   /** returns the microscopic mass
      57              :    * @returns _microscopicMass Mass*/
      58            0 :   const double& getMacroscopicMass() const { return _macroscopicMass; }
      59              :   /** sets the microscopic moments
      60              :    * @param momentum Momentum*/
      61            0 :   void setMacroscopicMomentum(const tarch::la::Vector<dim, double>& momentum) { _macroscopicMomentum = momentum; }
      62              :   /** returns the microscopic moments
      63              :    * @returns _microscopicMomentum Momentum*/
      64            0 :   const tarch::la::Vector<dim, double>& getMacroscopicMomentum() const { return _macroscopicMomentum; }
      65              : 
      66              :   /** returns the mean potential energy over the coupling cell
      67              :    * @returns _potentialEnergy potential energy*/
      68            0 :   const double& getPotentialEnergy() const { return _potentialEnergy; }
      69              :   /** sets the mean potential energy over the coupling cell
      70              :    * @param potentialEnergy potential energy*/
      71            0 :   void setPotentialEnergy(const double& potentialEnergy) { _potentialEnergy = potentialEnergy; }
      72              : 
      73              :   /** adds a certain amount to the microscopic mass
      74              :    * @param mass Mass to be added to the microscopic mass*/
      75            0 :   void addMicroscopicMass(const double& mass) { _microscopicMass += mass; }
      76              :   /** adds a certain amount to the microscopic moments
      77              :    * @param momentum Momentum to be added to the microscopic moments*/
      78              :   void addMicroscopicMomentum(const tarch::la::Vector<dim, double>& momentum) { _microscopicMomentum += momentum; }
      79              : 
      80              :   /** adds a certain amount to the macroscopic mass
      81              :    * @param mass Mass to be added to the macroscopic mass*/
      82            0 :   void addMacroscopicMass(const double& mass) { _macroscopicMass += mass; }
      83              :   /** adds a certain amount to the macroscopic moments
      84              :    * @param momentum Momentum to be added to the macroscopic moments*/
      85            0 :   void addMacroscopicMomentum(const tarch::la::Vector<dim, double>& momentum) { _macroscopicMomentum += momentum; }
      86              : 
      87              :   /** sets current velocity (sampled right before any distributeX(...) call)
      88              :    * @param velocity velocity*/
      89            0 :   void setCurrentVelocity(const tarch::la::Vector<dim, double>& velocity) { _currentVelocity = velocity; }
      90              :   /** returns current velocity (sampled right before any distributeX(...) call)
      91              :    * @return _currentVelocity velocity*/
      92            0 :   const tarch::la::Vector<dim, double>& getCurrentVelocity() const { return _currentVelocity; }
      93              : 
      94              :   /** sets the temperature
      95              :    * @param temperature temperature*/
      96            0 :   void setTemperature(const double& temperature) { _temperature = temperature; }
      97              :   /** returns the temperature
      98              :    * @return _temperature temperature*/
      99            0 :   const double& getTemperature() const { return _temperature; }
     100              : 
     101              :   /** buffers for macroscopic mass that need to be transferred
     102              :    *  from the macroscopic to the microscopic simulation */
     103              :   double _microscopicMass;
     104              :   /** buffers for macroscopic quantities of momentum that need to be transferred
     105              :    *  from the macroscopic to the microscopic simulation */
     106              :   tarch::la::Vector<dim, double> _microscopicMomentum;
     107              : 
     108              :   /** buffers for macroscopic mass that need to be returned
     109              :    *  from the microscopic to the macroscopic simulation */
     110              :   double _macroscopicMass;
     111              :   /** buffers for macroscopic quantities of momentum that need to be returned
     112              :    *  from the microscopic to the macroscopic simulation */
     113              :   tarch::la::Vector<dim, double> _macroscopicMomentum;
     114              : 
     115              :   /** holds the mean potential energy within the coupling cell. This value is
     116              :    * needed as a reference potential energy value for the USHER scheme.
     117              :    */
     118              :   double _potentialEnergy;
     119              : 
     120              :   /** temperature within this cell. Needed for the thermostat. */
     121              :   double _temperature;
     122              : 
     123              :   /** buffer for current mean velocity in the cell. */
     124              :   tarch::la::Vector<dim, double> _currentVelocity;
     125              : };
     126              : 
     127              : #endif // _MOLECULARDYNAMICS_COUPLING_DATA_STRUCTURES_COUPLINGCELL_H_
        

Generated by: LCOV version 2.0-1