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 Member Functions | Protected Attributes | Static Protected Attributes | Private Types | Private Member Functions | Private Attributes | Friends | List of all members
FuelCellShop::MicroScale::WaterConicalPoreAgglomerate Class Reference

Class implementing water pore agglomerate model developed by Ehsan Sadeghi. More...

#include <agglomerate_water_sadeghi.h>

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

Public Member Functions

virtual SolutionMap compute_current ()
 Set the composition and structure of the agglomerate. 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...
 
- 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 std::vector< double > compute_derivative_current ()
 Function to compute the derivative of the current density at the local operating conditions. More...
 
virtual bool has_derivatives ()
 Returns true if the class instance can calculate current density derivatives. More...
 
virtual void make_thread_safe (ParameterHandler &param, 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 ()
 
 WaterConicalPoreAgglomerate ()
 Constructors. More...
 
 WaterConicalPoreAgglomerate (std::string concrete_name)
 
virtual boost::shared_ptr
< FuelCellShop::MicroScale::MicroScaleBase
create_replica ()
 This member function is used to create an object of MicroScaleBase. More...
 
virtual void declare_parameters (ParameterHandler &param) const
 
virtual void initialize (ParameterHandler &param)
 
- 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 , $ \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 T
 
- 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< VariableNamessol_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
 

Static Protected Attributes

static
WaterConicalPoreAgglomerate
const * 
PROTOTYPE
 

Private Types

enum  SolutionIteration { Old, New, Intermediate }
 

Private Member Functions

bool initialize_problem (std::string &error_msg)
 Function for initializing data before problem is solved. More...
 
bool interpret_solution (std::string &error_msg)
 Function for interpreting solution provided by another class. More...
 
bool solveProtonPotentials (std::string &error_msg)
 Functions which solve for Proton Potential and oxygen concentration Profiles across the pore. More...
 
bool solveO2 (std::string &error_msg)
 
double calculate_j (double &E_r)
 Functions which calculates current density, proton potential and o2 concentration must be solved. More...
 

Private Attributes

std::map< SolutionIteration,
std::vector< std::vector
< double > > > 
PorePotential
 
std::map< SolutionIteration,
std::vector< std::vector
< double > > > 
cO2
 
std::vector< double > cHwall
 
std::vector< double > etaWall
 
std::vector< double > jWall
 
double beta
 
double eta
 
double alfa
 
double lambda
 
double teta
 
double innerRadius
 
double outerRadius
 
double NP
 
double S_i
 
double S_o
 
double eva
 
double u_0
 
double omega
 
double del_u
 
double phi_pzc
 
double u_s
 
int N
 
int M
 
double Helm
 
double waterRadius
 
double rel_permittivity
 

Friends

class ::WaterPoreAgglomerateTest
 Function to compute the derivative of the current density at the local operating conditions;. More...
 

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...
 
- 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 _mapFactoryget_mapFactory ()
 This member function is used to create an object of type MicroScaleBase. More...
 

Detailed Description

Class implementing water pore agglomerate model developed by Ehsan Sadeghi.

WORK IN PROGRESS

Member Enumeration Documentation

Enumerator
Old 
New 
Intermediate 

Constructor & Destructor Documentation

FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::WaterConicalPoreAgglomerate ( )
protected

Constructors.

FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::WaterConicalPoreAgglomerate ( std::string  concrete_name)
protected

Member Function Documentation

virtual double FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::aux_volume_fraction ( )
inlinevirtual

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

water.

Returns a fraction.

Implements FuelCellShop::MicroScale::MicroScaleBase.

double FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::calculate_j ( double &  E_r)
private

Functions which calculates current density, proton potential and o2 concentration must be solved.

Return current density in A/cm^3, passes agglomerate effectiveness back by reference

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

Set the composition and structure of the agglomerate.

Main function of the class used to compute the current over the whole agglomerate at the local operating conditions

Implements FuelCellShop::MicroScale::MicroScaleBase.

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

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

Warning
This class MUST be redeclared in every child.

Implements FuelCellShop::MicroScale::MicroScaleBase.

virtual void FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::declare_parameters ( ParameterHandler &  param) const
inlineprotectedvirtual

Reimplemented from FuelCellShop::MicroScale::AgglomerateBase.

References concrete_name, and FuelCellShop::MicroScale::AgglomerateBase::declare_parameters().

Here is the call graph for this function:

virtual double FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::get_film_thickness ( )
inlineprotectedvirtual
virtual std::string FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::get_name ( )
inlinevirtual

Return name of class instance, i.e.

concrete name.

Implements FuelCellShop::MicroScale::MicroScaleBase.

References concrete_name.

virtual double FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::get_radius ( )
inlineprotectedvirtual
virtual void FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::initialize ( ParameterHandler &  param)
inlineprotectedvirtual

Reimplemented from FuelCellShop::MicroScale::AgglomerateBase.

References concrete_name, and FuelCellShop::MicroScale::AgglomerateBase::initialize().

Here is the call graph for this function:

bool FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::initialize_problem ( std::string &  error_msg)
private

Function for initializing data before problem is solved.

Return false if problem cannot be initialized, passes error msg back by reference

bool FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::interpret_solution ( std::string &  error_msg)
private

Function for interpreting solution provided by another class.

Return false if solution is invalid, passes error msg back by reference

virtual void FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::set_structure ( )
protectedvirtual
bool FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::solveO2 ( std::string &  error_msg)
private
bool FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::solveProtonPotentials ( std::string &  error_msg)
private

Functions which solve for Proton Potential and oxygen concentration Profiles across the pore.

Call these function in the following order: solveProtonPotentials, solveO2.

Return false if they fail to converge, passes error msg back by reference

Friends And Related Function Documentation

friend class ::WaterPoreAgglomerateTest
friend

Function to compute the derivative of the current density at the local operating conditions;.

Friend class for testing purposes.

Member Data Documentation

double FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::alfa
private
double FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::beta
private
std::vector<double> FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::cHwall
private
std::map<SolutionIteration,std::vector<std::vector<double> > > FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::cO2
private
const std::string FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::concrete_name
static
double FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::del_u
private
double FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::eta
private
std::vector<double> FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::etaWall
private
double FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::eva
private
double FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::Helm
private
double FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::innerRadius
private
std::vector<double> FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::jWall
private
double FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::lambda
private
int FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::M
private
int FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::N
private
double FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::NP
private
double FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::omega
private
double FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::outerRadius
private
double FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::phi_pzc
private
std::map<SolutionIteration, std::vector<std::vector<double> > > FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::PorePotential
private
WaterConicalPoreAgglomerate const* FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::PROTOTYPE
staticprotected
double FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::rel_permittivity
private
double FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::S_i
private
double FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::S_o
private
double FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::T
protected
double FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::teta
private
double FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::u_0
private
double FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::u_s
private
double FuelCellShop::MicroScale::WaterConicalPoreAgglomerate::waterRadius
private

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