OpenFCST: The open-source Fuel Cell Simulation Toolbox
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
catalyst_layer.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 // - Class: catalyst_layer.h
10 // - Description: Class characterizing the base catalyst layer and defining interface methods.
11 // - Developers: Marc Secanell (2011-2013) and Madhur Bhaiya (2013)
12 // - Id: $Id: catalyst_layer.h 2605 2014-08-15 03:36:44Z secanell $
13 //
14 //---------------------------------------------------------------------------
15 
16 #ifndef _FUELCELLSHOP__LAYER_CATALYST_LAYER_H
17 #define _FUELCELLSHOP__LAYER_CATALYST_LAYER_H
18 
19 // Include deal.II classes
20 
21 // Include FCST classes
22 #include <utils/fcst_constants.h>
23 #include <layers/base_layer.h>
24 #include <layers/porous_layer.h>
29 #include <materials/platinum.h>
30 #include <materials/carbon.h>
31 #include <materials/nafion.h>
32 #include <materials/PureGas.h>
33 #include <materials/GasMixture.h>
34 #include <microscale/PSD_base.h>
36 
37 //Include STL
38 #include <map>
39 
40 class MultiScaleCLTest;
41 
42 namespace FuelCellShop
43 {
44  namespace Layer
45  {
123  template <int dim>
125  public PorousLayer<dim>
126  {
127 
128  public:
130 
131 
135  friend class ::MultiScaleCLTest;
137 
139 
140 
161  static void declare_CatalystLayer_parameters (const std::string &cl_section_name,
162  ParameterHandler &param)
163  {
166  iterator++)
167  {
168  iterator->second->declare_parameters(cl_section_name, param);
169  }
170  }
171 
185  static boost::shared_ptr<FuelCellShop::Layer::CatalystLayer<dim> > create_CatalystLayer (const std::string& cl_section_name,
186  ParameterHandler &param)
187  {
188  boost::shared_ptr<FuelCellShop::Layer::CatalystLayer<dim> > pointer;
189 
190  std::string concrete_name;
191  param.enter_subsection("Fuel cell data");
192  {
193  param.enter_subsection(cl_section_name);
194  {
195  concrete_name = param.get("Catalyst layer type");
196  //FcstUtilities::log << "name: "<<concrete_name.c_str()<<std::endl;
197  }
198  param.leave_subsection();
199  }
200  param.leave_subsection();
201 
203 
205  {
206  if (iterator->second)
207  {
208  pointer = iterator->second->create_replica(cl_section_name);
209  }
210  else
211  {
212  FcstUtilities::log<<"Pointer not initialized"<<std::endl;
213  abort();
214  }
215  }
216  else
217  {
218  FcstUtilities::log<<"Concrete name in FuelCellShop::Layer::CatalystLayer<dim>::create_CatalystLayer does not exist"<<std::endl;
219  abort();
220  }
221 
222  pointer->initialize(param);
223 
224  return pointer;
225  }
227 
229 
230 
244  virtual void set_constant_solution(const double& value, const VariableNames& name)
245  {
247 
248  if (name == temperature_of_REV)
249  {
250  this->electrolyte->set_T(value);
251  }
252 
253  else if (name == total_pressure)
254  {
255  this->kinetics->set_p_t(value);
256  this->electrolyte->set_p_t(value);
257  }
258  else if (name == membrane_water_content)
259  {
260  this->electrolyte->set_lambda(value);
261  }
262  }
263 
281  virtual void set_solution(const std::vector< SolutionVariable >&);
282 
287  virtual void set_derivative_flags(const std::vector<VariableNames>& flags)
288  {
289  this->derivative_flags = flags;
290  this->kinetics->set_derivative_flags(flags);
291  this->electrolyte->set_derivative_flags(flags);
292  }
293 
300  {
301  this->kinetics->set_reaction_kinetics(rxn_name);
302  this->catalyst->set_reaction_kinetics(rxn_name);
303  }
305 
307 
308 
324  const std::type_info& get_base_type() const
325  {
326  return typeid(CatalystLayer<dim>);
327  }
328 
339  virtual void get_volume_fractions(std::map<std::string, double>& )
340  {
341  const std::type_info& info = typeid(*this);
342  FcstUtilities::log << "Pure function " << __FUNCTION__
343  << " called in Class "
344  << info.name() << std::endl;
345  };
346 
355  virtual inline void get_loadings(std::map<std::string, double>& )
356  {
357  const std::type_info& info = typeid(*this);
358  FcstUtilities::log << "Pure function " << __FUNCTION__
359  << " called in Class "
360  << info.name() << std::endl;
361  };
362 
364 
372  virtual void set_cell_id(const unsigned int& id){
373  const std::type_info& info = typeid(*this);
374  FcstUtilities::log << "Pure function " << __FUNCTION__
375  << " called in Class "
376  << info.name() << std::endl;
377  }
378 
380 
381 
387  virtual void effective_gas_diffusivity(const double&, const double&, double&) const
388  {
389  const std::type_info& info = typeid(*this);
390  FcstUtilities::log << "Pure function " << __FUNCTION__
391  << " called in Class "
392  << info.name() << std::endl;
393  };
394 
403  virtual void effective_gas_diffusivity(std::vector< Tensor<2,dim> >& ) const
404  {
405  const std::type_info& info = typeid(*this);
406  FcstUtilities::log << "Pure function " << __FUNCTION__
407  << " called in Class "
408  << info.name() << std::endl;
409  };
417  virtual void derivative_effective_gas_diffusivity(std::map< VariableNames, std::vector< Tensor<2,dim> > >& ) const
418  {
419  const std::type_info& info = typeid(*this);
420  FcstUtilities::log << "Pure function " << __FUNCTION__
421  << " called in Class "
422  << info.name() << std::endl;
423  };
424 
425 
435  virtual void effective_gas_diffusivity(Table< 2, Tensor<2,dim> >&) const
436  {
437  const std::type_info& info = typeid(*this);
438  FcstUtilities::log << "Pure function " << __FUNCTION__
439  << " called in Class "
440  << info.name() << std::endl;
441  };
442 
446  virtual void effective_electron_conductivity(double& ) const
447  {
448  const std::type_info& info = typeid(*this);
449  FcstUtilities::log << "Pure function " << __FUNCTION__
450  << " called in Class "
451  << info.name() << std::endl;
452  };
456  virtual void effective_electron_conductivity(Tensor<2,dim>& ) const
457  {
458  const std::type_info& info = typeid(*this);
459  FcstUtilities::log << "Pure function " << __FUNCTION__
460  << " called in Class "
461  << info.name() << std::endl;
462  };
468  virtual void derivative_effective_electron_conductivity(std::vector<double>& ) const
469  {
470  const std::type_info& info = typeid(*this);
471  FcstUtilities::log << "Pure function " << __FUNCTION__
472  << " called in Class "
473  << info.name() << std::endl;
474  };
480  virtual void derivative_effective_electron_conductivity(std::vector<Tensor<2,dim> >& ) const
481  {
482  const std::type_info& info = typeid(*this);
483  FcstUtilities::log << "Pure function " << __FUNCTION__
484  << " called in Class "
485  << info.name() << std::endl;
486  };
487 
491  virtual void effective_proton_conductivity(double& ) const
492  {
493  const std::type_info& info = typeid(*this);
494  FcstUtilities::log << "Pure function " << __FUNCTION__
495  << " called in Class "
496  << info.name() << std::endl;
497  };
501  virtual void effective_proton_conductivity(std::vector<double>& ) const
502  {
503  const std::type_info& info = typeid(*this);
504  FcstUtilities::log << "Pure function " << __FUNCTION__
505  << " called in Class "
506  << info.name() << std::endl;
507  };
513  virtual void derivative_effective_proton_conductivity(std::map< VariableNames, std::vector<double> >& ) const
514  {
515  const std::type_info& info = typeid(*this);
516  FcstUtilities::log << "Pure function " << __FUNCTION__
517  << " called in Class "
518  << info.name() << std::endl;
519  };
520 
524  virtual void effective_thermal_conductivity(double& ) const
525  {
526  const std::type_info& info = typeid(*this);
527  FcstUtilities::log << "Pure function " << __FUNCTION__
528  << " called in Class "
529  << info.name() << std::endl;
530  };
534  virtual void effective_thermal_conductivity(Tensor<2,dim>& ) const
535  {
536  const std::type_info& info = typeid(*this);
537  FcstUtilities::log << "Pure function " << __FUNCTION__
538  << " called in Class "
539  << info.name() << std::endl;
540  };
544  virtual void effective_thermal_conductivity(std::vector< Tensor<2,dim> >& ) const
545  {
546  const std::type_info& info = typeid(*this);
547  FcstUtilities::log << "Pure function " << __FUNCTION__
548  << " called in Class "
549  << info.name() << std::endl;
550  }
556  virtual void derivative_effective_thermal_conductivity(std::vector<double>& ) const
557  {
558  const std::type_info& info = typeid(*this);
559  FcstUtilities::log << "Pure function " << __FUNCTION__
560  << " called in Class "
561  << info.name() << std::endl;
562  };
568  virtual void derivative_effective_thermal_conductivity(std::vector<Tensor<2,dim> >& ) const
569  {
570  const std::type_info& info = typeid(*this);
571  FcstUtilities::log << "Pure function " << __FUNCTION__
572  << " called in Class "
573  << info.name() << std::endl;
574  };
575 
579  virtual void effective_water_diffusivity(double& ) const
580  {
581  const std::type_info& info = typeid(*this);
582  FcstUtilities::log << "Pure function " << __FUNCTION__
583  << " called in Class "
584  << info.name() << std::endl;
585  };
590  virtual void effective_water_diffusivity(std::vector<double>& ) const
591  {
592  const std::type_info& info = typeid(*this);
593  FcstUtilities::log << "Pure function " << __FUNCTION__
594  << " called in Class "
595  << info.name() << std::endl;
596  }
597 
603  virtual void derivative_effective_water_diffusivity(std::map< VariableNames, std::vector<double> >& ) const
604  {
605  const std::type_info& info = typeid(*this);
606  FcstUtilities::log << "Pure function " << __FUNCTION__
607  << " called in Class "
608  << info.name() << std::endl;
609  }
610 
615  virtual void effective_thermoosmotic_diffusivity(std::vector<double>& ) const
616  {
617  const std::type_info& info = typeid(*this);
618  FcstUtilities::log << "Pure function " << __FUNCTION__
619  << " called in Class "
620  << info.name() << std::endl;
621  };
622 
628  virtual void derivative_effective_thermoosmotic_diffusivity(std::map< VariableNames, std::vector<double> >& ) const
629  {
630  const std::type_info& info = typeid(*this);
631  FcstUtilities::log << "Pure function " << __FUNCTION__
632  << " called in Class "
633  << info.name() << std::endl;
634  }
635 
639  virtual void gas_permeablity(double& ) const
640  {
641  const std::type_info& info = typeid(*this);
642  FcstUtilities::log << "Pure function " << __FUNCTION__
643  << " called in Class "
644  << info.name() << std::endl;
645  };
649  virtual void gas_permeablity(Tensor<2,dim>& ) const
650  {
651  const std::type_info& info = typeid(*this);
652  FcstUtilities::log << "Pure function " << __FUNCTION__
653  << " called in Class "
654  << info.name() << std::endl;
655  };
661  virtual void derivative_gas_permeablity(std::vector<double>& ) const
662  {
663  const std::type_info& info = typeid(*this);
664  FcstUtilities::log << "Pure function " << __FUNCTION__
665  << " called in Class "
666  << info.name() << std::endl;
667  };
673  virtual void derivative_gas_permeablity(std::vector<Tensor<2,dim> >& ) const
674  {
675  const std::type_info& info = typeid(*this);
676  FcstUtilities::log << "Pure function " << __FUNCTION__
677  << " called in Class "
678  << info.name() << std::endl;
679  };
680 
684  virtual void liquid_permeablity(std::vector< Tensor<2,dim> >& ) const
685  {
686  const std::type_info& info = typeid(*this);
687  FcstUtilities::log << "Pure function " << __FUNCTION__
688  << " called in Class "
689  << info.name() << std::endl;
690  };
696  virtual void derivative_liquid_permeablity(std::map< VariableNames, std::vector< Tensor<2,dim> > >& ) const
697  {
698  const std::type_info& info = typeid(*this);
699  FcstUtilities::log << "Pure function " << __FUNCTION__
700  << " called in Class "
701  << info.name() << std::endl;
702  };
703 
707  virtual void relative_liquid_permeability_PSD(std::vector< Tensor<2,dim> >& ) const
708  {
709  const std::type_info& info = typeid(*this);
710  FcstUtilities::log << "Pure function " << __FUNCTION__
711  << " called in Class "
712  << info.name() << std::endl;
713  };
714 
715  virtual void derivative_relative_liquid_permeablity_PSD(std::map< VariableNames, std::vector< Tensor<2,dim> > > & ) const
716  {
717  const std::type_info& info = typeid(*this);
718  FcstUtilities::log << "Pure function " << __FUNCTION__
719  << " called in Class "
720  << info.name() << std::endl;
721  };
722 
723  virtual void derivative_relative_liquid_permeablity_PSD(std::vector<double> & ) const
724  {
725  const std::type_info& info = typeid(*this);
726  FcstUtilities::log << "Pure function " << __FUNCTION__
727  << " called in Class "
728  << info.name() << std::endl;
729  };
730 
731 
732 
733  virtual void saturated_liquid_permeablity_PSD(double& ) const
734  {
735  const std::type_info& info = typeid(*this);
736  FcstUtilities::log << "Pure function " << __FUNCTION__
737  << " called in Class "
738  << info.name() << std::endl;
739  };
740 
744  virtual void pcapillary(std::vector<double>&) const
745  {
746  const std::type_info& info = typeid(*this);
747  FcstUtilities::log << "Pure function " << __FUNCTION__
748  << " called in Class "
749  << info.name() << std::endl;
750  };
751 
752  virtual void saturation_from_capillary_equation(std::vector<double>&) const
753  {
754  const std::type_info& info = typeid(*this);
755  FcstUtilities::log << "Pure function " << __FUNCTION__
756  << " called in Class "
757  << info.name() << std::endl;
758  };
759 
760  virtual void derivative_saturation_from_capillary_equation_PSD(std::vector<double>&) const
761  {
762  const std::type_info& info = typeid(*this);
763  FcstUtilities::log << "Pure function " << __FUNCTION__
764  << " called in Class "
765  << info.name() << std::endl;
766  };
770  virtual void dpcapillary_dsat(std::vector<double> &) const
771  {
772  const std::type_info& info = typeid(*this);
773  FcstUtilities::log << "Pure function " << __FUNCTION__
774  << " called in Class "
775  << info.name() << std::endl;
776  };
782  virtual void derivative_dpcapillary_dsat(std::map< VariableNames, std::vector<double> > &) const
783  {
784  const std::type_info& info = typeid(*this);
785  FcstUtilities::log << "Pure function " << __FUNCTION__
786  << " called in Class "
787  << info.name() << std::endl;
788  };
789 
794  virtual void interfacial_surface_area(std::vector<double>&) const
795  {
796  const std::type_info& info = typeid(*this);
797  FcstUtilities::log << "Pure function " << __FUNCTION__
798  << " called in Class "
799  << info.name() << std::endl;
800  };
806  virtual void derivative_interfacial_surface_area(std::map< VariableNames, std::vector<double> >&) const
807  {
808  const std::type_info& info = typeid(*this);
809  FcstUtilities::log << "Pure function " << __FUNCTION__
810  << " called in Class "
811  << info.name() << std::endl;
812  };
813 
818  virtual void interfacial_surface_area_PSD(std::vector<double>&) const
819  {
820  const std::type_info& info = typeid(*this);
821  FcstUtilities::log << "Pure function " << __FUNCTION__
822  << " called in Class "
823  << info.name() << std::endl;
824  };
830  virtual void derivative_interfacial_surface_area_PSD(std::map< VariableNames, std::vector<double> >&) const
831  {
832  const std::type_info& info = typeid(*this);
833  FcstUtilities::log << "Pure function " << __FUNCTION__
834  << " called in Class "
835  << info.name() << std::endl;
836  };
837 
838  virtual void derivative_interfacial_surface_area_PSD(std::vector<double>&) const
839  {
840  const std::type_info& info = typeid(*this);
841  FcstUtilities::log << "Pure function " << __FUNCTION__
842  << " called in Class "
843  << info.name() << std::endl;
844  };
845 
846 
848 
850 
851 
855  virtual void current_density(std::vector<double>&)
856  {
857  const std::type_info& info = typeid(*this);
858  FcstUtilities::log << "Pure function " << __FUNCTION__
859  << " called in Class "
860  << info.name() << std::endl;
861  };
862 
867  virtual void current_density(std::vector<double>&current, std::vector<double>&effectiveness)
868  {
869  for (unsigned int i = 0; i<effectiveness.size(); ++i)
870  effectiveness[i] = 0;
871 
872  this->current_density(current);
873  };
874 
879  virtual void derivative_current_density(std::map< VariableNames, std::vector<double> >& )
880  {
881  const std::type_info& info = typeid(*this);
882  FcstUtilities::log << "Pure function " << __FUNCTION__
883  << " called in Class "
884  << info.name() << std::endl;
885  };
886 
888  virtual double get_active_area_Pt() const
889  {
890  const std::type_info& info = typeid(*this);
891  FcstUtilities::log << "Pure function " << __FUNCTION__
892  << " called in Class "
893  << info.name() << std::endl;
894  return 0.0;
895  };
896 
899  {
900  return this->electrolyte.get();
901  }
902 
903 
906  {
907  return this->kinetics.get();
908  }
909 
911 
913  inline std::string get_kinetics_type(){
914  return kinetics_type;
915  }
916 
917 
919  virtual SolutionMap get_coverages();
920 
921 
922 
923 
924  protected:
925 
927 
928 
934  CatalystLayer();
935 
939  ~CatalystLayer();
940 
944  CatalystLayer(const std::string& name);
945 
946 
954  virtual void declare_parameters (const std::string& name, ParameterHandler &param) const;
955 
960  void initialize (ParameterHandler &param);
961 
962 
964 
966 
972  typedef std::map< std::string, CatalystLayer<dim>* > _mapFactory;
974 
976 
977 
1028  {
1029  static _mapFactory mapFactory;
1030  return &mapFactory;
1031  }
1033 
1034 
1039  virtual boost::shared_ptr<FuelCellShop::Layer::CatalystLayer<dim> > create_replica (const std::string &name)
1040  {
1041  const std::type_info& info = typeid(*this);
1042  FcstUtilities::log << "Pure function " << __FUNCTION__
1043  << " called in Class "
1044  << info.name() << std::endl;
1045  }
1047 
1049 
1050 
1054 
1059 
1061  std::string catalyst_type;
1062 
1065 
1067  std::string electrolyte_type;
1068 
1070  std::string kinetics_type;
1071 
1073  std::string PSD_type;
1074 
1079  boost::shared_ptr< FuelCellShop::Material::PolymerElectrolyteBase > electrolyte;
1080 
1085  boost::shared_ptr< FuelCellShop::Material::CatalystSupportBase > catalyst_support;
1086 
1091  boost::shared_ptr< FuelCellShop::Material::CatalystBase > catalyst;
1092 
1094  boost::shared_ptr< FuelCellShop::Kinetics::BaseKinetics > kinetics;
1095 
1099  unsigned int n_quad;
1100 
1102  std::map<VariableNames ,SolutionVariable> solutions;
1103 
1106 
1107  #ifdef DEBUG
1108 
1109  /* A list of common variable names that are set to the layer
1110  *
1111  * When running in debug this list will be compared with provided list of
1112  * solutions, in order to check application is consistent in providing solutions.
1113  *
1114  * Inconsistent provision of solutions can lead to invalid results.
1115  */
1116  std::vector<VariableNames> common_names;
1117 
1118  #endif
1119 
1120 
1122  };
1123 
1124  } // Layer
1125 
1126 } // FuelCellShop
1127 
1128 #endif // _FUELCELLSHOP__LAYER__CATALYST_LAYER_H
1129 
virtual void saturation_from_capillary_equation(std::vector< double > &) const
Definition: catalyst_layer.h:752
boost::shared_ptr< FuelCellShop::Material::CatalystBase > catalyst
Pointer to the catalyst object created in the application that is used to store the properties of the...
Definition: catalyst_layer.h:1091
virtual void gas_permeablity(double &) const
Compute the CL gas permeability.
Definition: catalyst_layer.h:639
virtual void effective_thermal_conductivity(double &) const
Compute the effective thermal conductivity in the CL.
Definition: catalyst_layer.h:524
virtual void liquid_permeablity(std::vector< Tensor< 2, dim > > &) const
Compute the anisotropic CL liquid permeability , at all quadrature points in the cell.
Definition: catalyst_layer.h:684
virtual void interfacial_surface_area_PSD(std::vector< double > &) const
Compute the liquid-gas interfacial surface area per unit volume, , at all quadrature points in the CL...
Definition: catalyst_layer.h:818
virtual void derivative_effective_proton_conductivity(std::map< VariableNames, std::vector< double > > &) const
Compute the derivative of the effective proton conductivity in the CL with respect to either the solu...
Definition: catalyst_layer.h:513
virtual void interfacial_surface_area(std::vector< double > &) const
Compute the liquid-gas interfacial surface area per unit volume, , at all quadrature points in the CL...
Definition: catalyst_layer.h:794
virtual void effective_thermal_conductivity(Tensor< 2, dim > &) const
Compute the effective thermal conductivity in the CL.
Definition: catalyst_layer.h:534
virtual void effective_thermal_conductivity(std::vector< Tensor< 2, dim > > &) const
Compute the effective thermal conductivity as a Tensor at all quadrature points.
Definition: catalyst_layer.h:544
virtual FuelCellShop::Kinetics::BaseKinetics * get_kinetics() const
Method to provide access to pointer of the kinetic object of the catalyst layer.
Definition: catalyst_layer.h:905
virtual SolutionMap get_coverages()
Method for getting coverages from kinetics objects (overloaded by MultiScaleCL)
virtual void effective_water_diffusivity(double &) const
Compute the effective water diffusivity (lambda diffusivity) in the CL.
Definition: catalyst_layer.h:579
virtual void effective_gas_diffusivity(const double &, const double &, double &) const
Compute the effective property in the pores of the CL.
Definition: catalyst_layer.h:387
std::string diffusion_species_name
If CL properties are stored inside the class (e.g.
Definition: catalyst_layer.h:1053
virtual void derivative_effective_electron_conductivity(std::vector< Tensor< 2, dim > > &) const
Compute the derivative of the effective electron conductivity in the GDL with respect to either the s...
Definition: catalyst_layer.h:480
virtual void dpcapillary_dsat(std::vector< double > &) const
Compute , at all quadrature points in the CL.
Definition: catalyst_layer.h:770
void set_reaction_kinetics(const ReactionNames rxn_name)
Member function used to specify the reaction for which the kinetic parameters are needed...
Definition: catalyst_layer.h:299
virtual void effective_thermoosmotic_diffusivity(std::vector< double > &) const
Compute the effective thermo-osmotic diffusivity of lambda (sorbed water), at all quadrature points i...
Definition: catalyst_layer.h:615
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_thermoosmotic_diffusivity(std::map< VariableNames, std::vector< double > > &) const
Compute the derivative of the effective thermo-osmotic diffusivity of lambda (sorbed water) in the CL...
Definition: catalyst_layer.h:628
Convenient storage object for SolutionVariables.
Definition: fcst_variables.h:457
virtual void derivative_gas_permeablity(std::vector< double > &) const
Compute the derivative of the effective gas permeability in the GDL with respect to either the soluti...
Definition: catalyst_layer.h:661
virtual void set_constant_solution(const double &value, const VariableNames &name)
Set those solution variables which are constant in the particular application.
Definition: catalyst_layer.h:244
virtual void derivative_gas_permeablity(std::vector< Tensor< 2, dim > > &) const
Compute the derivative of the effective gas permeability in the GDL with respect to either the soluti...
Definition: catalyst_layer.h:673
virtual void declare_parameters(const std::string &name, ParameterHandler &param) const
Default virtual declare parameters for a parameter file.
virtual void get_loadings(std::map< std::string, double > &)
Return loadings.
Definition: catalyst_layer.h:355
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
virtual void effective_electron_conductivity(Tensor< 2, dim > &) const
Compute the effective electron conductivity in the CL.
Definition: catalyst_layer.h:456
virtual void effective_gas_diffusivity(std::vector< Tensor< 2, dim > > &) const
Return the effective diffusivity [m^2/s] for nonisothermal with/without two-phase case in the CL...
Definition: catalyst_layer.h:403
virtual void derivative_saturation_from_capillary_equation_PSD(std::vector< double > &) const
Definition: catalyst_layer.h:760
virtual void get_volume_fractions(std::map< std::string, double > &)
Compute the volume fractions of each phase.
Definition: catalyst_layer.h:339
Definition: system_management.h:76
VariableNames reactant
Name of the reactant which is being solved for in the catalyst layer.
Definition: catalyst_layer.h:1105
Definition: system_management.h:73
virtual void derivative_dpcapillary_dsat(std::map< VariableNames, std::vector< double > > &) const
Compute the derivative of in the CL, with respect to either the solution or design parameters...
Definition: catalyst_layer.h:782
virtual void derivative_effective_thermal_conductivity(std::vector< Tensor< 2, dim > > &) const
Compute the derivative of the effective thermal conductivity in the CL with respect to either the sol...
Definition: catalyst_layer.h:568
bool default_materials
If the default materials are used in the layer, this will be set to true.
Definition: catalyst_layer.h:1058
std::string PSD_type
PSD class type from input file.
Definition: catalyst_layer.h:1073
virtual void derivative_current_density(std::map< VariableNames, std::vector< double > > &)
This member function will use a FuelCellShop::BaseKinetics class in order to compute the derivative o...
Definition: catalyst_layer.h:879
std::string electrolyte_type
Electrolyte type from input file.
Definition: catalyst_layer.h:1067
virtual void derivative_effective_water_diffusivity(std::map< VariableNames, std::vector< double > > &) const
Compute the derivative of the effective water diffusivity (lambda diffusivity) in the CL with respect...
Definition: catalyst_layer.h:603
std::string catalyst_type
Catalyst type from input file.
Definition: catalyst_layer.h:1061
virtual void effective_gas_diffusivity(Table< 2, Tensor< 2, dim > > &) const
Compute the effective property in the pores of the CL.
Definition: catalyst_layer.h:435
void initialize(ParameterHandler &param)
Member function used to read in data and initialize the necessary data to compute the coefficients...
virtual void derivative_liquid_permeablity(std::map< VariableNames, std::vector< Tensor< 2, dim > > > &) const
Compute the derivative of the anisotropic liquid permeability in the CL with respect to either the so...
Definition: catalyst_layer.h:696
FCSTLogStream log
Object used to output data to file and, if file attached recorded to a file as well.
ReactionNames
Definition: system_management.h:177
virtual void derivative_effective_electron_conductivity(std::vector< double > &) const
Compute the derivative of the effective electron conductivity in the GDL with respect to either the s...
Definition: catalyst_layer.h:468
virtual FuelCellShop::Material::PolymerElectrolyteBase * get_electrolyte() const
Method to provide access to pointer of the electrolyte object of the catalyst layer.
Definition: catalyst_layer.h:898
virtual void effective_water_diffusivity(std::vector< double > &) const
Compute the effective water diffusivity (lambda diffusivity) at all quadrature points in the CL...
Definition: catalyst_layer.h:590
virtual void current_density(std::vector< double > &current, std::vector< double > &effectiveness)
This member function will use a FuelCellShop::BaseKinetics class in order to compute the current dens...
Definition: catalyst_layer.h:867
virtual void derivative_interfacial_surface_area(std::map< VariableNames, std::vector< double > > &) const
Compute the derivative of the liquid-gas interfacial surface area per unit volume, with respect to either the solution variables or design parameters, at all quadrature points in the CL.
Definition: catalyst_layer.h:806
This class implements the interface to compute the properties of a &quot;standard&quot; polymer electrolyte mem...
Definition: polymer_electrolyte_material_base.h:59
virtual void relative_liquid_permeability_PSD(std::vector< Tensor< 2, dim > > &) const
Compute the anisotropic CL liquid permeability , at all quadrature points in the cell.
Definition: catalyst_layer.h:707
boost::shared_ptr< FuelCellShop::Material::CatalystSupportBase > catalyst_support
Pointer to the catalyst support object created in the application that is used to calculate the carbo...
Definition: catalyst_layer.h:1085
Virtual class used to provide the interface for all kinetic/reaction children.
Definition: base_kinetics.h:102
virtual void derivative_interfacial_surface_area_PSD(std::map< VariableNames, std::vector< double > > &) const
Compute the derivative of the liquid-gas interfacial surface area per unit volume, with respect to either the solution variables or design parameters, at all quadrature points in the CL.
Definition: catalyst_layer.h:830
std::map< std::string, CatalystLayer< dim > * > _mapFactory
This object is used to store all objects of type CatalystLayer.
Definition: catalyst_layer.h:972
virtual void set_solution(const std::vector< SolutionVariable > &)
This method is used to set the solution variable values in the kinetics object, at all quadrature poi...
Definition: system_management.h:92
static void declare_CatalystLayer_parameters(const std::string &cl_section_name, ParameterHandler &param)
Function used to declare all the data necessary in the parameter files former all CatalystLayer child...
Definition: catalyst_layer.h:161
virtual void gas_permeablity(Tensor< 2, dim > &) const
Compute the CL gas permeability.
Definition: catalyst_layer.h:649
std::map< VariableNames,SolutionVariable > solutions
Map storing solution variables.
Definition: catalyst_layer.h:1102
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 catalyst ...
Definition: catalyst_layer.h:287
virtual void derivative_relative_liquid_permeablity_PSD(std::vector< double > &) const
Definition: catalyst_layer.h:723
virtual double get_active_area_Pt() const
Get the active area of platinum per unit volume of CL.
Definition: catalyst_layer.h:888
virtual boost::shared_ptr< FuelCellShop::Layer::CatalystLayer< dim > > create_replica(const std::string &name)
This member function is used to create an object of type gas diffusion layer.
Definition: catalyst_layer.h:1039
virtual void current_density(std::vector< double > &)
This member function will use a FuelCellShop::BaseKinetics class in order to compute the current dens...
Definition: catalyst_layer.h:855
virtual void derivative_interfacial_surface_area_PSD(std::vector< double > &) const
Definition: catalyst_layer.h:838
virtual void saturated_liquid_permeablity_PSD(double &) const
Definition: catalyst_layer.h:733
boost::shared_ptr< FuelCellShop::Kinetics::BaseKinetics > kinetics
Pointer to a kinetics object.
Definition: catalyst_layer.h:1094
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: catalyst_layer.h:324
Virtual class used to implement properties that are characteristic of a porous layer.
Definition: porous_layer.h:75
virtual void derivative_effective_gas_diffusivity(std::map< VariableNames, std::vector< Tensor< 2, dim > > > &) const
Return the derivative of effective diffusivity w.r.t solution variables/design parameters for nonisot...
Definition: catalyst_layer.h:417
unsigned int n_quad
Stores the number of quadrature points in the cell.
Definition: catalyst_layer.h:1099
std::string kinetics_type
Kinetic class type from input file.
Definition: catalyst_layer.h:1070
std::vector< VariableNames > derivative_flags
Flags for derivatives: These flags are used to request derivatives.
Definition: base_layer.h:348
std::string catalyst_support_type
Catalyst Support type from input file.
Definition: catalyst_layer.h:1064
static _mapFactory * get_mapFactory()
Return the map library that stores all childrens of this class.
Definition: catalyst_layer.h:1027
virtual void derivative_relative_liquid_permeablity_PSD(std::map< VariableNames, std::vector< Tensor< 2, dim > > > &) const
Definition: catalyst_layer.h:715
virtual void derivative_effective_thermal_conductivity(std::vector< double > &) const
Compute the derivative of the effective thermal conductivity in the CL with respect to either the sol...
Definition: catalyst_layer.h:556
virtual void pcapillary(std::vector< double > &) const
Compute , at all quadrature points in the cell.
Definition: catalyst_layer.h:744
virtual void effective_proton_conductivity(double &) const
Compute the effective proton conductivity in the CL.
Definition: catalyst_layer.h:491
virtual void effective_electron_conductivity(double &) const
Compute the effective electron conductivity in the CL.
Definition: catalyst_layer.h:446
Virtual class used to provide the interface for all CatalystLayer children.
Definition: catalyst_layer.h:124
boost::shared_ptr< FuelCellShop::Material::PolymerElectrolyteBase > electrolyte
Pointer to the electrolyte object created in the application that is used to calculate the properties...
Definition: catalyst_layer.h:1079
std::string get_kinetics_type()
Method for getting string describing kinetics type (corresponding to kinetics class concrete names) ...
Definition: catalyst_layer.h:913
static boost::shared_ptr< FuelCellShop::Layer::CatalystLayer< dim > > create_CatalystLayer(const std::string &cl_section_name, ParameterHandler &param)
Function used to select the appropriate CatalystLayer type as specified in the ParameterHandler under...
Definition: catalyst_layer.h:185
virtual void effective_proton_conductivity(std::vector< double > &) const
Compute the effective proton conductivity, at all quadrature points in the cell, mainly as a function...
Definition: catalyst_layer.h:501
virtual void set_cell_id(const unsigned int &id)
Function for setting current cell_id from applications.
Definition: catalyst_layer.h:372