00001
00002 #ifndef _baerbel_tools_h
00003 #define _baerbel_tools_h
00004
00005 #include <lac/full_matrix.h>
00006 #include <multigrid/mg_dof_handler.h>
00007
00008 #include "myfunctions.h"
00009
00010 using namespace dealii;
00011
00018 template <int dim>
00019 class Tools
00020 {
00021 public:
00022 Tools ();
00023
00029 static void
00030 interpolate_boundary_values (
00031 const DoFHandler<dim> &dof,
00032 const unsigned char boundary_component,
00033 std::map<unsigned int,double> &boundary_values,
00034 const MyFunction<dim> &boundary_function,
00035 bool normal_derivative = false,
00036 const std::vector<bool> &component_mask_ = std::vector<bool>());
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00053 static void
00054 make_boundary_list (
00055 const MGDoFHandler<dim> &dof,
00056 const unsigned char boundary_component,
00057 std::vector<std::set<unsigned int> > &boundary_values,
00058 bool normal_derivative = false,
00059 const std::vector<bool> &component_mask_ = std::vector<bool>());
00060
00061 template <class DOFHANDLER, class ITERATOR>
00062 static void compute_cell_terms (
00063 const DOFHANDLER &dof,
00064 ITERATOR &cell,
00065 FullMatrix<double> &cell_matrix,
00066 Vector<double> &cell_rhs);
00067
00068 template <class DOFHANDLER, class ITERATOR>
00069 static void compute_inner_jumps (
00070 const DOFHANDLER &dof,
00071 ITERATOR &cell,
00072 unsigned int face_nr,
00073 FullMatrix<double> &int_int,
00074 FullMatrix<double> &int_ext,
00075 FullMatrix<double> &ext_int,
00076 FullMatrix<double> &ext_ext);
00077
00078 template <class DOFHANDLER, class ITERATOR>
00079 static void compute_jumps_on_boundary (
00080 const DOFHANDLER &dof,
00081 ITERATOR &cell,
00082 unsigned int face_nr,
00083 FullMatrix<double> &int_int);
00084
00085 };
00086
00087 #endif //_baerbel_tools_h