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

The base class for agglomerate objects in OpenFCST. More...

#include <agglomerate_base.h>

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

Public Member Functions

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)
 
Initalization
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...
 
virtual SolutionMap compute_current ()=0
 Function used to compute the current density produced by the micro structure. More...
 
virtual std::string get_name ()=0
 Return name of class instance, i.e. More...
 
virtual double aux_volume_fraction ()=0
 MicroScale object may have extra contribution to volume of layer, e.g. More...
 

Protected Types

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
 

Protected Member Functions

void _initialize_film_porosity ()
 
 AgglomerateBase ()
 
virtual void declare_parameters (ParameterHandler &param) const
 
virtual void initialize (ParameterHandler &param)
 
virtual double get_film_thickness ()=0
 
virtual double get_radius ()=0
 
- Protected Member Functions inherited from FuelCellShop::MicroScale::MicroScaleBase
void set_layer (FuelCellShop::Layer::MultiScaleCL< deal_II_dimension > *_layer)
 
 MicroScaleBase ()
 
virtual void set_structure ()=0
 
virtual boost::shared_ptr
< MicroScaleBase
create_replica ()=0
 This member function is used to create an object of MicroScaleBase. More...
 
- 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

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
 

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

Detailed Description

The base class for agglomerate objects in OpenFCST.

This base class implements some of the necessary interfaces specified by MicroScaleBase, as well as providing spherical agglomerate specific data and functionality.

Input parameters

LIST OF INPUT PARAMETERS FOR THE CLASS.

* ...
* subsection MicroScale
* subsection AgglomerateBase
* set Radius of the agglomerate [nm] = 200
* set Constant agglomerate parameter [Thickness | Porosity] = Porosity #Variable used to select if thickness or porosity should be constant
* set Thickness of the agglomerate film [nm] = 15
* set Agglomerate porosity = 0.25
* end
* end
* ...
*

Usage details

This class may be inherited by agglomerate object in order to gain useful member data and methods. Use MicroScaleBase classes instance delivery system for creating child.

Author
Philip Wardlaw
Date
2014

Member Typedef Documentation

Constructor & Destructor Documentation

virtual FuelCellShop::MicroScale::AgglomerateBase::~AgglomerateBase ( )
inlinevirtual
FuelCellShop::MicroScale::AgglomerateBase::AgglomerateBase ( )
inlineprotected

References Constants::E0(), Constants::F(), F, permittivity_0, Constants::R(), and R.

Here is the call graph for this function:

Member Function Documentation

void FuelCellShop::MicroScale::AgglomerateBase::_initialize_film_porosity ( )
protected
virtual std::vector<double> FuelCellShop::MicroScale::AgglomerateBase::compute_derivative_current ( )
inlinevirtual

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

Returns current density derivatives in (A/cm^3)/(unit of the changing quantity)

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

Usage details

Call has_derivatives to check if it is OK to call this function.

Reimplemented from FuelCellShop::MicroScale::MicroScaleBase.

Reimplemented in FuelCellShop::MicroScale::IonomerAgglomerateSun, and FuelCellShop::MicroScale::IonomerAgglomerateAnalytical.

References sol_names.

virtual void FuelCellShop::MicroScale::AgglomerateBase::declare_parameters ( ParameterHandler &  param) const
protectedvirtual
virtual double FuelCellShop::MicroScale::AgglomerateBase::get_film_thickness ( )
protectedpure virtual
virtual double FuelCellShop::MicroScale::AgglomerateBase::get_radius ( )
protectedpure virtual
virtual bool FuelCellShop::MicroScale::AgglomerateBase::has_derivatives ( )
inlinevirtual

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

Usage details

Call this function if unsure whether or not to call compute_derivative_current.

Implements FuelCellShop::MicroScale::MicroScaleBase.

References has_derivatives_.

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

Print out key agglomerate information (name, radius, film thickness, porosity).

Implements FuelCellShop::MicroScale::MicroScaleBase.

Reimplemented in FuelCellShop::MicroScale::HybridAgglomerate.

virtual void FuelCellShop::MicroScale::AgglomerateBase::set_solution ( const std::map< VariableNames, SolutionVariable > &  ,
const VariableNames ,
const int &   
)
virtual

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

First argument provide the map of solution variables. 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, i.e. if the solution map contains arrays of quadrature solutions then the index corresponds to the quadrature point we are solving for

This function should be called immediatly before compute_current or compute_derivative_current.

Implements FuelCellShop::MicroScale::MicroScaleBase.

Member Data Documentation

double FuelCellShop::MicroScale::AgglomerateBase::AV
protected
double FuelCellShop::MicroScale::AgglomerateBase::c_H
protected
double FuelCellShop::MicroScale::AgglomerateBase::c_R
protected
boost::shared_ptr<FuelCellShop::Material::CatalystBase > FuelCellShop::MicroScale::AgglomerateBase::catalyst
protected

Boost shared pointer to catalyst object.

Used to determine kinetic properties of catalyst

double FuelCellShop::MicroScale::AgglomerateBase::D_R_N
protected
boost::shared_ptr<FuelCellShop::Material::PolymerElectrolyteBase> FuelCellShop::MicroScale::AgglomerateBase::electrolyte
protected

Boost shared pointer to electrolyte object.

Used to determine local effective properties.

double FuelCellShop::MicroScale::AgglomerateBase::F
protected

Referenced by AgglomerateBase().

std::string FuelCellShop::MicroScale::AgglomerateBase::fixed_agg_variable
protected
double FuelCellShop::MicroScale::AgglomerateBase::H_R_N
protected

Henry's Constant for primary reactant in nafion, [Pa cm^3/mol].

bool FuelCellShop::MicroScale::AgglomerateBase::has_derivatives_
protected

Referenced by has_derivatives().

double FuelCellShop::MicroScale::AgglomerateBase::interface
protected
boost::shared_ptr<FuelCellShop::Kinetics::BaseKinetics> FuelCellShop::MicroScale::AgglomerateBase::kinetics
protected

Boost shared pointer to kinetics object.

Used to determine reaction rates.

double FuelCellShop::MicroScale::AgglomerateBase::P
protected
double FuelCellShop::MicroScale::AgglomerateBase::permittivity_0
protected

Constants.

Referenced by AgglomerateBase().

double FuelCellShop::MicroScale::AgglomerateBase::phi_M
protected
double FuelCellShop::MicroScale::AgglomerateBase::phi_S
protected
double FuelCellShop::MicroScale::AgglomerateBase::R
protected

Referenced by AgglomerateBase().

VariableNames FuelCellShop::MicroScale::AgglomerateBase::reactant
protected
int FuelCellShop::MicroScale::AgglomerateBase::sol_index
protected
std::vector<VariableNames> FuelCellShop::MicroScale::AgglomerateBase::sol_names
protected
std::map<VariableNames, SolutionVariable> FuelCellShop::MicroScale::AgglomerateBase::solutions
protected

Member data for storing solutions.

VariableNames FuelCellShop::MicroScale::AgglomerateBase::tempReactantName
protected

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