OpenFCST: The open-source Fuel Cell Simulation Toolbox
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Static Public Attributes | Protected Types | Protected Member Functions | Static Protected Attributes | Private Member Functions | Private Attributes | List of all members
FuelCellShop::MicroScale::ICCP Class Reference

Class that solves solid carbon particle, with Pt surface loading, surrounded by ionomer thin film. More...

#include <ICCP.h>

Inheritance diagram for FuelCellShop::MicroScale::ICCP:
Inheritance graph
[legend]
Collaboration diagram for FuelCellShop::MicroScale::ICCP:
Collaboration graph
[legend]

Public Member Functions

virtual void set_solution (const std::map< VariableNames, SolutionVariable > &sols, const VariableNames &react, const int &index)
 Function for setting the solution map(reactant concentration, phi_s, phi_m, etc.). More...
 
virtual SolutionMap compute_current ()
 Function used to compute the current density produced by the micro structure. More...
 
virtual bool has_derivatives ()
 Returns true if the class instance can calculate current density derivatives. More...
 
virtual std::string get_name ()
 Return name of class instance, i.e. More...
 
virtual double aux_volume_fraction ()
 MicroScale object may have extra contribution to volume of layer, e.g. More...
 
virtual void print_properties ()
 Print out key micro-structural dimensions, defined by child. More...
 
virtual void make_thread_safe (ParameterHandler &param, unsigned int thread_index)
 
- Public Member Functions inherited from FuelCellShop::MicroScale::MicroScaleBase
virtual ~MicroScaleBase ()
 Destructor. More...
 
virtual std::vector< double > compute_derivative_current ()
 Function to compute the derivative of the current density at the local operating conditions. More...
 

Static Public Attributes

static const std::string concrete_name
 

Protected Types

typedef
FuelCellShop::Layer::MultiScaleCL
< deal_II_dimension > 
CLPropNames
 Convenient typdef for getting properties. More...
 
- Protected Types inherited from FuelCellShop::MicroScale::MicroScaleBase
typedef std::map< std::string,
MicroScaleBase * > 
_mapFactory
 This object is used to store all objects of type MicroScaleBase. More...
 
- Protected Types inherited from FuelCellShop::MicroScale::SphericalAgglomerateGeometry
typedef
FuelCellShop::Layer::MultiScaleCL
< deal_II_dimension >
::Properties 
CLPropNames
 
typedef std::map< CLPropNames,
double > 
CL_Properties
 

Protected Member Functions

void _initialize_film_porosity ()
 
 ICCP ()
 Default Constructor. More...
 
 ICCP (std::string name)
 Factory map registration constructor. More...
 
virtual void set_structure ()
 
virtual void declare_parameters (ParameterHandler &param) const
 
virtual void initialize (ParameterHandler &param)
 
virtual boost::shared_ptr
< MicroScaleBase
create_replica ()
 This member function is used to create an object of type MicroScaleBase. More...
 
- Protected Member Functions inherited from FuelCellShop::MicroScale::MicroScaleBase
void set_layer (FuelCellShop::Layer::MultiScaleCL< deal_II_dimension > *_layer)
 
 MicroScaleBase ()
 
- Protected Member Functions inherited from FuelCellShop::MicroScale::SphericalAgglomerateGeometry
 SphericalAgglomerateGeometry ()
 
virtual double compute_thickness_agg (FuelCellShop::Layer::MultiScaleCL< deal_II_dimension > *layer)
 Member function to compute the thickness of the agglomerate thin film based on the radius and structure. More...
 
virtual double compute_epsilon_agg (FuelCellShop::Layer::MultiScaleCL< deal_II_dimension > *layer)
 Compute the volume fraction of nafion inside the agglomerate given the catalyst layer ionomer volume fraction , $ \epsilon_N $; size of the agglomerate, $ r_{agg} $; and, porosity inside the agglomerate, $ \epsilon_{agg} $, the necessary ionomer thin film thickness is computed such that the correct volume fractions are obtained. More...
 
virtual double compute_epsilon_N (const double delta_agg, const double thickness_agg) const
 Function used to compute the amount of electrolyte in the catalyst layer. More...
 
virtual double compute_depsilonN_dthickness (const double thickness_agg) const
 Function to compute

\[ \frac{\partial \epsilon_N^{cat}}{\partial thickness_{agg}} \]

This function should only be used to calculate the thin film thickness using Newton's method. More...

 
virtual double compute_depsilonN_depsilon_agg (FuelCellShop::Layer::MultiScaleCL< deal_II_dimension > *layer) const
 Function to compute

\[ \frac{\partial \epsilon_N^{cat}}{\partial \epsilon_{agg}} \]

This function should only be used to calculate the thin film thickness using Newton's method. More...

 
virtual double compute_n (FuelCellShop::Layer::MultiScaleCL< deal_II_dimension > *layer) const
 Member function to compute the number of agglomerates. More...
 
virtual double compute_dn_depsilon_agg (FuelCellShop::Layer::MultiScaleCL< deal_II_dimension > *layer) const
 Compute the derivative of n with respect to the porosity of the agglomerate. More...
 

Static Protected Attributes

static ICCP const * PROTOTYPE
 

Private Member Functions

double residual (const double &c_inner, const double &c_outer)
 Compute the residual functions describing oxygen concentration at the particle surface. More...
 

Private Attributes

std::vector< SolutionVariablereactants
 
SolutionVariable proton_pot
 
SolutionVariable electron_pot
 
double ActiveArea
 
bool non_eq_BC
 
double non_eq_BC_coeff
 
double P
 
double H_R_N
 
double D_R_N
 
double molarNumerator
 
VariableNames reactant
 
boost::shared_ptr
< FuelCellShop::Kinetics::BaseKinetics
kinetics
 
boost::shared_ptr
< FuelCellShop::Material::PolymerElectrolyteBase
electrolyte
 
boost::shared_ptr
< FuelCellShop::Material::CatalystBase
catalyst
 
const double F
 
const double pi
 

Additional Inherited Members

- Static Public Member Functions inherited from FuelCellShop::MicroScale::MicroScaleBase
static void declare_MicroScale_parameters (ParameterHandler &param)
 Function used to declare all the data necessary in the parameter files for all MicroScale children. More...
 
static boost::shared_ptr
< FuelCellShop::MicroScale::MicroScaleBase
create_MicroStructure (ParameterHandler &param, FuelCellShop::Layer::MultiScaleCL< deal_II_dimension > *layer)
 Function used to select the appropriate MicroScale type as specified in the ParameterHandler under line. More...
 
- Static Protected Member Functions inherited from FuelCellShop::MicroScale::MicroScaleBase
static _mapFactoryget_mapFactory ()
 This member function is used to create an object of type MicroScaleBase. More...
 
- Protected Attributes inherited from FuelCellShop::MicroScale::MicroScaleBase
FuelCellShop::Layer::MultiScaleCL
< deal_II_dimension > * 
layer
 
- Protected Attributes inherited from FuelCellShop::MicroScale::SphericalAgglomerateGeometry
double pi
 
double r_agg
 
double delta_agg
 
double epsilon_agg
 
double n_agg
 

Detailed Description

Class that solves solid carbon particle, with Pt surface loading, surrounded by ionomer thin film.

This class is a very basic representation of the CL micro structure, intended to analyize the CL/MEA's sensitivity to micro scale models for various operating conditions and material params.

Input parameters

LIST OF INPUT PARAMETERS FOR THE CLASS.

* ...
* subsection MicroScale
* subsection ICCP
* set Radius [nm] = 100.0 #Inner core radius
* set Non Equilibrium BC Rate constant = 0.13 #Non equilibrium Reaction rate coefficient
* set Use non equilibrium BC = false #Use non-equilibrium BC as described by Suzukhi et al.
* end
* end
*
Warning
Treatment of pressure using get_properties from layer is incorrect for non-isobaric cases!!!!!!
Note
Film thickness is calculated automatically from layer properties.

Member Typedef Documentation

Convenient typdef for getting properties.

Constructor & Destructor Documentation

FuelCellShop::MicroScale::ICCP::ICCP ( )
inlineprotected

Default Constructor.

References non_eq_BC.

Referenced by create_replica().

Here is the caller graph for this function:

FuelCellShop::MicroScale::ICCP::ICCP ( std::string  name)
protected

Factory map registration constructor.

Member Function Documentation

void FuelCellShop::MicroScale::ICCP::_initialize_film_porosity ( )
protected
virtual double FuelCellShop::MicroScale::ICCP::aux_volume_fraction ( )
inlinevirtual

MicroScale object may have extra contribution to volume of layer, e.g.

water. In this case it is zero.

Implements FuelCellShop::MicroScale::MicroScaleBase.

virtual SolutionMap FuelCellShop::MicroScale::ICCP::compute_current ( )
virtual

Function used to compute the current density produced by the micro structure.

Effectiveness is returned by reference, and defined by child class.

Solves for solution variables set by the last call to set_solution.

Implements FuelCellShop::MicroScale::MicroScaleBase.

virtual boost::shared_ptr<MicroScaleBase> FuelCellShop::MicroScale::ICCP::create_replica ( )
inlineprotectedvirtual

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

Implements FuelCellShop::MicroScale::MicroScaleBase.

References ICCP().

Here is the call graph for this function:

virtual void FuelCellShop::MicroScale::ICCP::declare_parameters ( ParameterHandler &  param) const
protectedvirtual
virtual std::string FuelCellShop::MicroScale::ICCP::get_name ( )
inlinevirtual

Return name of class instance, i.e.

concrete name.

Implements FuelCellShop::MicroScale::MicroScaleBase.

References concrete_name.

virtual bool FuelCellShop::MicroScale::ICCP::has_derivatives ( )
inlinevirtual

Returns true if the class instance can calculate current density derivatives.

In this case it will return false.

Implements FuelCellShop::MicroScale::MicroScaleBase.

virtual void FuelCellShop::MicroScale::ICCP::initialize ( ParameterHandler &  param)
protectedvirtual
virtual void FuelCellShop::MicroScale::ICCP::make_thread_safe ( ParameterHandler &  param,
unsigned int  thread_index 
)
virtual
virtual void FuelCellShop::MicroScale::ICCP::print_properties ( )
virtual

Print out key micro-structural dimensions, defined by child.

Implements FuelCellShop::MicroScale::MicroScaleBase.

double FuelCellShop::MicroScale::ICCP::residual ( const double &  c_inner,
const double &  c_outer 
)
private

Compute the residual functions describing oxygen concentration at the particle surface.

Equilibrium BC: 0 = c_{O_2, \; f|c} - c_{O_2, \; g|f} - {{agg} }{r_{agg}(r_{agg} +{agg}) } { j(c_{O_2, \; f|c}) A_s}{4 n F D_{O_2,N}} Nonequilibrium BC (substitute the following term) : c_{O_2, \; g|f} = c_{O_2, \; g|f}^{eq} - {j(c_{O_2, \; f|c}) A_s}{4 n F (r_{agg} +{agg})^2 k_o}

See equations 2.111 and 2.120 of Philip Wardlaw's Thesis

virtual void FuelCellShop::MicroScale::ICCP::set_solution ( const std::map< VariableNames, SolutionVariable > &  sols,
const VariableNames react,
const int &  index 
)
virtual

Function for setting the solution map(reactant concentration, phi_s, phi_m, etc.).

First argument provide the map of SolutionVariable. The second argument provide the name of the primary reactant. The final argument is the index of the solution map that the micro scale object should solve for.

This function should be called immediatly before compute_current or compute_derivative_current.

Implements FuelCellShop::MicroScale::MicroScaleBase.

virtual void FuelCellShop::MicroScale::ICCP::set_structure ( )
protectedvirtual

Member Data Documentation

double FuelCellShop::MicroScale::ICCP::ActiveArea
private
boost::shared_ptr<FuelCellShop::Material::CatalystBase> FuelCellShop::MicroScale::ICCP::catalyst
private
const std::string FuelCellShop::MicroScale::ICCP::concrete_name
static

Referenced by get_name().

double FuelCellShop::MicroScale::ICCP::D_R_N
private
boost::shared_ptr<FuelCellShop::Material::PolymerElectrolyteBase> FuelCellShop::MicroScale::ICCP::electrolyte
private
SolutionVariable FuelCellShop::MicroScale::ICCP::electron_pot
private
const double FuelCellShop::MicroScale::ICCP::F
private
double FuelCellShop::MicroScale::ICCP::H_R_N
private
boost::shared_ptr<FuelCellShop::Kinetics::BaseKinetics> FuelCellShop::MicroScale::ICCP::kinetics
private
double FuelCellShop::MicroScale::ICCP::molarNumerator
private
bool FuelCellShop::MicroScale::ICCP::non_eq_BC
private

Referenced by ICCP().

double FuelCellShop::MicroScale::ICCP::non_eq_BC_coeff
private
double FuelCellShop::MicroScale::ICCP::P
private
const double FuelCellShop::MicroScale::ICCP::pi
private
SolutionVariable FuelCellShop::MicroScale::ICCP::proton_pot
private
ICCP const* FuelCellShop::MicroScale::ICCP::PROTOTYPE
staticprotected
VariableNames FuelCellShop::MicroScale::ICCP::reactant
private
std::vector<SolutionVariable> FuelCellShop::MicroScale::ICCP::reactants
private

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