struct Solution t::Vector{Float64} center::Matrix{Vector{Float64}} φ::Matrix{Float64} function Solution(N::Int64, n_frames::Int64) return new(zeros(n_frames), [zeros(2) for i in 1:N, j in 1:n_frames], zeros((N, n_frames))) end end function save_frame!(sol, frame, t, particles) frame += 1 sol.t[frame] = t @simd for p in particles p_id = p.id pre_pos = sol.center[p_id, frame] @simd for i in 1:2 pre_pos[i] = p.c[i] end sol.φ[p_id, frame] = p.φ end return frame end function save_data_jld(sol, args, name_part) println("Saving data...") data_path = "exports/$name_part.jld2" jldsave(data_path; sol, args, name_part) println("Data saved to $data_path.") return nothing end