00001
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _ElectricCharge_h
00025 #define _ElectricCharge_h
00026
00027 #include "Quantity/Variable.h"
00028 #include "Quantity/Constant.h"
00029 #include "Quantity/QuantityCluster.h"
00030
00031 namespace Quantities {
00032
00033
00034 typedef BSUtilities::Rational<0> ElectricCharge_LE;
00035 typedef BSUtilities::Rational<0> ElectricCharge_M;
00036 typedef BSUtilities::Rational<1> ElectricCharge_TI;
00037 typedef BSUtilities::Rational<1> ElectricCharge_E;
00038 typedef BSUtilities::Rational<0> ElectricCharge_TE;
00039 typedef BSUtilities::Rational<0> ElectricCharge_A;
00040 typedef BSUtilities::Rational<0> ElectricCharge_LU;
00041 class ElectricChargeGroup
00042 {
00043 public:
00044 typedef TYPELIST_7(ElectricCharge_LE, ElectricCharge_M,
00045 ElectricCharge_TI, ElectricCharge_E,
00046 ElectricCharge_TE, ElectricCharge_A,
00047 ElectricCharge_LU) DimTL;
00048 };
00049
00050
00051
00052 namespace ElectricChargeUnits {
00053
00054
00055 typedef Units::Unit<ElectricChargeGroup> ElectricChargeUnit;
00056
00057
00058 class CoulombUnits;
00059 class FranklinUnit;
00060 class EmuUnit;
00061 class ProtonChargeUnit;
00062
00063
00064
00065 typedef Units::Prefixable<ElectricChargeGroup, CoulombUnits> Coulombs;
00066
00067 typedef Units::Prefixed<Coulombs> Coulomb;
00068 typedef Units::Prefixed<Coulombs, Units::Milli> MilliCoulomb;
00069
00070
00071
00072 typedef Units::NonPrefixable<ElectricChargeGroup, FranklinUnit> Franklin;
00073
00074
00075
00076 typedef Units::NonPrefixable<ElectricChargeGroup, EmuUnit> Emu;
00077
00078
00079
00080 typedef Units::NonPrefixable<ElectricChargeGroup, ProtonChargeUnit>
00081 ProtonCharge;
00082
00083 typedef Loki::TL::Append<Coulombs::Units,
00084 TYPELIST_3(Franklin, Emu, ProtonCharge)>::Result ElectricChargeUnits;
00085
00086
00087
00088 typedef Coulomb C;
00089
00090 }
00091
00092
00093
00094 typedef
00095 Dimensions::Dimension<ElectricChargeGroup> ElectricChargeDimension;
00096
00097
00098
00099 typedef Quantity<ElectricChargeGroup,
00100 ElectricChargeUnits::ElectricChargeUnits,
00101 ElectricChargeUnits::Coulomb> ElectricChargeQuantities;
00102
00103 typedef Variable<ElectricChargeQuantities> ElectricCharge;
00104 typedef Constant<ElectricChargeQuantities> ElectricChargeConstant;
00105
00106 typedef VariableVector<ElectricChargeQuantities> ElectricChargeVector;
00107
00108 }
00109
00110 #endif