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

This class defines an MPL where effective transport properties are computed using macro-homogeneous correlations to estimate the effective properties of the media. More...

#include <design_MPL.h>

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

Public Member Functions

Constructors, destructor, and initalization
 DesignMPL (std::string name)
 Constructor.
 
 DesignMPL ()
 Replica Constructor.
 
 ~DesignMPL ()
 Destructor.
 
void declare_parameters (ParameterHandler &param) const
 Declare parameters for a parameter file.
 
void set_parameters (const std::vector< std::string > &name_dvar, const std::vector< double > &value_dvar, ParameterHandler &param)
 Member function used to set new parameters values in the optimization loop.
 
void initialize (ParameterHandler &param)
 Member function used to read in data and initialize the necessary data to compute the coefficients.
 
Effective property calculators
virtual void effective_gas_diffusivity (const double &property, double &effective_property) const
 Compute the effective property in the pores.
 
virtual void effective_gas_diffusivity (const double &property, Tensor< 2, dim > &effective_property) const
 Compute the effective property in the pores.
 
virtual void effective_gas_diffusivity (Table< 2, Tensor< 2, dim > > &D_eff) const
 Compute the effective property in the pores.
 
virtual void effective_electron_conductivity (double &) const
 Compute the effective conductivity.
 
virtual void effective_electron_conductivity (Tensor< 2, dim > &) const
 Compute the effective conductivity.
 
virtual void effective_transport_property_solid (const double &property, double &effective_property) const
 Compute the effective property of a property that is defined by the network of fibres.
 
virtual void effective_transport_property_solid (const Tensor< 2, dim > &property, Tensor< 2, dim > &effective_property) const
 Compute the effective property of a property that is defined by the network of fibres.
 
- Public Member Functions inherited from FuelCellShop::Layer::MicroPorousLayer< dim >
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.
 
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 bool set_method_effective_transport_property_solid (std::string)
 Specify the methodology to be used to compute the effective properties for the porous phase.
 
- 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.
 

Protected Attributes

Internal variables
bool anisotropy
 General properties.
 
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_fibres
 Method used to compute the effective properties in the solid phase.
 
double electrical_conductivity
 Electrical conductivity from the input file.
 
Tensor< 2, dimmatrix_electrical_conductivity
 Electrical conductivity from the input file in the anisotripic case.
 
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 > D_O2
 Oxygen Diffusion coefficient.
 
std::vector< double > D_wv
 Water vapour diffusion coefficient.
 
std::vector< double > fibre_th
 Solid (electron conductive) network of the MPL threshold.
 
std::vector< double > fibre_mu
 Solid (electron conductive) network constant.
 

Declaration

static const std::string concrete_name
 Concrete name used for objects of this class.
 
void declare_parameters (const std::string &mpl_section_name, ParameterHandler &param) const
 Declare parameters for a parameter file.
 
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

static DesignMPL< dim > const * PROTOTYPE
 Prototype declaration.
 
virtual boost::shared_ptr
< FuelCellShop::Layer::MicroPorousLayer
< dim > > 
create_replica (const std::string &name)
 This member function is used to create an object of type micro porous layer.
 

Additional Inherited Members

- Static Public Member Functions inherited from FuelCellShop::Layer::MicroPorousLayer< dim >
static void declare_MicroPorousLayer_parameters (const std::string &mpl_section_name, ParameterHandler &param)
 Function used to declare all the data necessary in the parameter files former all MicroPorousLayer children.
 
static void set_MicroPorousLayer_parameters (const std::vector< std::string > &name_dvar, const std::vector< double > &value_dvar, const std::string &mpl_section_name, ParameterHandler &param)
 This routine is only used for optimization and parameteric studies purposes when using the Dakota Interface.
 
static boost::shared_ptr
< FuelCellShop::Layer::MicroPorousLayer
< dim > > 
create_MicroPorousLayer (const std::string &mpl_section_name, ParameterHandler &param)
 Function used to select the appropriate MicroPorousLayer.
 
- Static Public Attributes inherited from FuelCellShop::Layer::MicroPorousLayer< dim >
static const std::string concrete_name
 Concrete name used for objects of this class.
 
- Protected Types inherited from FuelCellShop::Layer::MicroPorousLayer< dim >
typedef std::map< std::string,
MicroPorousLayer< dim > * > 
_mapFactory
 This object is used to store all objects of type MicroPorousLayer.
 
- Protected Member Functions inherited from FuelCellShop::Layer::MicroPorousLayer< dim >
 MicroPorousLayer ()
 Replica Constructor.
 
 MicroPorousLayer (const std::string &name)
 Constructor.
 
 ~MicroPorousLayer ()
 Destructor.
 
void declare_parameters (const std::string &name, ParameterHandler &param) const
 Declare parameters for a parameter file.
 
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.
 
- Protected Member Functions inherited from FuelCellShop::Layer::PorousLayer< dim >
 PorousLayer (const std::string &name)
 Constructor.
 
 PorousLayer ()
 Constructor.
 
virtual ~PorousLayer ()
 Destructor.
 
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.
 
virtual void gas_diffusion_coefficients (Table< 2, double > &) const
 Return the molecular diffusivty all the gases assigned to the layer using set_gases_and_compute.
 
virtual void derivative_gas_diffusion_coefficients (std::vector< Table< 2, double > > &) const
 Return the derivative of the molecular diffusion coefficient with respect to the derivative flags for all the gases assigned to the layer using set_gases_and_compute.
 
- Static Protected Member Functions inherited from FuelCellShop::Layer::MicroPorousLayer< dim >
static _mapFactoryget_mapFactory ()
 Return the map library that stores all childrens of this class.
 

Detailed Description

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

This class defines an MPL where effective transport properties are computed using macro-homogeneous correlations to estimate the effective properties of the media.

Currently the following macro-homogeneous correlations are implemented for the gas phase:

subsection Fuel cell data
(...)
subsection Cathode microporous layer
set Material id = 3
set Micro porous layer type = DesignMPL
subsection DesignMPL
set Porosity = 0.4 # From experimental data (manufacturer's data) on Sigracel 24BC
set Anisotropic transport = false
######### Pore network #########
set Method effective transport properties in pores = Percolation <- Specify if you would like to use Percolation or Bruggemann
set Porosity threshold = 0.118 <- Specify threshold porosity value
set Porosity network constant = 2.0 <- Specify mu value/
######### Solid network #########
set Method effective transport properties in solid phase = Percolation
set Electric conductivity = 88.84 # From experimental data (manufacturer's data) on Sigracel 24BC
set Solid network threshold = 0.118
set Solid network constant = 2.0
end
end
(...)

If you would like to define an anisotripic media, please set Anisotropic transport = true and then all the properties will have an X, Y and Z at the end of their name, e.g. set Porosity threshold X = 0.118

For the solid phase properties the methods above can also be selected. The properties are set using the same rules.

Todo:
This class should be divided into two classes DummyMPL and DesignMPL. DummyMPL is a class where all effective properties are directly specified in the input file. DesignMPL is the class used to compute the effective properties based on effective porous media approximations.
Author
M. Secanell, 2013

Constructor & Destructor Documentation

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

Constructor.

template<int dim>
FuelCellShop::Layer::DesignMPL< dim >::DesignMPL ( )

Replica Constructor.

template<int dim>
FuelCellShop::Layer::DesignMPL< dim >::~DesignMPL ( )
inline

Destructor.

Member Function Documentation

template<int dim>
virtual boost::shared_ptr<FuelCellShop::Layer::MicroPorousLayer<dim> > FuelCellShop::Layer::DesignMPL< dim >::create_replica ( const std::string &  name)
inlineprotectedvirtual

This member function is used to create an object of type micro porous layer.

Warning
This class MUST be redeclared in every child.

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

template<int dim>
void FuelCellShop::Layer::DesignMPL< dim >::declare_parameters ( ParameterHandler &  param) const
inlinevirtual

Declare parameters for a parameter file.

Deprecated:
Use FuelCellShop::Layer::MicroPorousLayer<dim>::declare_all_MicroPorousLayer_parameters

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

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

Declare parameters for a parameter file.

The parameters that need to be declared are

  • Porosity (default : 0.3) Represents the porosity in t*he GDL
  • Method effective transport properties in pores (default: Bruggemann) Other options "Given|Bruggemann|Percolation|Mezedur"
  • Method effective transport properties in fibres (default: Bruggemann) Other options "Given|Bruggemann|Percolation|Mezedur"

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

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

Compute the effective conductivity.

To compute the effective properties it will use the method specified in set_method_effective_transport_property_solid . This function is used for the isotropic MPL

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

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

Compute the effective conductivity.

To compute the effective properties it will use the method specified in set_method_effective_transport_property_solid . This function is used for the anisotropic MPL.

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

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

Compute the effective property in the pores.

This is used for example to compute effective diffusivity of gases. This routine is used in the isotropic case

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

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

Compute the effective property in the pores.

This is used for example to compute effective diffusivity of gases This routine can be used either in the isotropic or anisotripic case

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

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

Compute the effective property in the pores.

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

Note
The routine FuelCellShop::Layer::PorousLayer< dim >::set_gases_and_compute (std::vector< FuelCellShop::Material::PureGas * > &gases, double pressure, double temperature) (in the parent class) should have been called prior to using this class.

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

template<int dim>
virtual void FuelCellShop::Layer::DesignMPL< dim >::effective_transport_property_solid ( const double &  property,
double &  effective_property 
) const
virtual

Compute the effective property of a property that is defined by the network of fibres.

For example this could be used to compute the effective electron conductivity or heat conduction. NOTE: Isotropic case

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

template<int dim>
virtual void FuelCellShop::Layer::DesignMPL< dim >::effective_transport_property_solid ( const Tensor< 2, dim > &  property,
Tensor< 2, dim > &  effective_property 
) const
virtual

Compute the effective property of a property that is defined by the network of fibres.

For example this could be used to compute the effective electron conductivity or heat conduction. Note: Anisotropic case.

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

template<int dim>
void FuelCellShop::Layer::DesignMPL< 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>
void FuelCellShop::Layer::DesignMPL< dim >::set_parameters ( const std::vector< std::string > &  name_dvar,
const std::vector< double > &  value_dvar,
ParameterHandler &  param 
)
virtual

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

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

template<int dim>
void FuelCellShop::Layer::DesignMPL< dim >::set_parameters ( const std::vector< std::string > &  name_dvar,
const std::vector< double > &  value_dvar,
const std::string &  name,
ParameterHandler &  param 
) const
inlineprotected

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

Member Data Documentation

template<int dim>
bool FuelCellShop::Layer::DesignMPL< dim >::anisotropy
protected

General properties.

Anisotropy ?

template<int dim>
const std::string FuelCellShop::Layer::DesignMPL< 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 Microporous layer type = DummyMPL # <-here I select the type of object of type GasDiffusionLayer
subsection DummyMPL # <- 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::DesignMPL< dim >::D_O2
protected

Oxygen Diffusion coefficient.

template<int dim>
std::vector<double> FuelCellShop::Layer::DesignMPL< dim >::D_wv
protected

Water vapour diffusion coefficient.

template<int dim>
double FuelCellShop::Layer::DesignMPL< dim >::electrical_conductivity
protected

Electrical conductivity from the input file.

template<int dim>
std::vector<double> FuelCellShop::Layer::DesignMPL< dim >::fibre_mu
protected

Solid (electron conductive) network constant.

template<int dim>
std::vector<double> FuelCellShop::Layer::DesignMPL< dim >::fibre_th
protected

Solid (electron conductive) network of the MPL threshold.

template<int dim>
Tensor<2,dim> FuelCellShop::Layer::DesignMPL< dim >::matrix_electrical_conductivity
protected

Electrical conductivity from the input file in the anisotripic case.

template<int dim>
std::string FuelCellShop::Layer::DesignMPL< dim >::method_eff_property_fibres
protected

Method used to compute the effective properties in the solid phase.

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

Method used to compute the effective properties in the pores.

template<int dim>
double FuelCellShop::Layer::DesignMPL< dim >::porosity
protected

Porosity of the GDL.

template<int dim>
std::vector<double> FuelCellShop::Layer::DesignMPL< dim >::porosity_gamma
protected

Network constant gamma.

template<int dim>
std::vector<double> FuelCellShop::Layer::DesignMPL< dim >::porosity_mu
protected

Network constant.

template<int dim>
std::vector<double> FuelCellShop::Layer::DesignMPL< dim >::porosity_th
protected

Anisotropic properties.

Porosity of the GDL threshold

template<int dim>
DesignMPL<dim> const* FuelCellShop::Layer::DesignMPL< dim >::PROTOTYPE
staticprotected

Prototype declaration.

template<int dim>
double FuelCellShop::Layer::DesignMPL< dim >::solid_phase
protected

Volume fraction of solid phase, i.e.

fibres


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