00001
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _Concentration_h
00025 #define _Concentration_h
00026
00027 #include "Quantity/Variable.h"
00028 #include "Quantity/Constant.h"
00029 #include "Quantity/QuantityCluster.h"
00030
00031 #include "PhysicalQuantities/AmountOfSubstance.h"
00032 #include "PhysicalQuantities/Volume.h"
00033
00034 namespace Quantities {
00035
00036
00037 typedef BSUtilities::Rational<-3> Concentration_LE;
00038 typedef BSUtilities::Rational<0> Concentration_M;
00039 typedef BSUtilities::Rational<0> Concentration_TI;
00040 typedef BSUtilities::Rational<0> Concentration_E;
00041 typedef BSUtilities::Rational<0> Concentration_TE;
00042 typedef BSUtilities::Rational<1> Concentration_A;
00043 typedef BSUtilities::Rational<0> Concentration_LU;
00044 class ConcentrationGroup
00045 {
00046 public:
00047
00048 typedef TYPELIST_7(Concentration_LE,
00049 Concentration_M,
00050 Concentration_TI,
00051 Concentration_E,
00052 Concentration_TE,
00053 Concentration_A,
00054 Concentration_LU) DimTL;
00055 };
00056
00057
00059 namespace ConcentrationUnits {
00060
00061
00062 typedef Units::Unit<ConcentrationGroup> ConcentrationUnit;
00063
00064
00065
00066 typedef TYPELIST_2(AmountOfSubstanceUnits::Mole,
00067 AmountOfSubstanceUnits::MilliMole) AmountOfSubstanceList;
00068
00069 typedef
00070 Units::CompoundElement<ConcentrationGroup, AmountOfSubstanceList,
00071 BSUtilities::Rational<1> > AmountOfSubstanceElement;
00072
00073 typedef TYPELIST_1(VolumeUnits::Litre) VolumeList;
00074
00075 typedef Units::CompoundElement<ConcentrationGroup, VolumeList,
00076 BSUtilities::Rational<-1> > VolumeElement;
00077
00078 typedef TYPELIST_2(AmountOfSubstanceElement, VolumeElement)
00079 ConcentrationCompoundList;
00080 typedef Units::Compound<ConcentrationGroup,
00081 ConcentrationCompoundList> ConcentrationCompoundUnits;
00082
00083 typedef Units::Composed<ConcentrationCompoundUnits,
00084 TYPELIST_2(AmountOfSubstanceUnits::Mole, VolumeUnits::Litre)>
00085 MolePerLitre;
00086
00087 typedef Units::Composed<ConcentrationCompoundUnits,
00088 TYPELIST_2(AmountOfSubstanceUnits::MilliMole, VolumeUnits::Litre)>
00089 MilliMolePerLitre;
00090
00092 typedef TYPELIST_2(MolePerLitre, MilliMolePerLitre) ConcentrationUnits;
00093
00094 }
00095
00096
00097
00098 typedef
00099 Dimensions::Dimension<ConcentrationGroup> ConcentrationDimension;
00100
00101
00102
00103 typedef Quantity<ConcentrationGroup,
00104 ConcentrationUnits::ConcentrationUnits,
00105 ConcentrationUnits::MolePerLitre> ConcentrationQuantities;
00106
00107 typedef Variable<ConcentrationQuantities> Concentration;
00108 typedef Constant<ConcentrationQuantities> ConcentrationConstant;
00109
00110 typedef VariableVector<ConcentrationQuantities>
00111 ConcentrationVector;
00112
00113 }
00114
00115 #endif