Oasis3 4.0.2
updtim.f
Go to the documentation of this file.
00001       SUBROUTINE updtim (kiter)
00002 C****
00003 C               *****************************
00004 C               * OASIS ROUTINE  -  LEVEL 1 *
00005 C               * -------------     ------- *
00006 C               *****************************
00007 C
00008 C**** *updtim*  - Update time
00009 C
00010 C     Purpose:
00011 C     -------
00012 C     Increment date since run start
00013 C
00014 C**   Interface:
00015 C     ---------
00016 C       *CALL*  *updtim (kiter)*
00017 C
00018 C     Input:
00019 C     -----
00020 C                kiter : iteration number
00021 C
00022 C     Output:
00023 C     ------
00024 C     None
00025 C
00026 C     Workspace:
00027 C     ---------
00028 C                ilmoi  : work array for calendar months length (integer 1D)
00029 C
00030 C     Externals:
00031 C     ---------
00032 C     calend
00033 C
00034 C     Reference:
00035 C     ---------
00036 C     See OASIS manual (1995) 
00037 C
00038 C     History:
00039 C     -------
00040 C       Version   Programmer     Date      Description
00041 C       -------   ----------     ----      -----------  
00042 C       1.0       L. Terray      94/01/01  created
00043 C       2.0       L. Terray      95/09/01  modified: new structure
00044 C       2.3       S. Valcke      99/04/30  added: printing levels
00045 C
00046 C %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
00047 C
00048 C* ---------------- Include files and use of modules---------------------------
00049 C
00050       USE mod_unit
00051       USE mod_parameter
00052       USE mod_timestep
00053       USE mod_calendar
00054       USE mod_printing
00055 C
00056 C* ---------------------------- Local declarations ----------------------
00057 C
00058       INTEGER (kind=ip_intwp_p) ilmoi(12)
00059 C
00060 C* ---------------------------- Local functions -------------------------
00061 C
00062 C* - Time functions
00063 C            ncth  --->>> turn seconds into hours
00064 C
00065       ncth(ksec) = ksec / 3600
00066 C
00067 C* ---------------------------- Poema verses ----------------------------
00068 C
00069 C %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
00070 C
00071 C*    1. Initializations
00072 C        ---------------
00073 C
00074       IF (nlogprt .GE. 2) THEN
00075           WRITE (UNIT = nulou,FMT = *)' '
00076           WRITE (UNIT = nulou,FMT = *)'      ROUTINE updtim  -  Level 1'
00077           WRITE (UNIT = nulou,FMT = *)'      **************     *******'
00078           WRITE (UNIT = nulou,FMT = *)' '
00079           WRITE (UNIT = nulou,FMT = *) 
00080      $    ' Increment model date since run start '
00081           WRITE (UNIT = nulou,FMT = *)' '
00082           CALL FLUSH(nulou)
00083       ENDIF
00084       ilmoi(:)=0
00085       IF (lg_oasis_field) THEN
00086 C
00087 C* Check if we go to next day
00088 C
00089 C* Simulated time in seconds
00090 C
00091       isecond = kiter * nstep
00092       zsecond = float (isecond)
00093 C
00094 C* Get number of days completed so far
00095 C
00096       iday = int ((zsecond+0.5) / 86400.)
00097 C
00098 C* Get seconds gone for current day
00099 C
00100       idaysec = iday * 86400
00101       ihour = ncth (isecond - idaysec)
00102 C
00103 C
00104 C*    2. Get time data
00105 C        -------------
00106 C
00107       CALL calend (njini, nmini, naini, iday, ncaltype, 
00108      $             njnow, nmnow, nanow, ilmoi)
00109 C
00110 C
00111 C*    3. Print current date and time
00112 C        ---------------------------
00113 C
00114 C #slo - Output reduced for nlogprt=0
00115       IF (nlogprt .GE. 1) THEN
00116          WRITE (UNIT = nulou,FMT = *) ' '
00117          WRITE (UNIT = nulou,FMT = *) 
00118      $    '               ****************** '
00119          WRITE (UNIT = nulou,FMT = *) 
00120      $    '               * Model run date * '
00121          WRITE (UNIT = nulou,FMT = *) 
00122      $    '               * -------------- * '
00123          WRITE (UNIT = nulou,FMT = *) 
00124      $    '               ****************** '
00125          WRITE (UNIT = nulou,FMT = *) ' '
00126          WRITE (UNIT = nulou,FMT = *) '            Year  --->>> ',nanow
00127          WRITE (UNIT = nulou,FMT = *) '           Month  --->>> ',nmnow
00128          WRITE (UNIT = nulou,FMT = *) '             Day  --->>> ',njnow
00129          WRITE (UNIT = nulou,FMT = *) '            Hour  --->>> ',ihour
00130          WRITE (UNIT = nulou,FMT = *) ' '
00131       ENDIF
00132 C
00133       IF (njnow .GT. 15) THEN
00134           nmone = nmnow
00135           nmtwo = 1 + MOD(nmnow,12)
00136           njone = 15
00137           njtwo = 15 + ilmoi(nmone)
00138           ndone = 15
00139           ndtwo = ilmoi(nmone)
00140           nsrec = nmnow
00141           IF (njdeb .LT. 15) THEN
00142               nmrec = nmnow + 12 * (nanow - nadeb) - nmdeb + 1
00143             ELSE 
00144               nmrec = nmnow + 12 * (nanow - nadeb) - nmdeb
00145           ENDIF 
00146         ELSE
00147           nmone = 1 + MOD(nmnow + 10,12)
00148           nmtwo = nmnow
00149           njone = 15 - ilmoi(nmone)
00150           njtwo = 15
00151           ndone = 0
00152           ndtwo = 15
00153           nsrec = nmnow - 1
00154           IF (njdeb .LT. 15) THEN 
00155               nmrec = nmnow + 12 * (nanow - nadeb) - nmdeb
00156             ELSE 
00157               nmrec = nmnow - 1 + 12 * (nanow - nadeb) - nmdeb
00158           ENDIF
00159       ENDIF
00160       ENDIF
00161 C
00162 C
00163 C*    4. End of routine
00164 C        --------------
00165 C
00166       IF (nlogprt .GE. 2) THEN
00167           WRITE (UNIT = nulou,FMT = *) ' '
00168           WRITE (UNIT = nulou,FMT = *) 
00169      $    '          --------- End of ROUTINE updtim ---------'
00170           CALL FLUSH (nulou)
00171       ENDIF
00172       RETURN
00173       END
00174 
00175 
 All Data Structures Namespaces Files Functions Variables Defines