00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef _FRAMETL_POISSON_2D_RING_TESTCASE_H
00011 #define _FRAMETL_POISSON_2D_RING_TESTCASE_H
00012
00013 #include <utils/function.h>
00014 #include <aggregated_frame.h>
00015 #include <geometry/point.h>
00016 #include <numerics/corner_singularity.h>
00017
00018 using MathTL::Function;
00019 using MathTL::Point;
00020
00021
00022 namespace FrameTL
00023 {
00024
00033 class Poisson_Solution_Ring
00034 : public Function<2>
00035 {
00036 public:
00037
00039 Poisson_Solution_Ring()
00040 {
00041 }
00042
00044 double value(const Point<2>& p, const unsigned int component = 0) const;
00045
00047 void vector_value(const Point<2> &p, Vector<double>& values) const
00048 { ; }
00049 };
00050
00057 class Poisson_RHS_Ring
00058 : public Function<2>
00059 {
00060 public:
00061
00062
00064 Poisson_RHS_Ring()
00065 {
00066 }
00067
00069 double value(const Point<2>& p, const unsigned int component = 0) const;
00070
00072 void vector_value(const Point<2> &p, Vector<double>& values) const
00073 { ; }
00074 };
00075
00081 class Poisson_SolutionGradient_Ring
00082 : public Function<2>
00083 {
00084 public:
00085
00087 Poisson_SolutionGradient_Ring()
00088 {
00089 }
00090
00092 void vector_value(const Point<2>& p, Vector<double>& values) const;
00093
00095 double value(const Point<2>& p, const unsigned int component = 0) const
00096 {
00097 return 0.0;
00098 }
00099 };
00100 }
00101 #include <poisson_2d_ring_testcase.cpp>
00102
00103 #endif