17 #ifndef _FUELCELLSHOP__MEMBRANE_LAYER_H 
   18 #define _FUELCELLSHOP__MEMBRANE_LAYER_H 
   26 namespace FuelCellShop
 
  139                          iterator->second->declare_parameters(pem_section_name, param);
 
  156             static boost::shared_ptr<FuelCellShop::Layer::MembraneLayer<dim> > 
create_MembraneLayer (std::string pem_section_name, 
 
  157                                                                                                      ParameterHandler ¶m)
 
  159                 boost::shared_ptr<FuelCellShop::Layer::MembraneLayer<dim> > pointer;
 
  161                 std::string concrete_name;
 
  162                 param.enter_subsection(
"Fuel cell data");
 
  164                     param.enter_subsection(pem_section_name);
 
  166                         concrete_name = param.get(
"Membrane layer type");
 
  169                     param.leave_subsection();
 
  171                 param.leave_subsection();
 
  177                     if (iterator->second)
 
  189                      FcstUtilities::log<<
"Concrete name in FuelCellShop::Layer::MembraneLayer<dim>::create_MembraneLayer does not exist"<<std::endl;
 
  193                 pointer->initialize(param);
 
  391                                              ParameterHandler ¶m) 
const;           
 
  422             virtual boost::shared_ptr<FuelCellShop::Layer::MembraneLayer<dim> > 
create_replica (std::string &
name)
 
  424                 const std::type_info& info = 
typeid(*this);
 
  426                 << 
" called in Class " 
  427                 << info.name() << std::endl;
 
  442              boost::shared_ptr< FuelCellShop::Material::PolymerElectrolyteBase > 
electrolyte;    
 
virtual void effective_oxygen_diffusivity(double &) const 
Compute the constant effective oxygen diffusivity of the membrane. 
 
FuelCellShop::Material::PolymerElectrolyteBase * get_electrolyte() const 
Method to provide access to the pointer to electrolyte material in the membrane layer. 
Definition: membrane_layer.h:256
 
virtual void effective_thermoosmotic_diffusivity(std::vector< double > &) const 
Compute the effective thermo-osmotic diffusivity of lambda (sorbed water), at all quadrature points i...
 
static boost::shared_ptr< FuelCellShop::Layer::MembraneLayer< dim > > create_MembraneLayer(std::string pem_section_name, ParameterHandler ¶m)
Function used to select the appropriate MembraneLayer type as specified in the ParameterHandler under...
Definition: membrane_layer.h:156
 
static _mapFactory * get_mapFactory()
Definition: membrane_layer.h:412
 
VariableNames
The enumeration containing the names of some of the available FCST solution variables and their deriv...
Definition: system_management.h:63
 
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...
 
static void declare_MembraneLayer_parameters(std::string pem_section_name, ParameterHandler ¶m)
Function used to declare all the data necessary in the parameter files for all MembraneLayer children...
Definition: membrane_layer.h:133
 
virtual void set_constant_solution(const double &value, const VariableNames &name)
Set those solution variables which are constant in the particular application. 
Definition: base_layer.h:113
 
const std::string name
Name of the layer. 
Definition: base_layer.h:336
 
void initialize(ParameterHandler ¶m)
Member function used to read in data and initialize the necessary data to compute the coefficients...
 
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 cl...
Definition: membrane_layer.h:217
 
~MembraneLayer()
Destructor. 
 
virtual void set_constant_solution(const double &value, const VariableNames &name)
Set those solution variables which are constant in the particular application. 
Definition: membrane_layer.h:245
 
Definition: system_management.h:76
 
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: membrane_layer.h:422
 
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 ...
Definition: membrane_layer.h:226
 
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...
 
void declare_parameters(ParameterHandler ¶m) const 
Declare all necessary parameters in order to compute the coefficients. 
Definition: membrane_layer.h:381
 
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...
 
boost::shared_ptr< FuelCellShop::Material::PolymerElectrolyteBase > electrolyte
Pointer to the electrolyte object used in the constructor, and it is used to calculate the effective ...
Definition: membrane_layer.h:442
 
virtual void effective_thermal_conductivity(double &) const 
Compute the constant effective thermal conductivity of membrane layer. 
 
FCSTLogStream log
Object used to output data to file and, if file attached recorded to a file as well. 
 
This class implements the interface to compute the properties of a "standard" polymer electrolyte mem...
Definition: polymer_electrolyte_material_base.h:59
 
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 ...
 
std::string electrolyte_type
Type of membrane. 
Definition: membrane_layer.h:436
 
std::map< std::string, MembraneLayer< dim > * > _mapFactory
This object is used to store all objects of type GasDiffusionLayer. 
Definition: membrane_layer.h:407
 
Virtual class used to provide the interface for all MembraneLayer children. 
Definition: membrane_layer.h:98
 
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 me...
 
MembraneLayer()
Replica Constructors. 
 
virtual void effective_water_diffusivity(double &) const 
Compute the constant effective water diffusivity of the membrane. 
 
std::vector< VariableNames > derivative_flags
Flags for derivatives: These flags are used to request derivatives. 
Definition: base_layer.h:348
 
Virtual class used to characterize a generic layer interface. 
Definition: base_layer.h:58
 
virtual void effective_proton_conductivity(double &) const 
Compute the constant effective proton conductivity of the membrane.