00001
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _SurfaceConcentration_h
00025 #define _SurfaceConcentration_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<-2> SurfaceConcentration_LE;
00038 typedef BSUtilities::Rational<0> SurfaceConcentration_M;
00039 typedef BSUtilities::Rational<0> SurfaceConcentration_TI;
00040 typedef BSUtilities::Rational<0> SurfaceConcentration_E;
00041 typedef BSUtilities::Rational<0> SurfaceConcentration_TE;
00042 typedef BSUtilities::Rational<1> SurfaceConcentration_A;
00043 typedef BSUtilities::Rational<0> SurfaceConcentration_LU;
00044
00045 class SurfaceConcentrationGroup
00046 {
00047 public:
00048
00049 typedef TYPELIST_7(SurfaceConcentration_LE,
00050 SurfaceConcentration_M,
00051 SurfaceConcentration_TI,
00052 SurfaceConcentration_E,
00053 SurfaceConcentration_TE,
00054 SurfaceConcentration_A,
00055 SurfaceConcentration_LU) DimTL;
00056 };
00057
00058
00060 namespace SurfaceConcentrationUnits {
00061
00062
00063 typedef Units::Unit<SurfaceConcentrationGroup> SurfaceConcentrationUnit;
00064
00065
00066
00067 typedef TYPELIST_2(AmountOfSubstanceUnits::Mole,
00068 AmountOfSubstanceUnits::MilliMole) AmountOfSubstanceList;
00069
00070 typedef Units::CompoundElement<SurfaceConcentrationGroup,
00071 AmountOfSubstanceList, BSUtilities::Rational<1> >
00072 AmountOfSubstanceElement;
00073
00074 typedef TYPELIST_2(LengthUnits::Metre, LengthUnits::CentiMetre)
00075 LengthList;
00076
00077 typedef Units::CompoundElement<SurfaceConcentrationGroup, LengthList,
00078 BSUtilities::Rational<-2> > LengthElement;
00079
00080 typedef TYPELIST_2(AmountOfSubstanceElement, LengthElement)
00081 SurfaceConcentrationCompoundList;
00082 typedef Units::Compound<SurfaceConcentrationGroup,
00083 SurfaceConcentrationCompoundList> SurfaceConcentrationCompoundUnits;
00084
00085 typedef Units::Composed<SurfaceConcentrationCompoundUnits,
00086 TYPELIST_2(AmountOfSubstanceUnits::Mole, LengthUnits::Metre)>
00087 MolePerSquareMetre;
00088
00089 typedef Units::Composed<SurfaceConcentrationCompoundUnits,
00090 TYPELIST_2(AmountOfSubstanceUnits::Mole, LengthUnits::CentiMetre)>
00091 MolePerSquareCentiMetre;
00092
00093
00094 typedef Units::Composed<SurfaceConcentrationCompoundUnits,
00095 TYPELIST_2(AmountOfSubstanceUnits::MilliMole, LengthUnits::Metre)>
00096 MilliMolePerSquareMetre;
00097
00098 typedef Units::Composed<SurfaceConcentrationCompoundUnits,
00099 TYPELIST_2(AmountOfSubstanceUnits::MilliMole, LengthUnits::CentiMetre)>
00100 MilliMolePerSquareCentiMetre;
00101
00103 typedef TYPELIST_4(MolePerSquareMetre, MolePerSquareCentiMetre,
00104 MilliMolePerSquareMetre, MilliMolePerSquareCentiMetre)
00105 SurfaceConcentrationUnits;
00106
00107 }
00108
00109
00110
00111 typedef Dimensions::Dimension<SurfaceConcentrationGroup>
00112 SurfaceConcentrationDimension;
00113
00114
00115
00116 typedef Quantity<SurfaceConcentrationGroup,
00117 SurfaceConcentrationUnits::SurfaceConcentrationUnits,
00118 SurfaceConcentrationUnits::MolePerSquareMetre> SurfaceConcentrationQuantities;
00119
00120 typedef Variable<SurfaceConcentrationQuantities> SurfaceConcentration;
00121 typedef Constant<SurfaceConcentrationQuantities> SurfaceConcentrationConstant;
00122
00123 typedef VariableVector<SurfaceConcentrationQuantities>
00124 SurfaceConcentrationVector;
00125
00126 }
00127
00128 #endif