OpenFCST: The open-source Fuel Cell Simulation Toolbox
|
Analytical solution to an ionomer-filled agglomerate problem in 1D. More...
#include <agglomerate_ionomer_sun.h>
Public Member Functions | |
virtual SolutionMap | compute_current () |
Main function of the class used to compute the current over the whole agglomerate at the local operating conditions. More... | |
virtual std::vector< double > | compute_derivative_current () |
Function to compute the derivative of the current density at the local operating conditions;. More... | |
virtual std::string | get_name () |
Return name of class instance, i.e. More... | |
virtual double | aux_volume_fraction () |
Returns extra contribution to volume of layer. More... | |
Public Member Functions inherited from FuelCellShop::MicroScale::AgglomerateBase | |
virtual | ~AgglomerateBase () |
virtual void | print_properties () |
Print out key agglomerate information (name, radius, film thickness, porosity). More... | |
virtual bool | has_derivatives () |
Returns true if the class instance can calculate current density derivatives. More... | |
virtual void | make_thread_safe (ParameterHandler ¶m, unsigned int thread_index) |
virtual void | set_solution (const std::map< VariableNames, SolutionVariable > &, const VariableNames &, const int &) |
Function for setting the solution map(reactant concentration, phi_s, phi_m, etc.). More... | |
Public Member Functions inherited from FuelCellShop::MicroScale::MicroScaleBase | |
virtual | ~MicroScaleBase () |
Destructor. More... | |
Static Public Attributes | |
static const std::string | concrete_name |
Protected Member Functions | |
virtual double | get_film_thickness () |
virtual double | get_radius () |
virtual void | set_structure () |
virtual boost::shared_ptr < FuelCellShop::MicroScale::MicroScaleBase > | create_replica () |
This member function is used to create an object of MicroScaleBase. More... | |
IonomerAgglomerateSun () | |
Constructors. More... | |
IonomerAgglomerateSun (std::string concrete_name) | |
virtual void | declare_parameters (ParameterHandler ¶m) const |
virtual void | initialize (ParameterHandler ¶m) |
Protected Member Functions inherited from FuelCellShop::MicroScale::AgglomerateBase | |
void | _initialize_film_porosity () |
AgglomerateBase () | |
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 , ; size of the agglomerate, ; and, porosity inside the agglomerate, , 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
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
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 IonomerAgglomerateSun const * | PROTOTYPE |
Private Member Functions | |
void | check_kinetics () |
double | compute_Er (const double k_c, const double D) |
Function to compute the effectiveness of the agglomerate core. More... | |
double | compute_dEr (const double k_c, const double dk_c, const double D) |
Function to compute the derivative of the effectiveness of the agglomerate core. More... | |
Private Attributes | |
bool | checked_kinetics |
double | epsilon_V |
Catalyst layer porosity. More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from FuelCellShop::MicroScale::MicroScaleBase | |
static void | declare_MicroScale_parameters (ParameterHandler ¶m) |
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 ¶m, FuelCellShop::Layer::MultiScaleCL< deal_II_dimension > *layer) |
Function used to select the appropriate MicroScale type as specified in the ParameterHandler under line. More... | |
Protected Types inherited from FuelCellShop::MicroScale::AgglomerateBase | |
typedef FuelCellShop::Layer::MultiScaleCL < deal_II_dimension > ::Properties | CLPropNames |
typedef std::map< CLPropNames, double > | CL_Properties |
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 |
Static Protected Member Functions inherited from FuelCellShop::MicroScale::MicroScaleBase | |
static _mapFactory * | get_mapFactory () |
This member function is used to create an object of type MicroScaleBase. More... | |
Protected Attributes inherited from FuelCellShop::MicroScale::AgglomerateBase | |
boost::shared_ptr < FuelCellShop::Material::CatalystBase > | catalyst |
Boost shared pointer to catalyst object. More... | |
boost::shared_ptr < FuelCellShop::Material::PolymerElectrolyteBase > | electrolyte |
Boost shared pointer to electrolyte object. More... | |
boost::shared_ptr < FuelCellShop::Kinetics::BaseKinetics > | kinetics |
Boost shared pointer to kinetics object. More... | |
std::map< VariableNames, SolutionVariable > | solutions |
Member data for storing solutions. More... | |
std::vector< VariableNames > | sol_names |
VariableNames | reactant |
VariableNames | tempReactantName |
int | sol_index |
double | permittivity_0 |
Constants. More... | |
double | F |
double | R |
double | P |
double | AV |
double | c_R |
bool | has_derivatives_ |
double | c_H |
double | phi_M |
double | phi_S |
double | interface |
double | D_R_N |
double | H_R_N |
Henry's Constant for primary reactant in nafion, [Pa cm^3/mol]. More... | |
std::string | fixed_agg_variable |
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 |
Analytical solution to an ionomer-filled agglomerate problem in 1D.
This class implements the analytical ionomer-filled agglomerate first proposed by:
and later implemented in openFCST in order to provide the results obtained in:
The data files for this article can be found in fcts/data/articles/Secanell_EA07_MultiVariable_Optimization_PEMFC_Cathodes_Agglomerate_Model/. You can find three folders there one for analyzing a single case, one for an IV curve and one for running an optimization case as discussed in the article.
The volumetric current density is
where
and is the reaction rate constant, , is the exchange current density, [ ], is the gas constant, 8.315 ], is the temperature, [K], is the coefficient in Tafel equation, [-], is the Faraday constant, 96493 [ ], is the transfer coefficient, [-], is the reference oxygen concentration, [ ], the term is used to transform the active area in the catalyst layer, to an active area inside the agglomerate and the effectiveness factor is given by
where is the effectiveness factor, [-] and the Thiele's modulus for a spherical agglomerate is given by
where is the effective oxygen diffusion coefficient inside the agglomerate, [ ], is the radius of the spherical agglomerate and is the effective oxygen diffusion coefficient inside the agglomerate.
In these equations, there are several parameters that need to be obtained: , , , , , and . Parameters , , and are input parameters to the model and are obtained from transport and electrochemical data. In the code, they are specified by the type of kinetics and catalyst used. Regarding the type of kinetic model, ONLY TAFEL can be used in this case.
Parameters , and depend on the composition of the catalyst layer.
The parameter is defined as the ratio between the effective surface area usable to dissolve oxygen into the agglomerate and the catalyst layer volume. This value can be related to the catalyst layer structure by
where is the thin electrolyte film surrounding the agglomerate, [ ], is the number of agglomerates per unit volume, the term is the surface of a single agglomerate and finally, is the catalyst layer porosity.
For more information see:
|
protected |
Constructors.
|
protected |
|
inlinevirtual |
Returns extra contribution to volume of layer.
Implements FuelCellShop::MicroScale::MicroScaleBase.
|
private |
|
virtual |
Main function of the class used to compute the current over the whole agglomerate at the local operating conditions.
Implements FuelCellShop::MicroScale::MicroScaleBase.
|
private |
Function to compute the derivative of the effectiveness of the agglomerate core.
|
virtual |
Function to compute the derivative of the current density at the local operating conditions;.
Reimplemented from FuelCellShop::MicroScale::AgglomerateBase.
|
private |
Function to compute the effectiveness of the agglomerate core.
|
inlineprotectedvirtual |
This member function is used to create an object of MicroScaleBase.
Implements FuelCellShop::MicroScale::MicroScaleBase.
|
inlineprotectedvirtual |
Reimplemented from FuelCellShop::MicroScale::AgglomerateBase.
References concrete_name, and FuelCellShop::MicroScale::AgglomerateBase::declare_parameters().
|
inlineprotectedvirtual |
|
inlinevirtual |
Return name of class instance, i.e.
concrete name.
Implements FuelCellShop::MicroScale::MicroScaleBase.
References concrete_name.
|
inlineprotectedvirtual |
|
inlineprotectedvirtual |
Reimplemented from FuelCellShop::MicroScale::AgglomerateBase.
References concrete_name, and FuelCellShop::MicroScale::AgglomerateBase::initialize().
|
protectedvirtual |
Implements FuelCellShop::MicroScale::MicroScaleBase.
|
private |
|
static |
Referenced by declare_parameters(), get_name(), and initialize().
|
private |
Catalyst layer porosity.
|
staticprotected |