Bridge++  Ver. 1.1.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
action_F_Rational_Frame_SF.cpp
Go to the documentation of this file.
1 
15 
16 #ifdef USE_PARAMETERS_FACTORY
17 #include "parameters_factory.h"
18 #endif
19 
20 using Bridge::vout;
21 
22 //- parameter entries
23 namespace {
24  void append_entry(Parameters& param)
25  {
26  param.Register_string("verbose_level", "NULL");
27  }
28 
29 
30 #ifdef USE_PARAMETERS_FACTORY
31  bool init_param = ParametersFactory::Register("Action.F_Rational_Frame_SF", append_entry);
32 #endif
33 }
34 //- end
35 
36 //- parameters class
38 //- end
39 
40 //====================================================================
42 {
43  const string str_vlevel = params.get_string("verbose_level");
44 
45  m_vl = vout.set_verbose_level(str_vlevel);
46 }
47 
48 
49 //====================================================================
51 {
52  int Nc = CommonParameters::Nc();
53  int Nvol = CommonParameters::Nvol();
54  int Ndim = CommonParameters::Ndim();
55  int NinG = 2 * Nc * Nc;
56 
57  m_force.reset(NinG, Nvol, Ndim);
58 
59  // link variable update flag
60  m_status_linkv = 0;
61 }
62 
63 
64 //====================================================================
66 {
67  int NinF = m_fopr_langev->field_nin();
68  int NvolF = m_fopr_langev->field_nvol();
69  int NexF = m_fopr_langev->field_nex();
70  int size_psf = NinF * NvolF * NexF * CommonParameters::NPE();
71 
72  m_psf.reset(NinF, NvolF, NexF);
73 
74  vout.general(m_vl, " Action_F_Rational_frame_SF: %s\n", m_label.c_str());
75 
76  Field xi(NinF, NvolF, NexF);
77  rand->gauss_lex_global(xi);
78 
80  m_psf = m_fopr_langev->mult(xi);
81 
82  Field_F_SF setzero;
83  setzero.set_boundary_zero(xi);
84 
85  double xi2 = xi.norm();
86  double H_psf = xi2 * xi2;
87 
88  vout.general(m_vl, " H_Frational = %18.8f\n", H_psf);
89  vout.general(m_vl, " H_F/dof = %18.8f\n", H_psf / size_psf);
90 
91  return H_psf;
92 }
93 
94 
95 //====================================================================
97 {
98  int NinF = m_fopr_H->field_nin();
99  int NvolF = m_fopr_H->field_nvol();
100  int NexF = m_fopr_H->field_nex();
101  int size_psf = NinF * NvolF * NexF * CommonParameters::NPE();
102 
103  Field v1(NinF, NvolF, NexF);
104 
105  vout.general(m_vl, " Action_F_Rational: %s\n", m_label.c_str());
106 
108  v1 = m_fopr_H->mult(m_psf);
109 
110  double H_psf = v1 * m_psf;
111 
112  vout.general(m_vl, " H_Frational = %18.8f\n", H_psf);
113  vout.general(m_vl, " H_F/dof = %18.8f\n", H_psf / size_psf);
114 
115  return H_psf;
116 }
117 
118 
119 //====================================================================
121 {
122  if (m_status_linkv == 0) {
123  int Nvol = m_U->nvol();
124  int Nex = m_U->nex();
125 
126  Field_G force(Nvol, Nex), force1(Nvol, Nex);
127 
128  vout.general(m_vl, " Action_F_Rational: %s\n", m_label.c_str());
129 
132 
133  Field_G_SF Fboundary(force);
134  Fboundary.set_boundary_spatial_link_zero();
135  m_force = (Field)Fboundary;
136 
137  // m_force = (Field)force;
138  ++m_status_linkv;
139 
140  double Fave, Fmax, Fdev;
141  m_force.stat(Fave, Fmax, Fdev);
142  vout.general(m_vl, " Frational_frame_ave = %12.6f Frational_frame_max = %12.6f Frational_frame_dev = %12.6f\n",
143  Fave, Fmax, Fdev);
144 
145  return m_force;
146  } else {
147  vout.general(m_vl, " Frational returns previous force.\n");
148  return m_force;
149  }
150 }
151 
152 
153 //====================================================================
154 //============================================================END=====