OpenFCST: The open-source Fuel Cell Simulation Toolbox
|
This class characterizes a catalyst layer and uses this information to compute effective transport properties and interfacial areas for phase change or electrochemical reactions. More...
#include <homogeneous_CL.h>
Public Member Functions | |
Constructors, destructor, and initalization | |
HomogeneousCL () | |
Prototye Constructor. | |
~HomogeneousCL () | |
Destructor. | |
Accessors and info | |
virtual void | current_density (std::vector< double > &) |
This member function will use a FuelCellShop::BaseKinetics class in order to compute the current density production in the CL. | |
virtual void | current_density (std::vector< double > ¤t, std::vector< double > &effectiveness) |
This member function computes the current density production in the CL. | |
virtual void | derivative_current_density (std::map< VariableNames, std::vector< double > > &) |
This member function will use a FuelCellShop::BaseKinetics class in order to compute the derivative of the current density with respect to the variables setup using set_derivative_flags method. | |
Public Member Functions inherited from FuelCellShop::Layer::ConventionalCL< dim > | |
ConventionalCL () | |
~ConventionalCL () | |
Destructor. | |
virtual void | print_layer_properties () const |
Print out the volume fraction in the catalyst layer. | |
virtual void | get_volume_fraction (double &epsilon_S_out, double &epsilon_V_out, double &epsilon_N_out) const |
Get the volume fractions in the catalyst layer. | |
virtual double | get_V_Pt () const |
Return the platinum loading per cm3 catalyst layer. | |
double | get_active_area_Pt () const |
Get the active area of platinum per unit volume of CL. | |
virtual void | effective_gas_diffusivity (const double &, double &) const |
Compute the effective diffusivty in the CL. | |
virtual void | effective_gas_diffusivity (Table< 2, Tensor< 2, dim > > &) const |
Compute the effective diffusivty in the CL. | |
virtual void | effective_electron_conductivity (double &) const |
Compute the effective electron conductivity in the CL. | |
virtual void | effective_electron_conductivity (Tensor< 2, dim > &) const |
Compute the effective electron conductivity in the CL as an anisotropic tensor. | |
virtual void | derivative_effective_electron_conductivity (std::vector< double > &) const |
Compute the derivative of the effective electron conductivity in the GDL with respect to either the solution or design parameters. | |
virtual void | effective_proton_conductivity (double &) const |
Compute the effective proton conductivity in the CL. | |
virtual void | effective_proton_conductivity (std::vector< double > &) const |
Compute the effective proton conductivity, at all quadrature points in the cell, mainly as a function of Temperature. | |
virtual void | derivative_effective_proton_conductivity (std::map< VariableNames, std::vector< double > > &) const |
Compute the derivative of the effective proton conductivity in the CL with respect to either the solution or design parameters. | |
virtual void | effective_water_diffusivity (double &) const |
Compute the effective water diffusivity (lambda diffusivity) in the CL. | |
virtual void | effective_water_diffusivity (std::vector< double > &) const |
Compute the effective water diffusivity (lambda diffusivity) at all quadrature points in the CL. | |
virtual void | derivative_effective_water_diffusivity (std::map< VariableNames, std::vector< double > > &) const |
Compute the derivative of the effective water diffusivity (lambda diffusivity) in the CL with respect to either the solution or design parameters. | |
Public Member Functions inherited from FuelCellShop::Layer::CatalystLayer< dim > | |
virtual void | set_constant_solution (const double &value, const VariableNames &name) |
Set those solution variables which are constant in the particular application. | |
virtual void | set_solution (const std::vector< SolutionVariable > &) |
This method is used to set the solution variable values in the kinetics object, at all quadrature points in the cell. | |
virtual void | set_derivative_flags (const std::vector< VariableNames > &flags) |
Method used to set the variables for which you would like to compute the derivatives in the catalyst layer. | |
void | set_reaction_kinetics (const std::string &rxn_name) |
Member function used to specify the reaction for which the kinetic parameters are needed, for example for a Platinum catalyst, we can specify that we need the kinetic parameters for either the oxygen reduction reaction (ORR) or the hydrogen oxidation reaction (HOR) | |
const std::type_info & | get_base_type () const |
This member function returns a type_info object with the name of the base layer type the inherited class belongs to, i.e. | |
virtual void | effective_gas_diffusivity (Table< 2, double > &) const |
Return the effective diffusivty in the GDL for all the gases assigned to the layer using set_gases_and_compute. | |
virtual void | derivative_effective_electron_conductivity (std::vector< Tensor< 2, dim > > &) const |
Compute the derivative of the effective electron conductivity in the GDL with respect to either the solution or design parameters. | |
virtual void | gas_permeablity (double &) const |
Compute the CL gas permeability. | |
virtual void | gas_permeablity (Tensor< 2, dim > &) const |
Compute the CL gas permeability. | |
virtual void | derivative_gas_permeablity (std::vector< double > &) const |
Compute the derivative of the effective gas permeability in the GDL with respect to either the solution or design parameters. | |
virtual void | derivative_gas_permeablity (std::vector< Tensor< 2, dim > > &) const |
Compute the derivative of the effective gas permeability in the GDL with respect to either the solution or design parameters. | |
virtual void | liquid_permeablity (double &) const |
Compute the GDL liquid permeability. | |
virtual void | liquid_permeablity (Tensor< 2, dim > &) const |
Compute the GDL liquid permeability. | |
virtual void | derivative_liquid_permeablity (std::vector< double > &) const |
Compute the derivative of the effective gas diffusion in the GDL with respect to either the solution or design parameters. | |
virtual void | derivative_liquid_permeablity (std::vector< Tensor< 2, dim > > &) const |
Compute the derivative of the effective gas diffusion in the GDL with respect to either the solution or design parameters. | |
virtual FuelCellShop::Material::PolymerElectrolyteBase * | get_electrolyte () const |
Method to provide access to pointer of the electrolyte object of the catalyst layer. | |
virtual FuelCellShop::Kinetics::BaseKinetics * | get_kinetics () const |
Method to provide access to pointer of the kinetic object of the catalyst layer. | |
Public Member Functions inherited from FuelCellShop::Layer::PorousLayer< dim > | |
void | set_gases_and_compute (std::vector< FuelCellShop::Material::PureGas * > &gases_in, const double &pressure_in, const double &temperature_in) |
Member function used to store all the gases that are in the pore space in the gas diffusion layer as well as their temperature [Kelvin ] and total pressure [atm ]. | |
void | compute_gas_diffusion (FuelCellShop::Material::PureGas *solute_gas, FuelCellShop::Material::PureGas *solvent_gas) |
Member function used to compute bulk diffusion coefficients and derivatives w.r.t temperature for non-isothermal case and store inside the layer. | |
void | set_gases (std::vector< FuelCellShop::Material::PureGas * > &gases_in, const double &pressure_in) |
Member function used to store all the gases that are in the pore space in the porous layer. | |
void | set_temperature (const SolutionVariable &T_in) |
Member function used to set the temperature ]Kelvin ] at every quadrature point inside the cell. | |
FuelCellShop::Material::PureGas * | get_gas_pointer (int index) const |
Return the FuelCellShop::Material::PureGas pointer that is stored inside the class in the ith position. | |
std::vector < FuelCellShop::Material::PureGas * > | get_gases () const |
Returns the vector of FuelCellShop::Material::PureGas pointers stored in the porous layer. | |
void | get_gas_index (FuelCellShop::Material::PureGas *gas_type, int &index) const |
Return the gas index in the GDL class. | |
void | get_T_and_p (double &T, double &p) const |
Return the constant temperature [Kelvin ] and constant pressure [atm ] inside the layer. | |
void | get_p (double &p) const |
Return the constant pressure [atm ] inside the layer. | |
virtual bool | test_layer () const |
This virtual class should be used for any derived class to be able to test the functionality of the class. | |
Public Member Functions inherited from FuelCellShop::Layer::BaseLayer< dim > | |
void | set_position (std::vector< Point< dim > > &p) |
Member function used by some applications such as dummyGDL in order to know which value to return. | |
bool | belongs_to_material (const char material_id) |
Check if a given cell belongs to the catalyst layer. | |
const std::string & | name_material () |
Return the name of the layer. | |
virtual bool | test_layer () |
This virtual class should be used for any derived class to be able to test the functionality of the class. | |
unsigned int | get_material_id () |
Return the material id of the layer. | |
Static Public Attributes | |
static const std::string | concrete_name |
Concrete name used for objects of this class. | |
Static Public Attributes inherited from FuelCellShop::Layer::ConventionalCL< dim > | |
static const std::string | concrete_name |
Concrete name used for objects of this class. | |
Protected Member Functions | |
Constructors and declarations | |
HomogeneousCL (const std::string name) | |
Constructor. | |
virtual void | declare_parameters (const std::string &cl_section_name, ParameterHandler ¶m) const |
Declare parameters for a parameter file. | |
virtual void | set_parameters (const std::vector< std::string > &name_dvar, const std::vector< double > &value_dvar, const std::string &cl_section_name, ParameterHandler ¶m) const |
Member function used to set new parameters values in the optimization loop. | |
void | initialize (ParameterHandler ¶m) |
Member function used to read in data and initialize the necessary data to compute the coefficients. | |
Instance Delivery (Replica creator) | |
virtual boost::shared_ptr < FuelCellShop::Layer::CatalystLayer < dim > > | create_replica (const std::string &cl_section_name) |
This member function is used to create an object of type gas diffusion layer. | |
Protected Member Functions inherited from FuelCellShop::Layer::ConventionalCL< dim > | |
void | compute_volume_fraction () |
Compute porosity and volume fraction of solid and ionomer in the catalyst layer. | |
void | compute_Av () |
Compute the active area of catalyst in the layer by the specified method. | |
void | derivative_effective_proton_conductivity_wrt_electrolyte_loading (double &) const |
Compute the derivative of the effective proton conductivity w.r.t. | |
void | derivative_volume_fractions (double &Depsilon_S, double &Depsilon_V, double &Depsilon_N) const |
Function to compute the partial derivative of the volume fraction the different phases in the catalyst layer with respect to the design variables of the optimization problem. | |
void | get_method_transport_property_pores (std::string &method) |
Get the effective transport method in the pores. | |
void | get_method_transport_property_electrolyte (std::string &method) |
Get the effective transport method in the electrolyte. | |
void | get_method_transport_property_solid (std::string &method) |
Get the effective transport method in the solid phase. | |
double | depsilon_S_cat_dprc_Pt (const double V_Pt, const double prc_Pt) const |
Inline function to compute
\[ \frac{\partial \epsilon_S^{cat}}{\partial \%Pt} \] | |
double | depsilon_S_cat_dVPt (const double prc_Pt) const |
Inline function to compute
\[ \frac{\partial \epsilon_S^{cat}}{\partial m_{Pt}} \] | |
double | depsilon_V_cat_depsilon_S_cat () const |
Inline function to compute
\[ \frac{\partial \epsilon_V^{cat}}{\partial \epsilon_S^{cat}} \] | |
double | depsilon_V_cat_depsilon_N_cat () const |
Inline function to compute
\[ \frac{\partial \epsilon_V^{cat}}{\partial \epsilon_S^{cat}} \] | |
ConventionalCL (std::string name) | |
Constructor. | |
Protected Member Functions inherited from FuelCellShop::Layer::CatalystLayer< dim > | |
CatalystLayer () | |
~CatalystLayer () | |
Destructor. | |
CatalystLayer (const std::string &name) | |
Constructor. | |
Protected Member Functions inherited from FuelCellShop::Layer::PorousLayer< dim > | |
PorousLayer (const std::string &name) | |
Constructor. | |
PorousLayer () | |
Constructor. | |
virtual | ~PorousLayer () |
Destructor. | |
virtual void | declare_parameters (ParameterHandler ¶m) const |
Declare parameters for a parameter file. | |
void | set_parameters (const std::string &object_name, const std::vector< std::string > &name_dvar, const std::vector< double > &value_dvar, ParameterHandler ¶m) |
Member function used to change the values in the parameter file for a given list of parameters. | |
virtual void | set_parameters (const std::vector< std::string > &name_dvar, const std::vector< double > &value_dvar, ParameterHandler ¶m) |
Member function used to change the values in the parameter file for a given list of parameters. | |
virtual void | gas_diffusion_coefficients (Table< 2, double > &) const |
Return the molecular diffusivty all the gases assigned to the layer using set_gases_and_compute. | |
virtual void | derivative_gas_diffusion_coefficients (std::vector< Table< 2, double > > &) const |
Return the derivative of the molecular diffusion coefficient with respect to the derivative flags for all the gases assigned to the layer using set_gases_and_compute. | |
Protected Member Functions inherited from FuelCellShop::Layer::BaseLayer< dim > | |
BaseLayer () | |
Constructor. | |
BaseLayer (const std::string &name) | |
Constructor. | |
virtual | ~BaseLayer () |
Destructor. | |
Static Protected Attributes | |
Instance Delivery (Prototype) | |
static HomogeneousCL< dim > const * | PROTOTYPE |
Additional Inherited Members | |
Static Public Member Functions inherited from FuelCellShop::Layer::CatalystLayer< dim > | |
static void | declare_CatalystLayer_parameters (const std::string &cl_section_name, ParameterHandler ¶m) |
Function used to declare all the data necessary in the parameter files former all CatalystLayer children. | |
static void | set_CatalystLayer_parameters (const std::vector< std::string > &name_dvar, const std::vector< double > &value_dvar, const std::string &cl_section_name, ParameterHandler ¶m) |
static boost::shared_ptr < FuelCellShop::Layer::CatalystLayer < dim > > | create_CatalystLayer (const std::string &cl_section_name, ParameterHandler ¶m) |
Function used to select the appropriate CatalystLayer type as specified in the ParameterHandler under line. | |
Protected Types inherited from FuelCellShop::Layer::CatalystLayer< dim > | |
typedef std::map< std::string, CatalystLayer< dim > * > | _mapFactory |
This object is used to store all objects of type CatalystLayer. | |
Static Protected Member Functions inherited from FuelCellShop::Layer::CatalystLayer< dim > | |
static _mapFactory * | get_mapFactory () |
Return the map library that stores all childrens of this class. | |
Protected Attributes inherited from FuelCellShop::Layer::ConventionalCL< dim > | |
double | epsilon_N |
Volume fraction of Nafion in the cathode catalyst layer. | |
double | epsilon_V |
Void volume fraction (Porosity) of the catalyst layer. | |
double | epsilon_S |
Solid volume fraction in the catalyst layer. | |
double | epsilon_W |
Volume fraction of water in the cathode catalyst layer. | |
double | rho_Pt |
Density of platinum. | |
double | rho_c |
Density of support material. | |
double | prc_Pt |
Percentage of platinum per carbon on the catalyst layer. | |
double | V_Pt |
Platinum loading at the catalyst layer per unit volume. | |
double | M_Pt |
Platinum loading at the catalyst layer per unit area. | |
double | Av |
Active area of catalyst per unit volume of catalyst layer. | |
std::string | method_Av |
Method to compute active area. | |
std::string | method_porosity |
Method to compute porosity. | |
double | L_CL |
Layer thickness. | |
double | rho_N |
Density of electrolyte. | |
double | loading_N |
Electrolyte loading. | |
double | prc_N |
Percentage (mass fraction) of electrolyte in the catalyst layer. | |
std::string | method_eff_property_pores |
Method used to compute effective properties – Type of network. | |
double | porosity_th |
Porous network threshold. | |
double | porosity_mu |
Porous network constant. | |
double | porosity_gamma |
std::string | method_eff_property_solid |
Method used to compute effective properties – Type of network. | |
double | solid_electron_conductivity |
Input electron conductivity. | |
double | solid_th |
Solid phase network threshold. | |
double | solid_mu |
Solid phase network constant. | |
std::string | method_eff_property_electrolyte |
Method used to compute effective properties – Type of network. | |
double | electrolyte_proton_conductivity |
Input electrolyte proton conductivity. | |
double | electrolyte_th |
Electrolyte network threshold. | |
double | electrolyte_mu |
Electrolyte network constant. | |
double | sigma_p |
Electrolyte proton conductivity. | |
double | E0 |
Theoretical open-circuit voltage under the operating conditions. | |
Friend class for Unit Testing |
This class characterizes a catalyst layer and uses this information to compute effective transport properties and interfacial areas for phase change or electrochemical reactions.
This class implements a macrohomogeneous catalyst layer.
FuelCellShop::Layer::HomogeneousCL< dim >::HomogeneousCL | ( | ) |
Prototye Constructor.
FuelCellShop::Layer::HomogeneousCL< dim >::~HomogeneousCL | ( | ) |
Destructor.
|
protected |
Constructor.
|
inlineprotectedvirtual |
This member function is used to create an object of type gas diffusion layer.
Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.
|
virtual |
This member function will use a FuelCellShop::BaseKinetics class in order to compute the current density production in the CL.
Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.
Referenced by FuelCellShop::Layer::HomogeneousCL< dim >::current_density().
|
inlinevirtual |
This member function computes the current density production in the CL.
First argument is current density, and second is effectiveness, at all quadrature points in the cell. Since this is a macro-homogeneous layer, effectiveness is filled as 1.0
Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.
References FuelCellShop::Layer::HomogeneousCL< dim >::current_density().
|
protectedvirtual |
Declare parameters for a parameter file.
Reimplemented from FuelCellShop::Layer::ConventionalCL< dim >.
|
virtual |
This member function will use a FuelCellShop::BaseKinetics class in order to compute the derivative of the current density with respect to the variables setup using set_derivative_flags method.
Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.
|
protectedvirtual |
Member function used to read in data and initialize the necessary data to compute the coefficients.
Reimplemented from FuelCellShop::Layer::ConventionalCL< dim >.
|
protectedvirtual |
Member function used to set new parameters values in the optimization loop.
Member function used to set new parameters values in the optimization loop
Reimplemented from FuelCellShop::Layer::ConventionalCL< dim >.
|
static |
Concrete name used for objects of this class.
This name is used when setting up the subsection where the data is stored in the input file.
The data will be store under
|
staticprotected |