diff --git a/analysis/pair_correlation.jl b/analysis/pair_correlation.jl index a78c43c..52a1fef 100644 --- a/analysis/pair_correlation.jl +++ b/analysis/pair_correlation.jl @@ -5,14 +5,16 @@ end if splitdir(pwd())[2] != "ReCo" error("You have to be in the main directeory ReCo!") else - include("src/ReCo.jl") - includet("src/analysis/pair_correlation_function.jl") + include("src/analysis/pair_correlation_function.jl") end ## +using JLD2 + using CairoMakie CairoMakie.activate!() +set_theme!(theme_black()) ## diff --git a/src/Particle.jl b/src/Particle.jl index be0d9d2..a03ffe7 100644 --- a/src/Particle.jl +++ b/src/Particle.jl @@ -10,7 +10,7 @@ mutable struct Particle φ::Float64 # Angle function Particle(; id::Int64, c::Vector{Float64}, φ::Float64) - return new(id, c, copy(c), φ) + return new(id, c, zeros(2), φ) end end diff --git a/src/PreVector.jl b/src/PreVector.jl index db7a10d..317e3e9 100644 --- a/src/PreVector.jl +++ b/src/PreVector.jl @@ -1,3 +1,5 @@ +import Base: push!, iterate + mutable struct PreVector{T} last_ind::UInt64 v::Vector{T} diff --git a/src/analysis/pair_correlation_function.jl b/src/analysis/pair_correlation_function.jl index ff9ef3a..63313f5 100644 --- a/src/analysis/pair_correlation_function.jl +++ b/src/analysis/pair_correlation_function.jl @@ -1,3 +1,9 @@ +using CairoMakie, LaTeXStrings +using StaticArrays +using LoopVectorization: @tturbo + +using ReCo: minimum_image + function plot_g(radius, g, variables) fig = Figure() ax = Axis( diff --git a/src/animation.jl b/src/animation.jl index 5144991..0b5ab2c 100644 --- a/src/animation.jl +++ b/src/animation.jl @@ -4,6 +4,8 @@ using LaTeXStrings: @L_str function animate(dir::String; framerate=0) println("Generating animation...") + set_theme!(theme_black()) + fig = Figure(; resolution=(1080, 1080)) ax = Axis( fig[1, 1]; diff --git a/src/run.jl b/src/run.jl index 4f8696e..7b8f880 100644 --- a/src/run.jl +++ b/src/run.jl @@ -1,5 +1,6 @@ using Random: Random using JSON3: JSON3 +using JLD2: JLD2 function run_sim( dir::String; @@ -33,6 +34,12 @@ function run_sim( n_bundle_snapshots = min(n_snapshots, n_bundle_snapshots) + status = JSON3.read(read("$dir/status.json", String)) + n_bundles = status.n_bundles + + bundles_dir = "$dir/bundles" + bundle = JLD2.load_object("$bundles_dir/bundle_$n_bundles.jld2") + args = ( v=sim_consts.v, skin_r=skin_r, @@ -49,17 +56,13 @@ function run_sim( N=sim_consts.N, l=sim_consts.l, particle_diameter=sim_consts.particle_diameter, - particles=generate_particles( - sim_consts.grid_n, sim_consts.grid_box_width, sim_consts.l - ), + particles=generate_particles(bundle, sim_consts.N), verlet_list=[PreVector{Int64}(sim_consts.N - 1) for i in 1:(sim_consts.N - 1)], n_bundle_snapshots=n_bundle_snapshots, bundle=Bundle(sim_consts.N, n_bundle_snapshots), ) - status = JSON3.read(read("$dir/status.json", String)) T0::Float64 = status.T - T = T0 + duration start_datetime = now() @@ -82,10 +85,7 @@ function run_sim( start_datetime, ) - n_bundles::Int64 = status.n_bundles next_bundle = n_bundles + 1 - bundles_dir = "$dir/bundles" - mkpath(bundles_dir) if n_bundle_snapshots > 0 save_data = true diff --git a/src/setup.jl b/src/setup.jl index d1f724f..8af30c0 100644 --- a/src/setup.jl +++ b/src/setup.jl @@ -1,13 +1,14 @@ using Distributions: Uniform using Dates: now using JSON3: JSON3 +using ReCo: Bundle, Particle function initial_particle_grid_pos(i, j; grid_box_width, l) term = -0.5 * grid_box_width - l return [k * grid_box_width + term for k in (i, j)] end -function generate_particles(grid_n, grid_box_width, l) +function generate_particles(grid_n::Int64, grid_box_width::Float64, l::Float64) particles = Vector{Particle}(undef, grid_n^2) id = 1 @@ -27,6 +28,16 @@ function generate_particles(grid_n, grid_box_width, l) return particles end +function generate_particles(bundle::Bundle, N::Int64) + particles = Vector{Particle}(undef, N) + + for id in 1:N + particles[id] = Particle(; id=id, c=bundle.c[id, end], φ=bundle.φ[id, end]) + end + + return particles +end + function init_sim(; N::Int64, v::Float64, δt::Float64=1e-5, packing_ratio::Float64=0.5, comment::String="" )