300 likes | 495 Views
South China University of Technology. Growth of Cluster. Xiao- Bao Yang Department of Physics. www.compphys.cn. nearest=[0 1 0 -1 1 0 -1 0 1 -1 -1 1 ];. Square and triangular lattice. clear x=[0 0]; %initial edge=[0 1 0 -1 1 0 -1 0]; nearest=edge;. for ii=1:3%generation
E N D
South China University of Technology Growth of Cluster Xiao-BaoYang Department of Physics www.compphys.cn
nearest=[0 1 0 -1 1 0 -1 0 1 -1 -1 1 ]; • Square and triangular lattice clear x=[0 0]; %initial edge=[0 1 0 -1 1 0 -1 0]; nearest=edge; for ii=1:3%generation x=[x edge]; tmp=edge; for jj=1:size(tmp,1) edge=[edge repmat(tmp(jj,:),size(nearest,1),1)+nearest]; end edge=setdiff(edge,x,'rows'); end for ii=1:length(x) t=[1 0]*x(ii,1)+[0.5 0.866]*x(ii,2); plot(t(1),t(2),'*') hold on end for ii=1:length(edge) t=[1 0]*edge(ii,1)+[0.5 0.866]*edge(ii,2); plot(t(1),t(2),'o') hold on end axis equal
Simulation of cluster 1) Adding atoms 2) Atom diffusion allowed Adding and deleting to conserve the number of atoms 3) Energy estimation 4) Accept or reject the configuration
Main Program • Definition x/edge/nearest • Add atoms to form cluster of N atoms and count the bonds • Structure displaying • Loop transformation of x, maintaining spanning, updating edge, counting bonds • Structure displaying
Add atoms to form cluster of N atoms and count the bonds NNnum=size(nearest,1); %number of nearest bonds for ii=1:24 growsite=ceil(length(edge)*rand); %choose one site randomly to add an atom tmp=repmat(edge(growsite,:),NNnum,1)+nearest; [q,qq]=intersect(x(:,1:end-1),tmp,'rows'); %counting the bonds of each atom x(qq,end)=x(qq,end)+1; x=[x edge(growsite,:) length(qq)]; tmp=[tmp edge]; edge=setdiff(tmp,x(:,1:end-1),'rows'); %update edge for next growth end
Loop transformation of x, maintaining spanning, updating edge, counting bonds for ii=1:3000 xbak=x; edgebak=edge; [x,edge]=transformsquare(x,edge,nearest,NNnum); if sum(x(:,end))<sum(xbak(:,end)) x=xbak; edge=edgebak; end end
[x,edge]=transformsquare(x,edge,nearest,NNnum); • Select atoms on the surface • Check whether the remaining clusters is spanning—from one NN of deleting atom, the percolation should be confirmed • Update bonds of each atom • Update edge • Add one atom from edge
spanning=0; %check the spanning cluster while spanning==0 nx=x(x(:,end)<NNnum,1:end-1); %find the surface atom with bonds less than NNnum dsite=nx(ceil(size(nx,1)*rand),:); NNdsite=repmat(dsite,NNnum,1)+nearest; %NN of dsite nx=setdiff(x(:,1:end-1),dsite,'rows'); % delete a surface atom tmp=intersect(nx,NNdsite,'rows'); tp1=tmp(1,:); tp2=[tp1 repmat(tp1,NNnum,1)+nearest]; tp2=intersect(tp2,nx,'rows'); while size(tp1,1)<size(tp2,1) %find largest spanning ones tp1=tp2; for jj=1:size(tp1,1) tp2=[tp2 repmat(tp1(jj,:),NNnum,1)+nearest]; end tp2=intersect(tp2,nx,'rows'); end if size(tp2,1)==size(nx,1) spanning=1; %confirm percolation end end Spanning check in deletion
update edge and number total bonds %update edge and number total bonds [q,qq]=intersect(x(:,1:end-1),NNdsite,'rows'); x(qq,end)=x(qq,end)-1;% bonds update [q,qq]=intersect(x(:,1:end-1),dsite,'rows'); x(qq,:)=[]; %delete atoms %update edge edge=[edge dsite]; for ii=1:size(NNdsite) if length(intersect(repmat(NNdsite(ii,:),NNnum,1)+nearest,x(:,1:end-1),'rows'))==0 edge=setdiff(edge,NNdsite(ii,:),'rows'); %delete the edge only belongs to dsite end end
add atoms from edge growsite=ceil(length(edge)*rand); %choose one site randomly to add an atom tmp=repmat(edge(growsite,:),NNnum,1)+nearest; [q,qq]=intersect(x(:,1:end-1),tmp,'rows'); %counting the bonds of each atom x(qq,end)=x(qq,end)+1; x=[x edge(growsite,:) length(qq)]; tmp=[tmp edge]; edge=setdiff(tmp,x(:,1:end-1),'rows'); %update edge for next growth
Triangular lattice nearest =[ 0 1 0 0 -1 0 1 0 0 -1 0 0 -1 1 0 1 -1 0]; NNnum=size(nearest,1); %number of nearest bonds % structure shown for ii=1:length(x) t=[1 0]*x(ii,1)+[0.5 0.866]*x(ii,2); plot(t(1),t(2),'*') hold on end for ii=1:length(edge) t=[1 0]*edge(ii,1)+[0.5 0.866]*edge(ii,2); plot(t(1),t(2),'o') hold on end axis equal
Graphene fragments and • hexagonal lattice growth ACS nano,6,8203(2012)
The Role of Surface Oxygen in the Growth of Large Single-Crystal Graphene on Copper oxygen (O) on the Cu surface substantially decreased the graphene nucleation density by passivating Cu surface active sites. Control of surface O enabled repeatable growth of centimeter-scale single-crystal graphene domains. Oxygen also accelerated graphene domain growth and shifted the growth kinetics fromedge-attachment–limited to diffusion-limited. Oxygen-Rich Cu / Oxygen-Free Cu Science 342, 720 (2013)
nearest =[ %1 NN %2 0 1 -1 -1 1 1 -1 0 1 0 0 -1 ]; NNnum=size(nearest,1)/2; %number of nearest bonds Hexagonal lattice growth x=[0 0 1 0]; %initial edge=[0 1 2 1 1 2 1 0 2 ]; tmp=repmat(edge(growsite,:),NNnum,1)+nearest; %square lattice tmp=[ones(NNnum,1)*edge(growsite,1:2)+nearest(edge(growsite,end):2:end,1:2) ones(NNnum,1)*mod(edge(growsite,end),2)+1]; for ii=1:length(x) if x(ii,3)==1 plot(x(ii,1)+0.5*x(ii,2),0.866*x(ii,2),'*') else plot(x(ii,1)+0.5*x(ii,2)-1,0.866*x(ii,2)-1/1.732,'r*') end hold on end
Magic structures of BCC/FCC clusters Stacking Principle and Magic Sizes of Transition Metal Nanoclusters Based on Generalized Wulff Construction, PRL 111, 115501 (2013)
Searching possible BCC/FCC clusters FCC basis=[ 0 0.5 0.5 0.5 0 0.5 0.5 0.5 0 ]; nearest =[ -1 0 0 -1 0 1 -1 1 0 0 -1 0 0 -1 1 0 0 -1 0 0 1 0 1 -1 0 1 0 1 -1 0 1 0 -1 1 0 0 ]; BCC basis=[ 0.5 0.5 -0.5 -0.5 0.5 0.5 0.5 -0.5 0.5 ]; nearest =[ -1 -1 -1 -1 0 0 0 -1 0 0 0 -1 0 0 1 0 1 0 1 0 0 1 1 1 ]; x(:,1:end-1)*basis
Diamond fragments Science 299, 96 (2003);PRL, 103,047402(2009)
nearest =[ %1 NN %2 0 1 -1 -1 1 1 -1 0 1 0 0 -1 ]; NNnum=size(nearest,1)/2; Diamond lattice growth x=[0 0 1 0]; edge=[0 1 2 1 1 2 1 0 2 ]; nearest =[ %1 NN %2 -1 0 0 %2 1 0 0 %1 0 -1 0 %2 0 1 0 0 0 -1 %2 0 0 1 0 0 0 %2 0 0 0 ]; NNnum=size(nearest,1)/2; tmp=[ones(NNnum,1)*edge(growsite,1:2)+nearest(edge(growsite,end):2:end,1:2) ones(NNnum,1)*mod(edge(growsite,end),2)+1]; x=[0 0 0 1 0]; edge=[ -1 0 0 2 0 -1 0 2 0 0 -1 2 0 0 0 2 ]; tmp=[ones(NNnum,1)*edge(growsite,1:3)+nearest(edge(growsite,end):2:end,:) ones(NNnum,1)*mod(edge(growsite,end),2)+1];
xyztran.m function y=xyztran(x) % transfer Direct into Cart basis=[ 0.5 0.5 0 0 0.5 0.5 0.5 0 0.5 ]; for pp=1:length(x) ii=x(pp,1); jj=x(pp,2); kk=x(pp,3); if x(pp,4)==1 xcart(pp,1)=ii*basis(1,1)+jj*basis(2,1)+kk*basis(3,1); xcart(pp,2)=ii*basis(1,2)+jj*basis(2,2)+kk*basis(3,2); xcart(pp,3)=ii*basis(1,3)+jj*basis(2,3)+kk*basis(3,3); else xcart(pp,1)=0.25+ii*basis(1,1)+jj*basis(2,1)+kk*basis(3,1); xcart(pp,2)=0.25+ii*basis(1,2)+jj*basis(2,2)+kk*basis(3,2); xcart(pp,3)=0.25+ii*basis(1,3)+jj*basis(2,3)+kk*basis(3,3); end end y=xcart*3.5538;
Magic structures of diamond clusters PRB 83, 205314 (2011)
the simplex method m >=1 and n <=2m + 2. The key task is to determine the lower limit of n for a certain m, for which it is difficult to find out the expected inequalities. (i) start from an arbitrary configuration of XmHn (n <=2m + 2), allowing X atoms on the surface to walk randomly in the crystal lattice and saturate the configuration with H atoms where necessary, and (ii) accept the new configuration when the H-atom number is nonincreasing, otherwise the new geometry will be accepted with the probability of 1/|dn|, where dnis the increment of the H-atom number.
Ising model The simplest Ising model assumes an interaction only between nearest neighbors: Ernst Ising For a certain J, the lowest energy? the corresponding structure?
Optimization (Page 475) Simulated Annealing Minimization s ← s0; e ← E(s) // Initial state, energy. sbest ← s; ebest ← e // Initial "best" solution k ← 0 // Energy evaluation count. while k < kmax and e > emax // While time left & not good enough: T ← temperature(k/kmax) // Temperature calculation. snew ← neighbour(s) // Pick some neighbour. enew ← E(snew) // Compute its energy. if P(e, enew, T) > random() then // Should we move to it? s ← snew; e ← enew // Yes, change state. if e < ebest then // Is this a new best? sbest ← snew; ebest ← enew // Save 'new neighbour' to 'best found'. k ← k + 1 // One more evaluation done return sbest // Return the best solution found.
Homework Final stable states of square lattices under Ising model with Simulated Annealing. Sending to 17273799@qq.com when ready For lecture notes, refer to http://www.compphys.cn/~xbyang/