small fix

parent 35603a3f
......@@ -93,33 +93,50 @@ function Nablanabla!(so, U, si, dpar::DiracParam, dws::DiracWorkspace, lp::Space
end
function krnl_g5Dslsh!(so, U, si, m0, th, lp::SpaceParm{4,6,B,D}) where {B,D}
b = Int64(CUDA.threadIdx().x); r = Int64(CUDA.blockIdx().x)
@inbounds begin
function flw(U, psi, int::FlowIntr{NI,T}, ns::Int64, eps, gp::GaugeParm, dpar::DiracParam, lp::SpaceParm, ymws::YMworkspace, dws::DiracWorkspace) where {NI,T}
@timeit "Integrating flow equations" begin
for i in 1:ns
force_gauge(ymws, U, int.c0, 1, gp, lp)
bu1, ru1 = up((b,r), 1, lp)
bd1, rd1 = dw((b,r), 1, lp)
bu2, ru2 = up((b,r), 2, lp)
bd2, rd2 = dw((b,r), 2, lp)
bu3, ru3 = up((b,r), 3, lp)
bd3, rd3 = dw((b,r), 3, lp)
bu4, ru4 = up((b,r), 4, lp)
bd4, rd4 = dw((b,r), 4, lp)
if int.add_zth
add_zth_term(ymws::YMworkspace, U, lp)
end
ymws.mom .= ymws.frc1
U .= expm.(U, ymws.mom, 2*eps*int.r)
so[b,r] = -0.5*( th[1]*U[b,1,r]*dmul(Gamma{1},si[bu1,ru1]) +conj(th[1])*dag(U[bd1,1,rd1])*dmul(Gamma{1},si[bd1,rd1]) +
th[2]*U[b,2,r]*dmul(Gamma{2},si[bu1,ru1]) +conj(th[2])*dag(U[bd1,2,rd1])*dmul(Gamma{2},si[bd1,rd1]) +
th[3]*U[b,3,r]*dmul(Gamma{3},si[bu1,ru1]) +conj(th[3])*dag(U[bd1,3,rd1])*dmul(Gamma{3},si[bd1,rd1]) +
th[4]*U[b,4,r]*dmul(Gamma{4},si[bu1,ru1]) +conj(th[4])*dag(U[bd1,4,rd1])*dmul(Gamma{4},si[bd1,rd1]) )
Dslash_sq!(dws.sAp, U, psi, dpar, dws, lp)
dws.sp .= dws.sAp
psi .= psi + 2*int.r*eps*dws.sp
for k in 1:NI
force_gauge(ymws, U, int.c0, 1, gp, lp)
so[b,r] = dmul(Gamma{5}, so[b,r])
if int.add_zth
add_zth_term(ymws::YMworkspace, U, lp)
end
ymws.mom .= int.e0[k].*ymws.mom .+ int.e1[k].*ymws.frc1
U .= expm.(U, ymws.mom, 2*eps)
Dslash_sq!(dws.sAp, U, psi, dpar, dws, lp)
psi .= psi + 2*eps*int.e0[k].*dws.sp .+ 2*eps*int.e1[k].*dws.sAp
dws.sAp .= int.e0[k].*dws.sAp .+ int.e1[k].*dws.sp
end
end
end
return nothing
end
flw(U, psi, int::FlowIntr{NI,T}, ns::Int64, gp::GaugeParm, dpar::DiracParam, lp::SpaceParm, ymws::YMworkspace, dws::DiracWorkspace) where {NI,T} = flw(U, psi, int::FlowIntr{NI,T}, ns::Int64, int.eps, gp::GaugeParm, dpar::DiracParam, lp::SpaceParm, ymws::YMworkspace, dws::DiracWorkspace)
function Dslash_sq!(so, U, si, dpar::DiracParam, dws::DiracWorkspace, lp::SpaceParm{4,6,B,D}) where {B,D}
......@@ -210,42 +227,53 @@ function Dslash_sq!(so, U, si, dpar::DiracParam, dws::DiracWorkspace, lp::SpaceP
end
function krnl_g5Dslsh!(so, U, si, m0, th, lp::SpaceParm{4,6,B,D}) where {B,D}
function flw(U, psi, int::FlowIntr{NI,T}, ns::Int64, eps, gp::GaugeParm, dpar::DiracParam, lp::SpaceParm, ymws::YMworkspace, dws::DiracWorkspace) where {NI,T}
@timeit "Integrating flow equations" begin
for i in 1:ns
force_gauge(ymws, U, int.c0, 1, gp, lp)
b = Int64(CUDA.threadIdx().x); r = Int64(CUDA.blockIdx().x)
if int.add_zth
add_zth_term(ymws::YMworkspace, U, lp)
end
@inbounds begin
ymws.mom .= ymws.frc1
U .= expm.(U, ymws.mom, 2*eps*int.r)
bu1, ru1 = up((b,r), 1, lp)
bd1, rd1 = dw((b,r), 1, lp)
bu2, ru2 = up((b,r), 2, lp)
bd2, rd2 = dw((b,r), 2, lp)
bu3, ru3 = up((b,r), 3, lp)
bd3, rd3 = dw((b,r), 3, lp)
bu4, ru4 = up((b,r), 4, lp)
bd4, rd4 = dw((b,r), 4, lp)
Dslash_sq!(dws.sAp, U, psi, dpar, dws, lp)
dws.sp .= dws.sAp
psi .= psi + 2*int.r*eps*dws.sp
for k in 1:NI
force_gauge(ymws, U, int.c0, 1, gp, lp)
so[b,r] = -0.5*( th[1]*dmul(Gamma{1},U[b,1,r]*si[bu1,ru1]) +conj(th[1])*dmul(Gamma{1},dag(U[bd1,1,rd1])*si[bd1,rd1]) +
th[2]*dmul(Gamma{2},U[b,2,r]*si[bu1,ru1]) +conj(th[2])*dmul(Gamma{2},dag(U[bd1,2,rd1])*si[bd1,rd1]) +
th[3]*dmul(Gamma{3},U[b,3,r]*si[bu1,ru1]) +conj(th[3])*dmul(Gamma{3},dag(U[bd1,3,rd1])*si[bd1,rd1]) +
th[4]*dmul(Gamma{4},U[b,4,r]*si[bu1,ru1]) +conj(th[4])*dmul(Gamma{4},dag(U[bd1,4,rd1])*si[bd1,rd1]) )
if int.add_zth
add_zth_term(ymws::YMworkspace, U, lp)
so[b,r] = dmul(Gamma{5}, so[b,r])
end
ymws.mom .= int.e0[k].*ymws.mom .+ int.e1[k].*ymws.frc1
U .= expm.(U, ymws.mom, 2*eps)
return nothing
end
Dslash_sq!(dws.sAp, U, psi, dpar, dws, lp)
function krnl_g5Dslsh_impr!(so, Fcsw, csw, si, lp::SpaceParm{4,6,B,D}) where {B,D}
psi .= psi + 2*eps*int.e0[k].*dws.sp .+ 2*eps*int.e1[k].*dws.sAp
dws.sAp .= int.e0[k].*dws.sAp .+ int.e1[k].*dws.sp
end
@inbounds begin
b = Int64(CUDA.threadIdx().x);
r = Int64(CUDA.blockIdx().x)
I = point_coord((b,r), lp)
TWP = false
if TWP
so[b,r] += 0.5*csw*im*dmul(Gamma{5},( Fcsw[b,1,r]*dmul(Gamma{10},si[b,r]) + Fcsw[b,2,r]*dmul(Gamma{11},si[b,r]) + Fcsw[b,3,r]*dmul(Gamma{12},si[b,r])
-Fcsw[b,4,r]*dmul(Gamma{15},si[b,r]) - Fcsw[b,5,r]*dmul(Gamma{14},si[b,r]) - Fcsw[b,6,r]*dmul(Gamma{13},si[b,r])))
else
so[b,r] += 0.5*csw*im*dmul(Gamma{5},( Fcsw[b,1,r]*dmul(Gamma{10},si[b,r]) + Fcsw[b,2,r]*dmul(Gamma{11},si[b,r]) + Fcsw[b,3,r]*dmul(Gamma{12},si[b,r])
-Fcsw[b,4,r]*dmul(Gamma{15},si[b,r]) - Fcsw[b,5,r]*dmul(Gamma{14},si[b,r]) - Fcsw[b,6,r]*dmul(Gamma{13},si[b,r])))
end
end
return nothing
end
\ No newline at end of file
flw(U, psi, int::FlowIntr{NI,T}, ns::Int64, gp::GaugeParm, dpar::DiracParam, lp::SpaceParm, ymws::YMworkspace, dws::DiracWorkspace) where {NI,T} = flw(U, psi, int::FlowIntr{NI,T}, ns::Int64, int.eps, gp::GaugeParm, dpar::DiracParam, lp::SpaceParm, ymws::YMworkspace, dws::DiracWorkspace)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment