subroutine gbanalyse(eavg,mavg,ngb,misavg) c c adr 20 ii 01 c c this subroutine analyses the character of grain boundaries c in order to track their average energy, mobility c include 'common.f' c c algorithm = scan all sites; for those with unlike NN c accumulate average of energy and mobility; c each unlike pair "bond" will be counted twice, but c that will not affect the average c integer site,spin,neigh,nnspin,fixsite,nbor integer icount,k,ngb c real eavg,mavg,misavg,eavgsum,mavgsum,misavgsum c eavgsum=0. mavgsum=0. misavgsum=0. icount=0 c do 1000, site=1,mn spin=spins(site) k=likes(site,spin) if(k.lt.nbors) then do 50, nbor=1,nbors neigh=neighs(site,nbor) nnspin=spins(neigh) c gets spin of neighbor site if(nnspin.ne.spin) then eavgsum=eavgsum+qtable(spin,nnspin) mavgsum=mavgsum+mtable(spin,nnspin) misavgsum=misavgsum+rrdisor(4,spin,nnspin) icount=icount+1 c accumulate for the averages endif 50 continue endif 1000 continue c c write(*,*) "numbers in GBANALYSE" c write(*,*) 'icount,eavgsum,mavgsum,misavg' c &,icount,eavgsum,mavgsum,misavgsum c eavg=eavgsum/float(icount) mavg=mavgsum/float(icount) misavg=misavgsum/float(icount) ngb=icount/2 c write(*,*) 'eavg,mavg,ngb,misavg= ',eavg,mavg,ngb,misavg c return end