Bridge++  Ver.2.1.3
force_F.cpp
Go to the documentation of this file.
1 
15 
17 
18 template<>
19 const std::string Force::class_name = "Force_F";
20 
21 //====================================================================
22 template<>
23 void Force::init()
24 {
25  const int Nvol = CommonParameters::Nvol();
26  const int Ndim = CommonParameters::Ndim();
27 
28  m_force_tmp = new Field_G(Nvol, Ndim);
29  //m_force1 = new Field_G(Nvol, 1);
30 }
31 
32 //====================================================================
33 template<>
34 void Force::tidyup()
35 {
36  delete m_force_tmp;
37  // delete m_force1;
38 }
39 
40 //====================================================================
41 template<>
42 void Force::mult_generator(Field& force)
43 {
44  vout.crucial("%s: mult_generator(Field&) must not be called\n",
45  class_name.c_str());
46  exit(EXIT_FAILURE);
47 }
48 
49 //====================================================================
50 template<>
51 void Force::mult_generator(Field_G& force)
52 {
53 #pragma omp barrier
54 
55  const int Nvol = force.nvol();
56  const int Ndim = force.nex();
57 
58  int ith, nth, is, ns;
59  set_threadtask(ith, nth, is, ns, Nvol);
60 
61  for (int mu = 0; mu < Ndim; ++mu) {
62  for (int site = is; site < ns; ++site) {
63  Mat_SU_N u = m_U->mat(site, mu);
64  u *= force.mat(site, mu);
65  u.at();
66  u *= -2.0;
67  force.set_mat(site, mu, u);
68  }
69  }
70 #pragma omp barrier
71 
72  /*
73  for (int mu = 0; mu < Ndim; ++mu) {
74  mult_Field_Gnn(*m_force1, 0, *m_U, mu, force, mu);
75  at_Field_G(*m_force1,0);
76  scal(*m_force1, -2.0);
77  copy(force, mu, *m_force1, 0);
78 #pragma omp barrier
79  }
80  */
81 }
82 
83 //====================================================================
84 // default templates for core and core1
85 template<>
86 void Force::force_core(Field& force_, const Field& eta)
87 {
88  force_udiv(*m_force_tmp, eta);
89 
91 
92  copy(force_, *m_force_tmp);
93 #pragma omp barrier
94 
95 }
96 
97 
98 //====================================================================
99 template<>
100 void Force::force_core1(Field& force_, const Field& zeta, const Field& eta)
101 {
102  force_udiv1(*m_force_tmp, zeta, eta);
103 
105 
106  copy(force_, *m_force_tmp);
107 #pragma omp barrier
108 
109 }
110 
111 
112 //====================================================================
113 
114 // explicit instanciation.
115 template class AForce_F<Field>;
116 
117 //============================================================END=====
CommonParameters::Ndim
static int Ndim()
Definition: commonParameters.h:117
AForce_F::force_udiv
virtual void force_udiv(AFIELD &, const AFIELD &)
Definition: aforce_F.h:93
AForce_F< Field >::force_core1
virtual void force_core1(Field &, const Field &, const Field &)
Field::nex
int nex() const
Definition: field.h:128
Field_G::set_mat
void set_mat(const int site, const int mn, const Mat_SU_N &U)
Definition: field_G.h:160
CommonParameters::Nvol
static int Nvol()
Definition: commonParameters.h:109
copy
void copy(Field &y, const Field &x)
copy(y, x): y = x
Definition: field.cpp:213
AForce_F< Field >::tidyup
virtual void tidyup()
finalizer.
AForce_F::m_force_tmp
Field_G * m_force_tmp
used for corelib implementation
Definition: aforce_F.h:47
SU_N::Mat_SU_N
Definition: mat_SU_N.h:36
AForce_F< Field >
SU_N::Mat_SU_N::at
Mat_SU_N & at()
antihermitian traceless
Definition: mat_SU_N.h:375
Field::nvol
int nvol() const
Definition: field.h:127
AForce_F< Field >::mult_generator
virtual void mult_generator(Field &)
AForce_F< Field >::force_core
virtual void force_core(Field &, const Field &)
force_F.h
AForce_F::m_U
Field_G * m_U
Gauge configuration.
Definition: aforce_F.h:42
AForce_F< Field >::init
virtual void init()
initializer.
field_thread-inc.h
Bridge::BridgeIO::crucial
void crucial(const char *format,...)
Definition: bridgeIO.cpp:242
Field
Container of Field-type object.
Definition: field.h:46
Field_G::mat
Mat_SU_N mat(const int site, const int mn=0) const
Definition: field_G.h:114
Field_G
SU(N) gauge field.
Definition: field_G.h:38
AForce_F< Field >::class_name
static const std::string class_name
Definition: aforce_F.h:40
AForce_F::force_udiv1
virtual void force_udiv1(AFIELD &, const AFIELD &, const AFIELD &)
Definition: aforce_F.h:96
Bridge::vout
BridgeIO vout
Definition: bridgeIO.cpp:572