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 <conventional_CL.h>
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 , 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 , 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 , 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 , 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 , at all quadrature points in the CL. More... | |
virtual void | derivative_dpcapillary_dsat (std::map< VariableNames, std::vector< double > > &) const |
Compute the derivative of 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, , 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, , 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 > ¤t, 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::PureGas * | get_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
. More... | |
double | depsilon_S_cat_dVPt (const double &prc_Pt) const |
Inline function to compute
. More... | |
double | depsilon_V_cat_depsilon_S_cat () const |
Inline function to compute
. More... | |
double | depsilon_V_cat_depsilon_N_cat () const |
Inline function to compute
. More... | |
Constructors | |
ConventionalCL (std::string name) | |
Constructor. More... | |
void | declare_parameters (const std::string &cl_section_name, ParameterHandler ¶m) const |
Declare parameters for a parameter file. More... | |
void | initialize (ParameterHandler ¶m) |
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 ¶m) 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 ¶m) |
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 ¶m) |
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,SolutionVariable > | solutions |
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::GasMixture * | gas_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, dim > | permeability |
User defined constant permeability, m^2. More... | |
SymmetricTensor< 2, dim > | SQRT_permeability |
Square root of user defined constant permeability, m. More... | |
SymmetricTensor< 2, dim > | permeability_INV |
Inverse of user defined constant permeability, 1/m^2. More... | |
SymmetricTensor< 2, dim > | SQRT_permeability_INV |
Inverse of square root of user defined constant permeability, 1/m. More... | |
SymmetricTensor< 2, dim > | Forchheimer_permeability |
User defined constant Forchheimer permeability, 1/m. More... | |
SymmetricTensor< 2, dim > | tortuosity |
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::PureGas * | solute_gas |
Pointer used to store the solute gas for computing binary diffusion coefficients. More... | |
FuelCellShop::Material::PureGas * | solvent_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< VariableNames > | derivative_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 ¶m) |
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 ¶m) |
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 _mapFactory * | get_mapFactory () |
Return the map library that stores all childrens of this class. More... | |
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.
FuelCellShop::Layer::ConventionalCL< dim >::ConventionalCL | ( | ) |
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.
|
virtual |
Destructor.
|
protected |
Constructor.
|
protected |
Compute the active area of catalyst in the layer by the specified method.
There are three methods to compute the active area, namely
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. , 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
where is the input parameter "Platinum loading per unit volume (mg/cm3)".
The functions to obtain are
1) Marr
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
and is a curve-fit to ETEK catalyst data reported previous to 2006.
3) ETEK07
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.
|
protected |
Compute porosity and volume fraction of solid and ionomer in the catalyst layer.
|
protectedvirtual |
Declare parameters for a parameter file.
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 >.
|
inlineprotected |
Inline function to compute
.
|
inlineprotected |
Inline function to compute
.
|
inlineprotected |
Inline function to compute
.
|
inlineprotected |
Inline function to compute
.
|
virtual |
Compute the derivative of 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 >.
|
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 >.
|
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.
Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.
|
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 >.
|
protected |
Compute the derivative of the effective proton conductivity w.r.t.
the electrolyte loading.
|
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 >.
|
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 >.
|
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 >.
|
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 >.
|
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 >.
|
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 >.
|
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 >.
|
virtual |
Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.
|
virtual |
Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.
|
virtual |
Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.
|
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.
|
virtual |
Compute , at all quadrature points in the CL.
Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.
|
virtual |
Compute the effective electron conductivity in the CL.
Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.
|
virtual |
Compute the effective electron conductivity in the CL as an anisotropic tensor.
Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.
|
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 >.
|
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.
Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.
|
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.
Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.
|
virtual |
Compute the effective proton conductivity in the CL.
Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.
|
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 >.
|
virtual |
Compute the effective thermal conductivity of catalyst layer.
Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.
|
virtual |
Compute the effective thermal conductivity as a Tensor at all quadrature points.
Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.
|
virtual |
Compute the effective thermo-osmotic diffusivity of lambda (sorbed water), at all quadrature points in the CL.
Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.
|
virtual |
Compute the effective water diffusivity (lambda diffusivity) in the CL.
Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.
|
virtual |
Compute the effective water diffusivity (lambda diffusivity) at all quadrature points in the CL.
Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.
|
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 >.
|
inlinevirtual |
Return loadings.
V_Pt | = Pt loading in ug/cm3 |
loading_N | = ionomer loading wt |
IC_ratio | = I/C ratio |
prc_Pt | = Pt/C ratio |
Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.
|
inlineprotected |
Get the effective transport method in the electrolyte.
|
inlineprotected |
Get the effective transport method in the pores.
|
inlineprotected |
Get the effective transport method in the solid phase.
|
inline |
Return the platinum loading per cm3 catalyst layer.
|
inlinevirtual |
Get the volume fractions in the catalyst layer.
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::CatalystLayer< dim >.
Reimplemented in FuelCellShop::Layer::MultiScaleCL< dim >, FuelCellShop::Layer::MultiScaleCL< deal_II_dimension >, and FuelCellShop::Layer::HomogeneousCL< dim >.
|
virtual |
Compute the liquid-gas interfacial surface area per unit volume, , at all quadrature points in the CL.
Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.
|
virtual |
Compute the liquid-gas interfacial surface area per unit volume, , at all quadrature points in the CL.
Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.
|
virtual |
Compute the anisotropic CL liquid permeability , at all quadrature points in the cell.
Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.
|
virtual |
Compute , at all quadrature points in the cell.
Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.
|
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 >.
|
virtual |
Compute the anisotropic CL liquid permeability , at all quadrature points in the cell.
Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.
|
virtual |
Compute the anisotropic CL liquid permeability , at all quadrature points in the cell.
Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.
|
virtual |
Reimplemented from FuelCellShop::Layer::CatalystLayer< dim >.
|
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().
|
protected |
Absolute permeability [cm^2] of the layer.
Using unsigned int specifying the material id for the specific CL
|
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().
|
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
|
protected |
Electrolyte network constant.
|
protected |
Electrolyte network threshold.
|
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().
|
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().
|
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().
|
protected |
Volume fraction of water in the cathode catalyst layer.
Using unsigned int specifying the material id for the specific CL
|
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
|
protected |
Thermal Conductivity of the layer.
Using unsigned int specifying the material id for the specific CL
|
protected |
Layer thickness or thicknesses.
Using unsigned int specifying the material id
|
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)
|
protected |
Platinum loading at the catalyst layer per unit area.
Using unsigned int specifying the material id for the specific CL
|
protected |
Method to compute active area.
|
protected |
Method used to compute capillary pressure as a function of saturation.
|
protected |
Method used to compute effective properties – Type of network.
|
protected |
Method used to compute effective properties – Type of network.
|
protected |
Method used to compute effective properties – Type of network.
|
protected |
Method used to compute effective thermal conductivity in the catalyst layer.
|
protected |
Method to compute porosity.
|
protected |
Method used to compute the relative liquid permeability.
|
protected |
|
protected |
Porous network constant.
|
protected |
Porous network threshold.
|
protected |
Percentage (mass fraction) of electrolyte in the catalyst layer.
Each CL is specified using unsigned int for the material id.
|
protected |
Percentage of platinum per carbon on the catalyst layer.
Using unsigned int specifying the material id for the specific CL
|
protected |
Density of support material.
|
protected |
Density of electrolyte.
|
protected |
Density of platinum.
|
protected |
Irreducible liquid water saturation value in the MPL.
|
protected |
Solid phase network constant.
|
protected |
Solid phase network threshold.
|
protected |
Platinum loading at the catalyst layer per unit volume.
Using unsigned int specifying the material id for the specific CL