00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef _Acceleration_h
00027 #define _Acceleration_h
00028
00029
00030 #include "Quantities/Quantity/Variable.h"
00031 #include "Quantities/Quantity/Constant.h"
00032 #include "Quantities/Quantity/QuantityAggregates.h"
00033 #include "Quantities/PhysicalQuantities/Length.h"
00034 #include "Quantities/PhysicalQuantities/Time.h"
00035
00036 namespace quantity {
00037 namespace acceleration {
00038
00040 class Class;
00041
00043 class Unit;
00044
00045
00046 class GalUnit;
00047 class StandardAccelerationOfFreeFallUnit;
00048
00050 typedef unit::Component<length::Units, BSUtilities::Rational<1> >
00051 LengthComponent;
00052
00054 typedef unit::Component<time::Units, BSUtilities::Rational<-2> >
00055 TimeComponent;
00056
00057 typedef unit::ComposeBase<Unit, Loki::Typelist<LengthComponent,
00058 Loki::Typelist<TimeComponent, Loki::NullType> > > AccelerationComposedUnit;
00059
00060 typedef unit::Composed<AccelerationComposedUnit,
00061 Loki::Typelist<length::Metre, Loki::Typelist<time::Second, Loki::NullType> > >
00062 MetrePerSquareSecond;
00063 typedef unit::Composed<AccelerationComposedUnit,
00064 LOKI_TYPELIST_2(length::CentiMetre, time::Second)>
00065 CentiMetrePerSquareSecond;
00066 typedef unit::Composed<AccelerationComposedUnit,
00067 LOKI_TYPELIST_2(length::Metre, time::MilliSecond)>
00068 MetrePerSquareMilliSecond;
00069
00070
00072 typedef unit::NonPrefixable<Unit, GalUnit> Gal;
00073
00075 typedef unit::NonPrefixable<Unit,
00076 StandardAccelerationOfFreeFallUnit> StandardAccelerationOfFreeFall;
00077
00079 typedef Loki::Typelist<AccelerationComposedUnit,
00080 Loki::Typelist<Gal, Loki::Typelist<StandardAccelerationOfFreeFall,
00081 Loki::NullType> > > Units;
00082
00083
00084
00085 typedef Quantity<Class> Quantity;
00086
00087 class DerivedAcceleration;
00088
00089 }
00090
00092 template<>
00093 struct QuantityTraits<acceleration::Class>
00094 {
00095 typedef
00096 dimension::Dimension<BSUtilities::Rational<1>,
00097 BSUtilities::Rational<0>, BSUtilities::Rational<-2>,
00098 BSUtilities::Rational<0>, BSUtilities::Rational<0>,
00099 BSUtilities::Rational<0>, BSUtilities::Rational<0> > Dimension;
00100 typedef acceleration::Unit UnitType;
00101 typedef acceleration::Units UnitList;
00102 typedef acceleration::MetrePerSquareSecond DefaultUnit;
00103
00104 typedef acceleration::DerivedAcceleration DefaultDerivedQuantityType;
00105
00106 static const std::string NameString ();
00107 static const std::string SymbolString ();
00108
00109 };
00110
00111
00112 template<>
00113 struct DerivedQuantityTraits<acceleration::Class,
00114 acceleration::DerivedAcceleration>
00115 {
00116 static const bool OverwriteName = false;
00117 static const bool OverwriteSymbol = false;
00118
00119 static const std::string NameString ();
00120 static const std::string SymbolString ();
00121
00122 };
00123
00124
00126 typedef Variable<acceleration::Quantity> Acceleration;
00127
00129 typedef Constant<acceleration::Quantity> AccelerationConstant;
00130
00132 typedef VariableVector<QuantityVector<acceleration::Class> > AccelerationVector;
00133
00134 }
00135
00136 #endif