C*********************************************************************** SUBROUTINE ITECHECK C*********************************************************************** c keeps track of cpu time consumption c size of impactor lists c max pre-impact dist leading to an impactd INCLUDE 'ssbox.inc' WRITE(IDEV6,*) '*******************************************' CALL CPU(TIME2) CPU_TOT=TIME2-TALKU DCPU=CPU_TOT-CPU_TOT0 DTSIM=TIME-TIMEOLD C FREK = IMPACTS/PART/ORBIT colls=coll-collolde FREK=COLLS/DTSIM*2./LKM*PERIOD C ********************************************************** c CPU TIMES FOR DIFFERENT PORTIONS OF THE CODE C ********************************************************** C ********************************************************** C-------------------------------------- C after the previous call to itecheck c nearby pairs DTR1=(CPU_LIM-CPU_LIM0)/DCPU*100. c borders DTRB=(CPU_RET-CPU_RET0)/DCPU*100. c impacts DTD3=(CPU_INT-CPU_INT0)/DCPU*100. DTSAV=(CPU_SAV-CPU_SAV0)/DCPU*100. DTPA=(CPU_POTA-CPU_POTA0)/DCPU*100. DTPB=(CPU_POTB-CPU_POTB0)/DCPU*100. c selfgravity DTGR=(CPU_SG-CPU_SG0)/DCPU*100. c total counted dtsub=dtr1+dtpa+dtpb+dtrb+dtd3+dtgr+dtsav C-------------------------------------- C cumulative from the beginning of the simulation TR1=(CPU_LIM)/CPU_TOT*100. TPA=(CPU_POTA)/CPU_TOT*100. TPB=(CPU_POTB)/CPU_TOT*100. TRB=(CPU_RET)/CPU_TOT*100. TD3=(CPU_INT)/CPU_TOT*100. TGR=(CPU_SG)/CPU_TOT*100. TSAV=(CPU_SAV)/CPU_TOT*100. tsub=tr1+tpa+tpb+trb+td3+tgr+tsav orb=time/period write(idev6,*) ' ORB,COLL ',orb,coll WRITE(IDEV6,769) DCPU,CPUTOT,DTSAV,TSAV, + DTR1,TR1,DTPA,TPA,DTPB,TPB,DTRB,TRB, + DTD3,TD3,DTGR,TGR,dtsub,tsub 769 FORMAT( ' DT:SYS = ',F10.3,' TOT:SYS = ',F10.3,/ + ,' SAV = ',F10.3,' SAV = ',F10.3,/ + ,' RJ1 = ',F10.3,' RJ1 = ',F10.3,/ + ,' PA = ',F10.3,' PA = ',F10.3,/ + ,' PB = ',F10.3,' PB = ',F10.3,/ + ,' RET = ',F10.3,' RET = ',F10.3,/ + ,' INT = ',F10.3,' INT = ',F10.3,/ + ,' SG = ',F10.3,' SG = ',F10.3,/ + ,' SUBTOT = ',F10.3,' SUBTOT = ',F10.3,/) TIMEOLD=TIME collolde=coll CPU_TOT0=CPU_TOT CPU_LIM0=CPU_LIM CPU_RET0 =CPU_RET CPU_POTA0=CPU_POTA CPU_POTB0=CPU_POTB CPU_INT0 =CPU_INT CPU_SG0 =CPU_SG CPU_SAV0 =CPU_SAV C ********************************************************** C POTENTIAL IMPACT PAIR LISTS C ********************************************************** c IXL = number of calls since last itecheck c IXMIN,IXMAX _ min and max number of potential pairs c IXK = mean number of IF(IXL.NE.0) IXK=IXS/IXL WRITE(IDEV6,*)' IXL,IXMIN,IXK,IXMAX' WRITE(IDEV6,760) IXL,IXMIN,IXK,IXMAX 760 FORMAT(4I12) 762 FORMAT(I6,3F12.4) ero1k=0. if(ero1l.gt.0) ERO1K=ERO1S/ERO1L c NSAV=current number of ongoing impacts c ALFMAX= max overlap depth in current impacts c ERO1MAX = max pre-step distance still leading to impact c RAJA1 = current limiting radii for near pairs WRITE(IDEV6,*)' NSAV, ALFMAX, ERO1MAX, RAJA1' WRITE(IDEV6,762) NSAV,ALFMAX,ERO1MAX,RAJA1 C******** CHANGE LIMIT-DISTANCES IF(ERO1MAX.GT..5*RAJA1) THEN RAJA1=3.*ERO1MAX ELSE RAJA1=2.*ERO1MAX ENDIF IF(RAJA1.LT.RAJA1MIN) THEN RAJA1=RAJA1MIN ENDIF IF(RAJA1.GT.RAJA1MAX) THEN RAJA1=RAJA1MAX ENDIF C******** OVERLAPPS,BORDER-CROSSINGS AND SLOW IMPACTS c MSIS = overlaps since the beginning of run c npa,npy = radial crossings c nha,nhy = tangential crossings WRITE(IDEV6,*)' MSIS,NPA,NPY,NHA,NHY' WRITE(IDEV6,763) MSIS,NPA,NPY,NHA,NHY c slow impacts c v_normal < f*v_critical c f=0.5,1.,2.,5.,10. WRITE(IDEV6,*)' NHIDAS: 0.5 1 2 5 10' WRITE(IDEV6,763) NHIDAS05,NHIDAS,NHIDAS2,NHIDAS5,NHIDAS10 WRITE(IDEV6,*) ' ' 763 FORMAT(6I12) IXL=0 IXS=0 IXMIN=100000 IXMAX=0 ERO1MIN=100000. ERO1MAX=0. ERO1S=0. ERO1L=0. RETURN END