00001
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _Energy_h
00025 #define _Energy_h
00026
00027 #include "Quantity/Variable.h"
00028 #include "Quantity/Constant.h"
00029 #include "Quantity/QuantityCluster.h"
00030
00031 namespace quantity {
00032 namespace energy {
00033
00034
00035 typedef BSUtilities::Rational<2> LE;
00036 typedef BSUtilities::Rational<1> M;
00037 typedef BSUtilities::Rational<-2> TI;
00038 typedef BSUtilities::Rational<0> E;
00039 typedef BSUtilities::Rational<0> TE;
00040 typedef BSUtilities::Rational<0> A;
00041 typedef BSUtilities::Rational<0> LU;
00042
00043 typedef dimension::Dimension<LE, M, TI, E, TE, A, LU> Dimension;
00044
00046 class Unit;
00047
00048
00049 class JouleUnits;
00050 class ErgUnit;
00051 class HartreeUnit;
00052 class RydbergUnit;
00053 class ElectronVoltUnit;
00054 class ThermochemicalCaloryUnit;
00055 class InternationalCaloryUnit;
00056 class FifteenDegreeCaloryUnit;
00057 class LitreAtmosphereUnit;
00058 class BritishThermalUnitUnit;
00059
00060
00061
00062 typedef unit::Prefixable<Unit, JouleUnits> Joules;
00063
00064 typedef unit::Prefixed<Joules> Joule;
00065 typedef unit::Prefixed<Joules, unit::Kilo> KiloJoule;
00066
00067
00068
00069 typedef unit::NonPrefixable<Unit, ErgUnit> Erg;
00070
00071
00072
00073 typedef unit::NonPrefixable<Unit, HartreeUnit> Hartree;
00074
00075
00076
00077 typedef unit::NonPrefixable<Unit, RydbergUnit> Rydberg;
00078
00079
00080
00081 typedef
00082 unit::NonPrefixable<Unit, ElectronVoltUnit> ElectronVolt;
00083
00084
00085
00086 typedef unit::NonPrefixable<Unit, ThermochemicalCaloryUnit>
00087 ThermochemicalCalory;
00088
00089
00090
00091 typedef unit::NonPrefixable<Unit, InternationalCaloryUnit>
00092 InternationalCalory;
00093
00094
00095
00096 typedef unit::NonPrefixable<Unit, FifteenDegreeCaloryUnit>
00097 FifteenDegreeCalory;
00098
00099
00100
00101 typedef unit::NonPrefixable<Unit, LitreAtmosphereUnit> LitreAtmosphere;
00102
00103
00104
00105 typedef unit::NonPrefixable<Unit, BritishThermalUnitUnit>
00106 BritishThermalUnit;
00107
00108 typedef Loki::TL::Append<Joules::Units,
00109 LOKI_TYPELIST_9(Erg, Hartree, Rydberg, ElectronVolt, ThermochemicalCalory,
00110 InternationalCalory, FifteenDegreeCalory, LitreAtmosphere,
00111 BritishThermalUnit)>::Result Units;
00112
00113
00114
00115 typedef Joule J;
00116
00117
00118
00119 typedef Quantity<Dimension, Unit, Units, Joule> Quantity;
00120
00121 }
00122
00123 typedef Variable<energy::Quantity> Energy;
00124 typedef Constant<energy::Quantity> EnergyConstant;
00125
00126 typedef VariableVector<energy::Quantity> EnergyVector;
00127
00128 }
00129
00130 #endif