00001 #ifndef FIELD_2_H 00002 #define FIELD_2_H 00003 00004 #include "field.h" 00005 #include "interpolator.h" 00006 #include "boundary_2.h" 00007 #include "afltypes.h" 00008 00009 namespace afl 00010 { 00011 class Iterator; 00012 class Interpolator; 00017 class Field_2 : public Field 00018 { 00020 // typedef Iterator iterator; 00021 00023 public: 00031 Field_2( const std::string& name, ddf::PropertySet* pset = NULL); 00032 00036 virtual ~Field_2(); 00037 00044 virtual void interpolation( interp_t method ); 00045 00051 virtual Value get( const Point& p ) const; 00052 00057 virtual Derivative jacobian( const Point& x ) const; 00058 00066 virtual Point gradient( const Point& x ) const; 00067 00074 virtual data_t divergence( const Point& x ) const; 00075 00082 virtual data_t laplacian( const Point& x ) const; 00083 00093 virtual void set( const Point& x, const Value& value ); 00094 00108 virtual void set( const Point& x, const Value& value, const Derivative& dvalue ); 00109 00116 virtual size_t getDimension( ) const { return 2; } 00117 00124 virtual Point getBoundingBoxMin( ) const; 00125 00132 virtual Point getBoundingBoxMax( ) const; 00133 00137 virtual Field* clone( ) const; 00138 00151 virtual Value integral ( const Simplex& s ) const; 00152 00154 protected: 00155 00156 00158 private: 00159 00162 public: 00163 protected: 00164 private: 00165 00166 }; 00167 00168 }; 00169 00170 #endif // FIELD_2_H