C $Header: /u/gcmpack/MITgcm/pkg/cal/cal_time2dump.F,v 1.4 2016/06/30 22:53:21 jmc Exp $ C $Name: $ #include "CAL_OPTIONS.h" SUBROUTINE CAL_TIME2DUMP( I phase, freq, step, U time2write, I myTime, myIter, myThid ) c ================================================================== C-- Convert approximate months (30-31 days) and years (360-372 days) C to exact calendar months and years. c ================================================================== IMPLICIT NONE c == global variables == #include "cal.h" c == routine arguments == _RL phase, freq, step LOGICAL time2write _RL myTime INTEGER myIter INTEGER myThid c == local variables == INTEGER thisDate(4), prevDate(4) _RL posFreq _RL shTime, prTime IF ( calendarDumps .AND. freq .NE. 0. ) THEN C- Same as in FCT DIFF_PHASE_MULTIPLE: c IF ( myTime+step .GE. phase+baseTime ) THEN C- should compare to phase+baseTime (above), but would need PARAMS.h ; C choose to disable this condition for negative time: IF ( myTime+step.GE.phase .OR. myTime.LT.0. ) THEN posFreq = ABS(freq) C- First determine calendar dates for this and previous time step. shTime = myTime - phase prTime = shTime - step CALL CAL_GETDATE( myIter, shTime, thisDate, myThid ) CALL CAL_GETDATE( myIter, prTime, prevDate, myThid ) C- Monthly Freq: IF ( posFreq.GE.2592000. .AND. posFreq.LE.2678400. ) THEN time2write = .FALSE. IF ( (thisdate(1)-prevdate(1)).GT.50 ) time2write=.TRUE. ENDIF C- Yearly Freq: IF ( posFreq.GE.31104000. .AND. posFreq.LE.31968000. ) THEN time2write = .FALSE. IF ( (thisdate(1)-prevdate(1)).GT.5000 ) time2write=.TRUE. ENDIF ENDIF ENDIF RETURN END