source: trunk/WRF.COMMON/WRFV2/external/esmf_time_f90/diff_Test1

Last change on this file was 11, checked in by aslmd, 14 years ago

spiga@svn-planeto:ajoute le modele meso-echelle martien

File size: 54.5 KB
Line 
115c15
2<   LOGICAL :: WRF_ERROR_FATAL_PRINT = .FALSE.
3---
4>   LOGICAL :: WRF_ERROR_FATAL_PRINT = .TRUE. !FALSE.
577,78c77,78
6<     it_MM = 1
7<     it_DD = 1
8---
9>     it_MM = 1  ! same as Earth more simple
10>     it_DD = 1  ! same as Earth more simple
11366,367c366,367
12<     iop1_t_MM = 1
13<     iop1_t_DD = 1
14---
15>     iop1_t_MM = 1  !see above
16>     iop1_t_DD = 1  !see above
17382,383c382,383
18<     iop2_t_MM = 1
19<     iop2_t_DD = 1
20---
21>     iop2_t_MM = 1  !see above
22>     iop2_t_DD = 1  !see above
23398,399c398,399
24<     ires_t_MM = 1
25<     ires_t_DD = 1
26---
27>     ires_t_MM = 1  !see above
28>     ires_t_DD = 1  !see above
29921,922c921,922
30<     istart_MM = 1
31<     istart_DD = 1
32---
33>     istart_MM = 1  !see above
34>     istart_DD = 1  !see above
35927,928c927,928
36<     istop_MM = 1
37<     istop_DD = 1
38---
39>     istop_MM = 1  !see above
40>     istop_DD = 1  !see above
411322c1322
42< !  PRINT *,'DEBUG:  back from WRFU_Initialize(), rc = ',rc
43---
44>   PRINT *,'DEBUG:  back from WRFU_Initialize(), rc = ',rc
451331,1332c1331,1332
46<   CALL test_print( t_yy=2001,  t_mm=12,  t_dd=3,  t_h=1,  t_m=20,  t_s=10, &
47<     res_str='2001-12-03_01:20:10', testname='printT_1' )
48---
49>   CALL test_print( t_yy=2025,  t_mm=03,  t_dd=23,  t_h=1,  t_m=20,  t_s=10, &
50>     res_str='2025-03-23_01:20:10', testname='printT_1' )
511334,1366c1334,1369
52<   CALL test_print( t_yy=0,  t_mm=1,  t_dd=1,  t_h=0,  t_m=0,  t_s=0, &
53<     res_str='0000-01-01_00:00:00', testname='printT_2' )
54<   CALL test_print( t_yy=2003,  t_mm=12,  t_dd=30,  t_h=23,  t_m=59,  t_s=50, &
55<     res_str='2003-12-30_23:59:50', testname='printT_3' )
56<   CALL test_print( t_yy=2003,  t_mm=12,  t_dd=31,  t_h=23,  t_m=59,  t_s=50, &
57<     res_str='2003-12-31_23:59:50', testname='printT_4' )
58<   CALL test_print( t_yy=2004,  t_mm=12,  t_dd=30,  t_h=23,  t_m=59,  t_s=50, &
59<     res_str='2004-12-30_23:59:50', testname='printT_5' )
60<   CALL test_print( t_yy=2004,  t_mm=12,  t_dd=31,  t_h=23,  t_m=59,  t_s=50, &
61<     res_str='2004-12-31_23:59:50', testname='printT_6' )
62< !$$$  NOTE that this fails -- need to fix up output string for negative year
63< !  CALL test_print( t_yy=-2004,  t_mm=12,  t_dd=31,  t_h=23,  t_m=59,  t_s=50, &
64< !    res_str='-2004-12-31_23:59:50', testname='printT_6' )
65<
66<   ! these test default behavior of test harness
67<   CALL test_print( t_s=0, &
68<     res_str='0000-01-01_00:00:00', testname='printT_D1' )
69<   CALL test_print( t_yy=0, &
70<     res_str='0000-01-01_00:00:00', testname='printT_D2' )
71<
72<   ! fractions
73<   CALL test_print( t_yy=2001,  t_mm=12,  t_dd=3,  t_h=1,  t_m=20,  t_s=10, &
74<     t_sn=1, t_sd=3, &
75<     res_str='2001-12-03_01:20:10+01/03', testname='printT_F1' )
76<   CALL test_print( t_yy=2001,  t_mm=12,  t_dd=3,  t_h=1,  t_m=20,  t_s=10, &
77<     t_sn=4, t_sd=3, &
78<     res_str='2001-12-03_01:20:11+01/03', testname='printT_F2' )
79<   CALL test_print( t_yy=2001,  t_mm=12,  t_dd=3,  t_h=1,  t_m=20,  t_s=10, &
80<     t_sn=12, t_sd=3, &
81<     res_str='2001-12-03_01:20:14', testname='printT_F3' )
82<   CALL test_print( t_yy=2001,  t_mm=12,  t_dd=3,  t_h=1,  t_m=20,  t_s=10, &
83<     t_sn=-1, t_sd=3, &
84<     res_str='2001-12-03_01:20:09+02/03', testname='printT_F4' )
85---
86>   CALL test_print( t_yy=2000,  t_mm=1,  t_dd=1,  t_h=0,  t_m=0,  t_s=0, &
87>     res_str='2000-01-01_00:00:00', testname='printT_2' )
88>   CALL test_print( t_yy=2026,  t_mm=07,  t_dd=74,  t_h=23,  t_m=36,  t_s=90, &
89>     res_str='2026-07-74_23:36:90', testname='printT_3' )
90>   CALL test_print( t_yy=2026,  t_mm=07,  t_dd=75,  t_h=23,  t_m=36,  t_s=90, &
91>     res_str='2026-07-75_23:36:90', testname='printT_4' )
92> !  CALL test_print( t_yy=2004,  t_mm=12,  t_dd=30,  t_h=23,  t_m=59,  t_s=50, &
93> !    res_str='2004-12-30_23:59:50', testname='printT_5' )
94> !  CALL test_print( t_yy=2004,  t_mm=12,  t_dd=31,  t_h=23,  t_m=59,  t_s=50, &
95> !    res_str='2004-12-31_23:59:50', testname='printT_6' )
96> !!$$$  NOTE that this fails -- need to fix up output string for negative year
97> !!  CALL test_print( t_yy=-2004,  t_mm=12,  t_dd=31,  t_h=23,  t_m=59,  t_s=50, &
98> !!    res_str='-2004-12-31_23:59:50', testname='printT_6' )
99>
100> !  ! these test default behavior of test harness
101> !  CALL test_print( t_s=0, &
102> !    res_str='0000-00-00_00:00:00', testname='printT_D1' )
103> !  CALL test_print( t_yy=0, &
104> !    res_str='0000-00-00_00:00:00', testname='printT_D2' )
105>
106>   PRINT *,'yeah yeah yeah'
107>
108>
109> !  ! fractions
110> !  CALL test_print( t_yy=2001,  t_mm=12,  t_dd=3,  t_h=1,  t_m=20,  t_s=10, &
111> !    t_sn=1, t_sd=3, &
112> !    res_str='2001-12-03_01:20:10+01/03', testname='printT_F1' )
113> !  CALL test_print( t_yy=2001,  t_mm=12,  t_dd=3,  t_h=1,  t_m=20,  t_s=10, &
114> !    t_sn=4, t_sd=3, &
115> !    res_str='2001-12-03_01:20:11+01/03', testname='printT_F2' )
116> !  CALL test_print( t_yy=2001,  t_mm=12,  t_dd=3,  t_h=1,  t_m=20,  t_s=10, &
117> !    t_sn=12, t_sd=3, &
118> !    res_str='2001-12-03_01:20:14', testname='printT_F3' )
119> !  CALL test_print( t_yy=2001,  t_mm=12,  t_dd=3,  t_h=1,  t_m=20,  t_s=10, &
120> !    t_sn=-1, t_sd=3, &
121> !    res_str='2001-12-03_01:20:09+02/03', testname='printT_F4' )
1221379,1380c1382,1383
123<   CALL test_print( ti_yy=0,  ti_mm=0,  ti_dd=500,  ti_h=0,  ti_m=0,  ti_s=7270, &
124<     res_str='0000000500_002:001:010', testname='printTI_2' )
125---
126>   CALL test_print( ti_yy=0,  ti_mm=0,  ti_dd=500,  ti_h=0,  ti_m=0,  ti_s=9510, &
127>     res_str='0000000500_002:021:010', testname='printTI_2' )
1281382,1408c1385,1412
129<   ! these test default behavior of test harness
130<   CALL test_print( ti_s=0, &
131<     res_str='0000000000_000:000:000', testname='printTI_D1' )
132<   CALL test_print( ti_yy=0, &
133<     res_str='0000000000_000:000:000', testname='printTI_D2' )
134<
135<   ! these test negative values
136<   CALL test_print( ti_yy=0000,  ti_mm=0,  ti_dd=-3,  ti_h=-1,  ti_m=-20,  ti_s=-10, &
137<     res_str='-0000000003_001:020:010', testname='printTI_N1' )
138<
139<   ! these test mixed values
140<   CALL test_print( ti_yy=0000,  ti_mm=0,  ti_dd=-3,  ti_h=1,  ti_m=20,  ti_s=10, &
141<     res_str='-0000000002_022:039:050', testname='printTI_M1' )
142<
143<   ! fractions
144<   CALL test_print( ti_yy=0000,  ti_mm=0,  ti_dd=3,  ti_h=1,  ti_m=20,  ti_s=10, &
145<     ti_sn=1, ti_sd=3, &
146<     res_str='0000000003_001:020:010+01/03', testname='printTI_F1' )
147<   CALL test_print( ti_yy=0000,  ti_mm=0,  ti_dd=3,  ti_h=1,  ti_m=20,  ti_s=10, &
148<     ti_sn=5, ti_sd=3, &
149<     res_str='0000000003_001:020:011+02/03', testname='printTI_F2' )
150<   CALL test_print( ti_yy=0000,  ti_mm=0,  ti_dd=-3,  ti_h=-1,  ti_m=-20,  ti_s=-10, &
151<     ti_sn=-1, ti_sd=3, &
152<     res_str='-0000000003_001:020:010-01/03', testname='printTI_F3' )
153<   CALL test_print( ti_yy=0000,  ti_mm=0,  ti_dd=-3,  ti_h=-1,  ti_m=-20,  ti_s=-10, &
154<     ti_sn=1, ti_sd=3, &
155<     res_str='-0000000003_001:020:009-02/03', testname='printTI_F4' )
156---
157> !  ! these test default behavior of test harness
158> !  CALL test_print( ti_s=0, &
159> !    res_str='0000000000_000:000:000', testname='printTI_D1' )
160> !  CALL test_print( ti_yy=0, &
161> !    res_str='0000000000_000:000:000', testname='printTI_D2' )
162>
163> !  ! these test negative values
164> !  CALL test_print( ti_yy=0000,  ti_mm=0,  ti_dd=-3,  ti_h=-1,  ti_m=-20,  ti_s=-10, &
165> !    res_str='-0000000003_001:020:010', testname='printTI_N1' )
166> !
167> !  ! these test mixed values
168> !  CALL test_print( ti_yy=0000,  ti_mm=0,  ti_dd=-3,  ti_h=1,  ti_m=20,  ti_s=10, &
169> !    res_str='-0000000002_022:039:050', testname='printTI_M1' )
170> !
171> !  ! fractions
172> !  CALL test_print( ti_yy=0000,  ti_mm=0,  ti_dd=3,  ti_h=1,  ti_m=20,  ti_s=10, &
173> !    ti_sn=1, ti_sd=3, &
174> !    res_str='0000000003_001:020:010+01/03', testname='printTI_F1' )
175> !  CALL test_print( ti_yy=0000,  ti_mm=0,  ti_dd=3,  ti_h=1,  ti_m=20,  ti_s=10, &
176> !    ti_sn=5, ti_sd=3, &
177> !    res_str='0000000003_001:020:011+02/03', testname='printTI_F2' )
178> !  CALL test_print( ti_yy=0000,  ti_mm=0,  ti_dd=-3,  ti_h=-1,  ti_m=-20,  ti_s=-10, &
179> !    ti_sn=-1, ti_sd=3, &
180> !    res_str='-0000000003_001:020:010-01/03', testname='printTI_F3' )
181> !  CALL test_print( ti_yy=0000,  ti_mm=0,  ti_dd=-3,  ti_h=-1,  ti_m=-20,  ti_s=-10, &
182> !    ti_sn=1, ti_sd=3, &
183> !    res_str='-0000000003_001:020:009-02/03', testname='printTI_F4' )
184> !
1851417a1422
186>
1871430c1435
188<      op1_t_yy=2001,  op1_t_mm=12,  op1_t_dd=3,  op1_t_h=1,  op1_t_m=20,  op1_t_s=10, &
189---
190>      op1_t_yy=2026,  op1_t_mm=03,  op1_t_dd=23,  op1_t_h=1,  op1_t_m=20,  op1_t_s=10, &
1911432c1437
192<      res_t_yy=2001,  res_t_mm=12,  res_t_dd=3,  res_t_h=4,  res_t_m=30,  res_t_s=20, &
193---
194>      res_t_yy=2026,  res_t_mm=03,  res_t_dd=23,  res_t_h=4,  res_t_m=30,  res_t_s=20, &
1951435c1440
196<      op1_t_yy=2001,  op1_t_mm=12,  op1_t_dd=31,  op1_t_h=22,  op1_t_m=30,  op1_t_s=00, &
197---
198>      op1_t_yy=2001,  op1_t_mm=07,  op1_t_dd=75,  op1_t_h=22,  op1_t_m=30,  op1_t_s=00, &
1991437c1442
200<      res_t_yy=2002,  res_t_mm= 1,  res_t_dd=1,  res_t_h=2,  res_t_m=40,  res_t_s=10, &
201---
202>      res_t_yy=2002,  res_t_mm= 1,  res_t_dd=1,  res_t_h=3,  res_t_m=03,  res_t_s=10, &
2031439,1456c1444,1448
204<   CALL test_arithmetic( add_op=.TRUE.,                                             &
205<      op1_t_yy=2003,  op1_t_mm=12,  op1_t_dd=31,  op1_t_h=22,  op1_t_m=30,  op1_t_s=00, &
206<     op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=0, op2_ti_h=4, op2_ti_m=10, op2_ti_s=10, &
207<      res_t_yy=2004,  res_t_mm= 1,  res_t_dd=1,  res_t_h=2,  res_t_m=40,  res_t_s=10, &
208<     testname='AddT_T_TI3' )
209<   CALL test_arithmetic( add_op=.TRUE.,                                             &
210<      op1_t_yy=2004,  op1_t_mm=12,  op1_t_dd=31,  op1_t_h=22,  op1_t_m=30,  op1_t_s=00, &
211<     op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=0, op2_ti_h=4, op2_ti_m=10, op2_ti_s=10, &
212<      res_t_yy=2005,  res_t_mm= 1,  res_t_dd=1,  res_t_h=2,  res_t_m=40,  res_t_s=10, &
213<     testname='AddT_T_TI4' )
214<   ! this case hung after the CCSM contribution
215<   CALL test_arithmetic( add_op=.TRUE.,                                             &
216<      op1_t_yy=2004,  op1_t_mm=12,  op1_t_dd=30,  op1_t_h=22,  op1_t_m=30,  op1_t_s=00, &
217<     op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=0, op2_ti_h=4, op2_ti_m=10, op2_ti_s=10, &
218<      res_t_yy=2004,  res_t_mm=12,  res_t_dd=31,  res_t_h=2,  res_t_m=40,  res_t_s=10, &
219<     testname='AddT_T_TI5' )
220< ! NOTE:  CCSM folks need to decide what it means to add "1 month" to Feb. 29.  And all the
221< !        other very similar cases.  Then, write this unit test! 
222---
223> !  CALL test_arithmetic( add_op=.TRUE.,                                             &
224> !     op1_t_yy=2003,  op1_t_mm=12,  op1_t_dd=31,  op1_t_h=22,  op1_t_m=30,  op1_t_s=00, &
225> !    op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=0, op2_ti_h=4, op2_ti_m=10, op2_ti_s=10, &
226> !     res_t_yy=2004,  res_t_mm= 1,  res_t_dd=1,  res_t_h=2,  res_t_m=40,  res_t_s=10, &
227> !    testname='AddT_T_TI3' )
2281458a1451,1463
229> !    op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=0, op2_ti_h=4, op2_ti_m=10, op2_ti_s=10, &
230> !     res_t_yy=2005,  res_t_mm= 1,  res_t_dd=1,  res_t_h=2,  res_t_m=40,  res_t_s=10, &
231> !    testname='AddT_T_TI4' )
232> !  ! this case hung after the CCSM contribution
233> !  CALL test_arithmetic( add_op=.TRUE.,                                             &
234> !     op1_t_yy=2004,  op1_t_mm=12,  op1_t_dd=30,  op1_t_h=22,  op1_t_m=30,  op1_t_s=00, &
235> !    op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=0, op2_ti_h=4, op2_ti_m=10, op2_ti_s=10, &
236> !     res_t_yy=2004,  res_t_mm=12,  res_t_dd=31,  res_t_h=2,  res_t_m=40,  res_t_s=10, &
237> !    testname='AddT_T_TI5' )
238> !! NOTE:  CCSM folks need to decide what it means to add "1 month" to Feb. 29.  And all the
239> !        other very similar cases.  Then, write this unit test! 
240> !!  CALL test_arithmetic( add_op=.TRUE.,                                             &
241> !!!     op1_t_yy=2004,  op1_t_mm=12,  op1_t_dd=31,  op1_t_h=22,  op1_t_m=30,  op1_t_s=00, &
2421460,1481c1465,1486
243< !     res_t_yy=2007,  res_t_mm= 1,  res_t_dd=1,  res_t_h=2,  res_t_m=40,  res_t_s=10, &
244< !    testname='AddT_T_TI6' )
245<   CALL test_arithmetic( add_op=.TRUE.,                                             &
246<      op1_t_yy=2004,  op1_t_mm=12,  op1_t_dd=30,  op1_t_h=4,  op1_t_m=30,  op1_t_s=00, &
247<     op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=365, op2_ti_h=4, op2_ti_m=10, op2_ti_s=10, &
248<      res_t_yy=2005,  res_t_mm=12,  res_t_dd=30,  res_t_h=8,  res_t_m=40,  res_t_s=10, &
249<     testname='AddT_T_TI7' )
250<   CALL test_arithmetic( add_op=.TRUE.,                                             &
251<      op1_t_yy=2004,  op1_t_mm=12,  op1_t_dd=30,  op1_t_h=4,  op1_t_m=30,  op1_t_s=00, &
252<     op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=367, op2_ti_h=4, op2_ti_m=10, op2_ti_s=10, &
253<      res_t_yy=2006,  res_t_mm=01,  res_t_dd=01,  res_t_h=8,  res_t_m=40,  res_t_s=10, &
254<     testname='AddT_T_TI8' )
255<   CALL test_arithmetic( add_op=.TRUE.,                                             &
256<      op1_t_yy=2003,  op1_t_mm=12,  op1_t_dd=30,  op1_t_h=4,  op1_t_m=30,  op1_t_s=00, &
257<     op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=365, op2_ti_h=4, op2_ti_m=10, op2_ti_s=10, &
258<      res_t_yy=2004,  res_t_mm=12,  res_t_dd=29,  res_t_h=8,  res_t_m=40,  res_t_s=10, &
259<     testname='AddT_T_TI9' )
260<   CALL test_arithmetic( add_op=.TRUE.,                                             &
261<      op1_t_yy=2003,  op1_t_mm=12,  op1_t_dd=30,  op1_t_h=4,  op1_t_m=30,  op1_t_s=00, &
262<     op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=366, op2_ti_h=4, op2_ti_m=10, op2_ti_s=10, &
263<      res_t_yy=2004,  res_t_mm=12,  res_t_dd=30,  res_t_h=8,  res_t_m=40,  res_t_s=10, &
264<     testname='AddT_T_TI10' )
265---
266> !!     res_t_yy=2007,  res_t_mm= 1,  res_t_dd=1,  res_t_h=2,  res_t_m=40,  res_t_s=10, &
267> !!    testname='AddT_T_TI6' )
268> !  CALL test_arithmetic( add_op=.TRUE.,                                             &
269> !     op1_t_yy=2004,  op1_t_mm=12,  op1_t_dd=30,  op1_t_h=4,  op1_t_m=30,  op1_t_s=00, &
270> !    op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=365, op2_ti_h=4, op2_ti_m=10, op2_ti_s=10, &
271> !     res_t_yy=2005,  res_t_mm=12,  res_t_dd=30,  res_t_h=8,  res_t_m=40,  res_t_s=10, &
272> !    testname='AddT_T_TI7' )
273> !  CALL test_arithmetic( add_op=.TRUE.,                                             &
274> !     op1_t_yy=2004,  op1_t_mm=12,  op1_t_dd=30,  op1_t_h=4,  op1_t_m=30,  op1_t_s=00, &
275> !    op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=367, op2_ti_h=4, op2_ti_m=10, op2_ti_s=10, &
276> !     res_t_yy=2006,  res_t_mm=01,  res_t_dd=01,  res_t_h=8,  res_t_m=40,  res_t_s=10, &
277> !    testname='AddT_T_TI8' )
278> !  CALL test_arithmetic( add_op=.TRUE.,                                             &
279> !     op1_t_yy=2003,  op1_t_mm=12,  op1_t_dd=30,  op1_t_h=4,  op1_t_m=30,  op1_t_s=00, &
280> !    op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=365, op2_ti_h=4, op2_ti_m=10, op2_ti_s=10, &
281> !     res_t_yy=2004,  res_t_mm=12,  res_t_dd=29,  res_t_h=8,  res_t_m=40,  res_t_s=10, &
282> !    testname='AddT_T_TI9' )
283> !  CALL test_arithmetic( add_op=.TRUE.,                                             &
284> !     op1_t_yy=2003,  op1_t_mm=12,  op1_t_dd=30,  op1_t_h=4,  op1_t_m=30,  op1_t_s=00, &
285> !    op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=366, op2_ti_h=4, op2_ti_m=10, op2_ti_s=10, &
286> !     res_t_yy=2004,  res_t_mm=12,  res_t_dd=30,  res_t_h=8,  res_t_m=40,  res_t_s=10, &
287> !    testname='AddT_T_TI10' )
2881483,1485c1488,1490
289<      op1_t_yy=2003,  op1_t_mm=12,  op1_t_dd=30,  op1_t_h=4,  op1_t_m=30,  op1_t_s=00, &
290<     op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=367, op2_ti_h=4, op2_ti_m=10, op2_ti_s=10, &
291<      res_t_yy=2004,  res_t_mm=12,  res_t_dd=31,  res_t_h=8,  res_t_m=40,  res_t_s=10, &
292---
293>      op1_t_yy=2003,  op1_t_mm=03,  op1_t_dd=23,  op1_t_h=0,  op1_t_m=0,  op1_t_s=0, &
294>     op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=675, op2_ti_h=4, op2_ti_m=10, op2_ti_s=10, &
295>      res_t_yy=2004,  res_t_mm=03,  res_t_dd=29,  res_t_h=4,  res_t_m=10,  res_t_s=10, &
2961487,1516c1492,1512
297<   CALL test_arithmetic( add_op=.TRUE.,                                             &
298<      op1_t_yy=2003,  op1_t_mm=12,  op1_t_dd=30,  op1_t_h=4,  op1_t_m=30,  op1_t_s=00, &
299<     op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=368, op2_ti_h=4, op2_ti_m=10, op2_ti_s=10, &
300<      res_t_yy=2005,  res_t_mm=01,  res_t_dd=01,  res_t_h=8,  res_t_m=40,  res_t_s=10, &
301<     testname='AddT_T_TI12' )
302<   CALL test_arithmetic( add_op=.TRUE.,                                             &
303<      op1_t_yy=2004,  op1_t_mm=03,  op1_t_dd=30,  op1_t_h=4,  op1_t_m=30,  op1_t_s=00, &
304<     op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=365, op2_ti_h=4, op2_ti_m=10, op2_ti_s=10, &
305<      res_t_yy=2005,  res_t_mm=03,  res_t_dd=30,  res_t_h=8,  res_t_m=40,  res_t_s=10, &
306<     testname='AddT_T_TI13' )
307<   CALL test_arithmetic( add_op=.TRUE.,                                             &
308<      op1_t_yy=2004,  op1_t_mm=03,  op1_t_dd=30,  op1_t_h=4,  op1_t_m=30,  op1_t_s=00, &
309<     op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=365, op2_ti_h=22, op2_ti_m=10, op2_ti_s=10, &
310<      res_t_yy=2005,  res_t_mm=03,  res_t_dd=31,  res_t_h=2,  res_t_m=40,  res_t_s=10, &
311<     testname='AddT_T_TI14' )
312<   CALL test_arithmetic( add_op=.TRUE.,                                             &
313<      op1_t_yy=2004,  op1_t_mm=03,  op1_t_dd=30,  op1_t_h=4,  op1_t_m=30,  op1_t_s=00, &
314<     op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=366, op2_ti_h=22, op2_ti_m=10, op2_ti_s=10, &
315<      res_t_yy=2005,  res_t_mm=04,  res_t_dd=01,  res_t_h=2,  res_t_m=40,  res_t_s=10, &
316<     testname='AddT_T_TI15' )
317<   ! ESMF_Time = ESMF_Time + ESMF_TimeInterval with fractions
318<   CALL test_arithmetic( add_op=.TRUE.,                                             &
319<      op1_t_yy=2004,  op1_t_mm=12,  op1_t_dd=31,  op1_t_h=22,  op1_t_m=30,  op1_t_s=00, &
320<      op1_t_sn=01,  op1_t_sd=03, &
321<     op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=0, op2_ti_h=4, op2_ti_m=10, op2_ti_s=10, &
322<     op2_ti_sn=01, op2_ti_sd=03, &
323<      res_t_yy=2005,  res_t_mm= 1,  res_t_dd=1,  res_t_h=2,  res_t_m=40,  res_t_s=10, &
324<      res_t_sn=02,  res_t_sd=03, &
325<     testname='AddT_T_TI_F1' )
326<   ! this should fail (and does)
327---
328> !  CALL test_arithmetic( add_op=.TRUE.,                                             &
329> !     op1_t_yy=2003,  op1_t_mm=12,  op1_t_dd=30,  op1_t_h=4,  op1_t_m=30,  op1_t_s=00, &
330> !    op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=368, op2_ti_h=4, op2_ti_m=10, op2_ti_s=10, &
331> !     res_t_yy=2005,  res_t_mm=01,  res_t_dd=01,  res_t_h=8,  res_t_m=40,  res_t_s=10, &
332> !    testname='AddT_T_TI12' )
333> !  CALL test_arithmetic( add_op=.TRUE.,                                             &
334> !     op1_t_yy=2004,  op1_t_mm=03,  op1_t_dd=30,  op1_t_h=4,  op1_t_m=30,  op1_t_s=00, &
335> !    op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=365, op2_ti_h=4, op2_ti_m=10, op2_ti_s=10, &
336> !     res_t_yy=2005,  res_t_mm=03,  res_t_dd=30,  res_t_h=8,  res_t_m=40,  res_t_s=10, &
337> !    testname='AddT_T_TI13' )
338> !  CALL test_arithmetic( add_op=.TRUE.,                                             &
339> !     op1_t_yy=2004,  op1_t_mm=03,  op1_t_dd=30,  op1_t_h=4,  op1_t_m=30,  op1_t_s=00, &
340> !    op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=365, op2_ti_h=22, op2_ti_m=10, op2_ti_s=10, &
341> !     res_t_yy=2005,  res_t_mm=03,  res_t_dd=31,  res_t_h=2,  res_t_m=40,  res_t_s=10, &
342> !    testname='AddT_T_TI14' )
343> !  CALL test_arithmetic( add_op=.TRUE.,                                             &
344> !     op1_t_yy=2004,  op1_t_mm=03,  op1_t_dd=30,  op1_t_h=4,  op1_t_m=30,  op1_t_s=00, &
345> !    op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=366, op2_ti_h=22, op2_ti_m=10, op2_ti_s=10, &
346> !     res_t_yy=2005,  res_t_mm=04,  res_t_dd=01,  res_t_h=2,  res_t_m=40,  res_t_s=10, &
347> !    testname='AddT_T_TI15' )
348> !  ! ESMF_Time = ESMF_Time + ESMF_TimeInterval with fractions
3491523,1691c1519,1557
350< !     res_t_sn=01,  res_t_sd=03, &
351< !    testname='AddT_T_TI_F2' )
352<   ! ESMF_Time = ESMF_TimeInterval + ESMF_Time
353<   CALL test_arithmetic( add_op=.TRUE.,                                             &
354<     op1_ti_yy=   0, op1_ti_mm= 0, op1_ti_dd=0, op1_ti_h=3, op1_ti_m=10, op1_ti_s=10, &
355<      op2_t_yy=2001,  op2_t_mm=12,  op2_t_dd=3,  op2_t_h=1,  op2_t_m=20,  op2_t_s=10, &
356<      res_t_yy=2001,  res_t_mm=12,  res_t_dd=3,  res_t_h=4,  res_t_m=30,  res_t_s=20, &
357<     testname='AddT_TI_T1' )
358<   CALL test_arithmetic( add_op=.TRUE.,                                             &
359<     op1_ti_yy=   0, op1_ti_mm= 0, op1_ti_dd=0, op1_ti_h=4, op1_ti_m=10, op1_ti_s=10, &
360<      op2_t_yy=2001,  op2_t_mm=12,  op2_t_dd=31,  op2_t_h=22,  op2_t_m=30,  op2_t_s=00, &
361<      res_t_yy=2002,  res_t_mm= 1,  res_t_dd=1,  res_t_h=2,  res_t_m=40,  res_t_s=10, &
362<     testname='AddT_TI_T2' )
363<   ! ESMF_TimeInterval = ESMF_TimeInterval + ESMF_TimeInterval
364<   CALL test_arithmetic( add_op=.TRUE.,                                             &
365<     op1_ti_yy=0000, op1_ti_mm=00, op1_ti_dd=3, op1_ti_h=1, op1_ti_m=20, op1_ti_s=10, &
366<     op2_ti_yy=0000, op2_ti_mm=00, op2_ti_dd=1, op2_ti_h=1, op2_ti_m=10, op2_ti_s=10, &
367<     res_ti_yy=0000, res_ti_mm=00, res_ti_dd=4, res_ti_h=2, res_ti_m=30, res_ti_s=20, &
368<     testname='AddTI_TI_TI1' )
369<   CALL test_arithmetic( add_op=.TRUE.,                                             &
370<     op1_ti_yy=0000, op1_ti_mm=00, op1_ti_dd=-3, op1_ti_h=-1, op1_ti_m=-20, op1_ti_s=-10, &
371<     op2_ti_yy=0000, op2_ti_mm=00, op2_ti_dd=1, op2_ti_h=1, op2_ti_m=10, op2_ti_s=10, &
372<     res_ti_yy=0000, res_ti_mm=00, res_ti_dd=-2, res_ti_h=0, res_ti_m=-10, res_ti_s=00, &
373<     testname='AddTI_TI_TI2' )
374<   CALL test_arithmetic( add_op=.TRUE.,                                             &
375<     op1_ti_yy=0000, op1_ti_mm=00, op1_ti_dd=-3, op1_ti_h=-1, op1_ti_m=-20, op1_ti_s=-10, &
376<     op2_ti_yy=0000, op2_ti_mm=00, op2_ti_dd=-1, op2_ti_h=-1, op2_ti_m=-10, op2_ti_s=-10, &
377<     res_ti_yy=0000, res_ti_mm=00, res_ti_dd=-4, res_ti_h=-2, res_ti_m=-30, res_ti_s=-20, &
378<     testname='AddTI_TI_TI3' )
379<
380<   ! Subtraction tests
381<   ! ESMF_Time = ESMF_Time - ESMF_TimeInterval
382<   CALL test_arithmetic( add_op=.FALSE.,                                            &
383<      op1_t_yy=2001,  op1_t_mm=12,  op1_t_dd=3,  op1_t_h=1,  op1_t_m=20,  op1_t_s=10, &
384<     op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=0, op2_ti_h=3, op2_ti_m=10, op2_ti_s=10, &
385<      res_t_yy=2001,  res_t_mm=12,  res_t_dd=2,  res_t_h=22, res_t_m=10,  res_t_s=0,  &
386<     testname='SubtractT_T_TI1' )
387<   CALL test_arithmetic( add_op=.FALSE.,                                            &
388<      op1_t_yy=2005,  op1_t_mm=1,   op1_t_dd=1,  op1_t_h=0,  op1_t_m=00,  op1_t_s=0,  &
389<     op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=0, op2_ti_h=0, op2_ti_m=00, op2_ti_s=10, &
390<      res_t_yy=2004,  res_t_mm=12,  res_t_dd=31, res_t_h=23, res_t_m=59,  res_t_s=50, &
391<     testname='SubtractT_T_TI2' )
392<   CALL test_arithmetic( add_op=.FALSE.,                                            &
393<      op1_t_yy=2004,  op1_t_mm=1,   op1_t_dd=1,  op1_t_h=0,  op1_t_m=00,  op1_t_s=0,  &
394<     op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=0, op2_ti_h=0, op2_ti_m=00, op2_ti_s=10, &
395<      res_t_yy=2003,  res_t_mm=12,  res_t_dd=31, res_t_h=23, res_t_m=59,  res_t_s=50, &
396<     testname='SubtractT_T_TI3' )
397<   CALL test_arithmetic( add_op=.FALSE.,                                            &
398<      op1_t_yy=2003,  op1_t_mm=1,   op1_t_dd=1,  op1_t_h=0,  op1_t_m=00,  op1_t_s=0,  &
399<     op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=0, op2_ti_h=0, op2_ti_m=00, op2_ti_s=10, &
400<      res_t_yy=2002,  res_t_mm=12,  res_t_dd=31, res_t_h=23, res_t_m=59,  res_t_s=50, &
401<     testname='SubtractT_T_TI4' )
402<   CALL test_arithmetic( add_op=.FALSE.,                                             &
403<      op1_t_yy=2005,  op1_t_mm=04,  op1_t_dd=01,  op1_t_h=2,  op1_t_m=40,  op1_t_s=10, &
404<     op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=366, op2_ti_h=22, op2_ti_m=10, op2_ti_s=10, &
405<      res_t_yy=2004,  res_t_mm=03,  res_t_dd=30,  res_t_h=4,  res_t_m=30,  res_t_s=00, &
406<     testname='SubtractT_T_TI5' )
407<   CALL test_arithmetic( add_op=.FALSE.,                                             &
408<      op1_t_yy=2006,  op1_t_mm=01,  op1_t_dd=01,  op1_t_h=8,  op1_t_m=40,  op1_t_s=10, &
409<     op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=367, op2_ti_h=4, op2_ti_m=10, op2_ti_s=10, &
410<      res_t_yy=2004,  res_t_mm=12,  res_t_dd=30,  res_t_h=4,  res_t_m=30,  res_t_s=00, &
411<     testname='SubtractT_T_TI6' )
412<   ! ESMF_Time = ESMF_Time - ESMF_TimeInterval with fractions
413<   CALL test_arithmetic( add_op=.FALSE.,                                             &
414<      op1_t_yy=2005,  op1_t_mm=01,  op1_t_dd=01,  op1_t_h=00,  op1_t_m=00,  op1_t_s=00, &
415<      op1_t_sn=00,  op1_t_sd=00, &
416<     op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=0, op2_ti_h=0, op2_ti_m=00, op2_ti_s=01, &
417<     op2_ti_sn=01, op2_ti_sd=03, &
418<      res_t_yy=2004,  res_t_mm=12,  res_t_dd=31,  res_t_h=23,  res_t_m=59,  res_t_s=58, &
419<      res_t_sn=02,  res_t_sd=03, &
420<     testname='SubtractT_T_TI_F1' )
421<   ! ESMF_TimeInterval = ESMF_Time - ESMF_Time
422<   CALL test_arithmetic( add_op=.FALSE.,                                            &
423<      op1_t_yy=2001,  op1_t_mm=12,  op1_t_dd=3,  op1_t_h=1,  op1_t_m=20,  op1_t_s=10, &
424<      op2_t_yy=2001,  op2_t_mm=12,  op2_t_dd=1,  op2_t_h=1,  op2_t_m=10,  op2_t_s=10, &
425<     res_ti_yy=0000, res_ti_mm=00, res_ti_dd=2, res_ti_h=0, res_ti_m=10, res_ti_s=0,  &
426<     testname='SubtractTI_T_T1' )
427<   CALL test_arithmetic( add_op=.FALSE.,                                            &
428<      op1_t_yy=2002,  op1_t_mm=1,   op1_t_dd=1,  op1_t_h=0,  op1_t_m=00,  op1_t_s=00, &
429<      op2_t_yy=2001,  op2_t_mm=12,  op2_t_dd=31, op2_t_h=23, op2_t_m=59,  op2_t_s=50, &
430<     res_ti_yy=0000, res_ti_mm=00, res_ti_dd=0, res_ti_h=0, res_ti_m=00, res_ti_s=10, &
431<     testname='SubtractTI_T_T2' )
432<   CALL test_arithmetic( add_op=.FALSE.,                                            &
433<      op1_t_yy=2005,  op1_t_mm=1,   op1_t_dd=1,  op1_t_h=0,  op1_t_m=00,  op1_t_s=00, &
434<      op2_t_yy=2004,  op2_t_mm=12,  op2_t_dd=31, op2_t_h=23, op2_t_m=59,  op2_t_s=50, &
435<     res_ti_yy=0000, res_ti_mm=00, res_ti_dd=0, res_ti_h=0, res_ti_m=00, res_ti_s=10, &
436<     testname='SubtractTI_T_T3' )
437<   CALL test_arithmetic( add_op=.FALSE.,                                            &
438<      op1_t_yy=2003,  op1_t_mm=03,  op1_t_dd=01, op1_t_h=00, op1_t_m=00,  op1_t_s=00, &
439<      op2_t_yy=2003,  op2_t_mm=02,  op2_t_dd=28, op2_t_h=23, op2_t_m=59,  op2_t_s=50, &
440<     res_ti_yy=0000, res_ti_mm=00, res_ti_dd=0, res_ti_h=0, res_ti_m=00, res_ti_s=10, &
441<     testname='SubtractTI_T_T4' )
442<   CALL test_arithmetic( add_op=.FALSE.,                                            &
443<      op1_t_yy=2004,  op1_t_mm=03,  op1_t_dd=01, op1_t_h=00, op1_t_m=00,  op1_t_s=00, &
444<      op2_t_yy=2004,  op2_t_mm=02,  op2_t_dd=28, op2_t_h=23, op2_t_m=59,  op2_t_s=50, &
445<     res_ti_yy=0000, res_ti_mm=00, res_ti_dd=1, res_ti_h=0, res_ti_m=00, res_ti_s=10, &
446<     testname='SubtractTI_T_T5' )
447<   CALL test_arithmetic( add_op=.FALSE.,                                            &
448<      op1_t_yy=2002,  op1_t_mm=02,  op1_t_dd=28, op1_t_h=00, op1_t_m=00,  op1_t_s=00, &
449<      op2_t_yy=2002,  op2_t_mm=02,  op2_t_dd=28, op2_t_h=00, op2_t_m=00,  op2_t_s=00, &
450<     res_ti_yy=0000, res_ti_mm=00, res_ti_dd=0, res_ti_h=0, res_ti_m=00, res_ti_s=00, &
451<     testname='SubtractTI_T_T6' )
452<   CALL test_arithmetic( add_op=.FALSE.,                                            &
453<      op1_t_yy=2003,  op1_t_mm=02,  op1_t_dd=28, op1_t_h=00, op1_t_m=00,  op1_t_s=00, &
454<      op2_t_yy=2002,  op2_t_mm=02,  op2_t_dd=28, op2_t_h=00, op2_t_m=00,  op2_t_s=00, &
455<     res_ti_yy=0000, res_ti_mm=00, res_ti_dd=365, res_ti_h=0, res_ti_m=00, res_ti_s=00, &
456<     testname='SubtractTI_T_T7' )
457<   CALL test_arithmetic( add_op=.FALSE.,                                            &
458<      op1_t_yy=2004,  op1_t_mm=02,  op1_t_dd=28, op1_t_h=00, op1_t_m=00,  op1_t_s=00, &
459<      op2_t_yy=2003,  op2_t_mm=02,  op2_t_dd=28, op2_t_h=00, op2_t_m=00,  op2_t_s=00, &
460<     res_ti_yy=0000, res_ti_mm=00, res_ti_dd=365, res_ti_h=0, res_ti_m=00, res_ti_s=00, &
461<     testname='SubtractTI_T_T8' )
462<   CALL test_arithmetic( add_op=.FALSE.,                                            &
463<      op1_t_yy=2005,  op1_t_mm=02,  op1_t_dd=28, op1_t_h=00, op1_t_m=00,  op1_t_s=00, &
464<      op2_t_yy=2004,  op2_t_mm=02,  op2_t_dd=28, op2_t_h=00, op2_t_m=00,  op2_t_s=00, &
465<     res_ti_yy=0000, res_ti_mm=00, res_ti_dd=366, res_ti_h=0, res_ti_m=00, res_ti_s=00, &
466<     testname='SubtractTI_T_T9' )
467<   CALL test_arithmetic( add_op=.FALSE.,                                            &
468<      op1_t_yy=2003,  op1_t_mm=03,  op1_t_dd=01, op1_t_h=00, op1_t_m=00,  op1_t_s=00, &
469<      op2_t_yy=2002,  op2_t_mm=02,  op2_t_dd=28, op2_t_h=00, op2_t_m=00,  op2_t_s=00, &
470<     res_ti_yy=0000, res_ti_mm=00, res_ti_dd=366, res_ti_h=0, res_ti_m=00, res_ti_s=00, &
471<     testname='SubtractTI_T_T10' )
472<   CALL test_arithmetic( add_op=.FALSE.,                                            &
473<      op1_t_yy=2005,  op1_t_mm=03,  op1_t_dd=01, op1_t_h=00, op1_t_m=00,  op1_t_s=00, &
474<      op2_t_yy=2004,  op2_t_mm=02,  op2_t_dd=28, op2_t_h=00, op2_t_m=00,  op2_t_s=00, &
475<     res_ti_yy=0000, res_ti_mm=00, res_ti_dd=367, res_ti_h=0, res_ti_m=00, res_ti_s=00, &
476<     testname='SubtractTI_T_T11' )
477<   CALL test_arithmetic( add_op=.FALSE.,                                            &
478<      op1_t_yy=2005,  op1_t_mm=03,  op1_t_dd=01, op1_t_h=00, op1_t_m=00,  op1_t_s=00, &
479<      op2_t_yy=2004,  op2_t_mm=02,  op2_t_dd=28, op2_t_h=23, op2_t_m=59,  op2_t_s=50, &
480<     res_ti_yy=0000, res_ti_mm=00, res_ti_dd=366, res_ti_h=0, res_ti_m=00, res_ti_s=10, &
481<     testname='SubtractTI_T_T12' )
482<   CALL test_arithmetic( add_op=.FALSE.,                                            &
483<      op1_t_yy=2004,  op1_t_mm=02,  op1_t_dd=28, op1_t_h=23, op1_t_m=59,  op1_t_s=50, &
484<      op2_t_yy=2005,  op2_t_mm=03,  op2_t_dd=01, op2_t_h=00, op2_t_m=00,  op2_t_s=00, &
485<     res_ti_yy=0000, res_ti_mm=00, res_ti_dd=-366, res_ti_h=0, res_ti_m=00, res_ti_s=-10, &
486<     testname='SubtractTI_T_T13' )
487<   CALL test_arithmetic( add_op=.FALSE.,                                            &
488<      op1_t_yy=-2002,  op1_t_mm=02,  op1_t_dd=28, op1_t_h=00, op1_t_m=00,  op1_t_s=00, &
489<      op2_t_yy=-2002,  op2_t_mm=02,  op2_t_dd=28, op2_t_h=00, op2_t_m=00,  op2_t_s=00, &
490<     res_ti_yy=0000, res_ti_mm=00, res_ti_dd=0, res_ti_h=0, res_ti_m=00, res_ti_s=00, &
491<     testname='SubtractTI_T_T14' )
492<   ! ESMF_TimeInterval = ESMF_TimeInterval - ESMF_TimeInterval
493<   CALL test_arithmetic( add_op=.FALSE.,                                            &
494<     op1_ti_yy=0000, op1_ti_mm=00, op1_ti_dd=3, op1_ti_h=1, op1_ti_m=20, op1_ti_s=10, &
495<     op2_ti_yy=0000, op2_ti_mm=00, op2_ti_dd=1, op2_ti_h=1, op2_ti_m=10, op2_ti_s=10, &
496<     res_ti_yy=0000, res_ti_mm=00, res_ti_dd=2, res_ti_h=0, res_ti_m=10, res_ti_s=0,  &
497<     testname='SubtractTI_TI_TI1' )
498<   CALL test_arithmetic( add_op=.FALSE.,                                            &
499<     op1_ti_yy=0000, op1_ti_mm=00, op1_ti_dd=3, op1_ti_h=1, op1_ti_m=20, op1_ti_s=10, &
500<     op2_ti_yy=0000, op2_ti_mm=00, op2_ti_dd=-1, op2_ti_h=-1, op2_ti_m=-10, op2_ti_s=-10, &
501<     res_ti_yy=0000, res_ti_mm=00, res_ti_dd=4, res_ti_h=2, res_ti_m=30, res_ti_s=20,  &
502<     testname='SubtractTI_TI_TI2' )
503<   CALL test_arithmetic( add_op=.FALSE.,                                            &
504<     op1_ti_yy=0000, op1_ti_mm=00, op1_ti_dd=-1, op1_ti_h=-1, op1_ti_m=-10, op1_ti_s=-10, &
505<     op2_ti_yy=0000, op2_ti_mm=00, op2_ti_dd=-3, op2_ti_h=-1, op2_ti_m=-20, op2_ti_s=-10, &
506<     res_ti_yy=0000, res_ti_mm=00, res_ti_dd=2, res_ti_h=0, res_ti_m=10, res_ti_s=00,  &
507<     testname='SubtractTI_TI_TI3' )
508<   ! Negative result ESMF_TimeInterval = ESMF_TimeInterval - ESMF_TimeInterval
509<   CALL test_arithmetic( add_op=.FALSE.,                                            &
510<     op1_ti_yy=0000, op1_ti_mm=00, op1_ti_dd=1, op1_ti_h=1, op1_ti_m=10, op1_ti_s=10, &
511<     op2_ti_yy=0000, op2_ti_mm=00, op2_ti_dd=3, op2_ti_h=1, op2_ti_m=20, op2_ti_s=10, &
512<     res_ti_yy=0000, res_ti_mm=00, res_ti_dd=-2, res_ti_h=0, res_ti_m=-10, res_ti_s=0,  &
513<     testname='SubtractTI_TI_TIN1' )
514<   CALL test_arithmetic( add_op=.FALSE.,                                            &
515<     op1_ti_yy=0000, op1_ti_mm=00, op1_ti_dd=-1, op1_ti_h=-1, op1_ti_m=-10, op1_ti_s=-10, &
516<     op2_ti_yy=0000, op2_ti_mm=00, op2_ti_dd=3, op2_ti_h=1, op2_ti_m=20, op2_ti_s=10, &
517<     res_ti_yy=0000, res_ti_mm=00, res_ti_dd=-4, res_ti_h=-2, res_ti_m=-30, res_ti_s=-20,  &
518<     testname='SubtractTI_TI_TIN2' )
519---
520> !     res_t_sn=02,  res_t_sd=03, &
521> !    testname='AddT_T_TI_F1' )
522> !  ! this should fail (and does)
523> !!  CALL test_arithmetic( add_op=.TRUE.,                                             &
524> !!     op1_t_yy=2004,  op1_t_mm=12,  op1_t_dd=31,  op1_t_h=22,  op1_t_m=30,  op1_t_s=00, &
525> !!     op1_t_sn=01,  op1_t_sd=03, &
526> !!    op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=0, op2_ti_h=4, op2_ti_m=10, op2_ti_s=10, &
527> !!    op2_ti_sn=01, op2_ti_sd=03, &
528> !!     res_t_yy=2005,  res_t_mm= 1,  res_t_dd=1,  res_t_h=2,  res_t_m=40,  res_t_s=10, &
529> !!     res_t_sn=01,  res_t_sd=03, &
530> !!    testname='AddT_T_TI_F2' )
531> !  ! ESMF_Time = ESMF_TimeInterval + ESMF_Time
532> !  CALL test_arithmetic( add_op=.TRUE.,                                             &
533> !    op1_ti_yy=   0, op1_ti_mm= 0, op1_ti_dd=0, op1_ti_h=3, op1_ti_m=10, op1_ti_s=10, &
534> !     op2_t_yy=2001,  op2_t_mm=12,  op2_t_dd=3,  op2_t_h=1,  op2_t_m=20,  op2_t_s=10, &
535> !     res_t_yy=2001,  res_t_mm=12,  res_t_dd=3,  res_t_h=4,  res_t_m=30,  res_t_s=20, &
536> !    testname='AddT_TI_T1' )
537> !  CALL test_arithmetic( add_op=.TRUE.,                                             &
538> !    op1_ti_yy=   0, op1_ti_mm= 0, op1_ti_dd=0, op1_ti_h=4, op1_ti_m=10, op1_ti_s=10, &
539> !     op2_t_yy=2001,  op2_t_mm=12,  op2_t_dd=31,  op2_t_h=22,  op2_t_m=30,  op2_t_s=00, &
540> !     res_t_yy=2002,  res_t_mm= 1,  res_t_dd=1,  res_t_h=2,  res_t_m=40,  res_t_s=10, &
541> !    testname='AddT_TI_T2' )
542> !  ! ESMF_TimeInterval = ESMF_TimeInterval + ESMF_TimeInterval
543> !  CALL test_arithmetic( add_op=.TRUE.,                                             &
544> !    op1_ti_yy=0000, op1_ti_mm=00, op1_ti_dd=3, op1_ti_h=1, op1_ti_m=20, op1_ti_s=10, &
545> !    op2_ti_yy=0000, op2_ti_mm=00, op2_ti_dd=1, op2_ti_h=1, op2_ti_m=10, op2_ti_s=10, &
546> !    res_ti_yy=0000, res_ti_mm=00, res_ti_dd=4, res_ti_h=2, res_ti_m=30, res_ti_s=20, &
547> !    testname='AddTI_TI_TI1' )
548> !  CALL test_arithmetic( add_op=.TRUE.,                                             &
549> !    op1_ti_yy=0000, op1_ti_mm=00, op1_ti_dd=-3, op1_ti_h=-1, op1_ti_m=-20, op1_ti_s=-10, &
550> !    op2_ti_yy=0000, op2_ti_mm=00, op2_ti_dd=1, op2_ti_h=1, op2_ti_m=10, op2_ti_s=10, &
551> !    res_ti_yy=0000, res_ti_mm=00, res_ti_dd=-2, res_ti_h=0, res_ti_m=-10, res_ti_s=00, &
552> !    testname='AddTI_TI_TI2' )
553> !  CALL test_arithmetic( add_op=.TRUE.,                                             &
554> !    op1_ti_yy=0000, op1_ti_mm=00, op1_ti_dd=-3, op1_ti_h=-1, op1_ti_m=-20, op1_ti_s=-10, &
555> !    op2_ti_yy=0000, op2_ti_mm=00, op2_ti_dd=-1, op2_ti_h=-1, op2_ti_m=-10, op2_ti_s=-10, &
556> !    res_ti_yy=0000, res_ti_mm=00, res_ti_dd=-4, res_ti_h=-2, res_ti_m=-30, res_ti_s=-20, &
557> !    testname='AddTI_TI_TI3' )
558> !
5591693,1694c1559,1560
560<   ! Un-normalized ESMF_TimeInterval = ESMF_TimeInterval - ESMF_TimeInterval
561<   ! this is an error
562---
563> !  ! Subtraction tests
564> !  ! ESMF_Time = ESMF_Time - ESMF_TimeInterval
5651696,1702d1561
566< !    op1_ti_yy=2001, op1_ti_mm=11, op1_ti_dd=3, op1_ti_h=1, op1_ti_m=20, op1_ti_s=10, &
567< !    op2_ti_yy=2001, op2_ti_mm=11, op2_ti_dd=1, op2_ti_h=1, op2_ti_m=10, op2_ti_s=10, &
568< !    res_ti_yy=0000, res_ti_mm=00, res_ti_dd=2, res_ti_h=0, res_ti_m=10, res_ti_s=0,  &
569< !    testname='SubtractTI_TI_TIU1', expect_error=.TRUE. )
570<
571<   ! this one should FAIL, and does
572< !  CALL test_arithmetic( add_op=.TRUE.,                                             &
5731705,1755c1564,1756
574< !     res_t_yy=2002,  res_t_mm=12,  res_t_dd=3,  res_t_h=4,  res_t_m=30,  res_t_s=20, &
575< !    testname='AddTT1' )
576<
577<   ! Multiplication tests
578<   ! ESMF_TimeInterval = ESMF_TimeInterval * INTEGER
579<   CALL test_arithmetic( multiply_op=.TRUE.,                &
580<     op1_ti_dd=3,  op1_ti_h=12,  op1_ti_m=18,  op1_ti_s=33, &
581<     op2_int=2,                                             &
582<     res_ti_dd=6,  res_ti_h=24, res_ti_m=37,  res_ti_s=06,  &
583<     testname='MultiplyTI_TI_INT1' )
584<   CALL test_arithmetic( multiply_op=.TRUE.,                &
585<     op1_ti_dd=350,  op1_ti_h=23,  op1_ti_m=50,  op1_ti_s=50, &
586<     op2_int=2,                                             &
587<     res_ti_dd=701,  res_ti_h=23, res_ti_m=41,  res_ti_s=40,&
588<     testname='MultiplyTI_TI_INT2' )
589<   CALL test_arithmetic( multiply_op=.TRUE.,                &
590<     op1_ti_s=01, op1_ti_sn=03, op1_ti_sd=04,               &
591<     op2_int=8,                                             &
592<     res_ti_s=14,                                           &
593<     testname='MultiplyTI_TI_INT3' )
594<
595<   ! Division tests
596<   ! ESMF_TimeInterval = ESMF_TimeInterval / INTEGER
597<   CALL test_arithmetic( multiply_op=.FALSE.,               &
598<     op1_ti_dd=3,  op1_ti_h=12,  op1_ti_m=18,  op1_ti_s=33, &
599<     op2_int=3,                                             &
600<     res_ti_dd=1,  res_ti_h=04, res_ti_m=06,  res_ti_s=11,  &
601<     testname='DivideTI_TI_INT1' )
602<   CALL test_arithmetic( multiply_op=.FALSE.,               &
603<     op1_ti_dd=3,  op1_ti_h=12,  op1_ti_m=18,  op1_ti_s=33, &
604<     op2_int=4,                                             &
605<     res_ti_dd=0,  res_ti_h=21, res_ti_m=04,  res_ti_s=38,  &
606<     res_ti_sn=1,  res_ti_sd=4,                             &
607<     testname='DivideTI_TI_INT2' )
608<   CALL test_arithmetic( multiply_op=.FALSE.,               &
609<     op1_ti_s=01, op1_ti_sn=03, op1_ti_sd=04,               &
610<     op2_int=5,                                             &
611<     res_ti_s=0, res_ti_sn=7,  res_ti_sd=20,                &
612<     testname='DivideTI_TI_INT3' )
613<
614<   ! Test adjust_io_timestr()
615< !     CT = 2000-01-26_00:00:00   (current time)
616< !     ST = 2000-01-24_12:00:00   (start time)
617< !     TI = 00000_03:00:00        (time interval)
618< ! the resulting time string should be:
619< !     2000-01-26_00:00:00
620<   CALL test_adjust_io_timestr( TI_h=3, TI_m=0, TI_s=0,          &
621<     CT_yy=2000,  CT_mm=1,  CT_dd=26,  CT_h=0,  CT_m=0,  CT_s=0, &
622<     ST_yy=2000,  ST_mm=1,  ST_dd=24,  ST_h=12, ST_m=0,  ST_s=0, &
623<     res_str='2000-01-26_00:00:00', testname='adjust_io_timestr_1' )
624< ! this should fail (and does)
625---
626> !     res_t_yy=2001,  res_t_mm=12,  res_t_dd=2,  res_t_h=22, res_t_m=10,  res_t_s=0,  &
627> !   testname='SubtractT_T_TI1' )
628> ! CALL test_arithmetic( add_op=.FALSE.,                                            &
629> !     op1_t_yy=2005,  op1_t_mm=1,   op1_t_dd=1,  op1_t_h=0,  op1_t_m=00,  op1_t_s=0,  &
630> !    op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=0, op2_ti_h=0, op2_ti_m=00, op2_ti_s=10, &
631> !     res_t_yy=2004,  res_t_mm=12,  res_t_dd=31, res_t_h=23, res_t_m=59,  res_t_s=50, &
632> !    testname='SubtractT_T_TI2' )
633> !  CALL test_arithmetic( add_op=.FALSE.,                                            &
634> !     op1_t_yy=2004,  op1_t_mm=1,   op1_t_dd=1,  op1_t_h=0,  op1_t_m=00,  op1_t_s=0,  &
635> !    op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=0, op2_ti_h=0, op2_ti_m=00, op2_ti_s=10, &
636> !     res_t_yy=2003,  res_t_mm=12,  res_t_dd=31, res_t_h=23, res_t_m=59,  res_t_s=50, &
637> !    testname='SubtractT_T_TI3' )
638> !  CALL test_arithmetic( add_op=.FALSE.,                                            &
639> !     op1_t_yy=2003,  op1_t_mm=1,   op1_t_dd=1,  op1_t_h=0,  op1_t_m=00,  op1_t_s=0,  &
640> !    op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=0, op2_ti_h=0, op2_ti_m=00, op2_ti_s=10, &
641> !     res_t_yy=2002,  res_t_mm=12,  res_t_dd=31, res_t_h=23, res_t_m=59,  res_t_s=50, &
642> !    testname='SubtractT_T_TI4' )
643> !  CALL test_arithmetic( add_op=.FALSE.,                                             &
644> !     op1_t_yy=2005,  op1_t_mm=04,  op1_t_dd=01,  op1_t_h=2,  op1_t_m=40,  op1_t_s=10, &
645> !    op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=366, op2_ti_h=22, op2_ti_m=10, op2_ti_s=10, &
646> !     res_t_yy=2004,  res_t_mm=03,  res_t_dd=30,  res_t_h=4,  res_t_m=30,  res_t_s=00, &
647> !    testname='SubtractT_T_TI5' )
648> !  CALL test_arithmetic( add_op=.FALSE.,                                             &
649> !     op1_t_yy=2006,  op1_t_mm=01,  op1_t_dd=01,  op1_t_h=8,  op1_t_m=40,  op1_t_s=10, &
650> !    op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=367, op2_ti_h=4, op2_ti_m=10, op2_ti_s=10, &
651> !     res_t_yy=2004,  res_t_mm=12,  res_t_dd=30,  res_t_h=4,  res_t_m=30,  res_t_s=00, &
652> !    testname='SubtractT_T_TI6' )
653> !  ! ESMF_Time = ESMF_Time - ESMF_TimeInterval with fractions
654> !  CALL test_arithmetic( add_op=.FALSE.,                                             &
655> !     op1_t_yy=2005,  op1_t_mm=01,  op1_t_dd=01,  op1_t_h=00,  op1_t_m=00,  op1_t_s=00, &
656> !     op1_t_sn=00,  op1_t_sd=00, &
657> !    op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=0, op2_ti_h=0, op2_ti_m=00, op2_ti_s=01, &
658> !    op2_ti_sn=01, op2_ti_sd=03, &
659> !     res_t_yy=2004,  res_t_mm=12,  res_t_dd=31,  res_t_h=23,  res_t_m=59,  res_t_s=58, &
660> !     res_t_sn=02,  res_t_sd=03, &
661> !    testname='SubtractT_T_TI_F1' )
662> !  ! ESMF_TimeInterval = ESMF_Time - ESMF_Time
663> !  CALL test_arithmetic( add_op=.FALSE.,                                            &
664> !     op1_t_yy=2001,  op1_t_mm=12,  op1_t_dd=3,  op1_t_h=1,  op1_t_m=20,  op1_t_s=10, &
665> !     op2_t_yy=2001,  op2_t_mm=12,  op2_t_dd=1,  op2_t_h=1,  op2_t_m=10,  op2_t_s=10, &
666> !    res_ti_yy=0000, res_ti_mm=00, res_ti_dd=2, res_ti_h=0, res_ti_m=10, res_ti_s=0,  &
667> !    testname='SubtractTI_T_T1' )
668> !  CALL test_arithmetic( add_op=.FALSE.,                                            &
669> !     op1_t_yy=2002,  op1_t_mm=1,   op1_t_dd=1,  op1_t_h=0,  op1_t_m=00,  op1_t_s=00, &
670> !     op2_t_yy=2001,  op2_t_mm=12,  op2_t_dd=31, op2_t_h=23, op2_t_m=59,  op2_t_s=50, &
671> !    res_ti_yy=0000, res_ti_mm=00, res_ti_dd=0, res_ti_h=0, res_ti_m=00, res_ti_s=10, &
672> !    testname='SubtractTI_T_T2' )
673> !  CALL test_arithmetic( add_op=.FALSE.,                                            &
674> !     op1_t_yy=2005,  op1_t_mm=1,   op1_t_dd=1,  op1_t_h=0,  op1_t_m=00,  op1_t_s=00, &
675> !     op2_t_yy=2004,  op2_t_mm=12,  op2_t_dd=31, op2_t_h=23, op2_t_m=59,  op2_t_s=50, &
676> !    res_ti_yy=0000, res_ti_mm=00, res_ti_dd=0, res_ti_h=0, res_ti_m=00, res_ti_s=10, &
677> !    testname='SubtractTI_T_T3' )
678> ! CALL test_arithmetic( add_op=.FALSE.,                                            &
679> !     op1_t_yy=2003,  op1_t_mm=03,  op1_t_dd=01, op1_t_h=00, op1_t_m=00,  op1_t_s=00, &
680> !     op2_t_yy=2003,  op2_t_mm=02,  op2_t_dd=28, op2_t_h=23, op2_t_m=59,  op2_t_s=50, &
681> !    res_ti_yy=0000, res_ti_mm=00, res_ti_dd=0, res_ti_h=0, res_ti_m=00, res_ti_s=10, &
682> !    testname='SubtractTI_T_T4' )
683> !  CALL test_arithmetic( add_op=.FALSE.,                                            &
684> !     op1_t_yy=2004,  op1_t_mm=03,  op1_t_dd=01, op1_t_h=00, op1_t_m=00,  op1_t_s=00, &
685> !     op2_t_yy=2004,  op2_t_mm=02,  op2_t_dd=28, op2_t_h=23, op2_t_m=59,  op2_t_s=50, &
686> !    res_ti_yy=0000, res_ti_mm=00, res_ti_dd=1, res_ti_h=0, res_ti_m=00, res_ti_s=10, &
687> !    testname='SubtractTI_T_T5' )
688> !  CALL test_arithmetic( add_op=.FALSE.,                                            &
689> !     op1_t_yy=2002,  op1_t_mm=02,  op1_t_dd=28, op1_t_h=00, op1_t_m=00,  op1_t_s=00, &
690> !     op2_t_yy=2002,  op2_t_mm=02,  op2_t_dd=28, op2_t_h=00, op2_t_m=00,  op2_t_s=00, &
691> !    res_ti_yy=0000, res_ti_mm=00, res_ti_dd=0, res_ti_h=0, res_ti_m=00, res_ti_s=00, &
692> !    testname='SubtractTI_T_T6' )
693> !  CALL test_arithmetic( add_op=.FALSE.,                                            &
694> !     op1_t_yy=2003,  op1_t_mm=02,  op1_t_dd=28, op1_t_h=00, op1_t_m=00,  op1_t_s=00, &
695> !     op2_t_yy=2002,  op2_t_mm=02,  op2_t_dd=28, op2_t_h=00, op2_t_m=00,  op2_t_s=00, &
696> !    res_ti_yy=0000, res_ti_mm=00, res_ti_dd=365, res_ti_h=0, res_ti_m=00, res_ti_s=00, &
697> !    testname='SubtractTI_T_T7' )
698> !  CALL test_arithmetic( add_op=.FALSE.,                                            &
699> !     op1_t_yy=2004,  op1_t_mm=02,  op1_t_dd=28, op1_t_h=00, op1_t_m=00,  op1_t_s=00, &
700> !     op2_t_yy=2003,  op2_t_mm=02,  op2_t_dd=28, op2_t_h=00, op2_t_m=00,  op2_t_s=00, &
701> !    res_ti_yy=0000, res_ti_mm=00, res_ti_dd=365, res_ti_h=0, res_ti_m=00, res_ti_s=00, &
702> !    testname='SubtractTI_T_T8' )
703> !  CALL test_arithmetic( add_op=.FALSE.,                                            &
704> !     op1_t_yy=2005,  op1_t_mm=02,  op1_t_dd=28, op1_t_h=00, op1_t_m=00,  op1_t_s=00, &
705> !     op2_t_yy=2004,  op2_t_mm=02,  op2_t_dd=28, op2_t_h=00, op2_t_m=00,  op2_t_s=00, &
706> !    res_ti_yy=0000, res_ti_mm=00, res_ti_dd=366, res_ti_h=0, res_ti_m=00, res_ti_s=00, &
707> !    testname='SubtractTI_T_T9' )
708> !  CALL test_arithmetic( add_op=.FALSE.,                                            &
709> !     op1_t_yy=2003,  op1_t_mm=03,  op1_t_dd=01, op1_t_h=00, op1_t_m=00,  op1_t_s=00, &
710> !     op2_t_yy=2002,  op2_t_mm=02,  op2_t_dd=28, op2_t_h=00, op2_t_m=00,  op2_t_s=00, &
711> !    res_ti_yy=0000, res_ti_mm=00, res_ti_dd=366, res_ti_h=0, res_ti_m=00, res_ti_s=00, &
712> !    testname='SubtractTI_T_T10' )
713> !  CALL test_arithmetic( add_op=.FALSE.,                                            &
714> !     op1_t_yy=2005,  op1_t_mm=03,  op1_t_dd=01, op1_t_h=00, op1_t_m=00,  op1_t_s=00, &
715> !     op2_t_yy=2004,  op2_t_mm=02,  op2_t_dd=28, op2_t_h=00, op2_t_m=00,  op2_t_s=00, &
716> !    res_ti_yy=0000, res_ti_mm=00, res_ti_dd=367, res_ti_h=0, res_ti_m=00, res_ti_s=00, &
717> !    testname='SubtractTI_T_T11' )
718> !  CALL test_arithmetic( add_op=.FALSE.,                                            &
719> !     op1_t_yy=2005,  op1_t_mm=03,  op1_t_dd=01, op1_t_h=00, op1_t_m=00,  op1_t_s=00, &
720> !     op2_t_yy=2004,  op2_t_mm=02,  op2_t_dd=28, op2_t_h=23, op2_t_m=59,  op2_t_s=50, &
721> !    res_ti_yy=0000, res_ti_mm=00, res_ti_dd=366, res_ti_h=0, res_ti_m=00, res_ti_s=10, &
722> !    testname='SubtractTI_T_T12' )
723> !  CALL test_arithmetic( add_op=.FALSE.,                                            &
724> !     op1_t_yy=2004,  op1_t_mm=02,  op1_t_dd=28, op1_t_h=23, op1_t_m=59,  op1_t_s=50, &
725> !     op2_t_yy=2005,  op2_t_mm=03,  op2_t_dd=01, op2_t_h=00, op2_t_m=00,  op2_t_s=00, &
726> !    res_ti_yy=0000, res_ti_mm=00, res_ti_dd=-366, res_ti_h=0, res_ti_m=00, res_ti_s=-10, &
727> !    testname='SubtractTI_T_T13' )
728> !  CALL test_arithmetic( add_op=.FALSE.,                                            &
729> !     op1_t_yy=-2002,  op1_t_mm=02,  op1_t_dd=28, op1_t_h=00, op1_t_m=00,  op1_t_s=00, &
730> !     op2_t_yy=-2002,  op2_t_mm=02,  op2_t_dd=28, op2_t_h=00, op2_t_m=00,  op2_t_s=00, &
731> !    res_ti_yy=0000, res_ti_mm=00, res_ti_dd=0, res_ti_h=0, res_ti_m=00, res_ti_s=00, &
732> !    testname='SubtractTI_T_T14' )
733> !  ! ESMF_TimeInterval = ESMF_TimeInterval - ESMF_TimeInterval
734> !  CALL test_arithmetic( add_op=.FALSE.,                                            &
735> !    op1_ti_yy=0000, op1_ti_mm=00, op1_ti_dd=3, op1_ti_h=1, op1_ti_m=20, op1_ti_s=10, &
736> !    op2_ti_yy=0000, op2_ti_mm=00, op2_ti_dd=1, op2_ti_h=1, op2_ti_m=10, op2_ti_s=10, &
737> !    res_ti_yy=0000, res_ti_mm=00, res_ti_dd=2, res_ti_h=0, res_ti_m=10, res_ti_s=0,  &
738> !    testname='SubtractTI_TI_TI1' )
739> !  CALL test_arithmetic( add_op=.FALSE.,                                            &
740> !    op1_ti_yy=0000, op1_ti_mm=00, op1_ti_dd=3, op1_ti_h=1, op1_ti_m=20, op1_ti_s=10, &
741> !    op2_ti_yy=0000, op2_ti_mm=00, op2_ti_dd=-1, op2_ti_h=-1, op2_ti_m=-10, op2_ti_s=-10, &
742> !    res_ti_yy=0000, res_ti_mm=00, res_ti_dd=4, res_ti_h=2, res_ti_m=30, res_ti_s=20,  &
743> !    testname='SubtractTI_TI_TI2' )
744> !  CALL test_arithmetic( add_op=.FALSE.,                                            &
745> !    op1_ti_yy=0000, op1_ti_mm=00, op1_ti_dd=-1, op1_ti_h=-1, op1_ti_m=-10, op1_ti_s=-10, &
746> !    op2_ti_yy=0000, op2_ti_mm=00, op2_ti_dd=-3, op2_ti_h=-1, op2_ti_m=-20, op2_ti_s=-10, &
747> !    res_ti_yy=0000, res_ti_mm=00, res_ti_dd=2, res_ti_h=0, res_ti_m=10, res_ti_s=00,  &
748> !    testname='SubtractTI_TI_TI3' )
749> !  ! Negative result ESMF_TimeInterval = ESMF_TimeInterval - ESMF_TimeInterval
750> !  CALL test_arithmetic( add_op=.FALSE.,                                            &
751> !   op1_ti_yy=0000, op1_ti_mm=00, op1_ti_dd=1, op1_ti_h=1, op1_ti_m=10, op1_ti_s=10, &
752> !    op2_ti_yy=0000, op2_ti_mm=00, op2_ti_dd=3, op2_ti_h=1, op2_ti_m=20, op2_ti_s=10, &
753> !    res_ti_yy=0000, res_ti_mm=00, res_ti_dd=-2, res_ti_h=0, res_ti_m=-10, res_ti_s=0,  &
754> !    testname='SubtractTI_TI_TIN1' )
755> !  CALL test_arithmetic( add_op=.FALSE.,                                            &
756> !    op1_ti_yy=0000, op1_ti_mm=00, op1_ti_dd=-1, op1_ti_h=-1, op1_ti_m=-10, op1_ti_s=-10, &
757> !    op2_ti_yy=0000, op2_ti_mm=00, op2_ti_dd=3, op2_ti_h=1, op2_ti_m=20, op2_ti_s=10, &
758> !    res_ti_yy=0000, res_ti_mm=00, res_ti_dd=-4, res_ti_h=-2, res_ti_m=-30, res_ti_s=-20,  &
759> !    testname='SubtractTI_TI_TIN2' )
760> !
761> !  ! Un-normalized ESMF_TimeInterval = ESMF_TimeInterval - ESMF_TimeInterval
762> !  ! this is an error
763> !!  CALL test_arithmetic( add_op=.FALSE.,                                            &
764> !!    op1_ti_yy=2001, op1_ti_mm=11, op1_ti_dd=3, op1_ti_h=1, op1_ti_m=20, op1_ti_s=10, &
765> !!    op2_ti_yy=2001, op2_ti_mm=11, op2_ti_dd=1, op2_ti_h=1, op2_ti_m=10, op2_ti_s=10, &
766> !!    res_ti_yy=0000, res_ti_mm=00, res_ti_dd=2, res_ti_h=0, res_ti_m=10, res_ti_s=0,  &
767> !!    testname='SubtractTI_TI_TIU1', expect_error=.TRUE. )
768> !
769> !  ! this one should FAIL, and does
770> !!  CALL test_arithmetic( add_op=.TRUE.,                                             &
771> !!     op1_t_yy=2001,  op1_t_mm=12,  op1_t_dd=3,  op1_t_h=1,  op1_t_m=20,  op1_t_s=10, &
772> !!    op2_ti_yy=   0, op2_ti_mm= 0, op2_ti_dd=0, op2_ti_h=3, op2_ti_m=10, op2_ti_s=10, &
773> !!     res_t_yy=2002,  res_t_mm=12,  res_t_dd=3,  res_t_h=4,  res_t_m=30,  res_t_s=20, &
774> !!    testname='AddTT1' )
775> !
776> !  ! Multiplication tests
777> !  ! ESMF_TimeInterval = ESMF_TimeInterval * INTEGER
778> !  CALL test_arithmetic( multiply_op=.TRUE.,                &
779> !    op1_ti_dd=3,  op1_ti_h=12,  op1_ti_m=18,  op1_ti_s=33, &
780> !    op2_int=2,                                             &
781> !    res_ti_dd=6,  res_ti_h=24, res_ti_m=37,  res_ti_s=06,  &
782> !    testname='MultiplyTI_TI_INT1' )
783> !  CALL test_arithmetic( multiply_op=.TRUE.,                &
784> !    op1_ti_dd=350,  op1_ti_h=23,  op1_ti_m=50,  op1_ti_s=50, &
785> !    op2_int=2,                                             &
786> !   res_ti_dd=701,  res_ti_h=23, res_ti_m=41,  res_ti_s=40,&
787> !    testname='MultiplyTI_TI_INT2' )
788> !  CALL test_arithmetic( multiply_op=.TRUE.,                &
789> !    op1_ti_s=01, op1_ti_sn=03, op1_ti_sd=04,               &
790> !    op2_int=8,                                             &
791> !    res_ti_s=14,                                           &
792> !   testname='MultiplyTI_TI_INT3' )
793> !
794> !  ! Division tests
795> !  ! ESMF_TimeInterval = ESMF_TimeInterval / INTEGER
796> !  CALL test_arithmetic( multiply_op=.FALSE.,               &
797> !    op1_ti_dd=3,  op1_ti_h=12,  op1_ti_m=18,  op1_ti_s=33, &
798> !    op2_int=3,                                             &
799> !    res_ti_dd=1,  res_ti_h=04, res_ti_m=06,  res_ti_s=11,  &
800> !    testname='DivideTI_TI_INT1' )
801> !  CALL test_arithmetic( multiply_op=.FALSE.,               &
802> !    op1_ti_dd=3,  op1_ti_h=12,  op1_ti_m=18,  op1_ti_s=33, &
803> !    op2_int=4,                                             &
804> !    res_ti_dd=0,  res_ti_h=21, res_ti_m=04,  res_ti_s=38,  &
805> !    res_ti_sn=1,  res_ti_sd=4,                             &
806> !    testname='DivideTI_TI_INT2' )
807> !  CALL test_arithmetic( multiply_op=.FALSE.,               &
808> !    op1_ti_s=01, op1_ti_sn=03, op1_ti_sd=04,               &
809> !    op2_int=5,                                             &
810> !    res_ti_s=0, res_ti_sn=7,  res_ti_sd=20,                &
811> !    testname='DivideTI_TI_INT3' )
812> !
813> !  ! Test adjust_io_timestr()
814> !!     CT = 2000-01-26_00:00:00   (current time)
815> !!     ST = 2000-01-24_12:00:00   (start time)
816> !!     TI = 00000_03:00:00        (time interval)
817> !! the resulting time string should be:
818> !!     2000-01-26_00:00:00
8191759,1760c1760,1766
820< !    res_str='2000-01-26_00:00:01', testname='adjust_io_timestr_FAIL1' )
821<
822---
823> !    res_str='2000-01-26_00:00:00', testname='adjust_io_timestr_1' )
824> !! this should fail (and does)
825> !!  CALL test_adjust_io_timestr( TI_h=3, TI_m=0, TI_s=0,          &
826> !!    CT_yy=2000,  CT_mm=1,  CT_dd=26,  CT_h=0,  CT_m=0,  CT_s=0, &
827> !!    ST_yy=2000,  ST_mm=1,  ST_dd=24,  ST_h=12, ST_m=0,  ST_s=0, &
828> !!    res_str='2000-01-26_00:00:01', testname='adjust_io_timestr_FAIL1' )
829> !
8301763,1765c1769,1771
831<     start_yy=2002, start_mm=12, start_dd=27, start_h=3, start_m=0, start_s=0, &
832<      stop_yy=2002,  stop_mm=12,  stop_dd=28,  stop_h=8,  stop_m=0,  stop_s=0, &
833<     timestep_d=0, timestep_h=0, timestep_m=0, timestep_s=600,                 &
834---
835>     start_yy=2024, start_mm=01, start_dd=99, start_h=3, start_m=0, start_s=0, &
836>      stop_yy=2024,  stop_mm=02,  stop_dd=02,  stop_h=8,  stop_m=0,  stop_s=0, &
837>     timestep_d=0, timestep_h=0, timestep_m=0, timestep_s=100,                 &
8381768,1778c1774
839<   CALL test_clock_advance(                                                    &
840<     start_yy=2003, start_mm=12, start_dd=29, start_h=9, start_m=0, start_s=0, &
841<      stop_yy=2004,  stop_mm=1,   stop_dd=2,   stop_h=9,  stop_m=0,  stop_s=0, &
842<     timestep_d=0, timestep_h=0, timestep_m=0, timestep_s=3600,                &
843<     testname="StdYearClockAdvance", increment_S=10 )
844<
845<   CALL test_clock_advance(                                                    &
846<     start_yy=2004, start_mm=12, start_dd=29, start_h=9, start_m=0, start_s=0, &
847<      stop_yy=2005,  stop_mm=1,   stop_dd=2,   stop_h=9,  stop_m=0,  stop_s=0, &
848<     timestep_d=0, timestep_h=0, timestep_m=0, timestep_s=3600,                &
849<     testname="LeapYearClockAdvance", increment_S=10 )
850---
851>   PRINT *,'END CLOCK ADVANCE'       
8521780,1781d1775
853<   ! NRCM domain 3 case:  120 seconds / 9
854<   ! 18 timesteps through end of leap year
8551783,1789c1777,1797
856<     start_yy=2004, start_mm=12, start_dd=31, start_h=23, start_m=58, start_s=0,&
857<      stop_yy=2005,  stop_mm=1,   stop_dd=1,   stop_h=0,  stop_m=2,  stop_s=0, &
858<     timestep_d=0, timestep_h=0, timestep_m=0, timestep_s=13,                  &
859<     timestep_sn=1, timestep_sd=3,                                             &
860<     testname="LeapYearFractionClockAdvance",                                  &
861<     increment_S=1, increment_Sn=1, increment_Sd=3 )
862<
863---
864>     start_yy=2024, start_mm=07, start_dd=74, start_h=23, start_m=00, start_s=0, &
865>      stop_yy=2025,  stop_mm=01,   stop_dd=07,   stop_h=9,  stop_m=0,  stop_s=0, &
866>     timestep_d=0, timestep_h=0, timestep_m=0, timestep_s=1850,                &
867>     testname="StdYearClockAdvance", increment_S=10 )
868> !
869> !  CALL test_clock_advance(                                                    &
870> !    start_yy=2004, start_mm=12, start_dd=29, start_h=9, start_m=0, start_s=0, &
871> !     stop_yy=2005,  stop_mm=1,   stop_dd=2,   stop_h=9,  stop_m=0,  stop_s=0, &
872> !    timestep_d=0, timestep_h=0, timestep_m=0, timestep_s=3600,                &
873> !    testname="LeapYearClockAdvance", increment_S=10 )
874> !
875> !  ! NRCM domain 3 case:  120 seconds / 9
876> !  ! 18 timesteps through end of leap year
877> !  CALL test_clock_advance(                                                    &
878> !    start_yy=2004, start_mm=12, start_dd=31, start_h=23, start_m=58, start_s=0,&
879> !     stop_yy=2005,  stop_mm=1,   stop_dd=1,   stop_h=0,  stop_m=2,  stop_s=0, &
880> !    timestep_d=0, timestep_h=0, timestep_m=0, timestep_s=13,                  &
881> !    timestep_sn=1, timestep_sd=3,                                             &
882> !    testname="LeapYearFractionClockAdvance",                                  &
883> !    increment_S=1, increment_Sn=1, increment_Sd=3 )
884> !
Note: See TracBrowser for help on using the repository browser.