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 #include "Quantity/UniqueConstant.h"
00032
00033 #include "PhysicalQuantities/AmountOfSubstance.h"
00034 #include "PhysicalQuantities/ElectricCharge.h"
00035
00036 namespace Quantities {
00037
00038
00039 typedef BSUtilities::Rational<0> FaradayConstant_LE;
00040 typedef BSUtilities::Rational<0> FaradayConstant_M;
00041 typedef BSUtilities::Rational<1> FaradayConstant_TI;
00042 typedef BSUtilities::Rational<1> FaradayConstant_E;
00043 typedef BSUtilities::Rational<0> FaradayConstant_TE;
00044 typedef BSUtilities::Rational<-1> FaradayConstant_A;
00045 typedef BSUtilities::Rational<0> FaradayConstant_LU;
00046 class FaradayConstantGroup
00047 {
00048 public:
00049 typedef TYPELIST_7(FaradayConstant_LE, FaradayConstant_M,
00050 FaradayConstant_TI, FaradayConstant_E,
00051 FaradayConstant_TE, FaradayConstant_A,
00052 FaradayConstant_LU) DimTL;
00053 };
00054
00056
00057 namespace FaradayConstantUnits {
00058
00059
00060 typedef Units::Unit<FaradayConstantGroup> FaradayConstantUnit;
00061
00062
00063
00064 typedef TYPELIST_2(ElectricChargeUnits::Coulomb,
00065 ElectricChargeUnits::MilliCoulomb) ElectricChargeList;
00066
00067 typedef Units::CompoundElement<FaradayConstantGroup, ElectricChargeList,
00068 BSUtilities::Rational<1> > ElectricChargeElement;
00069
00070 typedef TYPELIST_2(AmountOfSubstanceUnits::Mole,
00071 AmountOfSubstanceUnits::MilliMole) AmountOfSubstanceList;
00072
00073 typedef Units::CompoundElement<FaradayConstantGroup,
00074 AmountOfSubstanceList, BSUtilities::Rational<-1> >
00075 AmountOfSubstanceElement;
00076
00077 typedef TYPELIST_2(ElectricChargeElement, AmountOfSubstanceElement)
00078 FaradayConstantCompoundList;
00079 typedef
00080 Units::Compound<FaradayConstantGroup, FaradayConstantCompoundList>
00081 FaradayConstantCompoundUnits;
00082
00083 typedef Units::Composed<FaradayConstantCompoundUnits,
00084 TYPELIST_2(ElectricChargeUnits::Coulomb,
00085 AmountOfSubstanceUnits::Mole)> CoulombPerMole;
00086 typedef Units::Composed<FaradayConstantCompoundUnits,
00087 TYPELIST_2(ElectricChargeUnits::Coulomb,
00088 AmountOfSubstanceUnits::MilliMole)> CoulombPerMilliMole;
00089
00090
00092 typedef TYPELIST_2(CoulombPerMole, CoulombPerMilliMole)
00093 FaradayConstantUnits;
00094 }
00095
00096
00097
00098 typedef
00099 Dimensions::Dimension<FaradayConstantGroup> FaradayConstantDimension;
00100
00101
00102
00103 typedef Quantity<FaradayConstantGroup,
00104 FaradayConstantUnits::FaradayConstantUnits,
00105 FaradayConstantUnits::CoulombPerMole> FaradayConstantQuantities;
00106
00107 typedef Loki::SingletonHolder<UniqueConstant
00108 <FaradayConstantQuantities> > FaradayConstant;
00109
00110 #define FARADAYCONSTANT FaradayConstant::Instance()
00111
00112 }
00113
00114 #endif