From 03763ba01cb4ca2f5d813159f8183eda7867388d Mon Sep 17 00:00:00 2001 From: drnimbusrain Date: Wed, 11 Nov 2020 02:34:47 +0000 Subject: [PATCH 1/2] Updated to make Fengsha user option to control I/O --- README.md | 8 ++- parallel/scripts/run-nacc-fv3.ksh | 11 +-- parallel/src/alloc_ctm.f90 | 48 +++++++------ parallel/src/alloc_met.f90 | 2 + parallel/src/alloc_x.f90 | 12 ++-- parallel/src/ctmproc.f90 | 12 ++-- parallel/src/dealloc_x.f90 | 10 +-- parallel/src/init_ctm.f90 | 110 +++++++++++++++--------------- parallel/src/init_x.f90 | 9 ++- parallel/src/mcipparm_mod.f90 | 75 ++++++++++---------- parallel/src/metvars2ctm.f90 | 2 + parallel/src/rdfv3.f90 | 4 +- parallel/src/readnml.f90 | 9 +-- parallel/src/setgriddefs.f90 | 2 + parallel/src/setup_fv3.f90 | 2 + serial/scripts/run-nacc-fv3.csh | 3 +- serial/scripts/run-nacc-fv3.ksh | 3 +- serial/src/alloc_ctm.f90 | 48 +++++++------ serial/src/alloc_met.f90 | 2 + serial/src/alloc_x.f90 | 12 ++-- serial/src/ctmproc.f90 | 12 ++-- serial/src/dealloc_x.f90 | 10 +-- serial/src/init_ctm.f90 | 110 +++++++++++++++--------------- serial/src/init_x.f90 | 9 ++- serial/src/mcipparm_mod.f90 | 75 ++++++++++---------- serial/src/metvars2ctm.f90 | 2 + serial/src/rdfv3.f90 | 3 +- serial/src/readnml.f90 | 9 +-- serial/src/setgriddefs.f90 | 2 + serial/src/setup_fv3.f90 | 2 + 30 files changed, 342 insertions(+), 276 deletions(-) diff --git a/README.md b/README.md index 91b947c..65cbb52 100644 --- a/README.md +++ b/README.md @@ -97,7 +97,11 @@ The variables listed here are set by the user in the NACC run script, and they a - `IFVIIRS_GVF [default: False]` Logical to choose if the vegetation fraction is taken from FV3 or VIIRS GVF. - `False`: Use FV3 vegetation fraction - - `True`: Use VIIRS GVF + - `True`: Use VIIRS GVF +- `IFENGSHA_DUST [default: False]` + Logical to choose if the NOAA-ARL Fengsha Windblown dust is used in CMAQ: based on input soil parameters in "GeoFile" and output in METCRO2D file. + - `False`: Do not input/output Fengsha WB Dust soil parameters + - `True`: Input/output of Fengsha WB Dust soil parameters - `MCIP_START [format: YYYY-MM-DD-HH:MM:SS.SSSS]` Beginning date and time (UTC) of data to output from NACC. The start date and time must be contained within the input data from WRF or FV3-GFS. - `MCIP_END [format: YYYY-MM-DD-HH:MM:SS.SSSS]` @@ -175,7 +179,7 @@ cd $NACC_home/serial/scripts |InMetFiles|netCDF (WRF or FV3-GFS)|List of WRF or FV3-GFS output files for input to NACC|required| |InSfcFiles|netCDF (FV3-GFS)|List of FV3-GFS output files for input to NACC|required (only FV3-GFS)| |InGeoFile|netCDF (WRFor FV3-GFS)|Output from WRF Geogrid processor|optional; only required if fractional land use, LAI, etc are not part of the WRF or FV3-GFS output. Offline Pre-processed NOAA-ARL "geofiles" with LAI and LANDUSEF (based on 12-month climatological IGBP-MODIS) for the global GFSv16 Gaussian NetCDF Grid are available via FTP by request (Contact: Patrick C. Campbell; Patrick.C.Campbell@noaa.gov)| -|InVIIRSFile|netCDF (FV3-GFS)|Input from VIIRS GVF data |optional| +|InVIIRSFile|netCDF (FV3-GFS)|Input from VIIRS GVF data |optional; only if global NetCDF VIIRS Input file is provided (Contact: Patrick C. Campbell; Patrick.C.Campbell@noaa.gov)| **Table 2. NACC output files** diff --git a/parallel/scripts/run-nacc-fv3.ksh b/parallel/scripts/run-nacc-fv3.ksh index 149752a..b1032fe 100755 --- a/parallel/scripts/run-nacc-fv3.ksh +++ b/parallel/scripts/run-nacc-fv3.ksh @@ -22,10 +22,10 @@ NTIMES=73 export NODES=12 APPL=aqm.t12z -InMetDir=/gpfs/hps2/ptmp/Patrick.C.Campbell/gfsv16/v16rt2/2020083112/gfs.20200831/12/atmos/ +InMetDir=/gpfs/hps2/ptmp/Patrick.C.Campbell/NACC_FV3GFS16_runs/sens5_nacc_cmaq531_nofire_fengsha/com/aqm/prod/aqm.20190826 InGeoDir=/gpfs/hps3/emc/naqfc/noscrub/Youhua.Tang/nwdev/NAQFC-WCOSS/fix InVIIRSDir=/gpfs/hps3/emc/naqfc/noscrub/Patrick.C.Campbell/viirs_gvf_test/grib2 -OutDir=/gpfs/hps2/ptmp/$USER/NACC-VIIRS-Test/output_viirs_gvf +OutDir=/gpfs/hps2/ptmp/$USER/NACC-VIIRS-Test/output_fengsha_test ProgDir=/gpfs/hps3/emc/naqfc/noscrub/Patrick.C.Campbell/NACC/parallel/src if [ ! -s $InMetDir ]; then @@ -73,9 +73,10 @@ cat>namelist.mcip< fld2dxyt(27) c_seaice => fld2dxyt(28) c_snowh => fld2dxyt(29) - c_clayf => fld2dxyt(30) - c_sandf => fld2dxyt(31) - c_drag => fld2dxyt(32) - c_ssm => fld2dxyt(33) - c_uthr => fld2dxyt(34) IF ( ifwr ) THEN - c_wr => fld2dxyt(34+nwr) + c_wr => fld2dxyt(29+nwr) ENDIF IF ( ifsoil ) THEN - c_soim1 => fld2dxyt(34+nwr+1) - c_soim2 => fld2dxyt(34+nwr+2) - c_soit1 => fld2dxyt(34+nwr+3) - c_soit2 => fld2dxyt(34+nwr+4) - c_sltyp => fld2dxyt(34+nwr+5) + c_soim1 => fld2dxyt(29+nwr+1) + c_soim2 => fld2dxyt(29+nwr+2) + c_soit1 => fld2dxyt(29+nwr+3) + c_soit2 => fld2dxyt(29+nwr+4) + c_sltyp => fld2dxyt(29+nwr+5) ENDIF IF ( ifpxwrf41 ) THEN - c_wsat_px => fld2dxyt(34+nwr+nsoil2d+1) - c_wfc_px => fld2dxyt(34+nwr+nsoil2d+2) - c_wwlt_px => fld2dxyt(34+nwr+nsoil2d+3) - c_csand_px => fld2dxyt(34+nwr+nsoil2d+4) - c_fmsand_px => fld2dxyt(34+nwr+nsoil2d+5) - c_clay_px => fld2dxyt(34+nwr+nsoil2d+6) + c_wsat_px => fld2dxyt(29+nwr+nsoil2d+1) + c_wfc_px => fld2dxyt(29+nwr+nsoil2d+2) + c_wwlt_px => fld2dxyt(29+nwr+nsoil2d+3) + c_csand_px => fld2dxyt(29+nwr+nsoil2d+4) + c_fmsand_px => fld2dxyt(29+nwr+nsoil2d+5) + c_clay_px => fld2dxyt(29+nwr+nsoil2d+6) + ENDIF + + IF ( ( iffengsha_dust ) ) THEN + c_clayf => fld2dxyt(29+nwr+nsoil2d+npxwrf41+1) + c_sandf => fld2dxyt(29+nwr+nsoil2d+npxwrf41+2) + c_drag => fld2dxyt(29+nwr+nsoil2d+npxwrf41+3) + c_ssm => fld2dxyt(29+nwr+nsoil2d+npxwrf41+4) + c_uthr => fld2dxyt(29+nwr+nsoil2d+npxwrf41+5) ENDIF !------------------------------------------------------------------------------- diff --git a/parallel/src/alloc_met.f90 b/parallel/src/alloc_met.f90 index 00048ee..6e69365 100644 --- a/parallel/src/alloc_met.f90 +++ b/parallel/src/alloc_met.f90 @@ -206,6 +206,7 @@ SUBROUTINE alloc_met ALLOCATE ( lai (ix, jy) ) ENDIF + IF ( ( iffengsha_dust ) ) THEN IF ( ifclayf ) THEN ! clay fraction available ALLOCATE ( clayf (met_nx, met_ny) ) ENDIF @@ -225,6 +226,7 @@ SUBROUTINE alloc_met IF ( ifuthr ) THEN ! threshold velocity available ALLOCATE ( uthr (met_nx, met_ny) ) ENDIF + ENDIF IF ( ifmol ) THEN ! Monin-Obukhov length available ALLOCATE ( mol (ix, jy) ) diff --git a/parallel/src/alloc_x.f90 b/parallel/src/alloc_x.f90 index 09f6ba9..ee856a3 100644 --- a/parallel/src/alloc_x.f90 +++ b/parallel/src/alloc_x.f90 @@ -164,11 +164,13 @@ SUBROUTINE alloc_x ALLOCATE ( xrgrnd (ncols_x, nrows_x) ) ALLOCATE ( xwr (ncols_x, nrows_x) ) ALLOCATE ( xlai (ncols_x, nrows_x) ) - ALLOCATE ( xclayf (ncols_x, nrows_x) ) - ALLOCATE ( xsandf (ncols_x, nrows_x) ) - ALLOCATE ( xdrag (ncols_x, nrows_x) ) - ALLOCATE ( xssm (ncols_x, nrows_x) ) - ALLOCATE ( xuthr (ncols_x, nrows_x) ) + IF ( ( iffengsha_dust ) ) THEN + ALLOCATE ( xclayf (ncols_x, nrows_x) ) + ALLOCATE ( xsandf (ncols_x, nrows_x) ) + ALLOCATE ( xdrag (ncols_x, nrows_x) ) + ALLOCATE ( xssm (ncols_x, nrows_x) ) + ALLOCATE ( xuthr (ncols_x, nrows_x) ) + ENDIF ALLOCATE ( xveg (ncols_x, nrows_x) ) ALLOCATE ( xwstar (ncols_x, nrows_x) ) diff --git a/parallel/src/ctmproc.f90 b/parallel/src/ctmproc.f90 index 9116554..a2614cb 100644 --- a/parallel/src/ctmproc.f90 +++ b/parallel/src/ctmproc.f90 @@ -323,11 +323,13 @@ END SUBROUTINE collapx c_snocov%fld(col,row) = xsnocov(c,r) c_veg%fld(col,row) = xveg(c,r) c_lai%fld(col,row) = xlai(c,r) - c_clayf%fld(col,row) = xclayf(c,r) - c_sandf%fld(col,row) = xsandf(c,r) - c_drag%fld(col,row) = xdrag(c,r) - c_ssm%fld(col,row) = xssm(c,r) - c_uthr%fld(col,row) = xuthr(c,r) + IF ( ( iffengsha_dust ) ) THEN + c_clayf%fld(col,row) = xclayf(c,r) + c_sandf%fld(col,row) = xsandf(c,r) + c_drag%fld(col,row) = xdrag(c,r) + c_ssm%fld(col,row) = xssm(c,r) + c_uthr%fld(col,row) = xuthr(c,r) + ENDIF c_seaice%fld(col,row) = xseaice(c,r) c_snowh%fld(col,row) = xsnowh(c,r) diff --git a/parallel/src/dealloc_x.f90 b/parallel/src/dealloc_x.f90 index e21d615..7dc3677 100644 --- a/parallel/src/dealloc_x.f90 +++ b/parallel/src/dealloc_x.f90 @@ -143,11 +143,11 @@ SUBROUTINE dealloc_x DEALLOCATE ( xrgrnd ) DEALLOCATE ( xwr ) DEALLOCATE ( xlai ) - DEALLOCATE ( xclayf ) - DEALLOCATE ( xsandf ) - DEALLOCATE ( xdrag ) - DEALLOCATE ( xssm ) - DEALLOCATE ( xuthr ) + IF ( ALLOCATED ( xclayf ) ) DEALLOCATE ( xclayf ) + IF ( ALLOCATED ( xsandf ) ) DEALLOCATE ( xsandf ) + IF ( ALLOCATED ( xdrag ) ) DEALLOCATE ( xdrag ) + IF ( ALLOCATED ( xssm ) ) DEALLOCATE ( xssm ) + IF ( ALLOCATED ( xuthr ) ) DEALLOCATE ( xuthr ) DEALLOCATE ( xveg ) DEALLOCATE ( xwstar ) diff --git a/parallel/src/init_ctm.f90 b/parallel/src/init_ctm.f90 index 1fbf4ab..dfad836 100644 --- a/parallel/src/init_ctm.f90 +++ b/parallel/src/init_ctm.f90 @@ -641,60 +641,62 @@ SUBROUTINE init_ctm c_lai%iend(1) = nx c_lai%iend(2) = ny - c_clayf%fld = fillreal - c_clayf%fldname = 'CLAYF' - c_clayf%long_name = 'soil clay fraction' - c_clayf%units = '1' - c_clayf%dimnames(1) = 'nx' - c_clayf%dimnames(2) = 'ny' - c_clayf%istart(1) = 1 - c_clayf%istart(2) = 1 - c_clayf%iend(1) = nx - c_clayf%iend(2) = ny - - c_sandf%fld = fillreal - c_sandf%fldname = 'SANDF' - c_sandf%long_name = 'soil sand fraction' - c_sandf%units = '1' - c_sandf%dimnames(1) = 'nx' - c_sandf%dimnames(2) = 'ny' - c_sandf%istart(1) = 1 - c_sandf%istart(2) = 1 - c_sandf%iend(1) = nx - c_sandf%iend(2) = ny - - c_drag%fld = fillreal - c_drag%fldname = 'DRAG' - c_drag%long_name = 'drag partition' - c_drag%units = '1' - c_drag%dimnames(1) = 'nx' - c_drag%dimnames(2) = 'ny' - c_drag%istart(1) = 1 - c_drag%istart(2) = 1 - c_drag%iend(1) = nx - c_drag%iend(2) = ny - - c_ssm%fld = fillreal - c_ssm%fldname = 'SSM' - c_ssm%long_name = 'sediment supply map' - c_ssm%units = '1' - c_ssm%dimnames(1) = 'nx' - c_ssm%dimnames(2) = 'ny' - c_ssm%istart(1) = 1 - c_ssm%istart(2) = 1 - c_ssm%iend(1) = nx - c_ssm%iend(2) = ny - - c_uthr%fld = fillreal - c_uthr%fldname = 'UTHR' - c_uthr%long_name = 'threshold velocity' - c_uthr%units = 'm s-1' - c_uthr%dimnames(1) = 'nx' - c_uthr%dimnames(2) = 'ny' - c_uthr%istart(1) = 1 - c_uthr%istart(2) = 1 - c_uthr%iend(1) = nx - c_uthr%iend(2) = ny + IF ( ( iffengsha_dust ) ) THEN + c_clayf%fld = fillreal + c_clayf%fldname = 'CLAYF' + c_clayf%long_name = 'soil clay fraction' + c_clayf%units = '1' + c_clayf%dimnames(1) = 'nx' + c_clayf%dimnames(2) = 'ny' + c_clayf%istart(1) = 1 + c_clayf%istart(2) = 1 + c_clayf%iend(1) = nx + c_clayf%iend(2) = ny + + c_sandf%fld = fillreal + c_sandf%fldname = 'SANDF' + c_sandf%long_name = 'soil sand fraction' + c_sandf%units = '1' + c_sandf%dimnames(1) = 'nx' + c_sandf%dimnames(2) = 'ny' + c_sandf%istart(1) = 1 + c_sandf%istart(2) = 1 + c_sandf%iend(1) = nx + c_sandf%iend(2) = ny + + c_drag%fld = fillreal + c_drag%fldname = 'DRAG' + c_drag%long_name = 'drag partition' + c_drag%units = '1' + c_drag%dimnames(1) = 'nx' + c_drag%dimnames(2) = 'ny' + c_drag%istart(1) = 1 + c_drag%istart(2) = 1 + c_drag%iend(1) = nx + c_drag%iend(2) = ny + + c_ssm%fld = fillreal + c_ssm%fldname = 'SSM' + c_ssm%long_name = 'sediment supply map' + c_ssm%units = '1' + c_ssm%dimnames(1) = 'nx' + c_ssm%dimnames(2) = 'ny' + c_ssm%istart(1) = 1 + c_ssm%istart(2) = 1 + c_ssm%iend(1) = nx + c_ssm%iend(2) = ny + + c_uthr%fld = fillreal + c_uthr%fldname = 'UTHR' + c_uthr%long_name = 'threshold velocity' + c_uthr%units = 'm s-1' + c_uthr%dimnames(1) = 'nx' + c_uthr%dimnames(2) = 'ny' + c_uthr%istart(1) = 1 + c_uthr%istart(2) = 1 + c_uthr%iend(1) = nx + c_uthr%iend(2) = ny + ENDIF c_seaice%fld = fillreal c_seaice%fldname = 'SEAICE' diff --git a/parallel/src/init_x.f90 b/parallel/src/init_x.f90 index 857aef4..38f3efa 100644 --- a/parallel/src/init_x.f90 +++ b/parallel/src/init_x.f90 @@ -114,9 +114,6 @@ SUBROUTINE init_x xdenss (:,:) = fillreal ; xdluse (:,:) = fillreal xglw (:,:) = fillreal ; xgsw (:,:) = fillreal xhfx (:,:) = fillreal ; xlai (:,:) = fillreal - xclayf (:,:) = fillreal ; xsandf (:,:) = fillreal - xdrag (:,:) = fillreal ; xssm (:,:) = fillreal - xuthr (:,:) = fillreal xlatc (:,:) = fillreal ; xlatd (:,:) = fillreal xlatu (:,:) = fillreal ; xlatv (:,:) = fillreal xlh (:,:) = fillreal ; xlonc (:,:) = fillreal @@ -138,6 +135,12 @@ SUBROUTINE init_x xwspd10 (:,:) = fillreal ; xwstar (:,:) = fillreal xzruf (:,:) = fillreal + IF ( ( iffengsha_dust ) ) THEN + xclayf (:,:) = fillreal ; xsandf (:,:) = fillreal + xdrag (:,:) = fillreal ; xssm (:,:) = fillreal + xuthr (:,:) = fillreal + ENDIF + IF ( met_hybrid >= 0 ) THEN xmuhyb(:,:) = fillreal ENDIF diff --git a/parallel/src/mcipparm_mod.f90 b/parallel/src/mcipparm_mod.f90 index 9d74f0a..866f414 100644 --- a/parallel/src/mcipparm_mod.f90 +++ b/parallel/src/mcipparm_mod.f90 @@ -234,43 +234,44 @@ MODULE mcipparm ! Flags to indicate whether or not fields are available in input meteorology. !------------------------------------------------------------------------------- - LOGICAL :: ifcld3d ! 3D resolved clouds in input file? - LOGICAL :: ifcuradfdbk ! cumulus-radiative feedbacks used? - LOGICAL :: ifkfradextras ! KF-radiative feedbacks extra arrays? - LOGICAL :: iflai ! leaf area index in input file? - LOGICAL :: iflaiwrfout ! is leaf area index in WRF history? - LOGICAL :: ifclayf ! soil clay fraction in input file? - LOGICAL :: ifclayfwrfout ! soil clay fraction in WRF history? - LOGICAL :: ifsandf ! soil sand fraction in input file? - LOGICAL :: ifsandfwrfout ! soil sand fraction in WRF history? - LOGICAL :: ifdrag ! drag partition in input file? - LOGICAL :: ifdragwrfout ! drag partition in WRF history? - LOGICAL :: ifssm ! sediment supply map in input file? - LOGICAL :: ifssmwrfout ! sediment supply map in WRF history? - LOGICAL :: ifuthr ! threshold velocity in input file? - LOGICAL :: ifuthrwrfout ! threshold velocity in WRF history? - LOGICAL :: iflufrc ! fractional land use available? - LOGICAL :: ifluwrfout ! is fractional land use in WRF history? - LOGICAL :: iflu2wrfout ! is fractional land use 2 in WRF history? - LOGICAL :: ifmol ! Monin-Obukhov length in input file? - LOGICAL :: ifmolpx ! MOL to be updated from WRF/PX? - LOGICAL :: ifmosaic ! NOAH Mosaic LSM used in WRF? - LOGICAL :: ifpxwrf41 ! WRFv4.1 + PX additional sfc vars? - LOGICAL :: ifq2m ! 2-m mixing ratio in input file? - LOGICAL :: ifrcurb ! get PURB from urban canopy model? - LOGICAL :: ifresist ! aero and stom resistances in input file? - LOGICAL :: ifsoil ! soil mois, temp, and type in input file? - LOGICAL :: ift2m ! 2-m temperature in input file? - LOGICAL :: iftke ! turbulent kinetic energy in input file? - LOGICAL :: iftkef ! TKE (if exists) on full levels? - LOGICAL :: ifveg ! vegetation fraction in input file? - LOGICAL :: ifveg_viirs ! using vegetation fraction in VIIRS? - LOGICAL :: ifw10m ! 10-m wind components in input file? - LOGICAL :: ifwr ! canopy wetness in input file? - LOGICAL :: ifznt ! roughness length in input file? - LOGICAL :: needseaice ! sea ice in input file? - LOGICAL :: ifdiag_pbl ! use diagnostic PBL? - LOGICAL :: ifviirs_gvf ! use VIIRS GVF? + LOGICAL :: ifcld3d ! 3D resolved clouds in input file? + LOGICAL :: ifcuradfdbk ! cumulus-radiative feedbacks used? + LOGICAL :: ifkfradextras ! KF-radiative feedbacks extra arrays? + LOGICAL :: iflai ! leaf area index in input file? + LOGICAL :: iflaiwrfout ! is leaf area index in WRF history? + LOGICAL :: ifclayf ! soil clay fraction in input file? + LOGICAL :: ifclayfwrfout ! soil clay fraction in WRF history? + LOGICAL :: ifsandf ! soil sand fraction in input file? + LOGICAL :: ifsandfwrfout ! soil sand fraction in WRF history? + LOGICAL :: ifdrag ! drag partition in input file? + LOGICAL :: ifdragwrfout ! drag partition in WRF history? + LOGICAL :: ifssm ! sediment supply map in input file? + LOGICAL :: ifssmwrfout ! sediment supply map in WRF history? + LOGICAL :: ifuthr ! threshold velocity in input file? + LOGICAL :: ifuthrwrfout ! threshold velocity in WRF history? + LOGICAL :: iflufrc ! fractional land use available? + LOGICAL :: ifluwrfout ! is fractional land use in WRF history? + LOGICAL :: iflu2wrfout ! is fractional land use 2 in WRF history? + LOGICAL :: ifmol ! Monin-Obukhov length in input file? + LOGICAL :: ifmolpx ! MOL to be updated from WRF/PX? + LOGICAL :: ifmosaic ! NOAH Mosaic LSM used in WRF? + LOGICAL :: ifpxwrf41 ! WRFv4.1 + PX additional sfc vars? + LOGICAL :: ifq2m ! 2-m mixing ratio in input file? + LOGICAL :: ifrcurb ! get PURB from urban canopy model? + LOGICAL :: ifresist ! aero and stom resistances in input file? + LOGICAL :: ifsoil ! soil mois, temp, and type in input file? + LOGICAL :: ift2m ! 2-m temperature in input file? + LOGICAL :: iftke ! turbulent kinetic energy in input file? + LOGICAL :: iftkef ! TKE (if exists) on full levels? + LOGICAL :: ifveg ! vegetation fraction in input file? + LOGICAL :: ifveg_viirs ! using vegetation fraction in VIIRS? + LOGICAL :: ifw10m ! 10-m wind components in input file? + LOGICAL :: ifwr ! canopy wetness in input file? + LOGICAL :: ifznt ! roughness length in input file? + LOGICAL :: needseaice ! sea ice in input file? + LOGICAL :: ifdiag_pbl ! use diagnostic PBL? + LOGICAL :: ifviirs_gvf ! use NAQFC VIIRS GVF? + LOGICAL :: iffengsha_dust ! use NAQFC Fengsha Windblown Dust? !------------------------------------------------------------------------------- ! Run Options. diff --git a/parallel/src/metvars2ctm.f90 b/parallel/src/metvars2ctm.f90 index fccb248..67d9ea2 100644 --- a/parallel/src/metvars2ctm.f90 +++ b/parallel/src/metvars2ctm.f90 @@ -440,6 +440,7 @@ END SUBROUTINE layht ENDIF ! iflai !Fengsha dust variables + IF ( ( iffengsha_dust ) ) THEN IF ( ifclayf) THEN xclayf(:,:) = clayf(sc:ec,sr:er) ENDIF @@ -459,6 +460,7 @@ END SUBROUTINE layht IF ( ifuthr) THEN xuthr(:,:) = uthr(sc:ec,sr:er) ENDIF + ENDIF IF ( ifveg .OR. ifveg_viirs ) THEN xveg (:,:) = veg (sc:ec,sr:er) diff --git a/parallel/src/rdfv3.f90 b/parallel/src/rdfv3.f90 index 1aefa1c..a05dc7d 100644 --- a/parallel/src/rdfv3.f90 +++ b/parallel/src/rdfv3.f90 @@ -1479,7 +1479,7 @@ END SUBROUTINE windrotation ENDIF ENDIF - + IF ( ( iffengsha_dust ) ) THEN !User is trying to use Fengsha Windblown Dust in CMAQ IF ( ifclayf ) THEN IF ( ifclayfwrfout ) THEN ! clayf in FV3 history file CALL get_var_2d_real_cdf (cdfid2, 'CLAY_FRAC', dum2d, it, rcode) @@ -1699,7 +1699,7 @@ END SUBROUTINE windrotation ENDIF ENDIF ENDIF - + ENDIF !Fengsha WB dust variables IF ( iflai ) THEN IF ( iflaiwrfout ) THEN ! leaf area index in FV3 history file diff --git a/parallel/src/readnml.f90 b/parallel/src/readnml.f90 index 183fe58..2db55e5 100644 --- a/parallel/src/readnml.f90 +++ b/parallel/src/readnml.f90 @@ -110,7 +110,8 @@ SUBROUTINE readnml (ctmlays) NAMELIST /filenames/ file_gd, file_mm, file_sfc, file_geo, file_viirs_gvf, ioform NAMELIST /userdefs/ inmetmodel, dx_in, dy_in, met_cen_lat_in, met_cen_lon_in, & - lpv, lwout, luvbout, ifdiag_pbl, ifviirs_gvf, & + lpv, lwout, luvbout, ifdiag_pbl, ifviirs_gvf, & + iffengsha_dust, & eradm, mcip_start, mcip_end, ntimes, intvl, & coordnam, grdnam, ctmlays, & btrim, lprt_col, lprt_row, & @@ -251,9 +252,9 @@ SUBROUTINE readnml (ctmlays) luvbout = 0 ioform = 1 - ifdiag_pbl = .false. - ifviirs_gvf = .false. - + ifdiag_pbl = .false. ! To re-diagnose the PBLH + ifviirs_gvf = .false. ! To use NAQFC VIIRS GVF input + iffengsha_dust = .false. ! To use NAQFC Fengsha Windblown Dust !------------------------------------------------------------------------------- ! Set default value for earth radius in meters (ERADM). The default value is ! consistent with the value used for a spherical earth in MM5 and in WRF-ARW. diff --git a/parallel/src/setgriddefs.f90 b/parallel/src/setgriddefs.f90 index 2431180..5169032 100644 --- a/parallel/src/setgriddefs.f90 +++ b/parallel/src/setgriddefs.f90 @@ -660,6 +660,7 @@ SUBROUTINE setgriddefs ENDIF WRITE (*,f6150) 'LAI', TRIM(yesno) + IF ( ( iffengsha_dust ) ) THEN IF ( ifclayf ) THEN yesno = '' ELSE @@ -694,6 +695,7 @@ SUBROUTINE setgriddefs yesno = 'NOT' ENDIF WRITE (*,f6150) 'UTHRES', TRIM(yesno) + ENDIF IF ( iflufrc ) THEN yesno = '' diff --git a/parallel/src/setup_fv3.f90 b/parallel/src/setup_fv3.f90 index a3692e0..d815874 100644 --- a/parallel/src/setup_fv3.f90 +++ b/parallel/src/setup_fv3.f90 @@ -780,6 +780,7 @@ SUBROUTINE setup_fv3 (cdfid, cdfid2, ctmlays) ! Determine whether or not some surface variables are in the output, and set ! the flags appropriately. !------------------------------------------------------------------------------- + IF ( ( iffengsha_dust ) ) THEN !User is trying to use Fengsha Windblown Dust in CMAQ rcode2 = nf90_inq_varid (cdfid2, 'CLAY_FRAC', varid) !not in FV3GFSv16 IF ( rcode2 == nf90_noerr ) THEN @@ -945,6 +946,7 @@ SUBROUTINE setup_fv3 (cdfid, cdfid2, ctmlays) ENDIF ENDIF ENDIF + ENDIF !Fengsha WB dust variables rcode2 = nf90_inq_varid (cdfid2, 'LAI', varid) !not in FV3GFSv16 IF ( rcode2 == nf90_noerr ) THEN diff --git a/serial/scripts/run-nacc-fv3.csh b/serial/scripts/run-nacc-fv3.csh index c26927d..1ca1517 100755 --- a/serial/scripts/run-nacc-fv3.csh +++ b/serial/scripts/run-nacc-fv3.csh @@ -52,7 +52,8 @@ cat>namelist.mcip<namelist.mcip< fld2dxyt(27) c_seaice => fld2dxyt(28) c_snowh => fld2dxyt(29) - c_clayf => fld2dxyt(30) - c_sandf => fld2dxyt(31) - c_drag => fld2dxyt(32) - c_ssm => fld2dxyt(33) - c_uthr => fld2dxyt(34) IF ( ifwr ) THEN - c_wr => fld2dxyt(34+nwr) + c_wr => fld2dxyt(29+nwr) ENDIF IF ( ifsoil ) THEN - c_soim1 => fld2dxyt(34+nwr+1) - c_soim2 => fld2dxyt(34+nwr+2) - c_soit1 => fld2dxyt(34+nwr+3) - c_soit2 => fld2dxyt(34+nwr+4) - c_sltyp => fld2dxyt(34+nwr+5) + c_soim1 => fld2dxyt(29+nwr+1) + c_soim2 => fld2dxyt(29+nwr+2) + c_soit1 => fld2dxyt(29+nwr+3) + c_soit2 => fld2dxyt(29+nwr+4) + c_sltyp => fld2dxyt(29+nwr+5) ENDIF IF ( ifpxwrf41 ) THEN - c_wsat_px => fld2dxyt(34+nwr+nsoil2d+1) - c_wfc_px => fld2dxyt(34+nwr+nsoil2d+2) - c_wwlt_px => fld2dxyt(34+nwr+nsoil2d+3) - c_csand_px => fld2dxyt(34+nwr+nsoil2d+4) - c_fmsand_px => fld2dxyt(34+nwr+nsoil2d+5) - c_clay_px => fld2dxyt(34+nwr+nsoil2d+6) + c_wsat_px => fld2dxyt(29+nwr+nsoil2d+1) + c_wfc_px => fld2dxyt(29+nwr+nsoil2d+2) + c_wwlt_px => fld2dxyt(29+nwr+nsoil2d+3) + c_csand_px => fld2dxyt(29+nwr+nsoil2d+4) + c_fmsand_px => fld2dxyt(29+nwr+nsoil2d+5) + c_clay_px => fld2dxyt(29+nwr+nsoil2d+6) + ENDIF + + IF ( ( iffengsha_dust ) ) THEN + c_clayf => fld2dxyt(29+nwr+nsoil2d+npxwrf41+1) + c_sandf => fld2dxyt(29+nwr+nsoil2d+npxwrf41+2) + c_drag => fld2dxyt(29+nwr+nsoil2d+npxwrf41+3) + c_ssm => fld2dxyt(29+nwr+nsoil2d+npxwrf41+4) + c_uthr => fld2dxyt(29+nwr+nsoil2d+npxwrf41+5) ENDIF !------------------------------------------------------------------------------- diff --git a/serial/src/alloc_met.f90 b/serial/src/alloc_met.f90 index cb1daf1..0511f47 100644 --- a/serial/src/alloc_met.f90 +++ b/serial/src/alloc_met.f90 @@ -194,6 +194,7 @@ SUBROUTINE alloc_met ALLOCATE ( lai (met_nx, met_ny) ) ENDIF + IF ( ( iffengsha_dust ) ) THEN IF ( ifclayf ) THEN ! leaf area index available ALLOCATE ( clayf (met_nx, met_ny) ) ENDIF @@ -213,6 +214,7 @@ SUBROUTINE alloc_met IF ( ifuthr ) THEN ! threshold velocity available ALLOCATE ( uthr (met_nx, met_ny) ) ENDIF + ENDIF IF ( ifmol ) THEN ! Monin-Obukhov length available ALLOCATE ( mol (met_nx, met_ny) ) diff --git a/serial/src/alloc_x.f90 b/serial/src/alloc_x.f90 index 09f6ba9..ee856a3 100644 --- a/serial/src/alloc_x.f90 +++ b/serial/src/alloc_x.f90 @@ -164,11 +164,13 @@ SUBROUTINE alloc_x ALLOCATE ( xrgrnd (ncols_x, nrows_x) ) ALLOCATE ( xwr (ncols_x, nrows_x) ) ALLOCATE ( xlai (ncols_x, nrows_x) ) - ALLOCATE ( xclayf (ncols_x, nrows_x) ) - ALLOCATE ( xsandf (ncols_x, nrows_x) ) - ALLOCATE ( xdrag (ncols_x, nrows_x) ) - ALLOCATE ( xssm (ncols_x, nrows_x) ) - ALLOCATE ( xuthr (ncols_x, nrows_x) ) + IF ( ( iffengsha_dust ) ) THEN + ALLOCATE ( xclayf (ncols_x, nrows_x) ) + ALLOCATE ( xsandf (ncols_x, nrows_x) ) + ALLOCATE ( xdrag (ncols_x, nrows_x) ) + ALLOCATE ( xssm (ncols_x, nrows_x) ) + ALLOCATE ( xuthr (ncols_x, nrows_x) ) + ENDIF ALLOCATE ( xveg (ncols_x, nrows_x) ) ALLOCATE ( xwstar (ncols_x, nrows_x) ) diff --git a/serial/src/ctmproc.f90 b/serial/src/ctmproc.f90 index 9116554..a2614cb 100644 --- a/serial/src/ctmproc.f90 +++ b/serial/src/ctmproc.f90 @@ -323,11 +323,13 @@ END SUBROUTINE collapx c_snocov%fld(col,row) = xsnocov(c,r) c_veg%fld(col,row) = xveg(c,r) c_lai%fld(col,row) = xlai(c,r) - c_clayf%fld(col,row) = xclayf(c,r) - c_sandf%fld(col,row) = xsandf(c,r) - c_drag%fld(col,row) = xdrag(c,r) - c_ssm%fld(col,row) = xssm(c,r) - c_uthr%fld(col,row) = xuthr(c,r) + IF ( ( iffengsha_dust ) ) THEN + c_clayf%fld(col,row) = xclayf(c,r) + c_sandf%fld(col,row) = xsandf(c,r) + c_drag%fld(col,row) = xdrag(c,r) + c_ssm%fld(col,row) = xssm(c,r) + c_uthr%fld(col,row) = xuthr(c,r) + ENDIF c_seaice%fld(col,row) = xseaice(c,r) c_snowh%fld(col,row) = xsnowh(c,r) diff --git a/serial/src/dealloc_x.f90 b/serial/src/dealloc_x.f90 index e21d615..7dc3677 100644 --- a/serial/src/dealloc_x.f90 +++ b/serial/src/dealloc_x.f90 @@ -143,11 +143,11 @@ SUBROUTINE dealloc_x DEALLOCATE ( xrgrnd ) DEALLOCATE ( xwr ) DEALLOCATE ( xlai ) - DEALLOCATE ( xclayf ) - DEALLOCATE ( xsandf ) - DEALLOCATE ( xdrag ) - DEALLOCATE ( xssm ) - DEALLOCATE ( xuthr ) + IF ( ALLOCATED ( xclayf ) ) DEALLOCATE ( xclayf ) + IF ( ALLOCATED ( xsandf ) ) DEALLOCATE ( xsandf ) + IF ( ALLOCATED ( xdrag ) ) DEALLOCATE ( xdrag ) + IF ( ALLOCATED ( xssm ) ) DEALLOCATE ( xssm ) + IF ( ALLOCATED ( xuthr ) ) DEALLOCATE ( xuthr ) DEALLOCATE ( xveg ) DEALLOCATE ( xwstar ) diff --git a/serial/src/init_ctm.f90 b/serial/src/init_ctm.f90 index 1fbf4ab..dfad836 100644 --- a/serial/src/init_ctm.f90 +++ b/serial/src/init_ctm.f90 @@ -641,60 +641,62 @@ SUBROUTINE init_ctm c_lai%iend(1) = nx c_lai%iend(2) = ny - c_clayf%fld = fillreal - c_clayf%fldname = 'CLAYF' - c_clayf%long_name = 'soil clay fraction' - c_clayf%units = '1' - c_clayf%dimnames(1) = 'nx' - c_clayf%dimnames(2) = 'ny' - c_clayf%istart(1) = 1 - c_clayf%istart(2) = 1 - c_clayf%iend(1) = nx - c_clayf%iend(2) = ny - - c_sandf%fld = fillreal - c_sandf%fldname = 'SANDF' - c_sandf%long_name = 'soil sand fraction' - c_sandf%units = '1' - c_sandf%dimnames(1) = 'nx' - c_sandf%dimnames(2) = 'ny' - c_sandf%istart(1) = 1 - c_sandf%istart(2) = 1 - c_sandf%iend(1) = nx - c_sandf%iend(2) = ny - - c_drag%fld = fillreal - c_drag%fldname = 'DRAG' - c_drag%long_name = 'drag partition' - c_drag%units = '1' - c_drag%dimnames(1) = 'nx' - c_drag%dimnames(2) = 'ny' - c_drag%istart(1) = 1 - c_drag%istart(2) = 1 - c_drag%iend(1) = nx - c_drag%iend(2) = ny - - c_ssm%fld = fillreal - c_ssm%fldname = 'SSM' - c_ssm%long_name = 'sediment supply map' - c_ssm%units = '1' - c_ssm%dimnames(1) = 'nx' - c_ssm%dimnames(2) = 'ny' - c_ssm%istart(1) = 1 - c_ssm%istart(2) = 1 - c_ssm%iend(1) = nx - c_ssm%iend(2) = ny - - c_uthr%fld = fillreal - c_uthr%fldname = 'UTHR' - c_uthr%long_name = 'threshold velocity' - c_uthr%units = 'm s-1' - c_uthr%dimnames(1) = 'nx' - c_uthr%dimnames(2) = 'ny' - c_uthr%istart(1) = 1 - c_uthr%istart(2) = 1 - c_uthr%iend(1) = nx - c_uthr%iend(2) = ny + IF ( ( iffengsha_dust ) ) THEN + c_clayf%fld = fillreal + c_clayf%fldname = 'CLAYF' + c_clayf%long_name = 'soil clay fraction' + c_clayf%units = '1' + c_clayf%dimnames(1) = 'nx' + c_clayf%dimnames(2) = 'ny' + c_clayf%istart(1) = 1 + c_clayf%istart(2) = 1 + c_clayf%iend(1) = nx + c_clayf%iend(2) = ny + + c_sandf%fld = fillreal + c_sandf%fldname = 'SANDF' + c_sandf%long_name = 'soil sand fraction' + c_sandf%units = '1' + c_sandf%dimnames(1) = 'nx' + c_sandf%dimnames(2) = 'ny' + c_sandf%istart(1) = 1 + c_sandf%istart(2) = 1 + c_sandf%iend(1) = nx + c_sandf%iend(2) = ny + + c_drag%fld = fillreal + c_drag%fldname = 'DRAG' + c_drag%long_name = 'drag partition' + c_drag%units = '1' + c_drag%dimnames(1) = 'nx' + c_drag%dimnames(2) = 'ny' + c_drag%istart(1) = 1 + c_drag%istart(2) = 1 + c_drag%iend(1) = nx + c_drag%iend(2) = ny + + c_ssm%fld = fillreal + c_ssm%fldname = 'SSM' + c_ssm%long_name = 'sediment supply map' + c_ssm%units = '1' + c_ssm%dimnames(1) = 'nx' + c_ssm%dimnames(2) = 'ny' + c_ssm%istart(1) = 1 + c_ssm%istart(2) = 1 + c_ssm%iend(1) = nx + c_ssm%iend(2) = ny + + c_uthr%fld = fillreal + c_uthr%fldname = 'UTHR' + c_uthr%long_name = 'threshold velocity' + c_uthr%units = 'm s-1' + c_uthr%dimnames(1) = 'nx' + c_uthr%dimnames(2) = 'ny' + c_uthr%istart(1) = 1 + c_uthr%istart(2) = 1 + c_uthr%iend(1) = nx + c_uthr%iend(2) = ny + ENDIF c_seaice%fld = fillreal c_seaice%fldname = 'SEAICE' diff --git a/serial/src/init_x.f90 b/serial/src/init_x.f90 index 857aef4..38f3efa 100644 --- a/serial/src/init_x.f90 +++ b/serial/src/init_x.f90 @@ -114,9 +114,6 @@ SUBROUTINE init_x xdenss (:,:) = fillreal ; xdluse (:,:) = fillreal xglw (:,:) = fillreal ; xgsw (:,:) = fillreal xhfx (:,:) = fillreal ; xlai (:,:) = fillreal - xclayf (:,:) = fillreal ; xsandf (:,:) = fillreal - xdrag (:,:) = fillreal ; xssm (:,:) = fillreal - xuthr (:,:) = fillreal xlatc (:,:) = fillreal ; xlatd (:,:) = fillreal xlatu (:,:) = fillreal ; xlatv (:,:) = fillreal xlh (:,:) = fillreal ; xlonc (:,:) = fillreal @@ -138,6 +135,12 @@ SUBROUTINE init_x xwspd10 (:,:) = fillreal ; xwstar (:,:) = fillreal xzruf (:,:) = fillreal + IF ( ( iffengsha_dust ) ) THEN + xclayf (:,:) = fillreal ; xsandf (:,:) = fillreal + xdrag (:,:) = fillreal ; xssm (:,:) = fillreal + xuthr (:,:) = fillreal + ENDIF + IF ( met_hybrid >= 0 ) THEN xmuhyb(:,:) = fillreal ENDIF diff --git a/serial/src/mcipparm_mod.f90 b/serial/src/mcipparm_mod.f90 index 9d74f0a..866f414 100644 --- a/serial/src/mcipparm_mod.f90 +++ b/serial/src/mcipparm_mod.f90 @@ -234,43 +234,44 @@ MODULE mcipparm ! Flags to indicate whether or not fields are available in input meteorology. !------------------------------------------------------------------------------- - LOGICAL :: ifcld3d ! 3D resolved clouds in input file? - LOGICAL :: ifcuradfdbk ! cumulus-radiative feedbacks used? - LOGICAL :: ifkfradextras ! KF-radiative feedbacks extra arrays? - LOGICAL :: iflai ! leaf area index in input file? - LOGICAL :: iflaiwrfout ! is leaf area index in WRF history? - LOGICAL :: ifclayf ! soil clay fraction in input file? - LOGICAL :: ifclayfwrfout ! soil clay fraction in WRF history? - LOGICAL :: ifsandf ! soil sand fraction in input file? - LOGICAL :: ifsandfwrfout ! soil sand fraction in WRF history? - LOGICAL :: ifdrag ! drag partition in input file? - LOGICAL :: ifdragwrfout ! drag partition in WRF history? - LOGICAL :: ifssm ! sediment supply map in input file? - LOGICAL :: ifssmwrfout ! sediment supply map in WRF history? - LOGICAL :: ifuthr ! threshold velocity in input file? - LOGICAL :: ifuthrwrfout ! threshold velocity in WRF history? - LOGICAL :: iflufrc ! fractional land use available? - LOGICAL :: ifluwrfout ! is fractional land use in WRF history? - LOGICAL :: iflu2wrfout ! is fractional land use 2 in WRF history? - LOGICAL :: ifmol ! Monin-Obukhov length in input file? - LOGICAL :: ifmolpx ! MOL to be updated from WRF/PX? - LOGICAL :: ifmosaic ! NOAH Mosaic LSM used in WRF? - LOGICAL :: ifpxwrf41 ! WRFv4.1 + PX additional sfc vars? - LOGICAL :: ifq2m ! 2-m mixing ratio in input file? - LOGICAL :: ifrcurb ! get PURB from urban canopy model? - LOGICAL :: ifresist ! aero and stom resistances in input file? - LOGICAL :: ifsoil ! soil mois, temp, and type in input file? - LOGICAL :: ift2m ! 2-m temperature in input file? - LOGICAL :: iftke ! turbulent kinetic energy in input file? - LOGICAL :: iftkef ! TKE (if exists) on full levels? - LOGICAL :: ifveg ! vegetation fraction in input file? - LOGICAL :: ifveg_viirs ! using vegetation fraction in VIIRS? - LOGICAL :: ifw10m ! 10-m wind components in input file? - LOGICAL :: ifwr ! canopy wetness in input file? - LOGICAL :: ifznt ! roughness length in input file? - LOGICAL :: needseaice ! sea ice in input file? - LOGICAL :: ifdiag_pbl ! use diagnostic PBL? - LOGICAL :: ifviirs_gvf ! use VIIRS GVF? + LOGICAL :: ifcld3d ! 3D resolved clouds in input file? + LOGICAL :: ifcuradfdbk ! cumulus-radiative feedbacks used? + LOGICAL :: ifkfradextras ! KF-radiative feedbacks extra arrays? + LOGICAL :: iflai ! leaf area index in input file? + LOGICAL :: iflaiwrfout ! is leaf area index in WRF history? + LOGICAL :: ifclayf ! soil clay fraction in input file? + LOGICAL :: ifclayfwrfout ! soil clay fraction in WRF history? + LOGICAL :: ifsandf ! soil sand fraction in input file? + LOGICAL :: ifsandfwrfout ! soil sand fraction in WRF history? + LOGICAL :: ifdrag ! drag partition in input file? + LOGICAL :: ifdragwrfout ! drag partition in WRF history? + LOGICAL :: ifssm ! sediment supply map in input file? + LOGICAL :: ifssmwrfout ! sediment supply map in WRF history? + LOGICAL :: ifuthr ! threshold velocity in input file? + LOGICAL :: ifuthrwrfout ! threshold velocity in WRF history? + LOGICAL :: iflufrc ! fractional land use available? + LOGICAL :: ifluwrfout ! is fractional land use in WRF history? + LOGICAL :: iflu2wrfout ! is fractional land use 2 in WRF history? + LOGICAL :: ifmol ! Monin-Obukhov length in input file? + LOGICAL :: ifmolpx ! MOL to be updated from WRF/PX? + LOGICAL :: ifmosaic ! NOAH Mosaic LSM used in WRF? + LOGICAL :: ifpxwrf41 ! WRFv4.1 + PX additional sfc vars? + LOGICAL :: ifq2m ! 2-m mixing ratio in input file? + LOGICAL :: ifrcurb ! get PURB from urban canopy model? + LOGICAL :: ifresist ! aero and stom resistances in input file? + LOGICAL :: ifsoil ! soil mois, temp, and type in input file? + LOGICAL :: ift2m ! 2-m temperature in input file? + LOGICAL :: iftke ! turbulent kinetic energy in input file? + LOGICAL :: iftkef ! TKE (if exists) on full levels? + LOGICAL :: ifveg ! vegetation fraction in input file? + LOGICAL :: ifveg_viirs ! using vegetation fraction in VIIRS? + LOGICAL :: ifw10m ! 10-m wind components in input file? + LOGICAL :: ifwr ! canopy wetness in input file? + LOGICAL :: ifznt ! roughness length in input file? + LOGICAL :: needseaice ! sea ice in input file? + LOGICAL :: ifdiag_pbl ! use diagnostic PBL? + LOGICAL :: ifviirs_gvf ! use NAQFC VIIRS GVF? + LOGICAL :: iffengsha_dust ! use NAQFC Fengsha Windblown Dust? !------------------------------------------------------------------------------- ! Run Options. diff --git a/serial/src/metvars2ctm.f90 b/serial/src/metvars2ctm.f90 index fccb248..67d9ea2 100644 --- a/serial/src/metvars2ctm.f90 +++ b/serial/src/metvars2ctm.f90 @@ -440,6 +440,7 @@ END SUBROUTINE layht ENDIF ! iflai !Fengsha dust variables + IF ( ( iffengsha_dust ) ) THEN IF ( ifclayf) THEN xclayf(:,:) = clayf(sc:ec,sr:er) ENDIF @@ -459,6 +460,7 @@ END SUBROUTINE layht IF ( ifuthr) THEN xuthr(:,:) = uthr(sc:ec,sr:er) ENDIF + ENDIF IF ( ifveg .OR. ifveg_viirs ) THEN xveg (:,:) = veg (sc:ec,sr:er) diff --git a/serial/src/rdfv3.f90 b/serial/src/rdfv3.f90 index 25ec19d..a833737 100644 --- a/serial/src/rdfv3.f90 +++ b/serial/src/rdfv3.f90 @@ -1467,7 +1467,7 @@ END SUBROUTINE windrotation ENDIF ENDIF - + IF ( ( iffengsha_dust ) ) THEN !User is trying to use Fengsha Windblown Dust in CMAQ IF ( ifclayf ) THEN IF ( ifclayfwrfout ) THEN ! clayf in FV3 history file CALL get_var_2d_real_cdf (cdfid2, 'CLAY_FRAC', dum2d, it, rcode) @@ -1687,6 +1687,7 @@ END SUBROUTINE windrotation ENDIF ENDIF ENDIF + ENDIF !Fengsha WB dust variables IF ( iflai ) THEN IF ( iflaiwrfout ) THEN ! leaf area index in FV3 history file diff --git a/serial/src/readnml.f90 b/serial/src/readnml.f90 index 183fe58..2db55e5 100644 --- a/serial/src/readnml.f90 +++ b/serial/src/readnml.f90 @@ -110,7 +110,8 @@ SUBROUTINE readnml (ctmlays) NAMELIST /filenames/ file_gd, file_mm, file_sfc, file_geo, file_viirs_gvf, ioform NAMELIST /userdefs/ inmetmodel, dx_in, dy_in, met_cen_lat_in, met_cen_lon_in, & - lpv, lwout, luvbout, ifdiag_pbl, ifviirs_gvf, & + lpv, lwout, luvbout, ifdiag_pbl, ifviirs_gvf, & + iffengsha_dust, & eradm, mcip_start, mcip_end, ntimes, intvl, & coordnam, grdnam, ctmlays, & btrim, lprt_col, lprt_row, & @@ -251,9 +252,9 @@ SUBROUTINE readnml (ctmlays) luvbout = 0 ioform = 1 - ifdiag_pbl = .false. - ifviirs_gvf = .false. - + ifdiag_pbl = .false. ! To re-diagnose the PBLH + ifviirs_gvf = .false. ! To use NAQFC VIIRS GVF input + iffengsha_dust = .false. ! To use NAQFC Fengsha Windblown Dust !------------------------------------------------------------------------------- ! Set default value for earth radius in meters (ERADM). The default value is ! consistent with the value used for a spherical earth in MM5 and in WRF-ARW. diff --git a/serial/src/setgriddefs.f90 b/serial/src/setgriddefs.f90 index 2431180..5169032 100644 --- a/serial/src/setgriddefs.f90 +++ b/serial/src/setgriddefs.f90 @@ -660,6 +660,7 @@ SUBROUTINE setgriddefs ENDIF WRITE (*,f6150) 'LAI', TRIM(yesno) + IF ( ( iffengsha_dust ) ) THEN IF ( ifclayf ) THEN yesno = '' ELSE @@ -694,6 +695,7 @@ SUBROUTINE setgriddefs yesno = 'NOT' ENDIF WRITE (*,f6150) 'UTHRES', TRIM(yesno) + ENDIF IF ( iflufrc ) THEN yesno = '' diff --git a/serial/src/setup_fv3.f90 b/serial/src/setup_fv3.f90 index a3692e0..d815874 100644 --- a/serial/src/setup_fv3.f90 +++ b/serial/src/setup_fv3.f90 @@ -780,6 +780,7 @@ SUBROUTINE setup_fv3 (cdfid, cdfid2, ctmlays) ! Determine whether or not some surface variables are in the output, and set ! the flags appropriately. !------------------------------------------------------------------------------- + IF ( ( iffengsha_dust ) ) THEN !User is trying to use Fengsha Windblown Dust in CMAQ rcode2 = nf90_inq_varid (cdfid2, 'CLAY_FRAC', varid) !not in FV3GFSv16 IF ( rcode2 == nf90_noerr ) THEN @@ -945,6 +946,7 @@ SUBROUTINE setup_fv3 (cdfid, cdfid2, ctmlays) ENDIF ENDIF ENDIF + ENDIF !Fengsha WB dust variables rcode2 = nf90_inq_varid (cdfid2, 'LAI', varid) !not in FV3GFSv16 IF ( rcode2 == nf90_noerr ) THEN From 740e311227ac95add46be7e8ffff766d0de77e9a Mon Sep 17 00:00:00 2001 From: "Patrick.C.Campbell@noaa.gov" Date: Wed, 11 Nov 2020 02:38:42 +0000 Subject: [PATCH 2/2] Set IFENGSHA_DUST to False in run script. --- parallel/scripts/run-nacc-fv3.ksh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parallel/scripts/run-nacc-fv3.ksh b/parallel/scripts/run-nacc-fv3.ksh index b1032fe..cb8670d 100755 --- a/parallel/scripts/run-nacc-fv3.ksh +++ b/parallel/scripts/run-nacc-fv3.ksh @@ -74,7 +74,7 @@ cat>namelist.mcip<