17 #ifndef _FUELCELLSHOP__BV_KINETICS_H
18 #define _FUELCELLSHOP__BV_KINETICS_H
25 #include <base/parameter_handler.h>
26 #include <base/point.h>
27 #include <base/function.h>
28 #include <lac/vector.h>
29 #include <fe/fe_values.h>
35 using namespace dealii;
37 namespace FuelCellShop
113 virtual void set_parameters(
const std::vector<std::string>&,
114 const std::vector<double>&,
115 ParameterHandler&)
const{};
129 virtual void current_density (std::vector<double> &);
137 virtual void derivative_current (std::map<
VariableNames, std::vector<double> > &);
148 virtual boost::shared_ptr<FuelCellShop::Kinetics::BaseKinetics > create_replica ()
164 virtual void init_kin_param()
166 Assert( !kin_param_initialized, ExcInternalError() );
167 Assert( catalyst != NULL, ExcMessage(
"Catalyst object not initialized in the ButlerVolmerKinetics object.") );
168 Assert( phi_m.is_initialized() && phi_s.is_initialized() && T.is_initialized(), ExcMessage(
"Either phi_m/phi_s/T is not set in the ButlerVolmerKinetics object.") );
169 Assert( reactants_map.size()>0, ExcMessage(
"Atleast one reactant should be set in the ButlerVolmerKinetics object, using set_reactant_concentrations method.") );
171 std::vector<VariableNames> names;
172 for ( std::map< VariableNames, SolutionVariable >::const_iterator iter=reactants_map.begin(); iter!=reactants_map.end(); ++iter )
173 names.push_back(iter->first);
175 catalyst->reference_concentration(names, ref_conc);
176 catalyst->reaction_order(names, gamma);
177 catalyst->alpha_cathodic(alpha_c);
178 catalyst->alpha_anodic(alpha_a);
180 kin_param_initialized =
true;
201 std::map< VariableNames, double >
gamma;
207 #endif //_FUELCELLSHOP__BV_KINETICS_H