compute.h

Go to the documentation of this file.
00001 //ComputeError
00002 #ifndef _baerbel_compute_h
00003 #define _baerbel_compute_h
00004 
00005 #include <base/function.h>
00006 #include <base/tensor.h>
00007 #include <dofs/dof_handler.h>
00008 #include <grid/grid_tools.h>
00009 #include <multigrid/mg_dof_handler.h>
00010 #include <lac/sparse_matrix.h>
00011 #include <lac/vector.h>
00012 
00013 #include "myfunctions.h"
00014 //#include "FeGeneralAdini/fe_general_adini.h"
00015 
00016 #include <vector>
00017 
00018 using namespace dealii;
00019 
00020 template<int dim>
00021 class ComputeError
00022 {
00023   public:
00024     ComputeError ();
00025 
00026     void interpolate (const DoFHandler<dim> &dof_handler_coarse, 
00027         const Triangulation<dim> &tria_coarse, 
00028         const Vector<double> &solution_coarse, 
00029         const DoFHandler<dim> &dof_handler_fine, 
00030         const Triangulation<dim> &tria_fine, 
00031         Vector<double> &solution_interpolated) const;
00032 
00033 
00034     Vector<double> interpolate_solution (const Function<dim> &exact_solution,
00035         const DoFHandler<dim> &dof_handler);
00036 
00037     Vector<double> residuum (SparseMatrix<double> &system_matrix, 
00038         Vector<double> &system_rhs,
00039         Vector<double> &solution_values);
00040 
00041     void grad (const DoFHandler<dim> &dof_handler, 
00042         Vector<double> &solution,
00043         std::vector<Tensor<1, dim> > &grads);
00044 
00045     Vector<double> L2_cell_error (const Function<dim> &exact_solution,
00046         const DoFHandler<dim> &dof_handler,
00047         Vector<double> &solution);
00048 
00049     double L2_error (Vector<double> &vector_L2_cell_error);
00050     double L2_error_in_point (const Point<dim> &p, const Function<dim> & exact_solution, const DoFHandler<dim> &dof, const Vector<double> &solution);
00051 
00052     Vector<double> H1_cell_error (const Function<dim> &exact_solution,
00053         const DoFHandler<dim> &dof_handler,
00054         Vector<double> &solution);
00055 
00056     double H1_error (Vector<double> &vector_H1_cell_error);
00057     Tensor<1,dim> H1_error_in_point (const Point<dim> &p, const Function<dim> &exact_solution, const DoFHandler<dim> &dof, Vector<double> &solution);
00058 
00059     Tensor<1,dim> derivative_difference (const Point<dim> &p, 
00060         const Function<dim> &exact_solution, 
00061         const DoFHandler<dim> &dof, 
00062         const Vector<double> &solution);
00063 
00064       Vector<double> H2_cell_error (const MyFunction<dim> &exact_solution,
00065           const DoFHandler<dim> &dof_handler,
00066           Vector<double> &solution);
00067 
00068     double H2_error (Vector<double> &vector_H2_cell_error);
00069     double H2_error_in_midpoint (const Function<dim> &exact_solution, const DoFHandler<dim> &dof, Vector<double> &solution);
00070 
00071     Tensor<2,dim> second_derivative_difference (const Point<dim> &p, 
00072         const MyFunction<dim> &exact_solution, 
00073         const DoFHandler<dim> &dof, 
00074         const Vector<double> &solution);
00075 
00076     double integrate_difference(const Function<dim> &exact_solution,
00077         const DoFHandler<dim> &dof_handler);
00078 
00079     double integrate_difference(const Function<dim> &exact_solution,
00080         const DoFHandler<dim> &dof_handler,
00081         Vector<double> &solution);
00082 
00083     void integrate (const DoFHandler<dim> &dof_handler, 
00084         Vector<double> &in, 
00085         Vector<double> &L2, 
00086         Vector<double> &H1, 
00087         Vector<double> &H2);
00088 
00089     double integrate_solution (const DoFHandler<dim> &dof_handler,
00090         Vector<double> &solution);
00091 
00092     Tensor<1,dim> integrate_derivative_of_solution (const DoFHandler<dim> &dof_handler,
00093         Vector<double> &solution);
00094 
00095     Tensor<2,dim> integrate_2nd_derivative_of_solution (const DoFHandler<dim> &dof_handler,
00096         Vector<double> &solution);
00097 
00098     double integrate_onfaces (const DoFHandler<dim> &dof_handler,
00099         Vector<double> &solution);
00100 
00101     double integrate_normal_derivative_onfaces (const DoFHandler<dim> &dof_handler,
00102         Vector<double> &solution);
00103 
00104     void difference_function (const DoFHandler<dim> &dof, 
00105         const Vector<double> &solution, 
00106         const Function<dim> &exact_solution, 
00107         Vector<double> &difference);
00108   private:
00109 
00110 };
00111 
00112 #endif // _baerbel_compute_h

Generated on Thu Oct 9 14:52:44 2008 for Additional Finite Elements for deal.II by  doxygen 1.5.3