@@ -234,18 +234,46 @@ subroutine esmFldsExchange_ufs(gcomp, phase, rc)
234
234
end if
235
235
end if
236
236
237
- ! to atm: unmerged surface temperatures from lnd
238
- if (phase == ' advertise' ) then
239
- if (is_local% wrap% comp_present(complnd) .and. is_local% wrap% comp_present(compatm)) then
240
- call addfld_from(complnd , ' Sl_t' )
241
- call addfld_to(compatm , ' Sl_t' )
237
+ ! to atm: unmerged flux components from lnd
238
+ if (is_local% wrap% comp_present(complnd) .and. is_local% wrap% comp_present(compatm)) then
239
+ allocate (flds(6 ))
240
+ flds = (/ ' lat ' , ' sen ' , ' evap' , ' gflx' , ' roff' , ' soff' / )
241
+ if (phase == ' advertise' ) then
242
+ do n = 1 ,size (flds)
243
+ call addfld_from(complnd, ' Fall_' // trim (flds(n)))
244
+ call addfld_to(compatm, ' Fall_' // trim (flds(n)))
245
+ end do
246
+ else
247
+ do n = 1 ,size (flds)
248
+ if ( fldchk(is_local% wrap% FBexp(compatm) , ' Fall_' // trim (flds(n)), rc= rc) .and. &
249
+ fldchk(is_local% wrap% FBImp(complnd,complnd), ' Fall_' // trim (flds(n)), rc= rc)) then
250
+ call addmap_from(complnd, ' Fall_' // trim (flds(n)), compatm, maptype, ' lfrac' , ' unset' )
251
+ call addmrg_to(compatm, ' Fall_' // trim (flds(n)), mrg_from= complnd, mrg_fld= ' Fall_' // trim (flds(n)), mrg_type= ' copy' )
252
+ end if
253
+ end do
242
254
end if
243
- else
244
- if ( fldchk(is_local% wrap% FBexp(compatm) , ' Sl_t' , rc= rc) .and. &
245
- fldchk(is_local% wrap% FBImp(complnd,complnd), ' Sl_t' , rc= rc)) then
246
- call addmap_from(complnd, ' Sl_t' , compatm, maptype, ' lfrin' , ' unset' )
247
- call addmrg_to(compatm, ' Sl_t' , mrg_from= complnd, mrg_fld= ' Sl_t' , mrg_type= ' copy' )
255
+ deallocate (flds)
256
+ end if
257
+
258
+ ! to atm: unmerged state variables from lnd
259
+ if (is_local% wrap% comp_present(complnd) .and. is_local% wrap% comp_present(compatm)) then
260
+ allocate (flds(7 ))
261
+ flds = (/ ' sfrac' , ' tref ' , ' qref ' , ' q ' , ' cmm ' , ' chh ' , ' zvfun' / )
262
+ if (phase == ' advertise' ) then
263
+ do n = 1 ,size (flds)
264
+ call addfld_from(complnd, ' Sl_' // trim (flds(n)))
265
+ call addfld_to(compatm, ' Sl_' // trim (flds(n)))
266
+ end do
267
+ else
268
+ do n = 1 ,size (flds)
269
+ if ( fldchk(is_local% wrap% FBexp(compatm) , ' Sl_' // trim (flds(n)), rc= rc) .and. &
270
+ fldchk(is_local% wrap% FBImp(complnd,complnd), ' Sl_' // trim (flds(n)), rc= rc)) then
271
+ call addmap_from(complnd, ' Sl_' // trim (flds(n)), compatm, maptype, ' lfrac' , ' unset' )
272
+ call addmrg_to(compatm, ' Sl_' // trim (flds(n)), mrg_from= complnd, mrg_fld= ' Sl_' // trim (flds(n)), mrg_type= ' copy' )
273
+ end if
274
+ end do
248
275
end if
276
+ deallocate (flds)
249
277
end if
250
278
251
279
! to atm: unmerged from mediator, merge will be done under FV3/CCPP composite step
@@ -716,18 +744,16 @@ subroutine esmFldsExchange_ufs(gcomp, phase, rc)
716
744
if ( trim (coupling_mode) == ' ufs.nfrac.aoflux' ) then
717
745
allocate (flds(21 ))
718
746
flds = (/ ' Sa_z ' , ' Sa_topo ' , ' Sa_tbot ' , ' Sa_pbot ' , &
719
- ' Sa_shum ' , ' Sa_u ' , ' Sa_v ' , ' Faxa_lwdn ' , &
720
- ' Sa_ptem ' , ' Sa_dens ' , ' Faxa_swdn ' , ' Sa_pslv ' , &
721
- ' Faxa_snowc' , ' Faxa_snowl' , ' Faxa_rainc' , ' Faxa_rainl' , &
722
- ' Faxa_swndr' , ' Faxa_swndf' , ' Faxa_swvdr' , ' Faxa_swvdf' , &
723
- ' Faxa_swnet' / )
747
+ ' Sa_shum ' , ' Sa_u ' , ' Sa_v ' , ' Sa_pslv ' , &
748
+ ' Faxa_lwdn ' , ' Faxa_swdn ' , ' Faxa_snowc' , ' Faxa_snowl' , &
749
+ ' Faxa_rainc' , ' Faxa_rainl' , ' Faxa_rain ' , ' Faxa_swnet' / )
724
750
else
725
751
allocate (flds(18 ))
726
752
flds = (/ ' Sa_z ' , ' Sa_ta ' , ' Sa_pslv ' , ' Sa_qa ' , &
727
- ' Sa_ua ' , ' Sa_va ' , ' Faxa_swdn ' , ' Faxa_lwdn ' , &
728
- ' Faxa_swnet' , ' Faxa_rain ' , ' Sa_prsl ' , ' vfrac ' , &
753
+ ' Sa_u ' , ' Sa_v ' , ' Faxa_swdn ' , ' Faxa_lwdn ' , &
754
+ ' Faxa_swnet' , ' Faxa_rain ' , ' Sa_prsl ' , ' Sa_vfrac ' , &
729
755
' Faxa_snow ' , ' Faxa_rainc' , ' Sa_tskn ' , ' Sa_exner ' , &
730
- ' Sa_ustar ' , ' zorl ' / )
756
+ ' Sa_ustar ' , ' Sa_zorl ' / )
731
757
end if
732
758
do n = 1 ,size (flds)
733
759
fldname = trim (flds(n))
0 commit comments