User Tools

Site Tools


exercises:2017_ethz_mmm:mc_and_kmc_2

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
exercises:2017_ethz_mmm:mc_and_kmc_2 [2017/03/08 16:05] dpasseroneexercises:2017_ethz_mmm:mc_and_kmc_2 [2020/08/21 10:15] (current) – external edit 127.0.0.1
Line 1: Line 1:
-The hexaiodobenzene molecule shown in the image, when deposited on a noble metal substrate such as+====== Kinetic Monte Carlo simulations for the diffusion of molecules on  a substrate ======  
 +=====  
 + 
 +The  molecule shown in the image (hexaiodo-substituted 
 +macrocycle cyclohexa-m-phenylene (CHP) ), when deposited on a noble metal substrate such as
 Cu(111) , Ag(111) or Au(111), at room temperature looses the I atoms and starts diffusing. Cu(111) , Ag(111) or Au(111), at room temperature looses the I atoms and starts diffusing.
 +
 +
 +{{:exercises:2017_ethz_mmm:hexaiodobenzene.jpg?400|}}
 +
 The relative probability of diffusion and of binding to a neighboring molecule The relative probability of diffusion and of binding to a neighboring molecule
 determine the shape of the network that will be obtained. determine the shape of the network that will be obtained.
 The experiments performed at Empa [ [[http://dx.doi.org/10.1021/ja107947z]] J. AM. CHEM. SOC. 2010, 132, 16669–16676 ] shows that on a Cu substrate dendrites will form The experiments performed at Empa [ [[http://dx.doi.org/10.1021/ja107947z]] J. AM. CHEM. SOC. 2010, 132, 16669–16676 ] shows that on a Cu substrate dendrites will form
 while on a Au substrate 2D networks will form. while on a Au substrate 2D networks will form.
 +
 +{{:exercises:2017_ethz_mmm:dendrites.jpg?400|}}
 +
 +<note tip>
 The python program KMC.py will allow you to simulate the diffusion and binding of molecules The python program KMC.py will allow you to simulate the diffusion and binding of molecules
-once the energy barriers for the diffusion event and for the binding event as well as the simulatin temperature will be defined. +once the energy barriers for the diffusion event and for the binding event as well as the simulation temperature will be defined. 
-During the execution the program shows snapshots of the positins of the molecules.+ 
 + 
 +During the execution the program shows snapshots of the positions of the molecules. 
 + 
 +{{:exercises:2017_ethz_mmm:final_0.1_300_0.1_0.1.png?400|}} 
 Molecules free to diffuse will be represented via blue dots. Molecules free to diffuse will be represented via blue dots.
-Molecules that irreversibely formed a bond with a neighboring molecule will be represented by red dots. +Molecules that irreversibly formed a bond with a neighboring molecule will be represented by red dots. 
 +At the end of the execution a snapshot of the final configuration of the system is saved an image file. 
 +The program asks you for some input: 
 + 
 +<code>  
 +coverage 
 +update graph each steps 
 +temperature in K 
 +diffusion barrier 
 +binding barrier 
 +</code> 
 + 
 +</note> 
 +<note warning> 
 +**TASK 1** 
 +execute the program with the following parameters: 
 +<code> 
 +coverage 0.1 
 +update graph each steps 500 
 +number of steps 100000 
 +temperature in K 300 
 +diffusion barrier 0.1 
 +binding barrier 0.1 
 +</code> 
 +Observe how events occur. 
 +Observe how time evolves. 
 +Did the job perform all the 100000 steps? Why? 
 +Observe the patterns obtained. 
 +</note> 
 + 
 +<note warning> 
 +**TASK 2** 
 +execute the program with the following parameters: 
 +<code> 
 +coverage 0.1 
 +update graph each steps 500 
 +number of steps 100000 
 +temperature in K 300 
 +diffusion barrier 0.3 
 +binding barrier 0.4 
 +</code> 
 +Do you notice differences in the way events occur? 
 +How is evolving time compared to the previous case? 
 +How does the final geometry differ form the previous case? 
 +</note> 
 +<note tip> 
 +Now have a look at the python code. 
 +The MAIN section 
 +<code> 
 +#### MAIN KMC LOOP 
 +t=0 
 + 
 +#### at the beginning we have to check possible events for all molecules 
 +tobeupdated=[iu for iu in range(len(molecules))] 
 +possible_events=[] 
 +for i in range(nsteps): 
 +    #### check possible events for selected set of molecules 
 +    possible_events=possible_events+events(molecules,tobeupdated,nx,ny) 
 + 
 +    if possible_events==[]: 
 +       print "no more events possible" 
 +       break 
 +    #### compute total rate (can be imporved) 
 +    R=total_rate(possible_events,rates) 
 + 
 +    #### decide which event to apply  
 +    selected_event=find_event(R,rates,possible_events) 
 + 
 +    #### apply the event end update partially the list of events 
 +    possible_events,tobeupdated=apply_event(molecules,selected_event,possible_events) 
 + 
 +    #### update time 
 +    rho2=np.random.random() 
 +    dt=-np.log(rho2)/
 +    t=t+dt 
 +</code> 
 +is very simple and reflects the basic steps of the KMC approach. 
 +On the contrary, the function needed to create the list of events is quite complex: 
 +<code> 
 +def events(m,selection,nx,ny): 
 +    allevents=[] 
 +    set=[] 
 +    #### list of first neighbors (relative position) 
 +    set.append([[0,0,1,0],[1,0,0,0],[0,1,1,0],[-1,1,1,0],[-1,0,0,0],[-1,0,1,0]]) 
 +    set.append([[1,-1,-1,0],[1,0,0,0],[1,0,-1,0],[0,0,-1,0],[-1,0,0,0],[0,-1,-1,0]]) 
 + 
 +    for i in selection: 
 +        le=[] 
 +        #### consider only molecules that are not binded 
 +
 +
 +
 +</code> 
 +</note> 
 +<note warning> 
 +**TASK 3** 
 +Have a look on the section of the code that create the list of events, 
 +comment on which are the critical points in setting up a KMC simulation 
 +to describe a real process. 
 + 
 +**TASK 4** 
 +At each step of the simulaiton the list of possible events is created (or, betetr, updated) 
 +an event is chosen randomly and is then actuated. 
 +Would it be possible to execute simultaneously more events at each KMC step? 
 +</note>
exercises/2017_ethz_mmm/mc_and_kmc_2.1488989143.txt.gz · Last modified: 2020/08/21 10:15 (external edit)