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.
 
 DesignFibrousGDL (const std::string &name)
 
 ~DesignFibrousGDL ()
 Destructor.
 
void declare_parameters (ParameterHandler &param) const
 Declare parameters for a parameter file.
 
virtual void set_parameters (const std::vector< std::string > &name_dvar, const std::vector< double > &value_dvar, ParameterHandler &param) const
 Member function used to set new parameters values in the optimization loop.
 
virtual void initialize (ParameterHandler &param)
 Member function used to read in data and initialize the necessary data to compute the coefficients.
 
Effective properties
virtual void effective_gas_diffusivity (const double &prop, double &prop_eff) const
 Compute effective diffusivity of the media.
 
virtual void effective_gas_diffusivity (const double &prop, Tensor< 2, dim > &prop_eff) const
 Compute effective diffusivity of the media.
 
virtual void effective_gas_diffusivity (Table< 2, Tensor< 2, dim > > &D_eff) const
 Compute effective diffusivity of the media.
 
virtual void effective_electron_conductivity (double &) const
 Compute the electrical conductivity of the media.
 
virtual void effective_electron_conductivity (Tensor< 2, dim > &) const
 Compute the electrical conductivity of the media.
 
- 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.
 
const std::type_info & get_base_type () const
 This member function returns a type_info object with the name of the base layer type the inherited class belongs to, i.e.
 
virtual void test_class () const
 Class test.
 
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.
 
virtual void derivative_effective_gas_diffusivity (std::vector< Table< 2, Tensor< 2, dim > > > &) const
 Return the derivative of the effective gas diffusion in the GDL with respect to either the solution or design parameters for all the gases assigned to the layer using set_gases_and_compute.
 
virtual void effective_electron_conductivity (const double &, double &) const
 Compute the effective electron conductivity in the GDL.
 
virtual void effective_electron_conductivity (const double &, Tensor< 2, dim > &) const
 Compute the effective electron conductivity in the GDL.
 
virtual void derivative_effective_electron_conductivity (std::vector< Tensor< 2, dim > > &) const
 Compute the derivative of the effective electron conductivity in the GDL with respect to either the solution or design parameters.
 
virtual void gas_permeablity (double &) const
 Compute the GDL gas permeability.
 
virtual void gas_permeablity (Tensor< 2, dim > &) const
 Compute the GDL gas permeability.
 
virtual void derivative_gas_permeablity (std::vector< Tensor< 2, dim > > &) const
 Compute the derivative of the effective gas permeability in the GDL with respect to either the solution or design parameters.
 
virtual void liquid_permeablity (double &) const
 Compute the GDL liquid permeability.
 
virtual void liquid_permeablity (Tensor< 2, dim > &) const
 Compute the GDL liquid permeability.
 
virtual void derivative_liquid_permeablity (std::vector< Tensor< 2, dim > > &) const
 Compute the derivative of the effective gas diffusion in the GDL with respect to either the solution or design parameters.
 
- Public Member Functions inherited from FuelCellShop::Layer::PorousLayer< dim >
void set_gases_and_compute (std::vector< FuelCellShop::Material::PureGas * > &gases_in, const double &pressure_in, const double &temperature_in)
 Member function used to store all the gases that are in the pore space in the gas diffusion layer as well as their temperature [Kelvin] and total pressure [atm].
 
void compute_gas_diffusion (FuelCellShop::Material::PureGas *solute_gas, FuelCellShop::Material::PureGas *solvent_gas)
 Member function used to compute bulk diffusion coefficients and derivatives w.r.t temperature for non-isothermal case and store inside the layer.
 
void set_gases (std::vector< FuelCellShop::Material::PureGas * > &gases_in, const double &pressure_in)
 Member function used to store all the gases that are in the pore space in the porous layer.
 
void set_temperature (const SolutionVariable &T_in)
 Member function used to set the temperature ]Kelvin] at every quadrature point inside the cell.
 
FuelCellShop::Material::PureGasget_gas_pointer (int index) const
 Return the FuelCellShop::Material::PureGas pointer that is stored inside the class in the ith position.
 
std::vector
< FuelCellShop::Material::PureGas * > 
get_gases () const
 Returns the vector of FuelCellShop::Material::PureGas pointers stored in the porous layer.
 
void get_gas_index (FuelCellShop::Material::PureGas *gas_type, int &index) const
 Return the gas index in the GDL class.
 
void get_T_and_p (double &T, double &p) const
 Return the constant temperature [Kelvin] and constant pressure [atm] inside the layer.
 
void get_p (double &p) const
 Return the constant pressure [atm] inside the layer.
 
virtual void print_layer_properties () const
 This member function is a virtual class that can be used to output to screen information from the layer.
 
virtual bool test_layer () const
 This virtual class should be used for any derived class to be able to test the functionality of the class.
 
- Public Member Functions inherited from FuelCellShop::Layer::BaseLayer< dim >
virtual void set_derivative_flags (const std::vector< VariableNames > &flags)
 Set the variables for which you would like to compute the derivatives.
 
void set_position (std::vector< Point< dim > > &p)
 Member function used by some applications such as dummyGDL in order to know which value to return.
 
virtual void set_constant_solution (const double &value, const VariableNames &name)
 Set those solution variables which are constant in the particular application.
 
virtual void set_solution (const std::vector< SolutionVariable > &)
 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.
 
bool belongs_to_material (const char material_id)
 Check if a given cell belongs to the catalyst layer.
 
const std::string & name_material ()
 Return the name of the layer.
 
virtual bool test_layer ()
 This virtual class should be used for any derived class to be able to test the functionality of the class.
 
unsigned int get_material_id ()
 Return the material id of the layer.
 

Static Public Attributes

static const std::string concrete_name
 Concrete name used for objects of this class.
 
- Static Public Attributes inherited from FuelCellShop::Layer::GasDiffusionLayer< dim >
static const std::string concrete_name
 Concrete name used for objects of this class.
 

Private Member Functions

Constructors, destructor, and initalization
virtual void declare_parameters (const std::string &name, ParameterHandler &param) const
 Declare parameters for a parameter file.
 
virtual void set_parameters (const std::vector< std::string > &name_dvar, const std::vector< double > &value_dvar, const std::string &name, ParameterHandler &param) const
 Member function used to set new parameters values in the optimization loop.
 
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.
 

Private Attributes

Internal variables
double porosity
 Porosity of the GDL.
 
double solid_phase
 Volume fraction of solid phase, i.e.
 
std::string method_eff_property_pores
 Method used to compute the effective properties in the pores.
 
std::string method_eff_property_solid
 Method used to compute the effective properties in the solid.
 
std::vector< double > sigma_e
 Electrical conductivity "bulk" solid material.
 
bool anisotropy
 Anisotropy ?
 
std::vector< double > porosity_th
 Anisotropic properties.
 
std::vector< double > porosity_mu
 Network constant.
 
std::vector< double > porosity_gamma
 Network constant gamma.
 
std::vector< double > solid_th
 Solid network of the GDL threshold.
 
std::vector< double > solid_mu
 Solid network constant.
 

Static Private Attributes

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

Additional Inherited Members

- Static Public Member Functions inherited from FuelCellShop::Layer::GasDiffusionLayer< dim >
static void declare_GasDiffusionLayer_parameters (const std::string &gld_section_name, ParameterHandler &param)
 Function used to declare all the data necessary in the parameter files for all GasDiffusionLayer children.
 
static void set_GasDiffusionLayer_parameters (const std::vector< std::string > &name_dvar, const std::vector< double > &value_dvar, std::string gld_section_name, ParameterHandler &param)
 
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.
 
- 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.
 
- Protected Member Functions inherited from FuelCellShop::Layer::GasDiffusionLayer< dim >
 GasDiffusionLayer ()
 Replica Constructors.
 
 ~GasDiffusionLayer ()
 Destructor.
 
 GasDiffusionLayer (const std::string &name)
 Constructor.
 
void declare_parameters (ParameterHandler &param) const
 Declare parameters for a parameter file.
 
void initialize (ParameterHandler &param)
 Member function used to read in data and initialize the necessary data to compute the coefficients.
 
- 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.
 
double porosity
 Porosity of the GDL.
 
Tensor< 2, dimtortuosity_tensor
 Tortuosity tensor of the GDL.
 
double electron_conductivity
 Double storing the electric conductivity of the GDL is the layer is isotropic.
 
Tensor< 2, dimelectron_conductivity_tensor
 Tensor storing the effective electronic conductivity of the layer.
 

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)
Note
Eventually, I would like to make this private.
Deprecated:
Use create_GasDiffusionLayer
template<int dim>
FuelCellShop::Layer::DesignFibrousGDL< dim >::~DesignFibrousGDL ( )
inline

Destructor.

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>
void FuelCellShop::Layer::DesignFibrousGDL< dim >::declare_parameters ( ParameterHandler &  param) const
inlinevirtual

Declare parameters for a parameter file.

Deprecated:
Use declare_all_GasDiffusionLayer_parameters

Reimplemented from FuelCellShop::Layer::PorousLayer< 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.3) 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 = 16.03 # [S/cm]
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 = 272.78 # [S/cm]
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 >::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 &  prop,
double &  prop_eff 
) const
virtual

Compute effective diffusivity of the media.

Deprecated:

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

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

Compute effective diffusivity of the media.

Deprecated:

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 >::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 >::set_parameters ( const std::vector< std::string > &  name_dvar,
const std::vector< double > &  value_dvar,
ParameterHandler &  param 
) const
inlinevirtual

Member function used to set new parameters values in the optimization loop.

Deprecated:
Use set_all_GasDiffusionLayer_parameters
template<int dim>
virtual void FuelCellShop::Layer::DesignFibrousGDL< dim >::set_parameters ( const std::vector< std::string > &  name_dvar,
const std::vector< double > &  value_dvar,
const std::string &  name,
ParameterHandler &  param 
) const
inlineprivatevirtual

Member function used to set new parameters values in the optimization loop.

Deprecated:
Use set_all_GasDiffusionLayer_parameters

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

Member Data Documentation

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

Anisotropy ?

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

Anisotropic properties.

Porosity of the GDL threshold

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

Prototype declaration.

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

Electrical conductivity "bulk" 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: