13 #ifndef FFA_UNIT_CALCULATOR_H
14 #define FFA_UNIT_CALCULATOR_H
61 template <
class T>
bool convert(T& value,
const std::string& aName)
const
66 value *= it->second.factor;
71 bool convert(
double& value,
const std::string& aName,
int prec)
const;
74 template <
class T>
bool inverse(T& value,
const std::string& aName)
const
79 value /= it->second.factor;
94 return it ==
myConvFactors.end() ? std::string(
"") : it->second.origUnit;
101 return it ==
myConvFactors.end() ? std::string(
"") : it->second.convUnit;
110 const std::string& origUnit =
"",
111 const std::string& convUnit =
"");
158 std::map<std::string,FFaUnitCalculator>
myCalcs;
Template for singleton classes.
Template for singleton classes.
Definition: FFaSingelton.H:26
Singelton class holding all unit calculators.
Definition: FFaUnitCalculator.H:131
FFaUnitCalculatorProvider()
The constructor is private to allow singelton construction only.
Definition: FFaUnitCalculator.H:133
virtual ~FFaUnitCalculatorProvider()
The destructor is private to allow singelton destruction only.
Definition: FFaUnitCalculator.H:135
void addCalculator(const FFaUnitCalculator &c)
Adds a new unit calculator to the container.
Definition: FFaUnitCalculator.H:150
std::map< std::string, FFaUnitCalculator > myCalcs
Calculator container.
Definition: FFaUnitCalculator.H:158
bool readCalculatorDefs(const std::string &filename)
Reads/writes calculator data from file.
Definition: FFaUnitCalculator.C:177
bool printCalculatorDefs(const std::string &filename) const
Writes calculator data to file.
Definition: FFaUnitCalculator.C:216
void getCalculatorNames(std::vector< std::string > &definedCalcs) const
Gets a list of names for all unit calculators.
Definition: FFaUnitCalculator.C:169
std::vector< const FFaUnitCalculator * > getCalculators() const
Returns a list of all unit calculators.
Definition: FFaUnitCalculator.C:158
const FFaUnitCalculator * getCalculator(const std::string &calcName) const
Returns a named unit calculator.
Definition: FFaUnitCalculator.C:142
Class holding a set of unit conversions for physical properties.
Definition: FFaUnitCalculator.H:28
bool inverse(T &value, const std::string &aName) const
Reversed conversion for a named physical property.
Definition: FFaUnitCalculator.H:74
std::string origGroup
Name of the original unit set.
Definition: FFaUnitCalculator.H:115
const std::string & getConvUnits() const
Returns the name of the converted-to unit set.
Definition: FFaUnitCalculator.H:58
bool operator==(const FFaUnitCalculator &cal) const
Equality operator.
Definition: FFaUnitCalculator.C:21
SingleUnitMap::const_iterator SingleUnitIter
Convenience type alias.
Definition: FFaUnitCalculator.H:40
std::string convUnitName(const std::string &aName) const
Returns the converted-to unit name for a named physical property.
Definition: FFaUnitCalculator.H:98
bool convert(T &value, const std::string &aName) const
Converts a named physical property.
Definition: FFaUnitCalculator.H:61
std::map< std::string, SingleUnit > SingleUnitMap
Convenience type alias.
Definition: FFaUnitCalculator.H:38
SingleUnitMap myConvFactors
Unit converter container.
Definition: FFaUnitCalculator.H:117
const std::string & getName() const
Returns the name of the unit calculator.
Definition: FFaUnitCalculator.H:54
std::string origUnitName(const std::string &aName) const
Returns the original unit name for a named physical property.
Definition: FFaUnitCalculator.H:91
std::string convGroup
Name of the converted-to unit set.
Definition: FFaUnitCalculator.H:116
bool isValid() const
Returns true if *this is valid, i.e., name is defined.
Definition: FFaUnitCalculator.H:48
FFaUnitCalculator(const char *n=NULL)
Default constructor.
Definition: FFaUnitCalculator.H:44
friend std::ostream & operator<<(std::ostream &, const FFaUnitCalculator &)
Global printing operator.
double convFactor(const std::string &aName) const
Returns the conversion factor for a named physical property.
Definition: FFaUnitCalculator.H:84
const std::string & getOrigUnits() const
Returns the name of the original unit set.
Definition: FFaUnitCalculator.H:56
void addConversion(const std::string &propName, double sf, const std::string &origUnit="", const std::string &convUnit="")
Adds a unit conversion to the set of conversion rules.
Definition: FFaUnitCalculator.C:62
std::string name
Name of the unit calculator.
Definition: FFaUnitCalculator.H:114
friend std::istream & operator>>(std::istream &, FFaUnitCalculator &)
Global reading operator.
character(lfnam_p) filename
Name of function data file.
Definition: initiateFunctionTypeModule.f90:34
real(dp), dimension(:,:), allocatable c
Definition: inverseModule.f90:39
Struct representing a single unit conversion.
Definition: FFaUnitCalculator.H:31
std::string origUnit
Original unit name.
Definition: FFaUnitCalculator.H:33
double factor
Unit conversion factor.
Definition: FFaUnitCalculator.H:32
std::string convUnit
Converted-to name.
Definition: FFaUnitCalculator.H:34