17 #ifndef _FUELCELLSHOP__CONVENTIONAL_CL__H
18 #define _FUELCELLSHOP__CONVENTIONAL_CL__H
21 #include <deal.II/base/types.h>
26 #include <boost/shared_ptr.hpp>
33 using namespace dealii;
35 namespace FuelCellShop
96 if (!epsilon_V.empty())
97 this->porosity = epsilon_V.at(this->local_material_id());
102 virtual void print_layer_properties()
const;
109 compute_volume_fraction();
110 volume_fractions[
"Solid"] = epsilon_S.at(this->local_material_id());
111 volume_fractions[
"Void"] = epsilon_V.at(this->local_material_id());
112 volume_fractions[
"Ionomer"] = epsilon_N.at(this->local_material_id());
127 info[
"V_Pt"] = V_Pt.at(this->local_material_id());
128 info[
"loading_N"] = loading_N.at(this->local_material_id());
129 info[
"IC_ratio"] = IC_ratio.at(this->local_material_id());
130 info[
"prc_Pt"] = prc_Pt.at(this->local_material_id());
134 inline double get_V_Pt(
const unsigned int mat_id = numbers::invalid_material_id)
const
136 Assert( mat_id != numbers::invalid_material_id, ExcMessage(
"Graded/Homogeneous Catalyst Layers needs its material id.") );
138 return V_Pt.at(this->local_material_id());
150 return Av.at(this->local_material_id());
162 virtual void effective_gas_diffusivity(
const double&,
174 virtual void effective_gas_diffusivity(std::vector< Tensor<2,dim> >&)
const;
184 virtual void derivative_effective_gas_diffusivity(std::map<
VariableNames, std::vector< Tensor<2,dim> > >&)
const;
195 virtual void effective_gas_diffusivity(Table< 2, Tensor< 2, dim > >&)
const;
200 virtual void effective_electron_conductivity(
double&)
const;
206 virtual void effective_electron_conductivity(Tensor<2,dim>&)
const;
213 virtual void derivative_effective_electron_conductivity(std::vector<double>&)
const;
218 virtual void effective_proton_conductivity(
double&)
const;
219 virtual void effective_proton_conductivity(std::vector<double>&)
const;
225 virtual void derivative_effective_proton_conductivity(std::map<
VariableNames, std::vector<double> >&)
const;
230 virtual void effective_water_diffusivity(
double&)
const;
231 virtual void effective_water_diffusivity(std::vector<double>&)
const;
237 virtual void derivative_effective_water_diffusivity(std::map<
VariableNames, std::vector<double> >&)
const;
242 virtual void effective_thermal_conductivity(
double&)
const;
246 virtual void effective_thermal_conductivity(std::vector< Tensor<2,dim> >&)
const;
251 virtual void derivative_effective_thermal_conductivity(std::vector< Tensor<2,dim> >&)
const;
257 virtual void effective_thermoosmotic_diffusivity(std::vector<double>&)
const;
263 virtual void derivative_effective_thermoosmotic_diffusivity(std::map<
VariableNames, std::vector<double> >&)
const;
268 virtual void liquid_permeablity(std::vector< Tensor<2,dim> >&)
const;
275 virtual void derivative_liquid_permeablity(std::map<
VariableNames, std::vector< Tensor<2,dim> > >&)
const;
287 virtual void saturated_liquid_permeablity_PSD(
double&)
const;
289 virtual void relative_liquid_permeability_PSD(std::vector< Tensor<2,dim> >&)
const;
291 virtual void derivative_relative_liquid_permeablity_PSD(std::vector< double >&)
const;
293 virtual void derivative_relative_liquid_permeablity_PSD(std::map<
VariableNames, std::vector< Tensor<2,dim> > >&)
const;
306 virtual void pcapillary(std::vector<double>&)
const;
308 virtual void saturation_from_capillary_equation(std::vector<double>&)
const;
310 virtual void derivative_saturation_from_capillary_equation_PSD(std::vector<double>&)
const;
314 virtual void dpcapillary_dsat(std::vector<double> &)
const;
320 virtual void derivative_dpcapillary_dsat(std::map<
VariableNames, std::vector<double> > &)
const;
326 virtual void interfacial_surface_area(std::vector<double>&)
const;
332 virtual void derivative_interfacial_surface_area(std::map<
VariableNames, std::vector<double> >&)
const;
338 virtual void interfacial_surface_area_PSD(std::vector<double>&)
const;
344 virtual void derivative_interfacial_surface_area_PSD(std::vector<double>&)
const;
345 virtual void derivative_interfacial_surface_area_PSD(std::map<
VariableNames, std::vector<double> >&)
const;
399 void declare_parameters (
const std::string& cl_section_name,
400 ParameterHandler ¶m)
const;
406 void initialize (ParameterHandler ¶m);
411 void compute_volume_fraction();
462 void derivative_effective_proton_conductivity_wrt_electrolyte_loading(
double&)
const;
469 void derivative_volume_fractions(
double &Depsilon_S,
471 double &Depsilon_N)
const;
478 method = method_eff_property_pores;
486 method = method_eff_property_electrolyte;
494 method = method_eff_property_solid;
504 const double& prc_Pt)
const
506 return -(V_Pt*1e-3)/(rho_c*pow(prc_Pt,2.0));
517 return (1/rho_Pt + (1-prc_Pt)/(prc_Pt*rho_c))*(1e-3);
560 std::map< unsigned int, double>
V_Pt;
562 std::map< unsigned int, double>
M_Pt;
564 std::map< unsigned int, double>
Av;
570 std::map< unsigned int, double>
L_CL;
587 std::map< unsigned int, double>
prc_N;
616 std::map< unsigned int, double>
k_T;
621 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:591
void get_method_transport_property_pores(std::string &method) const
Get the effective transport method in the pores.
Definition: conventional_CL.h:476
std::map< unsigned int, double > k_T
Thermal Conductivity of the layer.
Definition: conventional_CL.h:616
std::string method_eff_property_solid
Method used to compute effective properties – Type of network.
Definition: conventional_CL.h:600
std::map< unsigned int, double > V_Pt
Platinum loading at the catalyst layer per unit volume.
Definition: conventional_CL.h:560
std::map< unsigned int, double > IC_ratio
Ionomer to carbon ratio.
Definition: conventional_CL.h:584
double depsilon_S_cat_dVPt(const double &prc_Pt) const
Inline function to compute .
Definition: conventional_CL.h:515
virtual double get_active_area_Pt() const
Get the active area of platinum per unit volume of CL.
Definition: conventional_CL.h:146
std::map< unsigned int, double > epsilon_N
Volume fraction of Nafion in the cathode catalyst layer.
Definition: conventional_CL.h:544
double porosity_gamma
Definition: conventional_CL.h:597
std::map< unsigned int, double > epsilon_S
Solid volume fraction in the catalyst layer.
Definition: conventional_CL.h:548
VariableNames
The enumeration containing the names of some of the available FCST solution variables and their deriv...
Definition: system_management.h:63
std::string method_porosity
Method to compute porosity.
Definition: conventional_CL.h:568
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:134
std::map< unsigned int, double > prc_N
Percentage (mass fraction) of electrolyte in the catalyst layer.
Definition: conventional_CL.h:587
std::map< unsigned int, double > prc_Pt
Percentage of platinum per carbon on the catalyst layer.
Definition: conventional_CL.h:558
double rho_c
Density of support material.
Definition: conventional_CL.h:556
std::map< unsigned int, double > epsilon_W
Volume fraction of water in the cathode catalyst layer.
Definition: conventional_CL.h:550
double solid_mu
Solid phase network constant.
Definition: conventional_CL.h:604
virtual void get_volume_fractions(std::map< std::string, double > &volume_fractions)
Get the volume fractions in the catalyst layer.
Definition: conventional_CL.h:105
std::string method_eff_thermal
Method used to compute effective thermal conductivity in the catalyst layer.
Definition: conventional_CL.h:614
double porosity_th
Porous network threshold.
Definition: conventional_CL.h:593
std::map< unsigned int, double > epsilon_V
Void volume fraction (Porosity) of the catalyst layer.
Definition: conventional_CL.h:546
double depsilon_V_cat_depsilon_S_cat() const
Inline function to compute .
Definition: conventional_CL.h:526
This class characterizes a catalyst layer and uses this information to compute effective transport pr...
Definition: conventional_CL.h:48
std::string method_capillary_function
Method used to compute capillary pressure as a function of saturation.
Definition: conventional_CL.h:626
virtual void set_local_material_id(const unsigned int &id)
Re-implementation of the parent set_local_material_id class to initialize the porosity variable to th...
Definition: conventional_CL.h:93
std::map< unsigned int, double > s_irr
Irreducible liquid water saturation value in the MPL.
Definition: conventional_CL.h:621
double depsilon_S_cat_dprc_Pt(const double &V_Pt, const double &prc_Pt) const
Inline function to compute .
Definition: conventional_CL.h:503
std::map< unsigned int, double > Av
Active area of catalyst per unit volume of catalyst layer.
Definition: conventional_CL.h:564
double solid_th
Solid phase network threshold.
Definition: conventional_CL.h:602
double depsilon_V_cat_depsilon_N_cat() const
Inline function to compute .
Definition: conventional_CL.h:537
virtual void set_local_material_id(const unsigned int &id)
Function for setting local material id, for unit testing purposes.
Definition: base_layer.h:85
double rho_Pt
Density of platinum.
Definition: conventional_CL.h:554
virtual void get_loadings(std::map< std::string, double > &info)
Return loadings.
Definition: conventional_CL.h:124
std::map< unsigned int, double > L_CL
Layer thickness or thicknesses.
Definition: conventional_CL.h:570
double porosity_mu
Porous network constant.
Definition: conventional_CL.h:595
std::map< unsigned int, double > loading_N
Electrolyte loading.
Definition: conventional_CL.h:579
static const std::string concrete_name
FcstUtilities Concrete name used for objects of this class.
Definition: conventional_CL.h:68
std::string method_Av
Method to compute active area.
Definition: conventional_CL.h:566
double rho_N
Density of electrolyte.
Definition: conventional_CL.h:574
double electrolyte_mu
Electrolyte network constant.
Definition: conventional_CL.h:610
std::map< unsigned int, double > abs_permeability
Absolute permeability [cm^2] of the layer.
Definition: conventional_CL.h:623
std::string method_eff_property_electrolyte
Method used to compute effective properties – Type of network.
Definition: conventional_CL.h:606
double electrolyte_th
Electrolyte network threshold.
Definition: conventional_CL.h:608
std::string method_rel_liquid_permeability
Method used to compute the relative liquid permeability.
Definition: conventional_CL.h:619
void get_method_transport_property_solid(std::string &method) const
Get the effective transport method in the solid phase.
Definition: conventional_CL.h:492
Virtual class used to provide the interface for all CatalystLayer children.
Definition: catalyst_layer.h:124
void get_method_transport_property_electrolyte(std::string &method) const
Get the effective transport method in the electrolyte.
Definition: conventional_CL.h:484
std::map< unsigned int, double > M_Pt
Platinum loading at the catalyst layer per unit area.
Definition: conventional_CL.h:562