mirror of
https://igit.ific.uv.es/alramos/latticegpu.jl.git
synced 2025-05-14 19:23:42 +02:00
Cleanup and Zeuthen flow
At this moment the zfl_* routines only perform the Symanzik flow. The extra term has to be added, but it should not impact timmings
This commit is contained in:
parent
3d464a0325
commit
4eed0ebb42
6 changed files with 38 additions and 4 deletions
|
@ -31,6 +31,6 @@ include("YM/YM.jl")
|
||||||
using .YM
|
using .YM
|
||||||
export YMworkspace, GaugeParm, force0_wilson!, field, field_pln, randomize!, zero!, norm2
|
export YMworkspace, GaugeParm, force0_wilson!, field, field_pln, randomize!, zero!, norm2
|
||||||
export gauge_action, hamiltonian, plaquette, HMC!, OMF4!
|
export gauge_action, hamiltonian, plaquette, HMC!, OMF4!
|
||||||
export wfl_euler, wfl_rk3
|
export wfl_euler, wfl_rk3, zfl_euler, zfl_rk3
|
||||||
|
|
||||||
end # module
|
end # module
|
||||||
|
|
|
@ -94,6 +94,6 @@ include("YMhmc.jl")
|
||||||
export gauge_action, hamiltonian, plaquette, HMC!, OMF4!
|
export gauge_action, hamiltonian, plaquette, HMC!, OMF4!
|
||||||
|
|
||||||
include("YMflow.jl")
|
include("YMflow.jl")
|
||||||
export wfl_euler, wfl_rk3
|
export wfl_euler, wfl_rk3, zfl_euler, zfl_rk3
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -70,6 +70,7 @@ function krnl_impr!(plx, U::AbstractArray{T}, c0, c1, lp::SpaceParm{N,M,D}) wher
|
||||||
gc = U[b2,id2,r2]
|
gc = U[b2,id2,r2]
|
||||||
end
|
end
|
||||||
h3 = (ga*gb)/gc
|
h3 = (ga*gb)/gc
|
||||||
|
# END staples
|
||||||
|
|
||||||
if ru2 == r
|
if ru2 == r
|
||||||
gb = Ush[bu2,1]
|
gb = Ush[bu2,1]
|
||||||
|
|
|
@ -42,3 +42,36 @@ function wfl_rk3(U, ns, eps, lp::SpaceParm, ymws::YMworkspace)
|
||||||
return nothing
|
return nothing
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function zfl_euler(U, ns, eps, lp::SpaceParm, ymws::YMworkspace)
|
||||||
|
|
||||||
|
for i in 1:ns
|
||||||
|
force_gauge(ymws, U, 5.0/3.0, lp)
|
||||||
|
U .= expm.(U, ymws.frc1, 2*eps)
|
||||||
|
end
|
||||||
|
|
||||||
|
return nothing
|
||||||
|
end
|
||||||
|
|
||||||
|
function zfl_rk3(U, ns, eps, lp::SpaceParm, ymws::YMworkspace)
|
||||||
|
|
||||||
|
for i in 1:ns
|
||||||
|
c0 = eps/2
|
||||||
|
force_gauge(ymws, U, 5.0/3.0, lp)
|
||||||
|
ymws.mom .= ymws.frc1
|
||||||
|
U .= expm.(U, ymws.mom, c0)
|
||||||
|
|
||||||
|
c0 = -34*eps/36
|
||||||
|
c1 = 16*eps/9
|
||||||
|
force_gauge(ymws, U, 5.0/3.0, lp)
|
||||||
|
ymws.mom .= c0.*ymws.mom .+ c1.*ymws.frc1
|
||||||
|
U .= expm.(U, ymws.mom)
|
||||||
|
|
||||||
|
c1 = 6*eps/4
|
||||||
|
force_gauge(ymws, U, 5.0/3.0, lp)
|
||||||
|
ymws.mom .= c1.*ymws.frc1 .- ymws.mom
|
||||||
|
U .= expm.(U, ymws.mom)
|
||||||
|
end
|
||||||
|
|
||||||
|
return nothing
|
||||||
|
end
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
|
|
||||||
function gauge_action(U, lp::SpaceParm, gp::GaugeParm, ymws::YMworkspace)
|
function gauge_action(U, lp::SpaceParm, gp::GaugeParm, ymws::YMworkspace)
|
||||||
|
|
||||||
Returns the value of the Wilson plaquette action for the configuration U.
|
Returns the value of the gauge plaquette action for the configuration U. The parameters `\beta` and `c0` are taken from the `gp` structure.
|
||||||
"""
|
"""
|
||||||
function gauge_action(U, lp::SpaceParm, gp::GaugeParm{T}, ymws::YMworkspace{T}) where T <: AbstractFloat
|
function gauge_action(U, lp::SpaceParm, gp::GaugeParm{T}, ymws::YMworkspace{T}) where T <: AbstractFloat
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ println(CUDA.device())
|
||||||
GRP = SU3
|
GRP = SU3
|
||||||
ALG = SU3alg
|
ALG = SU3alg
|
||||||
PREC = Float64
|
PREC = Float64
|
||||||
lp = SpaceParm{4}((32,32,32,32), (4,4,4,4))
|
lp = SpaceParm{4}((64,64,64,64), (4,4,4,4))
|
||||||
gp = GaugeParm{PREC}(6.0, 5.0/3.0, (0.0,0.0), 3)
|
gp = GaugeParm{PREC}(6.0, 5.0/3.0, (0.0,0.0), 3)
|
||||||
|
|
||||||
println("Space Parameters: ", lp)
|
println("Space Parameters: ", lp)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue