Granular.jl

Julia package for granular dynamics simulation
git clone git://src.adamsgaard.dk/Granular.jl
Log | Files | Refs | README | LICENSE

commit 27b1f0f8266144d202c7c3e4f9f6952be5826b13
parent 1a172b917e27a63dd6938ef42cdb58383c5d8da0
Author: Anders Damsgaard <andersd@riseup.net>
Date:   Wed, 22 Nov 2017 14:30:16 -0500

only write interaction information if interactions occur

Diffstat:
Msrc/io.jl | 76+++++++++++++++++++++++++++++++++++++++-------------------------------------
1 file changed, 39 insertions(+), 37 deletions(-)

diff --git a/src/io.jl b/src/io.jl @@ -1210,38 +1210,38 @@ function plotGrains(sim::Simulation; tensile_stress = Float64[] shear_displacement = Vector{Float64}[] contact_age = Float64[] - for i=1:length(simulation.grains) - for ic=1:simulation.Nc_max - if simulation.grains[i].contacts[ic] > 0 - j = simulation.grains[i].contacts[ic] + for i=1:length(sim.grains) + for ic=1:sim.Nc_max + if sim.grains[i].contacts[ic] > 0 + j = sim.grains[i].contacts[ic] - if !simulation.grains[i].enabled || - !simulation.grains[j].enabled + if !sim.grains[i].enabled || + !sim.grains[j].enabled continue end - p = simulation.grains[i].lin_pos - - simulation.grains[j].lin_pos + p = sim.grains[i].lin_pos - + sim.grains[j].lin_pos dist = norm(p) - r_i = simulation.grains[i].contact_radius - r_j = simulation.grains[j].contact_radius + r_i = sim.grains[i].contact_radius + r_j = sim.grains[j].contact_radius δ_n = dist - (r_i + r_j) R_ij = harmonicMean(r_i, r_j) - if simulation.grains[i].youngs_modulus > 0. && - simulation.grains[j].youngs_modulus > 0. - E_ij = harmonicMean(simulation.grains[i]. + if sim.grains[i].youngs_modulus > 0. && + sim.grains[j].youngs_modulus > 0. + E_ij = harmonicMean(sim.grains[i]. youngs_modulus, - simulation.grains[j]. + sim.grains[j]. youngs_modulus) - A_ij = R_ij*min(simulation.grains[i].thickness, - simulation.grains[j].thickness) + A_ij = R_ij*min(sim.grains[i].thickness, + sim.grains[j].thickness) k_n = E_ij*A_ij/R_ij else - k_n = harmonicMean(simulation.grains[i]. + k_n = harmonicMean(sim.grains[i]. contact_stiffness_normal, - simulation.grains[j]. + sim.grains[j]. contact_stiffness_normal) end @@ -1256,10 +1256,10 @@ function plotGrains(sim::Simulation; push!(contact_stiffness, k_n) push!(tensile_stress, k_n*δ_n/A_ij) - push!(shear_displacement, simulation.grains[i]. + push!(shear_displacement, sim.grains[i]. contact_parallel_displacement[ic]) - push!(contact_age, simulation.grains[i].contact_age[ic]) + push!(contact_age, sim.grains[i].contact_age[ic]) end end end @@ -1318,24 +1318,26 @@ function plotGrains(sim::Simulation; set size ratio -1 set key off\n""") - max_tensile_stress = maximum(abs.(tensile_stress)) - max_line_with = 5. - if plot_interactions - write(f, "set cbrange [-$max_tensile_stress:$max_tensile_stress]\n") - for i=1:length(i1) - write(f, "set arrow $i from " * - "$(sim.grains[i1[i]].lin_pos[1])," * - "$(sim.grains[i1[i]].lin_pos[2]) to " * - "$(sim.grains[i2[i]].lin_pos[1])," * - "$(sim.grains[i2[i]].lin_pos[2]) ") - if tensile_stress[i] > 0 - write(f, "nohead ") - else - write(f, "doublehead ") + if length(i1) > 0 + max_tensile_stress = maximum(abs.(tensile_stress)) + max_line_with = 5. + if plot_interactions + write(f, "set cbrange [-$max_tensile_stress:$max_tensile_stress]\n") + for i=1:length(i1) + write(f, "set arrow $i from " * + "$(sim.grains[i1[i]].lin_pos[1])," * + "$(sim.grains[i1[i]].lin_pos[2]) to " * + "$(sim.grains[i2[i]].lin_pos[1])," * + "$(sim.grains[i2[i]].lin_pos[2]) ") + if tensile_stress[i] > 0 + write(f, "nohead ") + else + write(f, "doublehead ") + end + write(f, "lw $(abs(tensile_stress[i])/ + max_tensile_stress*max_line_width) ") + write(f, "lc palette cb $(tensile_stress[i])\n") end - write(f, "lw $(abs(tensile_stress[i])/ - max_tensile_stress*max_line_width) ") - write(f, "lc palette cb $(tensile_stress[i])\n") end end