23SUBROUTINE day2month(b, mb, md, seas, year, latitude)
25 INTEGER,
INTENT(in) :: b
26 INTEGER,
INTENT(out) :: mb
27 INTEGER,
INTENT(out) :: md
28 INTEGER,
INTENT(out) :: seas
29 INTEGER,
INTENT(in) :: year
33 REAL(KIND(1D0)) :: latitude
44 IF ((modulo(year, t1) == 0) .AND. (modulo(year, t2) /= 0) .OR. (modulo(year, t3) == 0))
THEN
53 ELSEIF (b > 31 .AND. b <= 59 + k)
THEN
56 ELSEIF (b > 59 + k .AND. b <= 90 + k)
THEN
59 ELSEIF (b > 90 + k .AND. b <= 120 + k)
THEN
62 ELSEIF (b > 120 + k .AND. b <= 151 + k)
THEN
65 ELSEIF (b > 151 + k .AND. b <= 181 + k)
THEN
68 ELSEIF (b > 181 + k .AND. b <= 212 + k)
THEN
71 ELSEIF (b > 212 + k .AND. b <= 243 + k)
THEN
74 ELSEIF (b > 243 + k .AND. b <= 273 + k)
THEN
77 ELSEIF (b > 273 + k .AND. b <= 304 + k)
THEN
80 ELSEIF (b > 304 + k .AND. b <= 334 + k)
THEN
83 ELSEIF (b > 334 + k)
THEN
89 IF (latitude > 0)
THEN
90 IF (mb > 3 .AND. mb < 10)
THEN
96 IF (mb < 4 .OR. mb > 9)
THEN
107 INTEGER :: mon, ne, k, b
111 ELSE IF (mon == 2)
THEN
113 ELSE IF (mon == 3)
THEN
115 ELSE IF (mon == 4)
THEN
117 ELSE IF (mon == 5)
THEN
119 ELSE IF (mon == 6)
THEN
121 ELSE IF (mon == 7)
THEN
123 ELSE IF (mon == 8)
THEN
126 ELSE IF (mon == 9)
THEN
128 ELSE IF (mon == 10)
THEN
130 ELSE IF (mon == 11)
THEN
132 ELSE IF (mon == 12)
THEN
142 INTEGER :: nroDays, year_int
144 IF (mod(year_int, 100) /= 0 .AND. mod(year_int, 4) == 0)
THEN
146 ELSEIF (mod(year_int, 400) == 0)
THEN
158 INTEGER,
INTENT(in) :: year_int
161 IF (mod(year_int, 100) /= 0 .AND. mod(year_int, 4) == 0)
THEN
163 ELSEIF (mod(year_int, 400) == 0)
THEN
180 INTEGER DATE, MONTH, DAY, YR, MN, N1, N2, DOW, YEAR
19110 n1 = (26*(mn + 1))/10
193 day = (date + n1 + n2 - (yr/100) + (yr/400) - 1)
194 dow = mod(day, 7) + 1
205 INTEGER :: HOURS, MINS, doy
206 REAL(KIND(1D0)) :: dectime, SECS, DH, DM, DS
226SUBROUTINE daylen(DOY, XLAT, DAYL, DEC, SNDN, SNUP)
234 REAL(KIND(1D0)),
INTENT(IN) :: XLAT
235 REAL(KIND(1D0)),
INTENT(OUT) :: DEC, DAYL, SNDN, SNUP
236 REAL(KIND(1D0)) :: SOC
237 REAL(KIND(1D0)),
PARAMETER :: PI = 3.14159, rad = pi/180.0
242 dec = -23.45*cos(2.0*pi*(doy + 10.0)/365.0)
245 soc = tan(rad*dec)*tan(rad*xlat)
246 soc = min(max(soc, -1.0), 1.0)
249 dayl = 12.0 + 24.0*asin(soc)/pi
250 snup = 12.0 - dayl/2.0
251 sndn = 12.0 + dayl/2.0
271 id, it, imin, isec, & ! input
274 INTEGER,
INTENT(in) :: id, it, imin, isec
276 REAL(KIND(1D0)),
INTENT(out) :: dectime
278 dectime = real(id - 1, kind(1d0)) &
279 + real(it, kind(1d0))/24 &
280 + real(imin, kind(1d0))/(60*24) &
281 + real(isec, kind(1d0))/(60*60*24)
288 nsh, nsh_real, tstep_real)
290 INTEGER,
INTENT(in) :: tstep
292 INTEGER,
INTENT(out) :: nsh
293 REAL(KIND(1D0)),
INTENT(out) :: nsh_real
294 REAL(KIND(1D0)),
INTENT(out) :: tstep_real
297 tstep_real = tstep*1.0
302 iy, id, lat, & !input
306 INTEGER,
INTENT(in) :: iy
307 INTEGER,
INTENT(in) :: id
308 REAL(KIND(1D0)),
INTENT(in) :: lat
310 INTEGER,
DIMENSION(3),
INTENT(OUT) :: dayofWeek_id
317 CALL day2month(id, mb, date, seas, iy, lat)
322 dayofweek_id(3) = seas
327 id, startDLS, endDLS, & !input
331 INTEGER,
INTENT(in) :: id, startDLS, endDLS
332 INTEGER,
INTENT(out) :: DLS
335 IF (id > startdls .AND. id < enddls) dls = 1
subroutine dectime_to_timevec(dectime, hours, mins, secs)
subroutine day_of_week(date, month, year, dow)
subroutine suews_cal_dectime(id, it, imin, isec, dectime)
subroutine suews_cal_weekday(iy, id, lat, dayofweek_id)
subroutine suews_cal_dls(id, startdls, enddls, dls)
subroutine suews_cal_tstep(tstep, nsh, nsh_real, tstep_real)
subroutine day2month(b, mb, md, seas, year, latitude)
elemental integer function days_of_year(year_int)
subroutine leapyearcalc(year_int, nrodays)
subroutine daylen(doy, xlat, dayl, dec, sndn, snup)
subroutine month2day(mon, ne, k, b)