C $Header: /home/ubuntu/mnt/e9_copy/MITgcm_contrib/natl_12/code/mon_advcfl.F,v 1.1 2003/08/05 21:22:44 cnh Exp $ C $Name: $ #include "MONITOR_OPTIONS.h" SUBROUTINE MON_ADVCFL( I label, U, rDx, dT, I myThid ) C /==========================================================\ C | SUBROUTINE MON_ADVCFL | C | o Calculates maximum CFL number | C |==========================================================| C \==========================================================/ IMPLICIT NONE C === Global data === #include "SIZE.h" #include "EEPARAMS.h" #include "MONITOR.h" C === Routine arguments === CHARACTER*(*) label _RL U(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) _RS rDx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL dT INTEGER myThid C === Local variables ==== INTEGER bi,bj,I,J,K INTEGER maxI, maxJ, maxK, IG, JG, maxBi, maxBj _RL tmpVal,theMax, myMax theMax=0. maxI = 0 maxJ = 0 maxK = 0 maxBi = 0 maxBj = 0 DO bj=myByLo(myThid),myByHi(myThid) DO bi=myBxLo(myThid),myBxHi(myThid) DO K=1,Nr DO J=1,sNy DO I=1,sNx tmpVal=abs(U(I,J,K,bi,bj))*rDx(I,J,BI,BJ)*dT IF ( tmpVal .GT. theMax ) THEN maxI = I maxJ = J maxK = K maxBi = bi maxBj = bj ENDIF theMax=max(theMax,tmpVal) ENDDO ENDDO ENDDO ENDDO ENDDO myMax = theMax _GLOBAL_MAX_R8(theMax,myThid) IF ( theMax .EQ. myMax ) THEN IG = myXGlobalLo+maxI-1+(maxBi-1)*sNx JG = myYGlobalLo+maxJ-1+(maxBj-1)*sNy CALL MON_OUT_I( '_loci', IG, mon_foot_max, myThid ) CALL MON_OUT_I( '_locj', JG, mon_foot_max, myThid ) CALL MON_OUT_I( '_lock', maxK, mon_foot_max, myThid ) ENDIF CALL MON_OUT_RL( label, theMax, mon_foot_max ,myThid) RETURN END