OpenFCST: The open-source Fuel Cell Simulation Toolbox
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members
FuelCellShop::Material::CatalystBase Class Reference

This class implements the interface to compute the properties of a "standard" catalyst. More...

#include <catalyst_base.h>

Inheritance diagram for FuelCellShop::Material::CatalystBase:
Inheritance graph
[legend]
Collaboration diagram for FuelCellShop::Material::CatalystBase:
Collaboration graph
[legend]

Public Member Functions

Initializaton
virtual void set_reaction_kinetics (const ReactionNames)
 Member function used to specify the reaction for which the kinetic parameters are needed. More...
 
Accessors and Info
virtual void alpha_anodic (double &) const
 Return anodic transfer coefficient for the reaction specified using set_reaction_kinetics method. More...
 
virtual void derivative_alpha_anodic (std::vector< double > &) const
 Return derivative of anodic transfer coefficient for the reaction specified using set_reaction_kinetics method with respect to the solution and design parameters specified using set_derivative_flags method. More...
 
virtual void alpha_cathodic (double &) const
 Return cathodic transfer coefficient for the reaction specified using set_reaction_kinetics method. More...
 
virtual void derivative_alpha_cathodic (std::vector< double > &) const
 Return derivative of cathodic transfer coefficient for the reaction specified using set_reaction_kinetics method with respect to the solution and design parameters specified using set_derivative_flags method. More...
 
virtual double exchange_current_density (const double &) const
 Compute the exchange current density [A/cm^2] for the reaction specified using set_reaction_kinetics method. More...
 
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 reaction specified using set_reaction_kinetics method. More...
 
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. More...
 
virtual double voltage_cell_th (const double &) const
 Compute the theroretical cell voltage [Volts] as a function of temperature, for the reaction specified using set_reaction_kinetics method. More...
 
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. More...
 
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 the reaction specified using set_reaction_kinetics method. More...
 
ReactionNames get_reaction_name () const
 Member function to return the name of the reaction set in the catalyst material class. More...
 
std::string get_kinetic_parameter_method () const
 Member function to return method for kinetics parameters (ORR). More...
 
double get_density () const
 Obtain the density [gm/cm^3]. More...
 
- Public Member Functions inherited from FuelCellShop::Material::BaseMaterial
void set_derivative_flags (const std::vector< VariableNames > &flags)
 Set the names of FCST solution variables with respect to which you would like to compute the derivatives of material properties. More...
 
const std::string & name_material () const
 Return the name of the layer. More...
 
virtual void print_material_properties () const
 This function prints out the material properties. More...
 

Static Public Member Functions

Instance Delivery (Public functions)
static void declare_Catalyst_parameters (ParameterHandler &param)
 Function used to declare all the data necessary in the parameter files for all BaseKinetics children. More...
 
static boost::shared_ptr
< FuelCellShop::Material::CatalystBase
create_Catalyst (ParameterHandler &param, std::string catalyst_name)
 Function called in create_CatalystLayer and used to select the appropriate CatalystBase children that will be used in the layer. More...
 

Protected Types

Instance Delivery (Types)
typedef std::map< std::string,
FuelCellShop::Material::CatalystBase * > 
_mapFactory
 This object is used to store all objects of type CatalystBase. More...
 

Protected Member Functions

Constructors, destructor, and parameter initalization
 CatalystBase (std::string name)
 Constructor. More...
 
 CatalystBase ()
 Constructor. More...
 
virtual ~CatalystBase ()
 Destructor. More...
 
virtual void declare_parameters (ParameterHandler &param) const
 Declare parameters for a parameter file. More...
 
virtual void initialize (ParameterHandler &param)
 Initialize parameters. More...
 
Instance Delivery (Private functions)
virtual boost::shared_ptr
< FuelCellShop::Material::CatalystBase
create_replica ()
 This member function is used to create an object of type CatalystBase. More...
 
Protected member functions:
virtual bool check_reaction_implementation (const std::string) const
 Check that whether a particular reaction is implemented in the class or not. More...
 
- Protected Member Functions inherited from FuelCellShop::Material::BaseMaterial
 BaseMaterial ()
 Constructor. More...
 
 BaseMaterial (const std::string &name)
 Constructor. More...
 
virtual ~BaseMaterial ()
 Destructor. More...
 

Static Protected Member Functions

Instance Delivery (Private and static)
static _mapFactoryget_mapFactory ()
 

Protected Attributes

Internal variables
ReactionNames name_reaction_kinetics
 Reaction name for which the class returns kinetic parameters. More...
 
std::string method_kinetics_ORR
 Method for kinetics parameters (ORR), given in the parameter file. More...
 
double density
 Density of catalyst particles [gm/cm^3]. More...
 
- Protected Attributes inherited from FuelCellShop::Material::BaseMaterial
const std::string name
 Name of the layer. More...
 
std::vector< VariableNamesderivative_flags
 Flags for derivatives: These flags are used to request derivatives of material properties. More...
 

Detailed Description

This class implements the interface to compute the properties of a "standard" catalyst.

Note that there are many types of catalyst such as platinum, ruthinium, core-shell Pt alloys and non-precious metal alloys. This class serves a common interface for each one of these types. It implements member functions to declare the parameter file for each catalyst, read the parameter file and select the appropriate catalysts based on the user input.

The properties of each catalyst are implemented in the children classes. The most important properties that define our catalyst are the activity and reaction order parameters. Therefore, before the layer can be used, the reaction that it is catalyzing should be specified.

After the reaction is known, the class return the exchange current density, transfer coefficient, reaction order etc. for the type of catalysts. If the reaction is a multi-step reaction, it might return additional parameters such as the free-energies of activation for each elementary reaction.

This class should never be used in an application. Instead, the class is used inside FuelCellShop::Kinetics::BaseKinetics objects. To use the class, follow the instructions below.

Usage Details:

Author
M. Bhaiya, 2012-13
M. Secanell, 2013

Member Typedef Documentation

This object is used to store all objects of type CatalystBase.

Constructor & Destructor Documentation

FuelCellShop::Material::CatalystBase::CatalystBase ( std::string  name)
inlineprotected

Constructor.

Deprecated:
FuelCellShop::Material::CatalystBase::CatalystBase ( )
inlineprotected

Constructor.

virtual FuelCellShop::Material::CatalystBase::~CatalystBase ( )
inlineprotectedvirtual

Destructor.

Member Function Documentation

virtual void FuelCellShop::Material::CatalystBase::alpha_anodic ( double &  ) const
inlinevirtual

Return anodic transfer coefficient for the reaction specified using set_reaction_kinetics method.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Platinum.

References FcstUtilities::log.

virtual void FuelCellShop::Material::CatalystBase::alpha_cathodic ( double &  ) const
inlinevirtual

Return cathodic transfer coefficient for the reaction specified using set_reaction_kinetics method.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Platinum.

References FcstUtilities::log.

virtual bool FuelCellShop::Material::CatalystBase::check_reaction_implementation ( const std::string  ) const
inlineprotectedvirtual

Check that whether a particular reaction is implemented in the class or not.

It takes a std::string as an input argument, against which the check is done. For Developers: As more reactions are implemented in the class, this method should be extended. Moreover, it is recommended to use this method in set_reaction_kinetics method as an assertation check.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

References FcstUtilities::log.

static boost::shared_ptr<FuelCellShop::Material::CatalystBase > FuelCellShop::Material::CatalystBase::create_Catalyst ( ParameterHandler &  param,
std::string  catalyst_name 
)
inlinestatic

Function called in create_CatalystLayer and used to select the appropriate CatalystBase children that will be used in the layer.

The name of the CatalystBase children object to be used is provided in catalyst_name.

The name of the CatalystBase children object is provided in the ParameterHandler in the CatalystLayer subsection as follows:

* subsection Catalyst Layer Properties <- This name is the name of the catalyst layer subsection where the kinetics are taking place.
* (...)
* set Catalyst type = Platinum
* (...)
* end
*

current options are [ Platinum ]

References get_mapFactory(), and FcstUtilities::log.

Here is the call graph for this function:

virtual boost::shared_ptr<FuelCellShop::Material::CatalystBase > FuelCellShop::Material::CatalystBase::create_replica ( )
inlineprotectedvirtual

This member function is used to create an object of type CatalystBase.

Warning
This class MUST be redeclared in every child.

Reimplemented in FuelCellShop::Material::Platinum.

References FcstUtilities::log.

static void FuelCellShop::Material::CatalystBase::declare_Catalyst_parameters ( ParameterHandler &  param)
inlinestatic

Function used to declare all the data necessary in the parameter files for all BaseKinetics children.

References get_mapFactory().

Here is the call graph for this function:

virtual void FuelCellShop::Material::CatalystBase::declare_parameters ( ParameterHandler &  param) const
inlineprotectedvirtual

Declare parameters for a parameter file.

Warning
This is a PureFunction and it does not declare anything, so please do not call this function in the children.

Reimplemented from FuelCellShop::Material::BaseMaterial.

Reimplemented in FuelCellShop::Material::Platinum.

References FcstUtilities::log.

virtual void FuelCellShop::Material::CatalystBase::derivative_alpha_anodic ( std::vector< double > &  ) const
inlinevirtual

Return derivative of anodic transfer coefficient for the reaction specified using set_reaction_kinetics method with respect to the solution and design parameters specified using set_derivative_flags method.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

References FcstUtilities::log.

virtual void FuelCellShop::Material::CatalystBase::derivative_alpha_cathodic ( std::vector< double > &  ) const
inlinevirtual

Return derivative of cathodic transfer coefficient for the reaction specified using set_reaction_kinetics method with respect to the solution and design parameters specified using set_derivative_flags method.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

References FcstUtilities::log.

virtual double FuelCellShop::Material::CatalystBase::derivative_exchange_current_density ( const double &  ) const
inlinevirtual

Compute the derivative of exchange current density [A/cm^2] w.r.t temperature [Kelvin] for the reaction specified using set_reaction_kinetics method.

It takes temperature [Kelvin] as an input argument by reference and returns the derivative.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Platinum.

References FcstUtilities::log.

virtual double FuelCellShop::Material::CatalystBase::dvoltage_cell_th_dT ( const double &  ) const
inlinevirtual

Compute the derivative of theoretical cell voltage [Volts] w.r.t temperature [Kelvin], for the reaction specified using set_reaction_kinetics method.

It takes temperature [Kelvin] as an input argument and returns the derivative.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Platinum.

References FcstUtilities::log.

virtual double FuelCellShop::Material::CatalystBase::exchange_current_density ( const double &  ) const
inlinevirtual

Compute the exchange current density [A/cm^2] for the reaction specified using set_reaction_kinetics method.

It takes temperature [Kelvin] as an input argument by reference and returns the exchange current density [A/cm^2].

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Platinum.

References FcstUtilities::log.

double FuelCellShop::Material::CatalystBase::get_density ( ) const
inline

Obtain the density [gm/cm^3].

References density.

std::string FuelCellShop::Material::CatalystBase::get_kinetic_parameter_method ( ) const
inline

Member function to return method for kinetics parameters (ORR).

References method_kinetics_ORR.

static _mapFactory* FuelCellShop::Material::CatalystBase::get_mapFactory ( )
inlinestaticprotected

Referenced by create_Catalyst(), and declare_Catalyst_parameters().

Here is the caller graph for this function:

ReactionNames FuelCellShop::Material::CatalystBase::get_reaction_name ( ) const
inline

Member function to return the name of the reaction set in the catalyst material class.

References name_reaction_kinetics, and noReaction.

virtual void FuelCellShop::Material::CatalystBase::initialize ( ParameterHandler &  param)
inlineprotectedvirtual

Initialize parameters.

Warning
This is a PureFunction and it does not declare anything, so please do not call this function in the children.

Reimplemented from FuelCellShop::Material::BaseMaterial.

Reimplemented in FuelCellShop::Material::Platinum.

References FcstUtilities::log.

virtual void FuelCellShop::Material::CatalystBase::reaction_order ( const std::vector< VariableNames > &  ,
std::map< VariableNames, double > &   
) const
inlinevirtual

Compute the reaction order of the electrochemical reaction with respect to each species involved in the reaction specified using set_reaction_kinetics method.

The reaction might depend on more than one species, therefore this class returns a std::map of reaction orders referenced using VariableNames as Key. This map is returned by reference (second argument). It takes a vector of VariableNames as first argument, corresponding to those solution variables for whose reaction orders are required.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Platinum.

References FcstUtilities::log.

virtual void FuelCellShop::Material::CatalystBase::reference_concentration ( const std::vector< VariableNames > &  ,
std::map< VariableNames, double > &   
) const
inlinevirtual

Compute the reference concentration for the reaction specified using set_reaction_kinetics method.

The reaction might depend on more than one species, therefore this class returns a std::map of reference concentrations referenced using VariableNames as Key. This map is returned by reference (second argument). It takes a vector of VariableNames as first argument, corresponding to those solution variables for whose reference concentrations are required.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Platinum.

References FcstUtilities::log.

virtual void FuelCellShop::Material::CatalystBase::set_reaction_kinetics ( const ReactionNames  )
inlinevirtual

Member function used to specify the reaction for which the kinetic parameters are needed.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Platinum.

References FcstUtilities::log.

virtual double FuelCellShop::Material::CatalystBase::voltage_cell_th ( const double &  ) const
inlinevirtual

Compute the theroretical cell voltage [Volts] as a function of temperature, for the reaction specified using set_reaction_kinetics method.

It takes temperature [Kelvin] as an input argument and returns the voltage.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Platinum.

References FcstUtilities::log.

Member Data Documentation

double FuelCellShop::Material::CatalystBase::density
protected

Density of catalyst particles [gm/cm^3].

Referenced by get_density().

std::string FuelCellShop::Material::CatalystBase::method_kinetics_ORR
protected

Method for kinetics parameters (ORR), given in the parameter file.

Referenced by get_kinetic_parameter_method().

ReactionNames FuelCellShop::Material::CatalystBase::name_reaction_kinetics
protected

Reaction name for which the class returns kinetic parameters.

Referenced by get_reaction_name(), and FuelCellShop::Material::Platinum::set_reaction_kinetics().


The documentation for this class was generated from the following file: