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

Contents of /MITgcm/pkg/cal/cal_monthsforyear.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, 7 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, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint54d_post, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint54e_post, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, 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, checkpoint64, checkpoint65, checkpoint60, checkpoint61, checkpoint62, checkpoint63, checkpoint57a_post, checkpoint57h_pre, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, 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, checkpoint63p, checkpoint63q, checkpoint63r, checkpoint63s, checkpoint63l, checkpoint63m, checkpoint63n, checkpoint63o, 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, checkpoint65o, 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, checkpoint64y, checkpoint64x, checkpoint58l_post, checkpoint64z, checkpoint53f_post, checkpoint64q, checkpoint64p, checkpoint64s, checkpoint64r, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint64i, checkpoint64h, checkpoint64k, checkpoint64j, checkpoint64m, checkpoint64l, checkpoint64o, checkpoint64n, checkpoint64a, checkpoint64c, checkpoint64b, checkpoint64e, checkpoint64d, checkpoint64g, checkpoint64f, 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, HEAD
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_monthsforyear.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_MonthsForYear(
7 I iyear,
8 O firstmonth,
9 O lastmonth,
10 O nmonths,
11 I mythid
12 & )
13
14 c ==================================================================
15 c SUBROUTINE cal_MonthsForYear
16 c ==================================================================
17 c
18 c o Given the current year of integration this routine returns
19 c the number of months affected by the integration as well as the
20 c first month and the last month in the sequence of the total
21 c number of months that are to be integrated.
22 c
23 c This routine also checks consistency of variables quite
24 c extensively.
25 c
26 c started: Christian Eckert eckert@mit.edu 06-Apr-2000
27 c
28 c changed:
29 c
30 c ==================================================================
31 c SUBROUTINE cal_MonthsForYear
32 c ==================================================================
33
34 implicit none
35
36 c == global variables ==
37
38 #include "cal.h"
39
40 c == routine arguments ==
41
42 integer iyear
43 integer firstmonth
44 integer lastmonth
45 integer nmonths
46 integer mythid
47
48 c == local variables ==
49
50 integer ierr
51 integer numyears
52 integer firstyear
53 integer firstmon
54 integer lastyear
55 integer lastmon
56 integer lastday
57 integer lastsecs
58
59 c == external ==
60
61 integer cal_IntYears
62 external cal_IntYears
63
64 c == end of interface ==
65
66 numyears = cal_IntYears( mythid )
67
68 firstyear = modelstartdate(1)/10000
69 firstmon = mod(modelstartdate(1)/100,100)
70 lastyear = modelenddate(1)/10000
71 lastmon = mod(modelenddate(1)/100,100)
72 lastday = mod(modelenddate(1),100)
73 lastsecs = modelenddate(2)/10000*secondsperhour +
74 & mod(modelenddate(2)/100,100)*secondsperminute +
75 & mod(modelenddate(2),100)
76
77 if ( numyears .eq. 1 ) then
78 c-- Only one calendar year affected by the integration.
79 if ( iyear .eq. 1 ) then
80 if ( firstyear .eq. lastyear ) then
81 if ( (lastday .eq. 1) .and. (lastsecs .eq. 0) ) then
82 c-- Not really next month yet.
83 lastmonth = lastmon - firstmon
84 else
85 c-- The most frequent case.
86 lastmonth = lastmon - firstmon + 1
87 endif
88 firstmonth = 1
89 else if ( firstyear+1 .eq. lastyear ) then
90 c-- This is only the case if we end at midnight of 01-Jan
91 c-- of the next year.
92 if ( ( modelenddate(2) .eq. 0) .and.
93 & ( mod(modelenddate(1),100) .eq. 1 ) .and.
94 & mod(modelenddate(1)/100,100) .eq. 1 ) then
95 firstmonth = 1
96 lastmonth = nmonthyear - firstmon + 1
97 else
98 c-- Inconsistent modelenddate; check cal_IntYears.
99 ierr = 2804
100 call cal_PrintError( ierr, mythid )
101 stop ' stopped in cal_MonthsForYear.'
102 endif
103 else
104 c-- The specification of lastyear is wrong.
105 ierr = 2803
106 call cal_PrintError( ierr, mythid )
107 stop ' stopped in cal_MonthsForYear.'
108 endif
109 else
110 c-- The variables numyears and iyear are inconsistent;
111 c-- ( iyear .gt. numyears ).
112 ierr = 2802
113 call cal_PrintError( ierr, mythid )
114 stop ' stopped in cal_MonthsForYear.'
115 endif
116
117 else if ( numyears .gt. 1 ) then
118 c-- More than one year of integration.
119 if ( iyear .eq. 1 ) then
120 firstmonth = 1
121 lastmonth = nmonthyear - firstmon + 1
122 else if ( ( iyear .gt. 1 ) .and.
123 & ( iyear .lt. numyears ) ) then
124 c-- Somewhere between first and last year.
125 firstmonth = (nmonthyear - firstmon + 1) +
126 & (iyear - 2)*nmonthyear + 1
127 lastmonth = (nmonthyear - firstmon + 1) +
128 & (iyear - 2)*nmonthyear + nmonthyear
129 else if ( iyear .eq. numyears ) then
130 c-- The last year of the integration.
131 if ( lastyear .eq. (firstyear + numyears - 1) ) then
132 if ( (lastday .eq. 1) .and. (lastsecs .eq. 0) ) then
133 c-- Not really next month yet.
134 lastmonth = (nmonthyear - firstmon + 1) +
135 & (numyears - 2)*nmonthyear + lastmon - 1
136 else
137 c-- The most frequent case.
138 lastmonth = (nmonthyear - firstmon + 1) +
139 & (numyears - 2)*nmonthyear + lastmon
140 endif
141 firstmonth = (nmonthyear - firstmon + 1) +
142 & (numyears - 2)*nmonthyear + 1
143 else if ( lastyear .eq. (firstyear + numyears) ) then
144 c-- This is only the case if we end at midnight of 01-Jan.
145 if ( ( modelenddate(2) .eq. 0) .and.
146 & ( mod(modelenddate(1),100) .eq. 1 ) .and.
147 & mod(modelenddate(1)/100,100) .eq. 1 ) then
148 firstmonth = (nmonthyear - firstmon) +
149 & (numyears - 2)*nmonthyear + 1
150 lastmonth = (nmonthyear - firstmon) +
151 & (numyears - 2)*nmonthyear + nmonthyear
152 else
153 c-- Inconsistent modelenddate; check cal_IntYears.
154 ierr = 2807
155 call cal_PrintError( ierr, mythid )
156 stop ' stopped in cal_MonthsForYear.'
157 endif
158 else
159 c-- The variables lastyear and numyears are inconsistent.
160 ierr = 2806
161 call cal_PrintError( ierr, mythid )
162 stop ' stopped in cal_MonthsForYear.'
163 endif
164 else
165 c-- The variables iyear and numyears are inconsistent.
166 ierr = 2805
167 call cal_PrintError( ierr, mythid )
168 stop ' stopped in cal_MonthsForYear.'
169 endif
170
171 else
172 c-- The number of years to integrate is wrong; check cal_IntYears.
173 ierr = 2801
174 call cal_PrintError( ierr, mythid )
175 stop ' stopped in cal_MonthsForYear.'
176 endif
177
178 c-- The number of months to integrate in the given year.
179 nmonths = lastmonth - firstmonth + 1
180
181 return
182 end
183

  ViewVC Help
Powered by ViewVC 1.1.22