/[MITgcm]/MITgcm/pkg/cal/cal_timepassed.F
ViewVC logotype

Contents of /MITgcm/pkg/cal/cal_timepassed.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.2 - (show annotations) (download)
Thu Oct 9 04:19:19 2003 UTC (20 years, 6 months ago) by edhill
Branch: MAIN
CVS Tags: checkpoint51k_post, checkpoint62v, checkpoint57m_post, checkpoint52l_pre, checkpoint62u, hrcube4, hrcube5, checkpoint57g_pre, checkpoint62t, checkpoint57s_post, checkpoint58b_post, checkpoint57b_post, checkpoint52d_pre, checkpoint57g_post, checkpoint56b_post, checkpoint57y_post, checkpoint52j_pre, checkpoint51o_pre, checkpoint54d_post, checkpoint54e_post, checkpoint62c, checkpoint51l_post, checkpoint57r_post, checkpoint57d_post, checkpoint57i_post, checkpoint52l_post, checkpoint52k_post, checkpoint59, checkpoint58, checkpoint55, checkpoint54, checkpoint57, checkpoint56, checkpoint53, checkpoint52, checkpoint58f_post, checkpoint52f_post, checkpoint57n_post, checkpoint58d_post, checkpoint62s, checkpoint58a_post, checkpoint62r, checkpoint62q, checkpoint62p, checkpoint57z_post, checkpoint54f_post, checkpoint62a, checkpoint62g, checkpoint62f, checkpoint62e, checkpoint62d, checkpoint62k, checkpoint62j, checkpoint62i, checkpoint62h, checkpoint62o, checkpoint62n, checkpoint62m, checkpoint62l, checkpoint62w, checkpoint62z, checkpoint62y, checkpoint62x, checkpoint58y_post, checkpoint51t_post, checkpoint58t_post, checkpoint51n_post, checkpoint55i_post, checkpoint58m_post, checkpoint57l_post, checkpoint52i_pre, hrcube_1, hrcube_2, hrcube_3, checkpoint51s_post, checkpoint57t_post, checkpoint55c_post, checkpoint63g, checkpoint52e_pre, checkpoint57v_post, checkpoint57f_post, checkpoint52e_post, checkpoint51n_pre, checkpoint53d_post, checkpoint60, checkpoint61, checkpoint62, checkpoint63, checkpoint57a_post, checkpoint57h_pre, checkpoint52b_pre, checkpoint54b_post, checkpoint58w_post, checkpoint57h_post, checkpoint51l_pre, checkpoint52m_post, checkpoint57y_pre, checkpoint55g_post, checkpoint51q_post, checkpoint52b_post, checkpoint52c_post, checkpoint58o_post, checkpoint57c_post, checkpoint58p_post, checkpoint58q_post, checkpoint52f_pre, checkpoint55d_post, checkpoint58e_post, checkpoint54a_pre, checkpoint63l, checkpoint63h, checkpoint63i, checkpoint63j, checkpoint63k, checkpoint63d, checkpoint63e, checkpoint63f, checkpoint53c_post, checkpoint63a, checkpoint63b, checkpoint63c, checkpoint55d_pre, checkpoint57c_pre, checkpoint58r_post, checkpoint55j_post, checkpoint54a_post, checkpoint55h_post, checkpoint58n_post, checkpoint51r_post, checkpoint51i_post, checkpoint57e_post, checkpoint55b_post, checkpoint53a_post, checkpoint59q, checkpoint59p, checkpoint59r, checkpoint59e, checkpoint59d, checkpoint59g, checkpoint59f, checkpoint59a, checkpoint55f_post, checkpoint59c, checkpoint59b, checkpoint59m, checkpoint59l, checkpoint59o, checkpoint59n, checkpoint59i, checkpoint59h, checkpoint59k, checkpoint52d_post, checkpoint53g_post, checkpoint57p_post, checkpint57u_post, checkpoint57q_post, eckpoint57e_pre, checkpoint58k_post, checkpoint52a_pre, checkpoint62b, checkpoint58v_post, checkpoint52i_post, checkpoint52h_pre, checkpoint56a_post, checkpoint58l_post, checkpoint53f_post, checkpoint57h_done, checkpoint52j_post, checkpoint57j_post, checkpoint57f_pre, checkpoint61f, checkpoint58g_post, branch-netcdf, checkpoint58x_post, checkpoint61n, checkpoint52n_post, checkpoint53b_pre, checkpoint59j, checkpoint58h_post, checkpoint56c_post, checkpoint58j_post, checkpoint57a_pre, checkpoint55a_post, checkpoint57o_post, checkpoint51o_post, checkpoint61q, checkpoint57k_post, checkpoint53b_post, checkpoint52a_post, checkpoint57w_post, checkpoint61e, checkpoint58i_post, ecco_c52_e35, checkpoint57x_post, checkpoint58c_post, checkpoint58u_post, checkpoint51m_post, checkpoint53d_pre, checkpoint58s_post, checkpoint55e_post, checkpoint61g, checkpoint61d, checkpoint54c_post, checkpoint61b, checkpoint61c, checkpoint61a, checkpoint61o, checkpoint61l, checkpoint61m, checkpoint61j, checkpoint61k, checkpoint61h, checkpoint61i, checkpoint61v, checkpoint61w, checkpoint61t, checkpoint61u, checkpoint61r, checkpoint61s, checkpoint61p, checkpoint51p_post, checkpoint61z, checkpoint61x, checkpoint61y, checkpoint51u_post
Branch point for: branch-nonh, tg2-branch, netcdf-sm0, checkpoint51n_branch
Changes since 1.1: +3 -2 lines
 o first check-in for the "branch-genmake2" merge
 o verification suite as run on shelley (gcc 3.2.2):

Wed Oct  8 23:42:29 EDT 2003
                T           S           U           V
G D M    c        m  s        m  s        m  s        m  s
E p a R  g  m  m  e  .  m  m  e  .  m  m  e  .  m  m  e  .
N n k u  2  i  a  a  d  i  a  a  d  i  a  a  d  i  a  a  d
2 d e n  d  n  x  n  .  n  x  n  .  n  x  n  .  n  x  n  .

OPTFILE=NONE

Y Y Y Y 13 16 16 16  0 16 16 16 16 16 16 16 16 13 12  0  0 pass  adjustment.128x64x1
Y Y Y Y 16 16 16 16  0 16 16 16 16 16 16  0  0 16 16  0  0 pass  adjustment.cs-32x32x1
Y Y Y Y 16 16 16 16  0 16 16 16 16 16 16 22  0 16 16 22  0 pass  adjust_nlfs.cs-32x32x1
Y Y Y Y -- 13 13 16 16 13 13 13 13 16 16 16 16 16 16 16 16 N/O   advect_cs
Y Y Y Y -- 22 16 16 16 16 16 16 13 16 16 16 16 16 16 16 16 N/O   advect_xy
Y Y Y Y -- 13 16 13 16 16 16 16 16 16 16 22 16 16 16 16 16 N/O   advect_xz
Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 pass  aim.5l_cs
Y Y Y Y 14 16 16 16 16 16 16 16 16 13 16 16 16 16 16 13 16 pass  aim.5l_Equatorial_Channel
Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 13 16 16 13 13 16 pass  aim.5l_LatLon
Y Y Y Y 13 16 16 16 16 16 16 16 16 16 13 12 13 13 16 13 16 pass  exp0
Y Y Y Y 14 16 16 16 16 16 16 16 22 16 16 16 13 16 16 22 16 pass  exp1
Y Y Y Y 13 13 16 13 16 16 16 16 16 13 13 16 16 13 13 13 13 pass  exp2
Y Y Y Y 16 16 16 16 16 16 16 16 22 16 16 16 16 16 16 16 16 pass  exp4
Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 22 16 16 16 22 16 pass  exp5
Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 pass  front_relax
Y Y Y Y 14 16 16 13 13 16 16 13 13 16 13 13 16 12 13 13 16 pass  global_ocean.90x40x15
Y Y Y Y 10 16 16 13 13 16 13 16 16 13 13 13 13 16 16 13 16 FAIL  global_ocean.cs32x15
Y Y Y Y  6 11 12 13 13 12 13 16 13  9  9  9  9 10  9  9 11 FAIL  global_ocean_pressure
Y Y Y Y 14 16 16 13 16 16 16 13 13 13 13 13 16 12 16 13 16 pass  global_with_exf
Y Y Y Y 14 16 16 16 16 16 16 16 16 11 13 22 13 16 16  9 16 pass  hs94.128x64x5
Y Y Y Y 13 16 16 16 16 16 16 16 16 11 16 16 16 13 16 22 13 pass  hs94.1x64x5
Y Y Y Y 14 16 16 16 16 16 16 16 16 13 16 13 13 16 16 22 13 pass  hs94.cs-32x32x5
Y Y Y Y 10 10 16 13 13 16 16 16 22 16 13 13 13 13 13 22 13 FAIL  ideal_2D_oce
Y Y Y Y  8 16 16 16 16 16 16 16 16 13 13  8 16 16 16 16 16 FAIL  internal_wave
Y Y Y Y 14 16 16 16 16 16 16 16 16 13 13 22 13 13 13 22 16 pass  inverted_barometer
Y Y Y Y 12 16 16 16 16 16 16 16 16 16 13 12 13 13 13 13 13 FAIL  lab_sea
Y Y Y Y 11 16 16 16 16 16 16 16 13 13 13 12 13 16 13 12 13 FAIL  natl_box
Y Y Y Y 16 16 16 16 16 16 16 16 22 16 16 16 16 16 16 16 16 pass  plume_on_slope
Y Y Y Y 13 16 16 16 16 13 16 16 16 16 16 16 16 13 16 16 16 pass  solid-body.cs-32x32x1

1 C $Header: /u/u3/gcmpack/MITgcm/pkg/cal/cal_timepassed.F,v 1.1.20.2 2003/10/07 20:46:37 adcroft Exp $
2 C $Name: $
3
4 #include "CAL_OPTIONS.h"
5
6 subroutine cal_TimePassed(
7 I initialdate,
8 I finaldate,
9 O numdays,
10 I mythid
11 & )
12
13 c ==================================================================
14 c SUBROUTINE cal_TimePassed
15 c ==================================================================
16 c
17 c o Calculate the time that passed between initialdate and
18 c finaldate.
19 c
20 c started: Christian Eckert eckert@mit.edu 30-Jun-1999
21 c
22 c changed: Christian Eckert eckert@mit.edu 29-Dec-1999
23 c
24 c - restructured the original version in order to have a
25 c better interface to the MITgcmUV.
26 c
27 c Christian Eckert eckert@mit.edu 03-Feb-2000
28 c
29 c - Introduced new routine and function names, cal_<NAME>,
30 c for verion 0.1.3.
31 c
32 c ==================================================================
33 c SUBROUTINE cal_TimePassed
34 c ==================================================================
35
36 implicit none
37
38 c == global variables ==
39
40 #include "cal.h"
41
42 c == routine arguments ==
43
44 integer initialdate(4)
45 integer finaldate(4)
46 integer numdays(4)
47 integer mythid
48
49 c == local variables ==
50
51 integer yi,yf
52 integer mi,mf
53 integer di,df
54 integer si,sf
55 integer li,lf
56 integer wi,wf
57 integer cdi,cdf
58 integer csi,csf
59 integer ndays
60 integer nsecs
61 integer hhmmss
62 integer imon
63 integer iyr
64 integer ierr
65
66 logical swap
67 logical caldates
68 logical nothingtodo
69
70 c == external ==
71
72 integer cal_IsLeap
73 external cal_IsLeap
74
75 c == end of interface ==
76
77 nothingtodo = .false.
78
79 c Initialise output.
80 numdays(1) = 0
81 numdays(2) = 0
82 numdays(3) = 0
83 numdays(4) = -1
84
85 if ((initialdate(4) .gt. 0) .eqv.
86 & ( finaldate(4) .gt. 0)) then
87
88 caldates = (initialdate(4) .gt. 0) .and.
89 & ( finaldate(4) .gt. 0)
90
91 c Check relation between initial and final dates.
92 if (initialdate(1) .eq. finaldate(1)) then
93 if (initialdate(2) .eq. finaldate(2)) then
94 nothingtodo = .true.
95 else if (initialdate(2) .gt. finaldate(2)) then
96 swap = .true.
97 else
98 swap = .false.
99 endif
100 else if (initialdate(1) .gt. finaldate(1)) then
101 swap = .true.
102 else
103 swap = .false.
104 endif
105
106 if (.not. nothingtodo) then
107
108 if (swap) then
109 call cal_ConvDate( finaldate,yi,mi,di,si,li,wi,mythid )
110 call cal_ConvDate( initialdate,yf,mf,df,sf,lf,wf,mythid )
111 else
112 call cal_ConvDate( initialdate,yi,mi,di,si,li,wi,mythid )
113 call cal_ConvDate( finaldate,yf,mf,df,sf,lf,wf,mythid )
114 endif
115
116 c Determine the time interval.
117 if (.not. caldates) then
118 ndays = df - di
119 nsecs = sf - si
120 if (nsecs .lt. 0) then
121 nsecs = nsecs + secondsperday
122 ndays = ndays - 1
123 endif
124 ndays = ndays + nsecs/secondsperday
125 nsecs = mod(nsecs,secondsperday)
126 else
127 si = si + (di-1)*secondsperday
128 sf = sf + (df-1)*secondsperday
129 cdi = 0
130 do imon = 1,mod(mi-1,12)
131 cdi = cdi + ndaymonth(imon,li)
132 enddo
133 csi = si
134 cdf = 0
135 do imon = 1,mod(mf-1,12)
136 cdf = cdf + ndaymonth(imon,lf)
137 enddo
138 csf = sf
139
140 if (yi .eq. yf) then
141 ndays = (cdf + csf/secondsperday) -
142 & (cdi + csi/secondsperday)
143 nsecs = (csf - (csf/secondsperday)*secondsperday) -
144 & (csi - (csi/secondsperday)*secondsperday)
145 if (nsecs .lt. 0) then
146 nsecs = nsecs + secondsperday
147 ndays = ndays - 1
148 endif
149 else
150 ndays = (ndaysnoleap - 1) + cal_IsLeap( yi, mythid ) -
151 & cdi - ndaymonth(mi,li)
152 do iyr = yi+1,yf-1
153 ndays = ndays + (ndaysnoleap - 1) +
154 & cal_IsLeap( iyr, mythid )
155 enddo
156 ndays = ndays + cdf
157 csi = ndaymonth(mi,li)*secondsperday - csi
158 nsecs = csi + csf
159 endif
160 endif
161
162 c Convert to calendar format.
163 numdays(1) = ndays + nsecs/secondsperday
164 nsecs = mod(nsecs,secondsperday)
165 hhmmss = nsecs/secondsperminute
166 numdays(2) = hhmmss/minutesperhour*10000 +
167 & mod(hhmmss,minutesperhour)*100 +
168 & mod(nsecs,secondsperminute)
169 if (swap) then
170 numdays(1) = -numdays(1)
171 numdays(2) = -numdays(2)
172 endif
173
174 else
175 c Dates are equal.
176 endif
177
178 else
179
180 ierr = 501
181 call cal_PrintError( ierr, mythid )
182 stop ' stopped in cal_TimePassed'
183
184 endif
185
186 return
187 end
188

  ViewVC Help
Powered by ViewVC 1.1.22