Ballistic Deposition On-Lattice

Ballistic Deposition On-Lattice preview image

1 collaborator

Logo Danis Kiziridis (Author)

Tags

chemistry and physics 

Tagged by Danis Kiziridis about 5 years ago

Visible to everyone | Changeable by the author
Model was written in NetLogo 5.0.4 • Viewed 711 times • Downloaded 26 times • Run 0 times
Download the 'Ballistic Deposition On-Lattice' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


WHAT IS IT?

The morphological characteristics of a material's surface affect its properties. One of the simplest models to study the surface geometry is the two-dimensional, on-lattice, ballistic deposition model. It is "two-dimensional" because the profile of the surface is considered; "on-lattice" because falling and deposited particles are constrained to exist on a grid's cells; and "ballistic" because the falling particles follow linear, vertical trajectories.

What has been found (e.g., see Family and Vicsek, 1985) is that the internal structure of the aggregate is rather porous and homogeneous. And, on the other hand, the active zone exhibits interesting scaling behavior. Specifically, its width, defined as the standard deviation of the height, increases initially fast, but reaches a plateau as the number of deposited particles becomes large (in respect to the horizontal length of the grid). Additionally, it was shown that the active zone is not a fractal (e.g., in Meakin et al., 1986).

HOW IT WORKS

Resembling the DLA Alternate Linear model found at the NetLogo Library (Wilensky, 2005), this variant simulates on-lattice particles that fall from random positions, and stick to the surface's active zone. The active zone is delimited by the neighborhood of the surface's occupied sites. In the present, you can choose if a particle can stick: either to a nearest neighbor of a surface site, i.e., at its right, left or above neighboring unoccupied sites; or to the diagonally above left or right (next-nearest), or above unoccupied sites. Periodic boundary conditions are at play, i.e., the world is wrapped at its horizontal dimension.

Initially, an even coat of particles is applied to the surface. At each time step, a new particle is created at a random position, and begins its fall. If it enters an active zone site, it sticks, and becomes part of the aggregate.

HOW TO USE IT

Buttons:

  • SETUP: Sets up the model.

  • GO: Runs the model. While running, you can press it again to pause the simulation.

Swithes:

  • SHOOT-NEAR: If "Off", the particles start their fall from the ceiling of the lattice. While "On", they start from the maximum height of the active zone, and the simulation speeds up. You can use this switch while the model is running.

  • HIDDEN-ZONE: If "Off", you are able to see the active zone sites as red disks. Again, to speed up the simulation, turn this switch "On", and the active zone is not displayed.

  • NEXT-NEAREST: When the switch is turned "Off", a particle can be deposited only to the nearest neighbors of a surface site. If "On", they can stick to the next-nearest neighbors additionally. You can use the switch during a simulation.

Plots:

  • AVG. HEIGHT OF ACTIVE ZONE: Plots the average height of the active zone as particles are deposited.

  • WIDTH OF ACTIVE ZONE: Plots the width versus the number of deposited particles.

  • STEP SIZES OF ACTIVE ZONE: An histogram that illustrates the frequency distribution of the active zone's step sizes. Step size is defined as the absolute height difference of the active zone between two neighboring columns.

Monitors:

  • DENSITY: It monitors the density of the aggregate as time goes on. It is defined as the number of deposited particles, divided by the total number of sites belonging to the aggregate's volume.

THINGS TO NOTICE

The average height of the active zone exhibits a positive linear relationship with the number of deposited particles. This is an indication of the uniform, non-fractal structure of the ballistic aggregate.

On the contrary, width does not grow continuously, but it tends to a limit size, specific to the horizontal length of the grid.

The distribution of step sizes decays exponential-like. Most of the neighboring sites of the active zone are on the same height, or differ by only one lattice unit. And larger step sizes are rare, as their frequency drops dramatically. If the active zone was a fractal, large step sizes would be more frequent.

THINGS TO TRY

Experiment with different horizontal to vertical dimension ratios. How do they affect the behavior of the width, or other quantities?

Find differences, in the quantities measured, between the two neighborhood rules. Which is the most profound change? For a more direct comparison, you can switch between the two rules while the model is running.

EXTENDING THE MODEL

You can modify some of the rules of the present model. For example, you could build the "single step" ballistic-deposition model found in Meakin et al. (1986): "In this model two sites are added at a randomly selected active site, defined such that the height of the deposit is greater at the two neighboring positions".

You could monitor other quantities, such as the total length of the active zone.

Instead of extending, you could simplify the code, to make the simulations run faster. The ballistic deposition model is characterized by its simplicity, since one has only to keep track of the active zone's height, and at each deposition event a maximum of three active zone heights have to be updated. Thus, the model is not computationally intensive at all. The present NetLogo version was built for the illustration of the model's mechanisms in a course presentation. That is the reason for the simulation of the active zone by turtles, and their display as red disks. To make it faster, e.g., you could remove the incorporation of the breed "active sites".

RELATED MODELS

Uri Wilensky's family of DLA models, in the NetLogo Library.

CREDITS AND REFERENCES

Family F. and Vicsek T. (1985) Scaling of the active zone in the Eden process on percolation networks and the ballistic deposition model. J. Phys. A 18, L75.

Meakin P., Ramanlal P., Sander L. M. and Ball R. C. (1986) Ballistic deposition on surfaces. Phys. Rev. A 34(6): 5091-5103.

Wilensky U. (2005) NetLogo DLA Alternate Linear model. http://ccl.northwestern.edu/netlogo/models/DLAAlternateLinear. Center for Connected Learning and Computer-Based Modeling, Northwestern Institute on Complex Systems, Northwestern University, Evanston, IL.

HOW TO CITE

If you mention this model in a publication, we ask that you include these citations for the model itself and for the NetLogo software:

  • Kiziridis, D. (2014). NetLogo Ballistic Deposition On-Lattice model. Institute for Cross-Disciplinary Physics and Complex Systems, IFISC (CSIC-UIB), Campus Universitat Illes Balears, Palma de Mallorca, Spain.
  • Wilensky, U. (1999). NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern Institute on Complex Systems, Northwestern University, Evanston, IL.

COPYRIGHT AND LICENSE

Copyright 2014 Danis Kiziridis.

CC BY-NC-SA 3.0

This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Commercial licenses are also available. To inquire about commercial licenses, please contact Uri Wilensky at uri@northwestern.edu.

Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

breed [particles particle]            ;;the particles exist until deposition.
breed [active-sites active-site]      ;;these sites are the active zone's

active-sites-own [height]             ;;holds the height of the active zone

globals [
  max-height  
  avg-height                          ;;the 4 of them regard the active zone
  width 
  step-size
  
  number-of-deposited                
  number-of-pores
]
 
;;bottom left corner of the world is the origin (0,0)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

to setup    
  ca
  
  ;;initially I apply an even coat on the surface
  
  set step-size n-values (max-pxcor + 1) [0]  
  set avg-height 2
  set width 0
  set number-of-deposited max-pycor + 1
  set number-of-pores 0
    
  create-active-sites max-pxcor + 1 [
    if (hidden-zone = true) [hide-turtle]  
    set shape "circle"
    set size 1.0
    set color red
    set height 2
    setxy who 1]

  ask patches with [pycor = 0] [
    set pcolor green]
    
  reset-ticks
end 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

to go   
  
  set max-height max [height] of active-sites

  ;;to end the simulation when the ceiling is reached    
  if  max-height = max-pycor + 2 [       
    stop]  
  
  make-new-particle
  
  ;;it considers earlier the particles with lower height, else 
  ;;they don't stick properly
  foreach sort particles [ ask ? [      
    let psi 0
    let chi 0
    
    ifelse (next-nearest = false)
    [ 
    ;;first checks if a particle sticks immediately upon creation
    if any? neighbors4 with [pcolor = green] [
      set pcolor green
      set psi ycor
      set chi xcor 
      
      ;;either the particle is not the last one to be deposited or... 
      ifelse (psi < max-pycor)
      [ ask active-sites with [xcor = chi] [
          setxy chi psi + 1       ;;raise the height of the zone at the column
          set height psi + 2
        ]        
        ask active-sites with [xcor = chi - 1] [
          if (ycor < psi) [
            setxy xcor psi      ;;check if the left neighbor's is raised
            set height psi + 1  
          ]
        ]        
        ask active-sites with [xcor = chi + 1] [
          if (ycor < psi) [
            setxy xcor psi      ;;check if the right neighbor's is raised
            set height psi + 1  
          ]
        ]
        ;;this code block helps to calculate the density = (green patches)/((green patches)+(gray-4.9 patches))
        ask patches with [(pycor < psi) and (pxcor = chi) and (pcolor = black)] [ 
          set pcolor gray - 4.9]
      ] 
      ;;it is the last particle before the end of the simulation 
      [ ask active-sites with [xcor = chi] [
          hide-turtle
          set height psi + 2
        ]        
        ask active-sites with [xcor = chi - 1] [
          if (ycor < psi) [
            setxy xcor psi
            set height psi + 1  
          ]
        ]        
        ask active-sites with [xcor = chi + 1] [
          if (ycor < psi) [
            setxy xcor psi
            set height psi + 1  
          ]
        ]
        ask patches with [(pycor < psi) and (pxcor = chi) and (pcolor = black)] [
          set pcolor gray - 4.9]
      ]
      die                       ;;in the end, a stuck particle is killed, been                                
      ]                         ;;"transformed" to a green patch       
    ]   
    [
      if any? neighbors with [pcolor = green] [
      set pcolor green
      set psi ycor
      set chi xcor 
      
      ifelse (psi < max-pycor)
      [ ask active-sites with [xcor = chi] [
        setxy chi psi + 1       
        set height psi + 2
        ]        
        ask active-sites with [xcor = chi - 1] [
          setxy xcor psi + 1   
          set height psi + 2  
        ]        
        ask active-sites with [xcor = chi + 1] [
          setxy xcor psi + 1     
          set height psi + 2  
        ]
        ask patches with [(pycor < psi) and (pxcor = chi) and (pcolor = black)] [
          set pcolor gray - 4.9]
      ] 
      [ ask active-sites with [xcor = chi] [
          hide-turtle
          set height psi + 2
        ]        
        ask active-sites with [xcor = chi - 1] [
          hide-turtle
          set height psi + 2  
        ]        
        ask active-sites with [xcor = chi + 1] [
          hide-turtle
          set height psi + 2  
        ]
        ask patches with [(pycor < psi) and (pxcor = chi) and (pcolor = black)] [
          set pcolor gray - 4.9]
      ]
      die                                              
      ] 
    ]                      
    
    ;;if it is not the case of sticking immediately, you let it fall
    fall
    
    ;;and check if it sticks
    ifelse (next-nearest = false) 
    [  if any? neighbors4 with [pcolor = green] [
        set pcolor green
        set psi ycor
        set chi xcor 
        ask active-sites with [xcor = chi] [
          setxy chi psi + 1
          set height psi + 2
        ]
        ask active-sites with [xcor = chi - 1] [
          if (ycor < psi) [
            setxy xcor psi
            set height psi + 1  
          ]
        ]
        ask active-sites with [xcor = chi + 1] [
          if (ycor < psi) [
            setxy xcor psi
            set height psi + 1  
          ]
        ] 
        ask patches with [(pycor <= psi) and (pxcor = chi) and (pcolor = black)] [
          set pcolor gray - 4.9]     
        die
       ]
   ]
   [  if any? neighbors with [pcolor = green] [
        set pcolor green
        set psi ycor
        set chi xcor 
        ask active-sites with [xcor = chi] [
          setxy chi psi + 1
          set height psi + 2
        ]
        ask active-sites with [xcor = chi - 1] [
          setxy xcor psi + 1
          set height psi + 2 
        ]
        ask active-sites with [xcor = chi + 1] [
          setxy xcor psi + 1
          set height psi + 2 
        ]  
        ask patches with [(pycor < psi) and (pxcor = chi) and (pcolor = black)] [
          set pcolor gray - 4.9]   
        die
      ]
   ]  
  ]]
         
  tick
  update-variables
  do-plots  
end 

to make-new-particle 
  create-particles 1 [
    set size 1.5
    set shape "square"
    set color green
    ifelse (shoot-near = false) [          
      setxy random-pxcor max-pycor]        ;;you can shoot particles from the ceiling, or
      [setxy random-pxcor max-height - 1]  ;;from the heighest of the active zone.
    set heading 180                        ;;particles head down
  ]  
end 

to fall
  fd 1
end 

to update-variables
   set width standard-deviation [height] of active-sites
   set avg-height mean [height] of active-sites 
   set number-of-deposited (count patches with [pcolor = green])  
   set number-of-pores (count patches with [pcolor = (gray - 4.9)])
   
   ;;for the distribution of step sizes...
   set step-size []               
   let i 0
   while [i < (max-pxcor + 1)] [          ;;for each of the columns...
    let next (i + 1)
    if (next = max-pxcor + 1) [           
      set next 0]                         ;;periodic boundary conditions...
    let diff (([height] of active-site i) - ([height] of active-site next))  
    set step-size (lput abs diff step-size)   ;;the difference in height is "diff"
    set i (i + 1)
   ]
end 

to do-plots
  if (ticks mod 10 = 1)
  [
    set-current-plot "Avg. Height of Active Zone"
    set-current-plot-pen "Sur"
    plotxy number-of-deposited avg-height     
     
    set-current-plot "Width of Active Zone"
    set-current-plot-pen "Sur"
    plotxy number-of-deposited width
  ]
  ;; the histogram's code is at its "Edit..." window
end 

There are 8 versions of this model.

Uploaded by When Description Download
Danis Kiziridis about 5 years ago ... Download this version
Danis Kiziridis about 5 years ago typos at Info... Download this version
Danis Kiziridis about 5 years ago refinements to code to run a bit faster Download this version
Danis Kiziridis about 5 years ago calculation of density corrected Download this version
Danis Kiziridis about 5 years ago more bad expressions corrected... Download this version
Danis Kiziridis about 5 years ago typos and bad expressions at Info... Download this version
Danis Kiziridis about 5 years ago added citation on referred NetLogo models Download this version
Danis Kiziridis about 5 years ago Initial upload Download this version

Attached files

File Type Description Last updated
Ballistic Deposition On-Lattice.png preview Preview for 'Ballistic Deposition On-Lattice' about 5 years ago, by Danis Kiziridis Download

This model does not have any ancestors.

This model does not have any descendants.