00001
00002
00003
00004
00005 #ifndef INCLUDED_TGTENCL_H
00006 #define INCLUDED_TGTENCL_H
00007
00008
00009 #include "odesolv.h"
00010
00011
00017 class TIGHT_ENCL : protected NAME
00018 {
00019 public:
00020
00021 using NAME::GetName;
00022
00038 virtual void CompEncl( INTERVAL_VECTOR & Ytight,
00039 INTERVAL_VECTOR & LocErr,
00040 const INTERVAL & h,
00041 int order,
00042 PtrODENumeric ODE,
00043 PtrODESolver Solver ) = 0;
00044
00050 virtual void Init( const PtrODENumeric ODE ) = 0;
00051
00056 int GetMaxOrder() const;
00057
00059 virtual ~TIGHT_ENCL() {;}
00060
00061
00062 protected:
00063
00071 TIGHT_ENCL( int max_order, const string & name );
00072
00074 void RearrangeColumns( MATRIX & R,
00075 const MATRIX & A,
00076 const INTERVAL_VECTOR & R );
00077
00078 private:
00079
00081 const int MaxK;
00082
00083 };
00084
00085
00087 typedef TIGHT_ENCL* PtrTightEncl;
00088
00089
00090 inline TIGHT_ENCL :: TIGHT_ENCL( int max_order, const string & name )
00091 : NAME(name), MaxK(max_order)
00092 {
00093 assert( max_order > 0 );
00094 }
00095
00096
00097 inline int TIGHT_ENCL :: GetMaxOrder() const
00098 {
00099 return MaxK;
00100 }
00101
00102
00103 #endif