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

This class defines a GDL made of fibres. More...

#include <design_fibrous_GDL.h>

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

Public Member Functions

Destructor, and initalization
 DesignFibrousGDL ()
 Replica Constructors. More...
 
virtual void initialize (ParameterHandler &param)
 Member function used to read in data and initialize the necessary data to compute the coefficients. More...
 
Effective properties
virtual void effective_gas_diffusivity (const double &, const double &, double &) const
 Compute the effective property in the pores of the GDL. More...
 
virtual void effective_gas_diffusivity (const double &, const double &, Tensor< 2, dim > &) const
 Compute the effective property in the pores of the GDL. 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 GDL. 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 GDL. More...
 
virtual void effective_gas_diffusivity (Table< 2, Tensor< 2, dim > > &D_eff) const
 Compute effective diffusivity of the media. More...
 
virtual void effective_electron_conductivity (double &) const
 Compute the electrical conductivity of the media. More...
 
virtual void effective_electron_conductivity (Tensor< 2, dim > &) const
 Compute the electrical conductivity of the media. More...
 
virtual void effective_thermal_conductivity (std::vector< Tensor< 2, dim > > &) const
 Compute effective thermal conductivity of the media as a function of Temperature. More...
 
virtual void derivative_effective_thermal_conductivity (std::vector< Tensor< 2, dim > > &) const
 Compute derivative of thermal conductivity with respect to variables set by set_derivative_flags. More...
 
virtual void liquid_permeablity (std::vector< Tensor< 2, dim > > &) const
 Compute the anisotropic GDL 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 GDL 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 derivative of the anisotropic liquid permeability in the GDL with respect to either the solution or design parameters, 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 GDL. 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 GDL, 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 GDL. 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 GDL. 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::GasDiffusionLayer< dim >
virtual void set_diffusion_species_name (std::string &name)
 Member function used by some applications such as dummyGDL in order to know which value to return. 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 test_class () const
 Class test. 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 effective_electron_conductivity (const double &, double &) const
 Compute the effective electron conductivity in the GDL. More...
 
virtual void effective_electron_conductivity (const double &, Tensor< 2, dim > &) const
 Compute the effective electron conductivity in the GDL. 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 (double &) const
 Compute the effective thermal conductivity (isotropic) in the GDL. More...
 
virtual void effective_thermal_conductivity (Tensor< 2, dim > &) const
 Compute the effective thermal conductivity (anisotropic) in the GDL. More...
 
virtual void gas_permeablity (double &) const
 Compute the GDL gas permeability. More...
 
virtual void gas_permeablity (Tensor< 2, dim > &) const
 Compute the GDL gas permeability. 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...
 
- 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 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...
 
virtual void print_layer_properties () const
 This member function is a virtual class that can be used to output to screen information from the layer. More...
 
- Public Member Functions inherited from FuelCellShop::Layer::BaseLayer< dim >
virtual void set_derivative_flags (const std::vector< VariableNames > &flags)
 Set the variables for which you would like to compute the derivatives. More...
 
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...
 
virtual void set_local_material_id (const unsigned int &id)
 Function for setting local material id, for unit testing purposes. 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...
 
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 > &)
 If the effective properties in the layer depend on the solution, the solution for a given cell should be passed to the class using this member function. 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
 Concrete name used for objects of this class. More...
 
- Static Public Attributes inherited from FuelCellShop::Layer::GasDiffusionLayer< dim >
static const std::string concrete_name
 Concrete name used for objects of this class. More...
 

Private Member Functions

Constructors, destructor, and initalization
 DesignFibrousGDL (const std::string &name)
 DesignFibrousGDL constructor. More...
 
virtual void declare_parameters (const std::string &name, ParameterHandler &param) const
 Declare parameters for a parameter file. More...
 
Instance delivery function
virtual boost::shared_ptr
< FuelCellShop::Layer::GasDiffusionLayer
< dim > > 
create_replica (const std::string &name)
 This member function is used to create an object of type gas diffusion layer. More...
 

Private Attributes

Internal variables
double porosity
 Porosity of the GDL. More...
 
double solid_phase
 Volume fraction of solid phase, i.e. More...
 
std::string method_eff_property_pores
 Method used to compute the effective properties in the pores. More...
 
std::string method_eff_property_solid
 Method used to compute the effective properties in the solid. More...
 
std::string method_eff_property_thermal
 Method used to compute the effective thermal properties. More...
 
std::string method_rel_liquid_permeability
 Method used to compute the relative liquid permeability. More...
 
double s_irr
 Irreducible liquid water saturation value in the GDL. More...
 
bool anisotropy
 Boolean flag corresponding to anisotropy. More...
 
std::vector< double > porosity_th
 Porosity of the GDL threshold. More...
 
std::vector< double > porosity_mu
 Network constant. More...
 
std::vector< double > porosity_gamma
 Network constant gamma. More...
 
std::vector< double > solid_th
 Solid network of the GDL threshold. More...
 
std::vector< double > solid_mu
 Solid network constant. More...
 
std::vector< double > sigma_e
 "Bulk" electrical conductivity [S/cm] of the solid material. More...
 
std::vector< double > k_thermal
 "Given" thermal conductivity [W/(cm-K)] of the layer. More...
 
std::vector< 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...
 
double compaction_pressure
 GDL Compaction pressure, $ C ~\left[ MPa \right] $. More...
 
double PTFE_loading
 PTFE loading (% wt) in the GDL. More...
 
double kumbur_factor
 Factor calculated based on Kumbur et al (2007), to be used in capillary pressure computation, given as: $ 2^{0.4 C} ~ \sqrt{ \frac{\epsilon_c}{\kappa} } $. More...
 

Static Private Attributes

Instance delivery object
static DesignFibrousGDL< dim >
const * 
PROTOTYPE
 Prototype declaration. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from FuelCellShop::Layer::GasDiffusionLayer< dim >
static void declare_GasDiffusionLayer_parameters (const std::string &gdl_section_name, ParameterHandler &param)
 Function used to declare all the data necessary in the parameter files for all GasDiffusionLayer children. More...
 
static boost::shared_ptr
< FuelCellShop::Layer::GasDiffusionLayer
< dim > > 
create_GasDiffusionLayer (const std::string &gld_section_name, ParameterHandler &param)
 Function used to select the appropriate GasDiffusionLayer type as specified in the ParameterHandler under line. More...
 
- Protected Types inherited from FuelCellShop::Layer::GasDiffusionLayer< dim >
typedef std::map< std::string,
GasDiffusionLayer< dim > * > 
_mapFactory
 This object is used to store all objects of type GasDiffusionLayer. More...
 
- Protected Member Functions inherited from FuelCellShop::Layer::GasDiffusionLayer< dim >
 GasDiffusionLayer ()
 Replica Constructors. More...
 
 ~GasDiffusionLayer ()
 Destructor. More...
 
 GasDiffusionLayer (const std::string &name)
 Constructor. More...
 
void declare_parameters (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::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...
 
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...
 
- Static Protected Member Functions inherited from FuelCellShop::Layer::GasDiffusionLayer< dim >
static _mapFactoryget_mapFactory ()
 
- Protected Attributes inherited from FuelCellShop::Layer::GasDiffusionLayer< dim >
std::string diffusion_species_name
 If GDL properties are stored inside the class (e.g. More...
 
std::string PSD_type
 PSD class type from input file. More...
 
double porosity
 Porosity of the GDL. More...
 
Tensor< 2, dimtortuosity_tensor
 Tortuosity tensor of the GDL. More...
 
Tensor< 2, dimthermal_conductivity_tensor
 Tensor storing the effective thermal conductivity of the layer. More...
 
double electron_conductivity
 Double storing the electric conductivity of the GDL is the layer is isotropic. More...
 
Tensor< 2, dimelectron_conductivity_tensor
 Tensor storing the effective electronic conductivity of the 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...
 

Detailed Description

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

This class defines a GDL made of fibres.

Due to this, the conductivity in the X and Y direction is extremely anisotropic since the contact resistance is very high. Given this situation, I decided to use a different value for the bulk resistance in the X and Y direction.

Author
M. Secanell and M. Bhaiya

Constructor & Destructor Documentation

Replica Constructors.

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>
FuelCellShop::Layer::DesignFibrousGDL< dim >::DesignFibrousGDL ( const std::string &  name)
private

DesignFibrousGDL constructor.

This member function is used in create_replica to create a class.

Member Function Documentation

template<int dim>
virtual boost::shared_ptr<FuelCellShop::Layer::GasDiffusionLayer<dim> > FuelCellShop::Layer::DesignFibrousGDL< dim >::create_replica ( const std::string &  name)
inlineprivatevirtual

This member function is used to create an object of type gas diffusion layer.

Warning
This class MUST be redeclared in every child.

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

template<int dim>
virtual void FuelCellShop::Layer::DesignFibrousGDL< dim >::declare_parameters ( const std::string &  name,
ParameterHandler &  param 
) const
privatevirtual

Declare parameters for a parameter file.

The parameters that need to be declared are The parameters that need to be declared are

  • Porosity (default : 0.6) Represents *the porosity in the GDL
  • Method effective transport properties in pores (default: Bruggemann) Other options "Given|Bruggemann|Percolation|Mezedur"
  • Method effective transport properties in solid (default: Bruggemann) Other options "Given|Bruggemann|Percolation|Mezedur"
  • Electrical conductivity X
  • Electrical conductivity Y
  • Electrical conductivity Z

An example input file would look as follows:

* subsection Cathode gas diffusion layer
* set Material id = 2
* set Gas diffusion layer type = DesignFibrousGDL
* subsection DesignFibrousGDL
* ######### Composition: #########
* set Porosity = 0.6
* ######### Gas transport #########
* ## Anisotropy
* set Anisotropic transport = true # (default) false
* set Method effective transport properties in pores = Tomadakis # (default) Bruggemann | Given | Percolation | Tomadakis | Mezedur
* set Method effective transport properties in solid = Percolation # (default) Bruggemann | Given | Percolation
* ## XX
* set Porosity threshold X = 0.11 # (default) 0.12 | 0.118 (Peter's Thesis) | 0.11
* set Porosity network constant X = 0.785 # (default) 2.0 |0.785 (Peter's Thesis) [Page 69]
* set Porosity gamma network constant X = 0.0 # (default) 0.0 |
* #
* set Electrical conductivity X [S/cm] = 16.03
* set Solid network threshold X = 0.0 # (default) 0.12 |
* set Solid network constant X = 1.5 # (default) 2.0 |
* ## YY
* set Porosity threshold Y = 0.11 # (default) 0.12 | 0.118 (Peter's Thesis) | 0.11
* set Porosity network constant Y = 0.521 # (default) 2.0 |
* set Porosity gamma network constant Y = 0.0 # (default) 0.0 |
* #
* set Electrical conductivity Y [S/cm] = 272.78
* set Solid network threshold Y = 0.0 # (default) 0.12 |
* set Solid network constant Y = 1.0 # (default) 2.0 |
* end
* end
*

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

template<int dim>
virtual void FuelCellShop::Layer::DesignFibrousGDL< 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 GDL, 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::GasDiffusionLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::DesignFibrousGDL< 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 GDL.

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 GDL 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::GasDiffusionLayer< dim >.

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

Compute derivative of thermal conductivity with respect to variables set by set_derivative_flags.

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

template<int dim>
virtual void FuelCellShop::Layer::DesignFibrousGDL< 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 GDL.

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

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

template<int dim>
virtual void FuelCellShop::Layer::DesignFibrousGDL< 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::GasDiffusionLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::DesignFibrousGDL< 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::GasDiffusionLayer< dim >.

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

Compute the derivative of the anisotropic liquid permeability in the GDL 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::GasDiffusionLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::DesignFibrousGDL< dim >::derivative_relative_liquid_permeablity_PSD ( std::vector< double > &  ) const
virtual
template<int dim>
virtual void FuelCellShop::Layer::DesignFibrousGDL< dim >::derivative_relative_liquid_permeablity_PSD ( std::map< VariableNames, std::vector< Tensor< 2, dim > > > &  ) const
virtual
template<int dim>
virtual void FuelCellShop::Layer::DesignFibrousGDL< dim >::derivative_saturation_from_capillary_equation_PSD ( std::vector< double > &  ) const
virtual
template<int dim>
virtual void FuelCellShop::Layer::DesignFibrousGDL< 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 GDL.

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

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

Compute the electrical conductivity of the media.

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

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

Compute the electrical conductivity of the media.

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

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

Compute the effective property in the pores of the GDL.

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::GasDiffusionLayer< dim >.

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

Compute the effective property in the pores of the GDL.

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 can be used either in the isotropic or anisotripic case

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

template<int dim>
virtual void FuelCellShop::Layer::DesignFibrousGDL< 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 GDL.

It takes bulk diffusivity, computed using compute_gas_diffusion method and transforms it into an effective property, taking into account the porosity, saturation and GDL 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::GasDiffusionLayer< dim >.

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

Compute effective diffusivity of the media.

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

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

Compute effective thermal conductivity of the media as a function of Temperature.

(Anisotropic values) or return anisotropic Tensor of GIVEN values set using parameter file. Ref: N. Zamel, E. Litovsky, X. Li, and J. Kleiman. Measurement of the through-plane thermal conductivity of carbon paper diffusion media for the temperature range from -50 to 120 c. International Journal of Hydrogen Energy, 36(19):12618-12625, 2011. It return vector of Tensor for thermal conductivity (anisotropic). NOTE: Before using Zamel method, temperature values need to be set in the layer.

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

template<int dim>
virtual void FuelCellShop::Layer::DesignFibrousGDL< dim >::initialize ( ParameterHandler &  param)
virtual

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

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

template<int dim>
virtual void FuelCellShop::Layer::DesignFibrousGDL< 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 GDL.

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

template<int dim>
virtual void FuelCellShop::Layer::DesignFibrousGDL< 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::GasDiffusionLayer< dim >.

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

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

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

template<int dim>
virtual void FuelCellShop::Layer::DesignFibrousGDL< 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::GasDiffusionLayer< dim >.

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

Compute the derivative of the anisotropic liquid permeability in the GDL 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::GasDiffusionLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::DesignFibrousGDL< 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::GasDiffusionLayer< dim >.

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

Member Data Documentation

template<int dim>
std::vector<double> FuelCellShop::Layer::DesignFibrousGDL< dim >::abs_permeability
private

Absolute permeability [cm^2] of the layer.

template<int dim>
bool FuelCellShop::Layer::DesignFibrousGDL< dim >::anisotropy
private

Boolean flag corresponding to anisotropy.

template<int dim>
double FuelCellShop::Layer::DesignFibrousGDL< dim >::compaction_pressure
private

GDL Compaction pressure, $ C ~\left[ MPa \right] $.

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

Concrete name used for objects of this class.

This name is used when setting up the subsection where the data is stored in the input file.

The data will be store under

* subsection name_specified_in_constructor
* set Material id = 2
* set Gas diffusion layer type = DummyGDL # <-here I select the type of object of type GasDiffusionLayer
* subsection DummyGDL # <- this is the concrete_name for this class
* set all info relevant to this object
* end
* end
*
template<int dim>
std::vector<double> FuelCellShop::Layer::DesignFibrousGDL< dim >::k_thermal
private

"Given" thermal conductivity [W/(cm-K)] of the layer.

template<int dim>
double FuelCellShop::Layer::DesignFibrousGDL< dim >::kumbur_factor
private

Factor calculated based on Kumbur et al (2007), to be used in capillary pressure computation, given as: $ 2^{0.4 C} ~ \sqrt{ \frac{\epsilon_c}{\kappa} } $.

template<int dim>
std::string FuelCellShop::Layer::DesignFibrousGDL< dim >::method_capillary_function
private

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

template<int dim>
std::string FuelCellShop::Layer::DesignFibrousGDL< dim >::method_eff_property_pores
private

Method used to compute the effective properties in the pores.

template<int dim>
std::string FuelCellShop::Layer::DesignFibrousGDL< dim >::method_eff_property_solid
private

Method used to compute the effective properties in the solid.

template<int dim>
std::string FuelCellShop::Layer::DesignFibrousGDL< dim >::method_eff_property_thermal
private

Method used to compute the effective thermal properties.

template<int dim>
std::string FuelCellShop::Layer::DesignFibrousGDL< dim >::method_rel_liquid_permeability
private

Method used to compute the relative liquid permeability.

template<int dim>
double FuelCellShop::Layer::DesignFibrousGDL< dim >::porosity
private

Porosity of the GDL.

template<int dim>
std::vector<double> FuelCellShop::Layer::DesignFibrousGDL< dim >::porosity_gamma
private

Network constant gamma.

template<int dim>
std::vector<double> FuelCellShop::Layer::DesignFibrousGDL< dim >::porosity_mu
private

Network constant.

template<int dim>
std::vector<double> FuelCellShop::Layer::DesignFibrousGDL< dim >::porosity_th
private

Porosity of the GDL threshold.

template<int dim>
DesignFibrousGDL<dim> const* FuelCellShop::Layer::DesignFibrousGDL< dim >::PROTOTYPE
staticprivate

Prototype declaration.

template<int dim>
double FuelCellShop::Layer::DesignFibrousGDL< dim >::PTFE_loading
private

PTFE loading (% wt) in the GDL.

template<int dim>
double FuelCellShop::Layer::DesignFibrousGDL< dim >::s_irr
private

Irreducible liquid water saturation value in the GDL.

template<int dim>
std::vector<double> FuelCellShop::Layer::DesignFibrousGDL< dim >::sigma_e
private

"Bulk" electrical conductivity [S/cm] of the solid material.

template<int dim>
std::vector<double> FuelCellShop::Layer::DesignFibrousGDL< dim >::solid_mu
private

Solid network constant.

template<int dim>
double FuelCellShop::Layer::DesignFibrousGDL< dim >::solid_phase
private

Volume fraction of solid phase, i.e.

solid

template<int dim>
std::vector<double> FuelCellShop::Layer::DesignFibrousGDL< dim >::solid_th
private

Solid network of the GDL threshold.


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