OpenFCST: The open-source Fuel Cell Simulation Toolbox
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Static Public Attributes | List of all members
FuelCellShop::Layer::NafionMembrane< dim > Class Template Reference

This class implements the necessary information for a Nafion membrane. More...

#include <nafion_membrane.h>

Inheritance diagram for FuelCellShop::Layer::NafionMembrane< dim >:
Inheritance graph
[legend]
Collaboration diagram for FuelCellShop::Layer::NafionMembrane< dim >:
Collaboration graph
[legend]

Public Member Functions

Constructors, destructor, and initalization
 NafionMembrane ()
 Replica Constructors. More...
 
 ~NafionMembrane ()
 Destructor. More...
 
Accessors and info
virtual void effective_proton_conductivity (double &) const
 Compute the constant effective proton conductivity of the membrane. More...
 
virtual void effective_proton_conductivity (std::vector< double > &) const
 Compute the effective proton conductivity of the membrane at every quadrature point, as a function of solution variables. More...
 
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 by set_derivative_flags, at every quadrature point. More...
 
virtual void effective_water_diffusivity (double &) const
 Compute the constant effective water diffusivity of the membrane. More...
 
virtual void effective_water_diffusivity (std::vector< double > &) const
 Compute the effective water diffusivity of the membrane at every quadrature point, as a function of solution variables. More...
 
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 by set_derivative_flags, at every quadrature point. More...
 
virtual void effective_oxygen_diffusivity (double &) const
 Compute the constant effective oxygen diffusivity of the membrane. More...
 
virtual void effective_oxygen_diffusivity (std::vector< double > &) const
 Compute the effective oxygen diffusivity of the membrane at every quadrature point, as a function of Temperature. More...
 
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 by set_derivative_flags, at every quadrature point. More...
 
virtual void effective_thermal_conductivity (double &) const
 Compute the constant effective thermal conductivity of nafion membrane layer. More...
 
virtual void effective_thermal_conductivity (std::vector< double > &) const
 Compute the effective thermal conductivity of membrane layer for isotropic case at all quadrature points. More...
 
virtual void effective_thermal_conductivity (std::vector< Tensor< 2, dim > > &) const
 Compute the effective thermal conductivity of membrane layer for anisotropic case at all quadrature points. More...
 
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 at all quadrature points. More...
 
virtual void effective_thermoosmotic_diffusivity (std::vector< double > &) const
 Compute the effective thermo-osmotic diffusivity of lambda (sorbed water), at all quadrature points in the Nafion membrane layer. More...
 
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 Nafion membrane layer with respect to either the solution or design parameters. More...
 
- Public Member Functions inherited from FuelCellShop::Layer::MembraneLayer< dim >
const std::type_info & get_base_type () const
 This member function returns a type_info object with the name of the base layer type the inherited class belongs to, i.e. More...
 
virtual void set_derivative_flags (const std::vector< VariableNames > &flags)
 Method used to set the variables for which you would like to compute the derivatives in the membrane layer. More...
 
virtual void set_constant_solution (const double &value, const VariableNames &name)
 Set those solution variables which are constant in the particular application. More...
 
FuelCellShop::Material::PolymerElectrolyteBaseget_electrolyte () const
 Method to provide access to the pointer to electrolyte material in the membrane layer. More...
 
virtual void derivative_effective_thermal_conductivity (std::vector< std::vector< Tensor< 2, dim > > > &) const
 Compute the derivative of the effective thermal conductivity in the membrane layer for anisotropic case at all quadrature points. More...
 
- Public Member Functions inherited from FuelCellShop::Layer::BaseLayer< dim >
void set_position (const std::vector< Point< dim > > &p)
 Member function used by some applications such as dummyGDL in order to know which value to return. More...
 
virtual void set_local_material_id (const unsigned int &id)
 Function for setting local material id, for unit testing purposes. More...
 
void unset_local_material_id ()
 Function for unsetting local material id, so that it isn't incorrectly used later Once the key is "unset" to some invalid value, an error will be thrown if the key is requested again without being set. More...
 
virtual void set_solution (const std::vector< SolutionVariable > &)
 If the effective properties in the layer depend on the solution, the solution for a given cell should be passed to the class using this member function. More...
 
bool belongs_to_material (const unsigned int material_id)
 Check if a given cell belongs to the catalyst layer and assign. More...
 
const std::string & name_layer () const
 Return the name of the layer. More...
 
virtual void print_layer_properties () const
 This member function is a virtual class that can be used to output to screen information from the layer. More...
 
virtual bool test_layer ()
 This virtual class should be used for any derived class to be able to test the functionality of the class. More...
 
std::vector< unsigned int > get_material_ids ()
 Return the local material id of the layer. More...
 
unsigned int local_material_id () const
 Return the local material id of the layer, performs a check. More...
 

Static Public Attributes

static const std::string concrete_name
 Concrete name used for objects of this class. More...
 

Protected Member Functions

Construtor and initalization (Private)
 NafionMembrane (std::string name)
 Constructor. More...
 
void declare_parameters (const std::string &name, ParameterHandler &param) const
 Declare parameters for a parameter file. More...
 
void initialize (ParameterHandler &param)
 Member function used to read in data and initialize the necessary data to compute the coefficients. More...
 
Instance Delivery Functions
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. More...
 
- Protected Member Functions inherited from FuelCellShop::Layer::MembraneLayer< dim >
 MembraneLayer ()
 Replica Constructors. More...
 
 MembraneLayer (std::string name)
 Constructor. More...
 
 ~MembraneLayer ()
 Destructor. More...
 
void declare_parameters (ParameterHandler &param) const
 Declare all necessary parameters in order to compute the coefficients. More...
 
- Protected Member Functions inherited from FuelCellShop::Layer::BaseLayer< dim >
 BaseLayer ()
 Constructor. More...
 
 BaseLayer (const std::string &name)
 Constructor. More...
 
virtual ~BaseLayer ()
 Destructor. More...
 
virtual void set_parameters (const std::string &object_name, const std::vector< std::string > &name_dvar, const std::vector< double > &value_dvar, ParameterHandler &param)
 Member function used to change the values in the parameter file for a given list of parameters. More...
 
virtual void set_parameters (const std::vector< std::string > &name_dvar, const std::vector< double > &value_dvar, ParameterHandler &param)
 Set parameters in parameter file. More...
 

Protected Attributes

Internal variables
std::string method_thermal_conductivity
 String for storing method of computing thermal conductivity in the layer. More...
 
double thermal_conductivity
 Variable for storing thermal conductivity for isotropic case. More...
 
- Protected Attributes inherited from FuelCellShop::Layer::MembraneLayer< dim >
std::string electrolyte_type
 Type of membrane. More...
 
boost::shared_ptr
< FuelCellShop::Material::PolymerElectrolyteBase
electrolyte
 Pointer to the electrolyte object used in the constructor, and it is used to calculate the effective properties of the membrane layer. More...
 
- Protected Attributes inherited from FuelCellShop::Layer::BaseLayer< dim >
const std::string name
 Name of the layer. More...
 
std::vector< unsigned int > material_ids
 List of material IDs that belong to the layer. More...
 
std::vector< Point< dim > > point
 Coordinates of the point where we would like to compute the effective properties. More...
 
std::vector< VariableNamesderivative_flags
 Flags for derivatives: These flags are used to request derivatives. More...
 
std::map< VariableNames, double > constant_solutions
 Map storing values of solution variables constant in a particular application. More...
 

Static Protected Attributes

Instance Delivery Data
static NafionMembrane< dim >
const * 
PROTOTYPE
 Create prototype for the layer. More...
 

Detailed Description

template<int dim>
class FuelCellShop::Layer::NafionMembrane< dim >

This class implements the necessary information for a Nafion membrane.

It contains information regarding the material_id used in the mesh to assign cells with that belong to the membrane and provides an interface to compute bulk membrane properties based on the FuelCellShop::Material::Nafion class

Usage Details:

For usage information please see MembraneLayer documentation.

Author
M. Secanell, 2009-13
M. Bhaiya, 2013

Constructor & Destructor Documentation

Replica Constructors.

Warning
For internal use only.

Constructor used only to create a prototype. Do not use in general since this will not include the name of the section in the parameter file you need.

Destructor.

template<int dim>
FuelCellShop::Layer::NafionMembrane< dim >::NafionMembrane ( std::string  name)
protected

Constructor.

Member Function Documentation

template<int dim>
virtual boost::shared_ptr<FuelCellShop::Layer::MembraneLayer<dim> > FuelCellShop::Layer::NafionMembrane< dim >::create_replica ( std::string &  name)
inlineprotectedvirtual

This member function is used to create an object of type gas diffusion layer.

Warning
This class MUST be redeclared in every child.

Reimplemented from FuelCellShop::Layer::MembraneLayer< dim >.

References FuelCellShop::Layer::BaseLayer< dim >::name.

template<int dim>
void FuelCellShop::Layer::NafionMembrane< dim >::declare_parameters ( const std::string &  name,
ParameterHandler &  param 
) const
protectedvirtual

Declare parameters for a parameter file.

Nothing to declare here other than the declaration of the base layer. However, the member function must be implemented so that the layer has the same structure as other layers.

Reimplemented from FuelCellShop::Layer::MembraneLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::NafionMembrane< dim >::derivative_effective_oxygen_diffusivity ( std::map< VariableNames, std::vector< double > > &  ) const
virtual

Compute the derivative of effective oxygen diffusivity of the membrane with respect to the flags set by set_derivative_flags, at every quadrature point.

Note
This method should only be used when Temperature is one of the solution variables.

Reimplemented from FuelCellShop::Layer::MembraneLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::NafionMembrane< dim >::derivative_effective_proton_conductivity ( std::map< VariableNames, std::vector< double > > &  ) const
virtual

Compute the derivative of effective proton conductivity of the membrane with respect to the flags set by set_derivative_flags, at every quadrature point.

Reimplemented from FuelCellShop::Layer::MembraneLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::NafionMembrane< dim >::derivative_effective_thermal_conductivity ( std::vector< std::vector< double > > &  ) const
virtual

Compute the derivative of the effective thermal conductivity in the membrane layer for isotropic case at all quadrature points.

Currently, we have only "Given" method for thermal conductivity, implying all the derivatives are zero.

Note
Vector needs to be initialized with number of quadrature points at inner level, and with number of variables at outer level, before passing to this function, otherwise error is generated.

Reimplemented from FuelCellShop::Layer::MembraneLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::NafionMembrane< dim >::derivative_effective_thermoosmotic_diffusivity ( std::map< VariableNames, std::vector< double > > &  ) const
virtual

Compute the derivative of the effective thermo-osmotic diffusivity of lambda (sorbed water) in the Nafion membrane layer with respect to either the solution or design parameters.

The parameters with respect to which the derivatives are computed are setup in FuelCellShop::Layer::set_derivative_flags()

Note
Input vector needs to be initialized with number of quadrature points at inner level, and with number of variable (derivative flags) at outer level, before passing to this function.

Reimplemented from FuelCellShop::Layer::MembraneLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::NafionMembrane< dim >::derivative_effective_water_diffusivity ( std::map< VariableNames, std::vector< double > > &  ) const
virtual

Compute the derivative of effective water diffusivity of the membrane with respect to the flags set by set_derivative_flags, at every quadrature point.

Reimplemented from FuelCellShop::Layer::MembraneLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::NafionMembrane< dim >::effective_oxygen_diffusivity ( double &  ) const
virtual

Compute the constant effective oxygen diffusivity of the membrane.

Reimplemented from FuelCellShop::Layer::MembraneLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::NafionMembrane< dim >::effective_oxygen_diffusivity ( std::vector< double > &  ) const
virtual

Compute the effective oxygen diffusivity of the membrane at every quadrature point, as a function of Temperature.

Note
This method should only be used when Temperature is one of the solution variables.

Reimplemented from FuelCellShop::Layer::MembraneLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::NafionMembrane< dim >::effective_proton_conductivity ( double &  ) const
virtual

Compute the constant effective proton conductivity of the membrane.

Reimplemented from FuelCellShop::Layer::MembraneLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::NafionMembrane< dim >::effective_proton_conductivity ( std::vector< double > &  ) const
virtual

Compute the effective proton conductivity of the membrane at every quadrature point, as a function of solution variables.

Reimplemented from FuelCellShop::Layer::MembraneLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::NafionMembrane< dim >::effective_thermal_conductivity ( double &  ) const
virtual

Compute the constant effective thermal conductivity of nafion membrane layer.

Reimplemented from FuelCellShop::Layer::MembraneLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::NafionMembrane< dim >::effective_thermal_conductivity ( std::vector< double > &  ) const
virtual

Compute the effective thermal conductivity of membrane layer for isotropic case at all quadrature points.

Currently, we have only "Given" method for thermal conductivity, i.e. constant thermal conductivity.

Note
Vector needs to be initialized with number of quadrature points, before passing to this function, otherwise error is generated.

Reimplemented from FuelCellShop::Layer::MembraneLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::NafionMembrane< dim >::effective_thermal_conductivity ( std::vector< Tensor< 2, dim > > &  ) const
virtual

Compute the effective thermal conductivity of membrane layer for anisotropic case at all quadrature points.

Currently, we have only "Given" method for thermal conductivity, i.e. constant thermal conductivity.

Note
Vector needs to be initialized with number of quadrature points, before passing to this function, otherwise error is generated.

Reimplemented from FuelCellShop::Layer::MembraneLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::NafionMembrane< dim >::effective_thermoosmotic_diffusivity ( std::vector< double > &  ) const
virtual

Compute the effective thermo-osmotic diffusivity of lambda (sorbed water), at all quadrature points in the Nafion membrane layer.

Note
Input vector needs to be initialized with number of quadrature points, before passing to this function.

Reimplemented from FuelCellShop::Layer::MembraneLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::NafionMembrane< dim >::effective_water_diffusivity ( double &  ) const
virtual

Compute the constant effective water diffusivity of the membrane.

Reimplemented from FuelCellShop::Layer::MembraneLayer< dim >.

template<int dim>
virtual void FuelCellShop::Layer::NafionMembrane< dim >::effective_water_diffusivity ( std::vector< double > &  ) const
virtual

Compute the effective water diffusivity of the membrane at every quadrature point, as a function of solution variables.

Reimplemented from FuelCellShop::Layer::MembraneLayer< dim >.

template<int dim>
void FuelCellShop::Layer::NafionMembrane< dim >::initialize ( ParameterHandler &  param)
protectedvirtual

Member function used to read in data and initialize the necessary data to compute the coefficients.

Reimplemented from FuelCellShop::Layer::MembraneLayer< dim >.

Member Data Documentation

template<int dim>
const std::string FuelCellShop::Layer::NafionMembrane< dim >::concrete_name
static

Concrete name used for objects of this class.

This name is used when setting up the subsection where the data is stored in the input file.

The data will be store under

* subsection name_specified_in_constructor
* set Material id = 2
* set Membrane type = NafionMembrane # <-here I select the type of object of type GasDiffusionLayer
* subsection NafionMembrane # <- this is the concrete_name for this class
* set all info relevant to this object
* end
* end
*
template<int dim>
std::string FuelCellShop::Layer::NafionMembrane< dim >::method_thermal_conductivity
protected

String for storing method of computing thermal conductivity in the layer.

template<int dim>
NafionMembrane<dim> const* FuelCellShop::Layer::NafionMembrane< dim >::PROTOTYPE
staticprotected

Create prototype for the layer.

template<int dim>
double FuelCellShop::Layer::NafionMembrane< dim >::thermal_conductivity
protected

Variable for storing thermal conductivity for isotropic case.


The documentation for this class was generated from the following file: