OpenFCST: The open-source Fuel Cell Simulation Toolbox
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Protected Attributes | List of all members
FuelCellShop::Material::PolymerElectrolyteBase Class Reference

This class implements the interface to compute the properties of a "standard" polymer electrolyte membrane material. More...

#include <polymer_electrolyte_material_base.h>

Inheritance diagram for FuelCellShop::Material::PolymerElectrolyteBase:
Inheritance graph
[legend]
Collaboration diagram for FuelCellShop::Material::PolymerElectrolyteBase:
Collaboration graph
[legend]

Public Member Functions

Transport properties and derivatives accessor methods
virtual void sorption_isotherm (std::vector< double > &) const
 Compute the equilibrium water content, $ \lambda_{eq} $, inside the polymer electrolyte for vapor-equilibriated case, at every quadrature point in the cell. More...
 
virtual void sorption_isotherm_derivative (std::map< VariableNames, std::vector< double > > &) const
 Compute the derivatives for water sorption source terms, $ \frac{\partial \lambda_{eq}}{\partial u} $, at every quadrature point in the cell. More...
 
virtual void proton_conductivity (double &) const
 Compute the proton conductivity, $ \sigma_{H^+} $ [S/cm], inside the polymer electrolyte for constant case. More...
 
virtual void proton_conductivity (std::vector< double > &) const
 Compute the proton conductivity, $ \sigma_{H^+} $ [S/cm], inside the polymer electrolyte, at every quadrature point in the cell. More...
 
virtual void proton_conductivity_derivative (std::map< VariableNames, std::vector< double > > &) const
 Compute the derivatives of proton conductivity at every quadrature point in the cell. More...
 
virtual void water_diffusivity (double &) const
 Compute the water diffusivity, $ D_{\lambda} $ [cm^2/s], inside the polymer electrolyte for constant case. More...
 
virtual void water_diffusivity (std::vector< double > &) const
 Compute the water diffusivity, $ D_{\lambda} $ [cm^2/s], inside the polymer electrolyte at every quadrature point in the cell. More...
 
virtual void water_diffusivity_derivative (std::map< VariableNames, std::vector< double > > &) const
 Compute the derivatives of water diffusivity at every quadrature point in the cell. More...
 
virtual void electroosmotic_drag (std::vector< double > &) const
 Compute the electro-osmotic drag coefficient inside the polymer electrolyte at every quadrature point in the cell. More...
 
virtual void electroosmotic_drag_derivative (std::map< VariableNames, std::vector< double > > &) const
 Compute the derivatives of electro-osmotic drag coefficient, at every quadrature point in the cell. More...
 
virtual void thermoosmotic_coeff (std::vector< double > &) const
 Compute the thermo-osmotic diffusion coefficient, [gm/ (cm-s-K )], inside the polymer electrolyte at every quadrature point in the cell. More...
 
virtual void thermoosmotic_coeff_derivative (std::map< VariableNames, std::vector< double > > &) const
 Compute the derivatives of thermo-osmotic diffusion coefficient, at every quadrature point in the cell. More...
 
virtual void oxygen_diffusivity (double &) const
 Compute the oxygen diffusivity, [cm^2/s], inside the polymer electrolyte for constant case. More...
 
virtual void hydrogen_diffusivity (double &) const
 Compute the oxygen diffusivity, [cm^2/s], inside the polymer electrolyte for constant case. More...
 
virtual void oxygen_diffusivity (std::vector< double > &) const
 Compute the oxygen diffusivity, [cm^2/s], inside the polymer electrolyte at every quadrature point in the cell. More...
 
virtual void oxygen_diffusivity_derivative (std::map< VariableNames, std::vector< double > > &) const
 Compute the derivatives of oxygen diffusivity, at every quadrature point in the cell. More...
 
virtual void proton_diffusivity (double &) const
 Compute the proton diffusivity, [cm^2/s], inside the polymer electrolyte for constant case. More...
 
virtual void sorption_enthalpy (std::vector< double > &) const
 Compute the enthalpy of sorption [J/mol] of water, at all quadrature points in the cell. More...
 
virtual void sorption_enthalpy_derivative (std::map< VariableNames, std::vector< double > > &) const
 Compute the derivatives of enthalpy of sorption of water, at every quadrature point in the cell. More...
 
Accessor methods for molar enthalpy of sorbed water and its derivatives
virtual double get_Hlambda (const double &) const
 Compute the molar enthalpy, $ \bar{H}_{\lambda} ~$ [J/mol] of sorbed water in the polymer electrolyte as a function of $ T $. More...
 
virtual double get_dHlambda_dT (const double &) const
 Compute $ \frac{\partial \bar{H}_{\lambda}}{\partial T} $ of sorbed water in the polymer electrolyte as a function of $ T $. More...
 
virtual double get_d2Hlambda_dT2 (const double &) const
 Compute $ \frac{\partial^2 \bar{H}_{\lambda}}{\partial T^2} $ of sorbed water in the polymer electrolyte as a function of $ T $. More...
 
Physical properties accessor methods
double get_density () const
 Get the density [gm/cm^3] of the dry polymer electrolyte material. More...
 
double get_H_O2 () const
 Get Henry's constant [Pa-cm^3/mol] for oxygen dissolution in the polymer electrolyte. More...
 
double get_H_H2 () const
 Get Henry's constant [Pa-cm^3/mol] for hydrogen dissolution in the polymer electrolyte. More...
 
double get_EW () const
 Get Equivalent Weight (grams of dry polymer electrolyte per moles of $ SO_3^- $) of the polymer electrolyte material. More...
 
double get_permittivity () const
 Get permittivity of the polymer electrolyte material. More...
 
Solution setting methods
void set_p_t (const double &p_t)
 Specify the total pressure in Pascals. More...
 
void set_T (const double &Temp)
 Specify the temperature [Kelvin] in the polymer electrolyte for isothermal case. More...
 
void set_lambda (const double &L)
 Specify the water content in the polymer electrolyte for constant lambda case. More...
 
void set_membrane_water_content (const FuelCellShop::SolutionVariable &l_in)
 Set the solution variable, membrane water content $ \lambda $. More...
 
void set_temperature (const FuelCellShop::SolutionVariable &T_in)
 Set the solution variable, temperature $ T $ [Kelvin]. More...
 
void set_water_molar_fraction (const FuelCellShop::SolutionVariable &x_in)
 Set the solution variable, water vapor molar fraction $ x_{H_2O} $. More...
 
- Public Member Functions inherited from FuelCellShop::Material::BaseMaterial
void set_derivative_flags (const std::vector< VariableNames > &flags)
 Set the names of FCST solution variables with respect to which you would like to compute the derivatives of material properties. More...
 
const std::string & name_material () const
 Return the name of the layer. More...
 
virtual void print_material_properties () const
 This function prints out the material properties. More...
 

Static Public Member Functions

Instance Delivery (Public functions)
static void declare_PolymerElectrolyte_parameters (ParameterHandler &param)
 Function used to declare all the data necessary in the parameter files for all PolymerElectrolyteBase children. More...
 
static boost::shared_ptr
< FuelCellShop::Material::PolymerElectrolyteBase
create_PolymerElectrolyte (ParameterHandler &param, std::string polymer_electrolyte_name)
 Function called in create_CatalystLayer and used to select the appropriate PolymerElectrolyteBase children that will be used in the layer. More...
 

Protected Types

Instance Delivery (Types)
typedef std::map< std::string,
FuelCellShop::Material::PolymerElectrolyteBase * > 
_mapFactory
 This object is used to store all objects of type PolymerElectrolyteBase. More...
 

Protected Member Functions

Constructors, destructor and parameter initialization
 PolymerElectrolyteBase (std::string name)
 Constructor. More...
 
 PolymerElectrolyteBase ()
 Constructor. More...
 
virtual ~PolymerElectrolyteBase ()
 Destructor. More...
 
virtual void declare_parameters (ParameterHandler &param) const
 Declare parameters for a parameter file. More...
 
virtual void initialize (ParameterHandler &param)
 Initialize parameters. More...
 
Instance Delivery (Private functions)
virtual boost::shared_ptr
< FuelCellShop::Material::PolymerElectrolyteBase
create_replica ()
 This member function is used to create an object of type PolymerElectrolyteBase. More...
 
- Protected Member Functions inherited from FuelCellShop::Material::BaseMaterial
 BaseMaterial ()
 Constructor. More...
 
 BaseMaterial (const std::string &name)
 Constructor. More...
 
virtual ~BaseMaterial ()
 Destructor. More...
 

Static Protected Member Functions

Instance Delivery (Private and static)
static _mapFactoryget_mapFactory ()
 

Protected Attributes

FuelCellShop::Material::WaterVaporwater_mat
 Pointer to FuelCellShop::Material::WaterVapor object, dynamically allocated when the class is constructed. More...
 
Numerical constants
double EW
 Equivalent weight. More...
 
double rho_M
 Dry polymer electrolyte density [gm/cm^3]. More...
 
double H_O2
 Henry's Constant [Pa-cm^3/mol] for dissolution of oxygen. More...
 
double H_H2
 Henry's Constant [Pa-cm^3/mol] for dissolution of hydroge. More...
 
double permittivity
 Permittivity of the material. More...
 
double T
 Temperature [Kelvins] for isothermal case. More...
 
double lambda
 Membrane water content, $ \lambda $ for constant lambda case. More...
 
double p_total
 Total pressure (in Pascals). More...
 
double sigma_p
 Proton conductivity value [S/cm], given in the parameter file; used with "Constant" method. More...
 
double diffusion_w
 Diffusion of water in polymer electrolyte (if constant option is used), [cm2/s]. More...
 
double given_n_drag
 Given electroosmotic drag value in the parameter file. More...
 
double given_thermoosmotic_coeff
 Given thermo-osmotic diffusion coefficient [gm/(cm-s-K )] in the parameter file. More...
 
double given_enthalpy_sorption
 Given enthalpy of sorption of water [J/mol] in the parameter file. More...
 
double D_O2
 Diffusion coefficient of oxygen [cm^2/s], given in the parameter file. More...
 
double D_H2
 Effective diffusion coefficient of hydrogen [cm^2/s], given in the parameter file. More...
 
double D_Protons
 Diffusion coefficient of protons [cm^2/s], given in the parameter file. More...
 
Empirical method name strings
std::string method_conductivity
 Method/Semi-empirical relation to compute protonic conductivity. More...
 
std::string method_sorption
 Method to compute equilibrium water content value from sorption isotherm. More...
 
std::string method_diffusivity
 Method/semi-empirical relation to compute water diffusivity. More...
 
std::string method_electroosmotic_drag
 Method/semi-empirical relation to compute Electro-osmotic drag. More...
 
std::string method_thermoosmosis
 Method/semi-empirical relation to compute thermo-osmotic diffusion coefficient. More...
 
std::string method_enthalpy_sorption
 Method/semi-empirical relation to compute enthalpy of sorption of water. More...
 
Solution variables
FuelCellShop::SolutionVariable lambda_var
 Solution variable, membrane water content $ \lambda $. More...
 
FuelCellShop::SolutionVariable T_var
 Solution variable, temperature $ T $. More...
 
FuelCellShop::SolutionVariable xwater_var
 Solution variable, water vapor molar fraction $ x_{H_2O} $. More...
 
- Protected Attributes inherited from FuelCellShop::Material::BaseMaterial
const std::string name
 Name of the layer. More...
 
std::vector< VariableNamesderivative_flags
 Flags for derivatives: These flags are used to request derivatives of material properties. More...
 

Detailed Description

This class implements the interface to compute the properties of a "standard" polymer electrolyte membrane material.

Note that there are many types of polymer electrolye materials such as Nafion, Gore , Flemion membranes etc.. This class serves a common interface for each one of these types. It implements member functions to declare the parameter file for each catalyst, read the parameter file and select the appropriate polymer electrolyte materials based on the user input. It basically has accessor methods for various physical properties and return bulk transport propeties of the materials. These methods are implemented in the children classes. Since, almost all of the transport properties are dependent on solution variables, e.g. membrane_water_content, $ \lambda $, temperature_of_REV, $ T $ etc. Hence it's important to set these solution variables values inside the class, prior to accessing the bulk transport properties, e.g. proton conductivity, $ \sigma_{H^+} $ [S/cm], water diffusivity, $ D_{\lambda} $ [cm^2/s], etc. Besides, the derivatives of these transport properties w.r.t various solution variables can also be returned from this class.

Usage Details:

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

Member Typedef Documentation

This object is used to store all objects of type PolymerElectrolyteBase.

Constructor & Destructor Documentation

FuelCellShop::Material::PolymerElectrolyteBase::PolymerElectrolyteBase ( std::string  name)
inlineprotected

Constructor.

References lambda, p_total, T, and water_mat.

FuelCellShop::Material::PolymerElectrolyteBase::PolymerElectrolyteBase ( )
inlineprotected

Constructor.

References lambda, p_total, T, and water_mat.

virtual FuelCellShop::Material::PolymerElectrolyteBase::~PolymerElectrolyteBase ( )
inlineprotectedvirtual

Destructor.

References water_mat.

Member Function Documentation

static boost::shared_ptr<FuelCellShop::Material::PolymerElectrolyteBase > FuelCellShop::Material::PolymerElectrolyteBase::create_PolymerElectrolyte ( ParameterHandler &  param,
std::string  polymer_electrolyte_name 
)
inlinestatic

Function called in create_CatalystLayer and used to select the appropriate PolymerElectrolyteBase children that will be used in the layer.

The name of the PolymerElectrolyteBase children object to be used is provided in polymer_electrolyte_name.

The name of the PolymerElectrolyteBase children object is provided in the ParameterHandler in the CatalystLayer subsection as follows:

* subsection Catalyst Layer Properties <- This name is the name of the catalyst layer subsection where the kinetics are taking place.
* (...)
* set Polymer Electrolyte type = Nafion
* (...)
* end
*

current options are [ Nafion ]

References get_mapFactory(), and FcstUtilities::log.

Here is the call graph for this function:

virtual boost::shared_ptr<FuelCellShop::Material::PolymerElectrolyteBase > FuelCellShop::Material::PolymerElectrolyteBase::create_replica ( )
inlineprotectedvirtual

This member function is used to create an object of type PolymerElectrolyteBase.

Warning
This class MUST be redeclared in every child.

Reimplemented in FuelCellShop::Material::Nafion.

References FcstUtilities::log.

virtual void FuelCellShop::Material::PolymerElectrolyteBase::declare_parameters ( ParameterHandler &  param) const
inlineprotectedvirtual

Declare parameters for a parameter file.

Warning
This is a PureFunction and it does not declare anything, so please do not call this function in the children.

Reimplemented from FuelCellShop::Material::BaseMaterial.

Reimplemented in FuelCellShop::Material::Nafion.

References FcstUtilities::log.

static void FuelCellShop::Material::PolymerElectrolyteBase::declare_PolymerElectrolyte_parameters ( ParameterHandler &  param)
inlinestatic

Function used to declare all the data necessary in the parameter files for all PolymerElectrolyteBase children.

References get_mapFactory().

Here is the call graph for this function:

virtual void FuelCellShop::Material::PolymerElectrolyteBase::electroosmotic_drag ( std::vector< double > &  ) const
inlinevirtual

Compute the electro-osmotic drag coefficient inside the polymer electrolyte at every quadrature point in the cell.

It takes vector as an input argument and values are passed by reference.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Nafion.

References FcstUtilities::log.

virtual void FuelCellShop::Material::PolymerElectrolyteBase::electroosmotic_drag_derivative ( std::map< VariableNames, std::vector< double > > &  ) const
inlinevirtual

Compute the derivatives of electro-osmotic drag coefficient, at every quadrature point in the cell.

The derivatives are computed based on the flags set by the set_derivative_flags method. It takes map as an input argument by reference, in which Key corresponds to the variable about which derivative is being computed, i.e., VariableNames and Value corresponds to the vector storing the derivative values.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Nafion.

References FcstUtilities::log.

virtual double FuelCellShop::Material::PolymerElectrolyteBase::get_d2Hlambda_dT2 ( const double &  ) const
inlinevirtual

Compute $ \frac{\partial^2 \bar{H}_{\lambda}}{\partial T^2} $ of sorbed water in the polymer electrolyte as a function of $ T $.

It takes Temperature, $ T $ as input argument by reference and returns the double value corresponding to the second derivative.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Nafion.

References FcstUtilities::log.

double FuelCellShop::Material::PolymerElectrolyteBase::get_density ( ) const
inline

Get the density [gm/cm^3] of the dry polymer electrolyte material.

References rho_M.

Referenced by FuelCellShop::PostProcessing::WaterSorptionResponse< dim >::compute_responses().

Here is the caller graph for this function:

virtual double FuelCellShop::Material::PolymerElectrolyteBase::get_dHlambda_dT ( const double &  ) const
inlinevirtual

Compute $ \frac{\partial \bar{H}_{\lambda}}{\partial T} $ of sorbed water in the polymer electrolyte as a function of $ T $.

It takes Temperature, $ T $ as input argument by reference and returns the double value corresponding to the derivative.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Nafion.

References FcstUtilities::log.

double FuelCellShop::Material::PolymerElectrolyteBase::get_EW ( ) const
inline

Get Equivalent Weight (grams of dry polymer electrolyte per moles of $ SO_3^- $) of the polymer electrolyte material.

References EW.

Referenced by FuelCellShop::PostProcessing::WaterSorptionResponse< dim >::compute_responses().

Here is the caller graph for this function:

double FuelCellShop::Material::PolymerElectrolyteBase::get_H_H2 ( ) const
inline

Get Henry's constant [Pa-cm^3/mol] for hydrogen dissolution in the polymer electrolyte.

References H_H2.

double FuelCellShop::Material::PolymerElectrolyteBase::get_H_O2 ( ) const
inline

Get Henry's constant [Pa-cm^3/mol] for oxygen dissolution in the polymer electrolyte.

References H_O2.

virtual double FuelCellShop::Material::PolymerElectrolyteBase::get_Hlambda ( const double &  ) const
inlinevirtual

Compute the molar enthalpy, $ \bar{H}_{\lambda} ~$ [J/mol] of sorbed water in the polymer electrolyte as a function of $ T $.

It takes Temperature, $ T $ as input argument by reference and returns the double value corresponding to molar enthalpy.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Nafion.

References FcstUtilities::log.

static _mapFactory* FuelCellShop::Material::PolymerElectrolyteBase::get_mapFactory ( )
inlinestaticprotected

Referenced by create_PolymerElectrolyte(), and declare_PolymerElectrolyte_parameters().

Here is the caller graph for this function:

double FuelCellShop::Material::PolymerElectrolyteBase::get_permittivity ( ) const
inline

Get permittivity of the polymer electrolyte material.

References permittivity.

virtual void FuelCellShop::Material::PolymerElectrolyteBase::hydrogen_diffusivity ( double &  ) const
inlinevirtual

Compute the oxygen diffusivity, [cm^2/s], inside the polymer electrolyte for constant case.

It takes a double as an input argument and value is passed by reference.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Nafion.

References FcstUtilities::log.

virtual void FuelCellShop::Material::PolymerElectrolyteBase::initialize ( ParameterHandler &  param)
inlineprotectedvirtual

Initialize parameters.

Warning
This is a PureFunction and it does not declare anything, so please do not call this function in the children.

Reimplemented from FuelCellShop::Material::BaseMaterial.

Reimplemented in FuelCellShop::Material::Nafion.

References FcstUtilities::log.

virtual void FuelCellShop::Material::PolymerElectrolyteBase::oxygen_diffusivity ( double &  ) const
inlinevirtual

Compute the oxygen diffusivity, [cm^2/s], inside the polymer electrolyte for constant case.

It takes a double as an input argument and value is passed by reference.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Nafion.

References FcstUtilities::log.

virtual void FuelCellShop::Material::PolymerElectrolyteBase::oxygen_diffusivity ( std::vector< double > &  ) const
inlinevirtual

Compute the oxygen diffusivity, [cm^2/s], inside the polymer electrolyte at every quadrature point in the cell.

It takes vector as an input argument and values are passed by reference.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Nafion.

References FcstUtilities::log.

virtual void FuelCellShop::Material::PolymerElectrolyteBase::oxygen_diffusivity_derivative ( std::map< VariableNames, std::vector< double > > &  ) const
inlinevirtual

Compute the derivatives of oxygen diffusivity, at every quadrature point in the cell.

The derivatives are computed based on the flags set by the set_derivative_flags method. It takes map as an input argument by reference, in which Key corresponds to the variable about which derivative is being computed, i.e., VariableNames and Value corresponds to the vector storing the derivative values.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Nafion.

References FcstUtilities::log.

virtual void FuelCellShop::Material::PolymerElectrolyteBase::proton_conductivity ( double &  ) const
inlinevirtual

Compute the proton conductivity, $ \sigma_{H^+} $ [S/cm], inside the polymer electrolyte for constant case.

It takes a double as an input argument and value is passed by reference.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Nafion.

References FcstUtilities::log.

virtual void FuelCellShop::Material::PolymerElectrolyteBase::proton_conductivity ( std::vector< double > &  ) const
inlinevirtual

Compute the proton conductivity, $ \sigma_{H^+} $ [S/cm], inside the polymer electrolyte, at every quadrature point in the cell.

It takes vector as an input argument and values are passed by reference.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Nafion.

References FcstUtilities::log.

virtual void FuelCellShop::Material::PolymerElectrolyteBase::proton_conductivity_derivative ( std::map< VariableNames, std::vector< double > > &  ) const
inlinevirtual

Compute the derivatives of proton conductivity at every quadrature point in the cell.

The derivatives are computed based on the flags set by the set_derivative_flags method. It takes map as an input argument by reference, in which Key corresponds to the variable about which derivative is being computed, i.e., VariableNames and Value corresponds to the vector storing the derivative values.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Nafion.

References FcstUtilities::log.

virtual void FuelCellShop::Material::PolymerElectrolyteBase::proton_diffusivity ( double &  ) const
inlinevirtual

Compute the proton diffusivity, [cm^2/s], inside the polymer electrolyte for constant case.

It takes a double as an input argument and value is passed by reference.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Nafion.

References FcstUtilities::log.

void FuelCellShop::Material::PolymerElectrolyteBase::set_lambda ( const double &  L)
inline

Specify the water content in the polymer electrolyte for constant lambda case.

References lambda.

void FuelCellShop::Material::PolymerElectrolyteBase::set_membrane_water_content ( const FuelCellShop::SolutionVariable l_in)
inline

Set the solution variable, membrane water content $ \lambda $.

It also initializes the temperature solution variable, if it isn't initialized yet. This will help in the case of isothermal applications. set_T method should be used in the initialization of the application to ensure that temperature value is set for isothermal case, otherwise default value 0.0 will be used leading to wrong results.

References FuelCellShop::SolutionVariable::get_variablename(), FuelCellShop::SolutionVariable::is_initialized(), lambda_var, membrane_water_content, T, T_var, and temperature_of_REV.

Here is the call graph for this function:

void FuelCellShop::Material::PolymerElectrolyteBase::set_p_t ( const double &  p_t)
inline

Specify the total pressure in Pascals.

References p_total.

void FuelCellShop::Material::PolymerElectrolyteBase::set_T ( const double &  Temp)
inline

Specify the temperature [Kelvin] in the polymer electrolyte for isothermal case.

References T.

void FuelCellShop::Material::PolymerElectrolyteBase::set_temperature ( const FuelCellShop::SolutionVariable T_in)
inline

Set the solution variable, temperature $ T $ [Kelvin].

It also initializes the lambda solution variable, it it isn't initialized yet. This will help in the case of applications where $ \lambda $ is not being solved for. Membrane water content value is defaulted to 12.0, in case if different value is required, use set_lambda method.

References FuelCellShop::SolutionVariable::get_variablename(), FuelCellShop::SolutionVariable::is_initialized(), lambda, lambda_var, membrane_water_content, T_var, and temperature_of_REV.

Referenced by FuelCellShop::PostProcessing::WaterSorptionResponse< dim >::compute_responses().

Here is the call graph for this function:

Here is the caller graph for this function:

void FuelCellShop::Material::PolymerElectrolyteBase::set_water_molar_fraction ( const FuelCellShop::SolutionVariable x_in)
inline

Set the solution variable, water vapor molar fraction $ x_{H_2O} $.

It also initializes the temperature solution variable, if it isn't initialized yet. This will help in the case of isothermal applications. set_T method should be used in the initialization of the application to ensure that temperature value is set for isothermal case, otherwise default value 0.0 will be used leading to wrong results. Also, total pressure should be set using set_p_t method.

References FuelCellShop::SolutionVariable::get_variablename(), FuelCellShop::SolutionVariable::is_initialized(), T, T_var, temperature_of_REV, water_molar_fraction, and xwater_var.

Referenced by FuelCellShop::PostProcessing::WaterSorptionResponse< dim >::compute_responses().

Here is the call graph for this function:

Here is the caller graph for this function:

virtual void FuelCellShop::Material::PolymerElectrolyteBase::sorption_enthalpy ( std::vector< double > &  ) const
inlinevirtual

Compute the enthalpy of sorption [J/mol] of water, at all quadrature points in the cell.

It takes vector as an input argument and values are passed by reference.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Nafion.

References FcstUtilities::log.

virtual void FuelCellShop::Material::PolymerElectrolyteBase::sorption_enthalpy_derivative ( std::map< VariableNames, std::vector< double > > &  ) const
inlinevirtual

Compute the derivatives of enthalpy of sorption of water, at every quadrature point in the cell.

The derivatives are computed based on the flags set by the set_derivative_flags method. It takes map as an input argument by reference, in which Key corresponds to the variable about which derivative is being computed, i.e., VariableNames and Value corresponds to the vector storing the derivative values.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Nafion.

References FcstUtilities::log.

virtual void FuelCellShop::Material::PolymerElectrolyteBase::sorption_isotherm ( std::vector< double > &  ) const
inlinevirtual

Compute the equilibrium water content, $ \lambda_{eq} $, inside the polymer electrolyte for vapor-equilibriated case, at every quadrature point in the cell.

It takes a vector as an input argument and values are passed by reference.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Nafion.

References FcstUtilities::log.

Referenced by FuelCellShop::PostProcessing::WaterSorptionResponse< dim >::compute_responses().

Here is the caller graph for this function:

virtual void FuelCellShop::Material::PolymerElectrolyteBase::sorption_isotherm_derivative ( std::map< VariableNames, std::vector< double > > &  ) const
inlinevirtual

Compute the derivatives for water sorption source terms, $ \frac{\partial \lambda_{eq}}{\partial u} $, at every quadrature point in the cell.

The derivatives are computed based on the flags set by the set_derivative_flags method. It takes map as an input argument by reference, in which Key corresponds to the variable about which derivative is being computed, i.e., VariableNames and Value corresponds to the vector storing the derivative values.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Nafion.

References FcstUtilities::log.

virtual void FuelCellShop::Material::PolymerElectrolyteBase::thermoosmotic_coeff ( std::vector< double > &  ) const
inlinevirtual

Compute the thermo-osmotic diffusion coefficient, [gm/ (cm-s-K )], inside the polymer electrolyte at every quadrature point in the cell.

It takes vector as an input argument and values are passed by reference.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Nafion.

References FcstUtilities::log.

virtual void FuelCellShop::Material::PolymerElectrolyteBase::thermoosmotic_coeff_derivative ( std::map< VariableNames, std::vector< double > > &  ) const
inlinevirtual

Compute the derivatives of thermo-osmotic diffusion coefficient, at every quadrature point in the cell.

The derivatives are computed based on the flags set by the set_derivative_flags method. It takes map as an input argument by reference, in which Key corresponds to the variable about which derivative is being computed, i.e., VariableNames and Value corresponds to the vector storing the derivative values.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Nafion.

References FcstUtilities::log.

virtual void FuelCellShop::Material::PolymerElectrolyteBase::water_diffusivity ( double &  ) const
inlinevirtual

Compute the water diffusivity, $ D_{\lambda} $ [cm^2/s], inside the polymer electrolyte for constant case.

It takes a double as an input argument and value is passed by reference.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Nafion.

References FcstUtilities::log.

virtual void FuelCellShop::Material::PolymerElectrolyteBase::water_diffusivity ( std::vector< double > &  ) const
inlinevirtual

Compute the water diffusivity, $ D_{\lambda} $ [cm^2/s], inside the polymer electrolyte at every quadrature point in the cell.

It takes vector as an input argument and values are passed by reference.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Nafion.

References FcstUtilities::log.

virtual void FuelCellShop::Material::PolymerElectrolyteBase::water_diffusivity_derivative ( std::map< VariableNames, std::vector< double > > &  ) const
inlinevirtual

Compute the derivatives of water diffusivity at every quadrature point in the cell.

The derivatives are computed based on the flags set by the set_derivative_flags method. It takes map as an input argument by reference, in which Key corresponds to the variable about which derivative is being computed, i.e., VariableNames and Value corresponds to the vector storing the derivative values.

Note
This is an abstract virtual function. Please look at the child classes for its reimplementations (if any).

Reimplemented in FuelCellShop::Material::Nafion.

References FcstUtilities::log.

Member Data Documentation

double FuelCellShop::Material::PolymerElectrolyteBase::D_H2
protected

Effective diffusion coefficient of hydrogen [cm^2/s], given in the parameter file.

double FuelCellShop::Material::PolymerElectrolyteBase::D_O2
protected

Diffusion coefficient of oxygen [cm^2/s], given in the parameter file.

double FuelCellShop::Material::PolymerElectrolyteBase::D_Protons
protected

Diffusion coefficient of protons [cm^2/s], given in the parameter file.

double FuelCellShop::Material::PolymerElectrolyteBase::diffusion_w
protected

Diffusion of water in polymer electrolyte (if constant option is used), [cm2/s].

double FuelCellShop::Material::PolymerElectrolyteBase::EW
protected

Equivalent weight.

Referenced by get_EW().

double FuelCellShop::Material::PolymerElectrolyteBase::given_enthalpy_sorption
protected

Given enthalpy of sorption of water [J/mol] in the parameter file.

This value will be used when method_enthalpy_sorption is set to "Constant".

double FuelCellShop::Material::PolymerElectrolyteBase::given_n_drag
protected

Given electroosmotic drag value in the parameter file.

This value will be used when method_electroosmotic_drag is set to "Constant".

double FuelCellShop::Material::PolymerElectrolyteBase::given_thermoosmotic_coeff
protected

Given thermo-osmotic diffusion coefficient [gm/(cm-s-K )] in the parameter file.

This value will be used when method_thermoosmosis is set to "Constant".

double FuelCellShop::Material::PolymerElectrolyteBase::H_H2
protected

Henry's Constant [Pa-cm^3/mol] for dissolution of hydroge.

Referenced by get_H_H2().

double FuelCellShop::Material::PolymerElectrolyteBase::H_O2
protected

Henry's Constant [Pa-cm^3/mol] for dissolution of oxygen.

Referenced by get_H_O2().

double FuelCellShop::Material::PolymerElectrolyteBase::lambda
protected

Membrane water content, $ \lambda $ for constant lambda case.

In order to update this value, use set_lambda method.

Referenced by PolymerElectrolyteBase(), set_lambda(), and set_temperature().

FuelCellShop::SolutionVariable FuelCellShop::Material::PolymerElectrolyteBase::lambda_var
protected

Solution variable, membrane water content $ \lambda $.

Referenced by set_membrane_water_content(), and set_temperature().

std::string FuelCellShop::Material::PolymerElectrolyteBase::method_conductivity
protected

Method/Semi-empirical relation to compute protonic conductivity.

Referenced by FuelCellShop::Material::Nafion::modify_parameters().

std::string FuelCellShop::Material::PolymerElectrolyteBase::method_diffusivity
protected

Method/semi-empirical relation to compute water diffusivity.

Referenced by FuelCellShop::Material::Nafion::modify_parameters().

std::string FuelCellShop::Material::PolymerElectrolyteBase::method_electroosmotic_drag
protected

Method/semi-empirical relation to compute Electro-osmotic drag.

Referenced by FuelCellShop::Material::Nafion::modify_parameters().

std::string FuelCellShop::Material::PolymerElectrolyteBase::method_enthalpy_sorption
protected

Method/semi-empirical relation to compute enthalpy of sorption of water.

Referenced by FuelCellShop::Material::Nafion::modify_parameters().

std::string FuelCellShop::Material::PolymerElectrolyteBase::method_sorption
protected

Method to compute equilibrium water content value from sorption isotherm.

Referenced by FuelCellShop::Material::Nafion::modify_parameters().

std::string FuelCellShop::Material::PolymerElectrolyteBase::method_thermoosmosis
protected

Method/semi-empirical relation to compute thermo-osmotic diffusion coefficient.

Referenced by FuelCellShop::Material::Nafion::modify_parameters().

double FuelCellShop::Material::PolymerElectrolyteBase::p_total
protected

Total pressure (in Pascals).

In order to update this value, use set_p_t method.

Referenced by PolymerElectrolyteBase(), and set_p_t().

double FuelCellShop::Material::PolymerElectrolyteBase::permittivity
protected

Permittivity of the material.

Referenced by get_permittivity().

double FuelCellShop::Material::PolymerElectrolyteBase::rho_M
protected

Dry polymer electrolyte density [gm/cm^3].

Referenced by get_density().

double FuelCellShop::Material::PolymerElectrolyteBase::sigma_p
protected

Proton conductivity value [S/cm], given in the parameter file; used with "Constant" method.

double FuelCellShop::Material::PolymerElectrolyteBase::T
protected

Temperature [Kelvins] for isothermal case.

In order to update this value, use set_T method.

Referenced by PolymerElectrolyteBase(), set_membrane_water_content(), set_T(), and set_water_molar_fraction().

FuelCellShop::SolutionVariable FuelCellShop::Material::PolymerElectrolyteBase::T_var
protected

Solution variable, temperature $ T $.

Referenced by set_membrane_water_content(), set_temperature(), and set_water_molar_fraction().

FuelCellShop::Material::WaterVapor* FuelCellShop::Material::PolymerElectrolyteBase::water_mat
protected

Pointer to FuelCellShop::Material::WaterVapor object, dynamically allocated when the class is constructed.

Referenced by PolymerElectrolyteBase(), and ~PolymerElectrolyteBase().

FuelCellShop::SolutionVariable FuelCellShop::Material::PolymerElectrolyteBase::xwater_var
protected

Solution variable, water vapor molar fraction $ x_{H_2O} $.

Referenced by set_water_molar_fraction().


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