00001 #ifndef FIELD_4_H 00002 #define FIELD_4_H 00003 00004 #include "field.h" 00005 #include "interpolator.h" 00006 #include "afltypes.h" 00007 00008 namespace afl 00009 { 00010 class Iterator; 00011 class Interpolator; 00016 class Field_4 : public Field 00017 { 00019 // typedef Iterator iterator; 00020 00022 public: 00030 Field_4( const std::string& name, ddf::PropertySet* pset = NULL); 00031 00035 virtual ~Field_4(); 00036 00043 void interpolation( interp_t method ); 00044 00050 Value get( const Point& p ) const; 00051 00056 virtual Derivative jacobian( const Point& x ) const; 00057 00065 virtual Point gradient( const Point& x ) const; 00066 00073 virtual data_t divergence( const Point& x ) const; 00074 00082 virtual data_t laplacian( const Point& x ) const; 00083 00093 void set( const Point& x, const Value& value ); 00094 00108 void set( const Point& x, const Value& value, const Derivative& dvalue ); 00109 00116 virtual size_t getDimension( ) const { return 4; } 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_4_H