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"
23 #include "materials/nafion.h"
24 
25 #include "boost/shared_ptr.hpp"
26 
27 namespace FuelCellShop
28 {
29  namespace Layer
30  {
45  template <int dim>
46  class NafionMembrane : public MembraneLayer<dim>
47  {
48  public:
64  static const std::string concrete_name;
65 
67 
68 
79 
83  ~NafionMembrane();
84 
86 
88 
89 
92  virtual void effective_proton_conductivity(double&) const;
97  virtual void effective_proton_conductivity(std::vector<double>&) const;
102  virtual void derivative_effective_proton_conductivity(std::map< VariableNames, std::vector<double> >&) const;
103 
107  virtual void effective_water_diffusivity(double&) const;
112  virtual void effective_water_diffusivity(std::vector<double>&) const;
117  virtual void derivative_effective_water_diffusivity(std::map< VariableNames, std::vector<double> >&) const;
118 
122  virtual void effective_oxygen_diffusivity(double&) const;
128  virtual void effective_oxygen_diffusivity(std::vector<double>&) const;
134  virtual void derivative_effective_oxygen_diffusivity(std::map< VariableNames, std::vector<double> >&) const;
135 
139  virtual void effective_thermal_conductivity(double& ) const;
140 
147  virtual void effective_thermal_conductivity(std::vector<double>& ) const;
148 
155  virtual void effective_thermal_conductivity(std::vector< Tensor<2,dim> >&) const;
156 
164  virtual void derivative_effective_thermal_conductivity(std::vector< std::vector<double> >& ) const;
165 
171  virtual void effective_thermoosmotic_diffusivity(std::vector<double>& ) const;
172 
180  virtual void derivative_effective_thermoosmotic_diffusivity(std::map< VariableNames, std::vector<double> >& ) const;
181 
183 
184  protected:
186 
187 
191  NafionMembrane(std::string name);
192 
201  void declare_parameters (const std::string& name,
202  ParameterHandler &param) const;
203 
208  void initialize (ParameterHandler &param);
209 
211 
213 
218  virtual boost::shared_ptr<FuelCellShop::Layer::MembraneLayer<dim> > create_replica (std::string &name)
219  {
220  return boost::shared_ptr<FuelCellShop::Layer::MembraneLayer<dim> > (new FuelCellShop::Layer::NafionMembrane<dim> (name));
221  }
223 
225 
230 
232 
233 
237 
243  };
244  }
245 }
246 
247 #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:236
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:62
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:46
NafionMembrane()
Replica Constructors.
static const std::string concrete_name
Concrete name used for objects of this class.
Definition: nafion_membrane.h:64
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:218
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:228
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:241