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
00028 #include "Quantities/Quantity/Variable.h"
00029 #include "Quantities/Quantity/Constant.h"
00030 #include "Quantities/Quantity/QuantityAggregates.h"
00031 #include "Quantities/PhysicalQuantities/AmountOfSubstance.h"
00032 #include "Quantities/PhysicalQuantities/Volume.h"
00033
00034 namespace quantity {
00035 namespace surfaceConcentration {
00036
00038 class Class;
00039
00041 class Unit;
00042
00043
00044
00046 typedef unit::Component<amountOfSubstance::Units, BSUtilities::Rational<1> >
00047 AmountOfSubstanceComponent;
00048
00050 typedef unit::Component<length::Units,
00051 BSUtilities::Rational<-2> > LengthComponent;
00052
00053 typedef unit::ComposeBase<Unit,
00054 Loki::Typelist<AmountOfSubstanceComponent,
00055 Loki::Typelist<LengthComponent, Loki::NullType> > >
00056 SurfaceConcentrationComposedUnit;
00057
00058 typedef unit::Composed<SurfaceConcentrationComposedUnit,
00059 Loki::Typelist<amountOfSubstance::Mole,
00060 Loki::Typelist<length::Metre, Loki::NullType> > > MolePerSquareMetre;
00061
00062 typedef unit::Composed<SurfaceConcentrationComposedUnit,
00063 Loki::Typelist<amountOfSubstance::Mole,
00064 Loki::Typelist<length::CentiMetre, Loki::NullType> > >
00065 MolePerSquareCentiMetre;
00066
00067
00068 typedef unit::Composed<SurfaceConcentrationComposedUnit,
00069 Loki::Typelist<amountOfSubstance::MilliMole,
00070 Loki::Typelist<length::Metre, Loki::NullType> > >
00071 MilliMolePerSquareMetre;
00072
00073 typedef unit::Composed<SurfaceConcentrationComposedUnit,
00074 Loki::Typelist<amountOfSubstance::MilliMole,
00075 Loki::Typelist<length::CentiMetre, Loki::NullType> > >
00076 MilliMolePerSquareCentiMetre;
00077
00079 typedef Loki::Typelist<SurfaceConcentrationComposedUnit, Loki::NullType>
00080 Units;
00081
00082
00083
00084 typedef Quantity<Class> Quantity;
00085
00086 class DerivedSurfaceConcentration;
00087
00088 }
00089
00091 template<>
00092 struct QuantityTraits<surfaceConcentration::Class>
00093 {
00094 typedef
00095 dimension::Dimension<BSUtilities::Rational<-2>,
00096 BSUtilities::Rational<0>, BSUtilities::Rational<0>,
00097 BSUtilities::Rational<0>, BSUtilities::Rational<0>,
00098 BSUtilities::Rational<1>, BSUtilities::Rational<0> > Dimension;
00099 typedef surfaceConcentration::Unit UnitType;
00100 typedef surfaceConcentration::Units UnitList;
00101 typedef surfaceConcentration::MolePerSquareMetre DefaultUnit;
00102
00103 typedef surfaceConcentration::DerivedSurfaceConcentration DefaultDerivedQuantityType;
00104
00105 static const std::string NameString ();
00106 static const std::string SymbolString ();
00107
00108 };
00109
00110
00111 template<>
00112 struct DerivedQuantityTraits<surfaceConcentration::Class,
00113 surfaceConcentration::DerivedSurfaceConcentration>
00114 {
00115 static const bool OverwriteName = false;
00116 static const bool OverwriteSymbol = false;
00117
00118 static const std::string NameString ();
00119 static const std::string SymbolString ();
00120
00121 };
00122
00124 typedef Variable<surfaceConcentration::Quantity> SurfaceConcentration;
00125
00127 typedef Constant<surfaceConcentration::Quantity>
00128 SurfaceConcentrationConstant;
00129
00131 typedef VariableVector<QuantityVector<surfaceConcentration::Class> >
00132 SurfaceConcentrationVector;
00133
00134 }
00135
00136 #endif