Skip to content

Commit 4b10df4

Browse files
authored
Updates and bugs fixed for GEFSv12.3 (#484)
* Updates and bugs fixed for GEFSv12.2 Include surface dust PM10 author: Kate.Zhang <Kate.Zhang@noaa.gov> * updated codes based on Xianwu's code review comments * remove #if and #endif
1 parent 6737e7e commit 4b10df4

File tree

11 files changed

+217
-160
lines changed

11 files changed

+217
-160
lines changed

parm/post_avblflds.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5992,10 +5992,11 @@
59925992

59935993
<param>
59945994
<post_avblfldidx>685</post_avblfldidx>
5995-
<shortname>DU_CR_AER_SFC_MASS_CON</shortname>
5995+
<shortname>DUST10_SFC_MASS_CON</shortname>
59965996
<stats_proc>AVE</stats_proc>
59975997
<pdstmpl>tmpl4_48</pdstmpl>
5998-
<pname>MASSDEN</pname>
5998+
<pname>PMTC</pname>
5999+
<fixed_sfc1_type>surface</fixed_sfc1_type>
59996000
<aerosol_type>dust_dry</aerosol_type>
60006001
<typ_intvl_size>smaller_than_first_limit</typ_intvl_size>
60016002
<scale_fact_1st_size>6</scale_fact_1st_size>

parm/postcntrl_gefs_chem.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,12 @@
224224
<scale>9.0</scale>
225225
</param>
226226

227+
<param>
228+
<shortname>DUST10_SFC_MASS_CON</shortname>
229+
<table_info>NCEP</table_info>
230+
<scale>9.0</scale>
231+
</param>
232+
227233
<param>
228234
<shortname>DUST25_SFC_MASS_CON</shortname>
229235
<table_info>NCEP</table_info>

parm/postxconfig-NT-GEFS-CHEM.txt

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
1
2-
46
2+
47
33
GFSPRS
44
0
55
ncep_nco
@@ -1311,6 +1311,43 @@ between_first_second_limit
13111311
?
13121312
?
13131313
?
1314+
685
1315+
DUST10_SFC_MASS_CON
1316+
?
1317+
1
1318+
tmpl4_48
1319+
PMTC
1320+
NCEP
1321+
AVE
1322+
surface
1323+
0
1324+
?
1325+
0
1326+
?
1327+
?
1328+
0
1329+
?
1330+
0
1331+
?
1332+
dust_dry
1333+
smaller_than_first_limit
1334+
6
1335+
10
1336+
0
1337+
0.0
1338+
?
1339+
0
1340+
0.0
1341+
0
1342+
0.0
1343+
1
1344+
9.0
1345+
0
1346+
0
1347+
0
1348+
?
1349+
?
1350+
?
13141351
686
13151352
DUST25_SFC_MASS_CON
13161353
?

sorc/ncep_post.fd/ALLOCATE_ALL.f

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -525,7 +525,9 @@ SUBROUTINE ALLOCATE_ALL()
525525
allocate(dustallcb(im,jsta_2l:jend_2u))
526526
allocate(ssallcb(im,jsta_2l:jend_2u))
527527
allocate(dustpm(im,jsta_2l:jend_2u))
528+
allocate(dustpm10(im,jsta_2l:jend_2u))
528529
allocate(sspm(im,jsta_2l:jend_2u))
530+
allocate(maod(im,jsta_2l:jend_2u))
529531
endif
530532
! HWRF RRTMG output
531533
allocate(acswupt(im,jsta_2l:jend_2u))

sorc/ncep_post.fd/CALPW.f

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -289,12 +289,11 @@ SUBROUTINE CALPW(PW,IDECID)
289289
DO J=JSTA,JEND
290290
DO I=1,IM
291291
DP = PINT(I,J,L+1) - PINT(I,J,L)
292-
PW(I,J) = PW(I,J) + Qdum(I,J)*DP*GI*HTM(I,J,L)
293-
IF (IDECID == 17 .or. IDECID == 20 .or. IDECID == 21) THEN
294-
PW(I,J) = PW(I,J) + Qdum(I,J)*MAX(DP,0.)*GI*HTM(I,J,L)
295-
ENDIF
292+
296293
IF (IDECID == 19) THEN
297294
PW(I,J) = PW(I,J) + Qdum(I,J)
295+
ELSE
296+
PW(I,J) = PW(I,J) + Qdum(I,J)*MAX(DP,0.)*GI*HTM(I,J,L)
298297
ENDIF
299298
IF (IDECID == 14) PWS(I,J) = PWS(I,J) + QS(I,J)*DP*GI*HTM(I,J,L)
300299
ENDDO

sorc/ncep_post.fd/CLDRAD.f

Lines changed: 34 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ SUBROUTINE CLDRAD
109109
SWDDIFC, SWUPBC, LWDNBC, LWUPBC, SWUPT, &
110110
TAOD5502D, AERSSA2D, AERASY2D, MEAN_FRP, LWP, IWP, &
111111
TAOD5502D, AERSSA2D, AERASY2D, &
112-
DUSTCB,SSCB,BCCB,OCCB,SULFCB,DUSTPM,SSPM
112+
DUSTCB,SSCB,BCCB,OCCB,SULFCB,DUSTPM,DUSTPM10,SSPM,MAOD
113113
use masks, only: LMH, HTM
114114
use params_mod, only: TFRZ, D00, H99999, QCLDMIN, SMALL, D608, H1, ROG, &
115115
GI, RD, QCONV, ABSCOEFI, ABSCOEF, STBOL, PQ0, A2, &
@@ -5137,50 +5137,49 @@ SUBROUTINE CLDRAD
51375137
51385138
ENDIF ! END OF LAEROPT IF-BLOCK
51395139
5140+
!#if 0
51405141
!! Multiply by 1.E-6 to revert these fields back
5141-
IF (IGET(659).GT.0) THEN
5142+
IF (IGET(667).GT.0) THEN
51425143
GRID1=SPVAL
51435144
!$omp parallel do private(i,j)
51445145
DO J = JSTA,JEND
51455146
DO I = 1,IM
5146-
GRID1(I,J) = DUEM(I,J,1)*1.E-6
5147-
DO K=2,NBIN_DU
5148-
GRID1(I,J) = GRID1(I,J) + DUEM(I,J,K)*1.E-6
5147+
GRID1(I,J) = BCEM(I,J,1)
5148+
DO K=2,NBIN_BC
5149+
GRID1(I,J) = GRID1(I,J) + BCEM(I,J,K)
51495150
END DO
51505151
END DO
51515152
END DO
51525153
ID(1:25) = 0
51535154
ID(02)=141
51545155
if(grib=='grib1') then
5155-
CALL GRIBIT(IGET(659),LVLS(1,IGET(659)),GRID1,IM,JM)
5156+
CALL GRIBIT(IGET(667),LVLS(1,IGET(667)),GRID1,IM,JM)
51565157
elseif(grib=='grib2') then
51575158
cfld=cfld+1
5158-
fld_info(cfld)%ifld=IAVBLFLD(IGET(659))
5159+
fld_info(cfld)%ifld=IAVBLFLD(IGET(667))
51595160
datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
51605161
endif
51615162
ENDIF
51625163
5163-
IF (IGET(660).GT.0) THEN
5164+
IF (IGET(699).GT.0) THEN
51645165
GRID1=SPVAL
51655166
!$omp parallel do private(i,j)
51665167
DO J = JSTA,JEND
51675168
DO I = 1,IM
5168-
GRID1(I,J) = DUSD(I,J,1)*1.E-6
5169-
DO K=2,NBIN_DU
5170-
GRID1(I,J) = GRID1(I,J)+ DUSD(I,J,K)*1.E-6
5171-
END DO
5169+
GRID1(I,J) = MAOD(I,J)
51725170
END DO
51735171
END DO
51745172
ID(1:25) = 0
51755173
ID(02)=141
51765174
if(grib=='grib1') then
5177-
CALL GRIBIT(IGET(660),LVLS(1,IGET(660)),GRID1,IM,JM)
5175+
CALL GRIBIT(IGET(699),LVLS(1,IGET(699)),GRID1,IM,JM)
51785176
elseif(grib=='grib2') then
51795177
cfld=cfld+1
5180-
fld_info(cfld)%ifld=IAVBLFLD(IGET(660))
5178+
fld_info(cfld)%ifld=IAVBLFLD(IGET(699))
51815179
datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
51825180
endif
51835181
ENDIF
5182+
!#endif
51845183
!! ADD DUST DRY DEPOSITION FLUXES (kg/m2/sec)
51855184
!
51865185
! IF (IGET(661).GT.0) THEN
@@ -5208,7 +5207,6 @@ SUBROUTINE CLDRAD
52085207
!$omp parallel do private(i,j)
52095208
DO J = JSTA,JEND
52105209
DO I = 1,IM
5211-
!GRID1(I,J) = DUSMASS(I,J) * 1.E-6
52125210
GRID1(I,J) = DUSTPM(I,J) !ug/m3
52135211
END DO
52145212
END DO
@@ -5223,6 +5221,24 @@ SUBROUTINE CLDRAD
52235221
endif
52245222
ENDIF
52255223
5224+
IF (IGET(685).GT.0 ) THEN
5225+
!$omp parallel do private(i,j)
5226+
DO J = JSTA,JEND
5227+
DO I = 1,IM
5228+
GRID1(I,J) = DUSTPM10(I,J) !ug/m3
5229+
END DO
5230+
END DO
5231+
ID(1:25) = 0
5232+
ID(02)=129
5233+
if(grib=='grib1') then
5234+
CALL GRIBIT(IGET(685),LVLS(1,IGET(685)),GRID1,IM,JM)
5235+
elseif(grib=='grib2') then
5236+
cfld=cfld+1
5237+
fld_info(cfld)%ifld=IAVBLFLD(IGET(685))
5238+
datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
5239+
endif
5240+
ENDIF
5241+
52265242
!! ADD DUST WET DEPOSITION FLUXES (kg/m2/sec)
52275243
! IF (IGET(662).GT.0) THEN
52285244
! DO J = JSTA,JEND
@@ -5469,6 +5485,9 @@ SUBROUTINE CLDRAD
54695485
IF (IGET(674).GT.0) call wrt_aero_diag(674,nbin_oc,ocwt)
54705486
IF (IGET(682).GT.0) call wrt_aero_diag(682,nbin_oc,ocsv)
54715487
print *,'aft wrt disg ocwt'
5488+
!! wrt MIE AOD at 550nm
5489+
IF (IGET(699).GT.0) call wrt_aero_diag(699,1,maod)
5490+
print *,'aft wrt disg maod'
54725491
54735492
!! wrt SU diag field
54745493
! IF (IGET(675).GT.0) call wrt_aero_diag(675,nbin_su,suem)

sorc/ncep_post.fd/DEALLOCATE.f

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -514,7 +514,9 @@ SUBROUTINE DE_ALLOCATE
514514
deallocate(dustallcb)
515515
deallocate(ssallcb)
516516
deallocate(dustpm)
517+
deallocate(dustpm10)
517518
deallocate(sspm)
519+
deallocate(maod)
518520
endif
519521
!
520522
! HWRF RRTMG output

0 commit comments

Comments
 (0)