OpenFCST: The open-source Fuel Cell Simulation Toolbox
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
design_fibrous_GDL.h
Go to the documentation of this file.
1 //---------------------------------------------------------------------------
2 //
3 // FCST: Fuel Cell Simulation Toolbox
4 //
5 // Copyright (C) 2006-13 by Energy Systems Design Laboratory, University of Alberta
6 //
7 // This software is distributed under the MIT License.
8 // For more information, see the README file in /doc/LICENSE
9 //
10 // - Class: design_fibrous_GDL.h
11 // - Description: Class used to represent a fibrous GDL where effective properties are computed based on the porosity etc.
12 // - Developers: M. Secanell and Madhur Bhaiya
13 // - $Id: design_fibrous_GDL.h 2605 2014-08-15 03:36:44Z secanell $
14 //
15 //---------------------------------------------------------------------------
16 
17 #ifndef _FUELCELLSHOP__DESIGN_FIBROUS_GDL_H
18 #define _FUELCELLSHOP__DESIGN_FIBROUS_GDL_H
19 
20 // FCST classes
21 #include <base_material.h>
22 #include <gas_diffusion_layer.h>
23 
24 // Include deal.II classes
25 #include <base/parameter_handler.h>
26 #include <base/point.h>
27 #include <base/function.h>
28 #include <lac/vector.h>
29 #include <fe/fe_values.h>
30 
31 //Include STL
32 #include<cmath>
33 #include<iostream>
34 
35 using namespace dealii;
36 
37 namespace FuelCellShop
38 {
39  namespace Layer
40  {
49  template <int dim>
51  public GasDiffusionLayer<dim>
52  {
53  public:
54 
70  static const std::string concrete_name;
71 
73 
74 
85 
86 
89  virtual void initialize (ParameterHandler &param);
91 
93 
94 
100  virtual void effective_gas_diffusivity(const double&, const double&, double&) const;
106  virtual void effective_gas_diffusivity(const double&, const double&, Tensor<2,dim>&) const;
107 
116  virtual void effective_gas_diffusivity(std::vector< Tensor<2,dim> >& ) const;
126  virtual void derivative_effective_gas_diffusivity(std::map< VariableNames, std::vector< Tensor<2,dim> > >&) const;
127 
132  virtual void effective_gas_diffusivity(Table< 2, Tensor<2,dim> > &D_eff) const;
133 
137  virtual void effective_electron_conductivity(double&) const;
138 
142  virtual void effective_electron_conductivity(Tensor<2,dim>&) const;
143 
152  virtual void effective_thermal_conductivity(std::vector< Tensor<2,dim> >&) const;
156  virtual void derivative_effective_thermal_conductivity(std::vector< Tensor<2,dim> >&) const;
157 
161  virtual void liquid_permeablity(std::vector< Tensor<2,dim> >& ) const;
167  virtual void derivative_liquid_permeablity(std::map< VariableNames, std::vector< Tensor<2,dim> > >& ) const;
168 
172  virtual void pcapillary(std::vector<double>&) const;
176  virtual void dpcapillary_dsat(std::vector<double> &) const;
182  virtual void derivative_dpcapillary_dsat(std::map< VariableNames, std::vector<double> > &) const;
183 
188  virtual void interfacial_surface_area(std::vector<double>&) const;
194  virtual void derivative_interfacial_surface_area(std::map< VariableNames, std::vector<double> >&) const;
195 
197 
198  private:
200 
205  DesignFibrousGDL(const std::string& name);
206 
208 
253  virtual void declare_parameters (const std::string& name,
254  ParameterHandler &param) const;
255 
257 
259 
264  virtual boost::shared_ptr<FuelCellShop::Layer::GasDiffusionLayer<dim> > create_replica (const std::string &name)
265  {
266  return boost::shared_ptr<FuelCellShop::Layer::GasDiffusionLayer<dim> > (new FuelCellShop::Layer::DesignFibrousGDL<dim> (name));
267  }
269 
271 
272  //--------------------------
274  double porosity;
276  double solid_phase;
283 
287  double s_irr;
288 
291 
293  std::vector<double> porosity_th;
295  std::vector<double> porosity_mu;
297  std::vector<double> porosity_gamma;
298 
300  std::vector<double> solid_th;
302  std::vector<double> solid_mu;
303 
305  std::vector<double> sigma_e;
306 
308  std::vector<double> k_thermal;
309 
311  std::vector<double> abs_permeability;
312 
318  double PTFE_loading;
324 
326 
328 
329 
334  };
335  }
336 }
337 
338 #endif
double PTFE_loading
PTFE loading (% wt) in the GDL.
Definition: design_fibrous_GDL.h:318
static DesignFibrousGDL< dim > const * PROTOTYPE
Prototype declaration.
Definition: design_fibrous_GDL.h:332
std::vector< double > sigma_e
&quot;Bulk&quot; electrical conductivity [S/cm] of the solid material.
Definition: design_fibrous_GDL.h:305
double s_irr
Irreducible liquid water saturation value in the GDL.
Definition: design_fibrous_GDL.h:287
Virtual class used to provide the interface for all GasDiffusionLayer children.
Definition: gas_diffusion_layer.h:117
VariableNames
The enumeration containing the names of some of the available FCST solution variables and their deriv...
Definition: system_management.h:62
bool anisotropy
Boolean flag corresponding to anisotropy.
Definition: design_fibrous_GDL.h:290
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.
Definition: design_fibrous_GDL.h:264
std::vector< double > porosity_mu
Network constant.
Definition: design_fibrous_GDL.h:295
std::string method_rel_liquid_permeability
Method used to compute the relative liquid permeability.
Definition: design_fibrous_GDL.h:285
static const std::string concrete_name
Concrete name used for objects of this class.
Definition: design_fibrous_GDL.h:70
std::string method_eff_property_solid
Method used to compute the effective properties in the solid.
Definition: design_fibrous_GDL.h:280
std::vector< double > k_thermal
&quot;Given&quot; thermal conductivity [W/(cm-K)] of the layer.
Definition: design_fibrous_GDL.h:308
double porosity
Porosity of the GDL.
Definition: design_fibrous_GDL.h:274
double solid_phase
Volume fraction of solid phase, i.e.
Definition: design_fibrous_GDL.h:276
std::string method_eff_property_pores
Method used to compute the effective properties in the pores.
Definition: design_fibrous_GDL.h:278
This class defines a GDL made of fibres.
Definition: design_fibrous_GDL.h:50
std::vector< double > porosity_th
Porosity of the GDL threshold.
Definition: design_fibrous_GDL.h:293
std::vector< double > solid_mu
Solid network constant.
Definition: design_fibrous_GDL.h:302
std::string method_capillary_function
Method used to compute capillary pressure as a function of saturation.
Definition: design_fibrous_GDL.h:314
double compaction_pressure
GDL Compaction pressure, .
Definition: design_fibrous_GDL.h:316
std::vector< double > abs_permeability
Absolute permeability [cm^2] of the layer.
Definition: design_fibrous_GDL.h:311
std::vector< double > solid_th
Solid network of the GDL threshold.
Definition: design_fibrous_GDL.h:300
double kumbur_factor
Factor calculated based on Kumbur et al (2007), to be used in capillary pressure computation, given as: .
Definition: design_fibrous_GDL.h:323
std::string method_eff_property_thermal
Method used to compute the effective thermal properties.
Definition: design_fibrous_GDL.h:282
std::vector< double > porosity_gamma
Network constant gamma.
Definition: design_fibrous_GDL.h:297