mirror of
https://github.com/paboyle/Grid.git
synced 2024-11-09 23:45:36 +00:00
projectU3 yields a unitary matrix
This commit is contained in:
parent
00f24f8765
commit
4924b3209e
4
.gitignore
vendored
4
.gitignore
vendored
@ -1,3 +1,7 @@
|
||||
# Doxygen stuff
|
||||
html/*
|
||||
latex/*
|
||||
|
||||
# Compiled Object files #
|
||||
#########################
|
||||
*.slo
|
||||
|
@ -330,7 +330,7 @@ public:
|
||||
// IN--u_mu
|
||||
void projectU3(GF& u_proj, GF& u_mu) const {
|
||||
|
||||
LF V(u_mu.Grid()), Q(u_mu.Grid()), sqrtQinv(u_mu.Grid()), id_3(u_mu.Grid());
|
||||
LF V(u_mu.Grid()), Q(u_mu.Grid()), sqrtQinv(u_mu.Grid()), id_3(u_mu.Grid()), diff(u_mu.Grid());
|
||||
CF c0(u_mu.Grid()), c1(u_mu.Grid()), c2(u_mu.Grid()), g0(u_mu.Grid()), g1(u_mu.Grid()),
|
||||
g2(u_mu.Grid()), S(u_mu.Grid()), R(u_mu.Grid()), theta(u_mu.Grid()), u(u_mu.Grid()),
|
||||
v(u_mu.Grid()), w(u_mu.Grid()), den(u_mu.Grid()), f0(u_mu.Grid()), f1(u_mu.Grid()),
|
||||
@ -344,12 +344,16 @@ public:
|
||||
c1 = (1/2.)*real(trace(Q*Q));
|
||||
c2 = (1/3.)*real(trace(Q*Q*Q));
|
||||
S = (1/3.)*c1-(1/18.)*c0*c0;
|
||||
if (norm2(S)<1e-28) {
|
||||
g0 = (1/3.)*c0; g1 = g0; g2 = g1;
|
||||
} else {
|
||||
R = (1/2.)*c2-(1/3. )*c0*c1+(1/27.)*c0*c0*c0;
|
||||
theta = acos(R*pow(S,-1.5));
|
||||
g0 = (1/3.)*c0+2.*sqrt(S)*cos((1/3.)*theta-2*M_PI/3.);
|
||||
g1 = (1/3.)*c0+2.*sqrt(S)*cos((1/3.)*theta );
|
||||
g2 = (1/3.)*c0+2.*sqrt(S)*cos((1/3.)*theta+2*M_PI/3.);
|
||||
// if (fabs(Q.determinant()/(g0*g1*g2)-1.0) > 1e-5) {}
|
||||
}
|
||||
// if (fabs(Q.determinant()/(g0*g1*g2)-1.0) > 1e-5) { SVD }
|
||||
u = sqrt(g0) + sqrt(g1) + sqrt(g2);
|
||||
v = sqrt(g0*g1) + sqrt(g0*g2) + sqrt(g1*g2);
|
||||
w = sqrt(g0*g1*g2);
|
||||
@ -360,6 +364,7 @@ public:
|
||||
id_3 = 1.;
|
||||
|
||||
sqrtQinv = f0*id_3 + f1*Q + f2*Q*Q;
|
||||
|
||||
PokeIndex<LorentzIndex>(u_proj, V*sqrtQinv, mu);
|
||||
}
|
||||
};
|
||||
|
@ -51,12 +51,6 @@ struct ConfParameters: Serializable {
|
||||
}
|
||||
};
|
||||
|
||||
//
|
||||
// one method: input --> fat
|
||||
// another : input --> long (naik)
|
||||
// another : input --> unitarize
|
||||
//
|
||||
|
||||
|
||||
void testSmear(GridCartesian& GRID, LatticeGaugeFieldD Umu, LatticeGaugeFieldD Usmr, LatticeGaugeFieldD Unaik,
|
||||
LatticeGaugeFieldD Ucontrol, Real c1, Real cnaik, Real c3, Real c5, Real c7, Real clp) {
|
||||
@ -79,7 +73,7 @@ void testSmear(GridCartesian& GRID, LatticeGaugeFieldD Umu, LatticeGaugeFieldD U
|
||||
} else {
|
||||
Grid_error(" |Umu-Unaik|/|Umu| = ",absDiff);
|
||||
}
|
||||
hisq_fat.projectU3(Uproj,Usmr);
|
||||
hisq_fat.projectU3(Uproj,Ucontrol);
|
||||
// NerscIO::writeConfiguration(Unaik,"nersc.l8t4b3360.naik");
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user