OpenFCST: The open-source Fuel Cell Simulation Toolbox
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Static Public Attributes | List of all members
FuelCellShop::Layer::DummyCL< dim > Class Template Reference

This class characterizes a macro-homogeneous catalyst layer and should be used in the case of constant effective properties, viz., effective_proton_conductivity, effective_gas_diffusivity, effective_electron_conductivity and effective_thermal_conductivity. More...

#include <dummy_CL.h>

Inheritance diagram for FuelCellShop::Layer::DummyCL< dim >:
Inheritance graph
[legend]
Collaboration diagram for FuelCellShop::Layer::DummyCL< dim >:
Collaboration graph
[legend]

Public Member Functions

Constructors, destructor, and initalization
 DummyCL ()
 Prototype Constructor.
 
 ~DummyCL ()
 Destructor.
 
virtual void declare_parameters (ParameterHandler &param) const
 Declare all necessary parameters in order to compute the coefficients.
 
virtual void initialize (ParameterHandler &param)
 Member function used to read in data and initialize the necessary data to compute the coefficients.
 
Accessors and info
virtual void effective_gas_diffusivity (Table< 2, Tensor< 2, dim > > &) const
 Compute the effective diffusivty in the CL.
 
virtual void effective_electron_conductivity (double &) const
 Compute the effective electron conductivity in the CL.
 
virtual void effective_electron_conductivity (Tensor< 2, dim > &) const
 Compute the effective electron conductivity in the CL.
 
virtual void effective_proton_conductivity (double &) const
 Compute the effective proton conductivity in the CL.
 
virtual void effective_proton_conductivity (std::vector< double > &) const
 Compute the effective proton conductivity in the CL, at quadrature points in the cell.
 
virtual void derivative_effective_proton_conductivity (std::map< VariableNames, std::vector< double > > &) const
 Compute the derivative of the effective proton conductivity in the CL with respect to either the solution or design parameters.
 
double get_active_area_Pt () const
 Get the active area of platinum per unit volume of CL.
 
virtual void current_density (std::vector< double > &)
 This member function will use a FuelCellShop::Kinetics class in order to compute the current density production in the CL.
 
virtual void derivative_current_density (std::map< VariableNames, std::vector< double > > &)
 This member function will use a FuelCellShop::Kinetics class in order to compute the derivative of the current density with respect to the variables setup using set_derivative_flags method.
 
virtual void current_density (std::vector< double > &current, std::vector< double > &effectiveness)
 This member function computes the current density production in the CL.
 
- Public Member Functions inherited from FuelCellShop::Layer::CatalystLayer< dim >
virtual void set_constant_solution (const double &value, const VariableNames &name)
 Set those solution variables which are constant in the particular application.
 
virtual void set_solution (const std::vector< SolutionVariable > &)
 This method is used to set the solution variable values in the kinetics object, at all quadrature points in the cell.
 
virtual void set_derivative_flags (const std::vector< VariableNames > &flags)
 Method used to set the variables for which you would like to compute the derivatives in the catalyst layer.
 
void set_reaction_kinetics (const std::string &rxn_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)
 
const std::type_info & get_base_type () const
 This member function returns a type_info object with the name of the base layer type the inherited class belongs to, i.e.
 
virtual void effective_gas_diffusivity (const double &, double &) const
 Compute the effective diffusivty in the CL.
 
virtual void effective_gas_diffusivity (Table< 2, double > &) const
 Return the effective diffusivty in the GDL for all the gases assigned to the layer using set_gases_and_compute.
 
virtual void derivative_effective_electron_conductivity (std::vector< double > &) const
 Compute the derivative of the effective electron conductivity in the GDL with respect to either the solution or design parameters.
 
virtual void derivative_effective_electron_conductivity (std::vector< Tensor< 2, dim > > &) const
 Compute the derivative of the effective electron conductivity in the GDL with respect to either the solution or design parameters.
 
virtual void effective_water_diffusivity (double &) const
 Compute the effective water diffusivity (lambda diffusivity) in the CL.
 
virtual void effective_water_diffusivity (std::vector< double > &) const
 Compute the effective water diffusivity (lambda diffusivity) at all quadrature points in the CL.
 
virtual void derivative_effective_water_diffusivity (std::map< VariableNames, std::vector< double > > &) const
 Compute the derivative of the effective water diffusivity (lambda diffusivity) in the CL with respect to either the solution or design parameters.
 
virtual void gas_permeablity (double &) const
 Compute the CL gas permeability.
 
virtual void gas_permeablity (Tensor< 2, dim > &) const
 Compute the CL gas permeability.
 
virtual void derivative_gas_permeablity (std::vector< double > &) const
 Compute the derivative of the effective gas permeability in the GDL with respect to either the solution or design parameters.
 
virtual void derivative_gas_permeablity (std::vector< Tensor< 2, dim > > &) const
 Compute the derivative of the effective gas permeability in the GDL with respect to either the solution or design parameters.
 
virtual void liquid_permeablity (double &) const
 Compute the GDL liquid permeability.
 
virtual void liquid_permeablity (Tensor< 2, dim > &) const
 Compute the GDL liquid permeability.
 
virtual void derivative_liquid_permeablity (std::vector< double > &) const
 Compute the derivative of the effective gas diffusion in the GDL with respect to either the solution or design parameters.
 
virtual void derivative_liquid_permeablity (std::vector< Tensor< 2, dim > > &) const
 Compute the derivative of the effective gas diffusion in the GDL with respect to either the solution or design parameters.
 
virtual
FuelCellShop::Material::PolymerElectrolyteBase
get_electrolyte () const
 Method to provide access to pointer of the electrolyte object of the catalyst layer.
 
virtual
FuelCellShop::Kinetics::BaseKinetics
get_kinetics () const
 Method to provide access to pointer of the kinetic object of the catalyst layer.
 
- Public Member Functions inherited from FuelCellShop::Layer::PorousLayer< dim >
void set_gases_and_compute (std::vector< FuelCellShop::Material::PureGas * > &gases_in, const double &pressure_in, const double &temperature_in)
 Member function used to store all the gases that are in the pore space in the gas diffusion layer as well as their temperature [Kelvin] and total pressure [atm].
 
void compute_gas_diffusion (FuelCellShop::Material::PureGas *solute_gas, FuelCellShop::Material::PureGas *solvent_gas)
 Member function used to compute bulk diffusion coefficients and derivatives w.r.t temperature for non-isothermal case and store inside the layer.
 
void set_gases (std::vector< FuelCellShop::Material::PureGas * > &gases_in, const double &pressure_in)
 Member function used to store all the gases that are in the pore space in the porous layer.
 
void set_temperature (const SolutionVariable &T_in)
 Member function used to set the temperature ]Kelvin] at every quadrature point inside the cell.
 
FuelCellShop::Material::PureGasget_gas_pointer (int index) const
 Return the FuelCellShop::Material::PureGas pointer that is stored inside the class in the ith position.
 
std::vector
< FuelCellShop::Material::PureGas * > 
get_gases () const
 Returns the vector of FuelCellShop::Material::PureGas pointers stored in the porous layer.
 
void get_gas_index (FuelCellShop::Material::PureGas *gas_type, int &index) const
 Return the gas index in the GDL class.
 
void get_T_and_p (double &T, double &p) const
 Return the constant temperature [Kelvin] and constant pressure [atm] inside the layer.
 
void get_p (double &p) const
 Return the constant pressure [atm] inside the layer.
 
virtual void print_layer_properties () const
 This member function is a virtual class that can be used to output to screen information from the layer.
 
virtual bool test_layer () const
 This virtual class should be used for any derived class to be able to test the functionality of the class.
 
- Public Member Functions inherited from FuelCellShop::Layer::BaseLayer< dim >
void set_position (std::vector< Point< dim > > &p)
 Member function used by some applications such as dummyGDL in order to know which value to return.
 
bool belongs_to_material (const char material_id)
 Check if a given cell belongs to the catalyst layer.
 
const std::string & name_material ()
 Return the name of the layer.
 
virtual bool test_layer ()
 This virtual class should be used for any derived class to be able to test the functionality of the class.
 
unsigned int get_material_id ()
 Return the material id of the layer.
 

Static Public Attributes

static const std::string concrete_name
 Concrete name used for objects of this class.
 

Private Member Functions

Constructors
 DummyCL (const std::string &name)
 Constructor.
 
void declare_parameters (const std::string &name, ParameterHandler &param) const
 Declare parameters for a parameter file.
 
void set_parameters (const std::vector< std::string > &name_dvar, const std::vector< double > &value_dvar, const std::string &cl_section_name, ParameterHandler &param) const
 Member function used to set new parameters values in the optimization loop.
 

Private Attributes

Internal variables
double D_O2
 Oxygen diffusion coefficient.
 
double D_wv
 Water vapour diffusion coefficient.
 
double sigma_e
 Solid network conductivity.
 
double sigma_m
 Membrane phase conductivity.
 
double Av
 Active area of catalyst per unit volume of catalyst layer.
 

Instance Delivery

static DummyCL< dim > const * PROTOTYPE
 
virtual boost::shared_ptr
< FuelCellShop::Layer::CatalystLayer
< dim > > 
create_replica (const std::string &name)
 This member function is used to create an object of type gas diffusion layer.
 

Additional Inherited Members

- Static Public Member Functions inherited from FuelCellShop::Layer::CatalystLayer< dim >
static void declare_CatalystLayer_parameters (const std::string &cl_section_name, ParameterHandler &param)
 Function used to declare all the data necessary in the parameter files former all CatalystLayer children.
 
static void set_CatalystLayer_parameters (const std::vector< std::string > &name_dvar, const std::vector< double > &value_dvar, const std::string &cl_section_name, ParameterHandler &param)
 
static boost::shared_ptr
< FuelCellShop::Layer::CatalystLayer
< dim > > 
create_CatalystLayer (const std::string &cl_section_name, ParameterHandler &param)
 Function used to select the appropriate CatalystLayer type as specified in the ParameterHandler under line.
 
- Protected Types inherited from FuelCellShop::Layer::CatalystLayer< dim >
typedef std::map< std::string,
CatalystLayer< dim > * > 
_mapFactory
 This object is used to store all objects of type CatalystLayer.
 
- Protected Member Functions inherited from FuelCellShop::Layer::CatalystLayer< dim >
 CatalystLayer ()
 
 ~CatalystLayer ()
 Destructor.
 
 CatalystLayer (const std::string &name)
 Constructor.
 
- Static Protected Member Functions inherited from FuelCellShop::Layer::CatalystLayer< dim >
static _mapFactoryget_mapFactory ()
 Return the map library that stores all childrens of this class.
 
- Protected Attributes inherited from FuelCellShop::Layer::CatalystLayer< dim >
std::string diffusion_species_name
 If CL properties are stored inside the class (e.g.
 
bool default_materials
 If the default materials are used in the layer, this will be set to true.
 
std::string catalyst_type
 Catalyst type from input file.
 
std::string catalyst_support_type
 Catalyst Support type from input file.
 
std::string electrolyte_type
 Electrolyte type from input file.
 
std::string kinetics_type
 Kinetic class type from input file.
 
boost::shared_ptr
< FuelCellShop::Material::PolymerElectrolyteBase
electrolyte
 Pointer to the electrolyte object created in the application that is used to calculate the properties of the electrolyte in the catalyst layer.
 
boost::shared_ptr
< FuelCellShop::Material::CatalystSupportBase
catalyst_support
 Pointer to the catalyst support object created in the application that is used to calculate the carbon black conductivity in the catalyst layer.
 
boost::shared_ptr
< FuelCellShop::Material::CatalystBase
catalyst
 Pointer to the catalyst object created in the application that is used to store the properties of the catalyst used in the layer.
 
boost::shared_ptr
< FuelCellShop::Kinetics::BaseKinetics
kinetics
 Pointer to a kinetics object.
 
unsigned int n_quad
 Stores the number of quadrature points in the cell.
 
std::map< VariableNames,SolutionVariablesolutions
 Map storing solution variables.
 
VariableNames reactant
 Name of the reactant which is being solved for in the catalyst layer.
 
Friend class for Unit Testing

Detailed Description

template<int dim>
class FuelCellShop::Layer::DummyCL< dim >

This class characterizes a macro-homogeneous catalyst layer and should be used in the case of constant effective properties, viz., effective_proton_conductivity, effective_gas_diffusivity, effective_electron_conductivity and effective_thermal_conductivity.

Note
These constant effective properties should be set using the parameter file.
Author
M. Secanell and M. Bhaiya, 2011-13

Constructor & Destructor Documentation

template<int dim>
FuelCellShop::Layer::DummyCL< dim >::DummyCL ( )

Prototype Constructor.

Warning
For internal use only
template<int dim>
FuelCellShop::Layer::DummyCL< dim >::~DummyCL ( )

Destructor.

template<int dim>
FuelCellShop::Layer::DummyCL< dim >::DummyCL ( const std::string &  name)
private

Constructor.

Member Function Documentation

template<int dim>
virtual boost::shared_ptr<FuelCellShop::Layer::CatalystLayer<dim> > FuelCellShop::Layer::DummyCL< dim >::create_replica ( const std::string &  name)
inlineprivatevirtual

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::Layer::CatalystLayer< dim >.

References FuelCellShop::Layer::BaseLayer< dim >::name.

template<int dim>
virtual void FuelCellShop::Layer::DummyCL< dim >::current_density ( std::vector< double > &  )
virtual

This member function will use a FuelCellShop::Kinetics class in order to compute the current density production in the CL.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

Referenced by FuelCellShop::Layer::DummyCL< dim >::current_density().

Here is the caller graph for this function:

template<int dim>
virtual void FuelCellShop::Layer::DummyCL< dim >::current_density ( std::vector< double > &  current,
std::vector< double > &  effectiveness 
)
inlinevirtual

This member function computes the current density production in the CL.

First argument is current density, and second is effectiveness, at all quadrature points in the cell. Since this is a dummy layer, effectiveness is filled as 1.0

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

References FuelCellShop::Layer::DummyCL< dim >::current_density().

Here is the call graph for this function:

template<int dim>
virtual void FuelCellShop::Layer::DummyCL< dim >::declare_parameters ( ParameterHandler &  param) const
inlinevirtual

Declare all necessary parameters in order to compute the coefficients.

Deprecated:
Use declare_all_CatalystLayer_parameters

Reimplemented from FuelCellShop::Layer::PorousLayer< dim >.

References FuelCellShop::Layer::BaseLayer< dim >::name.

template<int dim>
void FuelCellShop::Layer::DummyCL< dim >::declare_parameters ( const std::string &  name,
ParameterHandler &  param 
) const
inlineprivatevirtual

Declare parameters for a parameter file.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

References FuelCellShop::Layer::DummyCL< dim >::concrete_name, and FuelCellShop::Layer::CatalystLayer< dim >::declare_parameters().

Here is the call graph for this function:

template<int dim>
virtual void FuelCellShop::Layer::DummyCL< dim >::derivative_current_density ( std::map< VariableNames, std::vector< double > > &  )
virtual

This member function will use a FuelCellShop::Kinetics class in order to compute the derivative of the current density with respect to the variables setup using set_derivative_flags method.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::DummyCL< dim >::derivative_effective_proton_conductivity ( std::map< VariableNames, std::vector< double > > &  ) const
virtual

Compute the derivative of the effective proton conductivity in the CL with respect to either the solution or design parameters.

The parameters with respect to which the derivatives are computed are setup in FuelCellShop::Layer::set_derivative_flags()

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::DummyCL< dim >::effective_electron_conductivity ( double &  ) const
virtual

Compute the effective electron conductivity in the CL.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::DummyCL< dim >::effective_electron_conductivity ( Tensor< 2, dim > &  ) const
virtual

Compute the effective electron conductivity in the CL.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::DummyCL< dim >::effective_gas_diffusivity ( Table< 2, Tensor< 2, dim > > &  ) const
virtual

Compute the effective diffusivty in the CL.

This routine takes the gas diffusivity from FuelCellShop::BinaryDiffusion and transforms it into an effective property taking into account the porosity and structure of the CL

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::DummyCL< dim >::effective_proton_conductivity ( double &  ) const
virtual

Compute the effective proton conductivity in the CL.

Note
This class is awesome for testing the capabilites of the model since it could be implemented as dependant on the solution or not... In this first iteration, I've implemented it as constant

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::DummyCL< dim >::effective_proton_conductivity ( std::vector< double > &  ) const
virtual

Compute the effective proton conductivity in the CL, at quadrature points in the cell.

Note
Input vector should be initialized (size set to number of quadrature points), before passing over to this function.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
double FuelCellShop::Layer::DummyCL< dim >::get_active_area_Pt ( ) const
inlinevirtual

Get the active area of platinum per unit volume of CL.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

References FuelCellShop::Layer::DummyCL< dim >::Av.

template<int dim>
virtual void FuelCellShop::Layer::DummyCL< dim >::initialize ( ParameterHandler &  param)
virtual

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

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
void FuelCellShop::Layer::DummyCL< dim >::set_parameters ( const std::vector< std::string > &  name_dvar,
const std::vector< double > &  value_dvar,
const std::string &  cl_section_name,
ParameterHandler &  param 
) const
privatevirtual

Member function used to set new parameters values in the optimization loop.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

Member Data Documentation

template<int dim>
double FuelCellShop::Layer::DummyCL< dim >::Av
private

Active area of catalyst per unit volume of catalyst layer.

Referenced by FuelCellShop::Layer::DummyCL< dim >::get_active_area_Pt().

template<int dim>
const std::string FuelCellShop::Layer::DummyCL< dim >::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 store under

subsection name_specified_in_constructor
set Material id = 2
set Gas diffusion layer type = DummyGDL # <-here I select the type of object of type GasDiffusionLayer
subsection DummyGDL # <- this is the concrete_name for this class
set all info relevant to this object
end
end

Referenced by FuelCellShop::Layer::DummyCL< dim >::declare_parameters().

template<int dim>
double FuelCellShop::Layer::DummyCL< dim >::D_O2
private

Oxygen diffusion coefficient.

template<int dim>
double FuelCellShop::Layer::DummyCL< dim >::D_wv
private

Water vapour diffusion coefficient.

template<int dim>
DummyCL<dim> const* FuelCellShop::Layer::DummyCL< dim >::PROTOTYPE
staticprivate
template<int dim>
double FuelCellShop::Layer::DummyCL< dim >::sigma_e
private

Solid network conductivity.

template<int dim>
double FuelCellShop::Layer::DummyCL< dim >::sigma_m
private

Membrane phase conductivity.


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