C $Header: /u/gcmpack/MITgcm/pkg/monitor/mon_solution.F,v 1.10 2009/12/29 19:51:43 jmc Exp $ C $Name: $ #include "MONITOR_OPTIONS.h" C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| CBOP C !ROUTINE: MON_SOLUTION C !INTERFACE: SUBROUTINE MON_SOLUTION( I statsTemp, I myTime, myIter, myThid ) C !DESCRIPTION: C Checks that the solutions is within bounds C !USES: IMPLICIT NONE #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "DYNVARS.h" #include "GRID.h" #include "MONITOR.h" C !INPUT PARAMETERS: _RL statsTemp(*) _RL myTime INTEGER myIter INTEGER myThid CEOP C !LOCAL VARIABLES: CHARACTER*(MAX_LEN_MBUF) msgBuf _RL tMin,tMax,tMean,tSD,tDel2,tVol IF ( statsTemp(1) .LE. statsTemp(2) ) THEN C Take statistics from the input argument "statsTemp": tMin = statsTemp(1) tMax = statsTemp(2) ELSE C Statistics for T CALL MON_CALC_STATS_RL( I Nr, theta, hFacC, maskInC, rA, drF, O tMin, tMax, tMean, tSD, tDel2, tVol, I myThid ) ENDIF IF ( (tMax-tMin).GT.monSolutionMaxRange ) THEN _BEGIN_MASTER(myThid) WRITE(msgBuf,'(A,1P2E11.3)') & 'SOLUTION IS HEADING OUT OF BOUNDS: tMin,tMax=',tMin,tMax CALL PRINT_MESSAGE(msgBuf,errorMessageUnit,SQUEEZE_RIGHT,myThid) WRITE(msgBuf,'(2A,1PE11.3,A)') ' exceeds allowed range ', & '(monSolutionMaxRange=', monSolutionMaxRange,')' CALL PRINT_MESSAGE(msgBuf,errorMessageUnit,SQUEEZE_RIGHT,myThid) WRITE(msgBuf,'(A,I10)') & 'MON_SOLUTION: STOPPING CALCULATION at Iter=', myIter CALL PRINT_MESSAGE(msgBuf,errorMessageUnit,SQUEEZE_RIGHT,myThid) _END_MASTER(myThid) CALL ALL_PROC_DIE( myThid ) STOP & 'ABNORMAL END: S/R MON_SOLUTION, stops due to EXTREME Pot.Temp' ENDIF RETURN END