17 #ifndef _FUELCELLSHOP_CATALYST_BASE__H
18 #define _FUELCELLSHOP_CATALYST_BASE__H
21 #include <base/parameter_handler.h>
22 #include <base/point.h>
23 #include <base/function.h>
24 #include <lac/vector.h>
25 #include <fe/fe_values.h>
36 namespace FuelCellShop
88 iterator->second->declare_parameters(param);
110 static boost::shared_ptr<FuelCellShop::Material::CatalystBase >
create_Catalyst (ParameterHandler ¶m,
111 std::string catalyst_name)
113 boost::shared_ptr<FuelCellShop::Material::CatalystBase > pointer;
119 if (iterator->second)
121 pointer = iterator->second->create_replica();
131 FcstUtilities::log<<
"Concrete name in FuelCellShop::Material::CatalystBase::create_Catalyst does not exist"<<std::endl;
135 pointer->initialize(param);
148 const std::type_info& info =
typeid(*this);
150 <<
" called in Class "
151 << info.name() << std::endl;
162 const std::type_info& info =
typeid(*this);
164 <<
" called in Class "
165 << info.name() << std::endl;
175 const std::type_info& info =
typeid(*this);
177 <<
" called in Class "
178 << info.name() << std::endl;
187 const std::type_info& info =
typeid(*this);
189 <<
" called in Class "
190 << info.name() << std::endl;
200 const std::type_info& info =
typeid(*this);
202 <<
" called in Class "
203 << info.name() << std::endl;
213 const std::type_info& info =
typeid(*this);
215 <<
" called in Class "
216 << info.name() << std::endl;
225 const std::type_info& info =
typeid(*this);
227 <<
" called in Class "
228 << info.name() << std::endl;
239 std::map<VariableNames, double>& )
const
241 const std::type_info& info =
typeid(*this);
243 <<
" called in Class "
244 << info.name() << std::endl;
253 const std::type_info& info =
typeid(*this);
255 <<
" called in Class "
256 << info.name() << std::endl;
265 const std::type_info& info =
typeid(*this);
267 <<
" called in Class "
268 << info.name() << std::endl;
279 std::map<VariableNames, double>&)
const
281 const std::type_info& info =
typeid(*this);
283 <<
" called in Class "
284 << info.name() << std::endl;
301 Assert(
method_kinetics_ORR.size() != 0, ExcMessage(
"Kinetic parameter method not yet set in the CatalystBase object."));
344 const std::type_info& info =
typeid(*this);
346 <<
" called in Class "
347 << info.name() << std::endl;
355 const std::type_info& info =
typeid(*this);
357 <<
" called in Class "
358 << info.name() << std::endl;
367 typedef std::map< std::string, FuelCellShop::Material::CatalystBase* >
_mapFactory;
389 virtual boost::shared_ptr<FuelCellShop::Material::CatalystBase >
create_replica ()
391 const std::type_info& info =
typeid(*this);
393 <<
" called in Class "
394 << info.name() << std::endl;
408 const std::type_info& info =
typeid(*this);
410 <<
" called in Class "
411 << 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:160
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:211
std::map< std::string, FuelCellShop::Material::CatalystBase * > _mapFactory
This object is used to store all objects of type CatalystBase.
Definition: catalyst_base.h:367
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:185
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:81
virtual ~CatalystBase()
Destructor.
Definition: catalyst_base.h:335
static _mapFactory * get_mapFactory()
Definition: catalyst_base.h:375
std::string method_kinetics_ORR
Method for kinetics parameters (ORR), given in the parameter file.
Definition: catalyst_base.h:424
CatalystBase(std::string name)
Constructor.
Definition: catalyst_base.h:321
Definition: system_management.h:149
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:173
This class implements the interface to compute the properties of a "standard" catalyst.
Definition: catalyst_base.h:69
double get_density() const
Obtain the density [gm/cm^3].
Definition: catalyst_base.h:307
CatalystBase()
Constructor.
Definition: catalyst_base.h:328
ReactionNames name_reaction_kinetics
Reaction name for which the class returns kinetic parameters.
Definition: catalyst_base.h:421
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:278
ReactionNames get_reaction_name() const
Member function to return the name of the reaction set in the catalyst material class.
Definition: catalyst_base.h:290
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:389
virtual void declare_parameters(ParameterHandler ¶m) const
Declare parameters for a parameter file.
Definition: catalyst_base.h:342
virtual void initialize(ParameterHandler ¶m)
Initialize parameters.
Definition: catalyst_base.h:353
FCSTLogStream log
Object used to output data to file and, if file attached recorded to a file as well.
ReactionNames
Definition: system_management.h:148
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:406
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:110
double density
Density of catalyst particles [gm/cm^3].
Definition: catalyst_base.h:427
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:223
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:263
std::string get_kinetic_parameter_method() const
Member function to return method for kinetics parameters (ORR).
Definition: catalyst_base.h:299
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:198
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:146
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:238
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:251
Virtual class used to provide the interface for all material classes.
Definition: base_material.h:54