17 #ifndef _FUELCELLSHOP__MICRO_POROUS_LAYER_H
18 #define _FUELCELLSHOP__MICRO_POROUS_LAYER_H
24 using namespace dealii;
26 namespace FuelCellShop
157 ParameterHandler ¶m)
163 iterator->second->declare_parameters(mpl_section_name, param);
170 static boost::shared_ptr<FuelCellShop::Layer::MicroPorousLayer<dim> >
create_MicroPorousLayer (
const std::string& mpl_section_name,
171 ParameterHandler ¶m)
173 boost::shared_ptr<FuelCellShop::Layer::MicroPorousLayer<dim> > pointer;
175 std::string concrete_name;
176 param.enter_subsection(
"Fuel cell data");
178 param.enter_subsection(mpl_section_name);
180 concrete_name = param.get(
"Micro porous layer type");
183 param.leave_subsection();
185 param.leave_subsection();
191 if (iterator->second)
203 FcstUtilities::log<<
"Concrete name in FuelCellShop::Layer::MicroPorousLayer<dim>::create_MicroPorousLayer does not exist"<<std::endl;
207 pointer->initialize(param);
232 void initialize (ParameterHandler ¶m);
270 const std::type_info& info =
typeid(*this);
272 <<
" called in Class "
273 << info.name() << std::endl;
282 const std::type_info& info =
typeid(*this);
284 <<
" called in Class "
285 << 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;
328 const std::type_info& info =
typeid(*this);
330 <<
" called in Class "
331 << info.name() << std::endl;
341 const std::type_info& info =
typeid(*this);
343 <<
" called in Class "
344 << info.name() << std::endl;
354 const std::type_info& info =
typeid(*this);
356 <<
" called in Class "
357 << info.name() << std::endl;
367 const std::type_info& info =
typeid(*this);
369 <<
" called in Class "
370 << info.name() << std::endl;
379 const std::type_info& info =
typeid(*this);
381 <<
" called in Class "
382 << info.name() << std::endl;
391 const std::type_info& info =
typeid(*this);
393 <<
" called in Class "
394 << info.name() << std::endl;
403 const std::type_info& info =
typeid(*this);
405 <<
" called in Class "
406 << info.name() << std::endl;
414 const std::type_info& info =
typeid(*this);
416 <<
" called in Class "
417 << info.name() << std::endl;
426 const std::type_info& info =
typeid(*this);
428 <<
" called in Class "
429 << info.name() << std::endl;
438 const std::type_info& info =
typeid(*this);
440 <<
" called in Class "
441 << info.name() << std::endl;
446 const std::type_info& info =
typeid(*this);
448 <<
" called in Class "
449 << info.name() << std::endl;
454 const std::type_info& info =
typeid(*this);
456 <<
" called in Class "
457 << info.name() << std::endl;
462 const std::type_info& info =
typeid(*this);
464 <<
" called in Class "
465 << info.name() << std::endl;
473 const std::type_info& info =
typeid(*this);
475 <<
" called in Class "
476 << info.name() << std::endl;
481 const std::type_info& info =
typeid(*this);
483 <<
" called in Class "
484 << info.name() << std::endl;
489 const std::type_info& info =
typeid(*this);
491 <<
" called in Class "
492 << info.name() << std::endl;
499 const std::type_info& info =
typeid(*this);
501 <<
" called in Class "
502 << info.name() << std::endl;
511 const std::type_info& info =
typeid(*this);
513 <<
" called in Class "
514 << info.name() << std::endl;
523 const std::type_info& info =
typeid(*this);
525 <<
" called in Class "
526 << info.name() << std::endl;
535 const std::type_info& info =
typeid(*this);
537 <<
" called in Class "
538 << info.name() << std::endl;
549 const std::type_info& info =
typeid(*this);
551 <<
" called in Class "
552 << info.name() << std::endl;
563 double& effective_property)
const
565 const std::type_info& info =
typeid(*this);
567 <<
" called in Class "
568 << info.name() << std::endl;
579 Tensor<2,dim>& effective_property)
const
581 const std::type_info& info =
typeid(*this);
583 <<
" called in Class "
584 << info.name() << std::endl;
594 const std::type_info& info =
typeid(*this);
596 <<
" called in Class "
597 << info.name() << std::endl;
606 const std::type_info& info =
typeid(*this);
608 <<
" called in Class "
609 << info.name() << std::endl;
614 const std::type_info& info =
typeid(*this);
616 <<
" called in Class "
617 << info.name() << std::endl;
658 void declare_parameters (
const std::string& name,
659 ParameterHandler ¶m)
const;
672 typedef std::map< std::string, MicroPorousLayer<dim>* >
_mapFactory;
731 virtual boost::shared_ptr<FuelCellShop::Layer::MicroPorousLayer<dim> >
create_replica (
const std::string &name)
733 const std::type_info& info =
typeid(*this);
735 <<
" called in Class "
736 << info.name() << std::endl;
758 #endif // _FUELCELLSHOP__MICRO_POROUS_LAYER_H
Tensor< 2, dim > water_diffusivity
Water diffusion coefficient.
Definition: micro_porous_layer.h:746
virtual void effective_gas_diffusivity(Table< 2, Tensor< 2, dim > > &) const
Compute the effective property in the pores.
Definition: micro_porous_layer.h:326
virtual void derivative_interfacial_surface_area_PSD(std::vector< double > &) const
Definition: micro_porous_layer.h:612
virtual void effective_electron_conductivity(double &) const
Compute the effective conductivity.
Definition: micro_porous_layer.h:339
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:170
virtual void pcapillary(std::vector< double > &) const
Compute , at all quadrature points in the cell.
Definition: micro_porous_layer.h:471
virtual void saturated_liquid_permeablity_PSD(double &) const
Definition: micro_porous_layer.h:460
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:562
virtual void effective_electron_conductivity(Tensor< 2, dim > &) const
Compute the effective conductivity.
Definition: micro_porous_layer.h:352
virtual void derivative_saturation_from_capillary_equation_PSD(std::vector< double > &) const
Definition: micro_porous_layer.h:487
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:280
VariableNames
The enumeration containing the names of some of the available FCST solution variables and their deriv...
Definition: system_management.h:63
virtual void interfacial_surface_area_PSD(std::vector< double > &) const
Compute the liquid-gas interfacial surface area per unit volume, , at all quadrature points in the CL...
Definition: micro_porous_layer.h:592
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:308
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:731
Virtual class used to provide the interface for all MicroPorousLayer children.
Definition: micro_porous_layer.h:102
virtual void dpcapillary_dsat(std::vector< double > &) const
Compute , at all quadrature points in the MPL.
Definition: micro_porous_layer.h:497
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:294
Tensor< 2, dim > electrical_conductivity
Electrical conductivity from the input file in the anisotripic case.
Definition: micro_porous_layer.h:748
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:533
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:578
virtual void saturation_from_capillary_equation(std::vector< double > &) const
Definition: micro_porous_layer.h:479
virtual void relative_liquid_permeability_PSD(std::vector< Tensor< 2, dim > > &) const
Compute the derivative of the anisotropic liquid permeability in the GDL with respect to either the s...
Definition: micro_porous_layer.h:436
Tensor< 2, dim > thermal_conductivity
Thermal conductivity from the input file in the anisotripic case.
Definition: micro_porous_layer.h:750
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:521
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:156
static const std::string concrete_name
Concrete name used for objects of this class.
Definition: micro_porous_layer.h:125
virtual void derivative_interfacial_surface_area_PSD(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 CL.
Definition: micro_porous_layer.h:604
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:254
virtual void derivative_relative_liquid_permeablity_PSD(std::map< VariableNames, std::vector< Tensor< 2, dim > > > &) const
Definition: micro_porous_layer.h:444
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:401
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:268
Tensor< 2, dim > oxygen_diffusivity
Oxygen diffusion coefficient.
Definition: micro_porous_layer.h:744
Virtual class used to implement properties that are characteristic of a porous layer.
Definition: porous_layer.h:75
virtual void derivative_relative_liquid_permeablity_PSD(std::vector< double > &) const
Definition: micro_porous_layer.h:452
static _mapFactory * get_mapFactory()
Return the map library that stores all childrens of this class.
Definition: micro_porous_layer.h:721
virtual void effective_thermal_conductivity(Tensor< 2, dim > &) const
Compute the effective thermal conductivity.
Definition: micro_porous_layer.h:377
virtual void effective_thermal_conductivity(double &) const
Compute the effective thermal conductivity.
Definition: micro_porous_layer.h:365
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:509
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:547
bool anisotropy
Anisotropy variable.
Definition: micro_porous_layer.h:742
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:424
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:412
virtual void effective_thermal_conductivity(std::vector< Tensor< 2, dim > > &) const
Compute the effective thermal conductivity.
Definition: micro_porous_layer.h:389
std::map< std::string, MicroPorousLayer< dim > * > _mapFactory
This object is used to store all objects of type MicroPorousLayer.
Definition: micro_porous_layer.h:672