diff --git a/README.md b/README.md index 188875f..8334a2f 100644 --- a/README.md +++ b/README.md @@ -106,6 +106,10 @@ The variables listed here are set by the user in the NACC run script, and they a 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 +- `IFBIOSEASON [default: False]` + Logical to choose if the NOAA-ARL time-dependend bioseasons withc is used in CMAQ: based on summer/winter seasonal information and T2, and is output in METCRO2D file. + - `False`: Do not calculate and output SEASON variable in METCRO2D + - `True`: Calculate and output SEASON variable in METCRO2D - `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]` diff --git a/parallel/scripts/run-nacc-fv3.ksh b/parallel/scripts/run-nacc-fv3.ksh index 3363b6d..ca54ec3 100755 --- a/parallel/scripts/run-nacc-fv3.ksh +++ b/parallel/scripts/run-nacc-fv3.ksh @@ -1,5 +1,5 @@ #!/bin/ksh -l -#BSUB -J viirs-gvf-test +#BSUB -J nacc-test #BSUB -o jnacc_par.out1 #BSUB -e jnacc_par.err1 #BSUB -q debug @@ -22,12 +22,12 @@ NTIMES=73 export NODES=12 APPL=aqm.t12z -InMetDir=/gpfs/hps2/ptmp/Patrick.C.Campbell/NACC_FV3GFS16_runs/sens5_nacc_cmaq531_nofire_fengsha/com/aqm/prod/aqm.20190826 +InMetDir=/gpfs/hps2/ptmp/Patrick.C.Campbell/NACC_FV3GFS16_runs/sens8_nacc_cmaq531_nofire_viirs_lai/com/aqm/prod/aqm.20201017 InGeoDir=/gpfs/hps3/emc/naqfc/noscrub/Youhua.Tang/nwdev/NAQFC-WCOSS/fix InVIIRSDir_GVF=/gpfs/hps3/emc/naqfc/noscrub/Patrick.C.Campbell/viirs_gvf_test/grib2 InVIIRSDir_LAI=/gpfs/hps3/emc/naqfc/noscrub/Patrick.C.Campbell/viirs_lai_test/ -OutDir=/gpfs/hps2/ptmp/$USER/NACC_test_lai/ -ProgDir=/gpfs/hps3/emc/naqfc/noscrub/Patrick.C.Campbell/NACC_viirs_lai/parallel/src +OutDir=/gpfs/hps2/ptmp/$USER/NACC_test_bioseason/ +ProgDir=/gpfs/hps3/emc/naqfc/noscrub/Patrick.C.Campbell/NACC_bioseason/parallel/src if [ ! -s $InMetDir ]; then echo "No such input directory $InMetDir" @@ -75,11 +75,12 @@ cat>namelist.mcip< fld2dxyt(29+nwr+nsoil2d+npxwrf41+5) ENDIF + IF ( ( ifbioseason ) ) THEN + c_season => fld2dxyt(29+nwr+nsoil2d+npxwrf41+nfengsha+1) + ENDIF + !------------------------------------------------------------------------------- ! Time-varying 3d fields at cell centers. !------------------------------------------------------------------------------- diff --git a/parallel/src/alloc_x.f90 b/parallel/src/alloc_x.f90 index ee856a3..85582cd 100644 --- a/parallel/src/alloc_x.f90 +++ b/parallel/src/alloc_x.f90 @@ -164,6 +164,7 @@ SUBROUTINE alloc_x ALLOCATE ( xrgrnd (ncols_x, nrows_x) ) ALLOCATE ( xwr (ncols_x, nrows_x) ) ALLOCATE ( xlai (ncols_x, nrows_x) ) + IF ( ( iffengsha_dust ) ) THEN ALLOCATE ( xclayf (ncols_x, nrows_x) ) ALLOCATE ( xsandf (ncols_x, nrows_x) ) @@ -171,6 +172,11 @@ SUBROUTINE alloc_x ALLOCATE ( xssm (ncols_x, nrows_x) ) ALLOCATE ( xuthr (ncols_x, nrows_x) ) ENDIF + + IF ( ( ifbioseason ) ) THEN + ALLOCATE ( xseason (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 a2614cb..2267f82 100644 --- a/parallel/src/ctmproc.f90 +++ b/parallel/src/ctmproc.f90 @@ -330,6 +330,9 @@ END SUBROUTINE collapx c_ssm%fld(col,row) = xssm(c,r) c_uthr%fld(col,row) = xuthr(c,r) ENDIF + IF ( ( ifbioseason ) ) THEN + c_season%fld(col,row) = xseason(c,r) + ENDIF c_seaice%fld(col,row) = xseaice(c,r) c_snowh%fld(col,row) = xsnowh(c,r) diff --git a/parallel/src/ctmvars_mod.f90 b/parallel/src/ctmvars_mod.f90 index 983bb5f..fac266a 100644 --- a/parallel/src/ctmvars_mod.f90 +++ b/parallel/src/ctmvars_mod.f90 @@ -142,6 +142,7 @@ MODULE ctmvars TYPE(fld2ddata), POINTER :: c_drag TYPE(fld2ddata), POINTER :: c_ssm TYPE(fld2ddata), POINTER :: c_uthr + TYPE(fld2ddata), POINTER :: c_season TYPE(fld2ddata), POINTER :: c_seaice TYPE(fld2ddata), POINTER :: c_snowh TYPE(fld2ddata), POINTER :: c_wr diff --git a/parallel/src/dealloc_ctm.f90 b/parallel/src/dealloc_ctm.f90 index 96d16ad..e71a752 100644 --- a/parallel/src/dealloc_ctm.f90 +++ b/parallel/src/dealloc_ctm.f90 @@ -173,11 +173,12 @@ SUBROUTINE dealloc_ctm NULLIFY ( c_lai ) NULLIFY ( c_seaice ) NULLIFY ( c_snowh ) - NULLIFY ( c_clayf ) - NULLIFY ( c_sandf ) - NULLIFY ( c_drag ) - NULLIFY ( c_ssm ) - NULLIFY ( c_uthr ) + IF ( ASSOCIATED ( c_clayf ) ) NULLIFY ( c_clayf ) + IF ( ASSOCIATED ( c_sandf ) ) NULLIFY ( c_sandf ) + IF ( ASSOCIATED ( c_drag ) ) NULLIFY ( c_drag ) + IF ( ASSOCIATED ( c_ssm ) ) NULLIFY ( c_ssm ) + IF ( ASSOCIATED ( c_uthr ) ) NULLIFY ( c_uthr ) + IF ( ASSOCIATED ( c_season ) ) NULLIFY ( c_season ) IF ( ASSOCIATED ( c_wr ) ) NULLIFY ( c_wr ) IF ( ASSOCIATED ( c_soim1 ) ) NULLIFY ( c_soim1 ) diff --git a/parallel/src/dealloc_x.f90 b/parallel/src/dealloc_x.f90 index 7dc3677..ed651d4 100644 --- a/parallel/src/dealloc_x.f90 +++ b/parallel/src/dealloc_x.f90 @@ -148,6 +148,9 @@ SUBROUTINE dealloc_x IF ( ALLOCATED ( xdrag ) ) DEALLOCATE ( xdrag ) IF ( ALLOCATED ( xssm ) ) DEALLOCATE ( xssm ) IF ( ALLOCATED ( xuthr ) ) DEALLOCATE ( xuthr ) + + IF ( ALLOCATED ( xseason ) ) DEALLOCATE ( xseason ) + DEALLOCATE ( xveg ) DEALLOCATE ( xwstar ) diff --git a/parallel/src/init_ctm.f90 b/parallel/src/init_ctm.f90 index dfad836..1ad5b8c 100644 --- a/parallel/src/init_ctm.f90 +++ b/parallel/src/init_ctm.f90 @@ -698,6 +698,19 @@ SUBROUTINE init_ctm c_uthr%iend(2) = ny ENDIF + IF ( ifbioseason ) THEN + c_season%fld = fillreal + c_season%fldname = 'SEASON' + c_season%long_name = 'bioseason flag' + c_season%units = '1' + c_season%dimnames(1) = 'nx' + c_season%dimnames(2) = 'ny' + c_season%istart(1) = 1 + c_season%istart(2) = 1 + c_season%iend(1) = nx + c_season%iend(2) = ny + ENDIF + c_seaice%fld = fillreal c_seaice%fldname = 'SEAICE' c_seaice%long_name = 'sea ice' diff --git a/parallel/src/init_x.f90 b/parallel/src/init_x.f90 index 38f3efa..89fcc6f 100644 --- a/parallel/src/init_x.f90 +++ b/parallel/src/init_x.f90 @@ -141,6 +141,10 @@ SUBROUTINE init_x xuthr (:,:) = fillreal ENDIF + IF ( ( ifbioseason ) ) THEN + xseason (:,:) = 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 d42b2cb..3ac7a15 100644 --- a/parallel/src/mcipparm_mod.f90 +++ b/parallel/src/mcipparm_mod.f90 @@ -274,6 +274,7 @@ MODULE mcipparm LOGICAL :: ifviirs_gvf ! use NAQFC VIIRS GVF? LOGICAL :: ifviirs_lai ! use NAQFC VIIRS LAI? LOGICAL :: iffengsha_dust ! use NAQFC Fengsha Windblown Dust? + LOGICAL :: ifbioseason ! use bioseason switch? !------------------------------------------------------------------------------- ! Run Options. diff --git a/parallel/src/pblsup.f90 b/parallel/src/pblsup.f90 index a2cdf6b..a13025e 100644 --- a/parallel/src/pblsup.f90 +++ b/parallel/src/pblsup.f90 @@ -94,7 +94,7 @@ SUBROUTINE pblsup ! 26 Jun 2018 Now use netCDF tokens for missing data. (T. Spero) ! 14 Sep 2018 Removed support for MM5v3 input. (T. Spero) !------------------------------------------------------------------------------- - + USE metinfo USE mcipparm USE xvars USE const @@ -309,6 +309,27 @@ END SUBROUTINE getpblht xwstar(c,r) = 0.0 ENDIF + ! User-defined calculation of the BEIS bioseason/freeze flag based on 2-m temperature + ! Needs updating with more robust T2/Q2 parameterization + IF ( ifbioseason ) THEN + IF ( met_season == 1 ) THEN ! N. Hemisphere "summer" months + IF ( xtemp2(c,r) < 269.15 ) THEN !check if temperature < -4C, 28F. + xseason(c,r)=0. ! winter + ELSE + xseason(c,r)=1. ! summer + END IF + END IF + + IF ( met_season == 2 ) THEN ! N. Hemisphere "winter" months + IF ( xtemp2(c,r) > 273.15 ) THEN !check if temperature > 0C, 32F. + xseason(c,r)=1. ! summer + ELSE + xseason(c,r)=0. ! winter + END IF + END IF + + ENDIF + ENDDO ENDDO diff --git a/parallel/src/rdfv3.f90 b/parallel/src/rdfv3.f90 index d1a50d9..fb557b5 100644 --- a/parallel/src/rdfv3.f90 +++ b/parallel/src/rdfv3.f90 @@ -2368,7 +2368,6 @@ END SUBROUTINE windrotation !------------------------------------------------------------------------------- ! If this is the first time in this routine, then determine season. !------------------------------------------------------------------------------- -! But if global IF ( first ) THEN ! These seasons are used in MM5 and WRF for land-use lookup tables. @@ -2392,10 +2391,11 @@ END SUBROUTINE windrotation met_season = 2 ! winter ENDIF ENDIF + !------------------------------------------------------------------------------- ! If roughness length was not available in output, fill it from lookup tables. ! If the urban model was used in WRF, replace roughness length with urban- -! specific arrays. +! specific arrays. !------------------------------------------------------------------------------- IF ( .NOT. gotznt ) THEN diff --git a/parallel/src/readnml.f90 b/parallel/src/readnml.f90 index 6a7a30c..b892f61 100644 --- a/parallel/src/readnml.f90 +++ b/parallel/src/readnml.f90 @@ -111,7 +111,7 @@ SUBROUTINE readnml (ctmlays) NAMELIST /userdefs/ inmetmodel, dx_in, dy_in, met_cen_lat_in, met_cen_lon_in, & lpv, lwout, luvbout, ifdiag_pbl, ifviirs_gvf, & - ifviirs_lai, iffengsha_dust, & + ifviirs_lai, iffengsha_dust, ifbioseason, & eradm, mcip_start, mcip_end, ntimes, intvl, & coordnam, grdnam, ctmlays, & btrim, lprt_col, lprt_row, & @@ -257,6 +257,7 @@ SUBROUTINE readnml (ctmlays) ifviirs_gvf = .false. ! To use NAQFC VIIRS GVF input ifviirs_lai = .false. ! To use NAQFC VIIRS LAI input iffengsha_dust = .false. ! To use NAQFC Fengsha Windblown Dust + ifbioseason = .false. ! To use bioseason switch !------------------------------------------------------------------------------- ! 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/xvars_mod.f90 b/parallel/src/xvars_mod.f90 index 6303af6..5c74ac3 100644 --- a/parallel/src/xvars_mod.f90 +++ b/parallel/src/xvars_mod.f90 @@ -203,6 +203,8 @@ MODULE xvars REAL, ALLOCATABLE :: xveg ( : , : ) ! vegetation coverage [decimal] REAL, ALLOCATABLE :: xsltyp ( : , : ) ! soil texture type [category] + REAL, ALLOCATABLE :: xseason ( : , : ) ! bioseason flag [1=summer, 0=winter] + REAL, ALLOCATABLE :: xwsat_px ( : , : ) ! soil saturation (PX) [m3/m3] REAL, ALLOCATABLE :: xwwlt_px ( : , : ) ! soil wilt pt (PX) [m3/m3] REAL, ALLOCATABLE :: xwfc_px ( : , : ) ! soil fld capacity (PX) [m3/m3] diff --git a/serial/scripts/run-nacc-fv3.csh b/serial/scripts/run-nacc-fv3.csh index 1ca1517..7c15cf7 100755 --- a/serial/scripts/run-nacc-fv3.csh +++ b/serial/scripts/run-nacc-fv3.csh @@ -38,7 +38,8 @@ cat>namelist.mcip<namelist.mcip<namelist.mcip< fld2dxyt(29+nwr+nsoil2d+npxwrf41+5) ENDIF + IF ( ( ifbioseason ) ) THEN + c_season => fld2dxyt(29+nwr+nsoil2d+npxwrf41+nfengsha+1) + ENDIF + !------------------------------------------------------------------------------- ! Time-varying 3d fields at cell centers. !------------------------------------------------------------------------------- diff --git a/serial/src/alloc_x.f90 b/serial/src/alloc_x.f90 index ee856a3..85582cd 100644 --- a/serial/src/alloc_x.f90 +++ b/serial/src/alloc_x.f90 @@ -164,6 +164,7 @@ SUBROUTINE alloc_x ALLOCATE ( xrgrnd (ncols_x, nrows_x) ) ALLOCATE ( xwr (ncols_x, nrows_x) ) ALLOCATE ( xlai (ncols_x, nrows_x) ) + IF ( ( iffengsha_dust ) ) THEN ALLOCATE ( xclayf (ncols_x, nrows_x) ) ALLOCATE ( xsandf (ncols_x, nrows_x) ) @@ -171,6 +172,11 @@ SUBROUTINE alloc_x ALLOCATE ( xssm (ncols_x, nrows_x) ) ALLOCATE ( xuthr (ncols_x, nrows_x) ) ENDIF + + IF ( ( ifbioseason ) ) THEN + ALLOCATE ( xseason (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 a2614cb..2267f82 100644 --- a/serial/src/ctmproc.f90 +++ b/serial/src/ctmproc.f90 @@ -330,6 +330,9 @@ END SUBROUTINE collapx c_ssm%fld(col,row) = xssm(c,r) c_uthr%fld(col,row) = xuthr(c,r) ENDIF + IF ( ( ifbioseason ) ) THEN + c_season%fld(col,row) = xseason(c,r) + ENDIF c_seaice%fld(col,row) = xseaice(c,r) c_snowh%fld(col,row) = xsnowh(c,r) diff --git a/serial/src/ctmvars_mod.f90 b/serial/src/ctmvars_mod.f90 index 983bb5f..fac266a 100644 --- a/serial/src/ctmvars_mod.f90 +++ b/serial/src/ctmvars_mod.f90 @@ -142,6 +142,7 @@ MODULE ctmvars TYPE(fld2ddata), POINTER :: c_drag TYPE(fld2ddata), POINTER :: c_ssm TYPE(fld2ddata), POINTER :: c_uthr + TYPE(fld2ddata), POINTER :: c_season TYPE(fld2ddata), POINTER :: c_seaice TYPE(fld2ddata), POINTER :: c_snowh TYPE(fld2ddata), POINTER :: c_wr diff --git a/serial/src/dealloc_ctm.f90 b/serial/src/dealloc_ctm.f90 index 96d16ad..e71a752 100644 --- a/serial/src/dealloc_ctm.f90 +++ b/serial/src/dealloc_ctm.f90 @@ -173,11 +173,12 @@ SUBROUTINE dealloc_ctm NULLIFY ( c_lai ) NULLIFY ( c_seaice ) NULLIFY ( c_snowh ) - NULLIFY ( c_clayf ) - NULLIFY ( c_sandf ) - NULLIFY ( c_drag ) - NULLIFY ( c_ssm ) - NULLIFY ( c_uthr ) + IF ( ASSOCIATED ( c_clayf ) ) NULLIFY ( c_clayf ) + IF ( ASSOCIATED ( c_sandf ) ) NULLIFY ( c_sandf ) + IF ( ASSOCIATED ( c_drag ) ) NULLIFY ( c_drag ) + IF ( ASSOCIATED ( c_ssm ) ) NULLIFY ( c_ssm ) + IF ( ASSOCIATED ( c_uthr ) ) NULLIFY ( c_uthr ) + IF ( ASSOCIATED ( c_season ) ) NULLIFY ( c_season ) IF ( ASSOCIATED ( c_wr ) ) NULLIFY ( c_wr ) IF ( ASSOCIATED ( c_soim1 ) ) NULLIFY ( c_soim1 ) diff --git a/serial/src/dealloc_x.f90 b/serial/src/dealloc_x.f90 index 7dc3677..ed651d4 100644 --- a/serial/src/dealloc_x.f90 +++ b/serial/src/dealloc_x.f90 @@ -148,6 +148,9 @@ SUBROUTINE dealloc_x IF ( ALLOCATED ( xdrag ) ) DEALLOCATE ( xdrag ) IF ( ALLOCATED ( xssm ) ) DEALLOCATE ( xssm ) IF ( ALLOCATED ( xuthr ) ) DEALLOCATE ( xuthr ) + + IF ( ALLOCATED ( xseason ) ) DEALLOCATE ( xseason ) + DEALLOCATE ( xveg ) DEALLOCATE ( xwstar ) diff --git a/serial/src/init_ctm.f90 b/serial/src/init_ctm.f90 index dfad836..1ad5b8c 100644 --- a/serial/src/init_ctm.f90 +++ b/serial/src/init_ctm.f90 @@ -698,6 +698,19 @@ SUBROUTINE init_ctm c_uthr%iend(2) = ny ENDIF + IF ( ifbioseason ) THEN + c_season%fld = fillreal + c_season%fldname = 'SEASON' + c_season%long_name = 'bioseason flag' + c_season%units = '1' + c_season%dimnames(1) = 'nx' + c_season%dimnames(2) = 'ny' + c_season%istart(1) = 1 + c_season%istart(2) = 1 + c_season%iend(1) = nx + c_season%iend(2) = ny + ENDIF + c_seaice%fld = fillreal c_seaice%fldname = 'SEAICE' c_seaice%long_name = 'sea ice' diff --git a/serial/src/init_x.f90 b/serial/src/init_x.f90 index 38f3efa..89fcc6f 100644 --- a/serial/src/init_x.f90 +++ b/serial/src/init_x.f90 @@ -141,6 +141,10 @@ SUBROUTINE init_x xuthr (:,:) = fillreal ENDIF + IF ( ( ifbioseason ) ) THEN + xseason (:,:) = 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 d42b2cb..3ac7a15 100644 --- a/serial/src/mcipparm_mod.f90 +++ b/serial/src/mcipparm_mod.f90 @@ -274,6 +274,7 @@ MODULE mcipparm LOGICAL :: ifviirs_gvf ! use NAQFC VIIRS GVF? LOGICAL :: ifviirs_lai ! use NAQFC VIIRS LAI? LOGICAL :: iffengsha_dust ! use NAQFC Fengsha Windblown Dust? + LOGICAL :: ifbioseason ! use bioseason switch? !------------------------------------------------------------------------------- ! Run Options. diff --git a/serial/src/pblsup.f90 b/serial/src/pblsup.f90 index a2cdf6b..a13025e 100644 --- a/serial/src/pblsup.f90 +++ b/serial/src/pblsup.f90 @@ -94,7 +94,7 @@ SUBROUTINE pblsup ! 26 Jun 2018 Now use netCDF tokens for missing data. (T. Spero) ! 14 Sep 2018 Removed support for MM5v3 input. (T. Spero) !------------------------------------------------------------------------------- - + USE metinfo USE mcipparm USE xvars USE const @@ -309,6 +309,27 @@ END SUBROUTINE getpblht xwstar(c,r) = 0.0 ENDIF + ! User-defined calculation of the BEIS bioseason/freeze flag based on 2-m temperature + ! Needs updating with more robust T2/Q2 parameterization + IF ( ifbioseason ) THEN + IF ( met_season == 1 ) THEN ! N. Hemisphere "summer" months + IF ( xtemp2(c,r) < 269.15 ) THEN !check if temperature < -4C, 28F. + xseason(c,r)=0. ! winter + ELSE + xseason(c,r)=1. ! summer + END IF + END IF + + IF ( met_season == 2 ) THEN ! N. Hemisphere "winter" months + IF ( xtemp2(c,r) > 273.15 ) THEN !check if temperature > 0C, 32F. + xseason(c,r)=1. ! summer + ELSE + xseason(c,r)=0. ! winter + END IF + END IF + + ENDIF + ENDDO ENDDO diff --git a/serial/src/rdfv3.f90 b/serial/src/rdfv3.f90 index d5cabc9..790cf43 100644 --- a/serial/src/rdfv3.f90 +++ b/serial/src/rdfv3.f90 @@ -2355,7 +2355,6 @@ END SUBROUTINE windrotation !------------------------------------------------------------------------------- ! If this is the first time in this routine, then determine season. !------------------------------------------------------------------------------- -! But if global IF ( first ) THEN ! These seasons are used in MM5 and WRF for land-use lookup tables. diff --git a/serial/src/readnml.f90 b/serial/src/readnml.f90 index 6a7a30c..b892f61 100644 --- a/serial/src/readnml.f90 +++ b/serial/src/readnml.f90 @@ -111,7 +111,7 @@ SUBROUTINE readnml (ctmlays) NAMELIST /userdefs/ inmetmodel, dx_in, dy_in, met_cen_lat_in, met_cen_lon_in, & lpv, lwout, luvbout, ifdiag_pbl, ifviirs_gvf, & - ifviirs_lai, iffengsha_dust, & + ifviirs_lai, iffengsha_dust, ifbioseason, & eradm, mcip_start, mcip_end, ntimes, intvl, & coordnam, grdnam, ctmlays, & btrim, lprt_col, lprt_row, & @@ -257,6 +257,7 @@ SUBROUTINE readnml (ctmlays) ifviirs_gvf = .false. ! To use NAQFC VIIRS GVF input ifviirs_lai = .false. ! To use NAQFC VIIRS LAI input iffengsha_dust = .false. ! To use NAQFC Fengsha Windblown Dust + ifbioseason = .false. ! To use bioseason switch !------------------------------------------------------------------------------- ! 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/xvars_mod.f90 b/serial/src/xvars_mod.f90 index 6303af6..5c74ac3 100644 --- a/serial/src/xvars_mod.f90 +++ b/serial/src/xvars_mod.f90 @@ -203,6 +203,8 @@ MODULE xvars REAL, ALLOCATABLE :: xveg ( : , : ) ! vegetation coverage [decimal] REAL, ALLOCATABLE :: xsltyp ( : , : ) ! soil texture type [category] + REAL, ALLOCATABLE :: xseason ( : , : ) ! bioseason flag [1=summer, 0=winter] + REAL, ALLOCATABLE :: xwsat_px ( : , : ) ! soil saturation (PX) [m3/m3] REAL, ALLOCATABLE :: xwwlt_px ( : , : ) ! soil wilt pt (PX) [m3/m3] REAL, ALLOCATABLE :: xwfc_px ( : , : ) ! soil fld capacity (PX) [m3/m3]