diff --git a/parm/fv3lam_cmaq.xml b/parm/fv3lam_cmaq.xml new file mode 100644 index 000000000..4ef8bd0e9 --- /dev/null +++ b/parm/fv3lam_cmaq.xml @@ -0,0 +1,53 @@ + + + + + CMAQ + 32769 + ncep_nco + v2003 + local_tab_yes1 + fcst + oper + fcst + fcst + hour + nws_ncep + nmm_8km + complex_packing_spatial_diff + 2nd_ord_sptdiff + fltng_pnt + lossless + + + PM25TOT_ON_HYBRID_LVL + PMTF + NCEP + 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. +25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. +49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. + 7.0 + + + + O3MR_ON_HYBRID_LVL + O3MR + NCEP + 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. +25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. +49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. + 7.0 + + + + OZCON_ON_HYBRID_LVL + OZCON + NCEP + 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. +25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. +49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. + 7.0 + + + + diff --git a/parm/post_avblflds.xml b/parm/post_avblflds.xml index 2bdb0f090..bcca03e07 100755 --- a/parm/post_avblflds.xml +++ b/parm/post_avblflds.xml @@ -7709,6 +7709,21 @@ 6.0 + + 994 + OZCON_ON_HYBRID_LVL + OZCON + hybrid_lvl + 7.0 + + + + 995 + PM25TOT_ON_HYBRID_LVL + PMTF + hybrid_lvl + 7.0 + diff --git a/parm/postxconfig-NT-fv3lam_cmaq.txt b/parm/postxconfig-NT-fv3lam_cmaq.txt new file mode 100644 index 000000000..1eec84111 --- /dev/null +++ b/parm/postxconfig-NT-fv3lam_cmaq.txt @@ -0,0 +1,129 @@ +1 +3 +CMAQ +32769 +ncep_nco +v2003 +local_tab_yes1 +fcst +oper +fcst +fcst +hour +nws_ncep +nmm_8km +complex_packing_spatial_diff +2nd_ord_sptdiff +fltng_pnt +lossless +995 +PM25TOT_ON_HYBRID_LVL +? +1 +tmpl4_0 +PMTF +NCEP +? +hybrid_lvl +0 +? +64 +1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +7.0 +0 +0 +0 +? +? +? +267 +O3MR_ON_HYBRID_LVL +? +1 +tmpl4_0 +O3MR +NCEP +? +hybrid_lvl +0 +? +64 +1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +7.0 +0 +0 +0 +? +? +? +994 +OZCON_ON_HYBRID_LVL +? +1 +tmpl4_0 +OZCON +NCEP +? +hybrid_lvl +0 +? +64 +1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +7.0 +0 +0 +0 +? +? +? diff --git a/sorc/ncep_post.fd/ALLOCATE_ALL.f b/sorc/ncep_post.fd/ALLOCATE_ALL.f index 322ccb8ad..f615db747 100644 --- a/sorc/ncep_post.fd/ALLOCATE_ALL.f +++ b/sorc/ncep_post.fd/ALLOCATE_ALL.f @@ -1291,5 +1291,25 @@ SUBROUTINE ALLOCATE_ALL() uuavg(i,j)=spval enddo enddo -! + +! AQF + if (me == 0) print *,'aqfcmaq_on= ', aqfcmaq_on + if (aqfcmaq_on) then + + allocate(ozcon(im,jsta_2l:jend_2u,lm)) + allocate(pmtf(im,jsta_2l:jend_2u,lm)) + +!Initialization +!$omp parallel do private(i,j,l) + do l=1,lm + do j=jsta_2l,jend_2u + do i=1,im + ozcon(i,j,l)=0. + pmtf(i,j,l)=0. + enddo + enddo + enddo + + endif +! end diff --git a/sorc/ncep_post.fd/CTLBLK.f b/sorc/ncep_post.fd/CTLBLK.f index 74e48a718..df647f1dd 100644 --- a/sorc/ncep_post.fd/CTLBLK.f +++ b/sorc/ncep_post.fd/CTLBLK.f @@ -41,7 +41,7 @@ module CTLBLK_mod real*8 :: gdsdegr real,allocatable :: datapd(:,:,:) ! - logical :: gocart_on, d3d_on, hyb_sigp, rdaod + logical :: gocart_on, d3d_on, hyb_sigp, rdaod, aqfcmaq_on logical :: SIGMA,RUN,FIRST,RESTRT logical :: global logical :: SMFLAG diff --git a/sorc/ncep_post.fd/DEALLOCATE.f b/sorc/ncep_post.fd/DEALLOCATE.f index bb80f4496..fd3eef1be 100644 --- a/sorc/ncep_post.fd/DEALLOCATE.f +++ b/sorc/ncep_post.fd/DEALLOCATE.f @@ -552,5 +552,11 @@ SUBROUTINE DE_ALLOCATE deallocate(ddvdx) deallocate(ddudy) deallocate(uuavg) - + +! AQF + if (aqfcmaq_on) then + deallocate(ozcon) + deallocate(pmtf) + endif + end diff --git a/sorc/ncep_post.fd/INITPOST_NETCDF.f b/sorc/ncep_post.fd/INITPOST_NETCDF.f index 891893c7b..090f266f0 100644 --- a/sorc/ncep_post.fd/INITPOST_NETCDF.f +++ b/sorc/ncep_post.fd/INITPOST_NETCDF.f @@ -45,7 +45,8 @@ SUBROUTINE INITPOST_NETCDF(ncid3d) o3vdiff, o3prod, o3tndy, mwpv, unknown, vdiffzacce, zgdrag,cnvctummixing, & vdiffmacce, mgdrag, cnvctvmmixing, ncnvctcfrac, cnvctumflx, cnvctdmflx, & cnvctzgdrag, sconvmois, cnvctmgdrag, cnvctdetmflx, duwt, duem, dusd, dudp, & - wh, qqg, ref_10cm + wh, qqg, ref_10cm, pmtf, ozcon + use vrbls2d, only: f, pd, fis, pblh, ustar, z0, ths, qs, twbs, qwbs, avgcprate, & cprate, avgprec, prec, lspa, sno, si, cldefi, th10, q10, tshltr, pshltr, & tshltr, albase, avgalbedo, avgtcdc, czen, czmean, mxsnal, radot, sigt4, & @@ -78,7 +79,7 @@ SUBROUTINE INITPOST_NETCDF(ncid3d) ardsw, asrfc, avrain, avcnvc, theat, gdsdegr, spl, lsm, alsl, im, jm, im_jm, lm, & jsta_2l, jend_2u, nsoil, lp1, icu_physics, ivegsrc, novegtype, nbin_ss, nbin_bc, & nbin_oc, nbin_su, gocart_on, pt_tbl, hyb_sigp, filenameFlux, fileNameAER, & - iSF_SURFACE_PHYSICS,rdaod + iSF_SURFACE_PHYSICS,rdaod, aqfcmaq_on use gridspec_mod, only: maptype, gridtype, latstart, latlast, lonstart, lonlast, cenlon, & dxval, dyval, truelat2, truelat1, psmapf, cenlat,lonstartv, lonlastv, cenlonv, & latstartv, latlastv, cenlatv,latstart_r,latlast_r,lonstart_r,lonlast_r, STANDLON @@ -182,6 +183,192 @@ SUBROUTINE INITPOST_NETCDF(ncid3d) real(kind=4),allocatable :: vcrd(:,:) real :: dum_const +! AQF + + real, allocatable :: aacd(:,:,:), aalj(:,:,:) & + ,aalk1j(:,:,:), aalk2j(:,:,:) & + ,abnz1j(:,:,:), abnz2j(:,:,:), abnz3j(:,:,:) & + ,acaj(:,:,:), acet(:,:,:) & + ,acli(:,:,:), aclj(:,:,:), aclk(:,:,:) & + ,acors(:,:,:), acro_primary(:,:,:) & + ,acrolein(:,:,:), aeci(:,:,:) & + ,aecj(:,:,:), afej(:,:,:) & + ,aglyj(:,:,:) & + ,ah2oi(:,:,:), ah2oj(:,:,:), ah2ok(:,:,:) & + ,ah3opi(:,:,:), ah3opj(:,:,:), ah3opk(:,:,:) & + ,aiso1j(:,:,:), aiso2j(:,:,:), aiso3j(:,:,:) & + ,aivpo1j(:,:,:), akj(:,:,:) & + ,ald2(:,:,:), ald2_primary(:,:,:) & + ,aldx(:,:,:) & + ,alvoo1i(:,:,:), alvoo1j(:,:,:) & + ,alvoo2i(:,:,:), alvoo2j(:,:,:) & + ,alvpo1i(:,:,:), alvpo1j(:,:,:) & + ,amgj(:,:,:), amnj(:,:,:) & + ,amgk(:,:,:), akk(:,:,:), acak(:,:,:) & + ,anai(:,:,:), anaj(:,:,:), anak(:,:,:) & + ,anh4i(:,:,:), anh4j(:,:,:), anh4k(:,:,:) & + ,ano3i(:,:,:), ano3j(:,:,:), ano3k(:,:,:) & + ,aolgaj(:,:,:), aolgbj(:,:,:), aorgcj(:,:,:) & + ,aomi(:,:,:), aomj(:,:,:) & + ,aothri(:,:,:), aothrj(:,:,:) & + ,apah1j(:,:,:), apah2j(:,:,:), apah3j(:,:,:) & + ,apomi(:,:,:), apomj(:,:,:) & + ,apcsoj(:,:,:), aseacat(:,:,:), asij(:,:,:) & + ,aso4i(:,:,:), aso4j(:,:,:), aso4k(:,:,:) & + ,asoil(:,:,:), asqtj(:,:,:) & + ,asomi(:,:,:), asomj(:,:,:) & + ,asvoo1i(:,:,:), asvoo1j(:,:,:) & + ,asvoo2i(:,:,:), asvoo2j(:,:,:) & + ,asvoo3j(:,:,:) & + ,asvpo1i(:,:,:), asvpo1j(:,:,:) & + ,asvpo2i(:,:,:), asvpo2j(:,:,:) & + ,asvpo3j(:,:,:) & + ,atij(:,:,:) & + ,atol1j(:,:,:), atol2j(:,:,:), atol3j(:,:,:) & + ,atoti(:,:,:), atotj(:,:,:), atotk(:,:,:) & + ,atrp1j(:,:,:), atrp2j(:,:,:) & + ,axyl1j(:,:,:), axyl2j(:,:,:), axyl3j(:,:,:) & + ,pm25ac(:,:,:), pm25at(:,:,:), pm25co(:,:,:) + + + if (me == 0) print *,' aqfcmaq_on=', aqfcmaq_on + + if (aqfcmaq_on) then + + allocate(aacd(im,jsta_2l:jend_2u,lm)) + allocate(aalj(im,jsta_2l:jend_2u,lm)) + allocate(aalk1j(im,jsta_2l:jend_2u,lm)) + allocate(aalk2j(im,jsta_2l:jend_2u,lm)) + + allocate(abnz1j(im,jsta_2l:jend_2u,lm)) + allocate(abnz2j(im,jsta_2l:jend_2u,lm)) + allocate(abnz3j(im,jsta_2l:jend_2u,lm)) + + allocate(acaj(im,jsta_2l:jend_2u,lm)) + allocate(acet(im,jsta_2l:jend_2u,lm)) + + allocate(acli(im,jsta_2l:jend_2u,lm)) + allocate(aclj(im,jsta_2l:jend_2u,lm)) + allocate(aclk(im,jsta_2l:jend_2u,lm)) + + allocate(acors(im,jsta_2l:jend_2u,lm)) + allocate(acro_primary(im,jsta_2l:jend_2u,lm)) + allocate(acrolein(im,jsta_2l:jend_2u,lm)) + allocate(aeci(im,jsta_2l:jend_2u,lm)) + allocate(aecj(im,jsta_2l:jend_2u,lm)) + allocate(afej(im,jsta_2l:jend_2u,lm)) + allocate(aglyj(im,jsta_2l:jend_2u,lm)) + + allocate(ah2oi(im,jsta_2l:jend_2u,lm)) + allocate(ah2oj(im,jsta_2l:jend_2u,lm)) + allocate(ah2ok(im,jsta_2l:jend_2u,lm)) + + allocate(ah3opi(im,jsta_2l:jend_2u,lm)) + allocate(ah3opj(im,jsta_2l:jend_2u,lm)) + allocate(ah3opk(im,jsta_2l:jend_2u,lm)) + + allocate(aiso1j(im,jsta_2l:jend_2u,lm)) + allocate(aiso2j(im,jsta_2l:jend_2u,lm)) + allocate(aiso3j(im,jsta_2l:jend_2u,lm)) + + allocate(aivpo1j(im,jsta_2l:jend_2u,lm)) + allocate(akj(im,jsta_2l:jend_2u,lm)) + + allocate(ald2(im,jsta_2l:jend_2u,lm)) + allocate(ald2_primary(im,jsta_2l:jend_2u,lm)) + + allocate(aldx(im,jsta_2l:jend_2u,lm)) + + allocate(alvoo1i(im,jsta_2l:jend_2u,lm)) + allocate(alvoo1j(im,jsta_2l:jend_2u,lm)) + allocate(alvoo2i(im,jsta_2l:jend_2u,lm)) + allocate(alvoo2j(im,jsta_2l:jend_2u,lm)) + allocate(alvpo1i(im,jsta_2l:jend_2u,lm)) + allocate(alvpo1j(im,jsta_2l:jend_2u,lm)) + + allocate(amgj(im,jsta_2l:jend_2u,lm)) + allocate(amnj(im,jsta_2l:jend_2u,lm)) + + allocate(anai(im,jsta_2l:jend_2u,lm)) + allocate(anaj(im,jsta_2l:jend_2u,lm)) + allocate(anak(im,jsta_2l:jend_2u,lm)) + + allocate(anh4i(im,jsta_2l:jend_2u,lm)) + allocate(anh4j(im,jsta_2l:jend_2u,lm)) + allocate(anh4k(im,jsta_2l:jend_2u,lm)) + + allocate(ano3i(im,jsta_2l:jend_2u,lm)) + allocate(ano3j(im,jsta_2l:jend_2u,lm)) + allocate(ano3k(im,jsta_2l:jend_2u,lm)) + + allocate(aolgaj(im,jsta_2l:jend_2u,lm)) + allocate(aolgbj(im,jsta_2l:jend_2u,lm)) + + allocate(aomi(im,jsta_2l:jend_2u,lm)) + allocate(aomj(im,jsta_2l:jend_2u,lm)) + + allocate(aorgcj(im,jsta_2l:jend_2u,lm)) + + allocate(aothri(im,jsta_2l:jend_2u,lm)) + allocate(aothrj(im,jsta_2l:jend_2u,lm)) + + allocate(apah1j(im,jsta_2l:jend_2u,lm)) + allocate(apah2j(im,jsta_2l:jend_2u,lm)) + allocate(apah3j(im,jsta_2l:jend_2u,lm)) + + allocate(apcsoj(im,jsta_2l:jend_2u,lm)) + + allocate(apomi(im,jsta_2l:jend_2u,lm)) + allocate(apomj(im,jsta_2l:jend_2u,lm)) + + allocate(aseacat(im,jsta_2l:jend_2u,lm)) + allocate(asij(im,jsta_2l:jend_2u,lm)) + + allocate(aso4i(im,jsta_2l:jend_2u,lm)) + allocate(aso4j(im,jsta_2l:jend_2u,lm)) + allocate(aso4k(im,jsta_2l:jend_2u,lm)) + allocate(asoil(im,jsta_2l:jend_2u,lm)) + + allocate(asomi(im,jsta_2l:jend_2u,lm)) + allocate(asomj(im,jsta_2l:jend_2u,lm)) + + allocate(asqtj(im,jsta_2l:jend_2u,lm)) + + allocate(asvoo1i(im,jsta_2l:jend_2u,lm)) + allocate(asvoo1j(im,jsta_2l:jend_2u,lm)) + allocate(asvoo2i(im,jsta_2l:jend_2u,lm)) + allocate(asvoo2j(im,jsta_2l:jend_2u,lm)) + allocate(asvoo3j(im,jsta_2l:jend_2u,lm)) + + allocate(asvpo1i(im,jsta_2l:jend_2u,lm)) + allocate(asvpo1j(im,jsta_2l:jend_2u,lm)) + allocate(asvpo2i(im,jsta_2l:jend_2u,lm)) + allocate(asvpo2j(im,jsta_2l:jend_2u,lm)) + allocate(asvpo3j(im,jsta_2l:jend_2u,lm)) + + allocate(atij(im,jsta_2l:jend_2u,lm)) + + allocate(atol1j(im,jsta_2l:jend_2u,lm)) + allocate(atol2j(im,jsta_2l:jend_2u,lm)) + allocate(atol3j(im,jsta_2l:jend_2u,lm)) + + allocate(atoti(im,jsta_2l:jend_2u,lm)) + allocate(atotj(im,jsta_2l:jend_2u,lm)) + allocate(atotk(im,jsta_2l:jend_2u,lm)) + + allocate(atrp1j(im,jsta_2l:jend_2u,lm)) + allocate(atrp2j(im,jsta_2l:jend_2u,lm)) + + allocate(axyl1j(im,jsta_2l:jend_2u,lm)) + allocate(axyl2j(im,jsta_2l:jend_2u,lm)) + allocate(axyl3j(im,jsta_2l:jend_2u,lm)) + + allocate(pm25ac(im,jsta_2l:jend_2u,lm)) + allocate(pm25at(im,jsta_2l:jend_2u,lm)) + allocate(pm25co(im,jsta_2l:jend_2u,lm)) + + endif + !*********************************************************************** ! START INIT HERE. ! @@ -863,6 +1050,579 @@ SUBROUTINE INITPOST_NETCDF(ncid3d) cwm(isa,jsa,l) end do +!============================= +! For AQF Chemical species +!============================= + + if (aqfcmaq_on) then + + ! *********** VarName need to be in lower case ************ + ! === It will cause problem if not use the lower case ===== + ! ********************************************************* + + !-------------------------------------------------------------- + !-- rename input o3 to NCO grib2 name ozcon ------------------- + + VarName='o3' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,ozcon(1,jsta_2l,1)) + + !-------------------------------------------------------------- + + VarName='aacd' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,aacd(1,jsta_2l,1)) + + VarName='aalj' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,aalj(1,jsta_2l,1)) + + VarName='aalk1j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,aalk1j(1,jsta_2l,1)) + + VarName='aalk2j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,aalk2j(1,jsta_2l,1)) + + VarName='abnz1j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,abnz1j(1,jsta_2l,1)) + + VarName='abnz2j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,abnz2j(1,jsta_2l,1)) + + VarName='abnz3j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,abnz3j(1,jsta_2l,1)) + + VarName='acaj' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,acaj(1,jsta_2l,1)) + + VarName='acet' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,acet(1,jsta_2l,1)) + + VarName='acli' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,acli(1,jsta_2l,1)) + + VarName='aclj' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,aclj(1,jsta_2l,1)) + + VarName='aclk' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,aclk(1,jsta_2l,1)) + + VarName='acors' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,acors(1,jsta_2l,1)) + + VarName='acro_primary' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,acro_primary(1,jsta_2l,1)) + + VarName='acrolein' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,acrolein(1,jsta_2l,1)) + + VarName='aeci' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,aeci(1,jsta_2l,1)) + + VarName='aecj' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,aecj(1,jsta_2l,1)) + + VarName='afej' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,afej(1,jsta_2l,1)) + + VarName='aglyj' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,aglyj(1,jsta_2l,1)) + + VarName='ah2oi' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,ah2oi(1,jsta_2l,1)) + + VarName='ah2oj' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,ah2oj(1,jsta_2l,1)) + + VarName='ah2ok' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,ah2ok(1,jsta_2l,1)) + + VarName='ah3opi' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,ah3opi(1,jsta_2l,1)) + + VarName='ah3opj' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,ah3opj(1,jsta_2l,1)) + + VarName='ah3opk' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,ah3opk(1,jsta_2l,1)) + + VarName='aiso1j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,aiso1j(1,jsta_2l,1)) + + VarName='aiso2j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,aiso2j(1,jsta_2l,1)) + + VarName='aiso3j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,aiso3j(1,jsta_2l,1)) + + VarName='aivpo1j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,aivpo1j(1,jsta_2l,1)) + + VarName='akj' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,akj(1,jsta_2l,1)) + + VarName='ald2' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,ald2(1,jsta_2l,1)) + + VarName='ald2_primary' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,ald2_primary(1,jsta_2l,1)) + + VarName='aldx' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,aldx(1,jsta_2l,1)) + + VarName='alvoo1i' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,alvoo1i(1,jsta_2l,1)) + + VarName='alvoo1j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,alvoo1j(1,jsta_2l,1)) + + VarName='alvoo2i' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,alvoo2i(1,jsta_2l,1)) + + VarName='alvoo2j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,alvoo2j(1,jsta_2l,1)) + + VarName='alvpo1i' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,alvpo1i(1,jsta_2l,1)) + + VarName='alvpo1j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,alvpo1j(1,jsta_2l,1)) + + VarName='amgj' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,amgj(1,jsta_2l,1)) + + VarName='amnj' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,amnj(1,jsta_2l,1)) + + VarName='anai' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,anai(1,jsta_2l,1)) + + VarName='anaj' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,anaj(1,jsta_2l,1)) + + VarName='anh4i' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,anh4i(1,jsta_2l,1)) + + VarName='anh4j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,anh4j(1,jsta_2l,1)) + + VarName='anh4k' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,anh4k(1,jsta_2l,1)) + + VarName='ano3i' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,ano3i(1,jsta_2l,1)) + + VarName='ano3j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,ano3j(1,jsta_2l,1)) + + VarName='ano3k' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,ano3k(1,jsta_2l,1)) + + VarName='aolgaj' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,aolgaj(1,jsta_2l,1)) + + VarName='aolgbj' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,aolgbj(1,jsta_2l,1)) + + VarName='aorgcj' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,aorgcj(1,jsta_2l,1)) + + VarName='aothri' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,aothri(1,jsta_2l,1)) + + VarName='aothrj' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,aothrj(1,jsta_2l,1)) + + VarName='apah1j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,apah1j(1,jsta_2l,1)) + + VarName='apah2j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,apah2j(1,jsta_2l,1)) + + VarName='apah3j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,apah3j(1,jsta_2l,1)) + + VarName='apcsoj' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,apcsoj(1,jsta_2l,1)) + + VarName='aseacat' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,aseacat(1,jsta_2l,1)) + + VarName='asij' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,asij(1,jsta_2l,1)) + + VarName='aso4i' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,aso4i(1,jsta_2l,1)) + + VarName='aso4j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,aso4j(1,jsta_2l,1)) + + VarName='aso4k' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,aso4k(1,jsta_2l,1)) + + VarName='asoil' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,asoil(1,jsta_2l,1)) + + VarName='asqtj' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,asqtj(1,jsta_2l,1)) + + VarName='asvoo1i' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,asvoo1i(1,jsta_2l,1)) + + VarName='asvoo1j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,asvoo1j(1,jsta_2l,1)) + + VarName='asvoo2i' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,asvoo2i(1,jsta_2l,1)) + + VarName='asvoo2j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,asvoo2j(1,jsta_2l,1)) + + VarName='asvoo3j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,asvoo3j(1,jsta_2l,1)) + + VarName='asvpo1i' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,asvpo1i(1,jsta_2l,1)) + + VarName='asvpo1j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,asvpo1j(1,jsta_2l,1)) + + VarName='asvpo2i' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,asvpo2i(1,jsta_2l,1)) + + VarName='asvpo2j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,asvpo2j(1,jsta_2l,1)) + + VarName='asvpo3j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,asvpo3j(1,jsta_2l,1)) + + VarName='atij' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,atij(1,jsta_2l,1)) + + VarName='atol1j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,atol1j(1,jsta_2l,1)) + + VarName='atol2j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,atol2j(1,jsta_2l,1)) + + VarName='atol3j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,atol3j(1,jsta_2l,1)) + + VarName='atrp1j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,atrp1j(1,jsta_2l,1)) + + VarName='atrp2j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,atrp2j(1,jsta_2l,1)) + + VarName='axyl1j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,axyl1j(1,jsta_2l,1)) + + VarName='axyl2j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,axyl2j(1,jsta_2l,1)) + + VarName='axyl3j' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,axyl3j(1,jsta_2l,1)) + + VarName='pm25ac' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,pm25ac(1,jsta_2l,1)) + + VarName='pm25at' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,pm25at(1,jsta_2l,1)) + + VarName='pm25co' + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,lm,pm25co(1,jsta_2l,1)) + +!========================= +! PM2.5 SPECIES +!========================= + + ! do l=1,lm + ! do j=jsta,jend + ! do i=1,im + ! pm25hp(i,j,l) = ( ah3opi(i,j,l)*pm25at(i,j,l) & + ! + ah3opj(i,j,l)*pm25ac(i,j,l) & + ! + ah3opk(i,j,l)*pm25co(i,j,l) ) / 19.0 + + ! pm25cl(i,j,l) = acli(i,j,l)*pm25at(i,j,l) & + ! + aclj(i,j,l)*pm25ac(i,j,l) & + ! + aclk(i,j,l)*pm25co(i,j,l) + + ! pm25ec(i,j,l) = aeci(i,j,l)*pm25at(i,j,l) & + ! + aecj(i,j,l)*pm25ac(i,j,l) + ! enddo + ! enddo + ! enddo + + + ! do l=1,lm + ! do j=jsta,jend + ! do i=1,im + + ! anak(i,j,l) = 0.8373 * aseacat(i,j,l) & + ! + 0.0626 * asoil(i,j,l) & + ! + 0.0023 * acors(i,j,l) + + ! pm25na(i,j,l) = anai(i,j,l)*pm25at(i,j,l) & + ! + anaj(i,j,l)*pm25ac(i,j,l) & + ! + anak(i,j,l)*pm25co(i,j,l) + ! enddo + ! enddo + ! enddo + + do l=1,lm + do j=jsta,jend + do i=1,im + + apomi(i,j,l) = alvpo1i(i,j,l) & + +asvpo1i(i,j,l) + asvpo2i(i,j,l) + + apomj(i,j,l) = alvpo1j(i,j,l) & + +asvpo1j(i,j,l) + asvpo2j(i,j,l) + asvpo3j(i,j,l) & + +aivpo1j(i,j,l) + + asomi(i,j,l) = alvoo1i(i,j,l) + alvoo2i(i,j,l) & + +asvoo1i(i,j,l) + asvoo2i(i,j,l) + + asomj(i,j,l) = axyl1j(i,j,l) + axyl2j(i,j,l) + axyl3j(i,j,l) & + +atol1j(i,j,l) + atol2j(i,j,l) + atol3j(i,j,l) & + +abnz1j(i,j,l) + abnz2j(i,j,l) + abnz3j(i,j,l) & + +aiso1j(i,j,l) + aiso2j(i,j,l) + aiso3j(i,j,l) & + +atrp1j(i,j,l) + atrp2j(i,j,l) + asqtj(i,j,l) & + +aalk1j(i,j,l) + aalk2j(i,j,l) & + +apah1j(i,j,l) + apah2j(i,j,l) + apah3j(i,j,l) & + +aorgcj(i,j,l) + aolgbj(i,j,l) + aolgaj(i,j,l) & + +alvoo1j(i,j,l) + alvoo2j(i,j,l) & + +asvoo1j(i,j,l) + asvoo2j(i,j,l) + asvoo3j(i,j,l) & + +apcsoj(i,j,l) + + aomi(i,j,l) = apomi(i,j,l) + asomi(i,j,l) + aomj(i,j,l) = apomj(i,j,l) + asomj(i,j,l) + + atoti(i,j,l) = aso4i(i,j,l) + ano3i(i,j,l) + anh4i(i,j,l) & + + anai(i,j,l) + acli(i,j,l) + aeci(i,j,l) & + + aomi(i,j,l) +aothri(i,j,l) + + atotj(i,j,l) = aso4j(i,j,l) + ano3j(i,j,l) + anh4j(i,j,l) & + + anaj(i,j,l) + aclj(i,j,l) + aecj(i,j,l) & + + aomj(i,j,l) +aothrj(i,j,l) & + + afej(i,j,l) + asij(i,j,l) + atij(i,j,l) & + + acaj(i,j,l) + amgj(i,j,l) + amnj(i,j,l) & + + aalj(i,j,l) + akj(i,j,l) + + atotk(i,j,l) = asoil(i,j,l) + acors(i,j,l) + aseacat(i,j,l)& + + aclk(i,j,l) & + +aso4k(i,j,l) + ano3k(i,j,l) + anh4k(i,j,l) + + pmtf(i,j,l) = atoti(i,j,l)*pm25at(i,j,l) & + + atotj(i,j,l)*pm25ac(i,j,l) & + + atotk(i,j,l)*pm25co(i,j,l) + enddo + enddo + enddo + + deallocate (aacd, aalj, aalk1j, aalk2j, abnz1j, abnz2j, abnz3j) + deallocate (acaj, acet, acli, aclj, aclk) + deallocate (acors, acro_primary, acrolein) + + deallocate (aeci, aecj, afej, aglyj, ah2oi, ah2oj, ah2ok) + deallocate (ah3opi, ah3opj, ah3opk, aiso1j, aiso2j, aiso3j) + + deallocate (aivpo1j, akj, ald2, ald2_primary, aldx) + deallocate (alvoo1i, alvoo1j, alvoo2i, alvoo2j, alvpo1i, alvpo1j) + + deallocate (amgj, amnj, anai, anaj, anak) + deallocate (anh4i, anh4j, anh4k, ano3i, ano3j, ano3k) + + deallocate (aolgaj, aolgbj, aomi, aomj) + deallocate (aorgcj, aothri, aothrj, apah1j, apah2j, apah3j) + + deallocate (apcsoj, apomi, apomj, aseacat, asij) + deallocate (aso4i, aso4j, aso4k, asoil, asomi, asomj, asqtj) + + deallocate (asvoo1i, asvoo1j, asvoo2i, asvoo2j, asvoo3j) + deallocate (asvpo1i, asvpo1j, asvpo2i, asvpo2j, asvpo3j) + + deallocate (atij, atol1j, atol2j, atol3j, atrp1j, atrp2j) + deallocate (atoti, atotj, atotk, axyl1j, axyl2j, axyl3j) + + deallocate (pm25ac, pm25at, pm25co) + + endif ! -- aqfcmaq_on +!============================ + ! max hourly updraft velocity VarName='upvvelmax' call read_netcdf_2d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & diff --git a/sorc/ncep_post.fd/MDLFLD.f b/sorc/ncep_post.fd/MDLFLD.f index b85e17a11..fba6eb383 100644 --- a/sorc/ncep_post.fd/MDLFLD.f +++ b/sorc/ncep_post.fd/MDLFLD.f @@ -85,7 +85,8 @@ SUBROUTINE MDLFLD qqr, qqs, cfr, cfr_raw, dbz, dbzr, dbzi, dbzc, qqw, nlice, nrain, qqg, zint, qqni,& qqnr, qqnw, qqnwfa, qqnifa, uh, vh, mcvg, omga, wh, q2, ttnd, rswtt, & rlwtt, train, tcucn, o3, rhomid, dpres, el_pbl, pint, icing_gfip, icing_gfis, & - catedr,mwt,gtg, REF_10CM + catedr,mwt,gtg, REF_10CM, pmtf, ozcon + use vrbls2d, only: slp, hbot, htop, cnvcfr, cprate, cnvcfr, sfcshx,sfclhx,ustar,z0,& sr, prec, vis, czen, pblh, pblhgust, u10, v10, avgprec, avgcprate, & REF1KM_10CM,REF4KM_10CM,REFC_10CM,REFD_MAX @@ -96,7 +97,7 @@ SUBROUTINE MDLFLD tops, dsnow, drain,const_ng1, const_ng2, gon, topg, dgraupel use ctlblk_mod, only: jsta_2l, jend_2u, lm, jsta, jend, grib, cfld, datapd,& fld_info, modelname, imp_physics, dtq2, spval, icount_calmict,& - me, dt, avrain, theat, ifhr, ifmin, avcnvc, lp1, im, jm + me, dt, avrain, theat, ifhr, ifmin, avcnvc, lp1, im, jm, aqfcmaq_on use rqstfld_mod, only: iget, id, lvls, iavblfld, lvlsxml use gridspec_mod, only: gridtype,maptype,dxval use upp_physics, only: CALRH, CALCAPE @@ -906,8 +907,9 @@ SUBROUTINE MDLFLD (IGET(774)>0).OR.(IGET(747)>0).OR. & (IGET(464)>0).OR.(IGET(467)>0).OR. & (IGET(629)>0).OR.(IGET(630)>0).OR. & - (IGET(470)>0).OR. & - (IGET(909)>0).OR.(IGET(737)>0) ) THEN + (IGET(470)>0).OR. & + (IGET(909)>0).OR.(IGET(737)>0).OR. & + (IGET(994)>0).OR.(IGET(995)>0) ) THEN DO 190 L=1,LM @@ -2180,6 +2182,71 @@ SUBROUTINE MDLFLD endif END IF ENDIF + +!=============== +! AQF +!=============== + + if (aqfcmaq_on) then + + IF (IGET(994)>0) THEN + IF (LVLS(L,IGET(994))>0) THEN + LL=LM-L+1 +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + GRID1(I,J) = OZCON(I,J,LL)*1000. ! convert ppm to ppb + ENDDO + ENDDO + + if(grib=="grib2") then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(994)) + fld_info(cfld)%lvl=LVLSXML(L,IGET(994)) +!$omp parallel do private(i,j,jj) + do j=1,jend-jsta+1 + jj = jsta+j-1 + do i=1,im + datapd(i,j,cfld) = GRID1(i,jj) + enddo + enddo + endif + END IF + ENDIF + + + !---- PM25 ---- + + IF (IGET(995)>0) THEN + IF (LVLS(L,IGET(995))>0) THEN + LL=LM-L+1 +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + DENS=PMID(I,J,LL)/(RD*T(I,J,LL)*(Q(I,J,LL)*D608+1.0)) ! DENSITY + GRID1(I,J) = PMTF(I,J,LL)*DENS ! ug/kg-->ug/m3 + ENDDO + ENDDO + + if(grib=="grib2") then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(995)) + fld_info(cfld)%lvl=LVLSXML(L,IGET(995)) +!$omp parallel do private(i,j,jj) + do j=1,jend-jsta+1 + jj = jsta+j-1 + do i=1,im + datapd(i,j,cfld) = GRID1(i,jj) + enddo + enddo + endif + END IF + ENDIF + + endif ! -- aqfcmaq_on + +!=================================== + ! ! E. James - 8 Dec 2017: SMOKE from WRF-CHEM ! SMOKE diff --git a/sorc/ncep_post.fd/RQSTFLD.F b/sorc/ncep_post.fd/RQSTFLD.F index 6e06972eb..d1af714d5 100644 --- a/sorc/ncep_post.fd/RQSTFLD.F +++ b/sorc/ncep_post.fd/RQSTFLD.F @@ -25,7 +25,7 @@ module RQSTFLD_mod implicit none ! ! increase MXFLD each time you add a new field - INTEGER, PARAMETER :: MXFLD=999 + INTEGER, PARAMETER :: MXFLD=1200 #ifdef COMMCODE INTEGER, PARAMETER :: MXLVL=70 #else @@ -2660,51 +2660,59 @@ module RQSTFLD_mod & /1,'HIM-8 AHI CH16 NNADR',118,109, & !table 130 & 'HIM-8 AHI CH16 NON-NADIR BRTEMP'/ DATA IFILV(979),AVBL(979),IQ(979),IS(979),AVBLGRB2(979) & - & /1,'EFFECTIVE LEVEL BOT',205,217, & + & /1,'EFFECTIVE LEVEL BOT',205,217, & & 'EFSH ON effbot_lvl'/ DATA IFILV(980),AVBL(980),IQ(980),IS(980),AVBLGRB2(980) & - & /1,'EFFECTIVE LEVEL BOT',205,217, & + & /1,'EFFECTIVE LEVEL BOT',205,217, & & 'EFSH ON efftop_lvl'/ DATA IFILV(981),AVBL(981),IQ(981),IS(981),AVBLGRB2(981) & - & /1,'EFFECTIVE LEVEL BOT',205,217, & + & /1,'EFFECTIVE LEVEL BOT',205,217, & & 'ELMELT ON effbot_lvl'/ DATA IFILV(982),AVBL(982),IQ(982),IS(982),AVBLGRB2(982) & - & /1,'EFFECTIVE LEVEL BOT',205,217, & + & /1,'EFFECTIVE LEVEL BOT',205,217, & & 'ELMELT ON efftop_lvl'/ DATA IFILV(983),AVBL(983),IQ(983),IS(983),AVBLGRB2(983) & - & /1,'EFFECTIVE LEVEL BOT',205,217, & + & /1,'EFFECTIVE LEVEL BOT',205,217, & & 'ESHR ON effbot_lvl'/ DATA IFILV(984),AVBL(984),IQ(984),IS(984),AVBLGRB2(984) & - & /1,'EFFECTIVE LEVEL BOT',205,217, & + & /1,'EFFECTIVE LEVEL BOT',205,217, & & 'UESH ON effbot_lvl'/ DATA IFILV(985),AVBL(985),IQ(985),IS(985),AVBLGRB2(985) & - & /1,'EFFECTIVE LEVEL BOT',205,217, & + & /1,'EFFECTIVE LEVEL BOT',205,217, & & 'VESH ON effbot_lvl'/ DATA IFILV(986),AVBL(986),IQ(986),IS(986),AVBLGRB2(986) & - & /1,'EFFECTIVE LEVEL BOT',205,217, & + & /1,'EFFECTIVE LEVEL BOT',205,217, & & 'VESH ON effbot_lvl'/ DATA IFILV(987),AVBL(987),IQ(987),IS(987),AVBLGRB2(987) & - & /1,'EFFECTIVE LEVEL BOT',205,217, & + & /1,'EFFECTIVE LEVEL BOT',205,217, & & 'VESH ON effbot_lvl'/ DATA IFILV(988),AVBL(988),IQ(988),IS(988),AVBLGRB2(988) & - & /1,'EFFECTIVE LEVEL BOT',205,217, & + & /1,'EFFECTIVE LEVEL BOT',205,217, & & 'VESH ON effbot_lvl'/ DATA IFILV(989),AVBL(989),IQ(989),IS(989),AVBLGRB2(989) & - & /1,'EFFECTIVE LEVEL BOT',205,217, & + & /1,'EFFECTIVE LEVEL BOT',205,217, & & 'VESH ON effbot_lvl'/ DATA IFILV(990),AVBL(990),IQ(990),IS(990),AVBLGRB2(990) & - & /1,'EFFECTIVE LEVEL BOT',205,217, & + & /1,'EFFECTIVE LEVEL BOT',205,217, & & 'VESH ON effbot_lvl'/ DATA IFILV(991),AVBL(991),IQ(991),IS(991),AVBLGRB2(991) & - & /1,'EFFECTIVE LEVEL BOT',205,217, & + & /1,'EFFECTIVE LEVEL BOT',205,217, & & 'VESH ON effbot_lvl'/ DATA IFILV(992),AVBL(992),IQ(992),IS(992),AVBLGRB2(992) & - & /1,'EFFECTIVE LEVEL BOT',205,217, & + & /1,'EFFECTIVE LEVEL BOT',205,217, & & 'VESH ON effbot_lvl'/ DATA IFILV(993),AVBL(993),IQ(993),IS(993),AVBLGRB2(993) & - & /1,'EFFECTIVE LEVEL BOT',205,217, & + & /1,'EFFECTIVE LEVEL BOT',205,217, & & 'VESH ON effbot_lvl'/ +! AQF + DATA IFILV(994),AVBL(994),IQ(994),IS(994), AVBLGRB2(994) & + & /1,'OZCON ',167,109, & + & 'OZCON ON hybrid_lvl'/ + + DATA IFILV(995),AVBL(995),IQ(995),IS(995), AVBLGRB2(995) & + & /1,'PMTF ',167,109, & !table 141 + & 'PM25TOT ON Hybrid level'/ !end initialization ! diff --git a/sorc/ncep_post.fd/VRBLS3D_mod.f b/sorc/ncep_post.fd/VRBLS3D_mod.f index 715b91017..f27428f3a 100644 --- a/sorc/ncep_post.fd/VRBLS3D_mod.f +++ b/sorc/ncep_post.fd/VRBLS3D_mod.f @@ -79,6 +79,9 @@ module vrbls3d ! Add NCAR GFIP ICING ,icing_gfip(:,:,:),icing_gfis(:,:,:) & ! Add NCAR GTG turbulence - ,catedr(:,:,:),mwt(:,:,:),gtg(:,:,:) + ,catedr(:,:,:),mwt(:,:,:),gtg(:,:,:) & + +! AQF + ,ozcon(:,:,:),pmtf(:,:,:) end module vrbls3d diff --git a/sorc/ncep_post.fd/WRFPOST.f b/sorc/ncep_post.fd/WRFPOST.f index d6caabadf..c7c7c3d45 100644 --- a/sorc/ncep_post.fd/WRFPOST.f +++ b/sorc/ncep_post.fd/WRFPOST.f @@ -145,7 +145,7 @@ PROGRAM WRFPOST lsm, fld_info, etafld2_tim, eta2p_tim, mdl2sigma_tim, cldrad_tim, miscln_tim, & mdl2agl_tim, mdl2std_tim, mdl2thandpv_tim, calrad_wcloud_tim, & fixed_tim, time_output, imin, surfce2_tim, komax, ivegsrc, d3d_on, gocart_on,rdaod, & - readxml_tim, spval, fullmodelname, submodelname, hyb_sigp, filenameflat + readxml_tim, spval, fullmodelname, submodelname, hyb_sigp, filenameflat, aqfcmaq_on use grib2_module, only: gribit2,num_pset,nrecout,first_grbtbl,grib_info_finalize use sigio_module, only: sigio_head use sigio_r_module, only: sigio_rropen, sigio_rrhead @@ -174,7 +174,7 @@ PROGRAM WRFPOST integer :: kpo,kth,kpv real,dimension(komax) :: po,th,pv namelist/nampgb/kpo,po,kth,th,kpv,pv,fileNameAER,d3d_on,gocart_on,popascal & - ,hyb_sigp,rdaod + ,hyb_sigp,rdaod,aqfcmaq_on character startdate*19,SysDepInfo*80,IOWRFNAME*3,post_fname*255 character cgar*1,cdum*4,line*10 @@ -305,6 +305,7 @@ PROGRAM WRFPOST hyb_sigp = .true. d3d_on = .false. gocart_on = .false. + aqfcmaq_on = .false. popascal = .false. fileNameAER = '' rdaod = .false.