OpenFCST: The open-source Fuel Cell Simulation Toolbox
|
This class defines a GDL made of fibres. More...
#include <design_fibrous_GDL.h>
Public Member Functions | |
Destructor, and initalization | |
DesignFibrousGDL () | |
Replica Constructors. | |
DesignFibrousGDL (const std::string &name) | |
~DesignFibrousGDL () | |
Destructor. | |
void | declare_parameters (ParameterHandler ¶m) 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 ¶m) const |
Member function used to set new parameters values in the optimization loop. | |
virtual void | initialize (ParameterHandler ¶m) |
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::PureGas * | get_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 ¶m) 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 ¶m) 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 ¶m) |
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 ¶m) |
static boost::shared_ptr < FuelCellShop::Layer::GasDiffusionLayer < dim > > | create_GasDiffusionLayer (const std::string &gld_section_name, ParameterHandler ¶m) |
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 ¶m) const |
Declare parameters for a parameter file. | |
void | initialize (ParameterHandler ¶m) |
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 _mapFactory * | get_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, dim > | tortuosity_tensor |
Tortuosity tensor of the GDL. | |
double | electron_conductivity |
Double storing the electric conductivity of the GDL is the layer is isotropic. | |
Tensor< 2, dim > | electron_conductivity_tensor |
Tensor storing the effective electronic conductivity of the layer. | |
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.
FuelCellShop::Layer::DesignFibrousGDL< dim >::DesignFibrousGDL | ( | ) |
Replica Constructors.
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.
FuelCellShop::Layer::DesignFibrousGDL< dim >::DesignFibrousGDL | ( | const std::string & | name | ) |
|
inline |
Destructor.
|
inlineprivatevirtual |
This member function is used to create an object of type gas diffusion layer.
Reimplemented from FuelCellShop::Layer::GasDiffusionLayer< dim >.
|
inlinevirtual |
Declare parameters for a parameter file.
Reimplemented from FuelCellShop::Layer::PorousLayer< dim >.
|
privatevirtual |
Declare parameters for a parameter file.
The parameters that need to be declared are The parameters that need to be declared are
An example input file would look as follows:
Reimplemented from FuelCellShop::Layer::GasDiffusionLayer< dim >.
|
virtual |
Compute the electrical conductivity of the media.
Reimplemented from FuelCellShop::Layer::GasDiffusionLayer< dim >.
|
virtual |
Compute the electrical conductivity of the media.
Reimplemented from FuelCellShop::Layer::GasDiffusionLayer< dim >.
|
virtual |
Compute effective diffusivity of the media.
Reimplemented from FuelCellShop::Layer::GasDiffusionLayer< dim >.
|
virtual |
Compute effective diffusivity of the media.
Reimplemented from FuelCellShop::Layer::GasDiffusionLayer< dim >.
|
virtual |
Compute effective diffusivity of the media.
Reimplemented from FuelCellShop::Layer::GasDiffusionLayer< dim >.
|
virtual |
Member function used to read in data and initialize the necessary data to compute the coefficients.
Reimplemented from FuelCellShop::Layer::PorousLayer< dim >.
|
inlinevirtual |
Member function used to set new parameters values in the optimization loop.
|
inlineprivatevirtual |
Member function used to set new parameters values in the optimization loop.
Reimplemented from FuelCellShop::Layer::GasDiffusionLayer< dim >.
|
private |
Anisotropy ?
|
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
|
private |
Method used to compute the effective properties in the pores.
|
private |
Method used to compute the effective properties in the solid.
|
private |
Porosity of the GDL.
|
private |
Network constant gamma.
|
private |
Network constant.
|
private |
Anisotropic properties.
Porosity of the GDL threshold
|
staticprivate |
Prototype declaration.
|
private |
Electrical conductivity "bulk" solid material.
|
private |
Solid network constant.
|
private |
Volume fraction of solid phase, i.e.
solid
|
private |
Solid network of the GDL threshold.