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 #include<base/parameter_handler.h>
21 #include<base/point.h>
22 #include <base/function.h>
23 #include <lac/vector.h>
24 #include <fe/fe_values.h>
25 
26 // Include FCST classes
27 #include "fcst_constants.h"
28 #include "base_layer.h"
29 #include "porous_layer.h"
30 #include "base_kinetics.h"
32 #include "catalyst_support_base.h"
33 #include "catalyst_base.h"
34 #include "platinum.h"
35 #include "carbon.h"
36 #include "nafion.h"
37 #include "PureGas.h"
38 #include "GasMixture.h"
39 #include "PSD_base.h"
40 
41 //Include STL
42 #include <cmath>
43 #include <iostream>
44 #include <map>
45 
46 class MultiScaleCLTest;
47 
48 namespace FuelCellShop
49 {
50  namespace Layer
51  {
129  template <int dim>
131  public PorousLayer<dim>
132  {
133 
134  public:
136 
137 
141  friend class ::MultiScaleCLTest;
143 
145 
146 
167  static void declare_CatalystLayer_parameters (const std::string &cl_section_name,
168  ParameterHandler &param)
169  {
172  iterator++)
173  {
174  iterator->second->declare_parameters(cl_section_name, param);
175  }
176  }
177 
191  static boost::shared_ptr<FuelCellShop::Layer::CatalystLayer<dim> > create_CatalystLayer (const std::string& cl_section_name,
192  ParameterHandler &param)
193  {
194  boost::shared_ptr<FuelCellShop::Layer::CatalystLayer<dim> > pointer;
195 
196  std::string concrete_name;
197  param.enter_subsection("Fuel cell data");
198  {
199  param.enter_subsection(cl_section_name);
200  {
201  concrete_name = param.get("Catalyst layer type");
202  //FcstUtilities::log << "name: "<<concrete_name.c_str()<<std::endl;
203  }
204  param.leave_subsection();
205  }
206  param.leave_subsection();
207 
209 
211  {
212  if (iterator->second)
213  {
214  pointer = iterator->second->create_replica(cl_section_name);
215  }
216  else
217  {
218  FcstUtilities::log<<"Pointer not initialized"<<std::endl;
219  abort();
220  }
221  }
222  else
223  {
224  FcstUtilities::log<<"Concrete name in FuelCellShop::Layer::CatalystLayer<dim>::create_CatalystLayer does not exist"<<std::endl;
225  abort();
226  }
227 
228  pointer->initialize(param);
229 
230  return pointer;
231  }
233 
235 
236 
250  virtual void set_constant_solution(const double& value, const VariableNames& name)
251  {
253 
254  if (name == temperature_of_REV)
255  {
256  this->electrolyte->set_T(value);
257  }
258 
259  else if (name == total_pressure)
260  {
261  this->kinetics->set_p_t(value);
262  this->electrolyte->set_p_t(value);
263  }
264  else if (name == membrane_water_content)
265  {
266  this->electrolyte->set_lambda(value);
267  }
268  }
269 
277  virtual void set_solution(const std::vector< SolutionVariable >&);
278 
283  virtual void set_derivative_flags(const std::vector<VariableNames>& flags)
284  {
285  this->derivative_flags = flags;
286  this->kinetics->set_derivative_flags(flags);
287  this->electrolyte->set_derivative_flags(flags);
288  }
289 
296  {
297  this->kinetics->set_reaction_kinetics(rxn_name);
298  this->catalyst->set_reaction_kinetics(rxn_name);
299  }
301 
303 
304 
321  const std::type_info& get_base_type() const
322  {
323  return typeid(CatalystLayer<dim>);
324  }
325 
336  virtual void get_volume_fractions(std::map<std::string, double>& )
337  {
338  const std::type_info& info = typeid(*this);
339  FcstUtilities::log << "Pure function " << __FUNCTION__
340  << " called in Class "
341  << info.name() << std::endl;
342  };
343 
352  virtual inline void get_loadings(std::map<std::string, double>& )
353  {
354  const std::type_info& info = typeid(*this);
355  FcstUtilities::log << "Pure function " << __FUNCTION__
356  << " called in Class "
357  << info.name() << std::endl;
358  };
359 
361 
369  virtual void set_cell_id(const unsigned int& id){
370  const std::type_info& info = typeid(*this);
371  FcstUtilities::log << "Pure function " << __FUNCTION__
372  << " called in Class "
373  << info.name() << std::endl;
374  }
375 
377 
378 
384  virtual void effective_gas_diffusivity(const double&, const double&, double&) const
385  {
386  const std::type_info& info = typeid(*this);
387  FcstUtilities::log << "Pure function " << __FUNCTION__
388  << " called in Class "
389  << info.name() << std::endl;
390  };
391 
400  virtual void effective_gas_diffusivity(std::vector< Tensor<2,dim> >& ) const
401  {
402  const std::type_info& info = typeid(*this);
403  FcstUtilities::log << "Pure function " << __FUNCTION__
404  << " called in Class "
405  << info.name() << std::endl;
406  };
414  virtual void derivative_effective_gas_diffusivity(std::map< VariableNames, std::vector< Tensor<2,dim> > >& ) const
415  {
416  const std::type_info& info = typeid(*this);
417  FcstUtilities::log << "Pure function " << __FUNCTION__
418  << " called in Class "
419  << info.name() << std::endl;
420  };
421 
422 
432  virtual void effective_gas_diffusivity(Table< 2, Tensor<2,dim> >&) const
433  {
434  const std::type_info& info = typeid(*this);
435  FcstUtilities::log << "Pure function " << __FUNCTION__
436  << " called in Class "
437  << info.name() << std::endl;
438  };
439 
443  virtual void effective_electron_conductivity(double& ) const
444  {
445  const std::type_info& info = typeid(*this);
446  FcstUtilities::log << "Pure function " << __FUNCTION__
447  << " called in Class "
448  << info.name() << std::endl;
449  };
453  virtual void effective_electron_conductivity(Tensor<2,dim>& ) const
454  {
455  const std::type_info& info = typeid(*this);
456  FcstUtilities::log << "Pure function " << __FUNCTION__
457  << " called in Class "
458  << info.name() << std::endl;
459  };
465  virtual void derivative_effective_electron_conductivity(std::vector<double>& ) const
466  {
467  const std::type_info& info = typeid(*this);
468  FcstUtilities::log << "Pure function " << __FUNCTION__
469  << " called in Class "
470  << info.name() << std::endl;
471  };
477  virtual void derivative_effective_electron_conductivity(std::vector<Tensor<2,dim> >& ) const
478  {
479  const std::type_info& info = typeid(*this);
480  FcstUtilities::log << "Pure function " << __FUNCTION__
481  << " called in Class "
482  << info.name() << std::endl;
483  };
484 
488  virtual void effective_proton_conductivity(double& ) const
489  {
490  const std::type_info& info = typeid(*this);
491  FcstUtilities::log << "Pure function " << __FUNCTION__
492  << " called in Class "
493  << info.name() << std::endl;
494  };
498  virtual void effective_proton_conductivity(std::vector<double>& ) const
499  {
500  const std::type_info& info = typeid(*this);
501  FcstUtilities::log << "Pure function " << __FUNCTION__
502  << " called in Class "
503  << info.name() << std::endl;
504  };
510  virtual void derivative_effective_proton_conductivity(std::map< VariableNames, std::vector<double> >& ) const
511  {
512  const std::type_info& info = typeid(*this);
513  FcstUtilities::log << "Pure function " << __FUNCTION__
514  << " called in Class "
515  << info.name() << std::endl;
516  };
517 
521  virtual void effective_thermal_conductivity(double& ) const
522  {
523  const std::type_info& info = typeid(*this);
524  FcstUtilities::log << "Pure function " << __FUNCTION__
525  << " called in Class "
526  << info.name() << std::endl;
527  };
531  virtual void effective_thermal_conductivity(Tensor<2,dim>& ) const
532  {
533  const std::type_info& info = typeid(*this);
534  FcstUtilities::log << "Pure function " << __FUNCTION__
535  << " called in Class "
536  << info.name() << std::endl;
537  };
541  virtual void effective_thermal_conductivity(std::vector< Tensor<2,dim> >& ) const
542  {
543  const std::type_info& info = typeid(*this);
544  FcstUtilities::log << "Pure function " << __FUNCTION__
545  << " called in Class "
546  << info.name() << std::endl;
547  }
553  virtual void derivative_effective_thermal_conductivity(std::vector<double>& ) const
554  {
555  const std::type_info& info = typeid(*this);
556  FcstUtilities::log << "Pure function " << __FUNCTION__
557  << " called in Class "
558  << info.name() << std::endl;
559  };
565  virtual void derivative_effective_thermal_conductivity(std::vector<Tensor<2,dim> >& ) const
566  {
567  const std::type_info& info = typeid(*this);
568  FcstUtilities::log << "Pure function " << __FUNCTION__
569  << " called in Class "
570  << info.name() << std::endl;
571  };
572 
576  virtual void effective_water_diffusivity(double& ) const
577  {
578  const std::type_info& info = typeid(*this);
579  FcstUtilities::log << "Pure function " << __FUNCTION__
580  << " called in Class "
581  << info.name() << std::endl;
582  };
587  virtual void effective_water_diffusivity(std::vector<double>& ) const
588  {
589  const std::type_info& info = typeid(*this);
590  FcstUtilities::log << "Pure function " << __FUNCTION__
591  << " called in Class "
592  << info.name() << std::endl;
593  }
594 
600  virtual void derivative_effective_water_diffusivity(std::map< VariableNames, std::vector<double> >& ) const
601  {
602  const std::type_info& info = typeid(*this);
603  FcstUtilities::log << "Pure function " << __FUNCTION__
604  << " called in Class "
605  << info.name() << std::endl;
606  }
607 
612  virtual void effective_thermoosmotic_diffusivity(std::vector<double>& ) const
613  {
614  const std::type_info& info = typeid(*this);
615  FcstUtilities::log << "Pure function " << __FUNCTION__
616  << " called in Class "
617  << info.name() << std::endl;
618  };
619 
625  virtual void derivative_effective_thermoosmotic_diffusivity(std::map< VariableNames, std::vector<double> >& ) const
626  {
627  const std::type_info& info = typeid(*this);
628  FcstUtilities::log << "Pure function " << __FUNCTION__
629  << " called in Class "
630  << info.name() << std::endl;
631  }
632 
636  virtual void gas_permeablity(double& ) const
637  {
638  const std::type_info& info = typeid(*this);
639  FcstUtilities::log << "Pure function " << __FUNCTION__
640  << " called in Class "
641  << info.name() << std::endl;
642  };
646  virtual void gas_permeablity(Tensor<2,dim>& ) const
647  {
648  const std::type_info& info = typeid(*this);
649  FcstUtilities::log << "Pure function " << __FUNCTION__
650  << " called in Class "
651  << info.name() << std::endl;
652  };
658  virtual void derivative_gas_permeablity(std::vector<double>& ) const
659  {
660  const std::type_info& info = typeid(*this);
661  FcstUtilities::log << "Pure function " << __FUNCTION__
662  << " called in Class "
663  << info.name() << std::endl;
664  };
670  virtual void derivative_gas_permeablity(std::vector<Tensor<2,dim> >& ) const
671  {
672  const std::type_info& info = typeid(*this);
673  FcstUtilities::log << "Pure function " << __FUNCTION__
674  << " called in Class "
675  << info.name() << std::endl;
676  };
677 
681  virtual void liquid_permeablity(std::vector< Tensor<2,dim> >& ) const
682  {
683  const std::type_info& info = typeid(*this);
684  FcstUtilities::log << "Pure function " << __FUNCTION__
685  << " called in Class "
686  << info.name() << std::endl;
687  };
693  virtual void derivative_liquid_permeablity(std::map< VariableNames, std::vector< Tensor<2,dim> > >& ) const
694  {
695  const std::type_info& info = typeid(*this);
696  FcstUtilities::log << "Pure function " << __FUNCTION__
697  << " called in Class "
698  << info.name() << std::endl;
699  };
700 
704  virtual void pcapillary(std::vector<double>&) const
705  {
706  const std::type_info& info = typeid(*this);
707  FcstUtilities::log << "Pure function " << __FUNCTION__
708  << " called in Class "
709  << info.name() << std::endl;
710  };
714  virtual void dpcapillary_dsat(std::vector<double> &) const
715  {
716  const std::type_info& info = typeid(*this);
717  FcstUtilities::log << "Pure function " << __FUNCTION__
718  << " called in Class "
719  << info.name() << std::endl;
720  };
726  virtual void derivative_dpcapillary_dsat(std::map< VariableNames, std::vector<double> > &) const
727  {
728  const std::type_info& info = typeid(*this);
729  FcstUtilities::log << "Pure function " << __FUNCTION__
730  << " called in Class "
731  << info.name() << std::endl;
732  };
733 
738  virtual void interfacial_surface_area(std::vector<double>&) const
739  {
740  const std::type_info& info = typeid(*this);
741  FcstUtilities::log << "Pure function " << __FUNCTION__
742  << " called in Class "
743  << info.name() << std::endl;
744  };
750  virtual void derivative_interfacial_surface_area(std::map< VariableNames, std::vector<double> >&) const
751  {
752  const std::type_info& info = typeid(*this);
753  FcstUtilities::log << "Pure function " << __FUNCTION__
754  << " called in Class "
755  << info.name() << std::endl;
756  };
757 
759 
761 
762 
766  virtual void current_density(std::vector<double>&)
767  {
768  const std::type_info& info = typeid(*this);
769  FcstUtilities::log << "Pure function " << __FUNCTION__
770  << " called in Class "
771  << info.name() << std::endl;
772  };
773 
778  virtual void current_density(std::vector<double>&current, std::vector<double>&effectiveness)
779  {
780  for (unsigned int i = 0; i<effectiveness.size(); ++i)
781  effectiveness[i] = 0;
782 
783  this->current_density(current);
784  };
785 
790  virtual void derivative_current_density(std::map< VariableNames, std::vector<double> >& )
791  {
792  const std::type_info& info = typeid(*this);
793  FcstUtilities::log << "Pure function " << __FUNCTION__
794  << " called in Class "
795  << info.name() << std::endl;
796  };
797 
799  virtual double get_active_area_Pt() const
800  {
801  const std::type_info& info = typeid(*this);
802  FcstUtilities::log << "Pure function " << __FUNCTION__
803  << " called in Class "
804  << info.name() << std::endl;
805  return 0.0;
806  };
807 
810  {
811  return this->electrolyte.get();
812  }
813 
814 
817  {
818  return this->kinetics.get();
819  }
820 
822 
824  inline std::string get_kinetics_type(){
825  return kinetics_type;
826  }
827 
828 
830  virtual SolutionMap get_coverages();
831 
832 
833 
834 
835  protected:
836 
838 
839 
845  CatalystLayer();
846 
850  ~CatalystLayer();
851 
855  CatalystLayer(const std::string& name);
856 
857 
865  virtual void declare_parameters (const std::string& name, ParameterHandler &param) const;
866 
871  void initialize (ParameterHandler &param);
872 
873 
875 
877 
883  typedef std::map< std::string, CatalystLayer<dim>* > _mapFactory;
885 
887 
888 
939  {
940  static _mapFactory mapFactory;
941  return &mapFactory;
942  }
944 
945 
950  virtual boost::shared_ptr<FuelCellShop::Layer::CatalystLayer<dim> > create_replica (const std::string &name)
951  {
952  const std::type_info& info = typeid(*this);
953  FcstUtilities::log << "Pure function " << __FUNCTION__
954  << " called in Class "
955  << info.name() << std::endl;
956  }
958 
960 
961 
965 
970 
972  std::string catalyst_type;
973 
976 
978  std::string electrolyte_type;
979 
981  std::string kinetics_type;
982 
984  std::string PSD_type;
989  boost::shared_ptr< FuelCellShop::Material::PolymerElectrolyteBase > electrolyte;
990 
995  boost::shared_ptr< FuelCellShop::Material::CatalystSupportBase > catalyst_support;
996 
1001  boost::shared_ptr< FuelCellShop::Material::CatalystBase > catalyst;
1002 
1004  boost::shared_ptr< FuelCellShop::Kinetics::BaseKinetics > kinetics;
1005 
1006  /*** Pointer to the PSD object*/
1007  boost::shared_ptr< FuelCellShop::MicroScale::BasePSD<dim> > PSD;
1008 
1012  unsigned int n_quad;
1013 
1015  std::map<VariableNames ,SolutionVariable> solutions;
1016 
1019 
1020  #ifdef DEBUG
1021 
1022  /* A list of common variable names that are set to the layer
1023  *
1024  * When running in debug this list will be compared with provided list of
1025  * solutions, in order to check application is consistent in providing solutions.
1026  *
1027  * Inconsistent provision of solutions can lead to invalid results.
1028  */
1029  std::vector<VariableNames> common_names;
1030 
1031  #endif
1032 
1033 
1035  };
1036 
1037  } // Layer
1038 
1039 } // FuelCellShop
1040 
1041 #endif // _FUELCELLSHOP__LAYER__CATALYST_LAYER_H
1042 
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:1001
virtual void gas_permeablity(double &) const
Compute the CL gas permeability.
Definition: catalyst_layer.h:636
virtual void effective_thermal_conductivity(double &) const
Compute the effective thermal conductivity in the CL.
Definition: catalyst_layer.h:521
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:681
boost::shared_ptr< FuelCellShop::MicroScale::BasePSD< dim > > PSD
Definition: catalyst_layer.h:1007
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:510
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:738
virtual void effective_thermal_conductivity(Tensor< 2, dim > &) const
Compute the effective thermal conductivity in the CL.
Definition: catalyst_layer.h:531
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:541
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:816
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:576
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:384
std::string diffusion_species_name
If CL properties are stored inside the class (e.g.
Definition: catalyst_layer.h:964
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:477
virtual void dpcapillary_dsat(std::vector< double > &) const
Compute , at all quadrature points in the CL.
Definition: catalyst_layer.h:714
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:295
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:612
VariableNames
The enumeration containing the names of some of the available FCST solution variables and their deriv...
Definition: system_management.h:62
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:625
Convenient storage object for SolutionVariables.
Definition: fcst_variables.h:447
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:658
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:250
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:670
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:352
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:453
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:400
virtual void get_volume_fractions(std::map< std::string, double > &)
Compute the volume fractions of each phase.
Definition: catalyst_layer.h:336
Definition: system_management.h:75
VariableNames reactant
Name of the reactant which is being solved for in the catalyst layer.
Definition: catalyst_layer.h:1018
Definition: system_management.h:72
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:726
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:565
bool default_materials
If the default materials are used in the layer, this will be set to true.
Definition: catalyst_layer.h:969
std::string PSD_type
PSD class type from input file.
Definition: catalyst_layer.h:984
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:790
std::string electrolyte_type
Electrolyte type from input file.
Definition: catalyst_layer.h:978
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:600
std::string catalyst_type
Catalyst type from input file.
Definition: catalyst_layer.h:972
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:432
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:693
FCSTLogStream log
Object used to output data to file and, if file attached recorded to a file as well.
ReactionNames
Definition: system_management.h:148
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:465
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:809
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:587
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:778
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:750
This class implements the interface to compute the properties of a &quot;standard&quot; polymer electrolyte mem...
Definition: polymer_electrolyte_material_base.h:62
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:995
Virtual class used to provide the interface for all kinetic/reaction children.
Definition: base_kinetics.h:107
std::map< std::string, CatalystLayer< dim > * > _mapFactory
This object is used to store all objects of type CatalystLayer.
Definition: catalyst_layer.h:883
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:91
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:167
virtual void gas_permeablity(Tensor< 2, dim > &) const
Compute the CL gas permeability.
Definition: catalyst_layer.h:646
std::map< VariableNames,SolutionVariable > solutions
Map storing solution variables.
Definition: catalyst_layer.h:1015
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:283
virtual double get_active_area_Pt() const
Get the active area of platinum per unit volume of CL.
Definition: catalyst_layer.h:799
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:950
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:766
boost::shared_ptr< FuelCellShop::Kinetics::BaseKinetics > kinetics
Pointer to a kinetics object.
Definition: catalyst_layer.h:1004
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:321
Virtual class used to implement properties that are characteristic of a porous layer.
Definition: porous_layer.h:65
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:414
unsigned int n_quad
Stores the number of quadrature points in the cell.
Definition: catalyst_layer.h:1012
std::string kinetics_type
Kinetic class type from input file.
Definition: catalyst_layer.h:981
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:975
static _mapFactory * get_mapFactory()
Return the map library that stores all childrens of this class.
Definition: catalyst_layer.h:938
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:553
virtual void pcapillary(std::vector< double > &) const
Compute , at all quadrature points in the cell.
Definition: catalyst_layer.h:704
virtual void effective_proton_conductivity(double &) const
Compute the effective proton conductivity in the CL.
Definition: catalyst_layer.h:488
virtual void effective_electron_conductivity(double &) const
Compute the effective electron conductivity in the CL.
Definition: catalyst_layer.h:443
Virtual class used to provide the interface for all CatalystLayer children.
Definition: catalyst_layer.h:130
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:989
std::string get_kinetics_type()
Method for getting string describing kinetics type (corresponding to kinetics class concrete names) ...
Definition: catalyst_layer.h:824
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:191
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:498
virtual void set_cell_id(const unsigned int &id)
Function for setting current cell_id from applications.
Definition: catalyst_layer.h:369