mirror of
https://igit.ific.uv.es/alramos/latticegpu.jl.git
synced 2025-05-14 19:23:42 +02:00
171 lines
4.9 KiB
Julia
171 lines
4.9 KiB
Julia
using CUDA, LinearAlgebra
|
|
|
|
import Pkg
|
|
#Pkg.activate("/lhome/ific/a/alramos/s.images/julia/workspace/LatticeGPU")
|
|
Pkg.activate("/home/alberto/code/julia/LatticeGPU")
|
|
using LatticeGPU
|
|
|
|
function g2mat(g::SU3)
|
|
|
|
M = Array{ComplexF64, 2}(undef, 3,3)
|
|
|
|
M[1,1] = g.u11
|
|
M[1,2] = g.u12
|
|
M[1,3] = g.u13
|
|
|
|
M[2,1] = g.u21
|
|
M[2,2] = g.u22
|
|
M[2,3] = g.u23
|
|
|
|
M[3,1] = conj(g.u12*g.u23 - g.u13*g.u22)
|
|
M[3,2] = conj(g.u13*g.u21 - g.u11*g.u23)
|
|
M[3,3] = conj(g.u11*g.u22 - g.u12*g.u21)
|
|
|
|
return M
|
|
end
|
|
|
|
|
|
|
|
# 0.40284714488721746 + 0.2704272209422031im -0.029482825024553627 - 0.8247329455356851im 0.28771631112777535 + 0.027366985901323956im; -0.08478364480998268 + 0.8226014762207954im -0.4790638417896126 + 0.24301903735299646im -0.022591091614522323 + 0.16452285690920823im; 0.28083864951126214 + 0.04302898862961919im 0.0066864552013863165 - 0.17418727240313508im -0.939634663641523 + 0.07732362776719631im
|
|
|
|
T = Float64
|
|
a = rand(SU3alg{T})
|
|
println("Random algebra: ", a)
|
|
g1 = exp(a, 0.2)
|
|
g2 = exp(a, -0.2)
|
|
|
|
g = g1*g2
|
|
println("One?: ", g)
|
|
|
|
|
|
|
|
|
|
|
|
M = [0.40284714488721746 + 0.2704272209422031im -0.029482825024553627 - 0.8247329455356851im 0.28771631112777535 + 0.027366985901323956im; -0.08478364480998268 + 0.8226014762207954im -0.4790638417896126 + 0.24301903735299646im -0.022591091614522323 + 0.16452285690920823im; 0.28083864951126214 + 0.04302898862961919im 0.0066864552013863165 - 0.17418727240313508im -0.939634663641523 + 0.07732362776719631im]
|
|
|
|
println(det(M))
|
|
|
|
|
|
g1 = SU3(M[1,1],M[1,2],M[1,3], M[2,1],M[2,2],M[2,3])
|
|
println("dir: ", g1)
|
|
g2 = exp(a)
|
|
println("exp: ", g2)
|
|
println("dif: ", g2mat(g1)-g2mat(g2))
|
|
|
|
g3 = g1/g2
|
|
println(g3)
|
|
|
|
println("END")
|
|
|
|
ftest(g::Group) = LatticeGPU.tr(g)
|
|
|
|
#println(" ## SU(2)")
|
|
#asu2 = SU2alg(0.23, 1.23, -0.34)
|
|
#gsu2 = exp(asu2)
|
|
#
|
|
#eps = 0.001
|
|
#h = SU2alg(eps,0.0,0.0)
|
|
#fp = ftest(exp(h)*gsu2)
|
|
#fm = ftest(exp(h,-1.0)*gsu2)
|
|
#println("Numerical derivative: ", (fp-fm)/(2.0*eps))
|
|
#h = SU2alg(0.0,eps,0.0)
|
|
#fp = ftest(exp(h)*gsu2)
|
|
#fm = ftest(exp(h,-1.0)*gsu2)
|
|
#println("Numerical derivative: ", (fp-fm)/(2.0*eps))
|
|
#h = SU2alg(0.0,0.0,eps)
|
|
#fp = ftest(exp(h)*gsu2)
|
|
#fm = ftest(exp(h,-1.0)*gsu2)
|
|
#println("Numerical derivative: ", (fp-fm)/(2.0*eps))
|
|
#println("Exact derivative: ", -projalg(gsu2))
|
|
|
|
|
|
|
|
println("\n\n ## SU(3)")
|
|
asu3 = SU3alg{T}(0.23, 1.23, -0.34, 2.34, -0.23, 0.23, -1.34, 1.34)
|
|
gsu3 = exp(asu3)
|
|
|
|
eps = 0.001
|
|
h = SU3alg{T}(eps,0.0,0.0,0.0,0.0,0.0,0.0,0.0)
|
|
fp = ftest(exp(h)*gsu3)
|
|
fm = ftest(exp(h,-1.0)*gsu3)
|
|
println("Numerical derivative: ", (fp-fm)/(2.0*eps))
|
|
h = SU3alg{T}(0.0,eps,0.0,0.0,0.0,0.0,0.0,0.0)
|
|
fp = ftest(exp(h)*gsu3)
|
|
fm = ftest(exp(h,-1.0)*gsu3)
|
|
println("Numerical derivative: ", (fp-fm)/(2.0*eps))
|
|
h = SU3alg{T}(0.0,0.0,eps,0.0,0.0,0.0,0.0,0.0)
|
|
fp = ftest(exp(h)*gsu3)
|
|
fm = ftest(exp(h,-1.0)*gsu3)
|
|
println("Numerical derivative: ", (fp-fm)/(2.0*eps))
|
|
h = SU3alg{T}(0.0,0.0,0.0,eps,0.0,0.0,0.0,0.0)
|
|
fp = ftest(exp(h)*gsu3)
|
|
fm = ftest(exp(h,-1.0)*gsu3)
|
|
println("Numerical derivative: ", (fp-fm)/(2.0*eps))
|
|
h = SU3alg{T}(0.0,0.0,0.0,0.0,eps,0.0,0.0,0.0)
|
|
fp = ftest(exp(h)*gsu3)
|
|
fm = ftest(exp(h,-1.0)*gsu3)
|
|
println("Numerical derivative: ", (fp-fm)/(2.0*eps))
|
|
h = SU3alg{T}(0.0,0.0,0.0,0.0,0.0,eps,0.0,0.0)
|
|
fp = ftest(exp(h)*gsu3)
|
|
fm = ftest(exp(h,-1.0)*gsu3)
|
|
println("Numerical derivative: ", (fp-fm)/(2.0*eps))
|
|
h = SU3alg{T}(0.0,0.0,0.0,0.0,0.0,0.0,eps,0.0)
|
|
fp = ftest(exp(h)*gsu3)
|
|
fm = ftest(exp(h,-1.0)*gsu3)
|
|
println("Numerical derivative: ", (fp-fm)/(2.0*eps))
|
|
h = SU3alg{T}(0.0,0.0,0.0,0.0,0.0,0.0,0.0,eps)
|
|
fp = ftest(exp(h)*gsu3)
|
|
fm = ftest(exp(h,-1.0)*gsu3)
|
|
println("Numerical derivative: ", (fp-fm)/(2.0*eps))
|
|
println("Exact derivative: ", -projalg(gsu3))
|
|
|
|
println("\n # Mutiplications")
|
|
|
|
g1 = exp(SU3alg{T}(0.23, 1.23, -0.34, 2.34, -0.23, 0.23, -1.34, 1.34))
|
|
g2 = exp(SU3alg{T}(1.23, -0.23, -0.14, 0.4, -1.23, -0.8, -0.34, 0.34))
|
|
|
|
a = g1/(g2*g1)
|
|
b = g2*a
|
|
println("b is one: ", b)
|
|
|
|
|
|
println("## Aqui test M3x3")
|
|
ba = rand(SU3alg{T})
|
|
ga = exp(ba)
|
|
println("Matrix: ", alg2mat(ba))
|
|
println("Exp: ", ga)
|
|
|
|
|
|
println("## Final tests: ")
|
|
g1 = exp(SU3alg{T}(6.23, 1.23, -0.34, 2.34, -0.23, 0.23, -8.34, 8.34))
|
|
println(g1)
|
|
println(isgroup(g1))
|
|
g1 = unitarize(g1)
|
|
println(g1)
|
|
println(isgroup(g1))
|
|
|
|
println("## Fundamental")
|
|
psi = rand(SU3fund{Float64})
|
|
println(psi)
|
|
|
|
s = Spinor{4,SU3fund{Float64}}((rand(SU3fund{Float64}),rand(SU3fund{Float64}),rand(SU3fund{Float64}),rand(SU3fund{Float64})))
|
|
println(s)
|
|
for n in 1:4
|
|
t1 = pmul(Pgamma{n,1}, s)
|
|
t2 = g1\gpmul(Pgamma{n,1}, g1, s)
|
|
println("Direction (+)$n: ", LatticeGPU.norm(t1-t2))
|
|
|
|
t1 = pmul(Pgamma{n,-1}, s)
|
|
t2 = g1\gpmul(Pgamma{n,-1}, g1, s)
|
|
println("Direction (-)$n: ", LatticeGPU.norm(t1-t2))
|
|
end
|
|
|
|
for n in 1:4
|
|
t1 = pmul(Pgamma{n,1}, s)
|
|
t2 = g1*gdagpmul(Pgamma{n,1}, g1, s)
|
|
println("Direction (+)$n: ", LatticeGPU.norm(t1-t2))
|
|
|
|
t1 = pmul(Pgamma{n,-1}, s)
|
|
t2 = g1*gdagpmul(Pgamma{n,-1}, g1, s)
|
|
println("Direction (-)$n: ", LatticeGPU.norm(t1-t2))
|
|
end
|