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