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