00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef _DiffusionCoefficient_h
00027 #define _DiffusionCoefficient_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/Area.h"
00034 #include "Quantities/PhysicalQuantities/Length.h"
00035 #include "Quantities/PhysicalQuantities/Time.h"
00036
00037 namespace quantity {
00038 namespace diffusionCoefficient {
00039
00041 class Class;
00042
00044 class Unit;
00045
00046
00047
00049 typedef unit::Component<length::Units,
00050 BSUtilities::Rational<2> > LengthComponent;
00051
00053 typedef unit::Component<area::Units,
00054 BSUtilities::Rational<1> > AreaComponent;
00055
00057 typedef unit::Component<time::Units,
00058 BSUtilities::Rational<-1> > TimeComponent;
00059
00060 typedef unit::ComposeBase<Unit,
00061 Loki::Typelist<LengthComponent,
00062 Loki::Typelist<TimeComponent, Loki::NullType> > >
00063 DiffusionCoefficientComposedUnit;
00064
00065 typedef unit::Composed<DiffusionCoefficientComposedUnit,
00066 Loki::Typelist<length::Metre,
00067 Loki::Typelist<time::Second, Loki::NullType> > > SquareMetrePerSecond;
00068
00069 typedef unit::Composed<DiffusionCoefficientComposedUnit,
00070 Loki::Typelist<length::CentiMetre,
00071 Loki::Typelist<time::Second, Loki::NullType> > > SquareCentiMetrePerSecond;
00072
00073 typedef unit::ComposeBase<Unit,
00074 Loki::Typelist<AreaComponent,
00075 Loki::Typelist<TimeComponent, Loki::NullType> > >
00076 AltDiffusionCoefficientComposedUnit;
00077
00078 typedef unit::Composed<AltDiffusionCoefficientComposedUnit,
00079 Loki::Typelist<area::SquareMetre,
00080 Loki::Typelist<time::Second, Loki::NullType> > > AltSquareMetrePerSecond;
00081
00083 typedef
00084 Loki::Typelist<DiffusionCoefficientComposedUnit,
00085 Loki::Typelist<AltDiffusionCoefficientComposedUnit, Loki::NullType> >
00086 Units;
00087
00088
00089 typedef Quantity<Class> Quantity;
00090
00091 class DerivedDiffusionCoefficient;
00092
00093 }
00094
00096 template<>
00097 struct QuantityTraits<diffusionCoefficient::Class>
00098 {
00099 typedef
00100 dimension::Dimension<BSUtilities::Rational<2>,
00101 BSUtilities::Rational<0>, BSUtilities::Rational<-1>,
00102 BSUtilities::Rational<0>, BSUtilities::Rational<0>,
00103 BSUtilities::Rational<0>, BSUtilities::Rational<0> > Dimension;
00104 typedef diffusionCoefficient::Unit UnitType;
00105 typedef diffusionCoefficient::Units UnitList;
00106 typedef diffusionCoefficient::SquareMetrePerSecond DefaultUnit;
00107
00108 typedef diffusionCoefficient::DerivedDiffusionCoefficient DefaultDerivedQuantityType;
00109
00110 static const std::string NameString ();
00111 static const std::string SymbolString ();
00112
00113 };
00114
00115 template<>
00116 struct DerivedQuantityTraits<diffusionCoefficient::Class,
00117 diffusionCoefficient::DerivedDiffusionCoefficient>
00118 {
00119 static const bool OverwriteName = false;
00120 static const bool OverwriteSymbol = false;
00121
00122 static const std::string NameString ();
00123 static const std::string SymbolString ();
00124
00125 };
00126
00128 typedef Variable<diffusionCoefficient::Quantity> DiffusionCoefficient;
00129
00131 typedef Constant<diffusionCoefficient::Quantity>
00132 DiffusionCoefficientConstant;
00133
00135 typedef VariableVector<QuantityVector<diffusionCoefficient::Class> >
00136 DiffusionCoefficientVector;
00137
00138 }
00139
00140 #endif