-
Notifications
You must be signed in to change notification settings - Fork 1
/
hamiltonian.jl
56 lines (34 loc) · 1.06 KB
/
hamiltonian.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/local/bin/julia
include("input.jl")
# ==============================================================================
# Lennard-Jones Potential and Force
# ==============================================================================
function fLJ(rr::Float64)::Float64
if rr > rc
return 0.0
else
r1 = σ/rr
r2 = r1^2
return 48*ε*r2^3*(r2^3 - 1/2)*r1
end
end
# ==============================================================================
function peLJ(rr::Float64)::Float64
if rr > rc
return 0.0
else
r1 = σ/rr
r2 = r1^2
return 4*ε*r2^3*(r2^3 - 1) + 1
end
end
# ==============================================================================
# Kinetic energy computation
# ==============================================================================
function kinetic!(X::particle{Float64})
p = sum(X.p.*X.p, dims=1)
p = reshape(p, (length(p)))
X.ke = sum(p/2)
X.temp = X.ke*tfac
append!(X.sp, sqrt.(p))
end