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
22 
23 using namespace dealii;
24 
25 namespace FuelCellShop
26 {
27  namespace Layer
28  {
37  template <int dim>
39  public GasDiffusionLayer<dim>
40  {
41  public:
42 
58  static const std::string concrete_name;
59 
61 
62 
73 
74 
77  virtual void initialize (ParameterHandler &param);
79 
81 
82 
88  virtual void effective_gas_diffusivity(const double&, const double&, double&) const;
94  virtual void effective_gas_diffusivity(const double&, const double&, Tensor<2,dim>&) const;
95 
104  virtual void effective_gas_diffusivity(std::vector< Tensor<2,dim> >& ) const;
114  virtual void derivative_effective_gas_diffusivity(std::map< VariableNames, std::vector< Tensor<2,dim> > >&) const;
115 
120  virtual void effective_gas_diffusivity(Table< 2, Tensor<2,dim> > &D_eff) const;
121 
125  virtual void effective_electron_conductivity(double&) const;
126 
130  virtual void effective_electron_conductivity(Tensor<2,dim>&) const;
131 
140  virtual void effective_thermal_conductivity(std::vector< Tensor<2,dim> >&) const;
144  virtual void derivative_effective_thermal_conductivity(std::vector< Tensor<2,dim> >&) const;
145 
149  virtual void liquid_permeablity(std::vector< Tensor<2,dim> >& ) const;
155  virtual void derivative_liquid_permeablity(std::map< VariableNames, std::vector< Tensor<2,dim> > >& ) const;
156 
161  virtual void saturated_liquid_permeablity_PSD(double&) const;
162  virtual void relative_liquid_permeability_PSD(std::vector< Tensor<2,dim> >&) const;
163  virtual void derivative_relative_liquid_permeablity_PSD(std::vector< double >&) const;
164 
165  virtual void derivative_relative_liquid_permeablity_PSD(std::map< VariableNames, std::vector< Tensor<2,dim> > >&) const;
166 
170  virtual void pcapillary(std::vector<double>&) const;
171  virtual void saturation_from_capillary_equation(std::vector<double>&) const;
172 
173  virtual void derivative_saturation_from_capillary_equation_PSD(std::vector<double>&) const;
177  virtual void dpcapillary_dsat(std::vector<double> &) const;
183  virtual void derivative_dpcapillary_dsat(std::map< VariableNames, std::vector<double> > &) const;
184 
189  virtual void interfacial_surface_area(std::vector<double>&) const;
195  virtual void derivative_interfacial_surface_area(std::map< VariableNames, std::vector<double> >&) const;
196 
201  virtual void interfacial_surface_area_PSD(std::vector<double>&) const;
207  virtual void derivative_interfacial_surface_area_PSD(std::vector<double>&) const;
208  virtual void derivative_interfacial_surface_area_PSD(std::map< VariableNames, std::vector<double> >&) const;
209 
211 
212  private:
214 
219  DesignFibrousGDL(const std::string& name);
220 
222 
267  virtual void declare_parameters (const std::string& name,
268  ParameterHandler &param) const;
269 
271 
273 
278  virtual boost::shared_ptr<FuelCellShop::Layer::GasDiffusionLayer<dim> > create_replica (const std::string &name)
279  {
280  return boost::shared_ptr<FuelCellShop::Layer::GasDiffusionLayer<dim> > (new FuelCellShop::Layer::DesignFibrousGDL<dim> (name));
281  }
283 
285 
286  //--------------------------
288  double porosity;
290  double solid_phase;
297 
301  double s_irr;
302 
305 
307  std::vector<double> porosity_th;
309  std::vector<double> porosity_mu;
311  std::vector<double> porosity_gamma;
312 
314  std::vector<double> solid_th;
316  std::vector<double> solid_mu;
317 
319  std::vector<double> sigma_e;
320 
322  std::vector<double> k_thermal;
323 
325  std::vector<double> abs_permeability;
326 
332  double PTFE_loading;
338 
340 
342 
343 
348  };
349  }
350 }
351 
352 #endif
double PTFE_loading
PTFE loading (% wt) in the GDL.
Definition: design_fibrous_GDL.h:332
static DesignFibrousGDL< dim > const * PROTOTYPE
Prototype declaration.
Definition: design_fibrous_GDL.h:346
std::vector< double > sigma_e
&quot;Bulk&quot; electrical conductivity [S/cm] of the solid material.
Definition: design_fibrous_GDL.h:319
double s_irr
Irreducible liquid water saturation value in the GDL.
Definition: design_fibrous_GDL.h:301
Virtual class used to provide the interface for all GasDiffusionLayer children.
Definition: gas_diffusion_layer.h:105
VariableNames
The enumeration containing the names of some of the available FCST solution variables and their deriv...
Definition: system_management.h:63
bool anisotropy
Boolean flag corresponding to anisotropy.
Definition: design_fibrous_GDL.h:304
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:278
std::vector< double > porosity_mu
Network constant.
Definition: design_fibrous_GDL.h:309
std::string method_rel_liquid_permeability
Method used to compute the relative liquid permeability.
Definition: design_fibrous_GDL.h:299
static const std::string concrete_name
Concrete name used for objects of this class.
Definition: design_fibrous_GDL.h:58
std::string method_eff_property_solid
Method used to compute the effective properties in the solid.
Definition: design_fibrous_GDL.h:294
std::vector< double > k_thermal
&quot;Given&quot; thermal conductivity [W/(cm-K)] of the layer.
Definition: design_fibrous_GDL.h:322
double porosity
Porosity of the GDL.
Definition: design_fibrous_GDL.h:288
double solid_phase
Volume fraction of solid phase, i.e.
Definition: design_fibrous_GDL.h:290
std::string method_eff_property_pores
Method used to compute the effective properties in the pores.
Definition: design_fibrous_GDL.h:292
This class defines a GDL made of fibres.
Definition: design_fibrous_GDL.h:38
std::vector< double > porosity_th
Porosity of the GDL threshold.
Definition: design_fibrous_GDL.h:307
std::vector< double > solid_mu
Solid network constant.
Definition: design_fibrous_GDL.h:316
std::string method_capillary_function
Method used to compute capillary pressure as a function of saturation.
Definition: design_fibrous_GDL.h:328
double compaction_pressure
GDL Compaction pressure, .
Definition: design_fibrous_GDL.h:330
std::vector< double > abs_permeability
Absolute permeability [cm^2] of the layer.
Definition: design_fibrous_GDL.h:325
std::vector< double > solid_th
Solid network of the GDL threshold.
Definition: design_fibrous_GDL.h:314
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:337
std::string method_eff_property_thermal
Method used to compute the effective thermal properties.
Definition: design_fibrous_GDL.h:296
std::vector< double > porosity_gamma
Network constant gamma.
Definition: design_fibrous_GDL.h:311