diff --git a/fix b/fix index 6c7d9f470f..b59fa6fc63 160000 --- a/fix +++ b/fix @@ -1 +1 @@ -Subproject commit 6c7d9f470fba03cfc77850b9a5e49295ceb2f4b7 +Subproject commit b59fa6fc63b5a2cc3f1425f171e720329692e775 diff --git a/regression/global_C96_fv3aerorad.sh b/regression/global_C96_fv3aerorad.sh new file mode 100755 index 0000000000..c2149067c4 --- /dev/null +++ b/regression/global_C96_fv3aerorad.sh @@ -0,0 +1,344 @@ +set -x +# Set experiment name and analysis date + +exp=$jobname + +# Set the JCAP resolution which you want. +# All resolutions use LEVS=64 +export LEVS=64 + +# Set runtime and save directories +tmpdir=$tmpdir/$tmpregdir/${exp} +savdir=$savdir/outC96_fv3aerorad/${exp} + +# Specify GSI fixed field and data directories. +fixcrtm=${fixcrtm:-$CRTM_FIX} + +# Set variables used in script +# CLEAN up $tmpdir when finished (YES=remove, NO=leave alone) +# ncp is cp replacement, currently keep as /bin/cp + +UNCOMPRESS=gunzip +CLEAN=NO +ncp=/bin/cp +ncpl="ln -fs" + +# Given the analysis date, compute the date from which the +# first guess comes. Extract cycle and set prefix and suffix +# for guess and observation data files +PDY=`echo $global_C96_fv3aerorad_adate | cut -c1-8` +cyc=`echo $global_C96_fv3aerorad_adate | cut -c9-10` +gdate=`$ndate -06 $global_C96_fv3aerorad_adate` +gPDY=`echo $gdate | cut -c1-8` +gcyc=`echo $gdate | cut -c9-10` +hha=`echo $global_C96_fv3aerorad_adate | cut -c9-10` +hhg=`echo $gdate | cut -c9-10` +prefix_obs=gfs.t${hha}z +prefix_prep=$prefix_obs +prefix_tbc=gdas1.t${hhg}z +prefix_sfc=gfsC96.t${hhg}z +prefix_atm=gfsC96.t${hhg}z +prefix_aer=gfsC96.t${hhg}z +suffix_obs=tm00.bufr_d + +datobs=$global_C96_fv3aerorad_obs/gfs.$PDY/$cyc +datanl=$global_C96_fv3aerorad_obs/gfs.$PDY/$cyc +datges=$global_C96_fv3aerorad_ges/gfs.$gPDY/$gcyc + +# Set up $tmpdir +rm -rf $tmpdir +mkdir -p $tmpdir +cd $tmpdir +rm -rf core* + + +# CO2 namelist and file decisions +ICO2=${ICO2:-0} +if [ $ICO2 -gt 0 ] ; then + # Copy co2 files to $tmpdir + co2dir=${CO2DIR:-$fixgsi} + yyyy=$(echo ${CDATE:-$global_C96_fv3aerorad_adate}|cut -c1-4) + rm ./global_co2_data.txt + co2=$co2dir/global_co2.gcmscl_$yyyy.txt + while [ ! -s $co2 ] ; do + ((yyyy-=1)) + co2=$co2dir/global_co2.gcmscl_$yyyy.txt + done + if [ -s $co2 ] ; then + $ncp $co2 ./global_co2_data.txt + fi + if [ ! -s ./global_co2_data.txt ] ; then + echo "\./global_co2_data.txt" not created + exit 1 + fi +fi +#CH4 file decision +ICH4=${ICH4:-0} +if [ $ICH4 -gt 0 ] ; then +# # Copy ch4 files to $tmpdir + ch4dir=${CH4DIR:-$fixgsi} + yyyy=$(echo ${CDATE:-$global_C96_fv3aerorad_adate}|cut -c1-4) + rm ./ch4globaldata.txt + ch4=$ch4dir/global_ch4_esrlctm_$yyyy.txt + while [ ! -s $ch4 ] ; do + ((yyyy-=1)) + ch4=$ch4dir/global_ch4_esrlctm_$yyyy.txt + done + if [ -s $ch4 ] ; then + $ncp $ch4 ./ch4globaldata.txt + fi + if [ ! -s ./ch4globaldata.txt ] ; then + echo "\./ch4globaldata.txt" not created + exit 1 + fi +fi +IN2O=${IN2O:-0} +if [ $IN2O -gt 0 ] ; then +# # Copy ch4 files to $tmpdir + n2odir=${N2ODIR:-$fixgsi} + yyyy=$(echo ${CDATE:-$global_C96_fv3aerorad_adate}|cut -c1-4) + rm ./n2oglobaldata.txt + n2o=$n2odir/global_n2o_esrlctm_$yyyy.txt + while [ ! -s $n2o ] ; do + ((yyyy-=1)) + n2o=$n2odir/global_n2o_esrlctm_$yyyy.txt + done + if [ -s $n2o ] ; then + $ncp $n2o ./n2oglobaldata.txt + fi + if [ ! -s ./n2oglobaldata.txt ] ; then + echo "\./n2oglobaldata.txt" not created + exit 1 + fi +fi +ICO=${ICO:-0} +if [ $ICO -gt 0 ] ; then +# # Copy CO files to $tmpdir + codir=${CODIR:-$fixgsi} + yyyy=$(echo ${CDATE:-$global_C96_fv3aerorad_adate}|cut -c1-4) + rm ./coglobaldata.txt + co=$codir/global_co_esrlctm_$yyyy.txt + while [ ! -s $co ] ; do + ((yyyy-=1)) + co=$codir/global_co_esrlctm_$yyyy.txt + done + if [ -s $co ] ; then + $ncp $co ./coglobaldata.txt + fi + if [ ! -s ./coglobaldata.txt ] ; then + echo "\./coglobaldata.txt" not created + exit 1 + fi +fi + +# Make gsi namelist + +. $scripts/regression_nl_update.sh + +SETUP="$SETUP_update" +GRIDOPTS="$GRIDOPTS_update" +BKGVERR="$BKGVERR_update" +ANBKGERR="$ANBKERR_update" +JCOPTS="$JCOPTS_update" +STRONGOPTS="$STRONGOPTS_update" +OBSQC="$OBSQC_update" +OBSINPUT="$OBSINPUT_update" +SUPERRAD="$SUPERRAD_update" +SINGLEOB="$SINGLEOB_update" + +. $scripts/regression_namelists.sh global_C96_fv3aerorad + +##! l4dvar=.false.,nhr_assimilation=6,nhr_obsbin=6, +##! lsqrtb=.true.,lcongrad=.false.,ltlint=.true., +##! idmodel=.true.,lwrtinc=.false., + +cat << EOF > gsiparm.anl + +$gsi_namelist + +EOF + +# Set fixed files +# berror = forecast model background error statistics +# specoef = CRTM spectral coefficients +# trncoef = CRTM transmittance coefficients +# emiscoef = CRTM coefficients for IR sea surface emissivity model +# aerocoef = CRTM coefficients for aerosol effects +# cldcoef = CRTM coefficients for cloud effects +# satinfo = text file with information about assimilation of brightness temperatures +# cloudyinfo = text file with information about assimilation of cloudy radiance +# satangl = angle dependent bias correction file (fixed in time) +# pcpinfo = text file with information about assimilation of prepcipitation rates +# ozinfo = text file with information about assimilation of ozone data +# errtable = text file with obs error for conventional data (optional) +# convinfo = text file with information about assimilation of conventional data +# bufrtable= text file ONLY needed for single obs test (oneobstest=.true.) +# bftab_sst= bufr table for sst ONLY needed for sst retrieval (retrieval=.true.) + +berror=$fixgsi/Big_Endian/global_berror.l64y194.f77 + +emiscoef_IRwater=$fixcrtm/Nalli.IRwater.EmisCoeff.bin +emiscoef_IRice=$fixcrtm/NPOESS.IRice.EmisCoeff.bin +emiscoef_IRland=$fixcrtm/NPOESS.IRland.EmisCoeff.bin +emiscoef_IRsnow=$fixcrtm/NPOESS.IRsnow.EmisCoeff.bin +emiscoef_VISice=$fixcrtm/NPOESS.VISice.EmisCoeff.bin +emiscoef_VISland=$fixcrtm/NPOESS.VISland.EmisCoeff.bin +emiscoef_VISsnow=$fixcrtm/NPOESS.VISsnow.EmisCoeff.bin +emiscoef_VISwater=$fixcrtm/NPOESS.VISwater.EmisCoeff.bin +emiscoef_MWwater=$fixcrtm/FASTEM6.MWwater.EmisCoeff.bin +aercoef=$fixcrtm/AerosolCoeff.bin +cldcoef=$fixcrtm/CloudCoeff.bin +satangl=$fixgsi/global_satangbias.txt +scaninfo=$fixgsi/global_scaninfo.txt +satinfo=$fixgsi/fv3aerorad_satinfo.txt +cloudyinfo=$fixgsi/cloudy_radiance_info.txt +convinfo=$fixgsi/global_convinfo_reg_test.txt +anavinfo=$fixgsi/anavinfo_fv3aerorad +ozinfo=$fixgsi/global_ozinfo.txt +pcpinfo=$fixgsi/global_pcpinfo.txt +hybens_info=$fixgsi/global_hybens_info.l64.txt +errtable=$fixgsi/prepobs_errtable.global +atmsbeaminfo=$fixgsi/atms_beamwidth.txt + +# Copy executable and fixed files to $tmpdir +if [[ $exp == *"updat"* ]]; then + $ncp $gsiexec_updat ./gsi.x +elif [[ $exp == *"contrl"* ]]; then + $ncp $gsiexec_contrl ./gsi.x +fi + +mkdir ./crtm_coeffs +$ncp $berror ./berror_stats +$ncp $emiscoef_IRwater ./crtm_coeffs/Nalli.IRwater.EmisCoeff.bin +$ncp $emiscoef_IRice ./crtm_coeffs/NPOESS.IRice.EmisCoeff.bin +$ncp $emiscoef_IRsnow ./crtm_coeffs/NPOESS.IRsnow.EmisCoeff.bin +$ncp $emiscoef_IRland ./crtm_coeffs/NPOESS.IRland.EmisCoeff.bin +$ncp $emiscoef_VISice ./crtm_coeffs/NPOESS.VISice.EmisCoeff.bin +$ncp $emiscoef_VISland ./crtm_coeffs/NPOESS.VISland.EmisCoeff.bin +$ncp $emiscoef_VISsnow ./crtm_coeffs/NPOESS.VISsnow.EmisCoeff.bin +$ncp $emiscoef_VISwater ./crtm_coeffs/NPOESS.VISwater.EmisCoeff.bin +$ncp $emiscoef_MWwater ./crtm_coeffs/FASTEM6.MWwater.EmisCoeff.bin +$ncp $aercoef ./crtm_coeffs/AerosolCoeff.bin +$ncp $cldcoef ./crtm_coeffs/CloudCoeff.bin +$ncp $satangl ./satbias_angle +$ncp $scaninfo ./scaninfo +$ncp $satinfo ./satinfo +$ncp $cloudyinfo ./cloudy_radiance_info.txt +$ncp $pcpinfo ./pcpinfo +$ncp $ozinfo ./ozinfo +$ncp $convinfo ./convinfo +$ncp $errtable ./errtable +$ncp $anavinfo ./anavinfo +$ncp $aeroinfo ./aeroinfo +$ncp $hybens_info ./hybens_info +$ncp $atmsbeaminfo ./atms_beamwidth.txt + +# Copy CRTM coefficient files +for file in `awk '{if($1!~"!"){print $1}}' ./satinfo | sort | uniq` ;do + $ncp $fixcrtm/${file}.SpcCoeff.bin ./crtm_coeffs + $ncp $fixcrtm/${file}.TauCoeff.bin ./crtm_coeffs +done + +# Copy observational data to $tmpdir +$ncpl $datobs/${prefix_obs}.prepbufr ./prepbufr +$ncpl $datobs/${prefix_obs}.prepbufr.acft_profiles ./prepbufr_profl +$ncpl $datobs/${prefix_obs}.nsstbufr ./nsstbufr +$ncpl $datobs/${prefix_obs}.airsev.${suffix_obs} ./airsbufr +$ncpl $datobs/${prefix_obs}.mtiasi.${suffix_obs} ./iasibufr +$ncpl $datobs/${prefix_obs}.cris.${suffix_obs} ./crisbufr + +# Copy bias correction, atmospheric and surface files +$ncpl $datges/gfs.t18z.abias ./satbias_in +$ncpl $datges/gfs.t18z.abias_pc ./satbias_pc +$ncpl $datges/gfs.t18z.abias_air ./aircftbias_in +#$ncpl $datges/gfs.t18z.radstat ./radstat.gdas + +if [[ "$endianness" = "Big_Endian" ]]; then + ln -s -f $datges/${prefix_sfc}.sfcf03 ./sfcf03 + ln -s -f $datges/${prefix_sfc}.sfcf06 ./sfcf06 + ln -s -f $datges/${prefix_sfc}.sfcf09 ./sfcf09 +elif [[ "$endianness" = "Little_Endian" ]]; then + ln -s -f $datges/${prefix_sfc}.sfcf03.le ./sfcf03 + ln -s -f $datges/${prefix_sfc}.sfcf06.le ./sfcf06 + ln -s -f $datges/${prefix_sfc}.sfcf09.le ./sfcf09 +fi + +if [[ "$endianness" = "Big_Endian" ]]; then + ln -s -f $datges/${prefix_atm}.sigf03 ./sigf03 + ln -s -f $datges/${prefix_atm}.sigf06 ./sigf06 + ln -s -f $datges/${prefix_atm}.sigf09 ./sigf09 +elif [[ "$endianness" = "Little_Endian" ]]; then + ln -s -f $datges/${prefix_atm}.sigf03.le ./sigf03 + ln -s -f $datges/${prefix_atm}.sigf06.le ./sigf06 + ln -s -f $datges/${prefix_atm}.sigf09.le ./sigf09 +fi + +if [[ "$endianness" = "Big_Endian" ]]; then + $ncpl $datges/${prefix_aer}.sigf03 ./aerf03 + $ncpl $datges/${prefix_aer}.sigf06 ./aerf06 + $ncpl $datges/${prefix_aer}.sigf09 ./aerf09 +elif [[ "$endianness" = "Little_Endian" ]]; then + $ncpl $datges/${prefix_aer}.sigf03.le ./aerf03 + $ncpl $datges/${prefix_aer}.sigf06.le ./aerf06 + $ncpl $datges/${prefix_aer}.sigf09.le ./aerf09 +fi + +# Run GSI +cd $tmpdir +echo "run gsi now" +eval "$APRUN $tmpdir/gsi.x > stdout 2>&1" +rc=$? +exit $rc + + +# Loop over first and last outer loops to generate innovation +# diagnostic files for indicated observation types (groups) +# +# NOTE: Since we set miter=2 in GSI namelist SETUP, outer +# loop 03 will contain innovations with respect to +# the analysis. Creation of o-a innovation files +# is triggered by write_diag(3)=.true. The setting +# write_diag(1)=.true. turns on creation of o-g +# innovation files. +# + + +echo "Time before diagnostic loop is `date` " +cd $tmpdir +loops="01 03" +for loop in $loops; do + +case $loop in + 01) string=ges;; + 03) string=anl;; + *) string=$loop;; +esac + +# Collect diagnostic files for obs types (groups) below + listall="modis_aod_terra modis_aod_aqua" + for type in $listall; do + count=`ls dir.*/${type}_${loop}* | wc -l` + if [[ $count -gt 0 ]]; then + cat dir.*/${type}_${loop}* > diag_${type}_${string}.${global_T62_adate} + compress diag_${type}_${string}.${global_T62_adate} + $ncp diag_${type}_${string}.${global_T62_adate}.Z $savdir/ + fi + done +done +echo "Time after diagnostic loop is `date` " + + + +# If requested, clean up $tmpdir +if [[ "$CLEAN" = "YES" ]];then + if [[ $rc -eq 0 ]];then + rm -rf $tmpdir + cd $tmpdir + cd ../ + rmdir $tmpdir + fi +fi + + +# End of script +exit diff --git a/regression/regression_namelists.sh b/regression/regression_namelists.sh index b80672e192..91108e322b 100755 --- a/regression/regression_namelists.sh +++ b/regression/regression_namelists.sh @@ -2711,6 +2711,123 @@ OBS_INPUT:: obhourset=0., / + &NST + nst_gsi=3, + nstinfo=4,fac_dtl=1,fac_tsl=1,zsea1=0,zsea2=0, + /" +;; + + global_C96_fv3aerorad) + +# Define namelist for global run (aerosol analysis) + +export gsi_namelist=" + &SETUP + niter(1)=100,niter(2)=100 + niter_no_qc(1)=50,niter_no_qc(2)=0, + write_diag(1)=.true.,write_diag(2)=.false.,write_diag(3)=.true., + qoption=2, + gencode=82,factqmin=0.5,factqmax=0.005,deltim=1200, + iguess=-1, + tzr_qc=1, + oneobtest=.false.,retrieval=.false.,l_foto=.false., + use_pbl=.false.,use_compress=.true.,nsig_ext=12,gpstop=50., + use_gfs_nemsio=.true.,sfcnst_comb=.true., + use_readin_anl_sfcmask=.false., + lrun_subdirs=.true., + crtm_coeffs_path='./crtm_coeffs/', + newpc4pred=.true.,adp_anglebc=.true.,angord=4,passive_bc=.true.,use_edges=.false., + diag_precon=.true.,step_start=1.e-3,emiss_bc=.true.,nhr_obsbin=3, + cwoption=3,imp_physics=11,lupp=.true., + netcdf_diag=.true.,binary_diag=.false., + lobsdiag_forenkf=.false., + diag_aero=.false., use_fv3_aero=.true.,offtime_data=.true., + diag_rad=.true.,diag_pcp=.false.,diag_conv=.true.,diag_ozone=.false., + / + + &GRIDOPTS + JCAP_B=190,JCAP=190,NLAT=194,NLON=384,nsig=64, + regional=.false.,nlayers(63)=3,nlayers(64)=6, + / + + &BKGERR + vs=0.7, + hzscl=1.7,0.8,0.5, + hswgt=0.45,0.3,0.25, + bw=0.0,norsp=4, + bkgv_flowdep=.true.,bkgv_rewgtfct=1.5, + bkgv_write=.false., + cwcoveqqcov=.false., + / + + &ANBKGERR + anisotropic=.false., + / + + &JCOPTS + ljcdfi=.false.,alphajc=0.0,ljcpdry=.true.,bamp_jcpdry=5.0e7, + / + + &STRONGOPTS + tlnmc_option=2,nstrong=1,nvmodes_keep=8,period_max=6.,period_width=1.5, + / + + &OBSQC + dfact=0.75,dfact1=3.0,noiqc=.true.,oberrflg=.false.,c_varqc=0.02, + use_poq7=.true.,qc_noirjaco3_pole=.true.,vqc=.true., + aircraft_t_bc=.false.,biaspredt=1000.0,upd_aircraft=.true.,cleanup_tail=.true., + / + + &OBS_INPUT + dmesh(1)=145.0,dmesh(2)=150.0,dmesh(3)=100.0,time_window_max=3.0, + / + +OBS_INPUT:: +! dfile dtype dplat dsis dval dthin dsfcalc + prepbufr ps null ps 0.0 0 0 + prepbufr t null t 0.0 0 0 + prepbufr q null q 0.0 0 0 + prepbufr pw null pw 0.0 0 0 + prepbufr uv null uv 0.0 0 0 + prepbufr spd null spd 0.0 0 0 + prepbufr dw null dw 0.0 0 0 + airsbufr airs aqua airs_aqua 0.0 1 1 + iasibufr iasi metop-a iasi_metop-a 0.0 1 1 + iasibufr iasi metop-b iasi_metop-b 0.0 1 0 + crisbufr cris npp cris_npp 0.0 1 0 + nsstbufr sst nsst sst 0.0 0 0 +:: + + &SUPEROB_RADAR + / + + &LAG_DATA + / + + &HYBRID_ENSEMBLE + l_hyb_ens=.false., + generate_ens=.false., + beta_s0=0.125,readin_beta=.false., + s_ens_h=800.,s_ens_v=-0.8,readin_localization=.true., + aniso_a_en=.false.,oz_univ_static=.false.,uv_hyb_ens=.true., + ensemble_path='./ensemble_data/', + ens_fast_read=.true., + / + + &RAPIDREFRESH_CLDSURF + dfi_radar_latent_heat_time_period=30.0, + / + + &CHEM + lread_ext_aerosol=.true., + / + + &SINGLEOB_TEST + maginnov=0.1,magoberr=0.1,oneob_type='t', + oblat=45.,oblon=180.,obpres=1000.,obdattim=2019061718, + obhourset=0., + / + &NST nst_gsi=3, nstinfo=4,fac_dtl=1,fac_tsl=1,zsea1=0,zsea2=0, diff --git a/regression/regression_param.sh b/regression/regression_param.sh index ba6aeb8917..8083020e55 100755 --- a/regression/regression_param.sh +++ b/regression/regression_param.sh @@ -602,6 +602,39 @@ case $regtest in ;; + global_C96_fv3aerorad) + + if [[ "$machine" = "Hera" ]]; then + topts[1]="0:45:00" ; popts[1]="20/8/" ; ropts[1]="/1" + topts[2]="0:45:00" ; popts[2]="20/8/" ; ropts[2]="/2" + elif [[ "$machine" = "Cheyenne" ]]; then + topts[1]="0:15:00" ; popts[1]="16/2/" ; ropts[1]="/1" + topts[2]="0:15:00" ; popts[2]="16/4/" ; ropts[2]="/2" + elif [[ "$machine" = "WCOSS" ]]; then + topts[1]="0:15:00" ; popts[1]="16/2/" ; ropts[1]="/1" + topts[2]="0:15:00" ; popts[2]="16/4/" ; ropts[2]="/2" + elif [[ "$machine" = "WCOSS_C" ]]; then + topts[1]="0:15:00" ; popts[1]="36/4/" ; ropts[1]="1024/1" # sub_wcoss_c popts are "#tasks/#nodes/" + topts[2]="0:15:00" ; popts[2]="72/8/" ; ropts[2]="1024/2" + elif [[ "$machine" = "WCOSS_D" ]]; then + topts[1]="0:15:00" ; popts[1]="28/2/" ; ropts[1]="/1" + topts[2]="0:15:00" ; popts[2]="28/4/" ; ropts[2]="/2" + elif [[ "$machine" = "Discover" ]]; then + topts[1]="0:30:00" ; popts[1]="20/4" ; ropts[1]="/1" + topts[2]="0:30:00" ; popts[2]="40/2" ; ropts[2]="/2" + elif [[ "$machine" = "s4" ]]; then + topts[1]="0:25:00" ; popts[1]="36/2/" ; ropts[1]="/1" + topts[2]="0:25:00" ; popts[2]="72/3/" ; ropts[2]="/2" + fi + + if [ "$debug" = ".true." ] ; then + topts[1]="1:00:00" + fi + + scaling[1]=10; scaling[2]=8; scaling[3]=4 + + ;; + *) # EXIT out for unresolved regtest echo "unknown $regtest" diff --git a/regression/regression_var.sh b/regression/regression_var.sh index 1017fb4e9a..33e2b8c195 100755 --- a/regression/regression_var.sh +++ b/regression/regression_var.sh @@ -112,21 +112,28 @@ case $machine in elif [ -d /scratch2/BMC/gsienkf/$LOGNAME ]; then export noscrub="/scratch2/BMC/gsienkf/$LOGNAME" fi + + export noscrub="/scratch1/BMC/gsd-fv3-dev/Shih-wei.Wei/DTCVisitor/rgtest_Jul1/noscrub" + export group="global" export queue="batch" if [[ "$cmaketest" = "false" ]]; then - export basedir="/scratch1/NCEPDEV/da/$LOGNAME/git/gsi" + #export basedir="/scratch1/NCEPDEV/da/$LOGNAME/git/gsi" + export basedir="/scratch1/BMC/gsd-fv3-dev/Shih-wei.Wei/DTCVisitor/rgtest_Jul1/control" fi - export ptmp="/scratch1/NCEPDEV/stmp2/$LOGNAME/$ptmpName" + #export ptmp="/scratch1/NCEPDEV/stmp2/$LOGNAME/$ptmpName" + export ptmp="/scratch1/BMC/gsd-fv3-dev/Shih-wei.Wei/DTCVisitor/rgtest_Jul1/ptmp" export fixcrtm="/scratch1/NCEPDEV/da/Michael.Lueken/CRTM_REL-2.2.3/crtm_v2.2.3/fix_update" - export casesdir="/scratch1/NCEPDEV/da/Michael.Lueken/noscrub/CASES" - export ndate=$NDATE + #export casesdir="/scratch1/NCEPDEV/da/Michael.Lueken/noscrub/CASES" + export casesdir="/scratch1/BMC/gsd-fv3-dev/Shih-wei.Wei/DTCVisitor/casedir" + export ndate=${NDATE:-/scratch2/NCEPDEV/nwprod/NCEPLIBS/utils/prod_util.v1.1.0/exec/ndate} export check_resource="no" - export accnt="da-cpu" + #export accnt="da-cpu" + export accnt="gsd-fv3-dev" # On Hera, there are no scrubbers to remove old contents from stmp* directories. # After completion of regression tests, will remove the regression test subdirecories @@ -232,6 +239,7 @@ export rtma_adate="2020022420" export hwrf_nmm_adate="2012102812" export fv3_netcdf_adate="2017030100" export global_C96_fv3aero_adate="2019062200" +export global_C96_fv3aerorad_adate="2019062200" # Paths for canned case data. export global_T62_obs="$casesdir/global/sigmap/$global_T62_adate" @@ -268,6 +276,8 @@ export fv3_netcdf_obs="$casesdir/regional/fv3_netcdf/$fv3_netcdf_adate" export fv3_netcdf_ges="$casesdir/regional/fv3_netcdf/$fv3_netcdf_adate" export global_C96_fv3aero_obs="$casesdir/global/fv3/$global_C96_fv3aero_adate" export global_C96_fv3aero_ges="$casesdir/global/fv3/$global_C96_fv3aero_adate" +export global_C96_fv3aerorad_obs="$casesdir/global/fv3/$global_C96_fv3aerorad_adate" +export global_C96_fv3aerorad_ges="$casesdir/global/fv3/$global_C96_fv3aerorad_adate" # Define type of GPSRO data to be assimilated (refractivity or bending angle) export gps_dtype="gps_bnd" @@ -276,6 +286,7 @@ export gps_dtype="gps_bnd" export regression_vfydir="$noscrub/regression" # Define debug variable - If you want to run the debug tests, set this variable to .true. Default is .false. +#export debug=".true." export debug=".false." # Define parameters for global_T62_3d4dvar and global_T62_4dvar diff --git a/src/gsi/read_files.f90 b/src/gsi/read_files.f90 index 5722ede1ad..1595800c28 100644 --- a/src/gsi/read_files.f90 +++ b/src/gsi/read_files.f90 @@ -153,6 +153,7 @@ subroutine read_files(mype) nfldsig=0 nfldsfc=0 nfldnst=0 + nfldaer=0 iamana=0 ! Check for non-zero length atm, sfc, aer, and nst files on single task @@ -212,6 +213,24 @@ subroutine read_files(mype) allocate(time_nst(nfldnst,2)) end if + if(lread_ext_aerosol) then +! Check for aer files with non-zero length + do i=0,max_file-1 + write(filename,'(''aerf'',i2.2)')i + call gsi_inquire(lenbytes,fexist,filename,mype) + if(fexist .and. lenbytes>0) then + nfldaer=nfldaer+1 + irec(nfldaer,4) = i + end if + enddo + if(nfldaer==0) then + write(6,*)'READ_FILES: ***ERROR*** NO aer fields; aborting' + call stop2(170) + end if + + allocate(time_aer(nfldaer,2)) + end if + ! Let a single task query the guess files. ! Convert analysis time to minutes relative to fixed date @@ -434,6 +453,7 @@ subroutine read_files(mype) ! for external aerosol files only ! Check for consistency of times from aer guess files. if ( lread_ext_aerosol ) then + write(6,*) 'READ_FILES: nfldaer ', nfldaer iwan=0 do i=1,nfldaer write(filename,'(''aerf'',i2.2)')irec(i,4) @@ -468,7 +488,7 @@ subroutine read_files(mype) idate5(3)=idateg(3); idate5(4)=idateg(1); idate5(5)=0 call w3fs21(idate5,nmings) nming2=nmings+60*hourg - write(6,*)'READ_FILES: aer guess file, hourg, idateg, nming2 ',hourg,idateg,nming2 + write(6,*)'READ_FILES: aer guess file',filename,hourg,idateg,nming2 t4dv=real((nming2-iwinbgn),r_kind)*r60inv if (l4dvar.or.l4densvar) then if (t4dvwinlen) cycle