Returns the fermionic progapator for a source at point `y` with color `c` and spin `s`. If the last three arguments are replaced by `time::Int64`, the source is replaced
by a random source in spin and color at t = `time`.
"""
function propagator(U,dpar::DiracParam{T},dws::DiracWorkspace,lp::SpaceParm,maxiter::Int64,tol::Float64,y::NTuple{4,Int64},c::Int64,s::Int64)where{T}
function propagator(U,dpar::DiracParam{T},dws::DiracWorkspace,ymws::YMworkspace,lp::SpaceParm,maxiter::Int64,tol::Float64,y::NTuple{4,Int64},c::Int64,s::Int64)where{T}
function krnlg5!(src)
b=Int64(CUDA.threadIdx().x)
...
...
@@ -25,14 +25,14 @@ function propagator(U, dpar::DiracParam{T}, dws::DiracWorkspace,lp::SpaceParm, m
CUDA.@cudathreads=lp.bszblocks=lp.rszkrnlg5!(src)
end
g5Dw!(pro,U,src,dpar,lp)
g5Dw!(pro,U,src,dpar,lp,ymws)
CG!(pro,U,DwdagDw!,dpar,lp,dws,maxiter,tol)
CG!(pro,U,DwdagDw!,dpar,lp,dws,ymws,maxiter,tol)
returnpro
end
function propagator(U,dpar::DiracParam{T},dws::DiracWorkspace,lp::SpaceParm,maxiter::Int64,tol::Float64,time::Int64)where{T}
function propagator(U,dpar::DiracParam{T},dws::DiracWorkspace,ymws::YMworkspace,lp::SpaceParm,maxiter::Int64,tol::Float64,time::Int64)where{T}
function krnlg5!(src)
b=Int64(CUDA.threadIdx().x)
...
...
@@ -49,25 +49,25 @@ function propagator(U, dpar::DiracParam{T}, dws::DiracWorkspace,lp::SpaceParm, m
CUDA.@cudathreads=lp.bszblocks=lp.rszkrnlg5!(src)
end
g5Dw!(pro,U,src,dpar,lp)
g5Dw!(pro,U,src,dpar,lp,ymws)
CUDA.@syncbegin
CUDA.@cudathreads=lp.bszblocks=lp.rszkrnlg5!(src)
end
CG!(pro,U,DwdagDw!,dpar,lp,dws,maxiter,tol)
CG!(pro,U,DwdagDw!,dpar,lp,dws,ymws,maxiter,tol)
returnpro
end
"""
function bndpropagator(U, dpar::DiracParam{T}, dws::DiracWorkspace,lp::SpaceParm{4,6,1,D}, maxiter::Int64, tol::Float64, c::Int64, s::Int64)
function bndpropagator(U, dpar::DiracParam{T}, dws::DiracWorkspace, ymws::YMworkspace, lp::SpaceParm{4,6,1,D}, maxiter::Int64, tol::Float64, c::Int64, s::Int64)
Returns the propagator from the t=0 boundary to the bulk for the SF boundary conditions for a source with color 'c' and spin 's'.
"""
function bndpropagator(U,dpar::DiracParam{T},dws::DiracWorkspace,lp::SpaceParm{4,6,1,D},maxiter::Int64,tol::Float64,c::Int64,s::Int64)where{T,D}
function bndpropagator(U,dpar::DiracParam{T},dws::DiracWorkspace,ymws::YMworkspace,lp::SpaceParm{4,6,1,D},maxiter::Int64,tol::Float64,c::Int64,s::Int64)where{T,D}
function krnlg5!(src)
b=Int64(CUDA.threadIdx().x)
...
...
@@ -99,9 +99,9 @@ function bndpropagator(U, dpar::DiracParam{T}, dws::DiracWorkspace,lp::SpaceParm