17 #ifndef _FUELCELLSHOP_CATALYST_BASE__H 
   18 #define _FUELCELLSHOP_CATALYST_BASE__H 
   21 #include <deal.II/base/parameter_handler.h> 
   22 #include <deal.II/base/point.h> 
   23 #include <deal.II/base/function.h> 
   24 #include <deal.II/lac/vector.h> 
   25 #include <deal.II/fe/fe_values.h> 
   32 namespace FuelCellShop
 
   84                          iterator->second->declare_parameters(param);
 
  106             static boost::shared_ptr<FuelCellShop::Material::CatalystBase > 
create_Catalyst (ParameterHandler ¶m,
 
  107                                                                                               std::string catalyst_name)
 
  109                  boost::shared_ptr<FuelCellShop::Material::CatalystBase > pointer;
 
  115                      if (iterator->second)
 
  117                          pointer = iterator->second->create_replica();
 
  127                      FcstUtilities::log<<
"Concrete name in FuelCellShop::Material::CatalystBase::create_Catalyst does not exist"<<std::endl;
 
  131                  pointer->initialize(param);
 
  144                 const std::type_info& info = 
typeid(*this);
 
  146                 << 
" called in Class " 
  147                 << info.name()  << std::endl;
 
  158                 const std::type_info& info = 
typeid(*this);
 
  160                 << 
" called in Class " 
  161                 << info.name()  << std::endl;
 
  171                 const std::type_info& info = 
typeid(*this);
 
  173                 << 
" called in Class " 
  174                 << info.name()  << std::endl;
 
  183                 const std::type_info& info = 
typeid(*this);
 
  185                 << 
" called in Class " 
  186                 << info.name()  << std::endl;
 
  196                 const std::type_info& info = 
typeid(*this);
 
  198                 << 
" called in Class " 
  199                 << info.name()  << std::endl;
 
  209                 const std::type_info& info = 
typeid(*this);
 
  211                 << 
" called in Class " 
  212                 << info.name()  << std::endl;
 
  221                 const std::type_info& info = 
typeid(*this);
 
  223                 << 
" called in Class " 
  224                 << info.name()  << std::endl;
 
  235                                                  std::map<VariableNames, double>& )
 const 
  237                 const std::type_info& info = 
typeid(*this);
 
  239                 << 
" called in Class " 
  240                 << info.name()  << std::endl;
 
  249                 const std::type_info& info = 
typeid(*this);
 
  251                 << 
" called in Class " 
  252                 << info.name()  << std::endl;
 
  261                 const std::type_info& info = 
typeid(*this);
 
  263                 << 
" called in Class " 
  264                 << info.name()  << std::endl;
 
  275                                         std::map<VariableNames, double>&)
 const 
  277                 const std::type_info& info = 
typeid(*this);
 
  279                 << 
" called in Class " 
  280                 << info.name()  << std::endl;
 
  297                 Assert(
method_kinetics_ORR.size() != 0, ExcMessage(
"Kinetic parameter method not yet set in the CatalystBase object."));
 
  340                 const std::type_info& info = 
typeid(*this);
 
  342                 << 
" called in Class " 
  343                 << info.name()  << std::endl;
 
  351                 const std::type_info& info = 
typeid(*this);
 
  353                 << 
" called in Class " 
  354                 << info.name()  << std::endl;
 
  363             typedef std::map< std::string, FuelCellShop::Material::CatalystBase* > 
_mapFactory;      
 
  385             virtual boost::shared_ptr<FuelCellShop::Material::CatalystBase > 
create_replica ()
 
  387                 const std::type_info& info = 
typeid(*this);
 
  389                 << 
" called in Class " 
  390                 << info.name() << std::endl;
 
  404                 const std::type_info& info = 
typeid(*this);
 
  406                 << 
" called in Class " 
  407                 << info.name()  << std::endl;
 
virtual void alpha_anodic(double &) const 
Return anodic transfer coefficient for the reaction specified using set_reaction_kinetics method...
Definition: catalyst_base.h:156
 
virtual double exchange_current_density(const double &) const 
Compute the exchange current density [A/cm^2] for the reaction specified using set_reaction_kinetics ...
Definition: catalyst_base.h:207
 
std::map< std::string, FuelCellShop::Material::CatalystBase * > _mapFactory
This object is used to store all objects of type CatalystBase. 
Definition: catalyst_base.h:363
 
const std::string name
Name of the layer. 
Definition: base_material.h:155
 
virtual void alpha_cathodic(double &) const 
Return cathodic transfer coefficient for the reaction specified using set_reaction_kinetics method...
Definition: catalyst_base.h:181
 
static void declare_Catalyst_parameters(ParameterHandler ¶m)
Function used to declare all the data necessary in the parameter files for all BaseKinetics children...
Definition: catalyst_base.h:77
 
virtual ~CatalystBase()
Destructor. 
Definition: catalyst_base.h:331
 
static _mapFactory * get_mapFactory()
Definition: catalyst_base.h:371
 
std::string method_kinetics_ORR
Method for kinetics parameters (ORR), given in the parameter file. 
Definition: catalyst_base.h:420
 
CatalystBase(std::string name)
Constructor. 
Definition: catalyst_base.h:317
 
Definition: system_management.h:178
 
virtual void derivative_alpha_anodic(std::vector< double > &) const 
Return derivative of anodic transfer coefficient for the reaction specified using set_reaction_kineti...
Definition: catalyst_base.h:169
 
This class implements the interface to compute the properties of a "standard" catalyst. 
Definition: catalyst_base.h:65
 
double get_density() const 
Obtain the density [gm/cm^3]. 
Definition: catalyst_base.h:303
 
CatalystBase()
Constructor. 
Definition: catalyst_base.h:324
 
ReactionNames name_reaction_kinetics
Reaction name for which the class returns kinetic parameters. 
Definition: catalyst_base.h:417
 
virtual void reaction_order(const std::vector< VariableNames > &, std::map< VariableNames, double > &) const 
Compute the reaction order of the electrochemical reaction with respect to each species involved in t...
Definition: catalyst_base.h:274
 
ReactionNames get_reaction_name() const 
Member function to return the name of the reaction set in the catalyst material class. 
Definition: catalyst_base.h:286
 
virtual boost::shared_ptr< FuelCellShop::Material::CatalystBase > create_replica()
This member function is used to create an object of type CatalystBase. 
Definition: catalyst_base.h:385
 
virtual void declare_parameters(ParameterHandler ¶m) const 
Declare parameters for a parameter file. 
Definition: catalyst_base.h:338
 
virtual void initialize(ParameterHandler ¶m)
Initialize parameters. 
Definition: catalyst_base.h:349
 
FCSTLogStream log
Object used to output data to file and, if file attached recorded to a file as well. 
 
ReactionNames
Definition: system_management.h:177
 
virtual bool check_reaction_implementation(const std::string) const 
Check that whether a particular reaction is implemented in the class or not. 
Definition: catalyst_base.h:402
 
static boost::shared_ptr< FuelCellShop::Material::CatalystBase > create_Catalyst(ParameterHandler ¶m, std::string catalyst_name)
Function called in create_CatalystLayer and used to select the appropriate CatalystBase children that...
Definition: catalyst_base.h:106
 
double density
Density of catalyst particles [gm/cm^3]. 
Definition: catalyst_base.h:423
 
virtual double derivative_exchange_current_density(const double &) const 
Compute the derivative of exchange current density [A/cm^2] w.r.t temperature [Kelvin] for the reacti...
Definition: catalyst_base.h:219
 
virtual double dvoltage_cell_th_dT(const double &) const 
Compute the derivative of theoretical cell voltage [Volts] w.r.t temperature [Kelvin], for the reaction specified using set_reaction_kinetics method. 
Definition: catalyst_base.h:259
 
std::string get_kinetic_parameter_method() const 
Member function to return method for kinetics parameters (ORR). 
Definition: catalyst_base.h:295
 
virtual void derivative_alpha_cathodic(std::vector< double > &) const 
Return derivative of cathodic transfer coefficient for the reaction specified using set_reaction_kine...
Definition: catalyst_base.h:194
 
virtual void set_reaction_kinetics(const ReactionNames)
Member function used to specify the reaction for which the kinetic parameters are needed...
Definition: catalyst_base.h:142
 
virtual void reference_concentration(const std::vector< VariableNames > &, std::map< VariableNames, double > &) const 
Compute the reference concentration for the reaction specified using set_reaction_kinetics method...
Definition: catalyst_base.h:234
 
virtual double voltage_cell_th(const double &) const 
Compute the theroretical cell voltage [Volts] as a function of temperature, for the reaction specifie...
Definition: catalyst_base.h:247
 
Virtual class used to provide the interface for all material classes. 
Definition: base_material.h:54