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

This class implements methods for calculating geometric parameters of a spherical agglomerate surrounded by a thin ionomer film. More...

#include <agglomerate_base.h>

Inheritance diagram for FuelCellShop::MicroScale::SphericalAgglomerateGeometry:
Inheritance graph
[legend]

Protected Types

typedef
FuelCellShop::Layer::MultiScaleCL
< deal_II_dimension >
::Properties 
CLPropNames
 
typedef std::map< CLPropNames,
double > 
CL_Properties
 

Protected Member Functions

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

Protected Attributes

double pi
 
double r_agg
 
double delta_agg
 
double epsilon_agg
 
double n_agg
 

Detailed Description

This class implements methods for calculating geometric parameters of a spherical agglomerate surrounded by a thin ionomer film.

Note
This class is used by Agglomerate base (which is used by most agglomerates) and ICCP. Some virtual methods are reimplemented in hybrid agglomerate.

Usage details

Child class should set inherited members r_agg, delta_agg and epsilon_agg. Then base class can use member functions to calculate agglomerate geometry.

Author
Philip Wardlaw, Peter Dobson, Marc Secanell
Date
2015

Member Typedef Documentation

Constructor & Destructor Documentation

FuelCellShop::MicroScale::SphericalAgglomerateGeometry::SphericalAgglomerateGeometry ( )
inlineprotected

References Constants::Pi(), and pi.

Here is the call graph for this function:

Member Function Documentation

virtual double FuelCellShop::MicroScale::SphericalAgglomerateGeometry::compute_depsilonN_depsilon_agg ( FuelCellShop::Layer::MultiScaleCL< deal_II_dimension > *  layer) const
protectedvirtual

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.

Physically, the thickness of the thin film should not have an effect on the volume fractions defined in ConventionalCL

virtual double FuelCellShop::MicroScale::SphericalAgglomerateGeometry::compute_depsilonN_dthickness ( const double  thickness_agg) const
protectedvirtual

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.

Physically, the thickness of the thin film should not have an effect on the volume fractions defined in ConventionalCL

virtual double FuelCellShop::MicroScale::SphericalAgglomerateGeometry::compute_dn_depsilon_agg ( FuelCellShop::Layer::MultiScaleCL< deal_II_dimension > *  layer) const
protectedvirtual

Compute the derivative of n with respect to the porosity of the agglomerate.

For a spherical agglomerate:

\[ \frac{\partial n_{agg}}{\partial \epsilon_agg} = \frac{\epsilon_S}{\frac{4}{3} \pi r_{agg}^3 (1 - \epsilon_{agg})^2} \]

virtual double FuelCellShop::MicroScale::SphericalAgglomerateGeometry::compute_epsilon_agg ( FuelCellShop::Layer::MultiScaleCL< deal_II_dimension > *  layer)
protectedvirtual

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.

A Newton loop is used in order to obtain the correct value for the agglomerate porosity, $ \epsilon_{agg} $.

Note
compute_thickness_agg and compute_epsilon_agg are mutually exclusive and the selection between using one method or the other depends on the inpu parameter:
* set Constant agglomerate parameter [Thickness | Porosity] = Thickness
* set Agglomerate porosity = 0.25 #specify if Porosity is selected in variable above
* set Thickness of the agglomerate film [nm] = 80 #specify if Thickness is selected in property above
*
virtual double FuelCellShop::MicroScale::SphericalAgglomerateGeometry::compute_epsilon_N ( const double  delta_agg,
const double  thickness_agg 
) const
protectedvirtual

Function used to compute the amount of electrolyte in the catalyst layer.

This is given by the agglomerate sturcture and the amount of solid phase. In particular,

\[ \epsilon_N^{cat} = n \frac{4.0}{3.0}3.1416({r_agg*1e-7})^{3.0}*(\epsilon_agg-1) + (r_{agg}1e-4 + \delta_{agg}1e-4)^{3.0}; \]

where n is computed by another function. For details on this equation and other see, M.Secanell et al., "",...

virtual double FuelCellShop::MicroScale::SphericalAgglomerateGeometry::compute_n ( FuelCellShop::Layer::MultiScaleCL< deal_II_dimension > *  layer) const
protectedvirtual

Member function to compute the number of agglomerates.

The number of agglomerates is computed differently depending on the type of agglomerate and depends on the agglomerate radius, amount of ionomer per agglomerate and the solid phase volume fraction in the CL.

For a spherical agglomerate

\[ n_{agg} = \frac{\epsilon_S}{\frac{4}{3} \pi r_{agg}^3 (1 - \epsilon_{agg})} \]

virtual double FuelCellShop::MicroScale::SphericalAgglomerateGeometry::compute_thickness_agg ( FuelCellShop::Layer::MultiScaleCL< deal_II_dimension > *  layer)
protectedvirtual

Member function to compute the thickness of the agglomerate thin film based on the radius and structure.

For a given 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.

A Newton loop is used in order to obtain the correct value for the thickness of the agglomerate film, $ \delta_{agg} $

Note
compute_thickness_agg and compute_epsilon_agg are mutually exclusive and the selection between using one method or the other depends on the inpu parameter:
* set Constant agglomerate parameter [Thickness | Porosity] = Thickness
* set Agglomerate porosity = 0.25 #specify if Porosity is selected in variable above
* set Thickness of the agglomerate film [nm] = 80 #specify if Thickness is selected in property above
*

Member Data Documentation

double FuelCellShop::MicroScale::SphericalAgglomerateGeometry::delta_agg
protected
double FuelCellShop::MicroScale::SphericalAgglomerateGeometry::epsilon_agg
protected
double FuelCellShop::MicroScale::SphericalAgglomerateGeometry::n_agg
protected
double FuelCellShop::MicroScale::SphericalAgglomerateGeometry::pi
protected
double FuelCellShop::MicroScale::SphericalAgglomerateGeometry::r_agg
protected

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