00001 #ifndef INTEGRATOR_H
00002 #define INTEGRATOR_H
00003
00004 #include "afltypes.h"
00005 #include "simplex.h"
00006
00007 namespace afl
00008 {
00009 class Field;
00014 class Integrator
00015 {
00016
00018 public:
00022 virtual ~Integrator( );
00028 virtual Value integral( const Simplex& s ) const = 0;
00029
00034 virtual void toXML( std::ostream& doc ) const = 0;
00035
00040 virtual Integrator* clone( ) = 0;
00041
00046 virtual void setField( const Field* field ) ;
00047
00051 virtual const std::string& getMethod( ) const = 0;
00052
00057 void setParentField( const Field* parent ) { _field = parent; }
00058
00060 protected:
00066 Integrator( const Field* field, const Parameters& params );
00067
00069 protected:
00070
00074 const Field* _field;
00075 };
00076
00077 };
00078
00079 #endif // INTEGRATOR_H