17 #ifndef _FUELCELLSHOP__CONVENTIONAL_CL__H
18 #define _FUELCELLSHOP__CONVENTIONAL_CL__H
21 #include<base/parameter_handler.h>
22 #include<base/point.h>
23 #include <base/function.h>
24 #include <lac/vector.h>
25 #include <fe/fe_values.h>
38 #include "boost/shared_ptr.hpp"
39 #include <base/types.h>
46 using namespace dealii;
48 namespace FuelCellShop
106 virtual void print_layer_properties()
const;
113 compute_volume_fraction();
114 volume_fractions[
"Solid"] = epsilon_S.at(this->local_material_id());
115 volume_fractions[
"Void"] = epsilon_V.at(this->local_material_id());
116 volume_fractions[
"Ionomer"] = epsilon_N.at(this->local_material_id());
131 info[
"V_Pt"] = V_Pt.at(this->local_material_id());
132 info[
"loading_N"] = loading_N.at(this->local_material_id());
133 info[
"IC_ratio"] = IC_ratio.at(this->local_material_id());
134 info[
"prc_Pt"] = prc_Pt.at(this->local_material_id());
138 inline double get_V_Pt(
const unsigned int mat_id = numbers::invalid_material_id)
const
140 Assert( mat_id != numbers::invalid_material_id, ExcMessage(
"Graded/Homogeneous Catalyst Layers needs its material id.") );
142 return V_Pt.at(this->local_material_id());
154 return Av.at(this->local_material_id());
166 virtual void effective_gas_diffusivity(
const double&,
178 virtual void effective_gas_diffusivity(std::vector< Tensor<2,dim> >&)
const;
188 virtual void derivative_effective_gas_diffusivity(std::map<
VariableNames, std::vector< Tensor<2,dim> > >&)
const;
199 virtual void effective_gas_diffusivity(Table< 2, Tensor< 2, dim > >&)
const;
204 virtual void effective_electron_conductivity(
double&)
const;
210 virtual void effective_electron_conductivity(Tensor<2,dim>&)
const;
217 virtual void derivative_effective_electron_conductivity(std::vector<double>&)
const;
222 virtual void effective_proton_conductivity(
double&)
const;
223 virtual void effective_proton_conductivity(std::vector<double>&)
const;
229 virtual void derivative_effective_proton_conductivity(std::map<
VariableNames, std::vector<double> >&)
const;
234 virtual void effective_water_diffusivity(
double&)
const;
235 virtual void effective_water_diffusivity(std::vector<double>&)
const;
241 virtual void derivative_effective_water_diffusivity(std::map<
VariableNames, std::vector<double> >&)
const;
246 virtual void effective_thermal_conductivity(
double&)
const;
250 virtual void effective_thermal_conductivity(std::vector< Tensor<2,dim> >&)
const;
255 virtual void derivative_effective_thermal_conductivity(std::vector< Tensor<2,dim> >&)
const;
261 virtual void effective_thermoosmotic_diffusivity(std::vector<double>&)
const;
267 virtual void derivative_effective_thermoosmotic_diffusivity(std::map<
VariableNames, std::vector<double> >&)
const;
272 virtual void liquid_permeablity(std::vector< Tensor<2,dim> >&)
const;
278 virtual void derivative_liquid_permeablity(std::map<
VariableNames, std::vector< Tensor<2,dim> > >&)
const;
283 virtual void pcapillary(std::vector<double>&)
const;
287 virtual void dpcapillary_dsat(std::vector<double> &)
const;
293 virtual void derivative_dpcapillary_dsat(std::map<
VariableNames, std::vector<double> > &)
const;
299 virtual void interfacial_surface_area(std::vector<double>&)
const;
305 virtual void derivative_interfacial_surface_area(std::map<
VariableNames, std::vector<double> >&)
const;
359 void declare_parameters (
const std::string& cl_section_name,
360 ParameterHandler ¶m)
const;
366 void initialize (ParameterHandler ¶m);
371 void compute_volume_fraction();
422 void derivative_effective_proton_conductivity_wrt_electrolyte_loading(
double&)
const;
429 void derivative_volume_fractions(
double &Depsilon_S,
431 double &Depsilon_N)
const;
438 method = method_eff_property_pores;
446 method = method_eff_property_electrolyte;
454 method = method_eff_property_solid;
464 const double& prc_Pt)
const
466 return -(V_Pt*1e-3)/(rho_c*pow(prc_Pt,2.0));
477 return (1/rho_Pt + (1-prc_Pt)/(prc_Pt*rho_c))*(1e-3);
520 std::map< unsigned int, double>
V_Pt;
522 std::map< unsigned int, double>
M_Pt;
524 std::map< unsigned int, double>
Av;
530 std::map< unsigned int, double>
L_CL;
547 std::map< unsigned int, double>
prc_N;
576 std::map< unsigned int, double>
k_T;
581 std::map< unsigned int, double>
s_irr;
std::string method_eff_property_pores
Method used to compute effective properties – Type of network.
Definition: conventional_CL.h:551
void get_method_transport_property_pores(std::string &method) const
Get the effective transport method in the pores.
Definition: conventional_CL.h:436
std::map< unsigned int, double > k_T
Thermal Conductivity of the layer.
Definition: conventional_CL.h:576
std::string method_eff_property_solid
Method used to compute effective properties – Type of network.
Definition: conventional_CL.h:560
std::map< unsigned int, double > V_Pt
Platinum loading at the catalyst layer per unit volume.
Definition: conventional_CL.h:520
std::map< unsigned int, double > IC_ratio
Ionomer to carbon ratio.
Definition: conventional_CL.h:544
double depsilon_S_cat_dVPt(const double &prc_Pt) const
Inline function to compute .
Definition: conventional_CL.h:475
virtual double get_active_area_Pt() const
Get the active area of platinum per unit volume of CL.
Definition: conventional_CL.h:150
std::map< unsigned int, double > epsilon_N
Volume fraction of Nafion in the cathode catalyst layer.
Definition: conventional_CL.h:504
double porosity_gamma
Definition: conventional_CL.h:557
std::map< unsigned int, double > epsilon_S
Solid volume fraction in the catalyst layer.
Definition: conventional_CL.h:508
VariableNames
The enumeration containing the names of some of the available FCST solution variables and their deriv...
Definition: system_management.h:62
std::string method_porosity
Method to compute porosity.
Definition: conventional_CL.h:528
double get_V_Pt(const unsigned int mat_id=numbers::invalid_material_id) const
Return the platinum loading per cm3 catalyst layer.
Definition: conventional_CL.h:138
std::map< unsigned int, double > prc_N
Percentage (mass fraction) of electrolyte in the catalyst layer.
Definition: conventional_CL.h:547
std::map< unsigned int, double > prc_Pt
Percentage of platinum per carbon on the catalyst layer.
Definition: conventional_CL.h:518
double rho_c
Density of support material.
Definition: conventional_CL.h:516
std::map< unsigned int, double > epsilon_W
Volume fraction of water in the cathode catalyst layer.
Definition: conventional_CL.h:510
double solid_mu
Solid phase network constant.
Definition: conventional_CL.h:564
virtual void get_volume_fractions(std::map< std::string, double > &volume_fractions)
Get the volume fractions in the catalyst layer.
Definition: conventional_CL.h:109
std::string method_eff_thermal
Method used to compute effective thermal conductivity in the catalyst layer.
Definition: conventional_CL.h:574
double porosity_th
Porous network threshold.
Definition: conventional_CL.h:553
std::map< unsigned int, double > epsilon_V
Void volume fraction (Porosity) of the catalyst layer.
Definition: conventional_CL.h:506
double depsilon_V_cat_depsilon_S_cat() const
Inline function to compute .
Definition: conventional_CL.h:486
This class characterizes a catalyst layer and uses this information to compute effective transport pr...
Definition: conventional_CL.h:61
std::string method_capillary_function
Method used to compute capillary pressure as a function of saturation.
Definition: conventional_CL.h:586
std::map< unsigned int, double > s_irr
Irreducible liquid water saturation value in the MPL.
Definition: conventional_CL.h:581
double depsilon_S_cat_dprc_Pt(const double &V_Pt, const double &prc_Pt) const
Inline function to compute .
Definition: conventional_CL.h:463
std::map< unsigned int, double > Av
Active area of catalyst per unit volume of catalyst layer.
Definition: conventional_CL.h:524
double solid_th
Solid phase network threshold.
Definition: conventional_CL.h:562
double depsilon_V_cat_depsilon_N_cat() const
Inline function to compute .
Definition: conventional_CL.h:497
double rho_Pt
Density of platinum.
Definition: conventional_CL.h:514
virtual void get_loadings(std::map< std::string, double > &info)
Return loadings.
Definition: conventional_CL.h:128
std::map< unsigned int, double > L_CL
Layer thickness or thicknesses.
Definition: conventional_CL.h:530
double porosity_mu
Porous network constant.
Definition: conventional_CL.h:555
std::map< unsigned int, double > loading_N
Electrolyte loading.
Definition: conventional_CL.h:539
static const std::string concrete_name
FcstUtilities Concrete name used for objects of this class.
Definition: conventional_CL.h:81
std::string method_Av
Method to compute active area.
Definition: conventional_CL.h:526
double rho_N
Density of electrolyte.
Definition: conventional_CL.h:534
double electrolyte_mu
Electrolyte network constant.
Definition: conventional_CL.h:570
std::map< unsigned int, double > abs_permeability
Absolute permeability [cm^2] of the layer.
Definition: conventional_CL.h:583
std::string method_eff_property_electrolyte
Method used to compute effective properties – Type of network.
Definition: conventional_CL.h:566
double electrolyte_th
Electrolyte network threshold.
Definition: conventional_CL.h:568
std::string method_rel_liquid_permeability
Method used to compute the relative liquid permeability.
Definition: conventional_CL.h:579
void get_method_transport_property_solid(std::string &method) const
Get the effective transport method in the solid phase.
Definition: conventional_CL.h:452
Virtual class used to provide the interface for all CatalystLayer children.
Definition: catalyst_layer.h:130
void get_method_transport_property_electrolyte(std::string &method) const
Get the effective transport method in the electrolyte.
Definition: conventional_CL.h:444
std::map< unsigned int, double > M_Pt
Platinum loading at the catalyst layer per unit area.
Definition: conventional_CL.h:522