OpenFCST: The open-source Fuel Cell Simulation Toolbox
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
solid_layer.h
Go to the documentation of this file.
1 //---------------------------------------------------------------------------
2 // $Id: solid_layer.h 1354 2013-08-17 00:01:22Z secanell $
3 //
4 // Copyright (C) 2009 by Marc Secanell, University of Alberta
5 //
6 // This file is subject to QPL and may not be distributed
7 // without copyright and license information. Please refer
8 // to the file deal.II/doc/license.html for the text and
9 // further information on this license.
10 //
11 //---------------------------------------------------------------------------
12 
13 #ifndef _FUELCELLSHOP__SOLID_LAYER_H
14 #define _FUELCELLSHOP__SOLID_LAYER_H
15 
16 // FCST classes
17 #include <base_material.h>
18 #include <base_layer.h>
19 #include <carbon.h>
20 #include "fiber_base.h"
21 #include "carbon_fiber.h"
22 
23 // Include deal.II classes
24 #include <base/parameter_handler.h>
25 #include <base/point.h>
26 #include <base/function.h>
27 #include <lac/vector.h>
28 #include <fe/fe_values.h>
29 
30 //Include STL
31 #include<cmath>
32 #include<iostream>
33 
34 using namespace dealii;
35 
36 namespace FuelCellShop
37 {
38  namespace Layer
39  {
48  template <int dim>
49  class SolidLayer :
50  public BaseLayer<dim>
51  {
52  public:
56  SolidLayer(std::string name);
57 
61  ~SolidLayer();
62 
69  void declare_parameters (ParameterHandler &param) const;
70 
74  void set_parameters (const std::vector<std::string>& name_dvar,
75  const std::vector<double>& value_dvar,
76  ParameterHandler &param);
77 
82  void initialize (ParameterHandler &param);
83 
87  void set_solid_and_compute (FuelCellShop::Material::FiberBase* ,
88  double );
89 
93  virtual void effective_electron_conductivity(double& ) const;
94 
95 
96 
100  virtual void effective_electron_conductivity(Tensor<2,dim>& ) const
101  {
102  const std::type_info& info = typeid(*this);
103  deallog << "Pure function " << __FUNCTION__
104  << " called in Class "
105  << info.name() << std::endl;
106  }
110  virtual void effective_electron_conductivity(const double& /*prop*/, Tensor<2,dim>& /*prop_eff*/) const
111  {
112  const std::type_info& info = typeid(*this);
113  deallog << "Pure function " << __FUNCTION__
114  << " called in Class "
115  << info.name() << std::endl;
116  }
117 
118 
124  virtual void derivative_effective_electron_conductivity(std::vector<Tensor<2,dim> >& ) const
125  {
126  const std::type_info& info = typeid(*this);
127  deallog << "Pure function " << __FUNCTION__
128  << " called in Class "
129  << info.name() << std::endl;
130  };
134  virtual void effective_thermal_conductivity(double& ) const
135  {
136  const std::type_info& info = typeid(*this);
137  deallog << "Pure function " << __FUNCTION__
138  << " called in Class "
139  << info.name() << std::endl;
140  };
144  virtual void effective_thermal_conductivity(Tensor<2,dim>& ) const
145  {
146  const std::type_info& info = typeid(*this);
147  deallog << "Pure function " << __FUNCTION__
148  << " called in Class "
149  << info.name() << std::endl;
150  };
154  virtual void effective_thermal_conductivity(const double&, const double&, double&) const
155  {
156  const std::type_info& info = typeid(*this);
157  deallog << "Pure function " << __FUNCTION__
158  << " called in Class "
159  << info.name() << std::endl;
160  };
164  virtual void effective_thermal_conductivity(std::vector< Tensor<2,dim> >&) const
165  {
166  const std::type_info& info = typeid(*this);
167  deallog << "Pure function " << __FUNCTION__
168  << " called in Class "
169  << info.name() << std::endl;
170  };
176  virtual void derivative_effective_thermal_conductivity(std::vector<Tensor<2,dim> >& ) const
177  {
178  const std::type_info& info = typeid(*this);
179  deallog << "Pure function " << __FUNCTION__
180  << " called in Class "
181  << info.name() << std::endl;
182  };
183 
200  const std::type_info& get_base_type() const
201  {
202  return typeid(SolidLayer<dim>);
203  }
204 
208  virtual void test_class();
209 
210  protected:
211 
213  std::vector<unsigned int> boundary_ids;
214 
216  double temperature;
217 
220 
223  };
224  }
225 } // FuelCellShop
226 
227 #endif // _FUELCELLSHOP__GAS_DIFFUSION_LAYER_H