OpenFCST: The open-source Fuel Cell Simulation Toolbox
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
matrix_shop_cell.h
Go to the documentation of this file.
1 //---------------------------------------------------------------------------
2 // $Id: matrix_shop_cell.h 1348 2013-08-16 00:45:07Z secanell $
3 //
4 // Copyright (C) 2006, 2007, 2008, 2009 by Guido Kanschat
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 __appshop__matrix_shop_cell_h
14 #define __appshop__matrix_shop_cell_h
15 
16 #include <appframe/app_shop.h>
17 #include <appframe/matrix_base.h>
18 
23 using namespace AppFrame;
24 
25 namespace AppShop
26 {
27  namespace Matrix
28  {
29  namespace Cell
30  {
38  template <int dim>
39  void mass (FullMatrix<double>& M,
40  const FEValuesBase<dim>& fe,
41  const double a = 1.);
57  template <int dim>
58  void mass (FullMatrix<double>& M,
59  const FEValuesBase<dim>& fe,
60  const FEValuesBase<dim>& fetest,
61  const unsigned int component,
62  const double a = 1.);
75  template <int dim>
77  const FEValuesBase<dim>& fe,
78  const std::vector<double>& a,
79  bool divide);
80 
94  template <int dim>
96  const FEValuesBase<dim>& fe,
97  const FEValuesBase<dim>& fetest,
98  const unsigned int select,
99  const std::vector<double>& factor,
100  bool divide = false);
101 
111  template <int dim>
112  void advection(
114  const FEValuesBase<dim>& fe,
115  const std::vector<Point<dim> >& velocity);
116 
126  template <int dim>
127  void advection(
129  const FEValuesBase<dim>& fe,
130  const VectorSlice<const std::vector<std::vector<double> > >& velocity,
131  double factor = 1.);
132 
148  template <int dim>
149  void div_primal(
150  std::vector<MatrixBlock<FullMatrix<double> > >& M,
151  const std::vector<unsigned int>& indices,
152  const FEValuesBase<dim>& fe,
153  const FEValuesBase<dim>& fetest,
154  double factor = 1.);
155 
171  template <int dim>
172  void div(
173  std::vector<MatrixBlock<FullMatrix<double> > >& M,
174  const std::vector<unsigned int>& indices,
175  const FEValuesBase<dim>& fe,
176  const FEValuesBase<dim>& fetest,
177  double factor = 1.);
178 
186  template <int dim>
187  void div_scaled (
189  const FEValuesBase<dim>& fe,
190  const FEValuesBase<dim>& fetest,
191  const std::vector<double>& factor);
192 
200  template <int dim>
201  void di(
203  const FEValuesBase<dim>& fe,
204  const FEValuesBase<dim>& fetest,
205  unsigned int i);
206 
214  template <int dim>
215  void di_scaled (
217  const FEValuesBase<dim>& fe,
218  const FEValuesBase<dim>& fetest,
219  unsigned int d,
220  std::vector<double>& factor);
221 
229  template <int dim>
230  void eps_div(
232  const FEValuesBase<dim>& fe,
233  const FEValuesBase<dim>& fetest);
234 
242  template <int dim>
243  void laplacian(
245  const FEValuesBase<dim>& fe,
246  double nu = 1.);
255  template <int dim>
256  void laplacian(
258  const FEValuesBase<dim>& fe,
259  Tensor<2,dim> nu);
260 
269  template <int dim>
270  void laplacian_scaled(
272  const FEValuesBase<dim>& fe,
273  const std::vector<double>& nu,
274  bool divide = false);
275 
284  template <int dim>
285  void laplacian_scaled(
287  const FEValuesBase<dim>& fe,
288  const double nu,
289  bool divide = false);
290 
298  template <int dim>
299  void div_div (FullMatrix<double>& M,
300  const FEValuesBase<dim>& fe,
301  const double factor = 1.);
302 
303  }
304  }
305 }
306 
307 #endif