Introduction
Introduction Statistics Contact Development Disclaimer Help
tminor changes. Walls added to deformation - granular-basin - tectonic deformat…
git clone git://src.adamsgaard.dk/granular-basin
Log
Files
Refs
README
---
commit 0813325bb8a04723d8c26c333d18b44d185be2d5
parent dcec4954da477abbe21e251e1294523b68a6db85
Author: esbenpalmstrom <[email protected]>
Date: Thu, 25 Nov 2021 17:33:43 +0100
minor changes. Walls added to deformation
Diffstat:
M compact_basin.jl | 8 ++++++--
M deform_basin.jl | 58 ++++++++++++++++++++++++-----…
M init_basin.jl | 8 +++-----
M layer_basin.jl | 35 +++++++++++++++++++++++++----…
4 files changed, 83 insertions(+), 26 deletions(-)
---
diff --git a/compact_basin.jl b/compact_basin.jl
t@@ -8,12 +8,11 @@ t_start = Dates.now() # Save the start time, print the end t…
# lav en lille test? se om dit appendede carpet stadig er forbundet til hoved-
# simulationsobjektet
-id = "simulation500" # id of simulation to load
+id = "simulation1000" # id of simulation to load
N = 20e3 # amount of stress to be applied
t_comp = 3.0 # compaction max duration [s]
sim = Granular.readSimulation("$(id)/init.jld2")
-carpet = Granular.readSimulation("$(id)/carpet.jld2")
SimSettings = SimSettings = JLD2.load("$(id)/SimSettings.jld2")
#mkpath("$(id)/compaction-N$(N)Pa")
t@@ -98,3 +97,8 @@ cd("..")
JLD2.save("simulation$(ngrains)/SimSettings.jld2", SimSettings)
Granular.writeSimulation(sim,filename = "$(id)/comp.jld2")
+
+# print time elapsed
+t_now = Dates.now()
+dur = Dates.canonicalize(t_now-t_start)
+print("Time elapsed: ",dur)
diff --git a/deform_basin.jl b/deform_basin.jl
t@@ -27,6 +27,13 @@ for grain in sim.grains
grain.fixed = false
end
+y_bot = Inf
+for grain in sim.grains
+ if y_bot > grain.lin_pos[2] - grain.contact_radius
+ global y_bot = grain.lin_pos[2] - grain.contact_radius
+ end
+end
+
# Add Indenter
temp_indent = Granular.createSimulation("id=temp_indent")
t@@ -64,7 +71,12 @@ Granular.fitGridToGrains!(sim,
sim.time_iteration = 0
sim.time = 0.0
-sim.file_time_since_output_file = 0.
+sim.file_time_since_output_file = 0.y_bot = Inf
+for grain in sim.grains
+ if y_bot > grain.lin_pos[2] - grain.contact_radius
+ global y_bot = grain.lin_pos[2] - grain.contact_radius
+ end
+end
Granular.setTotalTime!(sim,2.0)
Granular.setTimeStep!(sim)
Granular.setOutputFileInterval!(sim, .01)
t@@ -72,24 +84,46 @@ Granular.resetTime!(sim)
cd("$id")
sim.id = "deformed"
-sim.walls = Granular.WallLinear[] # remove existing walls
+sim.walls = Granular.WallLinearFrictionless[] # remove existing walls
#find the edge grains of the carpet
+left_edge = -Inf
+right_edge = Inf
+for i = 1:size(sim.grains,1)
+ if left_edge < sim.grains[i].lin_pos[1] + sim.grains[i].contact_radius
+ global left_edge = sim.grains[i].lin_pos[1] + sim.grains[i].contact_ra…
+ left_edge_index = deepcopy(i)
+ end
+ if right_edge >sim.grains[i].lin_pos[1] - sim.grains[i].contact_radius
+ global right_edge = sim.grains[i].lin_pos[1] - sim.grains[i].contact_r…
+ right_edge_index = deepcopy(i)
+ end
+end
-#add walls
-#facing east
-Granular.addWallLinearFrictionless(sim, [-1.,0.]
- )
+#add walls to the east and west
+Granular.addWallLinearFrictionless!(sim,[1.,0.],
+ left_edge,
+ bc = "fixed")
-while sim.time < sim.time_total
- for grain in sim.grains
+Granular.addWallLinearFrictionless!(sim,[1.,0.],
+ right_edge,
+ bc = "fixed")
- if grain.lin_vel[2] < 0 && grain.color == 1
- grain.lin_vel[2] = 0
- end
- end
+#add wall beneath the carpet
+
+Granular.addWallLinearFrictionless!(sim, [0.,1.],
+ y_bot,
+ bc = "fixed")
+
+while sim.time < sim.time_total
+# for grain in sim.grains
+#
+# if grain.lin_vel[2] < 0 && grain.color == 1
+# grain.lin_vel[2] = 0
+# end
+# end
Granular.run!(sim,single_step = true)
end
diff --git a/init_basin.jl b/init_basin.jl
t@@ -204,6 +204,7 @@ for i = left_edge+(bot_r/2):bot_r*1.99:left_edge+length
color = 1)
end
+Granular.findContactsAllToAll!(carpet) # find the grain contacts
append!(sim.grains,carpet.grains) # add the carpet grains to the main simulati…
# since the assignment will point to the carpet object, changes made to the ca…
t@@ -214,6 +215,7 @@ for grain in sim.grains
grain.n_contacts = 0
end
+
for grain in sim.grains
for ic=1:size(grain.contact_age,1)
grain.contact_age[ic] = 1e16
t@@ -221,7 +223,7 @@ for grain in sim.grains
grain.strength_heal_rate = 1 # new bond stengthening
end
-Granular.findContactsAllToAll!(carpet) # find the grain contacts
+#Granular.findContactsAllToAll!(carpet) # find the grain contacts
Granular.fitGridToGrains!(sim,sim.ocean,verbose=false) # fit the ocean to the…
t@@ -244,10 +246,6 @@ cd("..")
Granular.writeSimulation(sim,
filename = "simulation$(ngrains)/init.jld2")
-
-Granular.writeSimulation(carpet,
- filename = "simulation$(ngrains)/carpet.jld2")
-
JLD2.save("simulation$(ngrains)/SimSettings.jld2", SimSettings)
# print time elapsed
diff --git a/layer_basin.jl b/layer_basin.jl
t@@ -3,7 +3,7 @@ import JLD2
import PyPlot
import Dates
-id = "simulation500" # id of simulation to load, just write the folder
+id = "simulation1000" # id of simulation to load, just write the folder
# name here
# Layer interface positions
t@@ -16,8 +16,9 @@ interfaces = [0,0.4,0.6,1]
# mechanical properties for each layer
youngs_modulus = [2e7,2e7,2e7] # elastic modulus
poissons_ratio = [0.185,0.185,0.185] # shear stiffness ratio
-tensile_strength = [0.3,0.05,0.3] # strength of bonds between grains
-contact_dynamic_friction = [0.4,0.4,0.4] # friction between grains
+tensile_strength = [0.3,0.05,0.3] # strength of bonds between grains
+shear_strength = [0.3,0.05,0.3] # shear stregth of bonds
+contact_dynamic_friction = [0.4,0.05,0.4] # friction between grains
rotating = [true,true,true] # can grains rotate or not
color = [0,0,0]
t@@ -26,13 +27,14 @@ carpet_poissons_ratio = 0.185
carpet_tensile_strength = Inf
carpet_contact_dynamic_friction = 0.4
carpet_rotating = true
+carpet_shear_strength = Inf
sim = Granular.readSimulation("$(id)/comp.jld2")
-carpet = Granular.readSimulation("$(id)/carpet.jld2")
SimSettings = SimSettings = JLD2.load("$(id)/SimSettings.jld2")
+sim.walls = Granular.WallLinearFrictionless[] # remove existing walls
+
Granular.zeroKinematics!(sim) # end any movement
-Granular.zeroKinematics!(carpet) # end any movement
y_top = -Inf
for grain in sim.grains
t@@ -72,6 +74,7 @@ for grain in sim.grains
grain.youngs_modulus = youngs_modulus[i-1]
grain.poissons_ratio = poissons_ratio[i-1]
grain.tensile_strength = tensile_strength[i-1]
+ grain.shear_strength = shear_strength[i-1]
grain.contact_dynamic_friction = contact_dynamic_friction[i-1]
grain.rotating = rotating[i-1]
grain.color = color[i-1]
t@@ -79,6 +82,7 @@ for grain in sim.grains
grain.youngs_modulus = carpet_youngs_modulus
grain.poissons_ratio = carpet_poissons_ratio
grain.tensile_strength = carpet_tensile_strength
+ grain.shear_strength = carpet_shear_strength
grain.contact_dynamic_friction = carpet_contact_dynamic_friction
grain.rotating = carpet_rotating
end
t@@ -103,18 +107,35 @@ for grain in sim.grains
end
end
-Granular.findContactsAllToAll!(sim) # find the grain contacts
+#Granular.findContactsAllToAll!(sim) # find the grain contacts
+#Granular.run!(sim,single_step=true)
#reduce the contact radius again
for i = 1:size(sim.grains,1)
sim.grains[i].contact_radius -= increase_array[i]
end
+"""
+for grain in sim.grains
+ grain.contacts[:] .= 0
+ grain.n_contacts = 0
+end
+
+#vil det ikke være nødvendigt at køre et enkelt timestep her?
+
+for grain in sim.grains
+ for ic=1:size(grain.contact_age,1)
+ grain.contact_age[ic] = 1e16
+ end
+ grain.strength_heal_rate = 1 # new bond stengthening
+end
+"""
+
cd("$id")
sim.id = "layered"
Granular.resetTime!(sim)
-Granular.setTotalTime!(sim,0.2)
+Granular.setTotalTime!(sim,1.0)
Granular.run!(sim)
cd("..")
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.