@@ -27,8 +27,9 @@ end subroutine GFS_surface_composites_pre_finalize
27
27
! > \section arg_table_GFS_surface_composites_pre_run Argument Table
28
28
! ! \htmlinclude GFS_surface_composites_pre_run.html
29
29
! !
30
- subroutine GFS_surface_composites_pre_run (im , flag_init , flag_restart , lkm , frac_grid , &
31
- flag_cice , cplflx , cplice , cplwav2atm , landfrac , lakefrac , lakedepth , oceanfrac , frland , &
30
+ subroutine GFS_surface_composites_pre_run (im , xlat_d , xlon_d , flag_init , lsm_cold_start , lkm , frac_grid , &
31
+ flag_cice , cplflx , cplice , cplwav2atm , lsm , lsm_ruc , &
32
+ landfrac , lakefrac , lakedepth , oceanfrac , frland , &
32
33
dry , icy , lake , use_flake , wet , hice , cice , zorlo , zorll , zorli , &
33
34
snowd , snowd_lnd , snowd_ice , tprcp , tprcp_wat , &
34
35
tprcp_lnd , tprcp_ice , uustar , uustar_wat , uustar_lnd , uustar_ice , &
@@ -40,10 +41,11 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, fra
40
41
implicit none
41
42
42
43
! Interface variables
43
- integer , intent (in ) :: im, lkm, kdt
44
- logical , intent (in ) :: flag_init, flag_restart , frac_grid, cplflx, cplice, cplwav2atm
44
+ integer , intent (in ) :: im, lkm, kdt, lsm, lsm_ruc
45
+ logical , intent (in ) :: flag_init, lsm_cold_start , frac_grid, cplflx, cplice, cplwav2atm
45
46
logical , dimension (:), intent (inout ) :: flag_cice
46
47
logical , dimension (:), intent (inout ) :: dry, icy, lake, use_flake, wet
48
+ real (kind= kind_phys), dimension (:), intent (in ) :: xlat_d, xlon_d
47
49
real (kind= kind_phys), dimension (:), intent (in ) :: landfrac, lakefrac, lakedepth, oceanfrac
48
50
real (kind= kind_phys), dimension (:), intent (inout ) :: cice, hice
49
51
real (kind= kind_phys), dimension (:), intent ( out ) :: frland
@@ -201,12 +203,13 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, fra
201
203
endif
202
204
endif
203
205
enddo
204
- endif
206
+ endif ! frac_grid
205
207
206
208
do i= 1 ,im
207
209
tprcp_wat(i) = tprcp(i)
208
210
tprcp_lnd(i) = tprcp(i)
209
211
tprcp_ice(i) = tprcp(i)
212
+
210
213
if (wet(i)) then ! Water
211
214
uustar_wat(i) = uustar(i)
212
215
tsfc_wat(i) = tsfco(i)
@@ -219,7 +222,7 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, fra
219
222
endif
220
223
if (dry(i)) then ! Land
221
224
uustar_lnd(i) = uustar(i)
222
- weasd_lnd(i) = weasd(i)
225
+ if (lsm /= lsm_ruc) weasd_lnd(i) = weasd(i)
223
226
tsurf_lnd(i) = tsfcl(i)
224
227
! DH*
225
228
else
@@ -230,7 +233,7 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, fra
230
233
endif
231
234
if (icy(i)) then ! Ice
232
235
uustar_ice(i) = uustar(i)
233
- weasd_ice(i) = weasd(i)
236
+ if (lsm /= lsm_ruc) weasd_ice(i) = weasd(i)
234
237
tsurf_ice(i) = tisfc(i)
235
238
ep1d_ice(i) = zero
236
239
gflx_ice(i) = zero
@@ -279,7 +282,17 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, fra
279
282
endif
280
283
enddo
281
284
else
285
+ if (lsm /= lsm_ruc) then ! do not do snow initialization with RUC lsm
282
286
do i= 1 ,im
287
+ !- - print ice point
288
+ ! if ( (xlon_d(i) > 298.6) .and. (xlon_d(i) < 298.7) .and. &
289
+ ! (xlat_d(i) > 68.6 ) .and. (xlat_d(i) < 68.7 )) then
290
+ ! print *,'Composit weasd_ice(i),snowd_ice',kdt,i,xlat_d(i),xlon_d(i),weasd_ice(i),snowd_ice(i)
291
+ ! endif
292
+ ! if ( (xlon_d(i) > 284.35) .and. (xlon_d(i) < 284.6) .and. &
293
+ ! (xlat_d(i) > 41.0 ) .and. (xlat_d(i) < 41.2 )) then
294
+ ! print *,'Composit2 weasd_lnd(i),snowd_lnd',kdt,i,xlat_d(i),xlon_d(i),weasd_lnd(i),snowd_lnd(i)
295
+ ! endif
283
296
if (icy(i)) then
284
297
if (kdt == 1 .or. (.not. cplflx .or. lakefrac(i) > zero)) then
285
298
snowd_lnd(i) = zero
@@ -290,6 +303,7 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, fra
290
303
endif
291
304
endif
292
305
enddo
306
+ endif ! lsm/=lsm_ruc
293
307
endif
294
308
295
309
! write(0,*)' minmax of ice snow=',minval(snowd_ice),maxval(snowd_ice)
@@ -644,6 +658,7 @@ subroutine GFS_surface_composites_post_run (
644
658
645
659
do i= 1 ,im
646
660
if (islmsk(i) == 1 ) then
661
+ !- - land
647
662
zorl(i) = zorll(i)
648
663
cd(i) = cd_lnd(i)
649
664
cdq(i) = cdq_lnd(i)
@@ -669,6 +684,7 @@ subroutine GFS_surface_composites_post_run (
669
684
hice(i) = zero
670
685
cice(i) = zero
671
686
elseif (islmsk(i) == 0 ) then
687
+ !- - water
672
688
zorl(i) = zorlo(i)
673
689
cd(i) = cd_wat(i)
674
690
cdq(i) = cdq_wat(i)
@@ -695,6 +711,7 @@ subroutine GFS_surface_composites_post_run (
695
711
hice(i) = zero
696
712
cice(i) = zero
697
713
else ! islmsk(i) == 2
714
+ !- - ice
698
715
zorl(i) = zorli(i)
699
716
cd(i) = cd_ice(i)
700
717
cdq(i) = cdq_ice(i)
0 commit comments