69 nslwr, idate, debug, me, master, nscyc, sec, phour, zhour, fhour, kdt, &
70 julian, yearlen, ipt, lprnt, lssav, lsswr, lslwr, solhr, errmsg, errflg)
72 use machine,
only: kind_phys, kind_dbl_prec, kind_sngl_prec
76 integer,
intent(in) :: idate(:)
77 integer,
intent(in) :: jdat(:), idat(:)
78 integer,
intent(in) :: nsswr, nslwr, me, &
80 logical,
intent(in) :: debug
81 real(kind=kind_phys),
intent(in) :: dtp
83 integer,
intent(out) :: kdt, yearlen, ipt
84 logical,
intent(out) :: lprnt, lssav, lsswr, &
86 real(kind=kind_phys),
intent(out) :: sec, phour, zhour, &
89 character(len=*),
intent(out) :: errmsg
90 integer,
intent(out) :: errflg
92 real(kind=kind_phys),
parameter :: con_24 = 24.0_kind_phys
93 real(kind=kind_phys),
parameter :: con_hr = 3600.0_kind_phys
94 real(kind=kind_dbl_prec) :: rinc8(5)
105 if (.not.is_initialized)
then
106 write(errmsg,
'(*(a))')
"Logic error: GFS_time_vary_pre_timestep_init called &
107 &before GFS_time_vary_pre_init"
116 call w3difdat(jdat,idat,4,rinc8)
121 fhour = (sec + dtp)/con_hr
122 kdt = nint((sec + dtp)/dtp)
137 jd1 = iw3jdn(jdat(1),jdat(2),jdat(3))
138 jd0 = iw3jdn(jdat(1),1,1)
139 fjd = float(jdat(5))/24.0 + float(jdat(6))/1440.0
141 julian = float(jd1-jd0) + fjd
150 if (mod(jdat(1),4) == 0)
then
152 if (mod(jdat(1),100) == 0)
then
154 if (mod(jdat(1),400) == 0)
then
165 lsswr = (mod(kdt, nsswr) == 1)
166 lslwr = (mod(kdt, nslwr) == 1)
168 if (nsswr == 1) lsswr = .true.
169 if (nslwr == 1) lslwr = .true.
172 solhr = mod(phour+idate(1),con_24)
174 if ((debug) .and. (me == master))
then
177 print *,
' nsswr ', nsswr
178 print *,
' nslwr ', nslwr
179 print *,
' nscyc ', nscyc
180 print *,
' lsswr ', lsswr
181 print *,
' lslwr ', lslwr
182 print *,
' fhour ', fhour
183 print *,
' phour ', phour
184 print *,
' solhr ', solhr
subroutine, public gfs_time_vary_pre_timestep_init(jdat, idat, dtp, nsswr, nslwr, nhfrad, idate, debug, me, master, nscyc, sec, phour, zhour, fhour, kdt, julian, yearlen, ipt, lprnt, lssav, lsswr, lslwr, solhr, errmsg, errflg)