OpenFCST: The open-source Fuel Cell Simulation Toolbox
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
app_read_mesh.h
Go to the documentation of this file.
1 //---------------------------------------------------------------------------
2 //
3 // FCST: Fuel Cell Simulation Toolbox
4 //
5 // Copyright (C) 2013 by Energy Systems Design Laboratory, University of Alberta
6 //
7 // This software is distributed under the MIT License.
8 // For more information, see the README file in /doc/LICENSE
9 //
10 // - Class: app_read_mesh.cc
11 // - Description:
12 // - Developers: ?????????
13 // - $Id: app_read_mesh.h 1417 2013-08-30 16:27:42Z secanell $
14 //
15 //---------------------------------------------------------------------------
16 
17 #ifndef _FUELCELL__APP_READ_MESH__H
18 #define _FUELCELL__APP_READ_MESH__H
19 
20 // Include deal.II classes
21 #include "base/parameter_handler.h"
22 #include "base/function_lib.h"
23 #include "base/function.h"
24 #include "base/quadrature_lib.h"
25 
26 #include "lac/block_vector.h"
27 #include "lac/solver_cg.h"
28 #include "lac/solver_gmres.h"
29 #include "lac/precondition.h"
30 #include "lac/precondition_block.h"
31 #include "lac/block_matrix_array.h"
32 #include "lac/filtered_matrix.h"
33 #include "lac/sparse_ilu.h"
34 #include "lac/sparse_direct.h"
35 
36 #include "grid/grid_generator.h"
37 #include "grid/tria_accessor.h"
38 #include "grid/tria_iterator.h"
39 #include "grid/tria_boundary_lib.h"
40 
41 #include "fe/fe_values.h"
42 
43 #include "numerics/vector_tools.h"
44 #include "numerics/matrix_tools.h"
45 #include "numerics/error_estimator.h"
46 #include "base/data_out_base.h"
47 #include "numerics/data_out.h"
48 #include "boost/shared_ptr.hpp"
49 
50 // Include appframe classes
51 #include "appframe/base.h"
57 
58 // Include FuelCell classes
60 #include "geometries.h"
61 
62 //Include STL
63 #include "fstream"
64 #include "iostream"
65 #include "sstream"
66 #include <algorithm>
67 
68 // Use namespace of deal.II
69 using namespace dealii;
70 
71 namespace FuelCell
72 {
79 namespace InitialSolution
80 {
86 template <int dim>
87 //class InitialSolution
89  :
90  public Function<dim>
91 {
92 public:
96  AppReadMeshIC (std::vector<std::string> );
100  ~AppReadMeshIC ();
105  void vector_value ( const Point<dim> &p,
106  Vector<double> &v ) const;
107 
108  double value (const Point<dim> &/*p*/, const unsigned int) const;
109 
113  void set_solution_names ( std::vector<std::string> names )
114  {
115  component_names = names;
116  }
117 
118 private:
119 
123  std::vector<std::string> component_names;
124 };
125 } //end namespace InitialSolution
126 
127 
128 namespace Application
129 {
130 //---------------------------------------------------------------------------
131 //---------------------------------------------------------------------------
132 //---------------------------------------------------------------------------
139 template <int dim>
141  :
143 {
144 public:
145 
152  AppReadMesh ( boost::shared_ptr<AppFrame::ApplicationData> data =
153  boost::shared_ptr<AppFrame::ApplicationData> () );
154 
158  ~AppReadMesh();
165  virtual void declare_parameters ( ParameterHandler& param );
166 
171  void _initialize ( ParameterHandler& param );
172 
176  virtual void initialize ( ParameterHandler& param );
177 
182  void initialize_grid ( ParameterHandler& param );
183 
188  void init_solution ( AppFrame::FEVector& src ) ;
189 
199  void cell_residual ( AppFrame::FEVector&,
200  const typename DoFApplication<dim>::CellInfo& )
201  {}
202 
206  void cell_responses ( std::vector<double>& ,
207  const typename DoFApplication<dim>::CellInfo&,
208  const AppFrame::FEVector& )
209  {}
210 
215  void global_responses ( std::vector<double>&,
216  const AppFrame::FEVector& )
217  {}
218 
219 
224  virtual void data_out ( const std::string &basename,
225  const AppFrame::FEVectors &src );
226 
227 protected:
229  boost::shared_ptr< FuelCellShop::Geometry::GridBase<dim> > grid;
230 
237  std::vector<std::string> equation_names;
243  std::vector<std::string> component_names;
244 
246  std::vector<std::string> design_var;
247 
249  std::vector<double> design_var_value;
250 
251 };
252 
253 }
254 }
255 
256 #endif