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

This function generates a PEMFC grid including a membrane, gas diffusion, microporous, and catalyst layers. More...

#include <geometries.h>

Inheritance diagram for FuelCellShop::Geometry::PemfcMPL< dim >:
Inheritance graph
[legend]
Collaboration diagram for FuelCellShop::Geometry::PemfcMPL< dim >:
Collaboration graph
[legend]

Public Member Functions

 PemfcMPL ()
 PROTOTYPE constructor. More...
 
virtual void generate_grid (Triangulation< dim > &triangulation)
 This function generates a full PEMFC grid including gas diffusion, microporous and catalyst layers. More...
 
- Public Member Functions inherited from FuelCellShop::Geometry::GridBase< dim >
void generate_grid_with_curved_boundaries (Triangulation< dim > &triangulation, const types::boundary_id &bdry_id, boost::shared_ptr< Boundary< dim > > boundary) const
 This function is like the previous one generate_grid() but allows to assign a curved boundary boundary to that with the boundary id bdry_id. More...
 
std::vector< unsigned int > get_material_id (const std::string) const
 Return a vector with all material ids associated with string. More...
 
unsigned int get_boundary_id (ParameterHandler &param, const std::string boundary) const
 Return boundary id. More...
 
unsigned int get_boundary_id (const std::string) const
 Return boundary id. More...
 
void output_grid (const Triangulation< dim > &triangulation, const std::string filename) const
 Output the grid. More...
 
void refine_area (Triangulation< dim > &triangulation, const unsigned int material_id)
 Refine a certain part of the grid depending on material_ID given. More...
 
std::string get_mesh_type ()
 Return the type of mesh that is being used. More...
 
double L_channel_c ()
 Return the Width of the cathode gas channel. More...
 
double L_channelLength_c ()
 Return the Length of the cathode gas channel. More...
 
double L_channelHeight_c ()
 Return the Height of the cathode gas channel. More...
 
double L_channelEntrance_c ()
 Return the Entrance Length of the cathode gas channel. More...
 
double L_channelExit_c ()
 Return the Exit Length of the cathode gas channel. More...
 
double L_land_c ()
 Return the Width of the cathode current collector. More...
 
double L_gdl_c ()
 Return the Thickness of the cathode gas diffusion layer. More...
 
std::vector< double > L_cat_c ()
 Return the thickness of the cathode catalyst layer. More...
 
double L_mpl_c ()
 Return the Thickness of the cathode microporous layer. More...
 
double L_mem ()
 Return the Thickness of the membrane. More...
 
double L_cat_a ()
 Return the Thickness of the anode catalyst layer. More...
 
double L_mpl_a ()
 Return the Thickness of the anode microporous layer. More...
 
double L_gdl_a ()
 Return the Thickness of the anode gas diffusion layer. More...
 
double L_channel_a ()
 Return the Width of the anode gas channel. More...
 
double L_land_a ()
 Return the Width of the anode current collector. More...
 

Static Public Attributes

static const std::string concrete_name
 

Protected Member Functions

 PemfcMPL (const std::string &name)
 Default constructor. More...
 
Instance Delivery (function)
virtual boost::shared_ptr
< FuelCellShop::Geometry::GridBase
< dim > > 
create_replica (const std::string &name)
 This member function is used to create an object of type micro porous layer. More...
 
- Protected Member Functions inherited from FuelCellShop::Geometry::GridBase< dim >
 GridBase ()
 Constructor. More...
 
virtual ~GridBase ()
 Destructor. More...
 
void initialize (ParameterHandler &param)
 
void print_material_id_and_boundary_id (const Triangulation< dim > &triangulation) const
 

Static Protected Attributes

Instance Delivery (Data member)
static PemfcMPL< dim > const * PROTOTYPE
 Create prototype for the layer. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from FuelCellShop::Geometry::GridBase< dim >
static void declare_GridGenerator_parameters (ParameterHandler &param)
 Function used to declare all the data necessary in the parameter files for all GridBase children. More...
 
static boost::shared_ptr
< FuelCellShop::Geometry::GridBase
< dim > > 
create_GridGenerator (ParameterHandler &param)
 Generate the appropriate mesh generator object based on the parameters in the input file. More...
 
- Public Attributes inherited from FuelCellShop::Geometry::GridBase< dim >
bool read_from_file
 
boost::shared_ptr< GridIn< dim > > grid_in
 GridIn class object of dealii which allows to read various types of mesh formats. More...
 
- Protected Types inherited from FuelCellShop::Geometry::GridBase< dim >
typedef std::map< std::string,
GridBase< dim > * > 
_mapFactory
 This object is used to store all objects of type GasDiffusionLayer. More...
 
- Static Protected Member Functions inherited from FuelCellShop::Geometry::GridBase< dim >
static _mapFactoryget_mapFactory ()
 
- Protected Attributes inherited from FuelCellShop::Geometry::GridBase< dim >
std::string mesh_type_name
 Specify if you would like to load a mesh from file or if you would like a module from the mesh generator Options: File | Cathode | Anode | CathodeMPL | Pemfc | PemfcMPL. More...
 
std::string mesh_name
 Name of the mesh file. More...
 
std::string mesh_type
 Specify if it is a UNV file, MSH file, etc. More...
 
unsigned int num_refine
 Initial number of refinements. More...
 
double l_channel_c
 Width of the cathode gas channel. More...
 
double l_channelLength_c
 Length of the cathode gas channel. More...
 
double l_channelHeight_c
 Height of the cathode gas channel. More...
 
double l_channelEntrance_c
 Entrance length of the cathode gas channel. More...
 
double l_channelExit_c
 Exit Length of the cathode gas channel. More...
 
double l_land_c
 Width of the cathode current collector. More...
 
double l_gdl_c
 Thickness of the cathode gas diffusion layer. More...
 
double l_mpl_c
 Thickness of the cathode microporous layer. More...
 
std::vector< double > l_cat_c
 Thickness of the cathode catalyst layer. More...
 
double l_mem
 Thickness of the membrane. More...
 
double l_cat_a
 Thickness of the anode catalyst layer. More...
 
double l_mpl_a
 Thickness of the anode microporous layer. More...
 
double l_gdl_a
 Thickness of the anode gas diffusion layer. More...
 
double l_channel_a
 Width of the anode gas channel. More...
 
double l_land_a
 Width of the anode current collector. More...
 
double l_cube
 Cube edge for HyperCube mesh. More...
 
unsigned int num_vert
 Number of cells tall the initial grid. More...
 
unsigned int num_c_Channel
 Number of cells wide cathode channel. More...
 
unsigned int num_c_GDL
 Number of cells wide cathode gas diffusion layer. More...
 
unsigned int num_c_MPL
 Number of cells wide cathode microporous layer. More...
 
unsigned int num_c_CL
 Number of cells wide cathode catalyst layer. More...
 
unsigned int num_membrane
 Number of cells wide membrane layer. More...
 
unsigned int num_a_CL
 Number of cells wide anode catalyst layer. More...
 
unsigned int num_a_MPL
 Number of cells wide anode microporous layer. More...
 
unsigned int num_a_GDL
 Number of cells wide anode gas diffusion layer. More...
 
unsigned int test_mid
 Material id for test cell (GridTest app) More...
 
unsigned int c_CC_mid
 Material id cathode current collector. More...
 
unsigned int c_GC_mid
 Material id cathode gas channel. More...
 
unsigned int c_GDL_mid
 Material id cathode GDL. More...
 
unsigned int c_MPL_mid
 Material id cathode MPL. More...
 
std::vector< unsigned int > c_CL_mid
 Material id cathode catalyst layer. More...
 
unsigned int membrane_mid
 Material id membrane. More...
 
unsigned int a_CL_mid
 Material id anode catalyst layer. More...
 
unsigned int a_MPL_mid
 Material id anode MPL. More...
 
unsigned int a_GDL_mid
 Material id anode GDL. More...
 
unsigned int a_CC_mid
 Material id anode current collector. More...
 
unsigned int a_GC_mid
 Material id anode gas channel. More...
 
unsigned int c_Ch_Inlet_bid
 Boundary id cathode channel inlet. More...
 
unsigned int c_Ch_Outlet_bid
 Boundary id cathode channel outlet. More...
 
unsigned int c_Ch_base_bid
 Boundary id cathode channel entrance/exit base. More...
 
unsigned int c_Ch_roof_bid
 Boundary id cathode channel entrance/exit roof. More...
 
unsigned int c_Ch_GDL_bid
 Boundary id cathode channel and GDL. More...
 
unsigned int c_BPP_GDL_bid
 Boundary id cathode BPP and GDL. More...
 
unsigned int c_GDL_CL_bid
 Boundary id cathode GDL and CL. More...
 
unsigned int c_CL_Membrane_bid
 Boundary id cathode CL and membrane. More...
 
unsigned int c_GDL_MPL_bid
 Boundary id cathode GDL and MPL. More...
 
unsigned int c_MPL_CL_bid
 Boundary id cathode MPL and CL. More...
 
unsigned int a_Membrane_CL_bid
 Boundary id anode membrane and CL. More...
 
unsigned int a_CL_GDL_bid
 Boundary id anode CL and GDL. More...
 
unsigned int a_GDL_BPP_bid
 Boundary id anode GDL and BPP. More...
 
unsigned int a_GDL_Ch_bid
 Boundary id anode GDL and channel. More...
 
unsigned int a_MPL_GDL_bid
 Boundary id anode GDL and MPL. More...
 
unsigned int a_CL_MPL_bid
 Boundary id anode MPL and CL. More...
 
unsigned int a_Ch_Inlet_bid
 Boundary id cathode channel inlet. More...
 
unsigned int a_Ch_Outlet_bid
 Boundary id cathode channel outlet. More...
 
unsigned int a_Ch_base_bid
 Boundary id cathode channel entrance/exit base. More...
 
unsigned int a_Ch_roof_bid
 Boundary id cathode channel entrance/exit roof. More...
 
double r_agg
 Agglomerate radius. More...
 
double delta_agg
 Electrolyte thin film thickness. More...
 
unsigned int r_agg_mid
 Porous Agglomerate Material ID. More...
 
unsigned int delta_agg_mid
 Electrolyte Thin Film Material ID. More...
 
unsigned int r_delta_bid
 Boundary ID for agglomerate/thin film boundary. More...
 
unsigned int delta_bid
 Boundary ID for thin film external boundary. More...
 
Point< dimcenter
 Centre point of the circular/spherical domain. More...
 

Detailed Description

template<int dim>
class FuelCellShop::Geometry::PemfcMPL< dim >

This function generates a PEMFC grid including a membrane, gas diffusion, microporous, and catalyst layers.

The grid contains all material IDs and boundary IDs and default values are shown below in the generate_grid() function.

If you would like to create a cathode, an anode or an MEA without an MPL, simply set the thickness of the layers you do not want to use to zero. The program will automatically remove that domain from the computational mesh.

Default values:

Material ID:

Constructor & Destructor Documentation

template<int dim>
FuelCellShop::Geometry::PemfcMPL< dim >::PemfcMPL ( )
inline

PROTOTYPE constructor.

Warning
For internal use only. Use create_GridGenerator instead.

References FuelCellShop::Geometry::PemfcMPL< dim >::concrete_name, and FuelCellShop::Geometry::GridBase< dim >::get_mapFactory().

Here is the call graph for this function:

template<int dim>
FuelCellShop::Geometry::PemfcMPL< dim >::PemfcMPL ( const std::string &  name)
inlineprotected

Default constructor.

Member Function Documentation

template<int dim>
virtual boost::shared_ptr<FuelCellShop::Geometry::GridBase<dim> > FuelCellShop::Geometry::PemfcMPL< 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::Geometry::GridBase< dim >.

template<int dim>
virtual void FuelCellShop::Geometry::PemfcMPL< dim >::generate_grid ( Triangulation< dim > &  triangulation)
virtual

This function generates a full PEMFC grid including gas diffusion, microporous and catalyst layers.

The grid contains all material IDs and boundary IDs and default values are shown below Material ID:

  • Cathode GDL 2
  • Cathode MPL 3
  • Cathode CL 4
  • Membrane 5
  • Anode CL 6
  • Anode MPL 7
  • Anode GDL 8

    Boundary ID:

  • Cathode GDL/BPP 1
  • Cathode GDL/Gas Channel 2
  • Cathode GDL/MPL 9
  • Cathode MPL/CL 10
  • Cathode CL/Membrane 4
  • Anode CL/Membrane 5
  • Anode CL/MPL 11
  • Anode MPL/GDL 12
  • Anode GDL/BPP 7
  • Anode GDL/Gas Channel 8
  • Symmetric 0

    Schematic: | | | | | | | |

    BID 2 8
    GDL MPL CL Mem CL MPL GDL

    MID | 2 | 3 | 4 | 5 | 6 | 7 | 8 | | | | | | | | | BID 1 9 10 4 5 11 12 7 | | | | | | | | Cathode Anode

    Lengths:

  • Cathode + Anode GDL 2.0E-2cm
  • Cathode + Anode MPL 2.0E-3cm
  • Cathode + Anode CL 1.0E-3cm
  • Membrane 2.0E-2cm
  • Gas Channel 0.1cm
  • Bipolar Plate Rib 0.1cm

    Cells:

  • 6 cells tall
  • Cathode + Anode GDL 4 cells wide
  • Cathode + Anode MPL 1 cell wide
  • Cathode + Anode CL 1 cell wide
  • Membrane 4 cells wide

    Note: to automatically refine the grid after grid creation set the number of initial refinements parameter

Reimplemented from FuelCellShop::Geometry::GridBase< dim >.

Member Data Documentation

template<int dim>
const std::string FuelCellShop::Geometry::PemfcMPL< dim >::concrete_name
static
template<int dim>
PemfcMPL<dim> const* FuelCellShop::Geometry::PemfcMPL< dim >::PROTOTYPE
staticprotected

Create prototype for the layer.


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