00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef _LangmuirEquilibriumConstant_h
00028 #define _LangmuirEquilibriumConstant_h
00029
00030
00031 #include "Quantity/Variable.h"
00032 #include "Quantity/Constant.h"
00033 #include "Quantity/QuantityCluster.h"
00034 #include "PhysicalQuantities/Volume.h"
00035 #include "PhysicalQuantities/AmountOfSubstance.h"
00036
00037 namespace quantity {
00038 namespace langmuirEquilibriumConstant {
00039
00041 class Class;
00042
00044 class Unit;
00045
00046
00047
00048
00049
00050 typedef LOKI_TYPELIST_1(volume::CubicCentiMetre) VolumeList;
00051
00053 typedef unit::ComposeElement<Unit,
00054 VolumeList, BSUtilities::Rational<1> > VolumeElement;
00055
00056 typedef LOKI_TYPELIST_1(amountOfSubstance::Mole) AmountOfSubstanceList;
00057
00059 typedef unit::ComposeElement<Unit,
00060 AmountOfSubstanceList, BSUtilities::Rational<-1> >
00061 AmountOfSubstanceElement;
00062
00063 typedef unit::ComposeBase<Unit,
00064 LOKI_TYPELIST_2(VolumeElement, AmountOfSubstanceElement)>
00065 LangmuirEquilibriumConstantComposedUnit;
00066
00067 typedef unit::Composed<LangmuirEquilibriumConstantComposedUnit,
00068 LOKI_TYPELIST_2(volume::CubicCentiMetre,
00069 amountOfSubstance::Mole)> CubicCentiMetrePerMole;
00070
00072 typedef LOKI_TYPELIST_1(CubicCentiMetrePerMole) Units;
00073
00074
00075
00076 typedef Quantity<Class> Quantity;
00077
00078 class DerivedLangmuirEquilibriumConstant;
00079
00080 }
00081
00083
00085 template<typename ST>
00086 struct Standard<langmuirEquilibriumConstant::LangmuirEquilibriumConstantComposedUnit, ST>
00087 {
00088 static const ST ratio;
00089 static const bool exact;
00090 };
00091
00093 template<typename ST> const ST
00094 Standard<langmuirEquilibriumConstant::LangmuirEquilibriumConstantComposedUnit, ST>::ratio = 1.0;
00095
00097 template<typename ST> const bool
00098 Standard<langmuirEquilibriumConstant::LangmuirEquilibriumConstantComposedUnit, ST>::exact = true;
00099
00101 template<>
00102 struct QuantityTraits<langmuirEquilibriumConstant::Class>
00103 {
00104 typedef
00105 dimension::Dimension<BSUtilities::Rational<3>,
00106 BSUtilities::Rational<0>, BSUtilities::Rational<0>,
00107 BSUtilities::Rational<0>, BSUtilities::Rational<0>,
00108 BSUtilities::Rational<-1>, BSUtilities::Rational<0> > Dimension;
00109 typedef langmuirEquilibriumConstant::Unit UnitType;
00110 typedef langmuirEquilibriumConstant::Units UnitList;
00111 typedef langmuirEquilibriumConstant::CubicCentiMetrePerMole DefaultUnit;
00112
00113 typedef langmuirEquilibriumConstant::DerivedLangmuirEquilibriumConstant DefaultDerivedQuantityType;
00114
00115 static const std::string NameString;
00116 static const std::string SymbolString;
00117
00118 };
00119
00120
00121 template<>
00122 struct DerivedQuantityTraits<langmuirEquilibriumConstant::Class,
00123 langmuirEquilibriumConstant::DerivedLangmuirEquilibriumConstant>
00124 {
00125 static const bool OverwriteName = false;
00126 static const bool OverwriteSymbol = false;
00127
00128 static const std::string NameString;
00129 static const std::string SymbolString;
00130
00131 };
00132
00134 typedef Variable<langmuirEquilibriumConstant::Quantity>
00135 LangmuirEquilibriumConstant;
00136
00138 typedef Constant<langmuirEquilibriumConstant::Quantity>
00139 LangmuirEquilibriumConstantConstant;
00140
00142 typedef QuantityVector<Variable, langmuirEquilibriumConstant::Quantity>
00143 LangmuirEquilibriumConstantVector;
00144
00145 }
00146
00147 #endif