Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members

FaradayConstant.h

Go to the documentation of this file.
00001 
00008 /* Copyright (C) 2002-2004, Bernd Speiser */
00009 
00010 /* This file is part of Quantities.
00011 
00012 PhysicalQuantities is free software; you can redistribute it and/or
00013 modify it under the terms of the GNU General Public License
00014 as published by the Free Software Foundation; either version 2
00015 of the License, or (at your option) any later version.
00016 
00017 PhysicalQuantities is distributed in the hope that it will be useful,
00018 but WITHOUT ANY WARRANTY; without even the implied warranty of
00019 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00020 GNU General Public License for more details.
00021   
00022 You should have received a copy of the GNU General Public License
00023 along with this program; if not, write to the Free Software
00024 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
00025 02111-1307, USA.
00026 */
00027 
00028 #ifndef _FaradayConstant_h
00029 #define _FaradayConstant_h
00030 
00031 #include "Quantity/UniqueConstant.h"
00032 
00033 #include "PhysicalQuantities/AmountOfSubstance.h"
00034 #include "PhysicalQuantities/ElectricCharge.h"
00035 
00036 namespace Quantities {
00037 
00038 /* FaradayConstant dimension */
00039 typedef BSUtilities::Rational<0> FaradayConstant_LE;
00040 typedef BSUtilities::Rational<0> FaradayConstant_M;
00041 typedef BSUtilities::Rational<1> FaradayConstant_TI;
00042 typedef BSUtilities::Rational<1> FaradayConstant_E;
00043 typedef BSUtilities::Rational<0> FaradayConstant_TE;
00044 typedef BSUtilities::Rational<-1> FaradayConstant_A;
00045 typedef BSUtilities::Rational<0> FaradayConstant_LU;
00046 class FaradayConstantGroup
00047   {
00048     public:
00049       typedef TYPELIST_7(FaradayConstant_LE, FaradayConstant_M,
00050                          FaradayConstant_TI, FaradayConstant_E,
00051                          FaradayConstant_TE, FaradayConstant_A,
00052                                              FaradayConstant_LU) DimTL;
00053   };
00054 
00056 
00057   namespace FaradayConstantUnits {
00058 
00059 /* declaration of FaradayConstant unit base class */
00060 typedef Units::Unit<FaradayConstantGroup> FaradayConstantUnit;
00061 
00062 /* the CoulombPerMole and prefixed variants */
00063 
00064 typedef TYPELIST_2(ElectricChargeUnits::Coulomb, 
00065                   ElectricChargeUnits::MilliCoulomb) ElectricChargeList;
00066 
00067 typedef Units::CompoundElement<FaradayConstantGroup, ElectricChargeList,
00068                        BSUtilities::Rational<1> > ElectricChargeElement;
00069 
00070 typedef TYPELIST_2(AmountOfSubstanceUnits::Mole, 
00071                AmountOfSubstanceUnits::MilliMole) AmountOfSubstanceList;
00072 
00073 typedef Units::CompoundElement<FaradayConstantGroup, 
00074   AmountOfSubstanceList, BSUtilities::Rational<-1> > 
00075                                                AmountOfSubstanceElement;
00076 
00077 typedef TYPELIST_2(ElectricChargeElement, AmountOfSubstanceElement)
00078                                            FaradayConstantCompoundList;
00079 typedef 
00080   Units::Compound<FaradayConstantGroup, FaradayConstantCompoundList>
00081                                           FaradayConstantCompoundUnits;
00082 
00083 typedef Units::Composed<FaradayConstantCompoundUnits, 
00084   TYPELIST_2(ElectricChargeUnits::Coulomb, 
00085                           AmountOfSubstanceUnits::Mole)> CoulombPerMole;
00086 typedef Units::Composed<FaradayConstantCompoundUnits, 
00087   TYPELIST_2(ElectricChargeUnits::Coulomb, 
00088                 AmountOfSubstanceUnits::MilliMole)> CoulombPerMilliMole;
00089 
00090 
00092 typedef TYPELIST_2(CoulombPerMole, CoulombPerMilliMole)
00093                                                    FaradayConstantUnits;
00094   }
00095 
00096 /* declaration of FaradayConstant dimension */
00097 
00098 typedef 
00099    Dimensions::Dimension<FaradayConstantGroup> FaradayConstantDimension;
00100 
00101 /* FaradayConstant quantity */
00102 
00103 typedef Quantity<FaradayConstantGroup,
00104   FaradayConstantUnits::FaradayConstantUnits,
00105         FaradayConstantUnits::CoulombPerMole> FaradayConstantQuantities;
00106 
00107 typedef Loki::SingletonHolder<UniqueConstant
00108                           <FaradayConstantQuantities> > FaradayConstant;
00109 
00110 #define FARADAYCONSTANT FaradayConstant::Instance()
00111 
00112 }
00113 
00114 #endif /* _FaradayConstant_h */

Generated on Sun Jan 15 13:58:03 2006 for PhysicalQuantities by doxygen 1.3.6