00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef _FirstOrderRateConstant_h
00028 #define _FirstOrderRateConstant_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/Time.h"
00035
00036 namespace quantity {
00037 namespace firstOrderRateConstant {
00038
00040 class Class;
00041
00043 class Unit;
00044
00046 typedef LOKI_TYPELIST_3(time::Minute, time::Second,
00047 time::MilliSecond) TimeList;
00048
00049 typedef unit::Component<time::Units,
00050 BSUtilities::Rational<-1> > TimeComponent;
00051
00052 typedef unit::ComposeBase<Unit,
00053 Loki::Typelist<TimeComponent, Loki::NullType> >
00054 FirstOrderRateConstantComposedUnit;
00055
00056 typedef unit::Composed<FirstOrderRateConstantComposedUnit,
00057 Loki::Typelist<time::Minute, Loki::NullType> > OnePerMinute;
00058
00059 typedef unit::Composed<FirstOrderRateConstantComposedUnit,
00060 Loki::Typelist<time::Second, Loki::NullType> > OnePerSecond;
00061
00062 typedef unit::Composed<FirstOrderRateConstantComposedUnit,
00063 Loki::Typelist<time::MilliSecond, Loki::NullType> > OnePerMilliSecond;
00064
00065
00067 typedef
00068 Loki::Typelist<FirstOrderRateConstantComposedUnit, Loki::NullType> Units;
00069
00070
00071
00072 typedef Quantity<Class> Quantity;
00073
00074 class DerivedFirstOrderRateConstant;
00075
00076 }
00077
00079 template<>
00080 struct QuantityTraits<firstOrderRateConstant::Class>
00081 {
00082 typedef
00083 dimension::Dimension<BSUtilities::Rational<0>,
00084 BSUtilities::Rational<0>, BSUtilities::Rational<-1>,
00085 BSUtilities::Rational<0>, BSUtilities::Rational<0>,
00086 BSUtilities::Rational<0>, BSUtilities::Rational<0> > Dimension;
00087 typedef firstOrderRateConstant::Unit UnitType;
00088 typedef firstOrderRateConstant::Units UnitList;
00089 typedef firstOrderRateConstant::OnePerSecond DefaultUnit;
00090
00091 typedef firstOrderRateConstant::DerivedFirstOrderRateConstant
00092 DefaultDerivedQuantityType;
00093
00094 static const std::string NameString ();
00095 static const std::string SymbolString ();
00096 };
00097
00098
00099 template<>
00100 struct DerivedQuantityTraits<firstOrderRateConstant::Class,
00101 firstOrderRateConstant::DerivedFirstOrderRateConstant>
00102 {
00103 static const bool OverwriteName = false;
00104 static const bool OverwriteSymbol = false;
00105
00106 static const std::string NameString ();
00107 static const std::string SymbolString ();
00108
00109 };
00110
00112 typedef Variable<firstOrderRateConstant::Quantity> FirstOrderRateConstant;
00113
00115 typedef Constant<firstOrderRateConstant::Quantity>
00116 FirstOrderRateConstantConstant;
00117
00119 typedef VariableVector<QuantityVector<firstOrderRateConstant::Class> >
00120 FirstOrderRateConstantVector;
00121
00122 }
00123
00124 #endif