00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef _HeterogeneousRateConstant_h
00028 #define _HeterogeneousRateConstant_h
00029
00030
00031 #include "Quantities/Quantity/Variable.h"
00032 #include "Quantities/Quantity/Constant.h"
00033 #include "Quantities/Quantity/QuantityAggregates.h"
00034 #include "Quantities/PhysicalQuantities/Length.h"
00035 #include "Quantities/PhysicalQuantities/Time.h"
00036
00037 namespace quantity {
00038 namespace heterogeneousRateConstant {
00039
00041 class Class;
00042
00044 class Unit;
00045
00046
00047
00049 typedef
00050 unit::Component<length::Units,
00051 BSUtilities::Rational<1> > LengthComponent;
00052
00054 typedef unit::Component<time::Units,
00055 BSUtilities::Rational<-1> > TimeComponent;
00056
00057 typedef unit::ComposeBase<Unit,
00058 Loki::Typelist<LengthComponent, Loki::Typelist<TimeComponent,
00059 Loki::NullType> > > HeterogeneousRateConstantComposedUnit;
00060
00061 typedef unit::Composed<HeterogeneousRateConstantComposedUnit,
00062 Loki::Typelist<length::Metre, Loki::Typelist<time::Second, Loki::NullType>
00063 > > MetrePerSecond;
00064 typedef unit::Composed<HeterogeneousRateConstantComposedUnit,
00065 Loki::Typelist<length::CentiMetre, Loki::Typelist<time::Second,
00066 Loki::NullType> > > CentiMetrePerSecond;
00067
00069 typedef Loki::Typelist<HeterogeneousRateConstantComposedUnit,
00070 Loki::NullType> Units;
00071
00072
00073
00074 typedef Quantity<Class> Quantity;
00075
00076 class DerivedHeterogeneousRateConstant;
00077
00078 }
00079
00081 template<>
00082 struct QuantityTraits<heterogeneousRateConstant::Class>
00083 {
00084 typedef
00085 dimension::Dimension<BSUtilities::Rational<1>,
00086 BSUtilities::Rational<0>, BSUtilities::Rational<-1>,
00087 BSUtilities::Rational<0>, BSUtilities::Rational<0>,
00088 BSUtilities::Rational<0>, BSUtilities::Rational<0> > Dimension;
00089 typedef heterogeneousRateConstant::Unit UnitType;
00090 typedef heterogeneousRateConstant::Units UnitList;
00091 typedef heterogeneousRateConstant::MetrePerSecond DefaultUnit;
00092
00093 typedef heterogeneousRateConstant::DerivedHeterogeneousRateConstant
00094 DefaultDerivedQuantityType;
00095
00096 static const std::string NameString ();
00097 static const std::string SymbolString ();
00098
00099 };
00100
00101
00102 template<>
00103 struct DerivedQuantityTraits<heterogeneousRateConstant::Class,
00104 heterogeneousRateConstant::DerivedHeterogeneousRateConstant>
00105 {
00106 static const bool OverwriteName = false;
00107 static const bool OverwriteSymbol = false;
00108
00109 static const std::string NameString ();
00110 static const std::string SymbolString ();
00111
00112 };
00113
00114
00116 typedef Variable<heterogeneousRateConstant::Quantity>
00117 HeterogeneousRateConstant;
00118
00120 typedef Constant<heterogeneousRateConstant::Quantity>
00121 HeterogeneousRateConstantConstant;
00122
00124 typedef VariableVector<QuantityVector<heterogeneousRateConstant::Class> >
00125 HeterogeneousRateConstantVector;
00126
00127 }
00128
00129 #endif