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

This class implements a Butler-Volmer kinetic model. More...

#include <bv_kinetics.h>

Inheritance diagram for FuelCellShop::Kinetics::ButlerVolmerKinetics:
Inheritance graph
[legend]
Collaboration diagram for FuelCellShop::Kinetics::ButlerVolmerKinetics:
Collaboration graph
[legend]

Public Member Functions

 ButlerVolmerKinetics ()
 Constructor. More...
 
 ButlerVolmerKinetics (const bool)
 Constructor for PROTOTYPE. More...
 
 ~ButlerVolmerKinetics ()
 Destructor. More...
 
virtual void declare_parameters (ParameterHandler &) const
 Declare parameters for a parameter file. More...
 
virtual void initialize (ParameterHandler &)
 Member function used to read in data and initialize the necessary data to compute the coefficients. More...
 
Computational Methods
virtual void current_density (std::vector< double > &)
 Member function that computes the current, at every quadrature point in the cell. More...
 
virtual void derivative_current (std::map< VariableNames, std::vector< double > > &)
 Function to return the derivative of the current density w.r.t solution variables. More...
 
- Public Member Functions inherited from FuelCellShop::Kinetics::BaseKinetics
virtual ~BaseKinetics ()
 Destructor. More...
 
virtual bool has_coverage (const VariableNames &type)
 
void set_electrolyte_potential (const SolutionVariable &phi)
 Set the electrolyte phase potential. More...
 
void set_solid_potential (const SolutionVariable &phi)
 Set the solid phase potential. More...
 
void set_temperature (const SolutionVariable &temperature)
 Set temperature. More...
 
void set_reactant_concentrations (const std::vector< SolutionVariable > &conc_vec)
 Set reactant concentrations at the catalyst/electrolyte interface. More...
 
void set_derivative_flags (const std::vector< VariableNames > &flags)
 Set the variables for which you would like to compute the derivaitives. More...
 
void set_catalyst (FuelCellShop::Material::CatalystBase *cat_in)
 Set a pointer to the catalyst that will be used. More...
 
void set_electrolyte (FuelCellShop::Material::PolymerElectrolyteBase *electrolyte_in)
 Member function used to set the electrolyte pointer to that used by the application. More...
 
virtual void set_reaction_kinetics (const ReactionNames name)
 Member function used to specify the reaction for which the kinetic parameters are needed, for example for a Platinum catalyst, we can specify that we need the kinetic parameters for either the oxygen reduction reaction (ORR) or the hydrogen oxidation reaction (HOR) More...
 
void set_p_t (const double &P_Tot)
 Set the total gas pressure [Pascals] in the cell. More...
 
ReactionNames get_reaction_name () const
 Returns the name of the reaction that this kinetics class is using. More...
 
FuelCellShop::Material::CatalystBaseget_cat () const
 Function to get pointer to catalyst class. More...
 
virtual void compute_coverages (const std::string &name_species, std::vector< double > &coverage) const
 Used to return the coverage of the intermediate species if they are computed. More...
 
virtual void OH_coverage (std::vector< double > &) const
 Used to return the coverage of the intermediate species if they are computed. More...
 
virtual void O_coverage (std::vector< double > &) const
 Used to return the coverage of the intermediate species if they are computed. More...
 

Static Public Attributes

Instance Delivery (Public variables)
static const std::string concrete_name
 Concrete name used for objects of this class. More...
 

Instance Delivery

static ButlerVolmerKinetics const * PROTOTYPE
 Create prototype for the layer. More...
 
virtual boost::shared_ptr
< FuelCellShop::Kinetics::BaseKinetics
create_replica ()
 This member function is used to create an object of type gas diffusion layer. More...
 

Kinetics parameters

double alpha_c
 Cathodic transfer coefficient. More...
 
double alpha_a
 Anodic transfer coefficient. More...
 
std::map< VariableNames, double > ref_conc
 Map of reference concentrations. More...
 
std::map< VariableNames, double > gamma
 Map of reaction orders. More...
 
virtual void init_kin_param ()
 Method used to initialize reference concentrations, reactions orders and cathodic/anodic transfer coefficient for the reaction, and number of quadrature points in the cell. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from FuelCellShop::Kinetics::BaseKinetics
static void declare_Kinetics_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::Kinetics::BaseKinetics
create_Kinetics (ParameterHandler &param, std::string kinetics_name)
 Function called in create_CatalystLayer and used to select the appropriate BaseKinetics type that will be used in the layer. More...
 
- Protected Types inherited from FuelCellShop::Kinetics::BaseKinetics
typedef std::map< std::string,
BaseKinetics * > 
_mapFactory
 This object is used to store all objects of type BaseKinetics. More...
 
- Protected Member Functions inherited from FuelCellShop::Kinetics::BaseKinetics
 BaseKinetics ()
 Constructor. More...
 
- Static Protected Member Functions inherited from FuelCellShop::Kinetics::BaseKinetics
static _mapFactoryget_mapFactory ()
 
- Protected Attributes inherited from FuelCellShop::Kinetics::BaseKinetics
double R
 Universal gas constant. More...
 
double F
 Universal Farday's constant. More...
 
double K
 Boltzmann constant. More...
 
double p_total
 Total gas pressure [Pascals] in the cell for isobaric case. More...
 
std::map< VariableNames,
SolutionVariable
reactants_map
 Map of SolutionVariables storing a pointer to the solution vector storing the concentration of each one of the reactants implemented. More...
 
SolutionVariable phi_m
 Struct storing a pointer to the solution vector for the electrolyte potential. More...
 
SolutionVariable phi_s
 Struct stroing a pointer to the solution vector for the electronic/solid potential. More...
 
SolutionVariable T
 Struct stroing a pointer to the solution vector for the temperature. More...
 
bool kin_param_initialized
 Boolean variable to determine whether init_kin_param has been already called or not. More...
 
ReactionNames name_reaction_kinetics
 Enumeration with the reaction name for which the class returns kinetic parameters. More...
 
std::vector< VariableNamesderivative_flags
 Flags for derivatives: These flags are used to request derivatives which are computed using the derivative_current function. More...
 
unsigned int n_quad
 Number of quadrature points in the cell. More...
 
FuelCellShop::Material::CatalystBasecatalyst
 Pointer to the catalyst object that is created at the application level and passed to the kinetics class using the set_catalyst function. More...
 
FuelCellShop::Material::PolymerElectrolyteBaseelectrolyte
 Pointer to the electrolyte object created in the application that is used to calculate the properties of the electrolyte in the catalyst layer. More...
 

Detailed Description

This class implements a Butler-Volmer kinetic model.

The model is based on the following equation

\[ i = i_0 \left( \frac{c_R}{c^{ref}_R} \right)^\gamma \left[ exp \left(\frac{\alpha_a RT}{nF} (\phi_s - \phi_m - E_0)\right) - exp \left(\frac{-\alpha_c RT}{nF} (\phi_s - \phi_m - E_0)\right) \right] \]

where $ c_R $ and $ c^{ref}_R $ are the reactant concentration and reference concentration respectively, $ \gamma $ is the reaction order, $ \alpha_a $ is the anodic transfer coefficient, $ \alpha_c $ is the cathodic transfer coefficient, $ \phi_s $ and $ \phi_m $ are the solid and electrolyte potentials and $ E_0 $ is the open cell voltage for the electrochemical reaction.

In the parameter file there are no parameters to specify since the kinetics parameters are given by the catalyst used.

Usage Details:

Author
M. Moore, 2011-12
M. Bhaiya, 2013
M. Secanell, 2006-13

Constructor & Destructor Documentation

FuelCellShop::Kinetics::ButlerVolmerKinetics::ButlerVolmerKinetics ( )

Constructor.

FuelCellShop::Kinetics::ButlerVolmerKinetics::ButlerVolmerKinetics ( const bool  )

Constructor for PROTOTYPE.

Warning
For internal use only
FuelCellShop::Kinetics::ButlerVolmerKinetics::~ButlerVolmerKinetics ( )

Destructor.

Member Function Documentation

virtual boost::shared_ptr<FuelCellShop::Kinetics::BaseKinetics > FuelCellShop::Kinetics::ButlerVolmerKinetics::create_replica ( )
inlineprotectedvirtual

This member function is used to create an object of type gas diffusion layer.

Warning
This class MUST be redeclared in every child.

Reimplemented from FuelCellShop::Kinetics::BaseKinetics.

virtual void FuelCellShop::Kinetics::ButlerVolmerKinetics::current_density ( std::vector< double > &  )
virtual

Member function that computes the current, at every quadrature point in the cell.

Reimplemented from FuelCellShop::Kinetics::BaseKinetics.

virtual void FuelCellShop::Kinetics::ButlerVolmerKinetics::declare_parameters ( ParameterHandler &  ) const
inlinevirtual

Declare parameters for a parameter file.

Remarks
This method current doesn't implement anything.

Reimplemented from FuelCellShop::Kinetics::BaseKinetics.

virtual void FuelCellShop::Kinetics::ButlerVolmerKinetics::derivative_current ( std::map< VariableNames, std::vector< double > > &  )
virtual

Function to return the derivative of the current density w.r.t solution variables.

It returns a map of vectors containing derivative w.r.t solution variables / design variables set using set_derivative_flags method. Each vector can be accessed by using Key of the map, which correpsonds to the VariableNames (solution/design variable). This method takes input map by reference, hence the map is needed to be created at application/equation level with default arguments and passed inside this method.

Reimplemented from FuelCellShop::Kinetics::BaseKinetics.

virtual void FuelCellShop::Kinetics::ButlerVolmerKinetics::init_kin_param ( )
inlineprotectedvirtual

Method used to initialize reference concentrations, reactions orders and cathodic/anodic transfer coefficient for the reaction, and number of quadrature points in the cell.

Implements FuelCellShop::Kinetics::BaseKinetics.

virtual void FuelCellShop::Kinetics::ButlerVolmerKinetics::initialize ( ParameterHandler &  )
inlinevirtual

Member function used to read in data and initialize the necessary data to compute the coefficients.

Remarks
This method currently doesn't implement anything.

Reimplemented from FuelCellShop::Kinetics::BaseKinetics.

Member Data Documentation

double FuelCellShop::Kinetics::ButlerVolmerKinetics::alpha_a
protected

Anodic transfer coefficient.

double FuelCellShop::Kinetics::ButlerVolmerKinetics::alpha_c
protected

Cathodic transfer coefficient.

const std::string FuelCellShop::Kinetics::ButlerVolmerKinetics::concrete_name
static

Concrete name used for objects of this class.

This name is used when setting up the subsection where the data is stored in the input file.

The data will be stored under

* subsection concrete_name
*
* end
*
std::map< VariableNames, double > FuelCellShop::Kinetics::ButlerVolmerKinetics::gamma
protected

Map of reaction orders.

ButlerVolmerKinetics const* FuelCellShop::Kinetics::ButlerVolmerKinetics::PROTOTYPE
staticprotected

Create prototype for the layer.

std::map< VariableNames, double > FuelCellShop::Kinetics::ButlerVolmerKinetics::ref_conc
protected

Map of reference concentrations.


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