18 #ifndef _FUELCELLSHOP__MICRO_POROUS_LAYER_H
19 #define _FUELCELLSHOP__MICRO_POROUS_LAYER_H
28 #include <base/parameter_handler.h>
29 #include <base/point.h>
30 #include <base/function.h>
31 #include <lac/vector.h>
32 #include <fe/fe_values.h>
38 using namespace dealii;
40 namespace FuelCellShop
171 ParameterHandler ¶m)
177 iterator->second->declare_parameters(mpl_section_name, param);
184 static boost::shared_ptr<FuelCellShop::Layer::MicroPorousLayer<dim> >
create_MicroPorousLayer (
const std::string& mpl_section_name,
185 ParameterHandler ¶m)
187 boost::shared_ptr<FuelCellShop::Layer::MicroPorousLayer<dim> > pointer;
189 std::string concrete_name;
190 param.enter_subsection(
"Fuel cell data");
192 param.enter_subsection(mpl_section_name);
194 concrete_name = param.get(
"Micro porous layer type");
197 param.leave_subsection();
199 param.leave_subsection();
205 if (iterator->second)
217 FcstUtilities::log<<
"Concrete name in FuelCellShop::Layer::MicroPorousLayer<dim>::create_MicroPorousLayer does not exist"<<std::endl;
221 pointer->initialize(param);
246 void initialize (ParameterHandler ¶m);
284 const std::type_info& info =
typeid(*this);
286 <<
" called in Class "
287 << info.name() << std::endl;
296 const std::type_info& info =
typeid(*this);
298 <<
" called in Class "
299 << info.name() << std::endl;
310 const std::type_info& info =
typeid(*this);
312 <<
" called in Class "
313 << info.name() << std::endl;
324 const std::type_info& info =
typeid(*this);
326 <<
" called in Class "
327 << info.name() << std::endl;
342 const std::type_info& info =
typeid(*this);
344 <<
" called in Class "
345 << info.name() << std::endl;
355 const std::type_info& info =
typeid(*this);
357 <<
" called in Class "
358 << info.name() << std::endl;
368 const std::type_info& info =
typeid(*this);
370 <<
" called in Class "
371 << info.name() << std::endl;
381 const std::type_info& info =
typeid(*this);
383 <<
" called in Class "
384 << info.name() << std::endl;
393 const std::type_info& info =
typeid(*this);
395 <<
" called in Class "
396 << info.name() << std::endl;
405 const std::type_info& info =
typeid(*this);
407 <<
" called in Class "
408 << info.name() << std::endl;
417 const std::type_info& info =
typeid(*this);
419 <<
" called in Class "
420 << info.name() << std::endl;
428 const std::type_info& info =
typeid(*this);
430 <<
" called in Class "
431 << info.name() << std::endl;
440 const std::type_info& info =
typeid(*this);
442 <<
" called in Class "
443 << info.name() << std::endl;
451 const std::type_info& info =
typeid(*this);
453 <<
" called in Class "
454 << info.name() << std::endl;
461 const std::type_info& info =
typeid(*this);
463 <<
" called in Class "
464 << info.name() << std::endl;
473 const std::type_info& info =
typeid(*this);
475 <<
" called in Class "
476 << info.name() << std::endl;
485 const std::type_info& info =
typeid(*this);
487 <<
" called in Class "
488 << info.name() << std::endl;
497 const std::type_info& info =
typeid(*this);
499 <<
" called in Class "
500 << info.name() << std::endl;
511 const std::type_info& info =
typeid(*this);
513 <<
" called in Class "
514 << info.name() << std::endl;
525 double& effective_property)
const
527 const std::type_info& info =
typeid(*this);
529 <<
" called in Class "
530 << info.name() << std::endl;
541 Tensor<2,dim>& effective_property)
const
543 const std::type_info& info =
typeid(*this);
545 <<
" called in Class "
546 << info.name() << std::endl;
587 void declare_parameters (
const std::string& name,
588 ParameterHandler ¶m)
const;
601 typedef std::map< std::string, MicroPorousLayer<dim>* >
_mapFactory;
660 virtual boost::shared_ptr<FuelCellShop::Layer::MicroPorousLayer<dim> >
create_replica (
const std::string &name)
662 const std::type_info& info =
typeid(*this);
664 <<
" called in Class "
665 << info.name() << std::endl;
674 boost::shared_ptr< FuelCellShop::MicroScale::BasePSD<dim> >
PSD;
682 #endif // _FUELCELLSHOP__MICRO_POROUS_LAYER_H
virtual void effective_gas_diffusivity(Table< 2, Tensor< 2, dim > > &) const
Compute the effective property in the pores.
Definition: micro_porous_layer.h:340
virtual void effective_electron_conductivity(double &) const
Compute the effective conductivity.
Definition: micro_porous_layer.h:353
static boost::shared_ptr< FuelCellShop::Layer::MicroPorousLayer< dim > > create_MicroPorousLayer(const std::string &mpl_section_name, ParameterHandler ¶m)
Function used to select the appropriate MicroPorousLayer.
Definition: micro_porous_layer.h:184
virtual void pcapillary(std::vector< double > &) const
Compute , at all quadrature points in the cell.
Definition: micro_porous_layer.h:449
virtual void effective_transport_property_solid(const double &property, double &effective_property) const
Compute the effective property of a property that is defined by the network of fibres.
Definition: micro_porous_layer.h:524
virtual void effective_electron_conductivity(Tensor< 2, dim > &) const
Compute the effective conductivity.
Definition: micro_porous_layer.h:366
virtual void effective_gas_diffusivity(const double &, const double &, Tensor< 2, dim > &) const
Compute the effective property in the pores of the MPL.
Definition: micro_porous_layer.h:294
VariableNames
The enumeration containing the names of some of the available FCST solution variables and their deriv...
Definition: system_management.h:62
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: micro_porous_layer.h:322
virtual boost::shared_ptr< FuelCellShop::Layer::MicroPorousLayer< dim > > create_replica(const std::string &name)
This member function is used to create an object of type micro porous layer.
Definition: micro_porous_layer.h:660
Virtual class used to provide the interface for all MicroPorousLayer children.
Definition: micro_porous_layer.h:116
virtual void dpcapillary_dsat(std::vector< double > &) const
Compute , at all quadrature points in the MPL.
Definition: micro_porous_layer.h:459
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 MPL...
Definition: micro_porous_layer.h:308
std::string PSD_type
PSD class type from input file.
Definition: micro_porous_layer.h:671
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 MPL.
Definition: micro_porous_layer.h:495
virtual void effective_transport_property_solid(const Tensor< 2, dim > &property, Tensor< 2, dim > &effective_property) const
Compute the effective property of a property that is defined by the network of fibres.
Definition: micro_porous_layer.h:540
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 MP...
Definition: micro_porous_layer.h:483
FCSTLogStream log
Object used to output data to file and, if file attached recorded to a file as well.
static void declare_MicroPorousLayer_parameters(const std::string &mpl_section_name, ParameterHandler ¶m)
Function used to declare all the data necessary in the parameter files former all MicroPorousLayer ch...
Definition: micro_porous_layer.h:170
static const std::string concrete_name
Concrete name used for objects of this class.
Definition: micro_porous_layer.h:139
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: micro_porous_layer.h:268
virtual void derivative_effective_thermal_conductivity(std::vector< Tensor< 2, dim > > &) const
Compute the derivative of effective thermal conductivity with respect to temperature.
Definition: micro_porous_layer.h:415
virtual void effective_gas_diffusivity(const double &, const double &, double &) const
Compute the effective property in the pores of the MPL.
Definition: micro_porous_layer.h:282
Virtual class used to implement properties that are characteristic of a porous layer.
Definition: porous_layer.h:65
static _mapFactory * get_mapFactory()
Return the map library that stores all childrens of this class.
Definition: micro_porous_layer.h:650
virtual void effective_thermal_conductivity(Tensor< 2, dim > &) const
Compute the effective thermal conductivity.
Definition: micro_porous_layer.h:391
virtual void effective_thermal_conductivity(double &) const
Compute the effective thermal conductivity.
Definition: micro_porous_layer.h:379
virtual void derivative_dpcapillary_dsat(std::map< VariableNames, std::vector< double > > &) const
Compute the derivative of in the MPL, with respect to either the solution or design parameters...
Definition: micro_porous_layer.h:471
virtual bool set_method_effective_transport_property_solid(std::string)
Specify the methodology to be used to compute the effective properties for the porous phase...
Definition: micro_porous_layer.h:509
virtual void derivative_liquid_permeablity(std::map< VariableNames, std::vector< Tensor< 2, dim > > > &) const
Compute the derivative of the anisotropic liquid permeability in the MPL with respect to either the s...
Definition: micro_porous_layer.h:438
boost::shared_ptr< FuelCellShop::MicroScale::BasePSD< dim > > PSD
Definition: micro_porous_layer.h:674
virtual void liquid_permeablity(std::vector< Tensor< 2, dim > > &) const
Compute the anisotropic MPL liquid permeability , at all quadrature points in the cell...
Definition: micro_porous_layer.h:426
virtual void effective_thermal_conductivity(std::vector< Tensor< 2, dim > > &) const
Compute the effective thermal conductivity.
Definition: micro_porous_layer.h:403
std::map< std::string, MicroPorousLayer< dim > * > _mapFactory
This object is used to store all objects of type MicroPorousLayer.
Definition: micro_porous_layer.h:601