OpenFCST: The open-source Fuel Cell Simulation Toolbox
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
nafion_membrane.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: nafion_membrane.h
11 // - Description: Class representing Nafion membrane layer class - returning effective transport properties
12 // - Developers: Madhur Bhaiya (2012-13)
13 // - Id: $Id: nafion_membrane.h 2605 2014-08-15 03:36:44Z secanell $
14 //
15 //---------------------------------------------------------------------------
16 
17 #ifndef _FUELCELLSHOP__NAFION_MEMBRANE_H
18 #define _FUELCELLSHOP__NAFION_MEMBRANE_H
19 
20 // Include FCST classes
21 #include <layers/membrane_layer.h>
22 
23 #include <boost/shared_ptr.hpp>
24 
25 namespace FuelCellShop
26 {
27  namespace Layer
28  {
43  template <int dim>
44  class NafionMembrane : public MembraneLayer<dim>
45  {
46  public:
62  static const std::string concrete_name;
63 
65 
66 
77 
81  ~NafionMembrane();
82 
84 
86 
87 
90  virtual void effective_proton_conductivity(double&) const;
95  virtual void effective_proton_conductivity(std::vector<double>&) const;
100  virtual void derivative_effective_proton_conductivity(std::map< VariableNames, std::vector<double> >&) const;
101 
105  virtual void effective_water_diffusivity(double&) const;
110  virtual void effective_water_diffusivity(std::vector<double>&) const;
115  virtual void derivative_effective_water_diffusivity(std::map< VariableNames, std::vector<double> >&) const;
116 
120  virtual void effective_oxygen_diffusivity(double&) const;
126  virtual void effective_oxygen_diffusivity(std::vector<double>&) const;
132  virtual void derivative_effective_oxygen_diffusivity(std::map< VariableNames, std::vector<double> >&) const;
133 
137  virtual void effective_thermal_conductivity(double& ) const;
138 
145  virtual void effective_thermal_conductivity(std::vector<double>& ) const;
146 
153  virtual void effective_thermal_conductivity(std::vector< Tensor<2,dim> >&) const;
154 
162  virtual void derivative_effective_thermal_conductivity(std::vector< std::vector<double> >& ) const;
163 
169  virtual void effective_thermoosmotic_diffusivity(std::vector<double>& ) const;
170 
178  virtual void derivative_effective_thermoosmotic_diffusivity(std::map< VariableNames, std::vector<double> >& ) const;
179 
181 
182  protected:
184 
185 
189  NafionMembrane(std::string name);
190 
199  void declare_parameters (const std::string& name,
200  ParameterHandler &param) const;
201 
206  void initialize (ParameterHandler &param);
207 
209 
211 
216  virtual boost::shared_ptr<FuelCellShop::Layer::MembraneLayer<dim> > create_replica (std::string &name)
217  {
218  return boost::shared_ptr<FuelCellShop::Layer::MembraneLayer<dim> > (new FuelCellShop::Layer::NafionMembrane<dim> (name));
219  }
221 
223 
228 
230 
231 
235 
241  };
242  }
243 }
244 
245 #endif
void initialize(ParameterHandler &param)
Member function used to read in data and initialize the necessary data to compute the coefficients...
std::string method_thermal_conductivity
String for storing method of computing thermal conductivity in the layer.
Definition: nafion_membrane.h:234
virtual void effective_thermoosmotic_diffusivity(std::vector< double > &) const
Compute the effective thermo-osmotic diffusivity of lambda (sorbed water), at all quadrature points i...
void declare_parameters(const std::string &name, ParameterHandler &param) const
Declare parameters for a parameter file.
VariableNames
The enumeration containing the names of some of the available FCST solution variables and their deriv...
Definition: system_management.h:63
virtual void effective_water_diffusivity(double &) const
Compute the constant effective water diffusivity of the membrane.
This class implements the necessary information for a Nafion membrane.
Definition: nafion_membrane.h:44
NafionMembrane()
Replica Constructors.
static const std::string concrete_name
Concrete name used for objects of this class.
Definition: nafion_membrane.h:62
const std::string name
Name of the layer.
Definition: base_layer.h:336
virtual void effective_thermal_conductivity(double &) const
Compute the constant effective thermal conductivity of nafion membrane layer.
virtual boost::shared_ptr< FuelCellShop::Layer::MembraneLayer< dim > > create_replica(std::string &name)
This member function is used to create an object of type gas diffusion layer.
Definition: nafion_membrane.h:216
virtual void effective_proton_conductivity(double &) const
Compute the constant effective proton conductivity of the membrane.
static NafionMembrane< dim > const * PROTOTYPE
Create prototype for the layer.
Definition: nafion_membrane.h:226
virtual void derivative_effective_water_diffusivity(std::map< VariableNames, std::vector< double > > &) const
Compute the derivative of effective water diffusivity of the membrane with respect to the flags set b...
virtual void derivative_effective_oxygen_diffusivity(std::map< VariableNames, std::vector< double > > &) const
Compute the derivative of effective oxygen diffusivity of the membrane with respect to the flags set ...
virtual void derivative_effective_thermal_conductivity(std::vector< std::vector< double > > &) const
Compute the derivative of the effective thermal conductivity in the membrane layer for isotropic case...
virtual void effective_oxygen_diffusivity(double &) const
Compute the constant effective oxygen diffusivity of the membrane.
virtual void derivative_effective_thermoosmotic_diffusivity(std::map< VariableNames, std::vector< double > > &) const
Compute the derivative of the effective thermo-osmotic diffusivity of lambda (sorbed water) in the Na...
virtual void derivative_effective_proton_conductivity(std::map< VariableNames, std::vector< double > > &) const
Compute the derivative of effective proton conductivity of the membrane with respect to the flags set...
Virtual class used to provide the interface for all MembraneLayer children.
Definition: membrane_layer.h:98
double thermal_conductivity
Variable for storing thermal conductivity for isotropic case.
Definition: nafion_membrane.h:239