Bridge++
Ver. 1.1.x
Main Page
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
fopr_Clover_SF.h
Go to the documentation of this file.
1
14
#ifndef FOPR_CLOVER_SF_INCLUDED
15
#define FOPR_CLOVER_SF_INCLUDED
16
17
#include "
fopr_Wilson_SF.h
"
18
#include "
staples_SF.h
"
19
20
#include "
shiftField_lex.h
"
21
#include "
gammaMatrixSet.h
"
22
23
#include "
bridgeIO.h
"
24
using
Bridge::vout
;
25
27
40
//- parameters class
41
class
Parameters_Fopr_Clover_SF
:
virtual
public
Parameters
42
{
43
public
:
44
Parameters_Fopr_Clover_SF
();
45
};
46
//- end
47
48
class
Fopr_Clover_SF
:
public
Fopr
49
{
50
private
:
51
int
m_Nvol
,
m_Ndim
,
m_Nc
,
m_Nd
,
m_NinF
;
52
double
m_kappa
,
m_cSW
;
53
std::valarray<int>
m_boundary
;
54
std::string
m_repr
;
55
std::string
m_mode
;
56
57
void (
Fopr_Clover_SF
::*
m_csw
) (
Field_F
&,
const
Field_F
&);
58
59
// Index_lex m_idx;
60
Fopr_Wilson_SF
*
m_fopr_w
;
61
const
Field_G
*
m_U
;
62
ShiftField_lex
m_shift
;
63
64
Field_G
m_Bx
,
m_By
,
m_Bz
,
m_Ex
,
m_Ey
,
m_Ez
;
65
// Bx = -iF(1,2), By = -iF(2,1), -iBz = F(0,1)
66
// Ex = -iF(4,0), Ey = -iF(4,1), Ez = -iF(4,2)
67
68
std::valarray<GammaMatrix>
m_GM
,
m_SG
;
69
71
double
m_phi
[3];
73
double
m_phipr
[3];
74
76
Field_F_SF
setzero
;
77
78
public
:
79
Fopr_Clover_SF
()
80
{
81
init
(
"Dirac"
);
82
}
83
84
/*
85
Fopr_Clover_SF(std::string repr){
86
init(repr);
87
}
88
*/
89
90
~Fopr_Clover_SF
()
91
{
92
tidyup
();
93
}
94
95
void
set_parameters
(
const
Parameters
& params);
96
void
set_parameters
(
double
kappa,
double
cSW, std::valarray<int> bc,
97
double
*phi,
double
*phipr);
98
99
void
set_config
(
Field
*U)
100
{
101
m_U
= (
Field_G
*)U;
102
m_fopr_w
->
set_config
(U);
103
104
set_csw
();
105
}
106
107
void
set_mode
(std::string mode)
108
{
109
m_mode
= mode;
110
}
111
112
std::string
get_mode
()
const
113
{
114
return
m_mode
;
115
}
116
117
const
Field
mult
(
const
Field
& f)
118
{
119
Field
v(f.
nin
(), f.
nvol
(), f.
nex
());
120
121
mult
(v, f);
122
return
v;
123
}
124
125
const
Field
mult_dag
(
const
Field
& f)
126
{
127
Field
v(f.
nin
(), f.
nvol
(), f.
nex
());
128
129
mult_dag
(v, f);
130
return
v;
131
}
132
133
void
mult
(
Field
& v,
const
Field
& f)
134
{
135
if
(
m_mode
==
"D"
) {
136
D
(v, f);
137
}
else
if
(
m_mode
==
"DdagD"
) {
138
DdagD
(v, f);
139
}
else
if
(
m_mode
==
"Ddag"
) {
140
Ddag
(v, f);
141
}
else
if
(
m_mode
==
"H"
) {
142
H
(v, f);
143
}
else
{
144
vout
.
crucial
(
m_vl
,
"Fopr_Clover_SF: undefined mode = %s.\n"
,
m_mode
.c_str());
145
abort();
146
}
147
}
148
149
void
mult_dag
(
Field
& v,
const
Field
& f)
150
{
151
if
(
m_mode
==
"D"
) {
152
Ddag
(v, f);
153
}
else
if
(
m_mode
==
"DdagD"
) {
154
DdagD
(v, f);
155
}
else
if
(
m_mode
==
"Ddag"
) {
156
D
(v, f);
157
}
else
if
(
m_mode
==
"H"
) {
158
H
(v, f);
159
}
else
{
160
vout
.
crucial
(
m_vl
,
"Fopr_Clover_SF: undefined mode = %s.\n"
,
m_mode
.c_str());
161
abort();
162
}
163
}
164
165
const
Field_F
DdagD
(
const
Field_F
&);
166
const
Field_F
D
(
const
Field_F
&);
167
const
Field_F
Ddag
(
const
Field_F
&);
168
const
Field_F
H
(
const
Field_F
&);
169
170
const
Field
mult_gm5
(
const
Field
& w)
171
{
172
return
m_fopr_w
->
mult_gm5
(w);
173
}
174
175
void
DdagD
(
Field
&,
const
Field
&);
176
void
D
(
Field
&,
const
Field
&);
177
void
Ddag
(
Field
&,
const
Field
&);
178
void
H
(
Field
&,
const
Field
&);
179
180
void
mult_gm5
(
Field
& v,
const
Field
& w)
181
{
182
m_fopr_w
->
mult_gm5
(v, w);
183
}
184
185
void
mult_isigma
(
Field_F
&,
const
Field_F
&,
186
const
int
mu,
const
int
nu);
187
188
int
field_nvol
() {
return
m_Nvol
; }
189
int
field_nin
() {
return
2 *
m_Nc
*
m_Nd
; }
190
int
field_nex
() {
return
1; }
191
192
private
:
193
void
init
(std::string repr);
194
void
tidyup
();
195
196
void
set_csw
();
197
void
mult_csw
(
Field_F
&,
const
Field_F
&);
198
void
set_fieldstrength
(
Field_G
&,
const
int
,
const
int
);
199
200
void
mult_csw_dirac
(
Field_F
&,
const
Field_F
&);
201
void
mult_csw_chiral
(
Field_F
&,
const
Field_F
&);
202
203
int
sg_index
(
int
mu,
int
nu) {
return
mu *
m_Ndim
+ nu; }
204
};
205
#endif
src
Fopr
fopr_Clover_SF.h
Generated on Tue Jul 23 2013 10:48:48 for Bridge++ by
1.8.3.1