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