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 std::string)
 Member function used to specify the reaction for which the kinetic parameters are needed.
 
Accessors and Info
virtual void alpha_anodic (double &) const
 Return anodic transfer coefficient for the reaction specified using set_reaction_kinetics method.
 
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.
 
virtual void alpha_cathodic (double &) const
 Return cathodic transfer coefficient for the reaction specified using set_reaction_kinetics method.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
std::string get_reaction_name () const
 Member function to return the name of the reaction set in the catalyst material class.
 
double get_density () const
 Obtain the density [gm/cm^3].
 
- Public Member Functions inherited from FuelCellShop::Material::BaseMaterial
void set_derivative_flags (const std::vector< VariableNames > &flags)
 Set the variables for which you would like to compute the derivatives.
 
const std::string & name_material ()
 Return the name of the layer.
 
virtual void print_material_properties () const
 This function prints out the material properties.
 

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.
 
static void set_Catalyst_parameters (const std::vector< std::string > &name_dvar, const std::vector< double > &value_dvar, ParameterHandler &param)
 
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.
 

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.
 

Protected Member Functions

Constructors, destructor, and parameter initalization
 CatalystBase (std::string name)
 Constructor.
 
 CatalystBase ()
 Constructor.
 
virtual ~CatalystBase ()
 Destructor.
 
virtual void declare_parameters (ParameterHandler &param) const
 Declare parameters for a parameter file.
 
virtual void set_parameters (const std::vector< std::string > &name_dvar, const std::vector< double > &value_dvar, ParameterHandler &param)
 Member function used to change the values in the parameter file for a given list of parameters.
 
virtual void initialize (ParameterHandler &param)
 Initialize parameters.
 
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.
 
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.
 
- Protected Member Functions inherited from FuelCellShop::Material::BaseMaterial
 BaseMaterial ()
 Constructor.
 
 BaseMaterial (const std::string &name)
 Constructor.
 
virtual ~BaseMaterial ()
 Destructor.
 

Static Protected Member Functions

Instance Delivery (Private and static)
static _mapFactoryget_mapFactory ()
 

Protected Attributes

Internal variables
std::string name_reaction_kinetics
 Reaction name for which the class returns kinetic parameters.
 
double density
 Density of catalyst particles [gm/cm^3].
 
- Protected Attributes inherited from FuelCellShop::Material::BaseMaterial
const std::string name
 Name of the layer.
 
std::vector< VariableNamesderivative_flags
 Flags for derivatives: These flags are used to request derivatives.
 

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.

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.

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).

Reimplemented in FuelCellShop::Material::Platinum.

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().

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.

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.

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).
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).
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.

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.

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.

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

Obtain the density [gm/cm^3].

References density.

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

Referenced by create_Catalyst(), declare_Catalyst_parameters(), and set_Catalyst_parameters().

Here is the caller graph for this function:

std::string 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.

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.

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.

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.

static void FuelCellShop::Material::CatalystBase::set_Catalyst_parameters ( const std::vector< std::string > &  name_dvar,
const std::vector< double > &  value_dvar,
ParameterHandler &  param 
)
inlinestatic

References get_mapFactory().

Here is the call graph for this function:

virtual void FuelCellShop::Material::CatalystBase::set_parameters ( const std::vector< std::string > &  name_dvar,
const std::vector< double > &  value_dvar,
ParameterHandler &  param 
)
inlineprotectedvirtual

Member function used to change the values in the parameter file for a given list of parameters.

  • name_dvar should ideally contain the string as it would appear in the input file, i.e. "alpha_c_ORR"
  • value_dvar contains the value that the variable should be set at
  • param is the ParameterHandler that contains all the information that has been read from 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.

virtual void FuelCellShop::Material::CatalystBase::set_reaction_kinetics ( const std::string  )
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.

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.

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::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: