OpenFCST: The open-source Fuel Cell Simulation Toolbox
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
experimental_porous_layer.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 //
3 // FCST: Fuel Cell Simulation Toolbox
4 //
5 // Copyright (C) 2006-2013 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: experimental_porous_layer.h
11 // - Description: This class describes a porous layer
12 // - Developers: Valentin N. Zingan, University of Alberta
13 // - Id: $Id: experimental_porous_layer.h 2605 2014-08-15 03:36:44Z secanell $
14 //
15 // ----------------------------------------------------------------------------
16 
17 #ifndef _FCST_FUELCELLSHOP_LAYER_EXPERIMENTAL_POROUS_LAYER_H_
18 #define _FCST_FUELCELLSHOP_LAYER_EXPERIMENTAL_POROUS_LAYER_H_
19 
20 #include "base_layer.h"
21 #include "experimental_fluid.h"
23 #include "GasMixture.h"
24 #include "experimental_solid.h"
25 
26 namespace FuelCellShop
27 {
28 namespace Layer
29 {
30 
71 template<int dim>
73 {
74 public:
75 
77 
78 
82  ExperimentalPorousLayer(const std::string& name);
83 
87  ExperimentalPorousLayer(const std::string& name,
90 
94  ExperimentalPorousLayer(const std::string& name,
97 
101  ExperimentalPorousLayer(const std::string& name,
104 
108  virtual ~ExperimentalPorousLayer();
109 
118  {
119  fluid = &rfluid;
120  multi_fluid = nullptr;
121  gas_mixture = nullptr;
122  solid = &rsolid;
123  }
124 
133  {
134  fluid = nullptr;
135  multi_fluid = &rmulti_fluid;
136  gas_mixture = nullptr;
137  solid = &rsolid;
138  }
139 
148  {
149  fluid = nullptr;
150  multi_fluid = nullptr;
151  gas_mixture = &rgas_mixture;
152  solid = &rsolid;
153  }
154 
162  void initialize(const bool& rporosity_is_constant,
163  const bool& rpermeability_is_constant,
164  const bool& rtortuosity_is_constant)
165  {
166  porosity_is_constant = rporosity_is_constant;
167  permeability_is_constant = rpermeability_is_constant;
168  tortuosity_is_constant = rtortuosity_is_constant;
169  }
170 
174  virtual void declare_parameters(ParameterHandler& param) const;
175 
179  virtual void initialize(ParameterHandler& param);
180 
182 
184 
185 
191  {
192  return fluid;
193  }
194 
200  {
201  return multi_fluid;
202  }
203 
209  {
210  return gas_mixture;
211  }
212 
218  {
219  return solid;
220  }
221 
226  const bool& get_porosity_is_constant() const
227  {
228  return porosity_is_constant;
229  }
230 
235  const bool& get_permeability_is_constant() const
236  {
238  }
239 
244  const bool& get_tortuosity_is_constant() const
245  {
246  return tortuosity_is_constant;
247  }
248 
253  void get_porosity(std::vector<double>& dst) const;
254 
259  void get_porosity(std::vector<double>& dst,
260  const std::vector< Point<dim> >& points) const;
261 
266  void get_permeability(std::vector< SymmetricTensor<2,dim> >& dst) const;
267 
272  void get_permeability(std::vector< SymmetricTensor<2,dim> >& dst,
273  const std::vector< Point<dim> >& points) const;
274 
279  void get_SQRT_permeability(std::vector< SymmetricTensor<2,dim> >& dst) const;
280 
285  void get_SQRT_permeability(std::vector< SymmetricTensor<2,dim> >& dst,
286  const std::vector< Point<dim> >& points) const;
287 
292  void get_permeability_INV(std::vector< SymmetricTensor<2,dim> >& dst) const;
293 
298  void get_permeability_INV(std::vector< SymmetricTensor<2,dim> >& dst,
299  const std::vector< Point<dim> >& points) const;
300 
305  void get_SQRT_permeability_INV(std::vector< SymmetricTensor<2,dim> >& dst) const;
306 
311  void get_SQRT_permeability_INV(std::vector< SymmetricTensor<2,dim> >& dst,
312  const std::vector< Point<dim> >& points) const;
313 
318  void get_Forchheimer_permeability(std::vector< SymmetricTensor<2,dim> >& dst) const;
319 
324  void get_Forchheimer_permeability(std::vector< SymmetricTensor<2,dim> >& dst,
325  const std::vector< Point<dim> >& points) const;
326 
331  void get_tortuosity(std::vector< SymmetricTensor<2,dim> >& dst) const;
332 
337  void get_tortuosity(std::vector< SymmetricTensor<2,dim> >& dst,
338  const std::vector< Point<dim> >& points) const;
339 
352  const std::type_info& get_base_type() const
353  {
354  return typeid(ExperimentalPorousLayer<dim>);
355  }
356 
361  virtual void print_layer_properties() const;
362 
364 
365 protected:
366 
368 
369 
376  void print_caller_name(const std::string& caller_name) const;
377 
379 
381  // DATA //
383 
385 
386 
396 
406 
411 
416 
422 
428 
434 
438  double porosity;
439 
443  SymmetricTensor<2,dim> permeability;
444 
448  SymmetricTensor<2,dim> SQRT_permeability;
449 
453  SymmetricTensor<2,dim> permeability_INV;
454 
458  SymmetricTensor<2,dim> SQRT_permeability_INV;
459 
463  SymmetricTensor<2,dim> Forchheimer_permeability;
464 
468  SymmetricTensor<2,dim> tortuosity;
469 
471 
472 };
473 
474 } // Layer
475 
476 } // FuelCellShop
477 
478 #endif
double porosity
User defined constant porosity.
Definition: experimental_porous_layer.h:438
bool permeability_is_constant
Variable defining if the permeability is constant.
Definition: experimental_porous_layer.h:427
SymmetricTensor< 2, dim > SQRT_permeability_INV
Inverse of square root of user defined constant permeability, 1/m.
Definition: experimental_porous_layer.h:458
void get_tortuosity(std::vector< SymmetricTensor< 2, dim > > &dst) const
This function computes constant tortuosity in quadrature points of a mesh entity. ...
const std::type_info & get_base_type() const
This function returns typeid of this class.
Definition: experimental_porous_layer.h:352
This class describes a solid.
Definition: experimental_solid.h:38
FuelCellShop::Material::GasMixture * gas_mixture
Gas mixture.
Definition: experimental_porous_layer.h:410
void get_SQRT_permeability(std::vector< SymmetricTensor< 2, dim > > &dst) const
This function computes square root of constant permeability in quadrature points of a mesh entity...
virtual void print_layer_properties() const
This function prints out the layer properties.
void get_SQRT_permeability_INV(std::vector< SymmetricTensor< 2, dim > > &dst) const
This function computes inverse of square root of constant permeability in quadrature points of a mesh...
bool tortuosity_is_constant
Variable defining if the tortuosity is constant.
Definition: experimental_porous_layer.h:433
void get_porosity(std::vector< double > &dst) const
This function computes constant porosity in quadrature points of a mesh entity.
ExperimentalPorousLayer(const std::string &name)
Constructor.
FuelCellShop::Material::ExperimentalFluid * fluid
Definition: experimental_porous_layer.h:395
const std::string name
Name of the layer.
Definition: base_layer.h:336
bool porosity_is_constant
Variable defining if the porosity is constant.
Definition: experimental_porous_layer.h:421
const FuelCellShop::Material::ExperimentalFluid *const get_fluid() const
This function returns fluid.
Definition: experimental_porous_layer.h:190
void get_Forchheimer_permeability(std::vector< SymmetricTensor< 2, dim > > &dst) const
This function computes constant Forchheimer permeability in quadrature points of a mesh entity...
void print_caller_name(const std::string &caller_name) const
This function is used to print out the name of another function that has been declared in the scope o...
const bool & get_tortuosity_is_constant() const
This function returns tortuosity_is_constant.
Definition: experimental_porous_layer.h:244
void initialize(FuelCellShop::Material::ExperimentalFluid &rfluid, FuelCellShop::Material::ExperimentalSolid &rsolid)
Initialize.
Definition: experimental_porous_layer.h:116
void get_permeability(std::vector< SymmetricTensor< 2, dim > > &dst) const
This function computes constant permeability in quadrature points of a mesh entity.
This class describes a porous layer and stores pointers to.
Definition: experimental_porous_layer.h:72
SymmetricTensor< 2, dim > permeability
User defined constant permeability, m^2.
Definition: experimental_porous_layer.h:443
SymmetricTensor< 2, dim > Forchheimer_permeability
User defined constant Forchheimer permeability, 1/m.
Definition: experimental_porous_layer.h:463
void initialize(const bool &rporosity_is_constant, const bool &rpermeability_is_constant, const bool &rtortuosity_is_constant)
Initialize.
Definition: experimental_porous_layer.h:162
void initialize(FuelCellShop::Material::GasMixture &rgas_mixture, FuelCellShop::Material::ExperimentalSolid &rsolid)
Initialize.
Definition: experimental_porous_layer.h:146
SymmetricTensor< 2, dim > permeability_INV
Inverse of user defined constant permeability, 1/m^2.
Definition: experimental_porous_layer.h:453
This class describes properties of gas mixtures.
Definition: GasMixture.h:115
SymmetricTensor< 2, dim > SQRT_permeability
Square root of user defined constant permeability, m.
Definition: experimental_porous_layer.h:448
const FuelCellShop::Material::ExperimentalSolid *const get_solid() const
This function returns solid.
Definition: experimental_porous_layer.h:217
void get_permeability_INV(std::vector< SymmetricTensor< 2, dim > > &dst) const
This function computes inverse of constant permeability in quadrature points of a mesh entity...
const bool & get_permeability_is_constant() const
This function returns permeability_is_constant.
Definition: experimental_porous_layer.h:235
FuelCellShop::Material::ExperimentalMultiFluid * multi_fluid
Definition: experimental_porous_layer.h:405
SymmetricTensor< 2, dim > tortuosity
User defined constant tortuosity.
Definition: experimental_porous_layer.h:468
const bool & get_porosity_is_constant() const
This function returns porosity_is_constant.
Definition: experimental_porous_layer.h:226
const FuelCellShop::Material::ExperimentalMultiFluid *const get_multi_fluid() const
This function returns multi_fluid.
Definition: experimental_porous_layer.h:199
This class describes.
Definition: experimental_fluid.h:44
This class describes.
Definition: experimental_multi_fluid.h:44
Virtual class used to characterize a generic layer interface.
Definition: base_layer.h:58
void initialize(FuelCellShop::Material::ExperimentalMultiFluid &rmulti_fluid, FuelCellShop::Material::ExperimentalSolid &rsolid)
Initialize.
Definition: experimental_porous_layer.h:131
virtual void declare_parameters(ParameterHandler &param) const
Declare parameters.
const FuelCellShop::Material::GasMixture *const get_gas_mixture() const
This function returns gas_mixture.
Definition: experimental_porous_layer.h:208
FuelCellShop::Material::ExperimentalSolid * solid
Solid.
Definition: experimental_porous_layer.h:415