diff --git a/src/LatticeGPU.jl b/src/LatticeGPU.jl index d33ef68..2a54532 100644 --- a/src/LatticeGPU.jl +++ b/src/LatticeGPU.jl @@ -25,10 +25,10 @@ using .Space export SpaceParm export up, dw, updw, global_point -include("Fields/Fields.kl") +include("Fields/Fields.jl") +using .Fields export vector_field, scalar_field, nscalar_field - include("YM/YM.jl") using .YM @@ -38,5 +38,7 @@ export wfl_euler, wfl_rk3, zfl_euler, zfl_rk3 include("Scalar/Scalar.jl") using .Scalar +export ScalarParam, ScalarWorkspace +export scalar_action, force_scalar end # module diff --git a/src/Scalar/Scalar.jl b/src/Scalar/Scalar.jl index 5c4b34a..85dfb0a 100644 --- a/src/Scalar/Scalar.jl +++ b/src/Scalar/Scalar.jl @@ -19,8 +19,8 @@ using ..YM import Base.show struct ScalarParam{N,T} - kap::Ntuple{N,T} - eta::Ntuple{N,T} + kap::NTuple{N,T} + eta::NTuple{N,T} end function Base.show(io::IO, sp::ScalarParam{N,T}) where {N,T} @@ -36,3 +36,22 @@ function Base.show(io::IO, sp::ScalarParam{N,T}) where {N,T} println("\n") end + +struct ScalarWorkspace{T} + frc1 + mom + function ScalarWorkspace(::Type{T}, lp::SpaceParm) where {T <: AbstractFloat} + + return ScalarWorkspace(vector_field(SU2fund{T}, lp), + vector_field(SU2fund{T}, lp)) + end +end +export ScalarWorkspace + +include("ScalarAction.jl") +export scalar_action + +include("ScalarForce.jl") +export force_scalar + +end diff --git a/src/Scalar/ScalarAction.jl b/src/Scalar/ScalarAction.jl index c2e80a7..eeb439f 100644 --- a/src/Scalar/ScalarAction.jl +++ b/src/Scalar/ScalarAction.jl @@ -9,7 +9,7 @@ ### created: Tue Oct 5 11:53:49 2021 ### -function scalar_action(U, Phi, lp::SpaceParm, sp::ScalarParm, gp::GaugeParm{T}, ymws::YMworkspace{T}) +function scalar_action(U, Phi, lp::SpaceParm, sp::ScalarParam, ymws::YMworkspace{T}) where {T <: AbstractFloat} CUDA.@sync begin CUDA.@cuda threads=lp.bsz blocks=lp.rsz krnl_act!(ymws.rm, U, Phi, sp, lp) diff --git a/src/Scalar/ScalarForce.jl b/src/Scalar/ScalarForce.jl index e1cbe63..fb3d703 100644 --- a/src/Scalar/ScalarForce.jl +++ b/src/Scalar/ScalarForce.jl @@ -9,6 +9,16 @@ ### created: Wed Oct 6 15:39:07 2021 ### +function force_scalar(ymws::YMworkspace, sws::ScalarWorkspace, U, Phi, sp::ScalarParam, lp::SpaceParm) + + CUDA.@sync begin + CUDA.@cuda threads=lp.bsz blocks=lp.rsz krnl_force_scalar!(ymws.frc1,sws.frc,U,Phi,sp,lp) + end + + + return nothing +end + function krnl_force_scalar!(fgauge, fscalar, U::AbstractArray{TG}, Phi::AbstractArray{TS}, sp::ScalarParam{NP,T}, lp::SpaceParm{N,M,D}) where {TG,TS,NP,T,N,M,D} b, r = CUDA.threadIdx().x, CUDA.blockIdx().x