tFixed coloring. Tried to add walls to simulate shortening. - granular-basin - tectonic deformation experiments with Granular.jl
 (HTM) git clone git://src.adamsgaard.dk/granular-basin
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
       ---
 (DIR) commit 845a5bc453c83e6d59a61d86b9511575b001085d
 (DIR) parent a242f581c0e00bf87dbc3fccbfbb7b6485576b59
 (HTM) Author: esbenpalmstrom <esbenpalmstroem@gmail.com>
       Date:   Mon, 29 Nov 2021 17:05:23 +0100
       
       Fixed coloring. Tried to add walls to simulate shortening.
       
       Diffstat:
         M deform_basin.jl                     |      49 +++++++++++++++++++++++--------
         M init_basin.jl                       |       6 +++---
         M layer_basin.jl                      |       8 ++++----
         M runfullstack.jl                     |       2 +-
       
       4 files changed, 44 insertions(+), 21 deletions(-)
       ---
 (DIR) diff --git a/deform_basin.jl b/deform_basin.jl
       t@@ -10,6 +10,7 @@ id = "simulation500"   # folder name of simulation
        
        hw_ratio = 0.2          # height/width ratio of indenter
        grain_radius = 0.05     # grain radius of grains in indenter
       +def_time = 2.0          # time spent deforming
        
        deformation_type = "shortening" # "diapir" or "shortening"
                                        # diapir will only introduce an indenter while
       t@@ -47,6 +48,8 @@ grain_radius = 0.05
        vertex_x = init_vertex_pos[1]
        vertex_y = width*hw_ratio*sin((pi/width)*vertex_x)
        
       +boomerang_vel = 0.5 # upward velocity of the indeter
       +
        for i = 0:grain_radius*2:width#manipulate the ocean grid
        
            x_pos = i
       t@@ -58,7 +61,8 @@ for i = 0:grain_radius*2:width#manipulate the ocean grid
                                            grain_radius,
                                            0.1,
                                            fixed = true,
       -                                    lin_vel = [0.0,0.5])
       +                                    lin_vel = [0.0,boomerang_vel],
       +                                    color = -1)
        end
        
        append!(sim.grains,temp_indent.grains)
       t@@ -78,7 +82,7 @@ for grain in sim.grains
                global y_bot = grain.lin_pos[2] - grain.contact_radius
            end
        end
       -Granular.setTotalTime!(sim,2.0)
       +Granular.setTotalTime!(sim,def_time)
        Granular.setTimeStep!(sim)
        Granular.setOutputFileInterval!(sim, .01)
        Granular.resetTime!(sim)
       t@@ -93,22 +97,34 @@ 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_radius
       -        left_edge_index = deepcopy(i)
       +        global left_edge_index = deepcopy(i)
            end
       -    if right_edge >sim.grains[i].lin_pos[1] - sim.grains[i].contact_radius
       +    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_radius
       -        right_edge_index = deepcopy(i)
       +        global right_edge_index = deepcopy(i)
            end
        end
        
       +"""
       +carpet_index = []
       +# find the center grain of the carpet
       +for i = 1:size(sim.grains,1)
       +    if sim.grains[i].color == 0
       +        append!(carpet_index,i)
       +    end
       +end
       +c_i = size(carpet_index)/2
       +"""
       +
       +
        #add walls to the east and west
        Granular.addWallLinearFrictionless!(sim,[1.,0.],
                                            left_edge,
       -                                    bc = "fixed")
       +                                    bc = "velocity")
        
        Granular.addWallLinearFrictionless!(sim,[1.,0.],
                                            right_edge,
       -                                    bc = "fixed")
       +                                    bc = "velocity")
        
        #add wall beneath the carpet
        
       t@@ -118,13 +134,20 @@ Granular.addWallLinearFrictionless!(sim, [0.,1.],
        
        
        
       +
       +global checked_done = false
       +
        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
       +
       +    if sim.grains[left_edge_index].lin_vel[1] > boomerang_vel/2 && checked_done == false
       +        sim.walls[1].vel = boomerang_vel
       +        sim.walls[2].vel = -boomerang_vel
       +        global checked_done = true
       +    end
       +
       +    #sim.walls[1].vel = sim.grains[left_edge_index].lin_vel[1]
       +    #sim.walls[2].vel = -sim.grains[right_edge_index].lin_vel[1]
       +
            Granular.run!(sim,single_step = true)
        
        end
 (DIR) diff --git a/init_basin.jl b/init_basin.jl
       t@@ -186,8 +186,8 @@ right_edge = left_edge+length                   # east edge of the carpet
        
        # Now loop over the carpet grain positions, the loop will create grains that overlap slightly
        # in order to create the bonds needed
       -# color = 1 is used as a flag for the grains in the carpet
       -for i = left_edge+(bot_r/2):bot_r*1.99:left_edge+length
       +# color = 0 is used as a flag for the grains in the carpet
       +for i = left_edge+(bot_r/2):bot_r*1.999:left_edge+length
        
            bot_pos = [i,round(sim.ocean.origo[2]-bot_r,digits=2)] # position of grain
        
       t@@ -201,7 +201,7 @@ for i = left_edge+(bot_r/2):bot_r*1.99:left_edge+length
                                        #contact_stiffness_normal = Inf,
                                        #contact_stiffness_tangential = Inf,
                                        fixed = false,
       -                                color = 1)
       +                                color = 0)
        end
        
        #Granular.fitGridToGrains!(carpet,carpet.ocean,verbose=false)
 (DIR) diff --git a/layer_basin.jl b/layer_basin.jl
       t@@ -20,7 +20,7 @@ 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]
       +color = [1,2,1]
        
        #carpet_youngs_modulus = 2e7
        #carpet_poissons_ratio = 0.185
       t@@ -58,7 +58,7 @@ end
        """
        for grain in sim.grains
            if grain.lin_pos[2] == -0.05
       -        grain.color = 1
       +        grain.color = 0
            end
        end
        """
       t@@ -100,11 +100,11 @@ increase_array = []
        
        #increase the contact radius
        for grain in sim.grains
       -    if grain.color == 0
       +    if grain.color != 0
                contact_radius_increase = (grain.contact_radius*size_increasing_factor)-grain.contact_radius
                grain.contact_radius += contact_radius_increase
                append!(increase_array,contact_radius_increase)
       -    elseif grain.color == 1
       +    elseif grain.color == 0
                append!(increase_array,0)
            end
        end
 (DIR) diff --git a/runfullstack.jl b/runfullstack.jl
       t@@ -8,4 +8,4 @@ include("deform_basin.jl")
        
        stack_t_now = Dates.now()
        stack_dur = Dates.canonicalize(stack_t_now-stack_t_start)
       -print("Time elapsed: ",stack_dur)
       +print("Total full stack time elapsed: ",stack_dur)