00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef _AmountOfSubstance_h
00028 #define _AmountOfSubstance_h
00029
00030
00031 #include "Quantity/Variable.h"
00032 #include "Quantity/Constant.h"
00033 #include "Quantity/QuantityCluster.h"
00034
00035 namespace quantity {
00036 namespace amountOfSubstance {
00037
00039 class Class;
00040
00042 class Unit;
00043
00044
00045 class MoleUnits;
00046
00048 typedef unit::Prefixable<Unit, MoleUnits> Moles;
00049
00051 typedef unit::Prefixed<Moles> Mole;
00052
00054 typedef unit::Prefixed<Moles, unit::Milli> MilliMole;
00055
00057 typedef Moles::Units Units;
00058
00059
00060
00061 typedef Mole mol;
00062 typedef MilliMole mmol;
00063
00064
00065
00066 typedef Quantity<Class> Quantity;
00067
00068 class DerivedAmountOfSubstance;
00069
00070 }
00071
00073
00075 template<typename ST>
00076 struct Standard<amountOfSubstance::Moles, ST>
00077 {
00078 static const ST ratio;
00079 static const bool exact;
00080 };
00081
00083 template<typename ST> const ST Standard<amountOfSubstance::Moles, ST>::ratio = 1.0;
00084
00086 template<typename ST> const bool Standard<amountOfSubstance::Moles, ST>::exact = true;
00087
00089 template<>
00090 struct QuantityTraits<amountOfSubstance::Class>
00091 {
00092 typedef
00093 dimension::Dimension<BSUtilities::Rational<0>,
00094 BSUtilities::Rational<0>, BSUtilities::Rational<0>,
00095 BSUtilities::Rational<0>, BSUtilities::Rational<0>,
00096 BSUtilities::Rational<1>, BSUtilities::Rational<0> > Dimension;
00097 typedef amountOfSubstance::Unit UnitType;
00098 typedef amountOfSubstance::Units UnitList;
00099 typedef amountOfSubstance::Mole DefaultUnit;
00100
00101 typedef amountOfSubstance::DerivedAmountOfSubstance DefaultDerivedQuantityType;
00102
00103 static const std::string NameString;
00104 static const std::string SymbolString;
00105
00106 };
00107
00108
00109 template<>
00110 struct DerivedQuantityTraits<amountOfSubstance::Class, amountOfSubstance::DerivedAmountOfSubstance>
00111 {
00112 static const bool OverwriteName = false;
00113 static const bool OverwriteSymbol = false;
00114
00115 static const std::string NameString;
00116 static const std::string SymbolString;
00117
00118 };
00119
00121 typedef Variable<amountOfSubstance::Quantity> AmountOfSubstance;
00122
00124 typedef Constant<amountOfSubstance::Quantity> AmountOfSubstanceConstant;
00125
00127 typedef QuantityVector<Variable, amountOfSubstance::Quantity> AmountOfSubstanceVector;
00128
00129 }
00130
00131 #endif