00001 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 #ifndef _Acceleration_h
00025 #define _Acceleration_h
00026 
00027 #include "Quantity/Variable.h"
00028 #include "Quantity/Constant.h"
00029 #include "Quantity/QuantityCluster.h"
00030 
00031 #include "PhysicalQuantities/Length.h"
00032 #include "PhysicalQuantities/Time.h"
00033 
00034 namespace Quantities {
00035 
00037 typedef BSUtilities::Rational<1> Acceleration_LE;
00039 typedef BSUtilities::Rational<0> Acceleration_M; 
00041 typedef BSUtilities::Rational<-2> Acceleration_TI;
00043 typedef BSUtilities::Rational<0> Acceleration_E;
00045 typedef BSUtilities::Rational<0> Acceleration_TE;
00047 typedef BSUtilities::Rational<0> Acceleration_A;
00049 typedef BSUtilities::Rational<0> Acceleration_LU;
00050 
00052 class AccelerationGroup
00053   {
00055     public:
00056       typedef TYPELIST_7(Acceleration_LE, Acceleration_M, 
00057                          Acceleration_TI, Acceleration_E,
00058                          Acceleration_TE, Acceleration_A, 
00059                                                  Acceleration_LU) DimTL;
00060   };
00061 
00063   namespace AccelerationUnits {
00064 
00066 typedef Units::Unit<AccelerationGroup> AccelerationUnit;
00067 
00069 class GalUnit;
00071 class StandardAccelerationOfFreeFallUnit;
00072 
00073 
00074 
00075 
00076 typedef TYPELIST_3(LengthUnits::Metre, LengthUnits::CentiMetre,
00077                                   LengthUnits::MilliMetre) LengthList;
00078 
00079 
00081 typedef Units::CompoundElement<AccelerationGroup, LengthList, 
00082                                BSUtilities::Rational<1> > LengthElement;
00083 
00084 typedef TYPELIST_3(TimeUnits::Second, TimeUnits::MilliSecond, 
00085                                        TimeUnits::MicroSecond) TimeList;
00086 
00087 
00089 typedef Units::CompoundElement<AccelerationGroup, TimeList, 
00090                                 BSUtilities::Rational<-2> > TimeElement;
00091 
00092 typedef TYPELIST_2(LengthElement, TimeElement) 
00093                                               AccelerationCompoundList;
00094 typedef Units::Compound<AccelerationGroup, AccelerationCompoundList> 
00095                                              AccelerationCompoundUnits;
00096 
00097 typedef Units::Composed<AccelerationCompoundUnits, 
00098   TYPELIST_2(LengthUnits::Metre, TimeUnits::Second)> 
00099                                                    MetrePerSquareSecond;
00100 typedef Units::Composed<AccelerationCompoundUnits, 
00101   TYPELIST_2(LengthUnits::CentiMetre, TimeUnits::Second)> 
00102                                               CentiMetrePerSquareSecond;
00103 typedef Units::Composed<AccelerationCompoundUnits, 
00104   TYPELIST_2(LengthUnits::Metre, TimeUnits::MilliSecond)> 
00105                                               MetrePerSquareMilliSecond;
00106 
00107 
00108 
00109 
00110 typedef Units::NonPrefixable<AccelerationGroup, GalUnit> Gal;
00111 
00112 
00113 
00114 typedef Units::NonPrefixable<AccelerationGroup, 
00115      StandardAccelerationOfFreeFallUnit> StandardAccelerationOfFreeFall;
00116 
00118 typedef TYPELIST_5(MetrePerSquareSecond, CentiMetrePerSquareSecond, 
00119                    MetrePerSquareMilliSecond, Gal, 
00120                       StandardAccelerationOfFreeFall) AccelerationUnits;
00121 
00122   }
00123 
00124 
00125 
00126 typedef Dimensions::Dimension<AccelerationGroup> AccelerationDimension;
00127 
00128 
00129 
00130 typedef Quantity<AccelerationGroup, 
00131   AccelerationUnits::AccelerationUnits,
00132         AccelerationUnits::MetrePerSquareSecond> AccelerationQuantities;
00133 
00135 typedef Variable<AccelerationQuantities> Acceleration;
00137 typedef Constant<AccelerationQuantities> AccelerationConstant;
00138 
00139 typedef VariableVector<AccelerationQuantities> AccelerationVector;
00140 
00141 }
00142 
00143 #endif