63 me, master, ntoz, h2o_phys, iaerclm, iccn, iflip, im, nx, ny, idate, xlat_d, xlon_d, &
64 jindx1_o3, jindx2_o3, ddy_o3, jindx1_h, jindx2_h, ddy_h, h2opl,fhour, &
65 jindx1_aer, jindx2_aer, ddy_aer, iindx1_aer, iindx2_aer, ddx_aer, aer_nm, &
66 jindx1_ci, jindx2_ci, ddy_ci, iindx1_ci, iindx2_ci, ddx_ci, imap, jmap, &
67 do_ugwp_v1, jindx1_tau, jindx2_tau, ddy_j1tau, ddy_j2tau, &
68 isot, ivegsrc, nlunit, sncovr, sncovr_ice, lsm, lsm_noahmp, lsm_ruc, min_seaice, &
69 fice, landfrac, vtype, weasd, lsoil, zs, dzs, lsnow_lsm_lbound, lsnow_lsm_ubound, &
70 tvxy, tgxy, tahxy, canicexy, canliqxy, eahxy, cmxy, chxy, fwetxy, sneqvoxy, alboldxy,&
71 qsnowxy, wslakexy, albdvis_lnd, albdnir_lnd, albivis_lnd, albinir_lnd, albdvis_ice, &
72 albdnir_ice, albivis_ice, albinir_ice, emiss_lnd, emiss_ice, taussxy, waxy, wtxy, &
73 zwtxy, xlaixy, xsaixy, lfmassxy, stmassxy, rtmassxy, woodxy, stblcpxy, fastcpxy, &
74 smcwtdxy, deeprechxy, rechxy, snowxy, snicexy, snliqxy, tsnoxy , smoiseq, zsnsoxy, &
75 slc, smc, stc, tsfcl, snowd, canopy, tg3, stype, con_t0c, lsm_cold_start, nthrds, &
76 ozphys, errmsg, errflg)
81 integer,
intent(in) :: me, master, ntoz, iccn, iflip, im, nx, ny
82 logical,
intent(in) :: h2o_phys, iaerclm, lsm_cold_start
83 integer,
intent(in) :: idate(:)
84 real(kind_phys),
intent(in) :: fhour
85 real(kind_phys),
intent(in) :: xlat_d(:), xlon_d(:)
87 integer,
intent(inout),
optional :: jindx1_o3(:), jindx2_o3(:), jindx1_h(:), jindx2_h(:)
88 real(kind_phys),
intent(inout),
optional :: ddy_o3(:), ddy_h(:)
89 real(kind_phys),
intent(in) :: h2opl(:,:,:)
90 integer,
intent(inout),
optional :: jindx1_aer(:), jindx2_aer(:), iindx1_aer(:), iindx2_aer(:)
91 real(kind_phys),
intent(inout),
optional :: ddy_aer(:), ddx_aer(:)
92 real(kind_phys),
intent(in) :: aer_nm(:,:,:)
93 integer,
intent(inout),
optional :: jindx1_ci(:), jindx2_ci(:), iindx1_ci(:), iindx2_ci(:)
94 real(kind_phys),
intent(inout),
optional :: ddy_ci(:), ddx_ci(:)
95 integer,
intent(inout) :: imap(:), jmap(:)
96 logical,
intent(in) :: do_ugwp_v1
97 real(kind_phys),
intent(inout),
optional :: ddy_j1tau(:), ddy_j2tau(:)
98 integer,
intent(inout),
optional :: jindx1_tau(:), jindx2_tau(:)
100 integer,
intent(in) :: isot, ivegsrc, nlunit
101 real(kind_phys),
intent(inout) :: sncovr(:), sncovr_ice(:)
102 integer,
intent(in) :: lsm, lsm_noahmp,
lsm_ruc, vtype(:)
103 real(kind_phys),
intent(in) :: min_seaice, fice(:)
104 real(kind_phys),
intent(in) :: landfrac(:)
105 real(kind_phys),
intent(inout) :: weasd(:)
109 integer,
intent(in) :: lsoil, lsnow_lsm_lbound, lsnow_lsm_ubound
110 real(kind_phys),
intent(in) :: zs(:)
111 real(kind_phys),
intent(in) :: dzs(:)
112 real(kind_phys),
intent(inout),
optional :: tvxy(:)
113 real(kind_phys),
intent(inout),
optional :: tgxy(:)
114 real(kind_phys),
intent(inout),
optional :: tahxy(:)
115 real(kind_phys),
intent(inout),
optional :: canicexy(:)
116 real(kind_phys),
intent(inout),
optional :: canliqxy(:)
117 real(kind_phys),
intent(inout),
optional :: eahxy(:)
118 real(kind_phys),
intent(inout),
optional :: cmxy(:)
119 real(kind_phys),
intent(inout),
optional :: chxy(:)
120 real(kind_phys),
intent(inout),
optional :: fwetxy(:)
121 real(kind_phys),
intent(inout),
optional :: sneqvoxy(:)
122 real(kind_phys),
intent(inout),
optional :: alboldxy(:)
123 real(kind_phys),
intent(inout),
optional :: qsnowxy(:)
124 real(kind_phys),
intent(inout),
optional :: wslakexy(:)
125 real(kind_phys),
intent(inout) :: albdvis_lnd(:)
126 real(kind_phys),
intent(inout) :: albdnir_lnd(:)
127 real(kind_phys),
intent(inout) :: albivis_lnd(:)
128 real(kind_phys),
intent(inout) :: albinir_lnd(:)
129 real(kind_phys),
intent(inout),
optional :: albdvis_ice(:)
130 real(kind_phys),
intent(inout),
optional :: albdnir_ice(:)
131 real(kind_phys),
intent(inout),
optional :: albivis_ice(:)
132 real(kind_phys),
intent(inout),
optional :: albinir_ice(:)
133 real(kind_phys),
intent(inout) :: emiss_lnd(:)
134 real(kind_phys),
intent(inout) :: emiss_ice(:)
135 real(kind_phys),
intent(inout),
optional :: taussxy(:)
136 real(kind_phys),
intent(inout),
optional :: waxy(:)
137 real(kind_phys),
intent(inout),
optional :: wtxy(:)
138 real(kind_phys),
intent(inout),
optional :: zwtxy(:)
139 real(kind_phys),
intent(inout),
optional :: xlaixy(:)
140 real(kind_phys),
intent(inout),
optional :: xsaixy(:)
141 real(kind_phys),
intent(inout),
optional :: lfmassxy(:)
142 real(kind_phys),
intent(inout),
optional :: stmassxy(:)
143 real(kind_phys),
intent(inout),
optional :: rtmassxy(:)
144 real(kind_phys),
intent(inout),
optional :: woodxy(:)
145 real(kind_phys),
intent(inout),
optional :: stblcpxy(:)
146 real(kind_phys),
intent(inout),
optional :: fastcpxy(:)
147 real(kind_phys),
intent(inout),
optional :: smcwtdxy(:)
148 real(kind_phys),
intent(inout),
optional :: deeprechxy(:)
149 real(kind_phys),
intent(inout),
optional :: rechxy(:)
150 real(kind_phys),
intent(inout),
optional :: snowxy(:)
151 real(kind_phys),
intent(inout),
optional :: snicexy(:,lsnow_lsm_lbound:)
152 real(kind_phys),
intent(inout),
optional :: snliqxy(:,lsnow_lsm_lbound:)
153 real(kind_phys),
intent(inout),
optional :: tsnoxy (:,lsnow_lsm_lbound:)
154 real(kind_phys),
intent(inout),
optional :: smoiseq(:,:)
155 real(kind_phys),
intent(inout),
optional :: zsnsoxy(:,lsnow_lsm_lbound:)
156 real(kind_phys),
intent(inout) :: slc(:,:)
157 real(kind_phys),
intent(inout) :: smc(:,:)
158 real(kind_phys),
intent(inout) :: stc(:,:)
159 real(kind_phys),
intent(in) :: tsfcl(:)
160 real(kind_phys),
intent(in) :: snowd(:)
161 real(kind_phys),
intent(in) :: canopy(:)
162 real(kind_phys),
intent(in) :: tg3(:)
163 integer,
intent(in) :: stype(:)
164 real(kind_phys),
intent(in) :: con_t0c
166 integer,
intent(in) :: nthrds
167 character(len=*),
intent(out) :: errmsg
168 integer,
intent(out) :: errflg
171 integer :: i, j, ix, vegtyp
172 real(kind_phys) :: rsnow
175 integer :: soiltyp, isnow, is, imn
176 real(kind=kind_phys) :: masslai, masssai, snd
177 real(kind=kind_phys) :: bexp, ddz, smcmax, smcwlt, dwsat, dksat, psisat
179 real(kind=kind_phys),
dimension(:),
allocatable :: dzsno
180 real(kind=kind_phys),
dimension(:),
allocatable :: dzsnso
186 if (is_initialized)
return
193 call read_h2odata (h2o_phys, me, master)
198 if (
size(h2opl, dim=2).ne.levh2o)
then
199 write(errmsg,
'(2a,i0,a,i0)')
"Value error in GFS_phys_time_vary_init: ", &
200 "levh2o from read_h2odata does not match value in GFS_typedefs.F90: ", &
201 levh2o,
" /= ",
size(h2opl, dim=2)
204 if (
size(h2opl, dim=3).ne.h2o_coeff)
then
205 write(errmsg,
'(2a,i0,a,i0)')
"Value error in GFS_phys_time_vary_init: ", &
206 "h2o_coeff from read_h2odata does not match value in GFS_typedefs.F90: ", &
207 h2o_coeff,
" /= ",
size(h2opl, dim=3)
215 if (
size(aer_nm, dim=3).ne.ntrcaerm)
then
216 write(errmsg,
'(2a,i0,a,i0)')
"Value error in GFS_phys_time_vary_init: ", &
217 "ntrcaerm from aerclm_def does not match value in GFS_typedefs.F90: ", &
218 ntrcaerm,
" /= ",
size(aer_nm, dim=3)
224 ntrcaer =
size(aer_nm, dim=3)
226 call read_aerdata (me,master,iflip,idate,errmsg,errflg)
232 ntrcaer =
size(aer_nm, dim=3)
237 call read_cidata (me,master)
244 call read_tau_amf(me, master, errmsg, errflg)
248 call set_soilveg(me, isot, ivegsrc, nlunit, errmsg, errflg)
251 if(lsm == lsm_noahmp)
then
252 call read_mp_table_parameters(errmsg, errflg)
257 call ozphys%setup_o3prog(xlat_d, jindx1_o3, jindx2_o3, ddy_o3)
262 call setindxh2o (im, xlat_d, jindx1_h, jindx2_h, ddy_h)
267 call setindxaer (im, xlat_d, jindx1_aer, &
268 jindx2_aer, ddy_aer, xlon_d, &
269 iindx1_aer, iindx2_aer, ddx_aer, &
271 iamin = min(minval(iindx1_aer), iamin)
272 iamax = max(maxval(iindx2_aer), iamax)
273 jamin = min(minval(jindx1_aer), jamin)
274 jamax = max(maxval(jindx2_aer), jamax)
279 call setindxci (im, xlat_d, jindx1_ci, &
280 jindx2_ci, ddy_ci, xlon_d, &
281 iindx1_ci, iindx2_ci, ddx_ci)
286 call cires_indx_ugwp (im, me, master, xlat_d, jindx1_tau, jindx2_tau, &
287 ddy_j1tau, ddy_j2tau)
301 if (all(sncovr <
zero))
then
302 if (me == master )
write(*,
'(a)')
'GFS_phys_time_vary_init: compute sncovr from weasd and soil vegetation parameters'
307 if (landfrac(ix) >=
drythresh .or. fice(ix) >= min_seaice)
then
309 if (vegtyp == 0) vegtyp = 7
310 rsnow = 0.001_kind_phys*weasd(ix)/snupx(vegtyp)
311 if (0.001_kind_phys*weasd(ix) < snupx(vegtyp))
then
312 sncovr(ix) =
one - (exp(-salp_data*rsnow) - rsnow*exp(-salp_data))
322 if (all(sncovr_ice <
zero))
then
323 if (me == master )
write(*,
'(a)')
'GFS_phys_time_vary_init: fill sncovr_ice with sncovr for RUC LSM'
324 sncovr_ice(:) = sncovr(:)
328 if (errflg/=0)
return
331 call read_aerdataf (me, master, iflip, idate, fhour, errmsg, errflg)
332 if (errflg/=0)
return
337 lsm_init:
if (lsm_cold_start)
then
338 if (lsm == lsm_noahmp .or. lsm ==
lsm_ruc)
then
339 if (me == master )
write(*,
'(a)')
'GFS_phys_time_vary_init: initialize albedo for land and ice'
341 albdvis_lnd(ix) = 0.2_kind_phys
342 albdnir_lnd(ix) = 0.2_kind_phys
343 albivis_lnd(ix) = 0.2_kind_phys
344 albinir_lnd(ix) = 0.2_kind_phys
345 emiss_lnd(ix) = 0.95_kind_phys
350 albdvis_ice(ix) = 0.6_kind_phys
351 albdnir_ice(ix) = 0.6_kind_phys
352 albivis_ice(ix) = 0.6_kind_phys
353 albinir_ice(ix) = 0.6_kind_phys
354 emiss_ice(ix) = 0.97_kind_phys
358 noahmp_init:
if (lsm == lsm_noahmp)
then
359 allocate(dzsno(lsnow_lsm_lbound:lsnow_lsm_ubound))
360 allocate(dzsnso(lsnow_lsm_lbound:lsoil) )
407 tahxy(ix) = tsfcl(ix)
409 if (snowd(ix) > 0.01_kind_phys .and. tsfcl(ix) > con_t0c )
then
415 canicexy(ix) = 0.0_kind_phys
416 canliqxy(ix) = canopy(ix)
418 eahxy(ix) = 2000.0_kind_phys
423 sneqvoxy(ix) = weasd(ix)
424 alboldxy(ix) = 0.65_kind_phys
432 waxy(ix) = 4900.0_kind_phys
434 zwtxy(ix) = (25.0_kind_phys + 2.0_kind_phys) - waxy(ix) / 1000.0_kind_phys / 0.2_kind_phys
437 if (vegtyp == 0) vegtyp = 7
439 if ((vegtyp == isbarren_table) .or. (vegtyp == isice_table) .or. (vegtyp == isurban_table) .or. (vegtyp == iswater_table))
then
454 xlaixy(ix) = max(laim_table(vegtyp, imn),0.05_kind_phys)
456 xsaixy(ix) = max(xlaixy(ix)*0.1_kind_phys,0.05_kind_phys)
458 masslai = 1000.0_kind_phys / max(sla_table(vegtyp),
one)
459 lfmassxy(ix) = xlaixy(ix)*masslai
460 masssai = 1000.0_kind_phys / 3.0_kind_phys
461 stmassxy(ix) = xsaixy(ix)* masssai
463 rtmassxy(ix) = 500.0_kind_phys
465 woodxy(ix) = 500.0_kind_phys
466 stblcpxy(ix) = 1000.0_kind_phys
467 fastcpxy(ix) = 1000.0_kind_phys
471 if (vegtyp == isice_table)
then
473 stc(ix,is) = min(stc(ix,is),min(tg3(ix),263.15_kind_phys))
479 snd = snowd(ix)/1000.0_kind_phys
481 if (weasd(ix) /=
zero .and. snd ==
zero )
then
482 snd = weasd(ix)/1000.0
485 if (vegtyp == 15)
then
486 if (weasd(ix) < 0.1_kind_phys)
then
487 weasd(ix) = 0.1_kind_phys
492 if (snd < 0.025_kind_phys )
then
495 elseif (snd >= 0.025_kind_phys .and. snd <= 0.05_kind_phys )
then
496 snowxy(ix) = -1.0_kind_phys
498 elseif (snd > 0.05_kind_phys .and. snd <= 0.10_kind_phys )
then
499 snowxy(ix) = -2.0_kind_phys
500 dzsno(-1) = 0.5_kind_phys*snd
501 dzsno(0) = 0.5_kind_phys*snd
502 elseif (snd > 0.10_kind_phys .and. snd <= 0.25_kind_phys )
then
503 snowxy(ix) = -2.0_kind_phys
504 dzsno(-1) = 0.05_kind_phys
505 dzsno(0) = snd - 0.05_kind_phys
506 elseif (snd > 0.25_kind_phys .and. snd <= 0.45_kind_phys )
then
507 snowxy(ix) = -3.0_kind_phys
508 dzsno(-2) = 0.05_kind_phys
509 dzsno(-1) = 0.5_kind_phys*(snd-0.05_kind_phys)
510 dzsno(0) = 0.5_kind_phys*(snd-0.05_kind_phys)
511 elseif (snd > 0.45_kind_phys)
then
512 snowxy(ix) = -3.0_kind_phys
513 dzsno(-2) = 0.05_kind_phys
514 dzsno(-1) = 0.20_kind_phys
515 dzsno(0) = snd - 0.05_kind_phys - 0.20_kind_phys
517 errmsg =
'Error in GFS_phys_time_vary.scm.F90: Problem with the logic assigning snow layers in Noah MP initialization'
529 isnow = nint(snowxy(ix))+1
532 tsnoxy(ix,is) = tgxy(ix)
533 snliqxy(ix,is) =
zero
534 snicexy(ix,is) =
one * dzsno(is) * weasd(ix)/snd
540 dzsnso(is) = -dzsno(is)
544 dzsnso(is) = -dzs(is)
549 zsnsoxy(ix,isnow) = dzsnso(isnow)
551 zsnsoxy(ix,is) = zsnsoxy(ix,is-1) + dzsnso(is)
558 if (soiltyp /= 0)
then
559 bexp = bexp_table(soiltyp)
560 smcmax = smcmax_table(soiltyp)
561 smcwlt = smcwlt_table(soiltyp)
562 dwsat = dwsat_table(soiltyp)
563 dksat = dksat_table(soiltyp)
564 psisat = -psisat_table(soiltyp)
567 if (vegtyp == isurban_table)
then
568 smcmax = 0.45_kind_phys
569 smcwlt = 0.40_kind_phys
572 if ((bexp >
zero) .and. (smcmax >
zero) .and. (-psisat >
zero))
then
575 ddz = -zs(is+1) * 0.5_kind_phys
576 elseif ( is < lsoil )
then
577 ddz = ( zs(is-1) - zs(is+1) ) * 0.5_kind_phys
579 ddz = zs(is-1) - zs(is)
581 smoiseq(ix,is) = min(max(
find_eq_smc(bexp, dwsat, dksat, ddz, smcmax),1.e-4_kind_phys),smcmax*0.99_kind_phys)
584 smoiseq(ix,1:4) = smcmax
587 smcwtdxy(ix) = smcmax
588 deeprechxy(ix) =
zero
595 if (errflg/=0)
return
603 is_initialized = .true.
612 real(kind=kind_phys),
intent(in) :: bexp, dwsat, dksat, ddz, smcmax
613 real(kind=kind_phys) :: smc
614 real(kind=kind_phys) :: expon, aa, bb, func, dfunc, dx
619 bb = dksat / smcmax ** expon
623 func = (smc - smcmax) * aa + bb * smc ** expon
624 dfunc = aa + bb * expon * smc ** bexp
627 if ( abs(dx) < 1.e-6_kind_phys)
return
640 me, master, cnx, cny, isc, jsc, nrcm, im, levs, kdt, idate, nsswr, fhswr, lsswr, fhour, &
641 imfdeepcnv, cal_pre, random_clds, ozphys, ntoz, h2o_phys, iaerclm, iccn, clstp, &
642 jindx1_o3, jindx2_o3, ddy_o3, ozpl, jindx1_h, jindx2_h, ddy_h, h2opl, iflip, &
643 jindx1_aer, jindx2_aer, ddy_aer, iindx1_aer, iindx2_aer, ddx_aer, aer_nm, &
644 jindx1_ci, jindx2_ci, ddy_ci, iindx1_ci, iindx2_ci, ddx_ci, in_nm, ccn_nm, &
645 imap, jmap, prsl, seed0, rann, do_ugwp_v1, jindx1_tau, jindx2_tau, ddy_j1tau, ddy_j2tau,&
646 tau_amf, nthrds, errmsg, errflg)
651 integer,
intent(in) :: me, master, cnx, cny, isc, jsc, nrcm, im, levs, kdt, &
652 nsswr, imfdeepcnv, iccn, ntoz, iflip
653 integer,
intent(in) :: idate(:)
654 real(kind_phys),
intent(in) :: fhswr, fhour
655 logical,
intent(in) :: lsswr, cal_pre, random_clds, h2o_phys, iaerclm
656 real(kind_phys),
intent(out) :: clstp
657 integer,
intent(in),
optional :: jindx1_o3(:), jindx2_o3(:), jindx1_h(:), jindx2_h(:)
658 real(kind_phys),
intent(in),
optional :: ddy_o3(:), ddy_h(:)
659 real(kind_phys),
intent(inout) :: ozpl(:,:,:), h2opl(:,:,:)
660 integer,
intent(in),
optional :: jindx1_aer(:), jindx2_aer(:), iindx1_aer(:), iindx2_aer(:)
661 real(kind_phys),
intent(in),
optional :: ddy_aer(:), ddx_aer(:)
662 real(kind_phys),
intent(inout) :: aer_nm(:,:,:)
663 integer,
intent(in),
optional :: jindx1_ci(:), jindx2_ci(:), iindx1_ci(:), iindx2_ci(:)
664 real(kind_phys),
intent(in),
optional :: ddy_ci(:), ddx_ci(:)
665 real(kind_phys),
intent(inout) :: in_nm(:,:), ccn_nm(:,:)
666 integer,
intent(in) :: imap(:), jmap(:)
667 real(kind_phys),
intent(in) :: prsl(:,:)
668 integer,
intent(in) :: seed0
669 real(kind_phys),
intent(inout) :: rann(:,:)
671 logical,
intent(in) :: do_ugwp_v1
672 integer,
intent(in),
optional :: jindx1_tau(:), jindx2_tau(:)
673 real(kind_phys),
intent(in),
optional :: ddy_j1tau(:), ddy_j2tau(:)
674 real(kind_phys),
intent(inout) :: tau_amf(:)
676 integer,
intent(in) :: nthrds
677 character(len=*),
intent(out) :: errmsg
678 integer,
intent(out) :: errflg
681 integer :: i, j, k, iseed, iskip, ix, idat(8), jdat(8), iday, j1, j2, nc, n1, n2, jdow, &
682 jdoy, jday, w3kindreal, w3kindint
683 real(kind_phys) :: wrk(1), tem, tx1, tx2, rjday
684 real(kind_phys) :: rannie(cny)
685 real(kind_phys) :: rndval(cnx*cny*nrcm)
686 real(kind_dbl_prec) :: rinc(5)
687 real(kind_sngl_prec) :: rinc4(5)
694 if (.not.is_initialized)
then
695 write(errmsg,
'(*(a))')
"Logic error: GFS_phys_time_vary_timestep_init called before GFS_phys_time_vary_init"
702 if ((mod(kdt,nsswr) == 0) .and. (lsswr))
then
705 elseif (mod(kdt,nsswr) == 0)
then
718 if ( (imfdeepcnv <= 0 .or. cal_pre) .and. random_clds )
then
724 iseed = iseed + nint(wrk(1)*1000.0) * i
727 rndval(1+(i-1)*cny:i*cny) = rannie(1:cny)
731 iskip = (k-1)*cnx*cny
735 rann(ix,k) = rndval(i+isc-1 + (j+jsc-2)*cnx + iskip)
749 call w3kind(w3kindreal,w3kindint)
750 if(w3kindreal==4)
then
752 CALL w3movdat(rinc4,idat,jdat)
754 CALL w3movdat(rinc,idat,jdat)
759 call w3doxdat(jdat,jdow,jdoy,jday)
760 rjday = jdoy + jdat(5) / 24.
761 if (rjday < ozphys%time(1)) rjday = rjday + 365.
763 n2 = ozphys%ntime + 1
765 if (rjday < ozphys%time(j))
then
771 if (n2 > ozphys%ntime) n2 = n2 - ozphys%ntime
775 call ozphys%update_o3prog(jindx1_o3, jindx2_o3, ddy_o3, rjday, n1, n2, ozpl)
780 call h2ointerpol (me, im, idate, fhour, &
781 jindx1_h, jindx2_h, &
787 call ciinterpol (me, im, idate, fhour, &
788 jindx1_ci, jindx2_ci, &
791 levs, prsl, in_nm, ccn_nm)
796 call tau_amf_interp(me, master, im, idate, fhour, &
797 jindx1_tau, jindx2_tau, &
798 ddy_j1tau, ddy_j2tau, tau_amf)
805 call aerinterpol (me, master, nthrds, im, idate, &
806 fhour, iflip, jindx1_aer, jindx2_aer, &
807 ddy_aer, iindx1_aer, &
808 iindx2_aer, ddx_aer, &
809 levs, prsl, aer_nm, errmsg, errflg)
subroutine, public gfs_phys_time_vary_init(me, master, ntoz, h2o_phys, iaerclm, iccn, iflip, im, nx, ny, idate, xlat_d, xlon_d, jindx1_o3, jindx2_o3, ddy_o3, jindx1_h, jindx2_h, ddy_h, h2opl, fhour, jindx1_aer, jindx2_aer, ddy_aer, iindx1_aer, iindx2_aer, ddx_aer, aer_nm, jindx1_ci, jindx2_ci, ddy_ci, iindx1_ci, iindx2_ci, ddx_ci, imap, jmap, do_ugwp_v1, jindx1_tau, jindx2_tau, ddy_j1tau, ddy_j2tau, isot, ivegsrc, nlunit, sncovr, sncovr_ice, lsm, lsm_noahmp, lsm_ruc, min_seaice, fice, landfrac, vtype, weasd, lsoil, zs, dzs, lsnow_lsm_lbound, lsnow_lsm_ubound, tvxy, tgxy, tahxy, canicexy, canliqxy, eahxy, cmxy, chxy, fwetxy, sneqvoxy, alboldxy, qsnowxy, wslakexy, albdvis_lnd, albdnir_lnd, albivis_lnd, albinir_lnd, albdvis_ice, albdnir_ice, albivis_ice, albinir_ice, emiss_lnd, emiss_ice, taussxy, waxy, wtxy, zwtxy, xlaixy, xsaixy, lfmassxy, stmassxy, rtmassxy, woodxy, stblcpxy, fastcpxy, smcwtdxy, deeprechxy, rechxy, snowxy, snicexy, snliqxy, tsnoxy, smoiseq, zsnsoxy, slc, smc, stc, tsfcl, snowd, canopy, tg3, stype, con_t0c, lsm_cold_start, nthrds, ozphys, errmsg, errflg)
subroutine, public gfs_phys_time_vary_timestep_init(me, master, cnx, cny, isc, jsc, nrcm, im, levs, kdt, idate, nsswr, fhswr, lsswr, fhour, imfdeepcnv, cal_pre, random_clds, ozphys, ntoz, h2o_phys, iaerclm, iccn, clstp, jindx1_o3, jindx2_o3, ddy_o3, ozpl, jindx1_h, jindx2_h, ddy_h, h2opl, iflip, jindx1_aer, jindx2_aer, ddy_aer, iindx1_aer, iindx2_aer, ddx_aer, aer_nm, jindx1_ci, jindx2_ci, ddy_ci, iindx1_ci, iindx2_ci, ddx_ci, in_nm, ccn_nm, imap, jmap, prsl, seed0, rann, do_ugwp_v1, jindx1_tau, jindx2_tau, ddy_j1tau, ddy_j2tau, tau_amf, nthrds, errmsg, errflg)