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

Annotation of /MITgcm/pkg/cal/cal_daysformonth.F

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


Revision 1.2 - (hide 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, 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 edhill 1.2 C $Header: /u/u3/gcmpack/MITgcm/pkg/cal/cal_daysformonth.F,v 1.1.20.2 2003/10/07 20:46:37 adcroft Exp $
2     C $Name: $
3 heimbach 1.1
4 edhill 1.2 #include "CAL_OPTIONS.h"
5 heimbach 1.1
6     subroutine cal_DaysForMonth(
7     I imonth,
8     O firstday,
9     O lastday,
10     O ndays,
11     I mythid
12     & )
13    
14     c ==================================================================
15     c SUBROUTINE cal_DaysForMonth
16     c ==================================================================
17     c
18     c o Given the current month of the integration this routine returns
19     c first, the last and the number of calendar days that will have
20     c to be performed.
21     c
22     c This routine also checks consistency of variables quite
23     c extensively.
24     c
25     c started: Christian Eckert eckert@mit.edu 06-Apr-2000
26     c
27     c changed:
28     c
29     c ==================================================================
30     c SUBROUTINE cal_DaysForMonth
31     c ==================================================================
32    
33     implicit none
34    
35     c == global variables ==
36    
37     #include "cal.h"
38    
39     c == routine arguments ==
40    
41     integer imonth
42     integer firstday
43     integer lastday
44     integer ndays
45     integer mythid
46    
47     c == local variables ==
48    
49     integer i
50     integer ierr
51     integer nummonths
52     integer numdays
53     integer firstyear
54     integer firstmonth
55     integer firstd
56     integer lyfirst
57     integer lastyear
58     integer lastmonth
59     integer lastd
60     integer lastsecs
61     integer lylast
62     integer currentyear
63     integer currentmonth
64     integer lycurrent
65    
66     c == external ==
67    
68     integer cal_IntMonths
69     external cal_IntMonths
70     integer cal_IsLeap
71     external cal_IsLeap
72    
73     c == end of interface ==
74    
75     lyfirst = cal_IsLeap( firstyear, mythid )
76     lylast = cal_IsLeap( lastyear, mythid )
77    
78     nummonths = cal_Intmonths( mythid )
79    
80     firstyear = modelstartdate(1)/10000
81     firstmonth = mod(modelstartdate(1)/100,100)
82     firstd = mod(modelstartdate(1),100)
83     lastyear = modelenddate(1)/10000
84     lastmonth = mod(modelenddate(1)/100,100)
85     lastd = mod(modelenddate(1),100)
86     lastsecs = modelenddate(2)/10000*secondsperhour +
87     & mod(modelenddate(2)/100,100)*secondsperminute +
88     & mod(modelenddate(2),100)
89    
90     if ( nummonths .eq. 1 ) then
91     if ( imonth .eq. 1 ) then
92     c-- Get the number of days in the first month.
93     if ( firstmonth .eq. lastmonth ) then
94     if (lastsecs .eq. 0) then
95     c-- Not really another day.
96     lastday = lastd - 1
97     else
98     lastday = lastd
99     endif
100     firstday = 1
101     else if ( mod(firstmonth+1,nmonthyear) .eq. lastmonth ) then
102     c-- This can only happen if we end at midnight of the first
103     c-- day of the next month.
104     if ( ( modelenddate(2) .eq. 0 ) .and.
105     & ( mod(modelenddate(1),100) .eq. 1 ) ) then
106     firstday = firstd
107     lastday = ndaymonth(firstmonth,lyfirst)
108     else
109     c-- We do not end at midnight of the first day of
110     c-- the next month.
111     ierr = 2704
112     call cal_PrintError( ierr, mythid )
113     stop ' stopped in cal_DaysForMonth.'
114     endif
115     else
116     c-- The first and the last month are inconsistent with imonth.
117     ierr = 2703
118     call cal_PrintError( ierr, mythid )
119     stop ' stopped in cal_DaysForMonth.'
120     endif
121     else
122     c-- The variables nummonths and imonth are inconsistent;
123     c-- ( imonth .gt. nummonths ).
124     ierr = 2702
125     call cal_PrintError( ierr, mythid )
126     stop ' stopped in cal_DaysForMonth.'
127     endif
128    
129     else if ( nummonths .gt. 1 ) then
130     c-- More than one month of integration.
131     if ( imonth .eq. 1 ) then
132     firstday = 1
133     lastday = ndaymonth(firstmonth,lyfirst) - firstd + 1
134     else if ( ( imonth .gt. 1 ) .and.
135     & ( imonth .lt. nummonths ) ) then
136     c-- Somewhere between first and last month.
137     currentmonth = firstmonth
138     currentyear = firstyear
139     numdays = ndaymonth(firstmonth,lyfirst) - firstd + 1
140     do i = 2,imonth-1
141     c-- Accumulate days of the intermediate months.
142     currentmonth = mod(currentmonth+1,nmonthyear)
143     if ( currentmonth .eq. 1 ) then
144     currentyear = currentyear + 1
145     endif
146     lycurrent = cal_IsLeap( currentyear, mythid )
147     numdays = numdays + ndaymonth(currentmonth,lycurrent)
148     enddo
149     currentmonth = mod(currentmonth+1,nmonthyear)
150     if ( currentmonth .eq. 1 ) then
151     currentyear = currentyear + 1
152     endif
153     lycurrent = cal_IsLeap( currentyear, mythid )
154     firstday = numdays + 1
155     lastday = numdays + ndaymonth(currentmonth,lycurrent)
156     else if ( imonth .eq. nummonths ) then
157     c-- The last month of the integration.
158     currentmonth = firstmonth
159     currentyear = firstyear
160     numdays = ndaymonth(firstmonth,lyfirst) - firstd + 1
161     do i = 2,nummonths-1
162     c-- Accumulate days of the intermediate months.
163     currentmonth = mod(currentmonth+1,nmonthyear)
164     if ( currentmonth .eq. 1 ) then
165     currentyear = currentyear + 1
166     endif
167     lycurrent = cal_IsLeap( currentyear, mythid )
168     numdays = numdays + ndaymonth(currentmonth,lycurrent)
169     enddo
170     c-- Prepare for the last month of integration.
171     currentmonth = mod(currentmonth+1,nmonthyear)
172     if ( currentmonth .eq. 1 ) then
173     currentyear = currentyear + 1
174     endif
175     lycurrent = cal_IsLeap( currentyear, mythid )
176     if ( ( modelenddate(2) .eq. 0 ) .and.
177     & ( mod(modelenddate(1),100) .eq. 1 ) ) then
178     c-- This can only happen if we end at midnight of the first
179     c-- day of the next month.
180     lastday = numdays + ndaymonth(currentmonth,lycurrent)
181     else
182     c-- We do not stop at midnight of the first day of the
183     c-- next month.
184     if (lastsecs .eq. 0) then
185     c-- But we might stop at midnight of a day.
186     lastday = numdays + lastd - 1
187     else
188     lastday = numdays + lastd
189     endif
190     endif
191     firstday = numdays + 1
192     else
193     c-- The variables imonth and nummonths are inconsistent.
194     ierr = 2705
195     call cal_PrintError( ierr, mythid )
196     stop ' stopped in cal_DaysForMonth.'
197     endif
198     else
199     c-- The number of months to integrate is wrong; check cal_IntMonths.
200     ierr = 2701
201     call cal_PrintError( ierr, mythid )
202     stop ' stopped in cal_DaysForMonth.'
203     endif
204    
205     c-- The number of days to integrate in the given month.
206     ndays = lastday - firstday + 1
207    
208     return
209     end
210    

  ViewVC Help
Powered by ViewVC 1.1.22