compositefield.h

00001 #ifndef COMPOSITEFIELD_H
00002 #define COMPOSITEFIELD_H
00003 
00004 #include "field.h"
00005 #include "value.h"
00006 
00007 #include <map>
00008 #include <vector>
00009 #include <string>
00010 
00011 namespace afl
00012 {
00018     class CompositeField : public Field
00019     {
00020         public:
00028               CompositeField( const std::string& name, std::vector<std::string>& functions, std::vector<const Field*> fs, size_t columns = 1  );
00029 
00033               virtual ~CompositeField(  );
00034 
00036         public:
00042              virtual void interpolation( Interpolator* interpolator );
00043 
00049             virtual void interpolation( interp_t method );
00050 
00056             virtual void interpolation( const std::string& function );
00057 
00070             virtual void addBoundarySegment( const Point& p1, const Point& p2 );
00071 
00089             virtual void addBoundarySegment( const Field* f );
00090 
00100             virtual void toXML( std::ostream& doc, const std::string& componentsDir, 
00101                              const std::string& baseURI, bool allInline ) const;
00102 
00108             virtual Value get( const Point& x ) const;
00109 
00115              virtual Derivative jacobian( const Point& x ) const;
00116 
00125              virtual Point gradient( const Point& x ) const;
00126 
00134              virtual data_t divergence( const Point& x ) const;
00135 
00143              virtual data_t laplacian( const Point& x ) const;
00144 
00153              virtual Point curl( const Point& x ) const;
00154 
00161             virtual void set( const Point& x, const Value& value );
00162 
00170             virtual void set( const Point& x, const Value& value, const Derivative& dvalue );
00171              
00178             virtual size_t getDimension(  ) const;
00179 
00183             virtual const std::string& getName(  ) const;
00184 
00188             virtual const ddf::Geometry* getValueGeometry(  ) const;
00189 
00196              virtual Point getBoundingBoxMin(  ) const;
00197 
00204              virtual Point getBoundingBoxMax(  ) const;
00205 
00209             virtual Field* clone(  ) const;
00210 
00223              virtual Value integral ( const Simplex& s ) const;
00224 
00229             virtual const Field* find( const std::string& name ) const;
00230 
00231         protected:
00232             friend class FieldFactory;
00233 
00238                 std::string _name;
00239 
00243                 FnValue _fn;
00244                 
00248                 std::map<std::string, const Field*> _components; 
00249 
00250         private:
00251     };
00252 
00253 };
00254 
00255 #endif // COMPOSITEFIELD_H

Generated on Fri Dec 22 07:17:50 2006 for afl by  doxygen 1.4.6