17 #ifndef _FUELCELLSHOP__BASE__PSD_H
18 #define _FUELCELLSHOP__BASE__PSD_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>
39 using namespace dealii;
41 namespace FuelCellShop
169 iterator->second->declare_parameters(param);
186 static boost::shared_ptr<FuelCellShop::MicroScale::BasePSD<dim> >
create_PSD (
const std::string& psd_section_name,
187 ParameterHandler ¶m)
189 boost::shared_ptr<FuelCellShop::MicroScale::BasePSD<dim> > pointer;
191 std::string concrete_name;
193 param.enter_subsection(
"PSD parameters");
195 param.enter_subsection(
"BasePSD");
197 concrete_name = param.get(
"psd type");
199 param.leave_subsection();
201 param.leave_subsection();
207 if (iterator->second)
213 deallog<<
"Pointer not initialized"<<std::endl;
219 deallog<<
"Concrete name in FuelCellShop::MicroScale::BasePSD::create_psd does not exist"<<std::endl;
223 pointer->initialize(param);
236 this->por = porosity;
254 this->derivative_flags = flags;
270 constant_solutions[name] = value;
284 const std::type_info& info =
typeid(*this);
285 deallog <<
"Pure function " << __FUNCTION__
286 <<
" called in Class "
287 << info.name() << std::endl;
307 const std::type_info& info =
typeid(*this);
308 deallog <<
"Pure function " << __FUNCTION__
309 <<
" called in Class "
310 << info.name() << std::endl;
325 virtual void get_saturation(std::vector<double>& )
const = 0;
332 virtual void get_global_saturated_permeability(
double& )
const = 0;
339 virtual void get_relative_liquid_permeability(std::vector<double>& )
const = 0;
346 virtual void get_relative_gas_permeability(std::vector<double>& )
const = 0;
353 virtual void get_liquid_gas_interfacial_surface(std::vector<double>& )
const = 0;
360 virtual void get_wetted_wall_surface_area(std::vector<double>& )
const = 0;
367 virtual void get_knudsen_radius(std::vector<double>& )
const = 0;
389 BasePSD(
const std::string& name);
398 void declare_parameters (ParameterHandler ¶m)
const;
404 void initialize (ParameterHandler ¶m) ;
476 virtual boost::shared_ptr<FuelCellShop::MicroScale::BasePSD<dim> >
create_replica (
const std::string &name)
478 const std::type_info& info =
typeid(*this);
479 deallog <<
"Pure function " << __FUNCTION__
480 <<
" called in Class "
481 << info.name() << std::endl;
virtual boost::shared_ptr< FuelCellShop::MicroScale::BasePSD< dim > > create_replica(const std::string &name)
This member function is used to create an object of type gas diffusion layer.
Definition: PSD_base.h:476
double get_porosity() const
Definition: PSD_base.h:242
VariableNames
The enumeration containing the names of some of the available FCST solution variables and their deriv...
Definition: system_management.h:62
std::vector< double > f_k
The f_k is the contribution of the log-normal distribution k to the total PSD.
Definition: PSD_base.h:533
const std::string & name_psd() const
Return the name of the PSD.
Definition: PSD_base.h:296
double P_b
The effects of pore interconnectivity is represented by probability P_b.
Definition: PSD_base.h:518
void set_porosity(double porosity)
Definition: PSD_base.h:234
static void declare_PSD_parameters(ParameterHandler ¶m)
Function used to declare all the data necessary in the parameter files for all BasePSD children...
Definition: PSD_base.h:163
double lamda
The lamda is measured from the mercury intrusion experiment.
Definition: PSD_base.h:513
virtual void set_constant_solution(const double &value, const VariableNames &name)
Set those solution variables which are constant in the particular application.
Definition: PSD_base.h:268
virtual void print_psd_properties() const
This function prints out the psd properties.
Definition: PSD_base.h:305
std::map< VariableNames, double > constant_solutions
Map storing values of solution variables constant in a particular application.
Definition: PSD_base.h:498
std::vector< VariableNames > derivative_flags
Flags for derivatives: These flags are used to request derivatives of material properties.
Definition: PSD_base.h:493
const std::string name
Name of the psd.
Definition: PSD_base.h:490
double por
The por is the porosity inherited from the layer class.
Definition: PSD_base.h:548
std::vector< double > r_k
The r_k is the characteristic pore size of the distribution k.
Definition: PSD_base.h:538
static _mapFactory * get_mapFactory()
Return the map library that stores all childrens of this class.
Definition: PSD_base.h:464
double contact_angle
The contact_angle is the contact angle between air and water.
Definition: PSD_base.h:508
virtual void set_solution(const std::vector< SolutionVariable > &)
If the effective properties in the psd depend on the solution, the solution for a given cell should b...
Definition: PSD_base.h:282
std::map< std::string, BasePSD< dim > * > _mapFactory
This object is used to store all objects of type psd.
Definition: PSD_base.h:412
double gamma
The gamma is the Water-air interface surface tension.
Definition: PSD_base.h:503
Pore Size Distribution.
Definition: PSD_base.h:130
static boost::shared_ptr< FuelCellShop::MicroScale::BasePSD< dim > > create_PSD(const std::string &psd_section_name, ParameterHandler ¶m)
Function used to select the appropriate CatalystLayer type as specified in the ParameterHandler under...
Definition: PSD_base.h:186
double F_HO
The F_HO is the fraction of the total volume corresponding to the hydrophobic pores.
Definition: PSD_base.h:528
double F_HI
The F_HI is the fraction of the total volume corresponding to the hydrophilic pores.
Definition: PSD_base.h:523
BasePSD()
Constructor.
Definition: PSD_base.h:383
void set_derivative_flags(const std::vector< VariableNames > &flags)
Set the names of FCST solution variables with respect to which you would like to compute the derivati...
Definition: PSD_base.h:252
std::vector< double > s_k
The s_k is the spread of the distribution k.
Definition: PSD_base.h:543