source: CPL/oasis3/trunk/src/mod/oasis3/src/updtim.f @ 1677

Last change on this file since 1677 was 1677, checked in by aclsce, 12 years ago

Imported oasis3 (tag ipslcm5a) from cvs server to svn server (igcmg project).

File size: 4.7 KB
Line 
1      SUBROUTINE updtim (kiter)
2C****
3C               *****************************
4C               * OASIS ROUTINE  -  LEVEL 1 *
5C               * -------------     ------- *
6C               *****************************
7C
8C**** *updtim*  - Update time
9C
10C     Purpose:
11C     -------
12C     Increment date since run start
13C
14C**   Interface:
15C     ---------
16C       *CALL*  *updtim (kiter)*
17C
18C     Input:
19C     -----
20C                kiter : iteration number
21C
22C     Output:
23C     ------
24C     None
25C
26C     Workspace:
27C     ---------
28C                ilmoi  : work array for calendar months length (integer 1D)
29C
30C     Externals:
31C     ---------
32C     calend
33C
34C     Reference:
35C     ---------
36C     See OASIS manual (1995) 
37C
38C     History:
39C     -------
40C       Version   Programmer     Date      Description
41C       -------   ----------     ----      ----------- 
42C       1.0       L. Terray      94/01/01  created
43C       2.0       L. Terray      95/09/01  modified: new structure
44C       2.3       S. Valcke      99/04/30  added: printing levels
45C
46C %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
47C
48C* ---------------- Include files and use of modules---------------------------
49C
50      USE mod_kinds_oasis
51      USE mod_parameter
52      USE mod_timestep
53      USE mod_unit
54      USE mod_calendar
55      USE mod_printing
56C
57C* ---------------------------- Local declarations ----------------------
58C
59      INTEGER (kind=ip_intwp_p) ilmoi(12)
60C
61C* ---------------------------- Local functions -------------------------
62C
63C* - Time functions
64C            ncth  --->>> turn seconds into hours
65C
66      ncth(ksec) = ksec / 3600
67C
68C* ---------------------------- Poema verses ----------------------------
69C
70C %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
71C
72C*    1. Initializations
73C        ---------------
74C
75      IF (nlogprt .GE. 1) THEN
76          WRITE (UNIT = nulou,FMT = *) ' '
77          WRITE (UNIT = nulou,FMT = *) ' '
78          WRITE (UNIT = nulou,FMT = *) 
79     $    '           ROUTINE updtim  -  Level 1'
80          WRITE (UNIT = nulou,FMT = *) 
81     $    '           **************     *******'
82          WRITE (UNIT = nulou,FMT = *) ' '
83          WRITE (UNIT = nulou,FMT = *) 
84     $    ' Increment model date since run start '
85          WRITE (UNIT = nulou,FMT = *) ' '
86          WRITE (UNIT = nulou,FMT = *) ' '
87      ENDIF
88      ilmoi(:)=0
89      IF (lg_oasis_field) THEN
90C
91C* Check if we go to next day
92C
93C* Simulated time in seconds
94C
95      isecond = kiter * nstep
96      zsecond = float (isecond)
97C
98C* Get number of days completed so far
99C
100      iday = int ((zsecond+0.5) / 86400.)
101C
102C* Get seconds gone for current day
103C
104      idaysec = iday * 86400
105      ihour = ncth (isecond - idaysec)
106C
107C
108C*    2. Get time data
109C        -------------
110C
111      CALL calend (njini, nmini, naini, iday, ncaltype, 
112     $             njnow, nmnow, nanow, ilmoi)
113C
114C
115C*    3. Print current date and time
116C        ---------------------------
117C
118      WRITE (UNIT = nulou,FMT = *) ' '
119      WRITE (UNIT = nulou,FMT = *) 
120     $    '               ****************** '
121      WRITE (UNIT = nulou,FMT = *) 
122     $    '               * Model run date * '
123      WRITE (UNIT = nulou,FMT = *) 
124     $    '               * -------------- * '
125      WRITE (UNIT = nulou,FMT = *) 
126     $    '               ****************** '
127      WRITE (UNIT = nulou,FMT = *) ' '
128      WRITE (UNIT = nulou,FMT = *) '            Year  --->>> ',nanow
129      WRITE (UNIT = nulou,FMT = *) '           Month  --->>> ',nmnow
130      WRITE (UNIT = nulou,FMT = *) '             Day  --->>> ',njnow
131      WRITE (UNIT = nulou,FMT = *) '            Hour  --->>> ',ihour
132      WRITE (UNIT = nulou,FMT = *) ' '
133      IF (njnow .GT. 15) THEN
134          nmone = nmnow
135          nmtwo = 1 + MOD(nmnow,12)
136          njone = 15
137          njtwo = 15 + ilmoi(nmone)
138          ndone = 15
139          ndtwo = ilmoi(nmone)
140          nsrec = nmnow
141          IF (njdeb .LT. 15) THEN
142              nmrec = nmnow + 12 * (nanow - nadeb) - nmdeb + 1
143            ELSE
144              nmrec = nmnow + 12 * (nanow - nadeb) - nmdeb
145          ENDIF
146        ELSE
147          nmone = 1 + MOD(nmnow + 10,12)
148          nmtwo = nmnow
149          njone = 15 - ilmoi(nmone)
150          njtwo = 15
151          ndone = 0
152          ndtwo = 15
153          nsrec = nmnow - 1
154          IF (njdeb .LT. 15) THEN
155              nmrec = nmnow + 12 * (nanow - nadeb) - nmdeb
156            ELSE
157              nmrec = nmnow - 1 + 12 * (nanow - nadeb) - nmdeb
158          ENDIF
159      ENDIF
160      ENDIF
161C
162C
163C*    4. End of routine
164C        --------------
165C
166      IF (nlogprt .GE. 1) THEN
167          WRITE (UNIT = nulou,FMT = *) ' '
168          WRITE (UNIT = nulou,FMT = *) 
169     $    '          --------- End of routine updtim ---------'
170          CALL FLUSH (nulou)
171      ENDIF
172      RETURN
173      END
174
175
Note: See TracBrowser for help on using the repository browser.