00001 #ifndef FIELD_3_H 00002 #define FIELD_3_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_3 : public Field 00017 { 00019 // typedef Iterator iterator; 00020 00022 public: 00030 Field_3( const std::string& name, ddf::PropertySet* pset = NULL); 00031 00035 virtual ~Field_3(); 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 00081 virtual data_t laplacian( const Point& x ) const; 00082 00090 virtual Point curl( const Point& x ) const; 00091 00101 void set( const Point& x, const Value& value ); 00102 00116 void set( const Point& x, const Value& value, const Derivative& dvalue ); 00117 00124 virtual size_t getDimension( ) const { return 3; } 00125 00132 virtual Point getBoundingBoxMin( ) const; 00133 00140 virtual Point getBoundingBoxMax( ) const; 00141 00145 virtual Field* clone( ) const; 00146 00159 virtual Value integral ( const Simplex& s ) const; 00160 00162 protected: 00163 00164 00166 private: 00167 00170 public: 00171 protected: 00172 private: 00173 00174 }; 00175 00176 }; 00177 00178 #endif // FIELD_3_H