00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef _FRAMETL_FRAME_EVALUATE_H
00011 #define _FRAMETL_FRAME_EVALUATE_H
00012
00013 #include <geometry/sampled_mapping.h>
00014 #include <algebra/infinite_vector.h>
00015 #include <aggregated_frame.h>
00016
00017 using MathTL::SampledMapping;
00018 using MathTL::InfiniteVector;
00019 using FrameTL::AggregatedFrame;
00020
00021 namespace FrameTL
00022 {
00027 template <class IBASIS, unsigned int DIM_d, unsigned int DIM_m>
00028 class EvaluateFrame
00029 {
00030
00031 public:
00036 virtual SampledMapping<DIM_d> evaluate(const AggregatedFrame<IBASIS,DIM_d,DIM_m>& frame,
00037 const typename AggregatedFrame<IBASIS,DIM_d,DIM_m>::Index& lambda,
00038 const unsigned int patch,
00039 const bool primal,
00040 const int resolution) const = 0;
00041
00046 virtual SampledMapping<DIM_d> evaluate(const AggregatedFrame<IBASIS,DIM_d,DIM_m>& frame,
00047 const typename AggregatedFrame<IBASIS,DIM_d,DIM_m>::Index& lambda,
00048 const bool primal,
00049 const int resolution) const = 0;
00050
00055 virtual Array1D<SampledMapping<DIM_d> > evaluate(const AggregatedFrame<IBASIS,DIM_d,DIM_m>& frame,
00056 const InfiniteVector<double,
00057 typename AggregatedFrame<IBASIS,DIM_d,DIM_m>::Index>& coeffs,
00058 const bool primal,
00059 const int resolution) const = 0;
00060
00065 virtual Array1D<SampledMapping<DIM_d> > evaluate_difference(const AggregatedFrame<IBASIS,DIM_d,DIM_m>& frame,
00066 const InfiniteVector<double,
00067 typename AggregatedFrame<IBASIS,DIM_d,DIM_m>::Index>& coeffs,
00068 const Function<DIM_m>& f,
00069 const int resolution) const = 0;
00070
00071
00072 virtual double L_2_error(const AggregatedFrame<IBASIS,1,1>& frame,
00073 const InfiniteVector<double,
00074 typename AggregatedFrame<IBASIS,1,1>::Index>& coeffs,
00075 const Function<1>& f,
00076 const int resolution,
00077 const double a, const double b) const;
00078 };
00079
00080 template <class IBASIS>
00081 class EvaluateFrame<IBASIS,1,1>
00082 {
00083 public:
00084
00085 SampledMapping<1>
00086 evaluate(const AggregatedFrame<IBASIS,1,1>& frame,
00087 const typename AggregatedFrame<IBASIS,1,1>::Index& lambda,
00088 const unsigned int patch,
00089 const bool primal,
00090 const int resolution) const;
00091
00092 SampledMapping<1>
00093 evaluate(const AggregatedFrame<IBASIS,1,1>& frame,
00094 const typename AggregatedFrame<IBASIS,1,1>::Index& lambda,
00095 const bool primal,
00096 const int resolution) const;
00097
00098 Array1D<SampledMapping<1> >
00099 evaluate(const AggregatedFrame<IBASIS,1,1>& frame,
00100 const InfiniteVector<double,
00101 typename AggregatedFrame<IBASIS,1,1>::Index>& coeffs,
00102 const bool primal,
00103 const int resolution) const;
00104
00105 Array1D<SampledMapping<1> >
00106 evaluate_difference(const AggregatedFrame<IBASIS,1,1>& frame,
00107 const InfiniteVector<double,
00108 typename AggregatedFrame<IBASIS,1,1>::Index>& coeffs,
00109 const Function<1>& f,
00110 const int resolution) const;
00111
00112 double
00113 L_2_error(const AggregatedFrame<IBASIS,1,1>& frame,
00114 const InfiniteVector<double,
00115 typename AggregatedFrame<IBASIS,1,1>::Index>& coeffs,
00116 const Function<1>& f,
00117 const int resolution,
00118 const double a, const double b) const;
00119
00120
00121
00122 };
00123
00124 template <class IBASIS>
00125 class EvaluateFrame<IBASIS,2,2>
00126 {
00127 public:
00128
00129 SampledMapping<2>
00130 evaluate(const AggregatedFrame<IBASIS,2,2>& frame,
00131 const typename AggregatedFrame<IBASIS,2,2>::Index& lambda,
00132 const unsigned int patch,
00133 const bool primal,
00134 const int resolution) const;
00135
00136 SampledMapping<2>
00137 evaluate(const AggregatedFrame<IBASIS,2,2>& frame,
00138 const typename AggregatedFrame<IBASIS,2,2>::Index& lambda,
00139 const bool primal,
00140 const int resolution) const;
00141
00142 Array1D<SampledMapping<2> >
00143 evaluate(const AggregatedFrame<IBASIS,2,2>& frame,
00144 const InfiniteVector<double,
00145 typename AggregatedFrame<IBASIS,2,2>::Index>& coeffs,
00146 const bool primal,
00147 const int resolution) const;
00148
00149 Array1D<SampledMapping<2> >
00150 evaluate_difference(const AggregatedFrame<IBASIS,2,2>& frame,
00151 const InfiniteVector<double,
00152 typename AggregatedFrame<IBASIS,2,2>::Index>& coeffs,
00153 const Function<2>& f,
00154 const int resolution) const;
00155
00156
00157 double
00158 L_2_error(const AggregatedFrame<IBASIS,2,2>& frame,
00159 const InfiniteVector<double,
00160 typename AggregatedFrame<IBASIS,2,2>::Index>& coeffs,
00161 const Function<2>& f,
00162 const int resolution,
00163 const double a, const double b) const;
00164
00165 };
00166
00167 }
00168
00169 #include <frame_evaluate.cpp>
00170
00171 #endif