Skip to content

Commit 21d1609

Browse files
committed
Merge branch 'develop' of https://github.com/NOAA-EMC/fv3atm into feature/gfdlmpv3
2 parents dd0c88a + 1648e17 commit 21d1609

12 files changed

+223
-93
lines changed

ccpp/data/CCPP_typedefs.F90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1620,8 +1620,8 @@ subroutine gfdl_interstitial_create (Interstitial, is, ie, isd, ied, js, je, jsd
16201620
else
16211621
Interstitial%ngas = 0
16221622
end if
1623-
allocate(Interstitial%rilist(0:Interstitial%ngas))
1624-
allocate(Interstitial%cpilist(0:Interstitial%ngas))
1623+
allocate (Interstitial%rilist(0:Interstitial%ngas))
1624+
allocate (Interstitial%cpilist(0:Interstitial%ngas))
16251625
if (present(rilist)) then
16261626
Interstitial%rilist = rilist(0:Interstitial%ngas)
16271627
Interstitial%cpilist = cpilist(0:Interstitial%ngas)

ccpp/data/GFS_typedefs.F90

Lines changed: 99 additions & 80 deletions
Large diffs are not rendered by default.

ccpp/data/GFS_typedefs.meta

Lines changed: 59 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -960,7 +960,7 @@
960960
standard_name = emission_smoke_prvd_RRFS
961961
long_name = emission fire RRFS daily
962962
units = various
963-
dimensions = (horizontal_dimension,4)
963+
dimensions = (horizontal_dimension,5)
964964
type = real
965965
kind = kind_phys
966966
active = (do_smoke_coupling)
@@ -2369,23 +2369,23 @@
23692369
standard_name = kinematic_surface_upward_sensible_heat_flux_of_fire
23702370
long_name = kinematic surface upward sensible heat flux of fire
23712371
units = K m s-1
2372-
dimensions = (horizontal_loop_extent)
2372+
dimensions = (horizontal_dimension)
23732373
type = real
23742374
kind = kind_phys
23752375
active = (do_fire_coupling)
23762376
[evap_fire]
23772377
standard_name = surface_upward_specific_humidity_flux_of_fire
23782378
long_name = kinematic surface upward latent heat flux of fire
23792379
units = kg kg-1 m s-1
2380-
dimensions = (horizontal_loop_extent)
2380+
dimensions = (horizontal_dimension)
23812381
type = real
23822382
kind = kind_phys
23832383
active = (do_fire_coupling)
23842384
[smoke_fire]
23852385
standard_name = smoke_emission_of_fire
23862386
long_name = smoke emission of fire
23872387
units = kg m-2
2388-
dimensions = (horizontal_loop_extent)
2388+
dimensions = (horizontal_dimension)
23892389
type = real
23902390
kind = kind_phys
23912391
active = (do_fire_coupling)
@@ -3244,6 +3244,14 @@
32443244
type = real
32453245
kind = kind_phys
32463246
active = (do_smoke_coupling)
3247+
[rho_dry]
3248+
standard_name = dry_air_density
3249+
long_name = dry air density
3250+
units = kg m-3
3251+
dimensions = (horizontal_dimension,vertical_layer_dimension)
3252+
type = real
3253+
kind = kind_phys
3254+
active = (do_smoke_coupling)
32473255
[uspdavg]
32483256
standard_name = mean_wind_speed_in_boundary_layer
32493257
long_name = average wind speed within the boundary layer
@@ -4957,6 +4965,12 @@
49574965
units = flag
49584966
dimensions = ()
49594967
type = logical
4968+
[add_fire_moist_flux]
4969+
standard_name = flag_for_fire_moisture_flux
4970+
long_name = flag to add fire moisture flux
4971+
units = flag
4972+
dimensions = ()
4973+
type = logical
49604974
[isncond_opt]
49614975
standard_name = control_for_soil_thermal_conductivity_option_in_ruc_lsm
49624976
long_name = control for soil thermal conductivity option in RUC land surface model
@@ -5659,6 +5673,12 @@
56595673
units = none
56605674
dimensions = ()
56615675
type = integer
5676+
[conv_cf_opt]
5677+
standard_name = option_for_convection_scheme_cloud_fraction_computation
5678+
long_name = option for convection scheme cloud fraction computation
5679+
units = flag
5680+
dimensions = ()
5681+
type = integer
56625682
[nmtvr]
56635683
standard_name = number_of_statistical_measures_of_subgrid_orography
56645684
long_name = number of topographic variables in GWD
@@ -6884,6 +6904,13 @@
68846904
dimensions = ()
68856905
type = real
68866906
kind = kind_phys
6907+
[plume_alpha]
6908+
standard_name = alpha_for_plumerise_scheme
6909+
long_name = alpha paramter for plumerise scheme
6910+
units = none
6911+
dimensions = ()
6912+
type = real
6913+
kind = kind_phys
68876914
[ebb_dcycle]
68886915
standard_name = control_for_diurnal_cycle_of_biomass_burning_emissions
68896916
long_name = rrfs smoke diurnal cycle option
@@ -10439,3 +10466,31 @@
1043910466
dimensions = ()
1044010467
type = real
1044110468
kind = kind_phys
10469+
[con_rgas]
10470+
standard_name = molar_gas_constant
10471+
long_name = universal ideal molar gas constant
10472+
units = J K-1 mol-1
10473+
dimensions = ()
10474+
type = real
10475+
kind = kind_phys
10476+
[con_avgd]
10477+
standard_name = avogadro_consant
10478+
long_name = Avogadro constant
10479+
units = mol-1
10480+
dimensions = ()
10481+
type = real
10482+
kind = kind_phys
10483+
[con_amd]
10484+
standard_name = molecular_weight_of_dry_air
10485+
long_name = molecular weight of dry air
10486+
units = g mol-1
10487+
dimensions = ()
10488+
type = real
10489+
kind = kind_phys
10490+
[con_amw]
10491+
standard_name = molecular_weight_of_water_vapor
10492+
long_name = molecular weight of water vapor
10493+
units = g mol-1
10494+
dimensions = ()
10495+
type = real
10496+
kind = kind_phys

ccpp/driver/GFS_diagnostics.F90

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -545,6 +545,18 @@ subroutine GFS_externaldiag_populate (ExtDiag, Model, Statein, Stateout, Sfcprop
545545
ExtDiag(idx)%data(nb)%var2 => IntDiag%fluxr(Model%chunk_begin(nb):Model%chunk_end(nb),32)
546546
enddo
547547

548+
idx = idx + 1
549+
ExtDiag(idx)%axes = 2
550+
ExtDiag(idx)%name = 'csdsf'
551+
ExtDiag(idx)%desc = 'Clear Sky Instantateous Downward Short Wave Flux'
552+
ExtDiag(idx)%unit = 'W/m**2'
553+
ExtDiag(idx)%mod_name = 'gfs_phys'
554+
ExtDiag(idx)%intpl_method = 'bilinear'
555+
allocate (ExtDiag(idx)%data(nblks))
556+
do nb = 1,nblks
557+
ExtDiag(idx)%data(nb)%var2 => IntDiag%fluxr(Model%chunk_begin(nb):Model%chunk_end(nb),32)
558+
enddo
559+
548560
idx = idx + 1
549561
ExtDiag(idx)%axes = 2
550562
ExtDiag(idx)%name = 'csulf_ave'

ccpp/framework

ccpp/suites/suite_RRFSens_phy1.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,14 @@
1313
<group name="radiation">
1414
<subcycle loop="1">
1515
<scheme>GFS_suite_interstitial_rad_reset</scheme>
16+
<scheme>sgscloud_radpre</scheme>
1617
<scheme>GFS_rrtmg_pre</scheme>
1718
<scheme>GFS_radiation_surface</scheme>
1819
<scheme>rad_sw_pre</scheme>
1920
<scheme>rrtmg_sw</scheme>
2021
<scheme>rrtmg_sw_post</scheme>
2122
<scheme>rrtmg_lw</scheme>
23+
<scheme>sgscloud_radpost</scheme>
2224
<scheme>rrtmg_lw_post</scheme>
2325
<scheme>GFS_rrtmg_post</scheme>
2426
</subcycle>

ccpp/suites/suite_RRFSens_phy4.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,14 @@
1313
<group name="radiation">
1414
<subcycle loop="1">
1515
<scheme>GFS_suite_interstitial_rad_reset</scheme>
16+
<scheme>sgscloud_radpre</scheme>
1617
<scheme>GFS_rrtmg_pre</scheme>
1718
<scheme>GFS_radiation_surface</scheme>
1819
<scheme>rad_sw_pre</scheme>
1920
<scheme>rrtmg_sw</scheme>
2021
<scheme>rrtmg_sw_post</scheme>
2122
<scheme>rrtmg_lw</scheme>
23+
<scheme>sgscloud_radpost</scheme>
2224
<scheme>rrtmg_lw_post</scheme>
2325
<scheme>GFS_rrtmg_post</scheme>
2426
</subcycle>

io/fv3atm_rrfs_sd_io.F90

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ module fv3atm_rrfs_sd_io
6363
integer, private :: nvar_dust12m = 5
6464
integer, private :: nvar_emi = 1
6565
integer, private :: nvar_fire = 2
66-
integer, private :: nvar_fire2d = 4
66+
integer, private :: nvar_fire2d = 5
6767

6868
character(len=32), pointer, dimension(:), private :: dust12m_name => null()
6969
character(len=32), pointer, dimension(:), private :: emi_name => null()
@@ -578,6 +578,7 @@ subroutine rrfs_sd_emissions_register_fire(data, Model, restart, Atm_block)
578578
data%fire_name2d(2) = 'frp_davg'
579579
data%fire_name2d(3) = 'fire_end_hr'
580580
data%fire_name2d(4) = 'hwp_davg'
581+
data%fire_name2d(5) = 'totprcp_24hrs'
581582

582583
!--- register axis
583584
call register_axis(restart, 'lon', 'X')
@@ -637,6 +638,7 @@ subroutine rrfs_sd_emissions_copy_fire(data, Model, Sfcprop, Atm_block)
637638
Sfcprop%smoke2d_RRFS(im,2) = data%fire_var2d(i,j,2)
638639
Sfcprop%smoke2d_RRFS(im,3) = data%fire_var2d(i,j,3)
639640
Sfcprop%smoke2d_RRFS(im,4) = data%fire_var2d(i,j,4)
641+
Sfcprop%smoke2d_RRFS(im,5) = data%fire_var2d(i,j,5)
640642
else
641643
! -- user define their own fire emission
642644
endif

io/module_write_internal_state.F90

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ module write_internal_state
9898
integer :: ncld !< Number of hydrometeors.
9999
integer :: nsoil !< Number of soil layers.
100100
integer :: imp_physics !< Choice of microphysics scheme.
101+
integer :: landsfcmdl !< Choice of land surface model.
101102
integer :: dtp !< Physics timestep.
102103
real,dimension(:),allocatable :: ak !< a parameter for sigma pressure level calculations.
103104
real,dimension(:),allocatable :: bk !< b parameter for sigma pressure level calculations.

io/post_fv3.F90

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -430,7 +430,9 @@ subroutine post_getattr_fv3(wrt_int_state,grid_id)
430430
if (trim(attName) == 'ncnsto') wrt_int_state%ntrac=varival
431431
if (trim(attName) == 'ncld') wrt_int_state%ncld=varival
432432
if (trim(attName) == 'nsoil') wrt_int_state%nsoil=varival
433+
if (trim(attName) == 'fhzero') wrt_int_state%fhzero=varival
433434
if (trim(attName) == 'imp_physics') wrt_int_state%imp_physics=varival
435+
if (trim(attName) == 'landsfcmdl') wrt_int_state%landsfcmdl=varival
434436
endif
435437
else if (typekind==ESMF_TYPEKIND_R4) then
436438
if(n==1) then
@@ -554,7 +556,7 @@ subroutine set_postvars_fv3(wrt_int_state,grid_id,mype,mpicomp)
554556
no3cb, nh4cb, dusmass, ducmass, dusmass25,ducmass25, &
555557
snownc, graupelnc, qrmax, hail_maxhailcast, &
556558
smoke_ave,dust_ave,coarsepm_ave,swddif,swddni, &
557-
xlaixy
559+
xlaixy,wspd10umax,wspd10vmax
558560
use soil, only: sldpth, sh2o, smc, stc, sllevel
559561
use masks, only: lmv, lmh, htm, vtm, gdlat, gdlon, dx, dy, hbm2, sm, sice
560562
use ctlblk_mod, only: im, jm, lm, lp1, jsta, jend, jsta_2l, jend_2u, jsta_m,jend_m, &
@@ -628,7 +630,7 @@ subroutine set_postvars_fv3(wrt_int_state,grid_id,mype,mpicomp)
628630
!
629631
imp_physics = wrt_int_state%imp_physics !set GFS mp physics to 99 for Zhao scheme
630632
dtp = wrt_int_state%dtp
631-
iSF_SURFACE_PHYSICS = 2
633+
iSF_SURFACE_PHYSICS = wrt_int_state%landsfcmdl
632634
spval = 9.99e20
633635
!
634636
! nems gfs has zhour defined
@@ -1367,13 +1369,48 @@ subroutine set_postvars_fv3(wrt_int_state,grid_id,mype,mpicomp)
13671369
enddo
13681370
endif
13691371

1372+
! max temporal 10m agl wind speed
1373+
if (modelname =='GFS')then
1374+
if(trim(fieldname)=='wind10m_max') then
1375+
!$omp parallel do default(none) private(i,j) shared(jsta,jend,ista,iend,spval,wspd10max,arrayr42d,sm,fillValue)
1376+
do j=jsta,jend
1377+
do i=ista, iend
1378+
wspd10max(i,j) = arrayr42d(i,j)
1379+
if (abs(arrayr42d(i,j)-fillValue) < small) wspd10max(i,j) = spval
1380+
enddo
1381+
enddo
1382+
endif
1383+
else
13701384
! max hourly 10m agl wind speed
13711385
if(trim(fieldname)=='spd10max') then
13721386
!$omp parallel do default(none) private(i,j) shared(jsta,jend,ista,iend,spval,wspd10max,arrayr42d,sm,fillValue)
1373-
do j=jsta,jend
1387+
do j=jsta,jend
13741388
do i=ista, iend
13751389
wspd10max(i,j) = arrayr42d(i,j)
13761390
if (abs(arrayr42d(i,j)-fillValue) < small) wspd10max(i,j) = spval
1391+
enddo
1392+
enddo
1393+
endif
1394+
endif !end modelname
1395+
1396+
! u comp of temporal max 10m agl wind speed
1397+
if(trim(fieldname)=='u10m_max') then
1398+
!$omp parallel do default(none) private(i,j) shared(jsta,jend,ista,iend,spval,wspd10umax,arrayr42d,sm,fillValue)
1399+
do j=jsta,jend
1400+
do i=ista, iend
1401+
wspd10umax(i,j) = arrayr42d(i,j)
1402+
if (abs(arrayr42d(i,j)-fillValue) < small) wspd10umax(i,j) = spval
1403+
enddo
1404+
enddo
1405+
endif
1406+
1407+
! v comp of temporal max 10m agl wind speed
1408+
if(trim(fieldname)=='v10m_max') then
1409+
!$omp parallel do default(none) private(i,j) shared(jsta,jend,ista,iend,spval,wspd10vmax,arrayr42d,sm,fillValue)
1410+
do j=jsta,jend
1411+
do i=ista, iend
1412+
wspd10vmax(i,j) = arrayr42d(i,j)
1413+
if (abs(arrayr42d(i,j)-fillValue) < small) wspd10vmax(i,j) = spval
13771414
enddo
13781415
enddo
13791416
endif

0 commit comments

Comments
 (0)