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_TMWilson.cpp
Go to the documentation of this file.
1
14
#include "
fopr_TMWilson.h
"
15
16
#ifdef USE_PARAMETERS_FACTORY
17
#include "
parameters_factory.h
"
18
#endif
19
20
using
std::valarray;
21
22
//- parameter entries
23
namespace
{
24
void
append_entry(
Parameters
& param)
25
{
26
param.
Register_string
(
"gamma_matrix_type"
,
"NULL"
);
27
28
param.
Register_double
(
"hopping_parameter"
, 0.0);
29
param.
Register_double
(
"twisted_mass"
, 0.0);
30
param.
Register_int_vector
(
"boundary_condition"
, std::valarray<int>());
31
32
param.
Register_string
(
"verbose_level"
,
"NULL"
);
33
}
34
35
36
#ifdef USE_PARAMETERS_FACTORY
37
bool
init_param =
ParametersFactory::Register
(
"Fopr.TMWilson"
, append_entry);
38
#endif
39
}
40
//- end
41
42
//- parameters class
43
Parameters_Fopr_TMWilson::Parameters_Fopr_TMWilson
() { append_entry(*
this
); }
44
//- end
45
46
//====================================================================
47
void
Fopr_TMWilson::set_parameters
(
const
Parameters
& params)
48
{
49
const
string
str_vlevel = params.
get_string
(
"verbose_level"
);
50
51
m_vl
=
vout
.
set_verbose_level
(str_vlevel);
52
53
//- fetch and check input parameters
54
double
kappa, tw_mass;
55
valarray<int> bc;
56
57
int
err = 0;
58
err += params.
fetch_double
(
"hopping_parameter"
, kappa);
59
err += params.
fetch_double
(
"twisted_mass"
, tw_mass);
60
err += params.
fetch_int_vector
(
"boundary_condition"
, bc);
61
62
if
(err) {
63
vout
.
crucial
(
m_vl
,
"Fopr_TMWilson: fetch error, input parameter not found.\n"
);
64
abort();
65
}
66
67
68
set_parameters
(kappa, tw_mass, bc);
69
}
70
71
72
//====================================================================
73
void
Fopr_TMWilson::set_parameters
(
double
kappa,
double
tw_mass,
74
std::valarray<int> bc)
75
{
76
//- print input parameters
77
vout
.
general
(
m_vl
,
"Parameters of twisted mass fermion operator:\n"
);
78
vout
.
general
(
m_vl
,
" kappa = %8.4f\n"
, kappa);
79
vout
.
general
(
m_vl
,
" tw_mass = %8.4f\n"
, tw_mass);
80
for
(
int
mu = 0; mu <
m_Ndim
; ++mu) {
81
vout
.
general
(
m_vl
,
" boundary[%d] = %2d\n"
, mu, bc[mu]);
82
}
83
84
//- range check
85
// NB. kappa,tw_mass = 0 is allowed.
86
assert(bc.size() ==
m_Ndim
);
87
88
//- store values
89
m_kappa
= kappa;
90
m_tw_mass
= tw_mass;
91
92
m_boundary
.resize(m_Ndim);
93
for
(
int
mu = 0; mu <
m_Ndim
; ++mu) {
94
m_boundary
[mu] = bc[mu];
95
}
96
97
//- propagate parameters
98
m_fopr_w
->
set_parameters
(m_kappa,
m_boundary
);
99
}
100
101
102
//====================================================================
103
void
Fopr_TMWilson::D
(
Field
& v,
const
Field
& f)
104
{
105
Field_F
w2(f.
nvol
(), f.
nex
());
106
107
m_fopr_w
->
D
(v, f);
108
m_fopr_w
->
mult_gm5
(w2, f);
109
w2.xI();
110
double
tm_2K = 2.0 *
m_kappa
*
m_tw_mass
;
111
v += tm_2K * (
Field
)w2;
112
}
113
114
115
//====================================================================
116
void
Fopr_TMWilson::Ddag
(
Field
& v,
const
Field
& f)
117
{
118
Field_F
w2(f.
nvol
(), f.
nex
());
119
120
m_fopr_w
->
Ddag
(v, f);
121
m_fopr_w
->
mult_gm5
(w2, f);
122
w2.xI();
123
double
tm_2K = 2.0 *
m_kappa
*
m_tw_mass
;
124
v -= tm_2K * (
Field
)w2;
125
}
126
127
128
//====================================================================
129
void
Fopr_TMWilson::H
(
Field
& v,
const
Field
& f)
130
{
131
Field_F
w2(f.
nvol
(), f.
nex
());
132
133
m_fopr_w
->
H
(v, f);
134
w2.Ix(f);
135
double
tm_2K = 2.0 *
m_kappa
*
m_tw_mass
;
136
v += tm_2K * (
Field
)w2;
137
}
138
139
140
//====================================================================
141
void
Fopr_TMWilson::Hdag
(
Field
& v,
const
Field
& f)
142
{
143
Field_F
w2(f.
nvol
(), f.
nex
());
144
145
m_fopr_w
->
H
(v, f);
146
w2.Ix(f);
147
double
tm_2K = 2.0 *
m_kappa
*
m_tw_mass
;
148
v -= tm_2K * (
Field
)w2;
149
}
150
151
152
//====================================================================
153
void
Fopr_TMWilson::DdagD
(
Field
& v,
const
Field
& f)
154
{
155
m_fopr_w
->
DdagD
(v, f);
156
double
tm_2K = 2.0 *
m_kappa
*
m_tw_mass
;
157
v += (tm_2K * tm_2K) * f;
158
}
159
160
161
//====================================================================
162
//============================================================END=====
src
Fopr
fopr_TMWilson.cpp
Generated on Tue Jul 23 2013 10:48:48 for Bridge++ by
1.8.3.1