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

Base class for numerical agglomerates. More...

#include <numerical_agglomerate_base.h>

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

Protected Member Functions

void setAV (double newAV)
 
 NumericalAgglomerateBase ()
 Constructor. More...
 
 ~NumericalAgglomerateBase ()
 Destructor. More...
 
void update_initial_solution ()
 
void save_initial_solution ()
 
virtual void declare_parameters (ParameterHandler &param) const
 
virtual void initialize (ParameterHandler &param)
 
double getAV (double location)
 
bool use_initial_data (double z[], const double &x)
 
virtual void make_thread_safe (ParameterHandler &param, unsigned int thread_index)
 
- Protected Member Functions inherited from FuelCellShop::MicroScale::AgglomerateBase
void _initialize_film_porosity ()
 
 AgglomerateBase ()
 
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

std::vector< std::vector
< double > > 
final_results
 
std::vector< std::vector
< double > > 
initial_solution
 
std::vector< std::string > column_names
 
double R_tol
 
- 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
 

Private Member Functions

void setUpLoadings ()
 
FcstUtilities::DatabaseOC create_OC_snapshot ()
 
bool guess_no_longer_valid (const FcstUtilities::DatabaseOC &OC)
 
void interpolate_initial_data (double z[], const double &x, const double &left_pos, const double &right_pos, const std::vector< double > &left_data, const std::vector< double > &right_data)
 

Private Attributes

FcstUtilities::FCSTdatabase db
 
std::string db_address
 
FcstUtilities::DatabaseOC database_OC
 
bool push_next
 
double tolerance
 
double maxRadialDimension
 
std::vector< double > loadingWeigths
 
std::vector< double > actualLoadings
 
std::vector< double > loadingRadii
 
unsigned int thread_id
 

Additional Inherited Members

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

Base class for numerical agglomerates.

Base class for numerical agglomerates, implements AgglomerateBase. Provide useful methods and data for numerical agglomerates, such as initial solution storage and retrieval via FCSTDatabase and variable active area profiles.

Input parameters

LIST OF INPUT PARAMETERS FOR THE CLASS.

* ...
* subsection MicroScaleBase
* set Initial condition tolerance factor = 0.05 #Factor determining how often initial solutions are store/updated
* set Database name = main_db #Database existing in FCST/Databases. Setting an unused name will create a new database.
* set Agglomerate Loading Profile = 1 #A list of doubles of the form "1,2.2,3...", used to weight the Pt. loading profile
* end
* end
* ...
*
Author
Philip Wardlaw
Date
2014

Constructor & Destructor Documentation

FuelCellShop::MicroScale::NumericalAgglomerateBase::NumericalAgglomerateBase ( )
protected

Constructor.

FuelCellShop::MicroScale::NumericalAgglomerateBase::~NumericalAgglomerateBase ( )
inlineprotected

Destructor.

Member Function Documentation

FcstUtilities::DatabaseOC FuelCellShop::MicroScale::NumericalAgglomerateBase::create_OC_snapshot ( )
private
virtual void FuelCellShop::MicroScale::NumericalAgglomerateBase::declare_parameters ( ParameterHandler &  param) const
protectedvirtual
double FuelCellShop::MicroScale::NumericalAgglomerateBase::getAV ( double  location)
protected
bool FuelCellShop::MicroScale::NumericalAgglomerateBase::guess_no_longer_valid ( const FcstUtilities::DatabaseOC OC)
private
virtual void FuelCellShop::MicroScale::NumericalAgglomerateBase::initialize ( ParameterHandler &  param)
protectedvirtual
void FuelCellShop::MicroScale::NumericalAgglomerateBase::interpolate_initial_data ( double  z[],
const double &  x,
const double &  left_pos,
const double &  right_pos,
const std::vector< double > &  left_data,
const std::vector< double > &  right_data 
)
private
virtual void FuelCellShop::MicroScale::NumericalAgglomerateBase::make_thread_safe ( ParameterHandler &  param,
unsigned int  thread_index 
)
protectedvirtual
void FuelCellShop::MicroScale::NumericalAgglomerateBase::save_initial_solution ( )
protected
void FuelCellShop::MicroScale::NumericalAgglomerateBase::setAV ( double  newAV)
inlineprotected
void FuelCellShop::MicroScale::NumericalAgglomerateBase::setUpLoadings ( )
private
void FuelCellShop::MicroScale::NumericalAgglomerateBase::update_initial_solution ( )
protected
bool FuelCellShop::MicroScale::NumericalAgglomerateBase::use_initial_data ( double  z[],
const double &  x 
)
protected

Member Data Documentation

std::vector<double> FuelCellShop::MicroScale::NumericalAgglomerateBase::actualLoadings
private
std::vector<std::string> FuelCellShop::MicroScale::NumericalAgglomerateBase::column_names
protected
FcstUtilities::DatabaseOC FuelCellShop::MicroScale::NumericalAgglomerateBase::database_OC
private
FcstUtilities::FCSTdatabase FuelCellShop::MicroScale::NumericalAgglomerateBase::db
private
std::string FuelCellShop::MicroScale::NumericalAgglomerateBase::db_address
private
std::vector<std::vector<double> > FuelCellShop::MicroScale::NumericalAgglomerateBase::final_results
protected
std::vector<std::vector<double> > FuelCellShop::MicroScale::NumericalAgglomerateBase::initial_solution
protected
std::vector<double> FuelCellShop::MicroScale::NumericalAgglomerateBase::loadingRadii
private
std::vector<double> FuelCellShop::MicroScale::NumericalAgglomerateBase::loadingWeigths
private
double FuelCellShop::MicroScale::NumericalAgglomerateBase::maxRadialDimension
private
bool FuelCellShop::MicroScale::NumericalAgglomerateBase::push_next
private
double FuelCellShop::MicroScale::NumericalAgglomerateBase::R_tol
protected
unsigned int FuelCellShop::MicroScale::NumericalAgglomerateBase::thread_id
private
double FuelCellShop::MicroScale::NumericalAgglomerateBase::tolerance
private

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