base/dynamMetric.h
00001 #ifndef _BETA_DYNAMMETRIC_
00002 
00003 #include "baseHamiltonian.h"
00004 
00027 
00028 class dynamMetric: public baseHamiltonian
00029 {
00030     
00031     public:
00032         
00033         explicit dynamMetric(int dim);
00034         virtual ~dynamMetric() {};
00035     
00037         //                   Accessors                  //
00039         
00041         virtual double tau() = 0;
00042     
00044         double phi() { return 0.5 * mLogDetMetric + V(); }
00045         
00047         //                   Mutators                   //
00049         
00051         void setMaxNumFixedPoint(int n) { mMaxNumFixedPoint = n; }
00052     
00054         void setFixedPointThreshold(double t) { mFixedPointThreshold = t; }
00055         
00056         void evolveQ(const double epsilon);
00057         void beginEvolveP(const double epsilon);
00058         void finishEvolveP(const double epsilon);  
00059     
00061         //              Auxiliary Functions             //
00063 
00064         virtual void prepareEvolution() { fComputeMetric(); fPrepareSpatialGradients(); }
00065     
00066     protected:
00067 
00069         int mMaxNumFixedPoint; 
00070     
00072         double mFixedPointThreshold;
00073     
00075         VectorXd mAuxVector;
00076     
00078         VectorXd mInit; 
00079     
00081         VectorXd mDelta;
00082     
00084         double mLogDetMetric;
00085 
00087         virtual void fComputeMetric() = 0;
00088     
00090         virtual void fUpdateP() {};
00091     
00094         virtual void fPrepareSpatialGradients() { gradV(); }
00095         
00097         virtual void fHatT(const double epsilon);
00098     
00102         virtual void fHatTau(const double epsilon, const int numFixedPoint);
00103     
00107         void fHatPhi(const double epsilon);
00108     
00110         virtual VectorXd& dTaudp() = 0;
00111     
00113         virtual VectorXd& dTaudq() = 0;
00114     
00116         virtual VectorXd& dPhidq() = 0;
00117     
00118 };
00119 
00120 #define _BETA_DYNAMMETRIC_
00121 #endif
 All Classes Functions Variables