16 #ifndef _FUELCELLSHOP__LAYER_CATALYST_LAYER_H
17 #define _FUELCELLSHOP__LAYER_CATALYST_LAYER_H
40 class MultiScaleCLTest;
42 namespace FuelCellShop
135 friend class ::MultiScaleCLTest;
162 ParameterHandler ¶m)
168 iterator->second->declare_parameters(cl_section_name, param);
185 static boost::shared_ptr<FuelCellShop::Layer::CatalystLayer<dim> >
create_CatalystLayer (
const std::string& cl_section_name,
186 ParameterHandler ¶m)
188 boost::shared_ptr<FuelCellShop::Layer::CatalystLayer<dim> > pointer;
190 std::string concrete_name;
191 param.enter_subsection(
"Fuel cell data");
193 param.enter_subsection(cl_section_name);
195 concrete_name = param.get(
"Catalyst layer type");
198 param.leave_subsection();
200 param.leave_subsection();
206 if (iterator->second)
218 FcstUtilities::log<<
"Concrete name in FuelCellShop::Layer::CatalystLayer<dim>::create_CatalystLayer does not exist"<<std::endl;
222 pointer->initialize(param);
281 virtual void set_solution(
const std::vector< SolutionVariable >&);
290 this->
kinetics->set_derivative_flags(flags);
301 this->
kinetics->set_reaction_kinetics(rxn_name);
302 this->
catalyst->set_reaction_kinetics(rxn_name);
341 const std::type_info& info =
typeid(*this);
343 <<
" called in Class "
344 << info.name() << std::endl;
357 const std::type_info& info =
typeid(*this);
359 <<
" called in Class "
360 << info.name() << std::endl;
373 const std::type_info& info =
typeid(*this);
375 <<
" called in Class "
376 << info.name() << std::endl;
389 const std::type_info& info =
typeid(*this);
391 <<
" called in Class "
392 << info.name() << std::endl;
405 const std::type_info& info =
typeid(*this);
407 <<
" called in Class "
408 << info.name() << std::endl;
419 const std::type_info& info =
typeid(*this);
421 <<
" called in Class "
422 << info.name() << std::endl;
437 const std::type_info& info =
typeid(*this);
439 <<
" called in Class "
440 << info.name() << std::endl;
448 const std::type_info& info =
typeid(*this);
450 <<
" called in Class "
451 << info.name() << std::endl;
458 const std::type_info& info =
typeid(*this);
460 <<
" called in Class "
461 << info.name() << std::endl;
470 const std::type_info& info =
typeid(*this);
472 <<
" called in Class "
473 << info.name() << std::endl;
482 const std::type_info& info =
typeid(*this);
484 <<
" called in Class "
485 << info.name() << std::endl;
493 const std::type_info& info =
typeid(*this);
495 <<
" called in Class "
496 << info.name() << std::endl;
503 const std::type_info& info =
typeid(*this);
505 <<
" called in Class "
506 << info.name() << std::endl;
515 const std::type_info& info =
typeid(*this);
517 <<
" called in Class "
518 << info.name() << std::endl;
526 const std::type_info& info =
typeid(*this);
528 <<
" called in Class "
529 << info.name() << std::endl;
536 const std::type_info& info =
typeid(*this);
538 <<
" called in Class "
539 << info.name() << std::endl;
546 const std::type_info& info =
typeid(*this);
548 <<
" called in Class "
549 << info.name() << std::endl;
558 const std::type_info& info =
typeid(*this);
560 <<
" called in Class "
561 << info.name() << std::endl;
570 const std::type_info& info =
typeid(*this);
572 <<
" called in Class "
573 << info.name() << std::endl;
581 const std::type_info& info =
typeid(*this);
583 <<
" called in Class "
584 << info.name() << std::endl;
592 const std::type_info& info =
typeid(*this);
594 <<
" called in Class "
595 << info.name() << std::endl;
605 const std::type_info& info =
typeid(*this);
607 <<
" called in Class "
608 << info.name() << std::endl;
617 const std::type_info& info =
typeid(*this);
619 <<
" called in Class "
620 << info.name() << std::endl;
630 const std::type_info& info =
typeid(*this);
632 <<
" called in Class "
633 << info.name() << std::endl;
641 const std::type_info& info =
typeid(*this);
643 <<
" called in Class "
644 << info.name() << std::endl;
651 const std::type_info& info =
typeid(*this);
653 <<
" called in Class "
654 << info.name() << std::endl;
663 const std::type_info& info =
typeid(*this);
665 <<
" called in Class "
666 << info.name() << std::endl;
675 const std::type_info& info =
typeid(*this);
677 <<
" called in Class "
678 << info.name() << std::endl;
686 const std::type_info& info =
typeid(*this);
688 <<
" called in Class "
689 << info.name() << std::endl;
698 const std::type_info& info =
typeid(*this);
700 <<
" called in Class "
701 << info.name() << std::endl;
709 const std::type_info& info =
typeid(*this);
711 <<
" called in Class "
712 << info.name() << std::endl;
717 const std::type_info& info =
typeid(*this);
719 <<
" called in Class "
720 << info.name() << std::endl;
725 const std::type_info& info =
typeid(*this);
727 <<
" called in Class "
728 << info.name() << std::endl;
735 const std::type_info& info =
typeid(*this);
737 <<
" called in Class "
738 << info.name() << std::endl;
746 const std::type_info& info =
typeid(*this);
748 <<
" called in Class "
749 << info.name() << std::endl;
754 const std::type_info& info =
typeid(*this);
756 <<
" called in Class "
757 << info.name() << std::endl;
762 const std::type_info& info =
typeid(*this);
764 <<
" called in Class "
765 << info.name() << std::endl;
772 const std::type_info& info =
typeid(*this);
774 <<
" called in Class "
775 << info.name() << std::endl;
784 const std::type_info& info =
typeid(*this);
786 <<
" called in Class "
787 << info.name() << std::endl;
796 const std::type_info& info =
typeid(*this);
798 <<
" called in Class "
799 << info.name() << std::endl;
808 const std::type_info& info =
typeid(*this);
810 <<
" called in Class "
811 << info.name() << std::endl;
820 const std::type_info& info =
typeid(*this);
822 <<
" called in Class "
823 << info.name() << std::endl;
832 const std::type_info& info =
typeid(*this);
834 <<
" called in Class "
835 << info.name() << std::endl;
840 const std::type_info& info =
typeid(*this);
842 <<
" called in Class "
843 << info.name() << std::endl;
857 const std::type_info& info =
typeid(*this);
859 <<
" called in Class "
860 << info.name() << std::endl;
867 virtual void current_density(std::vector<double>¤t, std::vector<double>&effectiveness)
869 for (
unsigned int i = 0; i<effectiveness.size(); ++i)
870 effectiveness[i] = 0;
881 const std::type_info& info =
typeid(*this);
883 <<
" called in Class "
884 << info.name() << std::endl;
890 const std::type_info& info =
typeid(*this);
892 <<
" called in Class "
893 << info.name() << std::endl;
1039 virtual boost::shared_ptr<FuelCellShop::Layer::CatalystLayer<dim> >
create_replica (
const std::string &
name)
1041 const std::type_info& info =
typeid(*this);
1043 <<
" called in Class "
1044 << info.name() << std::endl;
1079 boost::shared_ptr< FuelCellShop::Material::PolymerElectrolyteBase >
electrolyte;
1091 boost::shared_ptr< FuelCellShop::Material::CatalystBase >
catalyst;
1094 boost::shared_ptr< FuelCellShop::Kinetics::BaseKinetics >
kinetics;
1116 std::vector<VariableNames> common_names;
1128 #endif // _FUELCELLSHOP__LAYER__CATALYST_LAYER_H
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
~CatalystLayer()
Destructor.
virtual void declare_parameters(const std::string &name, ParameterHandler ¶m) 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 ¶m)
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 > ¤t, 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 "standard" 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 ¶m)
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 ¶m)
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