OpenFCST: The open-source Fuel Cell Simulation Toolbox
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Static Public Attributes | Protected Member Functions | Protected Attributes | List of all members
FuelCellShop::Layer::ConventionalCL< dim > Class Template Reference

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

Inheritance diagram for FuelCellShop::Layer::ConventionalCL< dim >:
Inheritance graph
[legend]
Collaboration diagram for FuelCellShop::Layer::ConventionalCL< dim >:
Collaboration graph
[legend]

Public Member Functions

Constructors, destructor, and initalization
 ConventionalCL ()
 
virtual ~ConventionalCL ()
 Destructor. More...
 
Accessors and info
virtual void set_local_material_id (const unsigned int &id)
 Re-implementation of the parent set_local_material_id class to initialize the porosity variable to the right value once the material ID is changed. More...
 
virtual void print_layer_properties () const
 Print out the volume fraction in the catalyst layer. More...
 
virtual void get_volume_fractions (std::map< std::string, double > &volume_fractions)
 Get the volume fractions in the catalyst layer. More...
 
virtual void get_loadings (std::map< std::string, double > &info)
 Return loadings. More...
 
double get_V_Pt (const unsigned int mat_id=numbers::invalid_material_id) const
 Return the platinum loading per cm3 catalyst layer. More...
 
virtual double get_active_area_Pt () const
 Get the active area of platinum per unit volume of CL. More...
 
Effective property calculators
virtual void effective_gas_diffusivity (const double &, const double &, double &) const
 Compute the effective property in the pores of the CL. More...
 
virtual void effective_gas_diffusivity (std::vector< Tensor< 2, dim > > &) const
 Return the effective diffusivity [m^2/s] for nonisothermal with/without two-phase case in the CL. More...
 
virtual void derivative_effective_gas_diffusivity (std::map< VariableNames, std::vector< Tensor< 2, dim > > > &) const
 Return the derivative of effective diffusivity w.r.t solution variables/design parameters for nonisothermal with/without two-phase case in the CL. More...
 
virtual void effective_gas_diffusivity (Table< 2, Tensor< 2, dim > > &) const
 Compute the effective property in the pores of the CL. More...
 
virtual void effective_electron_conductivity (double &) const
 Compute the effective electron conductivity in the CL. More...
 
virtual void effective_electron_conductivity (Tensor< 2, dim > &) const
 Compute the effective electron conductivity in the CL as an anisotropic tensor. More...
 
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. More...
 
virtual void effective_proton_conductivity (double &) const
 Compute the effective proton conductivity in the CL. More...
 
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. More...
 
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. More...
 
virtual void effective_water_diffusivity (double &) const
 Compute the effective water diffusivity (lambda diffusivity) in the CL. More...
 
virtual void effective_water_diffusivity (std::vector< double > &) const
 Compute the effective water diffusivity (lambda diffusivity) at all quadrature points in the CL. More...
 
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. More...
 
virtual void effective_thermal_conductivity (double &) const
 Compute the effective thermal conductivity of catalyst layer. More...
 
virtual void effective_thermal_conductivity (std::vector< Tensor< 2, dim > > &) const
 Compute the effective thermal conductivity as a Tensor at all quadrature points. More...
 
virtual void derivative_effective_thermal_conductivity (std::vector< Tensor< 2, dim > > &) const
 Compute the derivative of the effective thermal conductivity in the CL. More...
 
virtual void effective_thermoosmotic_diffusivity (std::vector< double > &) const
 Compute the effective thermo-osmotic diffusivity of lambda (sorbed water), at all quadrature points in the CL. More...
 
virtual void derivative_effective_thermoosmotic_diffusivity (std::map< VariableNames, std::vector< double > > &) const
 Compute the derivative of the effective thermo-osmotic diffusivity of lambda (sorbed water) in the CL with respect to either the solution or design parameters. More...
 
virtual void liquid_permeablity (std::vector< Tensor< 2, dim > > &) const
 Compute the anisotropic CL liquid permeability $ \left[ cm^2 \right] $, at all quadrature points in the cell. More...
 
virtual void derivative_liquid_permeablity (std::map< VariableNames, std::vector< Tensor< 2, dim > > > &) const
 Compute the derivative of the anisotropic liquid permeability in the CL with respect to either the solution or design parameters, at all quadrature points in the cell. More...
 
virtual void saturated_liquid_permeablity_PSD (double &) const
 Compute the anisotropic CL liquid permeability $ \left[ cm^2 \right] $, at all quadrature points in the cell. More...
 
virtual void relative_liquid_permeability_PSD (std::vector< Tensor< 2, dim > > &) const
 Compute the anisotropic CL liquid permeability $ \left[ cm^2 \right] $, at all quadrature points in the cell. More...
 
virtual void derivative_relative_liquid_permeablity_PSD (std::vector< double > &) const
 
virtual void derivative_relative_liquid_permeablity_PSD (std::map< VariableNames, std::vector< Tensor< 2, dim > > > &) const
 
virtual void pcapillary (std::vector< double > &) const
 Compute $ p_c \quad \left[ dyne \cdot cm^{-2}\right] $, at all quadrature points in the cell. More...
 
virtual void saturation_from_capillary_equation (std::vector< double > &) const
 
virtual void derivative_saturation_from_capillary_equation_PSD (std::vector< double > &) const
 
virtual void dpcapillary_dsat (std::vector< double > &) const
 Compute $ \frac{\partial p_c}{\partial s} \quad \left[ dyne \cdot cm^{-2}\right] $, at all quadrature points in the CL. More...
 
virtual void derivative_dpcapillary_dsat (std::map< VariableNames, std::vector< double > > &) const
 Compute the derivative of $ \frac{\partial p_c}{\partial s} \quad \left[ dyne \cdot cm^{-2}\right] $ in the CL, with respect to either the solution or design parameters, at all quadrature points in the cell. More...
 
virtual void interfacial_surface_area (std::vector< double > &) const
 Compute the liquid-gas interfacial surface area per unit volume, $ a_{lv} ~\left[ \frac{cm^2}{cm^3} \right] $, at all quadrature points in the CL. More...
 
virtual void derivative_interfacial_surface_area (std::map< VariableNames, std::vector< double > > &) const
 Compute the derivative of the liquid-gas interfacial surface area per unit volume, with respect to either the solution variables or design parameters, at all quadrature points in the CL. More...
 
virtual void interfacial_surface_area_PSD (std::vector< double > &) const
 Compute the liquid-gas interfacial surface area per unit volume, $ a_{lv} ~\left[ \frac{cm^2}{cm^3} \right] $, at all quadrature points in the CL. More...
 
virtual void derivative_interfacial_surface_area_PSD (std::vector< double > &) const
 Compute the derivative of the liquid-gas interfacial surface area per unit volume, with respect to either the solution variables or design parameters, at all quadrature points in the CL. More...
 
virtual void derivative_interfacial_surface_area_PSD (std::map< VariableNames, std::vector< double > > &) const
 Compute the derivative of the liquid-gas interfacial surface area per unit volume, with respect to either the solution variables or design parameters, at all quadrature points in the CL. More...
 
- Public Member Functions inherited from FuelCellShop::Layer::CatalystLayer< dim >
virtual void set_cell_id (const unsigned int &id)
 Function for setting current cell_id from applications. More...
 
std::string get_kinetics_type ()
 Method for getting string describing kinetics type (corresponding to kinetics class concrete names) More...
 
virtual SolutionMap get_coverages ()
 Method for getting coverages from kinetics objects (overloaded by MultiScaleCL) More...
 
virtual void set_constant_solution (const double &value, const VariableNames &name)
 Set those solution variables which are constant in the particular application. More...
 
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. More...
 
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. More...
 
void set_reaction_kinetics (const ReactionNames 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) More...
 
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. More...
 
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. More...
 
virtual void effective_thermal_conductivity (Tensor< 2, dim > &) const
 Compute the effective thermal conductivity in the CL. More...
 
virtual void derivative_effective_thermal_conductivity (std::vector< double > &) const
 Compute the derivative of the effective thermal conductivity in the CL with respect to either the solution or design parameters. More...
 
virtual void gas_permeablity (double &) const
 Compute the CL gas permeability. More...
 
virtual void gas_permeablity (Tensor< 2, dim > &) const
 Compute the CL gas permeability. More...
 
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. More...
 
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. More...
 
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. More...
 
virtual void current_density (std::vector< double > &current, std::vector< double > &effectiveness)
 This member function will use a FuelCellShop::BaseKinetics class in order to compute the current density production in the CL. More...
 
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. More...
 
virtual
FuelCellShop::Material::PolymerElectrolyteBase
get_electrolyte () const
 Method to provide access to pointer of the electrolyte object of the catalyst layer. More...
 
virtual
FuelCellShop::Kinetics::BaseKinetics
get_kinetics () const
 Method to provide access to pointer of the kinetic object of the catalyst layer. More...
 
- 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]. More...
 
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). More...
 
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. More...
 
void set_gas_mixture (FuelCellShop::Material::GasMixture &rgas_mixture)
 Set gas_mixture. More...
 
void set_porosity_permeability_tortuosity_booleans (const bool &rporosity_is_constant, const bool &rpermeability_is_constant, const bool &rtortuosity_is_constant)
 Set. More...
 
void set_pressure (const SolutionVariable &p_in)
 Member function used to set the temperature [Kelvin] at every quadrature point inside the cell. More...
 
void set_temperature (const SolutionVariable &T_in)
 Member function used to set the temperature [Kelvin] at every quadrature point inside the cell. More...
 
void set_saturation (const SolutionVariable &s_in)
 Member function used to set the liquid water saturation at every quadrature point inside the cell. More...
 
void set_capillary_pressure (const SolutionVariable &p_in)
 Member function used to set the liquid water saturation at every quadrature point inside the cell. More...
 
FuelCellShop::Material::PureGasget_gas_pointer (int index) const
 Return the FuelCellShop::Material::PureGas pointer that is stored inside the class in the ith position. More...
 
std::vector
< FuelCellShop::Material::PureGas * > 
get_gases () const
 Returns the vector of FuelCellShop::Material::PureGas pointers stored in the porous layer. More...
 
const
FuelCellShop::Material::GasMixture
*const 
get_gas_mixture () const
 This function returns gas_mixture. More...
 
void get_gas_index (FuelCellShop::Material::PureGas *gas_type, int &index) const
 Return the gas index in the GDL class. More...
 
void get_T_and_p (double &T, double &p) const
 Return the constant temperature [Kelvin] and constant pressure [atm] inside the layer. More...
 
void get_p (double &p) const
 Return the constant pressure [atm] inside the layer. More...
 
const bool & get_porosity_is_constant () const
 This function returns porosity_is_constant. More...
 
const bool & get_permeability_is_constant () const
 This function returns permeability_is_constant. More...
 
const bool & get_tortuosity_is_constant () const
 This function returns tortuosity_is_constant. More...
 
double get_porosity () const
 This function computes constant porosity in quadrature points of a mesh entity. More...
 
void get_porosity (std::vector< double > &dst) const
 This function computes constant porosity in quadrature points of a mesh entity. More...
 
void get_porosity (std::vector< double > &dst, const std::vector< Point< dim > > &points) const
 This function computes variable porosity in quadrature points of a mesh entity. More...
 
void get_permeability (std::vector< SymmetricTensor< 2, dim > > &dst) const
 This function computes constant permeability in quadrature points of a mesh entity. More...
 
void get_permeability (std::vector< SymmetricTensor< 2, dim > > &dst, const std::vector< Point< dim > > &points) const
 This function computes variable permeability in quadrature points of a mesh entity. More...
 
void get_SQRT_permeability (std::vector< SymmetricTensor< 2, dim > > &dst) const
 This function computes square root of constant permeability in quadrature points of a mesh entity. More...
 
void get_SQRT_permeability (std::vector< SymmetricTensor< 2, dim > > &dst, const std::vector< Point< dim > > &points) const
 This function computes square root of variable permeability in quadrature points of a mesh entity. More...
 
void get_permeability_INV (std::vector< SymmetricTensor< 2, dim > > &dst) const
 This function computes inverse of constant permeability in quadrature points of a mesh entity. More...
 
void get_permeability_INV (std::vector< SymmetricTensor< 2, dim > > &dst, const std::vector< Point< dim > > &points) const
 This function computes inverse of variable permeability in quadrature points of a mesh entity. More...
 
void get_SQRT_permeability_INV (std::vector< SymmetricTensor< 2, dim > > &dst) const
 This function computes inverse of square root of constant permeability in quadrature points of a mesh entity. More...
 
void get_SQRT_permeability_INV (std::vector< SymmetricTensor< 2, dim > > &dst, const std::vector< Point< dim > > &points) const
 This function computes inverse of square root of variable permeability in quadrature points of a mesh entity. More...
 
void get_Forchheimer_permeability (std::vector< SymmetricTensor< 2, dim > > &dst) const
 This function computes constant Forchheimer permeability in quadrature points of a mesh entity. More...
 
void get_Forchheimer_permeability (std::vector< SymmetricTensor< 2, dim > > &dst, const std::vector< Point< dim > > &points) const
 This function computes variable Forchheimer permeability in quadrature points of a mesh entity. More...
 
void get_tortuosity (std::vector< SymmetricTensor< 2, dim > > &dst) const
 This function computes constant tortuosity in quadrature points of a mesh entity. More...
 
void get_tortuosity (std::vector< SymmetricTensor< 2, dim > > &dst, const std::vector< Point< dim > > &points) const
 This function computes variable tortuosity in quadrature points of a mesh entity. More...
 
virtual void effective_gas_diffusivity (Table< 2, double > &D_eff) const
 Return the effective diffusivty in the GDL for all the gases assigned to the layer using set_gases_and_compute. More...
 
virtual void gas_diffusion_coefficient (std::vector< double > &D_b) const
 Member function used to compute diffusion for a solute_gas, solvent_gas combination at a given temperature and pressure. More...
 
virtual void gas_diffusion_coefficient (std::vector< double > &D_b, std::vector< double > &dD_b_dT) const
 Member function used to compute diffusion for a solute_gas, solvent_gas combination at a given temperature and pressure. More...
 
void molecular_gas_diffusion_coefficient (std::vector< double > &D_m) const
 Member function used to compute molecular diffusion for a solute_gas, solvent_gas combination at a given temperature and pressure. More...
 
void molecular_gas_diffusion_coefficient (std::vector< double > &D_m, std::vector< double > &dD_m_dT) const
 Member function used to compute molecular diffusion for a solute_gas, solvent_gas combination at a given temperature and pressure. More...
 
void Knudsen_diffusion (std::vector< double > &D) const
 Member function used to get the Knudsen diffusivity in the layer after calling compute_gas_diffusion. More...
 
void Knudsen_diffusion (std::vector< double > &D, std::vector< double > &dD_dT) const
 Member function used to compute the Knudsen diffusivity in the layer.after calling compute_gas_diffusion. More...
 
void compute_Knudsen_diffusion (const FuelCellShop::Material::PureGas *solute_gas, const SolutionVariable &T_in, std::vector< double > &D_k) const
 Member function used to compute the Knudsen diffusivity in the layer. More...
 
void compute_Knudsen_diffusion (const FuelCellShop::Material::PureGas *solute_gas, const SolutionVariable &T_in, std::vector< double > &D_k, std::vector< double > &dD_k_dT) const
 Member function used to compute the Knudsen diffusivity in the layer. More...
 
- Public Member Functions inherited from FuelCellShop::Layer::BaseLayer< dim >
void set_position (const std::vector< Point< dim > > &p)
 Member function used by some applications such as dummyGDL in order to know which value to return. More...
 
void unset_local_material_id ()
 Function for unsetting local material id, so that it isn't incorrectly used later Once the key is "unset" to some invalid value, an error will be thrown if the key is requested again without being set. More...
 
bool belongs_to_material (const unsigned int material_id)
 Check if a given cell belongs to the catalyst layer and assign. More...
 
const std::string & name_layer () const
 Return the name of the layer. More...
 
virtual bool test_layer ()
 This virtual class should be used for any derived class to be able to test the functionality of the class. More...
 
std::vector< unsigned int > get_material_ids ()
 Return the local material id of the layer. More...
 
unsigned int local_material_id () const
 Return the local material id of the layer, performs a check. More...
 

Static Public Attributes

static const std::string concrete_name
 FcstUtilities Concrete name used for objects of this class. More...
 

Protected Member Functions

void compute_volume_fraction ()
 Compute porosity and volume fraction of solid and ionomer in the catalyst layer. More...
 
void compute_Av ()
 Compute the active area of catalyst in the layer by the specified method. More...
 
void derivative_effective_proton_conductivity_wrt_electrolyte_loading (double &) const
 Compute the derivative of the effective proton conductivity w.r.t. More...
 
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. More...
 
void get_method_transport_property_pores (std::string &method) const
 Get the effective transport method in the pores. More...
 
void get_method_transport_property_electrolyte (std::string &method) const
 Get the effective transport method in the electrolyte. More...
 
void get_method_transport_property_solid (std::string &method) const
 Get the effective transport method in the solid phase. More...
 
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} \]

. More...

 
double depsilon_S_cat_dVPt (const double &prc_Pt) const
 Inline function to compute

\[ \frac{\partial \epsilon_S^{cat}}{\partial m_{Pt}} \]

. More...

 
double depsilon_V_cat_depsilon_S_cat () const
 Inline function to compute

\[ \frac{\partial \epsilon_V^{cat}}{\partial \epsilon_S^{cat}} \]

. More...

 
double depsilon_V_cat_depsilon_N_cat () const
 Inline function to compute

\[ \frac{\partial \epsilon_V^{cat}}{\partial \epsilon_S^{cat}} \]

. More...

 
Constructors
 ConventionalCL (std::string name)
 Constructor. More...
 
void declare_parameters (const std::string &cl_section_name, ParameterHandler &param) const
 Declare parameters for a parameter file. More...
 
void initialize (ParameterHandler &param)
 Member function used to read in data and initialize the necessary data to compute the coefficients. More...
 
- Protected Member Functions inherited from FuelCellShop::Layer::CatalystLayer< dim >
 CatalystLayer ()
 
 ~CatalystLayer ()
 Destructor. More...
 
 CatalystLayer (const std::string &name)
 Constructor. More...
 
virtual boost::shared_ptr
< FuelCellShop::Layer::CatalystLayer
< dim > > 
create_replica (const std::string &name)
 This member function is used to create an object of type gas diffusion layer. More...
 
- Protected Member Functions inherited from FuelCellShop::Layer::PorousLayer< dim >
 PorousLayer (const std::string &name)
 Constructor. More...
 
 PorousLayer ()
 Constructor. More...
 
 PorousLayer (const std::string &name, FuelCellShop::Material::GasMixture &gas_mixture)
 Constructor. More...
 
virtual ~PorousLayer ()
 Destructor. More...
 
virtual void declare_parameters (ParameterHandler &param) const
 Declare parameters for a parameter file. More...
 
void print_caller_name (const std::string &caller_name) const
 This function is used to print out the name of another function that has been declared in the scope of this class, but not yet been implemented. More...
 
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. More...
 
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. More...
 
- Protected Member Functions inherited from FuelCellShop::Layer::BaseLayer< dim >
 BaseLayer ()
 Constructor. More...
 
 BaseLayer (const std::string &name)
 Constructor. More...
 
virtual ~BaseLayer ()
 Destructor. More...
 
virtual void set_parameters (const std::string &object_name, const std::vector< std::string > &name_dvar, const std::vector< double > &value_dvar, ParameterHandler &param)
 Member function used to change the values in the parameter file for a given list of parameters. More...
 
virtual void set_parameters (const std::vector< std::string > &name_dvar, const std::vector< double > &value_dvar, ParameterHandler &param)
 Set parameters in parameter file. More...
 

Protected Attributes

std::map< unsigned int, double > epsilon_N
 Volume fraction of Nafion in the cathode catalyst layer. More...
 
std::map< unsigned int, double > epsilon_V
 Void volume fraction (Porosity) of the catalyst layer. More...
 
std::map< unsigned int, double > epsilon_S
 Solid volume fraction in the catalyst layer. More...
 
std::map< unsigned int, double > epsilon_W
 Volume fraction of water in the cathode catalyst layer. More...
 
double rho_Pt
 Density of platinum. More...
 
double rho_c
 Density of support material. More...
 
std::map< unsigned int, double > prc_Pt
 Percentage of platinum per carbon on the catalyst layer. More...
 
std::map< unsigned int, double > V_Pt
 Platinum loading at the catalyst layer per unit volume. More...
 
std::map< unsigned int, double > M_Pt
 Platinum loading at the catalyst layer per unit area. More...
 
std::map< unsigned int, double > Av
 Active area of catalyst per unit volume of catalyst layer. More...
 
std::string method_Av
 Method to compute active area. More...
 
std::string method_porosity
 Method to compute porosity. More...
 
std::map< unsigned int, double > L_CL
 Layer thickness or thicknesses. More...
 
double rho_N
 Density of electrolyte. More...
 
std::map< unsigned int, double > loading_N
 Electrolyte loading. More...
 
std::map< unsigned int, double > IC_ratio
 Ionomer to carbon ratio. More...
 
std::map< unsigned int, double > prc_N
 Percentage (mass fraction) of electrolyte in the catalyst layer. More...
 
std::string method_eff_property_pores
 Method used to compute effective properties – Type of network. More...
 
double porosity_th
 Porous network threshold. More...
 
double porosity_mu
 Porous network constant. More...
 
double porosity_gamma
 
std::string method_eff_property_solid
 Method used to compute effective properties – Type of network. More...
 
double solid_th
 Solid phase network threshold. More...
 
double solid_mu
 Solid phase network constant. More...
 
std::string method_eff_property_electrolyte
 Method used to compute effective properties – Type of network. More...
 
double electrolyte_th
 Electrolyte network threshold. More...
 
double electrolyte_mu
 Electrolyte network constant. More...
 
std::string method_eff_thermal
 Method used to compute effective thermal conductivity in the catalyst layer. More...
 
std::map< unsigned int, double > k_T
 Thermal Conductivity of the layer. More...
 
std::string method_rel_liquid_permeability
 Method used to compute the relative liquid permeability. More...
 
std::map< unsigned int, double > s_irr
 Irreducible liquid water saturation value in the MPL. More...
 
std::map< unsigned int, double > abs_permeability
 Absolute permeability [cm^2] of the layer. More...
 
std::string method_capillary_function
 Method used to compute capillary pressure as a function of saturation. More...
 
- Protected Attributes inherited from FuelCellShop::Layer::CatalystLayer< dim >
std::string diffusion_species_name
 If CL properties are stored inside the class (e.g. More...
 
bool default_materials
 If the default materials are used in the layer, this will be set to true. More...
 
std::string catalyst_type
 Catalyst type from input file. More...
 
std::string catalyst_support_type
 Catalyst Support type from input file. More...
 
std::string electrolyte_type
 Electrolyte type from input file. More...
 
std::string kinetics_type
 Kinetic class type from input file. More...
 
std::string PSD_type
 PSD class type from input file. More...
 
boost::shared_ptr
< FuelCellShop::Material::PolymerElectrolyteBase
electrolyte
 Pointer to the electrolyte object created in the application that is used to calculate the properties of the electrolyte in the catalyst layer. More...
 
boost::shared_ptr
< FuelCellShop::Material::CatalystSupportBase
catalyst_support
 Pointer to the catalyst support object created in the application that is used to calculate the carbon black conductivity in the catalyst layer. More...
 
boost::shared_ptr
< FuelCellShop::Material::CatalystBase
catalyst
 Pointer to the catalyst object created in the application that is used to store the properties of the catalyst used in the layer. More...
 
boost::shared_ptr
< FuelCellShop::Kinetics::BaseKinetics
kinetics
 Pointer to a kinetics object. More...
 
unsigned int n_quad
 Stores the number of quadrature points in the cell. More...
 
std::map< VariableNames,SolutionVariablesolutions
 Map storing solution variables. More...
 
VariableNames reactant
 Name of the reactant which is being solved for in the catalyst layer. More...
 
- Protected Attributes inherited from FuelCellShop::Layer::PorousLayer< dim >
FuelCellShop::Material::GasMixturegas_mixture
 Gas mixture. More...
 
std::vector
< FuelCellShop::Material::PureGas * > 
gases
 Gases inside a porous layer. More...
 
bool porosity_is_constant
 Variable defining if the porosity is constant. More...
 
bool permeability_is_constant
 Variable defining if the permeability is constant. More...
 
bool tortuosity_is_constant
 Variable defining if the tortuosity is constant. More...
 
double porosity
 User defined constant porosity. More...
 
bool use_Bosanquet
 Boolean flag that specifies if Knudsen effects should be accounted for. More...
 
double Knudsen_radius
 Parameter used to define Knudsen pore radius. More...
 
SymmetricTensor< 2, dimpermeability
 User defined constant permeability, m^2. More...
 
SymmetricTensor< 2, dimSQRT_permeability
 Square root of user defined constant permeability, m. More...
 
SymmetricTensor< 2, dimpermeability_INV
 Inverse of user defined constant permeability, 1/m^2. More...
 
SymmetricTensor< 2, dimSQRT_permeability_INV
 Inverse of square root of user defined constant permeability, 1/m. More...
 
SymmetricTensor< 2, dimForchheimer_permeability
 User defined constant Forchheimer permeability, 1/m. More...
 
SymmetricTensor< 2, dimtortuosity
 User defined constant tortuosity. More...
 
std::string diffusion_species_name
 If GDL properties are stored inside the class (e.g DummyGDL) then, return the property stored under coefficient_name name. More...
 
double temperature
 Temperature [K] used to compute gas diffusivity. More...
 
double pressure
 Total pressure [atm] used to compute gas diffusivity. More...
 
SolutionVariable p_vector
 Pressure at every quadrature point inside the cell in [Pa]. More...
 
SolutionVariable T_vector
 Temperature at every quadrature point inside the cell in [K]. More...
 
SolutionVariable s_vector
 Liquid water saturation at every quadrature point inside the cell [-]. More...
 
SolutionVariable capillary_pressure_vector
 Liquid water capillary pressure at every quadrature point inside the cell in [Pa]. More...
 
Table< 2, double > D_ECtheory
 Tensor of diffusion coefficients This are computed with setting up the gas so that they do not need to be recomputed all the time. More...
 
std::vector< Table< 2, double > > dD_ECtheory_dx
 Vector of tensors for the derivative of the diffusion coefficients – This are computed with setting up the gas so that they do not need to be recomputed all the time. More...
 
std::vector< double > D_molecular
 Vector of molecular diffusion coefficients at every quadrature point inside the cell in m^2/s. More...
 
std::vector< double > dD_molecular_dT
 Vector of derivatives for molecular diffusion coefficients w.r.t temperature, at every quadrature in m^2/s. More...
 
std::vector< double > D_k
 Vector of Knudsen diffusion coefficients at every quadrature point inside the cell in m^2/s. More...
 
std::vector< double > dD_k_dT
 Vector of derivatives for Knudsen diffusion coefficients w.r.t temperature, at every quadrature in m^2/s. More...
 
std::vector< double > D_bulk
 Vector of bulk diffusion coefficients at every quadrature point inside the cell. More...
 
std::vector< double > dD_bulk_dT
 Vector of derivative of bulk diffusion coefficients w.r.t temperature, at every quadrature point inside the cell. More...
 
bool PSD_is_used
 Boolean flag to specify if a PSD is to be used to estimate saturation, permeability, etc. More...
 
std::string PSD_type
 PSD class type from input file. More...
 
boost::shared_ptr
< FuelCellShop::MicroScale::BasePSD
< dim > > 
PSD
 Pointer to the PSD object. More...
 
FuelCellShop::MicroScale::BasePSD
< dim > * 
psd_pointer
 Pointer to the PSD object. More...
 
FuelCellShop::Material::PureGassolute_gas
 Pointer used to store the solute gas for computing binary diffusion coefficients. More...
 
FuelCellShop::Material::PureGassolvent_gas
 Pointer used to store the solute gas for computing binary diffusion coefficients. More...
 
- Protected Attributes inherited from FuelCellShop::Layer::BaseLayer< dim >
const std::string name
 Name of the layer. More...
 
std::vector< unsigned int > material_ids
 List of material IDs that belong to the layer. More...
 
std::vector< Point< dim > > point
 Coordinates of the point where we would like to compute the effective properties. More...
 
std::vector< VariableNamesderivative_flags
 Flags for derivatives: These flags are used to request derivatives. More...
 
std::map< VariableNames, double > constant_solutions
 Map storing values of solution variables constant in a particular application. More...
 

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 &param)
 Function used to declare all the data necessary in the parameter files former all CatalystLayer children. More...
 
static boost::shared_ptr
< FuelCellShop::Layer::CatalystLayer
< dim > > 
create_CatalystLayer (const std::string &cl_section_name, ParameterHandler &param)
 Function used to select the appropriate CatalystLayer type as specified in the ParameterHandler under line. More...
 
- 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. More...
 
- Static Protected Member Functions inherited from FuelCellShop::Layer::CatalystLayer< dim >
static _mapFactoryget_mapFactory ()
 Return the map library that stores all childrens of this class. More...
 

Detailed Description

template<int dim>
class FuelCellShop::Layer::ConventionalCL< dim >

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 homogeneous or graded catalyst layer.

Constructor & Destructor Documentation

Warning
For internal use only.

Constructor used only to create a prototype. Do not use in general since this will not include the name of the section in the parameter file you need.

template<int dim>
virtual FuelCellShop::Layer::ConventionalCL< dim >::~ConventionalCL ( )
virtual

Destructor.

template<int dim>
FuelCellShop::Layer::ConventionalCL< dim >::ConventionalCL ( std::string  name)
protected

Constructor.

Member Function Documentation

template<int dim>
void FuelCellShop::Layer::ConventionalCL< dim >::compute_Av ( )
protected

Compute the active area of catalyst in the layer by the specified method.

There are three methods to compute the active area, namely

  • given
  • Marr
  • ETEK06
  • ETEK07

The given option will simply use the value provided by the user.

The Marr, ETEK06 and ETEK07 options use a polyomial approximation to obtain the surface area of Pt per gram of catalyst, i.e. $ A_0 $ , based on the Pt to carbon weight ratio, i.e. Pt|C or Platinum loading on support (wt) in the input file. Then, the cm^2 Pt per cm^3 of CL is obtained using

\[ A_v = A_0*(V_{Pt}*1e-3) \]

where $ V_{Pt} $ is the input parameter "Platinum loading per unit volume (mg/cm3)".

The functions to obtain $ A_0 $ are

1) Marr

\[ A_0 = 2.2779e6*(Pt|C)^3 - 1.5857e6*(Pt|C)^2 - 2.0153e6*(Pt|C) + 1.5950e6; \]

The equation is from the following reference: Marr, C., Li, X. Composition and performance modelling of catalyst layer in a proton exchange membrane fuel cell. Journal of Power Sources 77 (1) , pp. 17-27, 1999

2) ETEK06

\[ A_0 = -4.5646e5*(Pt|C)^3 + 1.0618e6*(Pt|C)^2 - 1.8564e6*(Pt|C) + 1.5955e6; \]

and is a curve-fit to ETEK catalyst data reported previous to 2006.

3) ETEK07

\[ A_0 = 0.7401e7*(Pt|C)^4 - 1.8105e7*(Pt|C)^3 + 1.5449e7*(Pt|C)^2 - 0.6453e7*(Pt|C) + 0.2054e7 \]

The equation is derived in M. Secanell, Computational Modeling and Optimization of Proton Exchange Membrane Fuel Cells, Ph.D. thesis, University of Victoria, 2008 by curve-fitting data from ETEK from their 2007 catalyst. It is used in several of M. Secanell's publications.

template<int dim>
void FuelCellShop::Layer::ConventionalCL< dim >::compute_volume_fraction ( )
protected

Compute porosity and volume fraction of solid and ionomer in the catalyst layer.

template<int dim>
void FuelCellShop::Layer::ConventionalCL< dim >::declare_parameters ( const std::string &  cl_section_name,
ParameterHandler &  param 
) const
protectedvirtual

Declare parameters for a parameter file.

Note
In order to enable graded catalyst layers, some parameters such as Platinum loading on support (wt) utilize a map with the following structure material_id1:value1, material_id2:value2 where material_id1, material_id2 correspond to sublayers within the catalyst layer.
* subsection Fuel cell data
* (...)
* subsection Cathode Catalyst Layer #<- This is the name fo the subsection that you specify in cl_section_name
* (...)
* subsection ConventionalCL #<- This is the name in (this->concrete_name)
* set Platinum loading on support (%wt) = 4:0.46 # Mass percentage of platinum catalyst on the support carbon black
* set Platinum loading per unit volume (mg/cm3) = 4:400 # Catalyst platinum mass loading per unit volume of CL
* set Electrolyte loading (%wt) = 4:0.3 # Electrode loading is the weight percentage of ionomer per gram of CL
* //-- Network characteristics
* set Method effective transport properties in pores = Bruggemann # OPTIONS: Given|Bruggemann|Percolation -- Method used to compute effective transport properties in the void phase.
* set Porosity threshold = 0.12 # Threshold value of the volume fraction of void space in the CL. If the porosity is less than this value transport does not occur
* set Porosity network constant = 2.0 # Parameter used when using percolation theory
* set Porosity gamma network constant = 0.0 # Parameter used when using percolation theory to account for extra diffusion
* //--
* set Method effective transport properties in solid phase = Bruggemann # OPTIONS: Given|Bruggemann|Percolation --- Method used to compute effective transport properties in pores
* set Solid network threshold = 0.12 # Threshold value of the volume fraction of solid (electron conductive) phase in the CL. If the solid phase is less than this value transport in the fibre network does not occur
* set Solid network constant = 2.0 # Parameter used when using percolation theory
* set Method effective transport properties in electrolyte phase = Bruggemann # OPTIONS: Given|Bruggemann|Percolation|Iden11 -- Method used to compute effective transport properties in pores
* set Electrolyte network threshold = 0.12 # Threshold value of the volume fraction of electrolyte (proton conductive) phase in the CL. If the electrolyte phase is less than this value transport in the network does not occur
* set Electrolyte network constant = 2.0 # Parameter used when using percolation theory
* set Method to compute active area = given # OPTIONS: given|Marr|ETEK06|ETEK07 --
* set Active area [cm^2/cm^3] = 4:2.0e5
* set Method to compute porosity = marc #OPTIONS: marc
* //----
* set Method effective thermal conductivity = Given # OPTIONS: Given -- Method used to compute effective thermal conductivity
* set Thermal conductivity, [W/(cm K)] = 4:0.015
* end
* end
* end
*

For an explanation for the different options, please see the appropriate member function. For example, for the options relating to active area see member function FuelCellShop::Layer::ConventionalCL::compute_Av()

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

Reimplemented in FuelCellShop::Layer::MultiScaleCL< dim >, FuelCellShop::Layer::MultiScaleCL< deal_II_dimension >, and FuelCellShop::Layer::HomogeneousCL< dim >.

template<int dim>
double FuelCellShop::Layer::ConventionalCL< dim >::depsilon_S_cat_dprc_Pt ( const double &  V_Pt,
const double &  prc_Pt 
) const
inlineprotected

Inline function to compute

\[ \frac{\partial \epsilon_S^{cat}}{\partial \%Pt} \]

.

template<int dim>
double FuelCellShop::Layer::ConventionalCL< dim >::depsilon_S_cat_dVPt ( const double &  prc_Pt) const
inlineprotected

Inline function to compute

\[ \frac{\partial \epsilon_S^{cat}}{\partial m_{Pt}} \]

.

template<int dim>
double FuelCellShop::Layer::ConventionalCL< dim >::depsilon_V_cat_depsilon_N_cat ( ) const
inlineprotected

Inline function to compute

\[ \frac{\partial \epsilon_V^{cat}}{\partial \epsilon_S^{cat}} \]

.

template<int dim>
double FuelCellShop::Layer::ConventionalCL< dim >::depsilon_V_cat_depsilon_S_cat ( ) const
inlineprotected

Inline function to compute

\[ \frac{\partial \epsilon_V^{cat}}{\partial \epsilon_S^{cat}} \]

.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::derivative_dpcapillary_dsat ( std::map< VariableNames, std::vector< double > > &  ) const
virtual

Compute the derivative of $ \frac{\partial p_c}{\partial s} \quad \left[ dyne \cdot cm^{-2}\right] $ in the CL, with respect to either the solution or design parameters, at all quadrature points in the cell.

The parameters with respect to which the derivatives are computed are setup in FuelCellShop::Layer::set_derivative_flags()

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::derivative_effective_electron_conductivity ( std::vector< double > &  ) const
virtual

Compute the derivative of the effective electron conductivity in the GDL with respect to either the solution or design parameters.

The parameters with respect to which the derivatives are computed are setup in FuelCellShop::Layer::set_derivative_flags()

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::derivative_effective_gas_diffusivity ( std::map< VariableNames, std::vector< Tensor< 2, dim > > > &  ) const
virtual

Return the derivative of effective diffusivity w.r.t solution variables/design parameters for nonisothermal with/without two-phase case in the CL.

It transforms bulk diffusion properties computed using compute_gas_diffusion method and transforms it into an effective property, taking into account the porosity, saturation and CL structure (Anisotropic case), at all quadrature points of the cell.

Note
: For two-phase case, set_saturation should be called before using this method, otherwise this method assumes saturation value to be zero.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::derivative_effective_proton_conductivity ( std::map< VariableNames, std::vector< double > > &  ) const
virtual

Compute the derivative of the effective proton conductivity in the CL with respect to either the solution or design parameters.

The parameters with respect to which the derivatives are computed are setup in FuelCellShop::Layer::set_derivative_flags()

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
void FuelCellShop::Layer::ConventionalCL< dim >::derivative_effective_proton_conductivity_wrt_electrolyte_loading ( double &  ) const
protected

Compute the derivative of the effective proton conductivity w.r.t.

the electrolyte loading.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::derivative_effective_thermal_conductivity ( std::vector< Tensor< 2, dim > > &  ) const
virtual

Compute the derivative of the effective thermal conductivity in the CL.

Currently, this function returns only derivatives with respect to Temperature.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::derivative_effective_thermoosmotic_diffusivity ( std::map< VariableNames, std::vector< double > > &  ) const
virtual

Compute the derivative of the effective thermo-osmotic diffusivity of lambda (sorbed water) in the CL with respect to either the solution or design parameters.

The parameters with respect to which the derivatives are computed are setup in FuelCellShop::Layer::set_derivative_flags()

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::derivative_effective_water_diffusivity ( std::map< VariableNames, std::vector< double > > &  ) const
virtual

Compute the derivative of the effective water diffusivity (lambda diffusivity) in the CL with respect to either the solution or design parameters.

The parameters with respect to which the derivatives are computed are setup in FuelCellShop::Layer::set_derivative_flags()

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::derivative_interfacial_surface_area ( std::map< VariableNames, std::vector< double > > &  ) const
virtual

Compute the derivative of the liquid-gas interfacial surface area per unit volume, with respect to either the solution variables or design parameters, at all quadrature points in the CL.

The parameters with respect to which the derivatives are computed are setup in FuelCellShop::Layer::set_derivative_flags().

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::derivative_interfacial_surface_area_PSD ( std::vector< double > &  ) const
virtual

Compute the derivative of the liquid-gas interfacial surface area per unit volume, with respect to either the solution variables or design parameters, at all quadrature points in the CL.

The parameters with respect to which the derivatives are computed are setup in FuelCellShop::Layer::set_derivative_flags().

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::derivative_interfacial_surface_area_PSD ( std::map< VariableNames, std::vector< double > > &  ) const
virtual

Compute the derivative of the liquid-gas interfacial surface area per unit volume, with respect to either the solution variables or design parameters, at all quadrature points in the CL.

The parameters with respect to which the derivatives are computed are setup in FuelCellShop::Layer::set_derivative_flags().

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::derivative_liquid_permeablity ( std::map< VariableNames, std::vector< Tensor< 2, dim > > > &  ) const
virtual

Compute the derivative of the anisotropic liquid permeability in the CL with respect to either the solution or design parameters, at all quadrature points in the cell.

The parameters with respect to which the derivatives are computed are setup in FuelCellShop::Layer::set_derivative_flags()

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::derivative_relative_liquid_permeablity_PSD ( std::vector< double > &  ) const
virtual
template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::derivative_relative_liquid_permeablity_PSD ( std::map< VariableNames, std::vector< Tensor< 2, dim > > > &  ) const
virtual
template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::derivative_saturation_from_capillary_equation_PSD ( std::vector< double > &  ) const
virtual
template<int dim>
void FuelCellShop::Layer::ConventionalCL< dim >::derivative_volume_fractions ( double &  Depsilon_S,
double &  Depsilon_V,
double &  Depsilon_N 
) const
protected

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.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::dpcapillary_dsat ( std::vector< double > &  ) const
virtual

Compute $ \frac{\partial p_c}{\partial s} \quad \left[ dyne \cdot cm^{-2}\right] $, at all quadrature points in the CL.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::effective_electron_conductivity ( double &  ) const
virtual

Compute the effective electron conductivity in the CL.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::effective_electron_conductivity ( Tensor< 2, dim > &  ) const
virtual

Compute the effective electron conductivity in the CL as an anisotropic tensor.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::effective_gas_diffusivity ( const double &  ,
const double &  ,
double &   
) const
virtual

Compute the effective property in the pores of the CL.

This is used for example to compute effective diffusivity of gases. The method takes in bulk diffusion coefficient [m^2/s] and liquid water saturation as the first and second argument respectively. This routine is used in the isotropic case.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::effective_gas_diffusivity ( std::vector< Tensor< 2, dim > > &  ) const
virtual

Return the effective diffusivity [m^2/s] for nonisothermal with/without two-phase case in the CL.

It takes bulk diffusivity, computed using compute_gas_diffusion method and transforms it into an effective property, taking into account the porosity, saturation and CL structure (Anisotropic case), at all quadrature points of the cell.

Note
: For two-phase case, set_saturation should be called before using this method, otherwise this method assumes saturation value to be zero.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::effective_gas_diffusivity ( Table< 2, Tensor< 2, dim > > &  ) const
virtual

Compute the effective property in the pores of the CL.

This is used to compute effective diffusivity of gases. This routine can be used either in the isotropic or anisotropic cases. Bulk diffusion coefficients or their derivatives are obtained from Mixure::BinaryDiffusion classes inside this method.

Note
The routine FuelCellShop::Layer::PorousLayer< dim >::set_gases_and_compute (std::vector< FuelCellShop::Material::PureGas * > &gases, double pressure, double temperature) (in the parent class) should have been called prior to using this class. This method is to be used only for a single-phase, isothermal application.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::effective_proton_conductivity ( double &  ) const
virtual

Compute the effective proton conductivity in the CL.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::effective_proton_conductivity ( std::vector< double > &  ) const
virtual

Compute the effective proton conductivity, at all quadrature points in the cell, mainly as a function of Temperature.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::effective_thermal_conductivity ( double &  ) const
virtual

Compute the effective thermal conductivity of catalyst layer.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::effective_thermal_conductivity ( std::vector< Tensor< 2, dim > > &  ) const
virtual

Compute the effective thermal conductivity as a Tensor at all quadrature points.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::effective_thermoosmotic_diffusivity ( std::vector< double > &  ) const
virtual

Compute the effective thermo-osmotic diffusivity of lambda (sorbed water), at all quadrature points in the CL.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::effective_water_diffusivity ( double &  ) const
virtual

Compute the effective water diffusivity (lambda diffusivity) in the CL.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::effective_water_diffusivity ( std::vector< double > &  ) const
virtual

Compute the effective water diffusivity (lambda diffusivity) at all quadrature points in the CL.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual double FuelCellShop::Layer::ConventionalCL< dim >::get_active_area_Pt ( ) const
inlinevirtual

Get the active area of platinum per unit volume of CL.

The active area is computed using the data in the input file according to the information in compute_Av

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::get_loadings ( std::map< std::string, double > &  info)
inlinevirtual

Return loadings.

  • Parameters
    V_Pt= Pt loading in ug/cm3
  • Parameters
    loading_N= ionomer loading wt
  • Parameters
    IC_ratio= I/C ratio
    Note
    either loading_N or IC_ratio should be passed through input file, the other computed
  • Parameters
    prc_Pt= Pt/C ratio

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
void FuelCellShop::Layer::ConventionalCL< dim >::get_method_transport_property_electrolyte ( std::string &  method) const
inlineprotected

Get the effective transport method in the electrolyte.

template<int dim>
void FuelCellShop::Layer::ConventionalCL< dim >::get_method_transport_property_pores ( std::string &  method) const
inlineprotected

Get the effective transport method in the pores.

template<int dim>
void FuelCellShop::Layer::ConventionalCL< dim >::get_method_transport_property_solid ( std::string &  method) const
inlineprotected

Get the effective transport method in the solid phase.

template<int dim>
double FuelCellShop::Layer::ConventionalCL< dim >::get_V_Pt ( const unsigned int  mat_id = numbers::invalid_material_id) const
inline

Return the platinum loading per cm3 catalyst layer.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::get_volume_fractions ( std::map< std::string, double > &  volume_fractions)
inlinevirtual

Get the volume fractions in the catalyst layer.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
void FuelCellShop::Layer::ConventionalCL< dim >::initialize ( ParameterHandler &  param)
protectedvirtual

Member function used to read in data and initialize the necessary data to compute the coefficients.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

Reimplemented in FuelCellShop::Layer::MultiScaleCL< dim >, FuelCellShop::Layer::MultiScaleCL< deal_II_dimension >, and FuelCellShop::Layer::HomogeneousCL< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::interfacial_surface_area ( std::vector< double > &  ) const
virtual

Compute the liquid-gas interfacial surface area per unit volume, $ a_{lv} ~\left[ \frac{cm^2}{cm^3} \right] $, at all quadrature points in the CL.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::interfacial_surface_area_PSD ( std::vector< double > &  ) const
virtual

Compute the liquid-gas interfacial surface area per unit volume, $ a_{lv} ~\left[ \frac{cm^2}{cm^3} \right] $, at all quadrature points in the CL.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::liquid_permeablity ( std::vector< Tensor< 2, dim > > &  ) const
virtual

Compute the anisotropic CL liquid permeability $ \left[ cm^2 \right] $, at all quadrature points in the cell.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::pcapillary ( std::vector< double > &  ) const
virtual

Compute $ p_c \quad \left[ dyne \cdot cm^{-2}\right] $, at all quadrature points in the cell.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::print_layer_properties ( ) const
virtual

Print out the volume fraction in the catalyst layer.

Reimplemented from FuelCellShop::Layer::PorousLayer< dim >.

Reimplemented in FuelCellShop::Layer::MultiScaleCL< dim >, and FuelCellShop::Layer::MultiScaleCL< deal_II_dimension >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::relative_liquid_permeability_PSD ( std::vector< Tensor< 2, dim > > &  ) const
virtual

Compute the anisotropic CL liquid permeability $ \left[ cm^2 \right] $, at all quadrature points in the cell.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::saturated_liquid_permeablity_PSD ( double &  ) const
virtual

Compute the anisotropic CL liquid permeability $ \left[ cm^2 \right] $, at all quadrature points in the cell.

Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::saturation_from_capillary_equation ( std::vector< double > &  ) const
virtual
template<int dim>
virtual void FuelCellShop::Layer::ConventionalCL< dim >::set_local_material_id ( const unsigned int &  id)
inlinevirtual

Re-implementation of the parent set_local_material_id class to initialize the porosity variable to the right value once the material ID is changed.

Reimplemented from FuelCellShop::Layer::BaseLayer< dim >.

References FuelCellShop::Layer::BaseLayer< dim >::set_local_material_id().

Here is the call graph for this function:

Member Data Documentation

template<int dim>
std::map< unsigned int, double> FuelCellShop::Layer::ConventionalCL< dim >::abs_permeability
protected

Absolute permeability [cm^2] of the layer.

Using unsigned int specifying the material id for the specific CL

template<int dim>
std::map< unsigned int, double> FuelCellShop::Layer::ConventionalCL< dim >::Av
protected

Active area of catalyst per unit volume of catalyst layer.

Using unsigned int specifying the material id for the specific CL

Referenced by FuelCellShop::Layer::MultiScaleCL< deal_II_dimension >::get_properties().

template<int dim>
const std::string FuelCellShop::Layer::ConventionalCL< dim >::concrete_name
static

FcstUtilities 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

* subsection name_specified_in_constructor
* set Material id = 4
* set Catalyst layer type = HomogeneousCL # <-here I select the type of object of type CatalystLayer
* subsection HomogeneousCL # <- this is the concrete_name for this class
* set all info relevant to this object
* end
* end
*
template<int dim>
double FuelCellShop::Layer::ConventionalCL< dim >::electrolyte_mu
protected

Electrolyte network constant.

template<int dim>
double FuelCellShop::Layer::ConventionalCL< dim >::electrolyte_th
protected

Electrolyte network threshold.

template<int dim>
std::map< unsigned int, double> FuelCellShop::Layer::ConventionalCL< dim >::epsilon_N
protected

Volume fraction of Nafion in the cathode catalyst layer.

Using unsigned int specifying the material id for the specific CL

Referenced by FuelCellShop::Layer::MultiScaleCL< deal_II_dimension >::get_properties().

template<int dim>
std::map< unsigned int, double> FuelCellShop::Layer::ConventionalCL< dim >::epsilon_S
protected

Solid volume fraction in the catalyst layer.

Using unsigned int specifying the material id for the specific CL

Referenced by FuelCellShop::Layer::MultiScaleCL< deal_II_dimension >::get_properties().

template<int dim>
std::map< unsigned int, double> FuelCellShop::Layer::ConventionalCL< dim >::epsilon_V
protected

Void volume fraction (Porosity) of the catalyst layer.

Using unsigned int specifying the material id for the specific CL

Referenced by FuelCellShop::Layer::MultiScaleCL< deal_II_dimension >::get_properties().

template<int dim>
std::map< unsigned int, double> FuelCellShop::Layer::ConventionalCL< dim >::epsilon_W
protected

Volume fraction of water in the cathode catalyst layer.

Using unsigned int specifying the material id for the specific CL

template<int dim>
std::map< unsigned int, double> FuelCellShop::Layer::ConventionalCL< dim >::IC_ratio
protected

Ionomer to carbon ratio.

Which may change if multiple CLs exist. Each CL is specified using unsigned int for the material id. I/C ratio = weight electrolyte / weight C

template<int dim>
std::map< unsigned int, double> FuelCellShop::Layer::ConventionalCL< dim >::k_T
protected

Thermal Conductivity of the layer.

Using unsigned int specifying the material id for the specific CL

template<int dim>
std::map< unsigned int, double> FuelCellShop::Layer::ConventionalCL< dim >::L_CL
protected

Layer thickness or thicknesses.

Using unsigned int specifying the material id

template<int dim>
std::map< unsigned int, double> FuelCellShop::Layer::ConventionalCL< dim >::loading_N
protected

Electrolyte loading.

Electrode loading is the weight percentage of ionomer per gram of CL. Which may change if multiple CLs exist. Each CL is specified using unsigned int for the material id. loading_N = weight electrolyte / (weight Pt + weight C + weight electrolyte)

template<int dim>
std::map< unsigned int, double> FuelCellShop::Layer::ConventionalCL< dim >::M_Pt
protected

Platinum loading at the catalyst layer per unit area.

Using unsigned int specifying the material id for the specific CL

template<int dim>
std::string FuelCellShop::Layer::ConventionalCL< dim >::method_Av
protected

Method to compute active area.

template<int dim>
std::string FuelCellShop::Layer::ConventionalCL< dim >::method_capillary_function
protected

Method used to compute capillary pressure as a function of saturation.

template<int dim>
std::string FuelCellShop::Layer::ConventionalCL< dim >::method_eff_property_electrolyte
protected

Method used to compute effective properties – Type of network.

template<int dim>
std::string FuelCellShop::Layer::ConventionalCL< dim >::method_eff_property_pores
protected

Method used to compute effective properties – Type of network.

template<int dim>
std::string FuelCellShop::Layer::ConventionalCL< dim >::method_eff_property_solid
protected

Method used to compute effective properties – Type of network.

template<int dim>
std::string FuelCellShop::Layer::ConventionalCL< dim >::method_eff_thermal
protected

Method used to compute effective thermal conductivity in the catalyst layer.

template<int dim>
std::string FuelCellShop::Layer::ConventionalCL< dim >::method_porosity
protected

Method to compute porosity.

template<int dim>
std::string FuelCellShop::Layer::ConventionalCL< dim >::method_rel_liquid_permeability
protected

Method used to compute the relative liquid permeability.

template<int dim>
double FuelCellShop::Layer::ConventionalCL< dim >::porosity_gamma
protected
template<int dim>
double FuelCellShop::Layer::ConventionalCL< dim >::porosity_mu
protected

Porous network constant.

template<int dim>
double FuelCellShop::Layer::ConventionalCL< dim >::porosity_th
protected

Porous network threshold.

template<int dim>
std::map< unsigned int, double> FuelCellShop::Layer::ConventionalCL< dim >::prc_N
protected

Percentage (mass fraction) of electrolyte in the catalyst layer.

Each CL is specified using unsigned int for the material id.

template<int dim>
std::map< unsigned int, double> FuelCellShop::Layer::ConventionalCL< dim >::prc_Pt
protected

Percentage of platinum per carbon on the catalyst layer.

Using unsigned int specifying the material id for the specific CL

template<int dim>
double FuelCellShop::Layer::ConventionalCL< dim >::rho_c
protected

Density of support material.

template<int dim>
double FuelCellShop::Layer::ConventionalCL< dim >::rho_N
protected

Density of electrolyte.

template<int dim>
double FuelCellShop::Layer::ConventionalCL< dim >::rho_Pt
protected

Density of platinum.

template<int dim>
std::map< unsigned int, double> FuelCellShop::Layer::ConventionalCL< dim >::s_irr
protected

Irreducible liquid water saturation value in the MPL.

template<int dim>
double FuelCellShop::Layer::ConventionalCL< dim >::solid_mu
protected

Solid phase network constant.

template<int dim>
double FuelCellShop::Layer::ConventionalCL< dim >::solid_th
protected

Solid phase network threshold.

template<int dim>
std::map< unsigned int, double> FuelCellShop::Layer::ConventionalCL< dim >::V_Pt
protected

Platinum loading at the catalyst layer per unit volume.

Using unsigned int specifying the material id for the specific CL


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