Bridge++  Ver. 1.1.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
gradientFlow.h
Go to the documentation of this file.
1 
13 #ifndef GRADIENTFLOW_INCLUDED
14 #define GRADIENTFLOW_INCLUDED
15 
16 #include "action.h"
17 #include "staples.h"
18 
19 #include "bridgeIO.h"
20 using Bridge::vout;
21 
23 
31 //- parameters class
32 class Parameters_GradientFlow : virtual public Parameters
33 {
34  public:
36 };
37 //- end
38 
40 {
41  protected:
43 
44  private:
46  double m_Estep;
47  int m_Nstep;
48  int m_Nprec;
49 
52 
53  int Nc;
54  int Ndim;
55  int Nvol;
56  int Lvol;
57 
58  static const double c4[];
59  static const double c5[];
60 
61  public:
62 
64  : m_vl(CommonParameters::Vlevel()),
69  {
70  // init();
71  // m_action = action;
72  iP.reset(Nvol, Ndim);
73  iPP.reset(Nvol, Ndim);
74  iP1.reset(Nvol, Ndim);
75  iP2.reset(Nvol, Ndim);
76 
77  m_Nprec = 0;
78  m_Nstep = 0;
79  m_Estep = 0.0;
80  m_action = action;
81  }
82 
83 #if 0
84  void init(void)
85  {
86  iP.reset(Nvol, Ndim);
87  iPP.reset(Nvol, Ndim);
88  iP1.reset(Nvol, Ndim);
89  iP2.reset(Nvol, Ndim);
90 
91  m_Nprec = 0;
92  m_Nstep = 0;
93  m_Estep = 0.0;
94 
95  c4[0] = 0.25;
96  c4[1] = -17.0 / 36.0;
97  c4[2] = 8.0 / 9.0;
98  c4[3] = 0.75;
99 
100  c5[0] = 1.0 / 6.0;
101  c5[1] = 1.0 - 1.0 / sqrt(2.0);
102  c5[2] = 2.0 - c5[1]; // 1.0+1.0/sqrt(2.0);
103  c5[3] = c5[1] - 0.5;
104  c5[4] = -4.0 * c5[2];
105  c5[5] = 6.0 - 4.0 * c5[1];
106  c5[6] = 1.0 / c5[3];
107  }
108 #endif
109 
110  void update_U(double estep, Field_G& iP, Field_G& U);
111 
112  void set_parameters(const Parameters& params);
113  void set_parameters(const int order_RK,
114  const double Estep, const int Nstep, const int Nprec);
115 
117 
118  void gradientFlow_4th(Field_G& U);
119  void gradientFlow_5th(Field_G& U);
120 
121  double evolve(Field_G& U);
122 };
123 #endif