00001
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _FaradayConstant_h
00029 #define _FaradayConstant_h
00030
00031
00032 #include "Quantities/Quantity/UniqueConstant.h"
00033 #include "Quantities/PhysicalQuantities/AmountOfSubstance.h"
00034 #include "Quantities/PhysicalQuantities/ElectricCharge.h"
00035
00036 namespace quantity {
00037 namespace faradayConstant {
00038
00040 class Class;
00041
00043 class Unit;
00044
00045
00046
00048 typedef unit::Component<electricCharge::Units, BSUtilities::Rational<1> >
00049 ElectricChargeComponent;
00050
00052 typedef unit::Component<amountOfSubstance::Units, BSUtilities::Rational<-1> >
00053 AmountOfSubstanceComponent;
00054
00055 typedef
00056 unit::ComposeBase<Unit, Loki::Typelist<ElectricChargeComponent,
00057 Loki::Typelist<AmountOfSubstanceComponent, Loki::NullType> > >
00058 FaradayConstantComposedUnit;
00059
00060 typedef unit::Composed<FaradayConstantComposedUnit,
00061 Loki::Typelist<electricCharge::Coulomb,
00062 Loki::Typelist<amountOfSubstance::Mole, Loki::NullType> > > CoulombPerMole;
00063 typedef unit::Composed<FaradayConstantComposedUnit,
00064 Loki::Typelist<electricCharge::Coulomb,
00065 Loki::Typelist<amountOfSubstance::MilliMole, Loki::NullType> > >
00066 CoulombPerMilliMole;
00067
00068
00070 typedef Loki::Typelist<FaradayConstantComposedUnit, Loki::NullType> Units;
00071
00072
00073
00074 typedef Quantity<Class> Quantity;
00075
00076 class DerivedFaradayConstant;
00077
00078 }
00079
00081 template<>
00082 struct QuantityTraits<faradayConstant::Class>
00083 {
00084 typedef
00085 dimension::Dimension<BSUtilities::Rational<0>,
00086 BSUtilities::Rational<0>, BSUtilities::Rational<1>,
00087 BSUtilities::Rational<1>, BSUtilities::Rational<0>,
00088 BSUtilities::Rational<-1>, BSUtilities::Rational<0> > Dimension;
00089 typedef faradayConstant::Unit UnitType;
00090 typedef faradayConstant::Units UnitList;
00091 typedef faradayConstant::CoulombPerMole DefaultUnit;
00092
00093 typedef faradayConstant::DerivedFaradayConstant DefaultDerivedQuantityType;
00094
00095 static const std::string NameString ();
00096 static const std::string SymbolString ();
00097
00098 };
00099
00100
00101 template<>
00102 struct DerivedQuantityTraits<faradayConstant::Class, faradayConstant::DerivedFaradayConstant>
00103 {
00104 static const bool OverwriteName = false;
00105 static const bool OverwriteSymbol = false;
00106
00107 static const std::string NameString ();
00108 static const std::string SymbolString ();
00109
00110 };
00111
00112
00114 typedef Loki::SingletonHolder<UniqueConstant
00115 <faradayConstant::Quantity> > FaradayConstant;
00116
00118 #define FARADAYCONSTANT FaradayConstant::Instance()
00119
00120 }
00121
00122 #endif