LCOV - code coverage report
Current view: top level - tools - Units.h (source / functions) Hit Total Coverage
Test: plumed test coverage Lines: 1 1 100.0 %
Date: 2024-10-18 14:00:25 Functions: 0 0 -

          Line data    Source code
       1             : /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
       2             :    Copyright (c) 2011-2023 The plumed team
       3             :    (see the PEOPLE file at the root of the distribution for a list of names)
       4             : 
       5             :    See http://www.plumed.org for more information.
       6             : 
       7             :    This file is part of plumed, version 2.
       8             : 
       9             :    plumed is free software: you can redistribute it and/or modify
      10             :    it under the terms of the GNU Lesser General Public License as published by
      11             :    the Free Software Foundation, either version 3 of the License, or
      12             :    (at your option) any later version.
      13             : 
      14             :    plumed is distributed in the hope that it will be useful,
      15             :    but WITHOUT ANY WARRANTY; without even the implied warranty of
      16             :    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      17             :    GNU Lesser General Public License for more details.
      18             : 
      19             :    You should have received a copy of the GNU Lesser General Public License
      20             :    along with plumed.  If not, see <http://www.gnu.org/licenses/>.
      21             : +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
      22             : #ifndef __PLUMED_tools_Units_h
      23             : #define __PLUMED_tools_Units_h
      24             : 
      25             : #include <string>
      26             : 
      27             : namespace PLMD {
      28             : 
      29             : /**
      30             : \ingroup TOOLBOX
      31             : Small utility class that contains information about units.
      32             : 
      33             : This class can be used to contain in a single place all the
      34             : information about units. Units are expressed in terms of
      35             : standard PLUMED units, i.e. kj/mol, nm, and ps.
      36             : Units can be set as double or as string. In the latter case,
      37             : one can also use strings such as kcal/mol.
      38             : 
      39             : 
      40             : */
      41             : class Units {
      42             : /// Units for energy, expressed in kj/mol (e.g. 4.184 means kcal/mol)
      43             :   double energy;
      44             :   std::string energyString;
      45             : /// Units for length, expressed in nm (e.g. 0.1 means A)
      46             :   double length;
      47             :   std::string lengthString;
      48             : /// Units for time, expressed in ps (e.g. 0.001 means fs)
      49             :   double time;
      50             :   std::string timeString;
      51             : /// Units for charges, expressed in proton charge (e.g. 1./18.2223 are sqrt(kcal/mol*A), as used in Amber)
      52             :   double charge;
      53             :   std::string chargeString;
      54             : /// Units for masses, expressed in amu
      55             :   double mass;
      56             :   std::string massString;
      57             : public:
      58             : /// Constructor, setting default values (1.0)
      59             :   Units();
      60             : /// Set energy units from string.
      61             : /// Also understands the following strings:
      62             : /// kj/mol, kcal/mol, j/mol, eV, and Ha.
      63             :   void setEnergy(const std::string &);
      64             : /// Set time units from string.
      65             : /// Also understands the following strings:
      66             : /// ps, ns, fs, and atomic.
      67             :   void setTime(const std::string &);
      68             : /// Set length units from string.
      69             : /// Also understands the following strings:
      70             : /// nm, A, um, and Bohr.
      71             :   void setLength(const std::string &);
      72             : /// Set charge units from string.
      73             :   void setCharge(const std::string &);
      74             : /// Set mass units from string.
      75             :   void setMass(const std::string &);
      76             : /// Set energy units from double.
      77             : /// Should be specified in units of kj/mol (e.g. 4.184 means kcal/mol)
      78             :   void setEnergy(double);
      79             : /// Set time units from double.
      80             : /// Should be specified in units of ps (e.g. 0.001 means fs)
      81             :   void setTime(double);
      82             : /// Set length units from double.
      83             : /// Should be specified in units of nm (e.g. 0.1 means A)
      84             :   void setLength(double);
      85             : /// Set charge units from double.
      86             : /// Should be specified in units of proton charge.
      87             :   void setCharge(double);
      88             : /// Set mass units from double.
      89             : /// Should be specified in units of amu.
      90             :   void setMass(double);
      91             : /// Get energy units as double.
      92             :   const double & getEnergy()const;
      93             : /// Get length units as double.
      94             :   const double & getLength()const;
      95             : /// Get time units as double.
      96             :   const double & getTime()const;
      97             : /// Get charge units as double.
      98             :   const double & getCharge()const;
      99             : /// Get mass units as double.
     100             :   const double & getMass()const;
     101             : /// Get energy units as string.
     102             :   const std::string & getEnergyString()const;
     103             : /// Get length units as string.
     104             :   const std::string & getLengthString()const;
     105             : /// Get time units as string.
     106             :   const std::string & getTimeString()const;
     107             : /// Get charge units as string.
     108             :   const std::string & getChargeString()const;
     109             : /// Get mass units as string.
     110             :   const std::string & getMassString()const;
     111             : };
     112             : 
     113             : inline
     114             : const double & Units::getEnergy()const {
     115             :   return energy;
     116             : }
     117             : 
     118             : inline
     119             : const double & Units::getLength()const {
     120             :   return length;
     121             : }
     122             : 
     123             : inline
     124             : const double & Units::getTime()const {
     125             :   return time;
     126             : }
     127             : 
     128             : inline
     129             : const double & Units::getCharge()const {
     130             :   return charge;
     131             : }
     132             : 
     133             : inline
     134             : const double & Units::getMass()const {
     135             :   return mass;
     136             : }
     137             : 
     138             : inline
     139             : const std::string & Units::getEnergyString()const {
     140             :   return energyString;
     141             : }
     142             : 
     143             : inline
     144             : const std::string & Units::getLengthString()const {
     145    16239210 :   return lengthString;
     146             : }
     147             : 
     148             : inline
     149             : const std::string & Units::getTimeString()const {
     150             :   return timeString;
     151             : }
     152             : 
     153             : inline
     154             : const std::string & Units::getChargeString()const {
     155             :   return chargeString;
     156             : }
     157             : 
     158             : inline
     159             : const std::string & Units::getMassString()const {
     160             :   return massString;
     161             : }
     162             : 
     163             : 
     164             : 
     165             : }
     166             : 
     167             : #endif

Generated by: LCOV version 1.16