00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef _FRAMETL_BIHARMONIC_1D_TESTCASE_H
00011 #define _FRAMETL_BIHARMONIC_1D_TESTCASE_H
00012
00013 #include <utils/function.h>
00014 #include <functional.h>
00015 #include <aggregated_frame.h>
00016 #include <geometry/point.h>
00017
00018 using MathTL::Function;
00019 using MathTL::Point;
00020
00021
00022 namespace FrameTL
00023 {
00031 class Biharmonic1D_Solution
00032 : public Function<1>
00033 {
00034 public:
00036 Biharmonic1D_Solution()
00037 {
00038 }
00039
00041 double value(const Point<1>& p, const unsigned int component = 0) const;
00042
00044 void vector_value(const Point<1> &p, Vector<double>& values) const
00045 { ; }
00046 };
00047
00048
00052 class Biharmonic1D_RHS_Integrand
00053 : public Function<1>
00054 {
00055 public:
00057 double value(const Point<1>& p, const unsigned int component = 0) const;
00058
00060 void vector_value(const Point<1> &p, Vector<double>& values) const
00061 { ; }
00062 };
00063
00064
00069 template<class IBASIS>
00070 class Biharmonic1D_RHS
00071 : public Functional<IBASIS, 1, 1>
00072 {
00073 public:
00077 Biharmonic1D_RHS(const AggregatedFrame<IBASIS, 1>* frame)
00078 : Functional<IBASIS,1,1>(new Biharmonic1D_RHS_Integrand(), frame)
00079 {}
00080
00084 virtual ~Biharmonic1D_RHS()
00085 {}
00086
00090 virtual double evaluate(const typename AggregatedFrame<IBASIS, 1>::Index& lambda) const;
00091 };
00092 }
00093
00094 #include <biharmonic_1d_testcase.cpp>
00095
00096 #endif // _FRAMETL_BIHARMONIC_1D_TESTCASE_H