mirror of
https://gitlab.rlp.net/mobitar/ReCo.jl.git
synced 2024-12-21 00:51:21 +00:00
Fixed generating particles in run_sim
This commit is contained in:
parent
d7ad9c3354
commit
8e1d274473
7 changed files with 35 additions and 12 deletions
|
@ -5,14 +5,16 @@ end
|
||||||
if splitdir(pwd())[2] != "ReCo"
|
if splitdir(pwd())[2] != "ReCo"
|
||||||
error("You have to be in the main directeory ReCo!")
|
error("You have to be in the main directeory ReCo!")
|
||||||
else
|
else
|
||||||
include("src/ReCo.jl")
|
include("src/analysis/pair_correlation_function.jl")
|
||||||
includet("src/analysis/pair_correlation_function.jl")
|
|
||||||
end
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
|
|
||||||
|
using JLD2
|
||||||
|
|
||||||
using CairoMakie
|
using CairoMakie
|
||||||
CairoMakie.activate!()
|
CairoMakie.activate!()
|
||||||
|
set_theme!(theme_black())
|
||||||
|
|
||||||
##
|
##
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ mutable struct Particle
|
||||||
φ::Float64 # Angle
|
φ::Float64 # Angle
|
||||||
|
|
||||||
function Particle(; id::Int64, c::Vector{Float64}, φ::Float64)
|
function Particle(; id::Int64, c::Vector{Float64}, φ::Float64)
|
||||||
return new(id, c, copy(c), φ)
|
return new(id, c, zeros(2), φ)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import Base: push!, iterate
|
||||||
|
|
||||||
mutable struct PreVector{T}
|
mutable struct PreVector{T}
|
||||||
last_ind::UInt64
|
last_ind::UInt64
|
||||||
v::Vector{T}
|
v::Vector{T}
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
using CairoMakie, LaTeXStrings
|
||||||
|
using StaticArrays
|
||||||
|
using LoopVectorization: @tturbo
|
||||||
|
|
||||||
|
using ReCo: minimum_image
|
||||||
|
|
||||||
function plot_g(radius, g, variables)
|
function plot_g(radius, g, variables)
|
||||||
fig = Figure()
|
fig = Figure()
|
||||||
ax = Axis(
|
ax = Axis(
|
||||||
|
|
|
@ -4,6 +4,8 @@ using LaTeXStrings: @L_str
|
||||||
function animate(dir::String; framerate=0)
|
function animate(dir::String; framerate=0)
|
||||||
println("Generating animation...")
|
println("Generating animation...")
|
||||||
|
|
||||||
|
set_theme!(theme_black())
|
||||||
|
|
||||||
fig = Figure(; resolution=(1080, 1080))
|
fig = Figure(; resolution=(1080, 1080))
|
||||||
ax = Axis(
|
ax = Axis(
|
||||||
fig[1, 1];
|
fig[1, 1];
|
||||||
|
|
16
src/run.jl
16
src/run.jl
|
@ -1,5 +1,6 @@
|
||||||
using Random: Random
|
using Random: Random
|
||||||
using JSON3: JSON3
|
using JSON3: JSON3
|
||||||
|
using JLD2: JLD2
|
||||||
|
|
||||||
function run_sim(
|
function run_sim(
|
||||||
dir::String;
|
dir::String;
|
||||||
|
@ -33,6 +34,12 @@ function run_sim(
|
||||||
|
|
||||||
n_bundle_snapshots = min(n_snapshots, n_bundle_snapshots)
|
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 = (
|
args = (
|
||||||
v=sim_consts.v,
|
v=sim_consts.v,
|
||||||
skin_r=skin_r,
|
skin_r=skin_r,
|
||||||
|
@ -49,17 +56,13 @@ function run_sim(
|
||||||
N=sim_consts.N,
|
N=sim_consts.N,
|
||||||
l=sim_consts.l,
|
l=sim_consts.l,
|
||||||
particle_diameter=sim_consts.particle_diameter,
|
particle_diameter=sim_consts.particle_diameter,
|
||||||
particles=generate_particles(
|
particles=generate_particles(bundle, sim_consts.N),
|
||||||
sim_consts.grid_n, sim_consts.grid_box_width, sim_consts.l
|
|
||||||
),
|
|
||||||
verlet_list=[PreVector{Int64}(sim_consts.N - 1) for i in 1:(sim_consts.N - 1)],
|
verlet_list=[PreVector{Int64}(sim_consts.N - 1) for i in 1:(sim_consts.N - 1)],
|
||||||
n_bundle_snapshots=n_bundle_snapshots,
|
n_bundle_snapshots=n_bundle_snapshots,
|
||||||
bundle=Bundle(sim_consts.N, n_bundle_snapshots),
|
bundle=Bundle(sim_consts.N, n_bundle_snapshots),
|
||||||
)
|
)
|
||||||
|
|
||||||
status = JSON3.read(read("$dir/status.json", String))
|
|
||||||
T0::Float64 = status.T
|
T0::Float64 = status.T
|
||||||
|
|
||||||
T = T0 + duration
|
T = T0 + duration
|
||||||
|
|
||||||
start_datetime = now()
|
start_datetime = now()
|
||||||
|
@ -82,10 +85,7 @@ function run_sim(
|
||||||
start_datetime,
|
start_datetime,
|
||||||
)
|
)
|
||||||
|
|
||||||
n_bundles::Int64 = status.n_bundles
|
|
||||||
next_bundle = n_bundles + 1
|
next_bundle = n_bundles + 1
|
||||||
bundles_dir = "$dir/bundles"
|
|
||||||
mkpath(bundles_dir)
|
|
||||||
|
|
||||||
if n_bundle_snapshots > 0
|
if n_bundle_snapshots > 0
|
||||||
save_data = true
|
save_data = true
|
||||||
|
|
13
src/setup.jl
13
src/setup.jl
|
@ -1,13 +1,14 @@
|
||||||
using Distributions: Uniform
|
using Distributions: Uniform
|
||||||
using Dates: now
|
using Dates: now
|
||||||
using JSON3: JSON3
|
using JSON3: JSON3
|
||||||
|
using ReCo: Bundle, Particle
|
||||||
|
|
||||||
function initial_particle_grid_pos(i, j; grid_box_width, l)
|
function initial_particle_grid_pos(i, j; grid_box_width, l)
|
||||||
term = -0.5 * grid_box_width - l
|
term = -0.5 * grid_box_width - l
|
||||||
return [k * grid_box_width + term for k in (i, j)]
|
return [k * grid_box_width + term for k in (i, j)]
|
||||||
end
|
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)
|
particles = Vector{Particle}(undef, grid_n^2)
|
||||||
|
|
||||||
id = 1
|
id = 1
|
||||||
|
@ -27,6 +28,16 @@ function generate_particles(grid_n, grid_box_width, l)
|
||||||
return particles
|
return particles
|
||||||
end
|
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(;
|
function init_sim(;
|
||||||
N::Int64, v::Float64, δt::Float64=1e-5, packing_ratio::Float64=0.5, comment::String=""
|
N::Int64, v::Float64, δt::Float64=1e-5, packing_ratio::Float64=0.5, comment::String=""
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in a new issue