/[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.1 - (show annotations) (download)
Mon May 14 22:07:26 2001 UTC (23 years, 1 month ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint46n_post, checkpoint47e_post, checkpoint44e_post, checkpoint46l_post, checkpoint46g_pre, checkpoint47c_post, release1_p13_pre, checkpoint50c_post, checkpoint46f_post, checkpoint48e_post, checkpoint50c_pre, checkpoint44f_post, checkpoint46b_post, checkpoint43a-release1mods, ecco_c50_e32, ecco_c50_e33, ecco_c50_e30, ecco_c50_e31, release1_p13, checkpoint40pre3, checkpoint40pre1, checkpoint40pre7, checkpoint40pre6, checkpoint48i_post, checkpoint40pre9, checkpoint40pre8, checkpoint46l_pre, chkpt44d_post, checkpoint51, checkpoint50, release1_p8, release1_p9, checkpoint50d_post, release1_p1, release1_p2, release1_p3, release1_p4, release1_p5, release1_p6, release1_p7, checkpoint50b_pre, checkpoint44e_pre, checkpoint51f_post, release1_b1, ecco_c51_e34d, ecco_c51_e34e, ecco_c51_e34f, ecco_c51_e34g, ecco_c51_e34a, ecco_c51_e34b, ecco_c51_e34c, checkpoint48b_post, checkpoint43, checkpoint51d_post, checkpoint48c_pre, checkpoint47d_pre, release1_chkpt44d_post, checkpoint47a_post, checkpoint48d_pre, checkpoint51j_post, checkpoint47i_post, checkpoint47d_post, icebear5, icebear4, icebear3, icebear2, checkpoint46d_pre, checkpoint40pre2, checkpoint48d_post, release1-branch_tutorials, checkpoint48f_post, checkpoint45d_post, checkpoint46j_pre, chkpt44a_post, checkpoint44h_pre, checkpoint48h_post, checkpoint40pre4, ecco_c50_e29, checkpoint51b_pre, checkpoint46a_post, checkpoint47g_post, checkpoint46j_post, checkpoint51h_pre, checkpoint46k_post, ecco_c50_e28, chkpt44c_pre, checkpoint48a_post, checkpoint45a_post, checkpoint50f_post, checkpoint50a_post, checkpoint50f_pre, ecco_c44_e19, ecco_c44_e18, ecco_c44_e17, ecco_c44_e16, release1_p12, release1_p10, release1_p11, release1_p16, release1_p17, release1_p14, release1_p15, checkpoint47j_post, ecco_c50_e33a, branch-exfmods-tag, checkpoint44g_post, branchpoint-genmake2, checkpoint46e_pre, checkpoint48c_post, checkpoint45b_post, checkpoint46b_pre, release1-branch-end, release1_final_v1, checkpoint51b_post, checkpoint51c_post, checkpoint46c_pre, checkpoint46, checkpoint47b_post, checkpoint44b_post, ecco_c51_e34, checkpoint46h_pre, checkpoint46m_post, checkpoint46a_pre, checkpoint50g_post, checkpoint45c_post, ecco_ice2, ecco_ice1, checkpoint44h_post, checkpoint46g_post, release1_p12_pre, checkpoint39, ecco_c44_e22, checkpoint50h_post, checkpoint50e_pre, checkpoint50i_post, ecco_c44_e25, checkpoint51i_pre, checkpoint40pre5, checkpoint47f_post, checkpoint50e_post, chkpt44a_pre, checkpoint46i_post, ecco_c44_e23, ecco_c44_e20, ecco_c44_e21, ecco_c44_e26, ecco_c44_e27, ecco_c44_e24, checkpoint46c_post, ecco-branch-mod1, ecco-branch-mod2, ecco-branch-mod3, ecco-branch-mod4, ecco-branch-mod5, checkpoint50d_pre, checkpoint46e_post, release1_beta1, checkpoint51e_post, checkpoint44b_pre, checkpoint42, checkpoint40, checkpoint41, checkpoint47, checkpoint44, checkpoint45, checkpoint48, checkpoint49, checkpoint46h_post, checkpoint51f_pre, chkpt44c_post, checkpoint48g_post, checkpoint47h_post, checkpoint44f_pre, checkpoint51g_post, checkpoint46d_post, checkpoint50b_post, release1-branch_branchpoint, checkpoint51a_post
Branch point for: c24_e25_ice, branch-exfmods-curt, release1_final, release1-branch, branch-genmake2, release1, ecco-branch, release1_50yr, icebear, release1_coupled
Added calendar package.
Not currently supported by mitgcm, i.e. disabled by default.

1 C $Header: /u/gcmpack/development/heimbach/ecco_env/pkg/cal/cal_monthsforyear.F,v 1.4 2001/02/02 16:57:22 heimbach Exp $
2
3 #include "CAL_CPPOPTIONS.h"
4
5 subroutine cal_MonthsForYear(
6 I iyear,
7 O firstmonth,
8 O lastmonth,
9 O nmonths,
10 I mythid
11 & )
12
13 c ==================================================================
14 c SUBROUTINE cal_MonthsForYear
15 c ==================================================================
16 c
17 c o Given the current year of integration this routine returns
18 c the number of months affected by the integration as well as the
19 c first month and the last month in the sequence of the total
20 c number of months that are to be integrated.
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_MonthsForYear
31 c ==================================================================
32
33 implicit none
34
35 c == global variables ==
36
37 #include "cal.h"
38
39 c == routine arguments ==
40
41 integer iyear
42 integer firstmonth
43 integer lastmonth
44 integer nmonths
45 integer mythid
46
47 c == local variables ==
48
49 integer ierr
50 integer numyears
51 integer firstyear
52 integer firstmon
53 integer lastyear
54 integer lastmon
55 integer lastday
56 integer lastsecs
57
58 c == external ==
59
60 integer cal_IntYears
61 external cal_IntYears
62
63 c == end of interface ==
64
65 numyears = cal_IntYears( mythid )
66
67 firstyear = modelstartdate(1)/10000
68 firstmon = mod(modelstartdate(1)/100,100)
69 lastyear = modelenddate(1)/10000
70 lastmon = mod(modelenddate(1)/100,100)
71 lastday = mod(modelenddate(1),100)
72 lastsecs = modelenddate(2)/10000*secondsperhour +
73 & mod(modelenddate(2)/100,100)*secondsperminute +
74 & mod(modelenddate(2),100)
75
76 if ( numyears .eq. 1 ) then
77 c-- Only one calendar year affected by the integration.
78 if ( iyear .eq. 1 ) then
79 if ( firstyear .eq. lastyear ) then
80 if ( (lastday .eq. 1) .and. (lastsecs .eq. 0) ) then
81 c-- Not really next month yet.
82 lastmonth = lastmon - firstmon
83 else
84 c-- The most frequent case.
85 lastmonth = lastmon - firstmon + 1
86 endif
87 firstmonth = 1
88 else if ( firstyear+1 .eq. lastyear ) then
89 c-- This is only the case if we end at midnight of 01-Jan
90 c-- of the next year.
91 if ( ( modelenddate(2) .eq. 0) .and.
92 & ( mod(modelenddate(1),100) .eq. 1 ) .and.
93 & mod(modelenddate(1)/100,100) .eq. 1 ) then
94 firstmonth = 1
95 lastmonth = nmonthyear - firstmon + 1
96 else
97 c-- Inconsistent modelenddate; check cal_IntYears.
98 ierr = 2804
99 call cal_PrintError( ierr, mythid )
100 stop ' stopped in cal_MonthsForYear.'
101 endif
102 else
103 c-- The specification of lastyear is wrong.
104 ierr = 2803
105 call cal_PrintError( ierr, mythid )
106 stop ' stopped in cal_MonthsForYear.'
107 endif
108 else
109 c-- The variables numyears and iyear are inconsistent;
110 c-- ( iyear .gt. numyears ).
111 ierr = 2802
112 call cal_PrintError( ierr, mythid )
113 stop ' stopped in cal_MonthsForYear.'
114 endif
115
116 else if ( numyears .gt. 1 ) then
117 c-- More than one year of integration.
118 if ( iyear .eq. 1 ) then
119 firstmonth = 1
120 lastmonth = nmonthyear - firstmon + 1
121 else if ( ( iyear .gt. 1 ) .and.
122 & ( iyear .lt. numyears ) ) then
123 c-- Somewhere between first and last year.
124 firstmonth = (nmonthyear - firstmon + 1) +
125 & (iyear - 2)*nmonthyear + 1
126 lastmonth = (nmonthyear - firstmon + 1) +
127 & (iyear - 2)*nmonthyear + nmonthyear
128 else if ( iyear .eq. numyears ) then
129 c-- The last year of the integration.
130 if ( lastyear .eq. (firstyear + numyears - 1) ) then
131 if ( (lastday .eq. 1) .and. (lastsecs .eq. 0) ) then
132 c-- Not really next month yet.
133 lastmonth = (nmonthyear - firstmon + 1) +
134 & (numyears - 2)*nmonthyear + lastmon - 1
135 else
136 c-- The most frequent case.
137 lastmonth = (nmonthyear - firstmon + 1) +
138 & (numyears - 2)*nmonthyear + lastmon
139 endif
140 firstmonth = (nmonthyear - firstmon + 1) +
141 & (numyears - 2)*nmonthyear + 1
142 else if ( lastyear .eq. (firstyear + numyears) ) then
143 c-- This is only the case if we end at midnight of 01-Jan.
144 if ( ( modelenddate(2) .eq. 0) .and.
145 & ( mod(modelenddate(1),100) .eq. 1 ) .and.
146 & mod(modelenddate(1)/100,100) .eq. 1 ) then
147 firstmonth = (nmonthyear - firstmon) +
148 & (numyears - 2)*nmonthyear + 1
149 lastmonth = (nmonthyear - firstmon) +
150 & (numyears - 2)*nmonthyear + nmonthyear
151 else
152 c-- Inconsistent modelenddate; check cal_IntYears.
153 ierr = 2807
154 call cal_PrintError( ierr, mythid )
155 stop ' stopped in cal_MonthsForYear.'
156 endif
157 else
158 c-- The variables lastyear and numyears are inconsistent.
159 ierr = 2806
160 call cal_PrintError( ierr, mythid )
161 stop ' stopped in cal_MonthsForYear.'
162 endif
163 else
164 c-- The variables iyear and numyears are inconsistent.
165 ierr = 2805
166 call cal_PrintError( ierr, mythid )
167 stop ' stopped in cal_MonthsForYear.'
168 endif
169
170 else
171 c-- The number of years to integrate is wrong; check cal_IntYears.
172 ierr = 2801
173 call cal_PrintError( ierr, mythid )
174 stop ' stopped in cal_MonthsForYear.'
175 endif
176
177 c-- The number of months to integrate in the given year.
178 nmonths = lastmonth - firstmonth + 1
179
180 return
181 end
182

  ViewVC Help
Powered by ViewVC 1.1.22