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 quantity {
00035 namespace concentration {
00036
00037
00038 typedef BSUtilities::Rational<-3> LE;
00039 typedef BSUtilities::Rational<0> M;
00040 typedef BSUtilities::Rational<0> TI;
00041 typedef BSUtilities::Rational<0> E;
00042 typedef BSUtilities::Rational<0> TE;
00043 typedef BSUtilities::Rational<1> A;
00044 typedef BSUtilities::Rational<0> LU;
00045
00046 typedef dimension::Dimension<LE, M, TI, E, TE, A, LU> Dimension;
00047
00049 class Unit;
00050
00051
00052
00053 typedef LOKI_TYPELIST_2(amountOfSubstance::Mole,
00054 amountOfSubstance::MilliMole) AmountOfSubstanceList;
00055
00056 typedef unit::ComposeElement<Unit, AmountOfSubstanceList,
00057 BSUtilities::Rational<1> > AmountOfSubstanceElement;
00058
00059 typedef LOKI_TYPELIST_1(volume::Litre) VolumeList;
00060
00061 typedef unit::ComposeElement<Unit, VolumeList,
00062 BSUtilities::Rational<-1> > VolumeElement;
00063
00064 typedef unit::ComposeBase<Unit,
00065 LOKI_TYPELIST_2(AmountOfSubstanceElement, VolumeElement)>
00066 ConcentrationComposedUnit;
00067
00068 typedef unit::Composed<ConcentrationComposedUnit,
00069 LOKI_TYPELIST_2(amountOfSubstance::Mole, volume::Litre)> MolePerLitre;
00070
00071 typedef unit::Composed<ConcentrationComposedUnit,
00072 LOKI_TYPELIST_2(amountOfSubstance::MilliMole, volume::Litre)>
00073 MilliMolePerLitre;
00074
00076 typedef LOKI_TYPELIST_2(MolePerLitre, MilliMolePerLitre) Units;
00077
00078
00079
00080 typedef Quantity<Dimension, Unit, Units, MolePerLitre> Quantity;
00081
00082 }
00083
00084 typedef Variable<concentration::Quantity> Concentration;
00085 typedef Constant<concentration::Quantity> ConcentrationConstant;
00086
00087 typedef VariableVector<concentration::Quantity> ConcentrationVector;
00088
00089 }
00090
00091 #endif