load 'platforms.input' load 'nemscommon.input' ######################################################################## # Common prep step at the top of all fv3 tests: embed bash fv3_prep(RUNDIR,modules,CNTL) [[[ rm -rf "$RUNDIR" mkdir -p "$RUNDIR" "$CNTL" cd @[RUNDIR] set +e source @[plat%SRCnems]/conf/module-setup.sh.inc module purge module use $( dirname $modules ) module load $( basename $modules ) @[plat%execution_time_modules] mkdir RESTART INPUT export MPI_TYPE_DEPTH=20 export OMP_STACKSIZE=512M export ESMF_RUNTIME_COMPLIANCECHECK=OFF:depth=4 # Set the stack limit as high as we can. if [[ $( ulimit -s ) != unlimited ]] ; then for try_limit in 20000 18000 12000 9000 6000 3000 1500 1000 800 ; do if [[ ! ( $( ulimit -s ) -gt $(( try_limit * 1000 )) ) ]] ; then ulimit -s $(( try_limit * 1000 )) else break fi done fi ulimit -a ]]] # Function that uses compile.sh to build. Note the defaults are no # make options and no build name. No build name creates fv3.exe and # modules.fv3. embed bash compile.sh(MAKE_OPTS=' ',BUILD_NR='',fv3,modules,md5) [[[ cd @[plat%HOMEnems]/tests/ # Run the compile.sh. Convert wcoss.cray to wcoss_cray to # make the FV3 happy. rm -f @[fv3] @[modules] @[plat%execution_time_modules] if ( which aprun ) && [[ @[plat%PLATFORM_NAME] == wcoss.cray ]] ; then aprun -n 1 -j 1 -N 1 -d 24 \ ./compile.sh "@[plat%HOMEnems]/FV3" \ $( echo @[plat%MACHINE_ID] | sed 's,\.,_,g' ) \ @[MAKE_OPTS] @[BUILD_NR] elif [[ @[plat%PLATFORM_NAME] == hera* || @[plat%PLATFORM_NAME] == cheyenne* || @[plat%PLATFORM_NAME] == gaea* || @[plat%PLATFORM_NAME] == *jet* ]] ; then # Don't substitute the . with a _ on Cheyenne echo "DON'T SUBSTITUTE _ for . on @[plat%PLATFORM_NAME]" ./compile.sh "@[plat%HOMEnems]/FV3" \ @[plat%MACHINE_ID] \ @[MAKE_OPTS] @[BUILD_NR] else ./compile.sh "@[plat%HOMEnems]/FV3" \ $( echo @[plat%MACHINE_ID] | sed 's,\.,_,g' ) \ @[MAKE_OPTS] @[BUILD_NR] fi mkdir -p "@[plat%EXECrt]" "@[plat%INCrt]" cp -fp ./fv3.exe @[fv3] cp -fp ./modules.fv3 @[modules] md5sum ./fv3.exe > @[md5] ]]] ######################################################################## # Builds for the fv3. Presently there is only one build, but with two # different build systems. Results should be identical. build fv3.exe { use plat # Note: # plat%EXECrt = temporary directory for executables and md5 sums # plat%INCrt = temporary directory for modulefiles target="@[plat%EXECrt]/fv3.exe" # NEMS.x installation location modules.nems="@[plat%INCrt]/modules.fv3" # modulefile for this NEMS.x md5sum="@[target].md5" # MD5SUM for this NEMS.x # build: script to build the NEMS.x. For now, this is an embedded # bash script. build=compile.sh(fv3="@[target]",modules="@[modules.nems]",md5="@[md5sum]") } build fv3_ccpp_control.exe { # This block builds the FV3 with CCPP in static mode for the control setup. # It is otherwise identical to the fv3.exe block. use plat # Note: # plat%EXECrt = temporary directory for executables and md5 sums # plat%INCrt = temporary directory for modulefiles target="@[plat%EXECrt]/fv3_ccpp_control.exe" # NEMS.x installation location modules.nems="@[plat%INCrt]/modules.fv3_ccpp" # modulefile for this NEMS.x md5sum="@[target].md5" # MD5SUM for this NEMS.x # build: script to build the NEMS.x. For now, this is an embedded # bash script. build=compile.sh(fv3="@[target]",modules="@[modules.nems]",md5="@[md5sum]", MAKE_OPTS="\'CCPP=Y STATIC=Y SUITES=FV3_GFS_2017\'") } build fv3_32bit.exe { # This block builds the FV3 in 32 bit mode. It is otherwise # identical to the fv3.exe block. use plat # Note: # plat%EXECrt = temporary directory for executables and md5 sums # plat%INCrt = temporary directory for modulefiles target="@[plat%EXECrt]/fv3_32bit.exe" # NEMS.x installation location modules.nems="@[plat%INCrt]/modules.fv3_32bit" # modulefile for this NEMS.x md5sum="@[target].md5" # MD5SUM for this NEMS.x # build: script to build the NEMS.x. For now, this is an embedded # bash script. build=compile.sh(fv3="@[target]",modules="@[modules.nems]",md5="@[md5sum]", MAKE_OPTS='32BIT=Y') } build fv3_32bit_debug.exe { # This block builds the FV3 in 32 bit debug mode. It is otherwise # identical to the fv3.exe block. use plat # Note: # plat%EXECrt = temporary directory for executables and md5 sums # plat%INCrt = temporary directory for modulefiles target="@[plat%EXECrt]/fv3_32bit_debug.exe" # NEMS.x installation location modules.nems="@[plat%INCrt]/modules.fv3_32bit_debug" # modulefile for this NEMS.x md5sum="@[target].md5" # MD5SUM for this NEMS.x # build: script to build the NEMS.x. For now, this is an embedded # bash script. build=compile.sh(fv3="@[target]",modules="@[modules.nems]",md5="@[md5sum]", MAKE_OPTS="\'32BIT=Y DEBUG=Y\'") } build fv3_appbuilder.exe { # This block is similar to the fv3.exe block, but uses the # NEMSAppBuilder. We do this for one compset, just to make sure # the NEMSAppBuilder does not break. use plat target="@[plat%EXECrt]/fv3_appbuilder.exe" modules.nems="@[plat%INCrt]/modules_appbuilder.fv3" md5sum="@[target].md5" # The NEMSAppBuilder is another embedded bash script in nemscommon.input build=NEMSAppBuilder(NEMS.x="@[target]",modules.nems="@[modules.nems]", OPTS="app=standaloneFV3",md5sum="@[md5sum]") } build fv3_NAM_phys.exe { # This block builds the FV3 with NAM physics. It is otherwise # identical to the fv3.exe block. use plat # Note: # plat%EXECrt = temporary directory for executables and md5 sums # plat%INCrt = temporary directory for modulefiles target="@[plat%EXECrt]/fv3_NAM_phys.exe" # NEMS.x installation location modules.nems="@[plat%INCrt]/modules.fv3_nam" # modulefile for this NEMS.x md5sum="@[target].md5" # MD5SUM for this NEMS.x # build: script to build the NEMS.x. For now, this is an embedded # bash script. build=compile.sh(fv3="@[target]",modules="@[modules.nems]",md5="@[md5sum]", MAKE_OPTS='NAM_phys=Y') } build fv3_ww3.exe { # This block builds the FV3 32 bit coupled with WW3 use plat target="@[plat%EXECrt]/fv3_ww3.exe" modules.nems="@[plat%INCrt]/modules_fv3_ww3" md5sum="@[target].md5" # The NEMSAppBuilder is another embedded bash script in nemscommon.input build=NEMSAppBuilder(NEMS.x="@[target]",modules.nems="@[modules.nems]", OPTS="app=coupledFV3_WW3",md5sum="@[md5sum]") } ######################################################################## # Common variables used by many tests and input files: fv3_defaults = { WARM_START='.F.' NGGPS_IC='.T.' EXTERNAL_IC='.T.' MAKE_NH='.T.' MOUNTAIN='.F.' SATMEDMF='.F.' ISATMEDMF='0' HYBEDMF='.T.' IMFSHALCNV='2' IMFDEEPCNV='2' LHEATSTRG='.F.' LGFDLMPRAD='.F.' EFFR_IN='.F.' LDIAG_UGWP='.F.' DO_UGWP='.F.' DO_TOFD='.F.' LSM='1' NA_INIT='1' READ_INCREMENT='.F.' FDIAG='0,1,2,3,4,5,6,7,8,9,10,11,12,15,18,21,24' NSTF_NAME='2,1,1,0,5' FNALBC="'global_snowfree_albedo.bosu.t126.384.190.rg.grb'," FNVETC="'global_vegtype.igbp.t126.384.190.rg.grb'," FNSOTC="'global_soiltype.statsgo.t126.384.190.rg.grb'," FNSMCC="'global_soilmgldas.t126.384.190.grb'," FNABSC="'global_mxsnoalb.uariz.t126.384.190.rg.grb'," LANDICE='.T.' ENS_NUM='1' SYEAR='2016' SMONTH='10' SDAY='03' SHOUR='00' DT_ATMOS='1800' DAYS='1' FHMAX='24' NPX='97' NPY='97' NPZ='64' NPZP='65' NFHOUT='3' NFHMAX_HF='12' NFHOUT_HF='1' QUILTING='.true.' OUTPUT_HISTORY='.true.' WRITE_DOPOST='.false.' WRITE_GROUP=1 NUM_FILES=2 FILENAME_BASE="'dyn' 'phy'" OUTPUT_GRID="'cubed_sphere_grid'" OUTPUT_FILE="'netcdf'" WRITE_NEMSIOFLIP='.false.' WRITE_FSYNCFLAG ='.false.' IMO='384' JMO='190' H2O_PHYS='.F.' DO_SPPT='.F.' DO_SHUM='.F.' DO_SKEB='.F.' DO_SFCPERTS='.F.' SPPT='-999.0' SHUM='-999.0' SKEB='-999.0' IAU_INC_FILES="''" IAU_DRYMASSFIXER='.false.' CPLFLX='.F.' CPLWAV='.F.' CPL='.false.' } ######################################################################## test fv3_control: fv3.exe { use plat use plat%default_resources use fv3_defaults TEST_DESCR="Compare FV3 control results with previous trunk version" CNTL_NAME='fv3_control' COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area FV3_input_data="@[plat%INPUTS]/FV3_input_data" # The build variable is the fv3.exe or fv3_appbuild.fv3, which # provides the path to the build target, md5 sum, and modulefile. build=fv3.exe prep=fv3_prep( RUNDIR="@[RUNDIR]",modules="@[fv3.exe%modules.nems]", CNTL="@[CNTL]") # Specify input files. filters input { # WORK FILE <=filter= SOURCE FILE 'input.nml' <=atparse= "@[PARMnems]/input.nml.IN" 'model_configure' <=atparse= "@[PARMnems]/model_configure.IN" 'aerosol.dat' <=copyfrom= "@[FV3_input_data]/INPUT" 'co2historicaldata_201*.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'sfc_emissivity_idx.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'solarconstant_noaa_an.txt' <=copyfrom= "@[FV3_input_data]/INPUT" '*grb' <=copyfrom= "@[FV3_input_data]" '*_table' <=copyfrom= "@[FV3_input_data]" '*configure' <=copyfrom= "@[FV3_input_data]" 'INPUT' <=copy= "@[FV3_input_data]/INPUT" 'global_o3prdlos.f77' <=copy= "@[FV3_input_data]/INPUT/global_o3prdlos.f77" } # Specify output files: criteria output { # WORKFILE .comparison. TARGET 'atmos_4xdaily.tile1.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile2.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile3.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile4.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile5.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile6.nc' .bitcmp. "@[CNTL]" 'phyf000.tile1.nc' .bitcmp. "@[CNTL]" 'phyf000.tile2.nc' .bitcmp. "@[CNTL]" 'phyf000.tile3.nc' .bitcmp. "@[CNTL]" 'phyf000.tile4.nc' .bitcmp. "@[CNTL]" 'phyf000.tile5.nc' .bitcmp. "@[CNTL]" 'phyf000.tile6.nc' .bitcmp. "@[CNTL]" 'phyf024.tile1.nc' .bitcmp. "@[CNTL]" 'phyf024.tile2.nc' .bitcmp. "@[CNTL]" 'phyf024.tile3.nc' .bitcmp. "@[CNTL]" 'phyf024.tile4.nc' .bitcmp. "@[CNTL]" 'phyf024.tile5.nc' .bitcmp. "@[CNTL]" 'phyf024.tile6.nc' .bitcmp. "@[CNTL]" 'dynf000.tile1.nc' .bitcmp. "@[CNTL]" 'dynf000.tile2.nc' .bitcmp. "@[CNTL]" 'dynf000.tile3.nc' .bitcmp. "@[CNTL]" 'dynf000.tile4.nc' .bitcmp. "@[CNTL]" 'dynf000.tile5.nc' .bitcmp. "@[CNTL]" 'dynf000.tile6.nc' .bitcmp. "@[CNTL]" 'dynf024.tile1.nc' .bitcmp. "@[CNTL]" 'dynf024.tile2.nc' .bitcmp. "@[CNTL]" 'dynf024.tile3.nc' .bitcmp. "@[CNTL]" 'dynf024.tile4.nc' .bitcmp. "@[CNTL]" 'dynf024.tile5.nc' .bitcmp. "@[CNTL]" 'dynf024.tile6.nc' .bitcmp. "@[CNTL]" 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" # Executable validation. This makes an MD5 sum of the fv3.exe # for comparison against the MD5 sum made in the build job. # This is to ensure the executable did not change during the # test suite. "@[build%target]" .md5cmp. "@[build%md5sum]" } spawn execute { # Run the {"@[build%target]", ranks="@[TASKS]" } } } ######################################################################## test fv3_appbuilder: fv3_appbuilder.exe { use fv3_control use plat%default_threaded_resources build=fv3_appbuilder.exe TEST_DESCR="Compare FV3 with the NEMSAppBuilder against the previous trunk version" CNTL_NAME='fv3_control' prep=fv3_prep( RUNDIR="@[RUNDIR]",modules="@[fv3_appbuilder.exe%modules.nems]", CNTL="@[CNTL]") spawn execute { {"@[build%target]", ranks="@[TASKS]", threads="@[THRD]" } } } ######################################################################## test fv3_2threads: fv3.exe { use fv3_control use plat%default_threaded_resources TEST_DESCR="Compare FV3 2 threads results with previous trunk version" spawn execute { {"@[build%target]", ranks="@[TASKS]", threads="@[THRD]" } } } ######################################################################## test fv3_decomp: fv3.exe { use fv3_control TEST_DESCR="Compare FV3 decomp results with previous trunk version" INPES='6' JNPES='4' } ######################################################################## test fv3_ccpp_control: fv3_ccpp_control.exe { use fv3_control TEST_DESCR="Compare FV3 CCPP control results with previous trunk version" # Use CCPP PROD control directory CNTL_NAME='fv3_control_ccpp' COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area FV3_input_data="@[plat%INPUTS]/FV3_input_data" # Set additional namelist variables for CCPP OZ_PHYS_OLD='.T.' OZ_PHYS_NEW='.F.' CCPP_SUITE='FV3_GFS_2017' # The build variable is the fv3.exe or fv3_appbuild.fv3, which # provides the path to the build target, md5 sum, and modulefile. build=fv3_ccpp_control.exe prep=fv3_prep( RUNDIR="@[RUNDIR]",modules="@[fv3_ccpp_control.exe%modules.nems]", CNTL="@[CNTL]") # Specify input files. filters input { # WORK FILE <=filter= SOURCE FILE 'input.nml' <=atparse= "@[PARMnems]/ccpp_control.nml.IN" 'model_configure' <=atparse= "@[PARMnems]/model_configure.IN" 'aerosol.dat' <=copyfrom= "@[FV3_input_data]/INPUT" 'co2historicaldata_201*.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'sfc_emissivity_idx.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'solarconstant_noaa_an.txt' <=copyfrom= "@[FV3_input_data]/INPUT" '*grb' <=copyfrom= "@[FV3_input_data]" '*_table' <=copyfrom= "@[FV3_input_data]" '*configure' <=copyfrom= "@[FV3_input_data]" 'INPUT' <=copy= "@[FV3_input_data]/INPUT" 'global_o3prdlos.f77' <=copy= "@[FV3_input_data]/INPUT/global_o3prdlos.f77" } # Specify output files: criteria output { # WORKFILE .comparison. TARGET 'atmos_4xdaily.tile1.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile2.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile3.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile4.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile5.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile6.nc' .bitcmp. "@[CNTL]" 'phyf000.tile1.nc' .bitcmp. "@[CNTL]" 'phyf000.tile2.nc' .bitcmp. "@[CNTL]" 'phyf000.tile3.nc' .bitcmp. "@[CNTL]" 'phyf000.tile4.nc' .bitcmp. "@[CNTL]" 'phyf000.tile5.nc' .bitcmp. "@[CNTL]" 'phyf000.tile6.nc' .bitcmp. "@[CNTL]" 'phyf024.tile1.nc' .bitcmp. "@[CNTL]" 'phyf024.tile2.nc' .bitcmp. "@[CNTL]" 'phyf024.tile3.nc' .bitcmp. "@[CNTL]" 'phyf024.tile4.nc' .bitcmp. "@[CNTL]" 'phyf024.tile5.nc' .bitcmp. "@[CNTL]" 'phyf024.tile6.nc' .bitcmp. "@[CNTL]" 'dynf000.tile1.nc' .bitcmp. "@[CNTL]" 'dynf000.tile2.nc' .bitcmp. "@[CNTL]" 'dynf000.tile3.nc' .bitcmp. "@[CNTL]" 'dynf000.tile4.nc' .bitcmp. "@[CNTL]" 'dynf000.tile5.nc' .bitcmp. "@[CNTL]" 'dynf000.tile6.nc' .bitcmp. "@[CNTL]" 'dynf024.tile1.nc' .bitcmp. "@[CNTL]" 'dynf024.tile2.nc' .bitcmp. "@[CNTL]" 'dynf024.tile3.nc' .bitcmp. "@[CNTL]" 'dynf024.tile4.nc' .bitcmp. "@[CNTL]" 'dynf024.tile5.nc' .bitcmp. "@[CNTL]" 'dynf024.tile6.nc' .bitcmp. "@[CNTL]" 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" # Executable validation. This makes an MD5 sum of the fv3.exe # for comparison against the MD5 sum made in the build job. # This is to ensure the executable did not change during the # test suite. "@[build%target]" .md5cmp. "@[build%md5sum]" } } ######################################################################## test fv3_restart: fv3.exe { use fv3_control TEST_DESCR="Compare FV3 restart results with previous trunk version" CNTL_NAME='fv3_restart' WARM_START='.T.' NGGPS_IC='.F.' EXTERNAL_IC='.F.' MAKE_NH='.F.' MOUNTAIN='.T.' NA_INIT='0' FHMAX='48' FDIAG='3' NSTF_NAME='2,0,1,0,5' CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area # Specify input files. filters input { # WORK FILE <=filter= SOURCE FILE 'input.nml' <=atparse= "@[PARMnems]/input.nml.IN" 'model_configure' <=atparse= "@[PARMnems]/model_configure.IN" 'aerosol.dat' <=copyfrom= "@[FV3_input_data]/INPUT" 'co2historicaldata_201*.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'sfc_emissivity_idx.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'solarconstant_noaa_an.txt' <=copyfrom= "@[FV3_input_data]/INPUT" '*grb' <=copyfrom= "@[FV3_input_data]" '*_table' <=copyfrom= "@[FV3_input_data]" '*configure' <=copyfrom= "@[FV3_input_data]" 'INPUT' <=copy= "@[FV3_input_data]/RESTART" 'global_o3prdlos.f77' <=copy= "@[FV3_input_data]/INPUT/global_o3prdlos.f77" } # Specify output files: criteria output { # WORKFILE .comparison. TARGET 'atmos_4xdaily.tile1.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile2.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile3.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile4.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile5.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile6.nc' .bitcmp. "@[CNTL]" 'phyf027.tile1.nc' .bitcmp. "@[CNTL]" 'phyf027.tile2.nc' .bitcmp. "@[CNTL]" 'phyf027.tile3.nc' .bitcmp. "@[CNTL]" 'phyf027.tile4.nc' .bitcmp. "@[CNTL]" 'phyf027.tile5.nc' .bitcmp. "@[CNTL]" 'phyf027.tile6.nc' .bitcmp. "@[CNTL]" 'phyf048.tile1.nc' .bitcmp. "@[CNTL]" 'phyf048.tile2.nc' .bitcmp. "@[CNTL]" 'phyf048.tile3.nc' .bitcmp. "@[CNTL]" 'phyf048.tile4.nc' .bitcmp. "@[CNTL]" 'phyf048.tile5.nc' .bitcmp. "@[CNTL]" 'phyf048.tile6.nc' .bitcmp. "@[CNTL]" 'dynf027.tile1.nc' .bitcmp. "@[CNTL]" 'dynf027.tile2.nc' .bitcmp. "@[CNTL]" 'dynf027.tile3.nc' .bitcmp. "@[CNTL]" 'dynf027.tile4.nc' .bitcmp. "@[CNTL]" 'dynf027.tile5.nc' .bitcmp. "@[CNTL]" 'dynf027.tile6.nc' .bitcmp. "@[CNTL]" 'dynf048.tile1.nc' .bitcmp. "@[CNTL]" 'dynf048.tile2.nc' .bitcmp. "@[CNTL]" 'dynf048.tile3.nc' .bitcmp. "@[CNTL]" 'dynf048.tile4.nc' .bitcmp. "@[CNTL]" 'dynf048.tile5.nc' .bitcmp. "@[CNTL]" 'dynf048.tile6.nc' .bitcmp. "@[CNTL]" 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" # Executable validation. This makes an MD5 sum of the fv3.exe # for comparison against the MD5 sum made in the build job. # This is to ensure the executable did not change during the # test suite. "@[build%target]" .md5cmp. "@[fv3.exe%md5sum]" } } ######################################################################## test fv3_read_inc: fv3.exe { use fv3_control TEST_DESCR="Compare FV3 read_inc results with previous trunk version" CNTL_NAME='fv3_read_inc' WARM_START='.T.' READ_INCREMENT='.T.' NGGPS_IC='.F.' EXTERNAL_IC='.F.' MAKE_NH='.F.' MOUNTAIN='.T.' NA_INIT='0' FHMAX='48' FDIAG='3' NSTF_NAME='2,0,1,0,5' CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area # Specify input files. filters input { # WORK FILE <=filter= SOURCE FILE 'input.nml' <=atparse= "@[PARMnems]/input.nml.IN" 'model_configure' <=atparse= "@[PARMnems]/model_configure.IN" 'aerosol.dat' <=copyfrom= "@[FV3_input_data]/INPUT" 'co2historicaldata_201*.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'sfc_emissivity_idx.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'solarconstant_noaa_an.txt' <=copyfrom= "@[FV3_input_data]/INPUT" '*grb' <=copyfrom= "@[FV3_input_data]" '*_table' <=copyfrom= "@[FV3_input_data]" '*configure' <=copyfrom= "@[FV3_input_data]" 'INPUT' <=copy= "@[FV3_input_data]/RESTART" 'global_o3prdlos.f77' <=copy= "@[FV3_input_data]/INPUT/global_o3prdlos.f77" } # Specify output files: criteria output { # WORKFILE .comparison. TARGET 'atmos_4xdaily.tile1.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile2.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile3.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile4.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile5.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile6.nc' .bitcmp. "@[CNTL]" 'phyf027.tile1.nc' .bitcmp. "@[CNTL]" 'phyf027.tile2.nc' .bitcmp. "@[CNTL]" 'phyf027.tile3.nc' .bitcmp. "@[CNTL]" 'phyf027.tile4.nc' .bitcmp. "@[CNTL]" 'phyf027.tile5.nc' .bitcmp. "@[CNTL]" 'phyf027.tile6.nc' .bitcmp. "@[CNTL]" 'phyf048.tile1.nc' .bitcmp. "@[CNTL]" 'phyf048.tile2.nc' .bitcmp. "@[CNTL]" 'phyf048.tile3.nc' .bitcmp. "@[CNTL]" 'phyf048.tile4.nc' .bitcmp. "@[CNTL]" 'phyf048.tile5.nc' .bitcmp. "@[CNTL]" 'phyf048.tile6.nc' .bitcmp. "@[CNTL]" 'dynf027.tile1.nc' .bitcmp. "@[CNTL]" 'dynf027.tile2.nc' .bitcmp. "@[CNTL]" 'dynf027.tile3.nc' .bitcmp. "@[CNTL]" 'dynf027.tile4.nc' .bitcmp. "@[CNTL]" 'dynf027.tile5.nc' .bitcmp. "@[CNTL]" 'dynf027.tile6.nc' .bitcmp. "@[CNTL]" 'dynf048.tile1.nc' .bitcmp. "@[CNTL]" 'dynf048.tile2.nc' .bitcmp. "@[CNTL]" 'dynf048.tile3.nc' .bitcmp. "@[CNTL]" 'dynf048.tile4.nc' .bitcmp. "@[CNTL]" 'dynf048.tile5.nc' .bitcmp. "@[CNTL]" 'dynf048.tile6.nc' .bitcmp. "@[CNTL]" 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" # Executable validation. This makes an MD5 sum of the fv3.exe # for comparison against the MD5 sum made in the build job. # This is to ensure the executable did not change during the # test suite. "@[build%target]" .md5cmp. "@[fv3.exe%md5sum]" } } ######################################################################## test fv3_thompson: fv3.exe { use plat use plat%default_resources use fv3_defaults TEST_DESCR="Compare FV3 GFDL mircrophysics results with previous trunk version" CNTL_NAME='fv3_thompson' DT_ATMOS='1200' LRADAR='.T.' COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area FV3_input_data="@[plat%INPUTS]/FV3_input_data" # The build variable is the fv3.exe or fv3_appbuild.fv3, which # provides the path to the build target, md5 sum, and modulefile. build=fv3.exe prep=fv3_prep( RUNDIR="@[RUNDIR]",modules="@[fv3.exe%modules.nems]", CNTL="@[CNTL]") # Specify input files. filters input { # WORK FILE <=filter= SOURCE FILE 'input.nml' <=atparse= "@[PARMnems]/thompson.nml.IN" 'model_configure' <=atparse= "@[PARMnems]/model_configure.IN" 'aerosol.dat' <=copyfrom= "@[FV3_input_data]/INPUT" 'co2historicaldata_201*.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'sfc_emissivity_idx.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'solarconstant_noaa_an.txt' <=copyfrom= "@[FV3_input_data]/INPUT" '*grb' <=copyfrom= "@[FV3_input_data]" '*_table' <=copyfrom= "@[FV3_input_data]" 'qr_acr_q*' <=copyfrom= "@[FV3_input_data]" 'diag_table' <=copy= "@[FV3_input_data]/diag_table_thompson" 'field_table' <=copy= "@[FV3_input_data]/field_table_thompson" '*configure' <=copyfrom= "@[FV3_input_data]" 'INPUT' <=copy= "@[FV3_input_data]/INPUT" 'global_o3prdlos.f77' <=copy= "@[FV3_input_data]/INPUT/global_o3prdlos.f77" } # Specify output files: criteria output { # WORKFILE .comparison. TARGET 'atmos_4xdaily.tile1.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile2.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile3.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile4.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile5.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile6.nc' .bitcmp. "@[CNTL]" 'phyf000.tile1.nc' .bitcmp. "@[CNTL]" 'phyf000.tile2.nc' .bitcmp. "@[CNTL]" 'phyf000.tile3.nc' .bitcmp. "@[CNTL]" 'phyf000.tile4.nc' .bitcmp. "@[CNTL]" 'phyf000.tile5.nc' .bitcmp. "@[CNTL]" 'phyf000.tile6.nc' .bitcmp. "@[CNTL]" 'phyf024.tile1.nc' .bitcmp. "@[CNTL]" 'phyf024.tile2.nc' .bitcmp. "@[CNTL]" 'phyf024.tile3.nc' .bitcmp. "@[CNTL]" 'phyf024.tile4.nc' .bitcmp. "@[CNTL]" 'phyf024.tile5.nc' .bitcmp. "@[CNTL]" 'phyf024.tile6.nc' .bitcmp. "@[CNTL]" 'dynf000.tile1.nc' .bitcmp. "@[CNTL]" 'dynf000.tile2.nc' .bitcmp. "@[CNTL]" 'dynf000.tile3.nc' .bitcmp. "@[CNTL]" 'dynf000.tile4.nc' .bitcmp. "@[CNTL]" 'dynf000.tile5.nc' .bitcmp. "@[CNTL]" 'dynf000.tile6.nc' .bitcmp. "@[CNTL]" 'dynf024.tile1.nc' .bitcmp. "@[CNTL]" 'dynf024.tile2.nc' .bitcmp. "@[CNTL]" 'dynf024.tile3.nc' .bitcmp. "@[CNTL]" 'dynf024.tile4.nc' .bitcmp. "@[CNTL]" 'dynf024.tile5.nc' .bitcmp. "@[CNTL]" 'dynf024.tile6.nc' .bitcmp. "@[CNTL]" 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" # Executable validation. This makes an MD5 sum of the fv3.exe # for comparison against the MD5 sum made in the build job. # This is to ensure the executable did not change during the # test suite. "@[build%target]" .md5cmp. "@[fv3.exe%md5sum]" } spawn execute { # Run the {"@[build%target]", ranks="@[TASKS]" } } } ######################################################################## test fv3_wsm6: fv3.exe { use plat use plat%default_resources use fv3_defaults TEST_DESCR="Compare FV3 GFDL mircrophysics results with previous trunk version" CNTL_NAME='fv3_wsm6' DT_ATMOS='1200' LRADAR='.T.' COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area FV3_input_data="@[plat%INPUTS]/FV3_input_data" # The build variable is the fv3.exe or fv3_appbuild.fv3, which # provides the path to the build target, md5 sum, and modulefile. build=fv3.exe prep=fv3_prep( RUNDIR="@[RUNDIR]",modules="@[fv3.exe%modules.nems]", CNTL="@[CNTL]") # Specify input files. filters input { # WORK FILE <=filter= SOURCE FILE 'input.nml' <=atparse= "@[PARMnems]/wsm6.nml.IN" 'model_configure' <=atparse= "@[PARMnems]/model_configure.IN" 'aerosol.dat' <=copyfrom= "@[FV3_input_data]/INPUT" 'co2historicaldata_201*.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'sfc_emissivity_idx.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'solarconstant_noaa_an.txt' <=copyfrom= "@[FV3_input_data]/INPUT" '*grb' <=copyfrom= "@[FV3_input_data]" '*_table' <=copyfrom= "@[FV3_input_data]" 'diag_table' <=copy= "@[FV3_input_data]/diag_table_wsm6" 'field_table' <=copy= "@[FV3_input_data]/field_table_wsm6" '*configure' <=copyfrom= "@[FV3_input_data]" 'INPUT' <=copy= "@[FV3_input_data]/INPUT" 'global_o3prdlos.f77' <=copy= "@[FV3_input_data]/INPUT/global_o3prdlos.f77" } # Specify output files: criteria output { # WORKFILE .comparison. TARGET 'atmos_4xdaily.tile1.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile2.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile3.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile4.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile5.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile6.nc' .bitcmp. "@[CNTL]" 'phyf000.tile1.nc' .bitcmp. "@[CNTL]" 'phyf000.tile2.nc' .bitcmp. "@[CNTL]" 'phyf000.tile3.nc' .bitcmp. "@[CNTL]" 'phyf000.tile4.nc' .bitcmp. "@[CNTL]" 'phyf000.tile5.nc' .bitcmp. "@[CNTL]" 'phyf000.tile6.nc' .bitcmp. "@[CNTL]" 'phyf024.tile1.nc' .bitcmp. "@[CNTL]" 'phyf024.tile2.nc' .bitcmp. "@[CNTL]" 'phyf024.tile3.nc' .bitcmp. "@[CNTL]" 'phyf024.tile4.nc' .bitcmp. "@[CNTL]" 'phyf024.tile5.nc' .bitcmp. "@[CNTL]" 'phyf024.tile6.nc' .bitcmp. "@[CNTL]" 'dynf000.tile1.nc' .bitcmp. "@[CNTL]" 'dynf000.tile2.nc' .bitcmp. "@[CNTL]" 'dynf000.tile3.nc' .bitcmp. "@[CNTL]" 'dynf000.tile4.nc' .bitcmp. "@[CNTL]" 'dynf000.tile5.nc' .bitcmp. "@[CNTL]" 'dynf000.tile6.nc' .bitcmp. "@[CNTL]" 'dynf024.tile1.nc' .bitcmp. "@[CNTL]" 'dynf024.tile2.nc' .bitcmp. "@[CNTL]" 'dynf024.tile3.nc' .bitcmp. "@[CNTL]" 'dynf024.tile4.nc' .bitcmp. "@[CNTL]" 'dynf024.tile5.nc' .bitcmp. "@[CNTL]" 'dynf024.tile6.nc' .bitcmp. "@[CNTL]" 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" # Executable validation. This makes an MD5 sum of the fv3.exe # for comparison against the MD5 sum made in the build job. # This is to ensure the executable did not change during the # test suite. "@[build%target]" .md5cmp. "@[fv3.exe%md5sum]" } spawn execute { # Run the {"@[build%target]", ranks="@[TASKS]" } } } ######################################################################## test fv3_gfdlmp: fv3.exe { use plat use plat%default_resources use fv3_defaults TEST_DESCR="Compare FV3 GFDL mircrophysics results with previous trunk version" CNTL_NAME='fv3_gfdlmp' DT_ATMOS='1200' OUTPUT_GRID="'gaussian_grid'" OUTPUT_FILE="'nemsio'" WRITE_NEMSIOFLIP='.true.' WRITE_FSYNCFLAG='.true.' COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area FV3_input_data="@[plat%INPUTS]/FV3_input_data" # The build variable is the fv3.exe or fv3_appbuild.fv3, which # provides the path to the build target, md5 sum, and modulefile. build=fv3.exe prep=fv3_prep( RUNDIR="@[RUNDIR]",modules="@[fv3.exe%modules.nems]", CNTL="@[CNTL]") # Specify input files. filters input { # WORK FILE <=filter= SOURCE FILE 'input.nml' <=atparse= "@[PARMnems]/gfdlmp.nml.IN" 'model_configure' <=atparse= "@[PARMnems]/model_configure.IN" 'aerosol.dat' <=copyfrom= "@[FV3_input_data]/INPUT" 'co2historicaldata_201*.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'sfc_emissivity_idx.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'solarconstant_noaa_an.txt' <=copyfrom= "@[FV3_input_data]/INPUT" '*grb' <=copyfrom= "@[FV3_input_data]" '*_table' <=copyfrom= "@[FV3_input_data]" 'diag_table' <=copy= "@[FV3_input_data]/diag_table_gfdlmp" 'field_table' <=copy= "@[FV3_input_data]/field_table_gfdlmp" '*configure' <=copyfrom= "@[FV3_input_data]" 'INPUT' <=copy= "@[FV3_input_data]/INPUT" 'global_o3prdlos.f77' <=copy= "@[FV3_input_data]/INPUT/global_o3prdlos.f77" } # Specify output files: criteria output { # WORKFILE .comparison. TARGET 'atmos_4xdaily.tile1.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile2.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile3.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile4.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile5.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile6.nc' .bitcmp. "@[CNTL]" 'phyf000.nemsio' .bitcmp. "@[CNTL]" 'phyf024.nemsio' .bitcmp. "@[CNTL]" 'dynf000.nemsio' .bitcmp. "@[CNTL]" 'dynf024.nemsio' .bitcmp. "@[CNTL]" 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" # Executable validation. This makes an MD5 sum of the fv3.exe # for comparison against the MD5 sum made in the build job. # This is to ensure the executable did not change during the # test suite. "@[build%target]" .md5cmp. "@[fv3.exe%md5sum]" } spawn execute { # Run the {"@[build%target]", ranks="@[TASKS]" } } } ######################################################################## test fv3_gfdlmprad: fv3_ww3.exe { use fv3_gfdlmp TEST_DESCR="Compare FV3 GFDL mircrophysics radiation change with WW3 results with previous trunk version" CNTL_NAME='fv3_gfdlmprad' LGFDLMPRAD='.true.' EFFR_IN='.true.' CPL='.true.' CPLWAV='.T.' WW3_input_data="@[plat%INPUTS]/WW3_input_data" TASKS="@[CPLTASKS]" nems_configure="blocked_atm_wav" atm_model='fv3' wav_model='ww3' coupling_interval_sec=3600.0 #coupling time step, want it to be multiple of 1800 and FV3 time step # The build variable is the fv3_ww3.exe, which # provides the path to the build target, md5 sum, and modulefile. build=fv3_ww3.exe prep=fv3_prep( RUNDIR="@[RUNDIR]",modules="@[fv3_ww3.exe%modules.nems]", CNTL="@[CNTL]") filters input { 'input.nml' <=atparse= "@[PARMnems]/gfdlmp.nml.IN" 'model_configure' <=atparse= "@[PARMnems]/model_configure.IN" 'aerosol.dat' <=copyfrom= "@[FV3_input_data]/INPUT" 'co2historicaldata_201*.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'sfc_emissivity_idx.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'solarconstant_noaa_an.txt' <=copyfrom= "@[FV3_input_data]/INPUT" '*grb' <=copyfrom= "@[FV3_input_data]" '*_table' <=copyfrom= "@[FV3_input_data]" 'diag_table' <=copy= "@[FV3_input_data]/diag_table_gfdlmp" 'field_table' <=copy= "@[FV3_input_data]/field_table_gfdlmp" 'INPUT' <=copy= "@[FV3_input_data]/INPUT" 'global_o3prdlos.f77' <=copy= "@[FV3_input_data]/INPUT/global_o3prdlos.f77" 'model_configure' <=atparse= "@[PARMnems]/model_configure.IN" 'nems.configure' <=atparse= "@[PARMnems]/nems.configure.@[nems_configure].IN" 'mod_def.*' <=copyfrom= "@[WW3_input_data]" 'ww3_multi.inp' <=copyfrom= "@[WW3_input_data]/@[SYEAR]@[SMONTH]@[SDAY]" } criteria output { 'atmos_4xdaily.tile1.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile2.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile3.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile4.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile5.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile6.nc' .bitcmp. "@[CNTL]" 'phyf000.nemsio' .bitcmp. "@[CNTL]" 'phyf024.nemsio' .bitcmp. "@[CNTL]" 'dynf000.nemsio' .bitcmp. "@[CNTL]" 'dynf024.nemsio' .bitcmp. "@[CNTL]" 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'out_grd.glo_30m' .bitcmp. "@[CNTL]" "@[build%target]" .md5cmp. "@[fv3_ww3.exe%md5sum]" } spawn execute { {"@[build%target]", ranks="@[TASKS]" } } } test fv3_gfdlmprad_gwd: fv3.exe { use fv3_gfdlmp TEST_DESCR="Compare FV3 GFDL radiation interaction option and gravity wve drag results with previous trunk version" CNTL_NAME='fv3_gfdlmprad_gwd' LGFDLMPRAD='.true.' EFFR_IN='.true.' DO_UGWP='.true.' DO_TOFD='.true.' } test fv3_gfdlmprad_noahmp: fv3.exe { use fv3_gfdlmp TEST_DESCR="Compare FV3 GFDL radiation interaction option and Noah MP results with previous trunk version" CNTL_NAME='fv3_gfdlmprad_noahmp' LGFDLMPRAD='.true.' EFFR_IN='.true.' LSM='2' LANDICE='.false.' } ######################################################################## test fv3_wrtGauss_nemsio: fv3.exe { use fv3_control TEST_DESCR="Compare FV3 Gaussian grid nemsio output results with previous trunk version" CNTL_NAME="fv3_wrtGauss_nemsio" OUTPUT_GRID="'gaussian_grid'" OUTPUT_FILE="'nemsio'" WRITE_NEMSIOFLIP='.true.' WRITE_FSYNCFLAG ='.true.' COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area # Specify output files: criteria output { # WORKFILE .comparison. TARGET 'atmos_4xdaily.tile1.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile2.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile3.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile4.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile5.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile6.nc' .bitcmp. "@[CNTL]" 'phyf000.nemsio' .bitcmp. "@[CNTL]" 'phyf024.nemsio' .bitcmp. "@[CNTL]" 'dynf000.nemsio' .bitcmp. "@[CNTL]" 'dynf024.nemsio' .bitcmp. "@[CNTL]" 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" # Executable validation. This makes an MD5 sum of the fv3.exe # for comparison against the MD5 sum made in the build job. # This is to ensure the executable did not change during the # test suite. "@[build%target]" .md5cmp. "@[fv3.exe%md5sum]" } } ######################################################################## test fv3_wrtGauss_netcdf: fv3.exe { use fv3_control TEST_DESCR="Compare FV3 Gaussian grid netcdf output results with previous trunk version" CNTL_NAME="fv3_wrtGauss_netcdf" OUTPUT_GRID="'gaussian_grid'" OUTPUT_FILE="'netcdf'" COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area # Specify output files: criteria output { # WORKFILE .comparison. TARGET 'atmos_4xdaily.tile1.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile2.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile3.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile4.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile5.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile6.nc' .bitcmp. "@[CNTL]" 'phyf000.nc' .bitcmp. "@[CNTL]" 'phyf024.nc' .bitcmp. "@[CNTL]" 'dynf000.nc' .bitcmp. "@[CNTL]" 'dynf024.nc' .bitcmp. "@[CNTL]" 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" # Executable validation. This makes an MD5 sum of the fv3.exe # for comparison against the MD5 sum made in the build job. # This is to ensure the executable did not change during the # test suite. "@[build%target]" .md5cmp. "@[fv3.exe%md5sum]" } } ######################################################################## test fv3_satmedmf: fv3.exe { use fv3_control TEST_DESCR="Compare FV3 control with satmedmf on Gaussian grid nemsio output results with previous trunk version" CNTL_NAME="fv3_satmedmf" SATMEDMF='.true.' HYBEDMF='.false.' OUTPUT_GRID="'gaussian_grid'" OUTPUT_FILE="'nemsio'" WRITE_NEMSIOFLIP='.true.' WRITE_FSYNCFLAG ='.true.' COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area FV3_input_data="@[plat%INPUTS]/FV3_input_data" # The build variable is the fv3.exe or fv3_appbuild.fv3, which # provides the path to the build target, md5 sum, and modulefile. build=fv3.exe prep=fv3_prep( RUNDIR="@[RUNDIR]",modules="@[fv3.exe%modules.nems]", CNTL="@[CNTL]") # Specify input files. filters input { # WORK FILE <=filter= SOURCE FILE 'input.nml' <=atparse= "@[PARMnems]/input.nml.IN" 'model_configure' <=atparse= "@[PARMnems]/model_configure.IN" 'aerosol.dat' <=copyfrom= "@[FV3_input_data]/INPUT" 'co2historicaldata_201*.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'sfc_emissivity_idx.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'solarconstant_noaa_an.txt' <=copyfrom= "@[FV3_input_data]/INPUT" '*grb' <=copyfrom= "@[FV3_input_data]" '*_table' <=copyfrom= "@[FV3_input_data]" 'diag_table' <=copy= "@[FV3_input_data]/diag_table" 'field_table' <=copy= "@[FV3_input_data]/field_table_satmedmf" '*configure' <=copyfrom= "@[FV3_input_data]" 'INPUT' <=copy= "@[FV3_input_data]/INPUT" 'global_o3prdlos.f77' <=copy= "@[FV3_input_data]/INPUT/global_o3prdlos.f77" } # Specify output files: criteria output { # WORKFILE .comparison. TARGET 'atmos_4xdaily.tile1.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile2.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile3.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile4.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile5.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile6.nc' .bitcmp. "@[CNTL]" 'phyf000.nemsio' .bitcmp. "@[CNTL]" 'phyf024.nemsio' .bitcmp. "@[CNTL]" 'dynf000.nemsio' .bitcmp. "@[CNTL]" 'dynf024.nemsio' .bitcmp. "@[CNTL]" 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" # Executable validation. This makes an MD5 sum of the fv3.exe # for comparison against the MD5 sum made in the build job. # This is to ensure the executable did not change during the # test suite. "@[build%target]" .md5cmp. "@[fv3.exe%md5sum]" } } ######################################################################## test fv3_lheatstrg: fv3.exe { use fv3_control TEST_DESCR="Compare FV3 control with lheatstrg on Gaussian grid nemsio output results with previous trunk version" CNTL_NAME="fv3_lheatstrg" LHEATSTRG='.true.' OUTPUT_GRID="'gaussian_grid'" OUTPUT_FILE="'nemsio'" WRITE_NEMSIOFLIP='.true.' WRITE_FSYNCFLAG ='.true.' COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area # Specify output files: criteria output { # WORKFILE .comparison. TARGET 'atmos_4xdaily.tile1.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile2.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile3.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile4.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile5.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile6.nc' .bitcmp. "@[CNTL]" 'phyf000.nemsio' .bitcmp. "@[CNTL]" 'phyf024.nemsio' .bitcmp. "@[CNTL]" 'dynf000.nemsio' .bitcmp. "@[CNTL]" 'dynf024.nemsio' .bitcmp. "@[CNTL]" 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" # Executable validation. This makes an MD5 sum of the fv3.exe # for comparison against the MD5 sum made in the build job. # This is to ensure the executable did not change during the # test suite. "@[build%target]" .md5cmp. "@[fv3.exe%md5sum]" } } ######################################################################## test fv3_wrtGauss_netcdf_esmf: fv3.exe { use fv3_control TEST_DESCR="Compare FV3 Gaussian grid netcdf output results with previous trunk version" CNTL_NAME="fv3_wrtGauss_netcdf_esmf" OUTPUT_GRID="'gaussian_grid'" OUTPUT_FILE="'netcdf_esmf'" COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area # Specify output files: criteria output { # WORKFILE .comparison. TARGET 'atmos_4xdaily.tile1.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile2.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile3.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile4.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile5.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile6.nc' .bitcmp. "@[CNTL]" 'phyf000.nc' .bitcmp. "@[CNTL]" 'phyf024.nc' .bitcmp. "@[CNTL]" 'dynf000.nc' .bitcmp. "@[CNTL]" 'dynf024.nc' .bitcmp. "@[CNTL]" 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" # Executable validation. This makes an MD5 sum of the fv3.exe # for comparison against the MD5 sum made in the build job. # This is to ensure the executable did not change during the # test suite. "@[build%target]" .md5cmp. "@[fv3.exe%md5sum]" } } ######################################################################## test fv3_wrtGauss_nemsio_c192: fv3.exe { use fv3_control TEST_DESCR="Compare c192 FV3 Gaussian grid nemsio output results with previous trunk version" CNTL_NAME="fv3_wrtGauss_nemsio_c192" TASKS='300' INPES='6' JNPES='8' NPX='193' NPY='193' NPZ='64' NPZP='65' SYEAR='2017' SMONTH='11' SDAY='01' DT_ATMOS='900' FHMAX='24' WLCLK='15' WRITE_GROUP='1' WRTTASK_PER_GROUP='12' OUTPUT_GRID="'gaussian_grid'" OUTPUT_FILE="'nemsio'" WRITE_NEMSIOFLIP='.true.' WRITE_FSYNCFLAG ='.true.' IMO='768' JMO='384' FNALBC="'global_snowfree_albedo.bosu.t382.768.384.rg.grb'," FNVETC="'global_vegtype.igbp.t382.768.384.rg.grb'," FNSOTC="'global_soiltype.statsgo.t382.768.384.rg.grb'," FNSMCC="'global_soilmgldas.t382.768.384.grb'," FNABSC="'global_mxsnoalb.uariz.t382.768.384.rg.grb'," COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area FV3_input_data="@[plat%INPUTS]/FV3_input_data_c192" # The build variable is the fv3.exe or fv3_appbuild.fv3, which # provides the path to the build target, md5 sum, and modulefile. build=fv3.exe prep=fv3_prep( RUNDIR="@[RUNDIR]",modules="@[fv3.exe%modules.nems]", CNTL="@[CNTL]") # Specify input files. filters input { # WORK FILE <=filter= SOURCE FILE 'input.nml' <=atparse= "@[PARMnems]/input.nml.IN" 'model_configure' <=atparse= "@[PARMnems]/model_configure.IN" 'aerosol.dat' <=copyfrom= "@[FV3_input_data]/INPUT" 'co2historicaldata_201*.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'sfc_emissivity_idx.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'solarconstant_noaa_an.txt' <=copyfrom= "@[FV3_input_data]/INPUT" '*grb' <=copyfrom= "@[FV3_input_data]" '*_table' <=copyfrom= "@[FV3_input_data]" '*configure' <=copyfrom= "@[FV3_input_data]" 'INPUT' <=copy= "@[FV3_input_data]/INPUT" 'global_o3prdlos.f77' <=copy= "@[FV3_input_data]/INPUT/global_o3prdlos.f77" } # Specify output files: criteria output { # WORKFILE .comparison. TARGET 'atmos_4xdaily.tile1.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile2.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile3.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile4.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile5.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile6.nc' .bitcmp. "@[CNTL]" 'phyf000.nemsio' .bitcmp. "@[CNTL]" 'phyf024.nemsio' .bitcmp. "@[CNTL]" 'dynf000.nemsio' .bitcmp. "@[CNTL]" 'dynf024.nemsio' .bitcmp. "@[CNTL]" 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" # Executable validation. This makes an MD5 sum of the fv3.exe # for comparison against the MD5 sum made in the build job. # This is to ensure the executable did not change during the # test suite. "@[build%target]" .md5cmp. "@[fv3.exe%md5sum]" } } ######################################################################## test fv3_wrtGauss_nemsio_c768: fv3_ww3.exe { use fv3_control TEST_DESCR="Compare c768 FV3-WW3 Gaussian grid nemsio output results with previous trunk version" CNTL_NAME="fv3_wrtGauss_nemsio_c768" TASKS='640' PPN="@[plat%C768_PPN]" THRD="@[plat%C768_THRD]" INPES='8' JNPES='8' NPX='769' NPY='769' NPZ='64' NPZP='65' SYEAR='2017' SMONTH='01' SDAY='06' DT_ATMOS='225' FHMAX='06' WLCLK='30' WRITE_GROUP='3' WRTTASK_PER_GROUP='12' FDIAG='0,1,2,3,4,5,6,7,8,9,10,11,12' OUTPUT_GRID="'gaussian_grid'" OUTPUT_FILE="'nemsio'" WRITE_NEMSIOFLIP='.true.' WRITE_FSYNCFLAG ='.true.' IMO='3072' JMO='1536' FNALBC="'global_snowfree_albedo.bosu.t1534.3072.1536.rg.grb'," FNVETC="'global_vegtype.igbp.t1534.3072.1536.rg.grb'," FNSOTC="'global_soiltype.statsgo.t1534.3072.1536.rg.grb'," FNSMCC="'global_soilmgldas.t1534.3072.1536.grb'," FNABSC="'global_mxsnoalb.uariz.t1534.3072.1536.rg.grb'," # probably don't want to do this: walltime='1800' CPL='.true.' CPLWAV='.T.' #Turn on wave coupling COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area FV3_input_data="@[plat%INPUTS]/FV3_input_data_c768" WW3_input_data="@[plat%INPUTS]/WW3_input_data" nems_configure="blocked_atm_wav" atm_model='fv3' atm_petlist_bounds="0 419" wav_model='ww3' wav_petlist_bounds="420 639" coupling_interval_sec=1800.0 # 30min coupling, fv3 time step # The build variable is the fv3_ww3.exe, which # provides the path to the build target, md5 sum, and modulefile. build=fv3_ww3.exe prep=fv3_prep( RUNDIR="@[RUNDIR]",modules="@[fv3_ww3.exe%modules.nems]", CNTL="@[CNTL]") # Specify input files. filters input { # WORK FILE <=filter= SOURCE FILE 'input.nml' <=atparse= "@[PARMnems]/input.nml.IN" 'model_configure' <=atparse= "@[PARMnems]/model_configure.IN" 'aerosol.dat' <=copyfrom= "@[FV3_input_data]/INPUT" 'co2historicaldata_201*.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'sfc_emissivity_idx.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'solarconstant_noaa_an.txt' <=copyfrom= "@[FV3_input_data]/INPUT" '*grb' <=copyfrom= "@[FV3_input_data]" '*_table' <=copyfrom= "@[FV3_input_data]" 'INPUT' <=copy= "@[FV3_input_data]/INPUT" 'global_o3prdlos.f77' <=copy= "@[FV3_input_data]/INPUT/global_o3prdlos.f77" 'nems.configure' <=atparse= "@[PARMnems]/nems.configure.@[nems_configure].IN" 'mod_def.*' <=copyfrom= "@[WW3_input_data]" 'ww3_multi.inp' <=copyfrom= "@[WW3_input_data]/@[SYEAR]@[SMONTH]@[SDAY]" 'rmp_src*' <=copyfrom= "@[WW3_input_data]/@[SYEAR]@[SMONTH]@[SDAY]" } # Specify output files: criteria output { # WORKFILE .comparison. TARGET 'atmos_4xdaily.tile1.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile2.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile3.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile4.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile5.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile6.nc' .bitcmp. "@[CNTL]" 'phyf006.nemsio' .bitcmp. "@[CNTL]" 'dynf006.nemsio' .bitcmp. "@[CNTL]" 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'out_grd.glo_10m' .bitcmp. "@[CNTL]" 'out_grd.ant_9km' .bitcmp. "@[CNTL]" 'out_grd.aoc_9km' .bitcmp. "@[CNTL]" # Executable validation. This makes an MD5 sum of the fv3.exe # for comparison against the MD5 sum made in the build job. # This is to ensure the executable did not change during the # test suite. "@[build%target]" .md5cmp. "@[fv3_ww3.exe%md5sum]" } spawn execute { {"@[build%target]", ranks="@[TASKS]", threads="@[THRD]", ppn="@[PPN]" } } } ######################################################################## test fv3_control_32bit: fv3_32bit.exe { use fv3_control TEST_DESCR="Compare FV3 32bit compile results with previous trunk version" CNTL_NAME="fv3_control_32bit" build=fv3_32bit.exe COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area prep=fv3_prep( RUNDIR="@[RUNDIR]",modules="@[fv3_32bit.exe%modules.nems]", CNTL="@[CNTL]") # Specify output files: criteria output { # WORKFILE .comparison. TARGET 'atmos_4xdaily.tile1.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile2.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile3.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile4.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile5.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile6.nc' .bitcmp. "@[CNTL]" 'phyf000.tile1.nc' .bitcmp. "@[CNTL]" 'phyf000.tile2.nc' .bitcmp. "@[CNTL]" 'phyf000.tile3.nc' .bitcmp. "@[CNTL]" 'phyf000.tile4.nc' .bitcmp. "@[CNTL]" 'phyf000.tile5.nc' .bitcmp. "@[CNTL]" 'phyf000.tile6.nc' .bitcmp. "@[CNTL]" 'phyf024.tile1.nc' .bitcmp. "@[CNTL]" 'phyf024.tile2.nc' .bitcmp. "@[CNTL]" 'phyf024.tile3.nc' .bitcmp. "@[CNTL]" 'phyf024.tile4.nc' .bitcmp. "@[CNTL]" 'phyf024.tile5.nc' .bitcmp. "@[CNTL]" 'phyf024.tile6.nc' .bitcmp. "@[CNTL]" 'dynf000.tile1.nc' .bitcmp. "@[CNTL]" 'dynf000.tile2.nc' .bitcmp. "@[CNTL]" 'dynf000.tile3.nc' .bitcmp. "@[CNTL]" 'dynf000.tile4.nc' .bitcmp. "@[CNTL]" 'dynf000.tile5.nc' .bitcmp. "@[CNTL]" 'dynf000.tile6.nc' .bitcmp. "@[CNTL]" 'dynf024.tile1.nc' .bitcmp. "@[CNTL]" 'dynf024.tile2.nc' .bitcmp. "@[CNTL]" 'dynf024.tile3.nc' .bitcmp. "@[CNTL]" 'dynf024.tile4.nc' .bitcmp. "@[CNTL]" 'dynf024.tile5.nc' .bitcmp. "@[CNTL]" 'dynf024.tile6.nc' .bitcmp. "@[CNTL]" 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" } } ######################################################################## test fv3_gfdlmprad_32bit_post: fv3_32bit.exe { use fv3_gfdlmp TEST_DESCR="Compare FV3 GFDL mircrophysics radiation change with inline post results with previous trunk version" CNTL_NAME='fv3_gfdlmprad_32bit_post' LGFDLMPRAD='.true.' EFFR_IN='.true.' WRITE_DOPOST='.true.' build=fv3_32bit.exe COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area prep=fv3_prep( RUNDIR="@[RUNDIR]",modules="@[fv3_32bit.exe%modules.nems]", CNTL="@[CNTL]") # Specify input files. filters input { # WORK FILE <=filter= SOURCE FILE 'input.nml' <=atparse= "@[PARMnems]/gfdlmp.nml.IN" 'model_configure' <=atparse= "@[PARMnems]/model_configure.IN" 'itag' <=atparse= "@[PARMnems]/post_itag" 'postxconfig-NT.txt' <=atparse= "@[PARMnems]/postxconfig-NT.txt" 'postxconfig-NT_FH00.txt' <=atparse= "@[PARMnems]/postxconfig-NT_FH00.txt" 'params_grib2_tbl_new' <=atparse= "@[PARMnems]/params_grib2_tbl_new" 'aerosol.dat' <=copyfrom= "@[FV3_input_data]/INPUT" 'co2historicaldata_201*.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'sfc_emissivity_idx.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'solarconstant_noaa_an.txt' <=copyfrom= "@[FV3_input_data]/INPUT" '*grb' <=copyfrom= "@[FV3_input_data]" '*_table' <=copyfrom= "@[FV3_input_data]" 'diag_table' <=copy= "@[FV3_input_data]/diag_table_gfdlmp" 'field_table' <=copy= "@[FV3_input_data]/field_table_gfdlmp" '*configure' <=copyfrom= "@[FV3_input_data]" 'INPUT' <=copy= "@[FV3_input_data]/INPUT" 'global_o3prdlos.f77' <=copy= "@[FV3_input_data]/INPUT/global_o3prdlos.f77" } # Specify output files: criteria output { # WORKFILE 'atmos_4xdaily.tile1.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile2.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile3.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile4.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile5.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile6.nc' .bitcmp. "@[CNTL]" 'phyf000.nemsio' .bitcmp. "@[CNTL]" 'phyf024.nemsio' .bitcmp. "@[CNTL]" 'dynf000.nemsio' .bitcmp. "@[CNTL]" 'dynf024.nemsio' .bitcmp. "@[CNTL]" 'GFSFLX.GrbF00' .bitcmp. "@[CNTL]" 'GFSPRS.GrbF00' .bitcmp. "@[CNTL]" 'GFSFLX.GrbF24' .bitcmp. "@[CNTL]" 'GFSPRS.GrbF24' .bitcmp. "@[CNTL]" 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" } } ######################################################################## # test fv3_iau: fv3.exe { use fv3_control TEST_DESCR="Compare FV3 IAU results with previous trunk version" CNTL_NAME='fv3_iau' WARM_START='.T.' NGGPS_IC='.F.' EXTERNAL_IC='.F.' MAKE_NH='.F.' MOUNTAIN='.T.' NA_INIT='0' FHMAX='48' FDIAG='3' NSTF_NAME='2,0,1,0,5' IAU_INC_FILES='fv3_increment.nc' IAU_DRYMASSFIXER='.true.' CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area # Specify input files. filters input { # WORK FILE <=filter= SOURCE FILE 'input.nml' <=atparse= "@[PARMnems]/input.nml.IN" 'model_configure' <=atparse= "@[PARMnems]/model_configure.IN" 'aerosol.dat' <=copyfrom= "@[FV3_input_data]/INPUT" 'co2historicaldata_201*.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'sfc_emissivity_idx.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'solarconstant_noaa_an.txt' <=copyfrom= "@[FV3_input_data]/INPUT" '*grb' <=copyfrom= "@[FV3_input_data]" '*_table' <=copyfrom= "@[FV3_input_data]" '*configure' <=copyfrom= "@[FV3_input_data]" 'INPUT' <=copy= "@[FV3_input_data]/RESTART" 'global_o3prdlos.f77' <=copy= "@[FV3_input_data]/INPUT/global_o3prdlos.f77" } # Specify output files: criteria output { # WORKFILE .comparison. TARGET 'atmos_4xdaily.tile1.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile2.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile3.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile4.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile5.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile6.nc' .bitcmp. "@[CNTL]" 'phyf027.tile1.nc' .bitcmp. "@[CNTL]" 'phyf027.tile2.nc' .bitcmp. "@[CNTL]" 'phyf027.tile3.nc' .bitcmp. "@[CNTL]" 'phyf027.tile4.nc' .bitcmp. "@[CNTL]" 'phyf027.tile5.nc' .bitcmp. "@[CNTL]" 'phyf027.tile6.nc' .bitcmp. "@[CNTL]" 'phyf048.tile1.nc' .bitcmp. "@[CNTL]" 'phyf048.tile2.nc' .bitcmp. "@[CNTL]" 'phyf048.tile3.nc' .bitcmp. "@[CNTL]" 'phyf048.tile4.nc' .bitcmp. "@[CNTL]" 'phyf048.tile5.nc' .bitcmp. "@[CNTL]" 'phyf048.tile6.nc' .bitcmp. "@[CNTL]" 'dynf027.tile1.nc' .bitcmp. "@[CNTL]" 'dynf027.tile2.nc' .bitcmp. "@[CNTL]" 'dynf027.tile3.nc' .bitcmp. "@[CNTL]" 'dynf027.tile4.nc' .bitcmp. "@[CNTL]" 'dynf027.tile5.nc' .bitcmp. "@[CNTL]" 'dynf027.tile6.nc' .bitcmp. "@[CNTL]" 'dynf048.tile1.nc' .bitcmp. "@[CNTL]" 'dynf048.tile2.nc' .bitcmp. "@[CNTL]" 'dynf048.tile3.nc' .bitcmp. "@[CNTL]" 'dynf048.tile4.nc' .bitcmp. "@[CNTL]" 'dynf048.tile5.nc' .bitcmp. "@[CNTL]" 'dynf048.tile6.nc' .bitcmp. "@[CNTL]" 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" # Executable validation. This makes an MD5 sum of the fv3.exe # for comparison against the MD5 sum made in the build job. # This is to ensure the executable did not change during the # test suite. "@[build%target]" .md5cmp. "@[fv3.exe%md5sum]" } spawn execute { # Run the {"@[build%target]", ranks="@[TASKS]" } } } ######################################################################## ######################################################################## # test fv3_stochy: fv3.exe { use fv3_control TEST_DESCR="Compare FV3 stochy results with previous trunk version" CNTL_NAME='fv3_stochy' DO_SPPT='.T.' DO_SHUM='.T.' DO_SKEB='.T.' DO_SFCPERTS='.F.' SKEB='0.3' SHUM='0.003' SPPT='0.2' DT_ATMOS='600' FHMAX='12' CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area # Specify input files. filters input { # WORK FILE <=filter= SOURCE FILE 'input.nml' <=atparse= "@[PARMnems]/input.nml.IN" 'model_configure' <=atparse= "@[PARMnems]/model_configure.IN" 'aerosol.dat' <=copyfrom= "@[FV3_input_data]/INPUT" 'co2historicaldata_201*.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'sfc_emissivity_idx.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'solarconstant_noaa_an.txt' <=copyfrom= "@[FV3_input_data]/INPUT" '*grb' <=copyfrom= "@[FV3_input_data]" '*_table' <=copyfrom= "@[FV3_input_data]" '*configure' <=copyfrom= "@[FV3_input_data]" 'INPUT' <=copy= "@[FV3_input_data]/INPUT" 'global_o3prdlos.f77' <=copy= "@[FV3_input_data]/INPUT/global_o3prdlos.f77" } # Specify output files: criteria output { # WORKFILE .comparison. TARGET 'atmos_4xdaily.tile1.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile2.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile3.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile4.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile5.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile6.nc' .bitcmp. "@[CNTL]" 'phyf000.tile1.nc' .bitcmp. "@[CNTL]" 'phyf000.tile2.nc' .bitcmp. "@[CNTL]" 'phyf000.tile3.nc' .bitcmp. "@[CNTL]" 'phyf000.tile4.nc' .bitcmp. "@[CNTL]" 'phyf000.tile5.nc' .bitcmp. "@[CNTL]" 'phyf000.tile6.nc' .bitcmp. "@[CNTL]" 'phyf012.tile1.nc' .bitcmp. "@[CNTL]" 'phyf012.tile2.nc' .bitcmp. "@[CNTL]" 'phyf012.tile3.nc' .bitcmp. "@[CNTL]" 'phyf012.tile4.nc' .bitcmp. "@[CNTL]" 'phyf012.tile5.nc' .bitcmp. "@[CNTL]" 'phyf012.tile6.nc' .bitcmp. "@[CNTL]" 'dynf000.tile1.nc' .bitcmp. "@[CNTL]" 'dynf000.tile2.nc' .bitcmp. "@[CNTL]" 'dynf000.tile3.nc' .bitcmp. "@[CNTL]" 'dynf000.tile4.nc' .bitcmp. "@[CNTL]" 'dynf000.tile5.nc' .bitcmp. "@[CNTL]" 'dynf000.tile6.nc' .bitcmp. "@[CNTL]" 'dynf012.tile1.nc' .bitcmp. "@[CNTL]" 'dynf012.tile2.nc' .bitcmp. "@[CNTL]" 'dynf012.tile3.nc' .bitcmp. "@[CNTL]" 'dynf012.tile4.nc' .bitcmp. "@[CNTL]" 'dynf012.tile5.nc' .bitcmp. "@[CNTL]" 'dynf012.tile6.nc' .bitcmp. "@[CNTL]" 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" # Executable validation. This makes an MD5 sum of the fv3.exe # for comparison against the MD5 sum made in the build job. # This is to ensure the executable did not change during the # test suite. "@[build%target]" .md5cmp. "@[fv3.exe%md5sum]" } spawn execute { # Run the {"@[build%target]", ranks="@[TASKS]" } } } ######################################################################## test fv3_stretched: fv3_32bit.exe { use fv3_control use plat%default_stretched_resources TEST_DESCR="Stretched grid; compare against previous baseline" CNTL_NAME="fv3_stretched" build=fv3_32bit.exe COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area prep=fv3_prep( RUNDIR="@[RUNDIR]",modules="@[fv3_32bit.exe%modules.nems]", CNTL="@[CNTL]") # Override settings from control INPES='2' JNPES='4' MAKE_NH='.T.' NA_INIT='1' EXTERNAL_IC='.T.' NGGPS_IC='.T.' MOUNTAIN='.F.' WARM_START='.F.' FDIAG='3' INPES_NEST='6' JNPES_NEST='8' MAKE_NH_NEST='.F.' SYEAR="2018" SMONTH="10" SDAY="15" SHOUR="00" FHMAX="48" DT_ATMOS="450" QUILTING='.false.' filters input { # WORK FILE <=filter= SOURCE FILE 'input.nml' <=atparse= "@[PARMnems]/stretched-input.nml.IN" 'model_configure' <=atparse= "@[PARMnems]/model_configure.IN" '*' <=copyfrom= "@[plat%INPUTS]/FV3_nest_input_data" 'INPUT' <=copy= "@[plat%INPUTS]/@[TEST_NAME]/INPUT" 'global_o3prdlos.f77' <=copy= "@[FV3_input_data]/INPUT/global_o3prdlos.f77" } criteria output { # WORK FILE .comparison. TARGET 'atmos_4xdaily.tile1.nc' .bitcmp. "@[CNTL]/atmos_4xdaily.tile1.nc" 'atmos_4xdaily.tile2.nc' .bitcmp. "@[CNTL]/atmos_4xdaily.tile2.nc" 'atmos_4xdaily.tile3.nc' .bitcmp. "@[CNTL]/atmos_4xdaily.tile3.nc" 'atmos_4xdaily.tile4.nc' .bitcmp. "@[CNTL]/atmos_4xdaily.tile4.nc" 'atmos_4xdaily.tile5.nc' .bitcmp. "@[CNTL]/atmos_4xdaily.tile5.nc" 'atmos_4xdaily.tile6.nc' .bitcmp. "@[CNTL]/atmos_4xdaily.tile6.nc" 'fv3_history2d.tile1.nc' .bitcmp. "@[CNTL]/fv3_history2d.tile1.nc" 'fv3_history2d.tile2.nc' .bitcmp. "@[CNTL]/fv3_history2d.tile2.nc" 'fv3_history2d.tile3.nc' .bitcmp. "@[CNTL]/fv3_history2d.tile3.nc" 'fv3_history2d.tile4.nc' .bitcmp. "@[CNTL]/fv3_history2d.tile4.nc" 'fv3_history2d.tile5.nc' .bitcmp. "@[CNTL]/fv3_history2d.tile5.nc" 'fv3_history2d.tile6.nc' .bitcmp. "@[CNTL]/fv3_history2d.tile6.nc" 'fv3_history.tile1.nc' .bitcmp. "@[CNTL]/fv3_history.tile1.nc" 'fv3_history.tile2.nc' .bitcmp. "@[CNTL]/fv3_history.tile2.nc" 'fv3_history.tile3.nc' .bitcmp. "@[CNTL]/fv3_history.tile3.nc" 'fv3_history.tile4.nc' .bitcmp. "@[CNTL]/fv3_history.tile4.nc" 'fv3_history.tile5.nc' .bitcmp. "@[CNTL]/fv3_history.tile5.nc" 'fv3_history.tile6.nc' .bitcmp. "@[CNTL]/fv3_history.tile6.nc" 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/coupler.res" 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/fv_core.res.nc" 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/fv_core.res.tile1.nc" 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/fv_core.res.tile2.nc" 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/fv_core.res.tile3.nc" 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/fv_core.res.tile4.nc" 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/fv_core.res.tile5.nc" 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/fv_core.res.tile6.nc" 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/fv_srf_wnd.res.tile1.nc" 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/fv_srf_wnd.res.tile2.nc" 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/fv_srf_wnd.res.tile3.nc" 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/fv_srf_wnd.res.tile4.nc" 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/fv_srf_wnd.res.tile5.nc" 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/fv_srf_wnd.res.tile6.nc" 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/fv_tracer.res.tile1.nc" 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/fv_tracer.res.tile2.nc" 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/fv_tracer.res.tile3.nc" 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/fv_tracer.res.tile4.nc" 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/fv_tracer.res.tile5.nc" 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/fv_tracer.res.tile6.nc" 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/phy_data.tile1.nc" 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/phy_data.tile2.nc" 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/phy_data.tile3.nc" 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/phy_data.tile4.nc" 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/phy_data.tile5.nc" 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/phy_data.tile6.nc" 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/sfc_data.tile1.nc" 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/sfc_data.tile2.nc" 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/sfc_data.tile3.nc" 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/sfc_data.tile4.nc" 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/sfc_data.tile5.nc" 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/sfc_data.tile6.nc" } spawn execute { {"@[build%target]", ranks="@[TASKS]", threads="@[THRD]", ppn="@[TPN]" } } } test fv3_stretched_nest: fv3_32bit.exe { use fv3_stretched use plat%default_nested_resources TEST_DESCR="Stretched grid with nest; compare against previous baseline" CNTL_NAME="fv3_stretched_nest" build=fv3_32bit.exe COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area prep=fv3_prep( RUNDIR="@[RUNDIR]",modules="@[fv3_32bit.exe%modules.nems]", CNTL="@[CNTL]") # Override settings from control INPES='2' JNPES='4' MAKE_NH='.T.' NA_INIT='1' EXTERNAL_IC='.T.' NGGPS_IC='.T.' MOUNTAIN='.F.' WARM_START='.F.' FDIAG='3' INPES_NEST='6' JNPES_NEST='8' MAKE_NH_NEST='.F.' SYEAR="2018" SMONTH="10" SDAY="15" SHOUR="00" FHMAX="48" DT_ATMOS="450" QUILTING='.false.' filters input { # WORK FILE <=filter= SOURCE FILE 'input.nml' <=atparse= "@[PARMnems]/stretched-nest-input.nml.IN" 'input_nest02.nml' <=atparse= "@[PARMnems]/input_nest02.nml.IN" 'model_configure' <=atparse= "@[PARMnems]/model_configure.IN" '*' <=copyfrom= "@[plat%INPUTS]/FV3_nest_input_data" 'INPUT' <=copy= "@[plat%INPUTS]/@[TEST_NAME]/INPUT" 'global_o3prdlos.f77' <=copy= "@[FV3_input_data]/INPUT/global_o3prdlos.f77" } criteria output { 'atmos_4xdaily.tile1.nc' .bitcmp. "@[CNTL]/atmos_4xdaily.tile1.nc" 'atmos_4xdaily.tile2.nc' .bitcmp. "@[CNTL]/atmos_4xdaily.tile2.nc" 'atmos_4xdaily.tile3.nc' .bitcmp. "@[CNTL]/atmos_4xdaily.tile3.nc" 'atmos_4xdaily.tile4.nc' .bitcmp. "@[CNTL]/atmos_4xdaily.tile4.nc" 'atmos_4xdaily.tile5.nc' .bitcmp. "@[CNTL]/atmos_4xdaily.tile5.nc" 'atmos_4xdaily.tile6.nc' .bitcmp. "@[CNTL]/atmos_4xdaily.tile6.nc" 'fv3_history2d.tile1.nc' .bitcmp. "@[CNTL]/fv3_history2d.tile1.nc" 'fv3_history2d.tile2.nc' .bitcmp. "@[CNTL]/fv3_history2d.tile2.nc" 'fv3_history2d.tile3.nc' .bitcmp. "@[CNTL]/fv3_history2d.tile3.nc" 'fv3_history2d.tile4.nc' .bitcmp. "@[CNTL]/fv3_history2d.tile4.nc" 'fv3_history2d.tile5.nc' .bitcmp. "@[CNTL]/fv3_history2d.tile5.nc" 'fv3_history2d.tile6.nc' .bitcmp. "@[CNTL]/fv3_history2d.tile6.nc" 'fv3_history.tile1.nc' .bitcmp. "@[CNTL]/fv3_history.tile1.nc" 'fv3_history.tile2.nc' .bitcmp. "@[CNTL]/fv3_history.tile2.nc" 'fv3_history.tile3.nc' .bitcmp. "@[CNTL]/fv3_history.tile3.nc" 'fv3_history.tile4.nc' .bitcmp. "@[CNTL]/fv3_history.tile4.nc" 'fv3_history.tile5.nc' .bitcmp. "@[CNTL]/fv3_history.tile5.nc" 'fv3_history.tile6.nc' .bitcmp. "@[CNTL]/fv3_history.tile6.nc" 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/coupler.res" 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/fv_core.res.nc" 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/fv_core.res.tile1.nc" 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/fv_core.res.tile2.nc" 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/fv_core.res.tile3.nc" 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/fv_core.res.tile4.nc" 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/fv_core.res.tile5.nc" 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/fv_core.res.tile6.nc" 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/fv_srf_wnd.res.tile1.nc" 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/fv_srf_wnd.res.tile2.nc" 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/fv_srf_wnd.res.tile3.nc" 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/fv_srf_wnd.res.tile4.nc" 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/fv_srf_wnd.res.tile5.nc" 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/fv_srf_wnd.res.tile6.nc" 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/fv_tracer.res.tile1.nc" 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/fv_tracer.res.tile2.nc" 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/fv_tracer.res.tile3.nc" 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/fv_tracer.res.tile4.nc" 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/fv_tracer.res.tile5.nc" 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/fv_tracer.res.tile6.nc" 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/phy_data.tile1.nc" 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/phy_data.tile2.nc" 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/phy_data.tile3.nc" 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/phy_data.tile4.nc" 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/phy_data.tile5.nc" 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/phy_data.tile6.nc" 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/sfc_data.tile1.nc" 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/sfc_data.tile2.nc" 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/sfc_data.tile3.nc" 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/sfc_data.tile4.nc" 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/sfc_data.tile5.nc" 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/sfc_data.tile6.nc" "atmos_4xdaily.nest02.tile7.nc" .bitcmp. "@[CNTL]/atmos_4xdaily.nest02.tile7.nc" "fv3_history2d.nest02.tile7.nc" .bitcmp. "@[CNTL]/fv3_history2d.nest02.tile7.nc" "fv3_history.nest02.tile7.nc" .bitcmp. "@[CNTL]/fv3_history.nest02.tile7.nc" "RESTART/fv_BC_ne.res.nest02.nc" .bitcmp. "@[CNTL]/RESTART/fv_BC_ne.res.nest02.nc" "RESTART/fv_BC_sw.res.nest02.nc" .bitcmp. "@[CNTL]/RESTART/fv_BC_sw.res.nest02.nc" "RESTART/fv_core.res.nest02.nc" .bitcmp. "@[CNTL]/RESTART/fv_core.res.nest02.nc" "RESTART/fv_core.res.nest02.tile7.nc" .bitcmp. "@[CNTL]/RESTART/fv_core.res.nest02.tile7.nc" "RESTART/fv_srf_wnd.res.nest02.tile7.nc" .bitcmp. "@[CNTL]/RESTART/fv_srf_wnd.res.nest02.tile7.nc" "RESTART/fv_tracer.res.nest02.tile7.nc" .bitcmp. "@[CNTL]/RESTART/fv_tracer.res.nest02.tile7.nc" "RESTART/phy_data.nest02.tile7.nc" .bitcmp. "@[CNTL]/RESTART/phy_data.nest02.tile7.nc" "RESTART/sfc_data.nest02.tile7.nc" .bitcmp. "@[CNTL]/RESTART/sfc_data.nest02.tile7.nc" } spawn execute { {"@[build%target]", ranks="@[TASKS]", threads="@[THRD]", ppn="@[TPN]" } } } test fv3_stretched_nest_quilt: fv3_32bit.exe { use fv3_stretched use plat%default_nested_resources TEST_DESCR="Stretched grid with nest using quilting; compare against previous baseline" CNTL_NAME="fv3_stretched_nest_quilt" build=fv3_32bit.exe COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area prep=fv3_prep( RUNDIR="@[RUNDIR]",modules="@[fv3_32bit.exe%modules.nems]", CNTL="@[CNTL]") # Override settings from control INPES='2' JNPES='4' MAKE_NH='.T.' NA_INIT='1' EXTERNAL_IC='.T.' NGGPS_IC='.T.' MOUNTAIN='.F.' WARM_START='.F.' FDIAG='3' INPES_NEST='6' JNPES_NEST='8' MAKE_NH_NEST='.F.' SYEAR="2018" SMONTH="10" SDAY="15" SHOUR="00" FHMAX="48" DT_ATMOS="450" QUILTING='.true.' filters input { # WORK FILE <=filter= SOURCE FILE 'input.nml' <=atparse= "@[PARMnems]/stretched-nest-input.nml.IN" 'input_nest02.nml' <=atparse= "@[PARMnems]/input_nest02.nml.IN" 'model_configure' <=atparse= "@[PARMnems]/stretched-nest-quilt-model_configure.IN" '*' <=copyfrom= "@[plat%INPUTS]/FV3_nest_input_data" 'INPUT' <=copy= "@[plat%INPUTS]/@[TEST_NAME]/INPUT" } criteria output { 'atmos_4xdaily.tile1.nc' .bitcmp. "@[CNTL]/atmos_4xdaily.tile1.nc" 'atmos_4xdaily.tile2.nc' .bitcmp. "@[CNTL]/atmos_4xdaily.tile2.nc" 'atmos_4xdaily.tile3.nc' .bitcmp. "@[CNTL]/atmos_4xdaily.tile3.nc" 'atmos_4xdaily.tile4.nc' .bitcmp. "@[CNTL]/atmos_4xdaily.tile4.nc" 'atmos_4xdaily.tile5.nc' .bitcmp. "@[CNTL]/atmos_4xdaily.tile5.nc" 'atmos_4xdaily.tile6.nc' .bitcmp. "@[CNTL]/atmos_4xdaily.tile6.nc" 'atmos_4xdaily.nest02.tile7.nc' .bitcmp. "@[CNTL]/atmos_4xdaily.nest02.tile7.nc" 'dynf000.nc' .bitcmp. "@[CNTL]/dynf000.nc" 'dynf001.nc' .bitcmp. "@[CNTL]/dynf001.nc" 'dynf006.nc' .bitcmp. "@[CNTL]/dynf006.nc" 'dynf012.nc' .bitcmp. "@[CNTL]/dynf012.nc" 'dynf024.nc' .bitcmp. "@[CNTL]/dynf024.nc" 'dynf048.nc' .bitcmp. "@[CNTL]/dynf048.nc" 'phyf000.nc' .bitcmp. "@[CNTL]/phyf000.nc" 'phyf001.nc' .bitcmp. "@[CNTL]/phyf001.nc" 'phyf006.nc' .bitcmp. "@[CNTL]/phyf006.nc" 'phyf012.nc' .bitcmp. "@[CNTL]/phyf012.nc" 'phyf024.nc' .bitcmp. "@[CNTL]/phyf024.nc" 'phyf048.nc' .bitcmp. "@[CNTL]/phyf048.nc" 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/coupler.res" 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/fv_core.res.nc" "RESTART/fv_core.res.nest02.nc" .bitcmp. "@[CNTL]/RESTART/fv_core.res.nest02.nc" "RESTART/fv_BC_ne.res.nest02.nc" .bitcmp. "@[CNTL]/RESTART/fv_BC_ne.res.nest02.nc" "RESTART/fv_BC_sw.res.nest02.nc" .bitcmp. "@[CNTL]/RESTART/fv_BC_sw.res.nest02.nc" 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/fv_core.res.tile1.nc" 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/fv_core.res.tile2.nc" 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/fv_core.res.tile3.nc" 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/fv_core.res.tile4.nc" 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/fv_core.res.tile5.nc" 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/fv_core.res.tile6.nc" "RESTART/fv_core.res.nest02.tile7.nc" .bitcmp. "@[CNTL]/RESTART/fv_core.res.nest02.tile7.nc" 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/fv_srf_wnd.res.tile1.nc" 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/fv_srf_wnd.res.tile2.nc" 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/fv_srf_wnd.res.tile3.nc" 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/fv_srf_wnd.res.tile4.nc" 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/fv_srf_wnd.res.tile5.nc" 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/fv_srf_wnd.res.tile6.nc" "RESTART/fv_srf_wnd.res.nest02.tile7.nc" .bitcmp. "@[CNTL]/RESTART/fv_srf_wnd.res.nest02.tile7.nc" 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/fv_tracer.res.tile1.nc" 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/fv_tracer.res.tile2.nc" 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/fv_tracer.res.tile3.nc" 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/fv_tracer.res.tile4.nc" 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/fv_tracer.res.tile5.nc" 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/fv_tracer.res.tile6.nc" "RESTART/fv_tracer.res.nest02.tile7.nc" .bitcmp. "@[CNTL]/RESTART/fv_tracer.res.nest02.tile7.nc" 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/phy_data.tile1.nc" 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/phy_data.tile2.nc" 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/phy_data.tile3.nc" 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/phy_data.tile4.nc" 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/phy_data.tile5.nc" 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/phy_data.tile6.nc" "RESTART/phy_data.nest02.tile7.nc" .bitcmp. "@[CNTL]/RESTART/phy_data.nest02.tile7.nc" 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/sfc_data.tile1.nc" 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/sfc_data.tile2.nc" 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/sfc_data.tile3.nc" 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/sfc_data.tile4.nc" 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/sfc_data.tile5.nc" 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/sfc_data.tile6.nc" "RESTART/sfc_data.nest02.tile7.nc" .bitcmp. "@[CNTL]/RESTART/sfc_data.nest02.tile7.nc" } spawn execute { {"@[build%target]", ranks=108, threads="@[THRD]", ppn="@[TPN]" } } } ######################################################################## test fv3_regional_control: fv3_32bit.exe { use fv3_control TEST_DESCR="Compare FV3 regional control results with previous trunk version" CNTL_NAME="fv3_regional_control" build=fv3_32bit.exe COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area prep=fv3_prep( RUNDIR="@[RUNDIR]",modules="@[fv3_32bit.exe%modules.nems]", CNTL="@[CNTL]") # Override settings from control TASKS='24' filters input { # WORK FILE <=filter= SOURCE FILE '*' <=copyfrom= "@[plat%INPUTS]/FV3_regional_input_data" 'model_configure' <=copy= "@[plat%INPUTS]/@[TEST_NAME]/model_configure" 'input.nml' <=copy= "@[plat%INPUTS]/@[TEST_NAME]/input.nml" 'INPUT' <=copy= "@[plat%INPUTS]/@[TEST_NAME]/INPUT" } criteria output { 'atmos_4xdaily.nc' .bitcmp. "@[CNTL]/atmos_4xdaily.nc" 'fv3_history2d.nc' .bitcmp. "@[CNTL]/fv3_history2d.nc" 'fv3_history.nc' .bitcmp. "@[CNTL]/fv3_history.nc" } spawn execute { {"@[build%target]", ranks="@[TASKS]", threads="@[THRD]", ppn="@[TPN]" } } } ######################################################################## test fv3_regional_restart: fv3_regional_control { use fv3_control TEST_DESCR="Compare FV3 regional restart results with previous trunk version" CNTL_NAME="fv3_regional_restart" build=fv3_32bit.exe COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area prep=fv3_prep( RUNDIR="@[RUNDIR]",modules="@[fv3_32bit.exe%modules.nems]", CNTL="@[CNTL]") # Override settings from control TASKS='24' WARM_START='.T.' filters input { # WORK FILE <=filter= SOURCE FILE '*' <=copyfrom= "@[plat%INPUTS]/FV3_regional_input_data" 'model_configure' <=copy= "@[plat%INPUTS]/@[TEST_NAME]/model_configure" 'input.nml' <=copy= "@[plat%INPUTS]/@[TEST_NAME]/input.nml" 'INPUT' <=copy= "@[plat%INPUTS]/@[TEST_NAME]/INPUT" 'INPUT/coupler.res' <=copy= '../fv3_regional_control/RESTART/20181015.120000.coupler.res' 'INPUT/fv_core.res.nc' <=copy= '../fv3_regional_control/RESTART/20181015.120000.fv_core.res.nc' 'INPUT/fv_core.res.tile1.nc' <=copy= '../fv3_regional_control/RESTART/20181015.120000.fv_core.res.tile1.nc' 'INPUT/fv_srf_wnd.res.tile1.nc' <=copy= '../fv3_regional_control/RESTART/20181015.120000.fv_srf_wnd.res.tile1.nc' 'INPUT/fv_tracer.res.tile1.nc' <=copy= '../fv3_regional_control/RESTART/20181015.120000.fv_tracer.res.tile1.nc' 'INPUT/phy_data.nc' <=copy= '../fv3_regional_control/RESTART/20181015.120000.phy_data.nc' 'INPUT/sfc_data.nc' <=copy= '../fv3_regional_control/RESTART/20181015.120000.sfc_data.nc' } criteria output { 'atmos_4xdaily.nc' .bitcmp. "@[CNTL]/atmos_4xdaily.nc" 'fv3_history2d.nc' .bitcmp. "@[CNTL]/fv3_history2d.nc" 'fv3_history.nc' .bitcmp. "@[CNTL]/fv3_history.nc" } spawn execute { {"@[build%target]", ranks="@[TASKS]", threads="@[THRD]", ppn="@[TPN]" } } } ######################################################################## test fv3_regional_quilt: fv3_32bit.exe { use fv3_control TEST_DESCR="Compare FV3 regional quilt results with previous trunk version" CNTL_NAME="fv3_regional_quilt" build=fv3_32bit.exe COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area prep=fv3_prep( RUNDIR="@[RUNDIR]",modules="@[fv3_32bit.exe%modules.nems]", CNTL="@[CNTL]") # Override settings from control TASKS='28' filters input { # WORK FILE <=filter= SOURCE FILE '*' <=copyfrom= "@[plat%INPUTS]/FV3_regional_input_data" 'model_configure' <=copy= "@[plat%INPUTS]/@[TEST_NAME]/model_configure" 'input.nml' <=copy= "@[plat%INPUTS]/@[TEST_NAME]/input.nml" 'INPUT' <=copy= "@[plat%INPUTS]/@[TEST_NAME]/INPUT" } criteria output { 'atmos_4xdaily.nc' .bitcmp. "@[CNTL]/atmos_4xdaily.nc" 'dynf000.nc' .bitcmp. "@[CNTL]/dynf000.nc" 'dynf024.nc' .bitcmp. "@[CNTL]/dynf024.nc" 'phyf000.nc' .bitcmp. "@[CNTL]/phyf000.nc" 'phyf024.nc' .bitcmp. "@[CNTL]/phyf024.nc" } spawn execute { {"@[build%target]", ranks="@[TASKS]", threads="@[THRD]", ppn="@[TPN]" } } } ######################################################################## test fv3_regional_c768: fv3_32bit.exe { use fv3_control TEST_DESCR="Compare FV3 regional c768 results with previous trunk version" CNTL_NAME="fv3_regional_c768" build=fv3_32bit.exe COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area prep=fv3_prep( RUNDIR="@[RUNDIR]",modules="@[fv3_32bit.exe%modules.nems]", CNTL="@[CNTL]") # Override settings from control TASKS='480' WLCLK='30' filters input { # WORK FILE <=filter= SOURCE FILE '*' <=copyfrom= "@[plat%INPUTS]/FV3_regional_input_data" 'model_configure' <=copy= "@[plat%INPUTS]/@[TEST_NAME]/model_configure" 'input.nml' <=copy= "@[plat%INPUTS]/@[TEST_NAME]/input.nml" 'INPUT' <=copy= "@[plat%INPUTS]/@[TEST_NAME]/INPUT" } criteria output { 'atmos_4xdaily.nc' .bitcmp. "@[CNTL]/atmos_4xdaily.nc" 'fv3_history2d.nc' .bitcmp. "@[CNTL]/fv3_history2d.nc" 'fv3_history.nc' .bitcmp. "@[CNTL]/fv3_history.nc" } spawn execute { {"@[build%target]", ranks="@[TASKS]", threads="@[THRD]", ppn="@[TPN]" } } } ######################################################################## test fv3_control_debug: fv3_32bit_debug.exe { use fv3_control TEST_DESCR="Compare FV3 control/debug results with previous trunk version" CNTL_NAME="fv3_control" FHMAX="06" build=fv3_32bit_debug.exe COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area prep=fv3_prep( RUNDIR="@[RUNDIR]",modules="@[fv3_32bit_debug.exe%modules.nems]", CNTL="@[CNTL]") # Override settings from control # Specify input files. filters input { # WORK FILE <=filter= SOURCE FILE 'input.nml' <=atparse= "@[PARMnems]/input.nml.IN" 'model_configure' <=atparse= "@[PARMnems]/model_configure.IN" 'aerosol.dat' <=copyfrom= "@[FV3_input_data]/INPUT" 'co2historicaldata_201*.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'sfc_emissivity_idx.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'solarconstant_noaa_an.txt' <=copyfrom= "@[FV3_input_data]/INPUT" '*grb' <=copyfrom= "@[FV3_input_data]" '*_table' <=copyfrom= "@[FV3_input_data]" '*configure' <=copyfrom= "@[FV3_input_data]" 'INPUT' <=copy= "@[FV3_input_data]/INPUT" 'global_o3prdlos.f77' <=copy= "@[FV3_input_data]/INPUT/global_o3prdlos.f77" } criteria output { 'global_o3prdlos.f77' .bitcmp. "@[FV3_input_data]/INPUT/global_o3prdlos.f77" } spawn execute { {"@[build%target]", ranks="@[TASKS]", threads="@[THRD]", ppn="@[TPN]" } } } ######################################################################## test fv3_stretched_nest_debug: fv3_32bit_debug.exe { use fv3_stretched use plat%default_nested_resources TEST_DESCR="Stretched grid with nest - debug; compare against previous baseline" CNTL_NAME="fv3_stretched_nest" build=fv3_32bit.exe COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area prep=fv3_prep( RUNDIR="@[RUNDIR]",modules="@[fv3_32bit.exe%modules.nems]", CNTL="@[CNTL]") # Override settings from control INPES='2' JNPES='4' MAKE_NH='.T.' NA_INIT='1' EXTERNAL_IC='.T.' NGGPS_IC='.T.' MOUNTAIN='.F.' WARM_START='.F.' FDIAG='3' INPES_NEST='6' JNPES_NEST='8' MAKE_NH_NEST='.F.' SYEAR="2018" SMONTH="10" SDAY="15" SHOUR="00" FHMAX="48" DT_ATMOS="450" QUILTING='.false.' filters input { # WORK FILE <=filter= SOURCE FILE 'input.nml' <=atparse= "@[PARMnems]/stretched-nest-input.nml.IN" 'input_nest02.nml' <=atparse= "@[PARMnems]/input_nest02.nml.IN" 'model_configure' <=atparse= "@[PARMnems]/model_configure.IN" '*' <=copyfrom= "@[plat%INPUTS]/FV3_nest_input_data" 'INPUT' <=copy= "@[plat%INPUTS]/fv3_stretched_nest/INPUT" 'global_o3prdlos.f77' <=copy= "@[FV3_input_data]/INPUT/global_o3prdlos.f77" } criteria output { 'global_o3prdlos.f77' .bitcmp. "@[FV3_input_data]/INPUT/global_o3prdlos.f77" } spawn execute { {"@[build%target]", ranks="@[TASKS]", threads="@[THRD]", ppn="@[TPN]" } } } ######################################################################## test fv3_csawmgshoc: fv3.exe { use plat use plat%default_resources use fv3_defaults TEST_DESCR="Compare FV3 with CSAW MG2 and SHOC results with previous trunk version" CNTL_NAME='fv3_csawmgshoc' DT_ATMOS='600' OUTPUT_GRID="'gaussian_grid'" OUTPUT_FILE="'nemsio'" WRITE_NEMSIOFLIP='.true.' WRITE_FSYNCFLAG ='.true.' COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area FV3_input_data="@[plat%INPUTS]/FV3_input_data" # The build variable is the fv3.exe or fv3_appbuild.fv3, which # provides the path to the build target, md5 sum, and modulefile. build=fv3.exe prep=fv3_prep( RUNDIR="@[RUNDIR]",modules="@[fv3.exe%modules.nems]", CNTL="@[CNTL]") # Specify input files. filters input { # WORK FILE <=filter= SOURCE FILE 'input.nml' <=atparse= "@[PARMnems]/csawmgshoc.nml.IN" 'model_configure' <=atparse= "@[PARMnems]/model_configure.IN" 'aerosol.dat' <=copyfrom= "@[FV3_input_data]/INPUT" 'co2historicaldata_201*.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'sfc_emissivity_idx.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'solarconstant_noaa_an.txt' <=copyfrom= "@[FV3_input_data]/INPUT" '*grb' <=copyfrom= "@[FV3_input_data]" '*_table' <=copyfrom= "@[FV3_input_data]" 'diag_table' <=copy= "@[FV3_input_data]/diag_table_mgtkers" 'field_table' <=copy= "@[FV3_input_data]/field_table_csawmgshoc" '*configure' <=copyfrom= "@[FV3_input_data]" 'INPUT' <=copy= "@[FV3_input_data]/INPUT" 'global_h2oprdlos.f77' <=copy= "@[FV3_input_data]/global_h2o_pltc.f77" 'global_o3prdlos.f77' <=copy= "@[FV3_input_data]/ozprdlos_2015_new_sbuvO3_tclm15_nuchem.f77" } # Specify output files: criteria output { # WORKFILE .comparison. TARGET # --------a ---------- ------- 'atmos_4xdaily.tile1.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile2.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile3.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile4.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile5.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile6.nc' .bitcmp. "@[CNTL]" 'phyf000.nemsio' .bitcmp. "@[CNTL]" 'phyf024.nemsio' .bitcmp. "@[CNTL]" 'dynf000.nemsio' .bitcmp. "@[CNTL]" 'dynf024.nemsio' .bitcmp. "@[CNTL]" 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" # Executable validation. This makes an MD5 sum of the fv3.exe # for comparison against the MD5 sum made in the build job. # This is to ensure the executable did not change during the # test suite. "@[build%target]" .md5cmp. "@[fv3.exe%md5sum]" } spawn execute { # Run the {"@[build%target]", ranks="@[TASKS]" } } } ######################################################################## test fv3_rasmgshoc: fv3.exe { use plat use plat%default_resources use fv3_defaults TEST_DESCR="Compare FV3 with RAS MG2 and SHOC results with previous trunk version" CNTL_NAME='fv3_rasmgshoc' OUTPUT_GRID="'gaussian_grid'" OUTPUT_FILE="'nemsio'" WRITE_NEMSIOFLIP='.true.' WRITE_FSYNCFLAG ='.true.' DT_ATMOS='600' COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area FV3_input_data="@[plat%INPUTS]/FV3_input_data" # The build variable is the fv3.exe or fv3_appbuild.fv3, which # provides the path to the build target, md5 sum, and modulefile. build=fv3.exe prep=fv3_prep( RUNDIR="@[RUNDIR]",modules="@[fv3.exe%modules.nems]", CNTL="@[CNTL]") # Specify input files. filters input { # WORK FILE <=filter= SOURCE FILE 'input.nml' <=atparse= "@[PARMnems]/rasmgshoc.nml.IN" 'model_configure' <=atparse= "@[PARMnems]/model_configure.IN" 'aerosol.dat' <=copyfrom= "@[FV3_input_data]/INPUT" 'co2historicaldata_201*.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'sfc_emissivity_idx.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'solarconstant_noaa_an.txt' <=copyfrom= "@[FV3_input_data]/INPUT" '*grb' <=copyfrom= "@[FV3_input_data]" '*_table' <=copyfrom= "@[FV3_input_data]" 'diag_table' <=copy= "@[FV3_input_data]/diag_table_mgtkers" 'field_table' <=copy= "@[FV3_input_data]/field_table_rasmgshoc" '*configure' <=copyfrom= "@[FV3_input_data]" 'INPUT' <=copy= "@[FV3_input_data]/INPUT" 'global_h2oprdlos.f77' <=copy= "@[FV3_input_data]/global_h2o_pltc.f77" 'global_o3prdlos.f77' <=copy= "@[FV3_input_data]/ozprdlos_2015_new_sbuvO3_tclm15_nuchem.f77" } # Specify output files: criteria output { # WORKFILE .comparison. TARGET # --------a ---------- ------- 'atmos_4xdaily.tile1.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile2.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile3.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile4.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile5.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile6.nc' .bitcmp. "@[CNTL]" 'phyf000.nemsio' .bitcmp. "@[CNTL]" 'phyf024.nemsio' .bitcmp. "@[CNTL]" 'dynf000.nemsio' .bitcmp. "@[CNTL]" 'dynf024.nemsio' .bitcmp. "@[CNTL]" 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" # Executable validation. This makes an MD5 sum of the fv3.exe # for comparison against the MD5 sum made in the build job. # This is to ensure the executable did not change during the # test suite. "@[build%target]" .md5cmp. "@[fv3.exe%md5sum]" } spawn execute { # Run the {"@[build%target]", ranks="@[TASKS]" } } } ######################################################################## test fv3_csawmg: fv3.exe { use plat use plat%default_resources use fv3_defaults TEST_DESCR="Compare FV3 with CSAW and MG2 results with previous trunk version" CNTL_NAME='fv3_csawmg' OUTPUT_GRID="'gaussian_grid'" OUTPUT_FILE="'nemsio'" WRITE_NEMSIOFLIP='.true.' WRITE_FSYNCFLAG ='.true.' DT_ATMOS='600' COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area FV3_input_data="@[plat%INPUTS]/FV3_input_data" # The build variable is the fv3.exe or fv3_appbuild.fv3, which # provides the path to the build target, md5 sum, and modulefile. build=fv3.exe prep=fv3_prep( RUNDIR="@[RUNDIR]",modules="@[fv3.exe%modules.nems]", CNTL="@[CNTL]") # Specify input files. filters input { # WORK FILE <=filter= SOURCE FILE 'input.nml' <=atparse= "@[PARMnems]/csawmg.nml.IN" 'model_configure' <=atparse= "@[PARMnems]/model_configure.IN" 'aerosol.dat' <=copyfrom= "@[FV3_input_data]/INPUT" 'co2historicaldata_201*.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'sfc_emissivity_idx.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'solarconstant_noaa_an.txt' <=copyfrom= "@[FV3_input_data]/INPUT" '*grb' <=copyfrom= "@[FV3_input_data]" '*_table' <=copyfrom= "@[FV3_input_data]" 'diag_table' <=copy= "@[FV3_input_data]/diag_table_mgrs" 'field_table' <=copy= "@[FV3_input_data]/field_table_csawmg" '*configure' <=copyfrom= "@[FV3_input_data]" 'INPUT' <=copy= "@[FV3_input_data]/INPUT" 'global_h2oprdlos.f77' <=copy= "@[FV3_input_data]/global_h2o_pltc.f77" 'global_o3prdlos.f77' <=copy= "@[FV3_input_data]/ozprdlos_2015_new_sbuvO3_tclm15_nuchem.f77" } # Specify output files: criteria output { # WORKFILE .comparison. TARGET # --------a ---------- ------- 'atmos_4xdaily.tile1.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile2.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile3.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile4.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile5.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile6.nc' .bitcmp. "@[CNTL]" 'phyf000.nemsio' .bitcmp. "@[CNTL]" 'phyf024.nemsio' .bitcmp. "@[CNTL]" 'dynf000.nemsio' .bitcmp. "@[CNTL]" 'dynf024.nemsio' .bitcmp. "@[CNTL]" 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" # Executable validation. This makes an MD5 sum of the fv3.exe # for comparison against the MD5 sum made in the build job. # This is to ensure the executable did not change during the # test suite. "@[build%target]" .md5cmp. "@[fv3.exe%md5sum]" } spawn execute { # Run the {"@[build%target]", ranks="@[TASKS]" } } } ######################################################################## test fv3_csawmg3shoc127: fv3.exe { use plat use plat%default_resources use fv3_defaults TEST_DESCR="Compare 127 L FV3 with CSAW MG3 and SHOC results with previous trunk version" CNTL_NAME='fv3_csawmg3shoc127' DT_ATMOS='300' SYEAR='2017' SMONTH='08' SDAY='22' SHOUR='00' TASKS=204 INPES='4' JNPES='8' NPX='97' NPY='97' NPZ='127' NPZP='128' WRITE_GROUP=1 WRTTASK_PER_GROUP=12 OUTPUT_GRID="'gaussian_grid'" OUTPUT_FILE="'nemsio'" WRITE_NEMSIOFLIP='.true.' WRITE_FSYNCFLAG ='.true.' COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area FV3_input_data_127="@[plat%INPUTS]/FV3_input_data_127" # The build variable is the fv3.exe or fv3_appbuild.fv3, which # provides the path to the build target, md5 sum, and modulefile. build=fv3.exe prep=fv3_prep( RUNDIR="@[RUNDIR]",modules="@[fv3.exe%modules.nems]", CNTL="@[CNTL]") # Specify input files. filters input { # WORK FILE <=filter= SOURCE FILE 'input.nml' <=atparse= "@[PARMnems]/csawmg3shoc127.nml.IN" 'model_configure' <=atparse= "@[PARMnems]/model_configure.IN" 'aerosol.dat' <=copyfrom= "@[FV3_input_data_127]/INPUT" 'co2historicaldata_201*.txt' <=copyfrom= "@[FV3_input_data_127]/INPUT" 'sfc_emissivity_idx.txt' <=copyfrom= "@[FV3_input_data_127]/INPUT" 'solarconstant_noaa_an.txt' <=copyfrom= "@[FV3_input_data_127]/INPUT" '*grb' <=copyfrom= "@[FV3_input_data_127]" '*_table' <=copyfrom= "@[FV3_input_data_127]" 'diag_table' <=copy= "@[FV3_input_data_127]/diag_table_mg3tke" 'field_table' <=copy= "@[FV3_input_data_127]/field_table_csawmg3shoc" '*configure' <=copyfrom= "@[FV3_input_data_127]" 'INPUT' <=copy= "@[FV3_input_data_127]/INPUT" 'global_h2oprdlos.f77' <=copy= "@[FV3_input_data_127]/global_h2o_pltc.f77" 'global_o3prdlos.f77' <=copy= "@[FV3_input_data_127]/ozprdlos_2015_new_sbuvO3_tclm15_nuchem.f77" } # Specify output files: criteria output { # WORKFILE .comparison. TARGET # --------a ---------- ------- 'atmos_4xdaily.tile1.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile2.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile3.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile4.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile5.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile6.nc' .bitcmp. "@[CNTL]" 'phyf000.nemsio' .bitcmp. "@[CNTL]" 'phyf024.nemsio' .bitcmp. "@[CNTL]" 'dynf000.nemsio' .bitcmp. "@[CNTL]" 'dynf024.nemsio' .bitcmp. "@[CNTL]" 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" # Executable validation. This makes an MD5 sum of the fv3.exe # for comparison against the MD5 sum made in the build job. # This is to ensure the executable did not change during the # test suite. "@[build%target]" .md5cmp. "@[fv3.exe%md5sum]" } spawn execute { # Run the {"@[build%target]", ranks="@[TASKS]" } } } ######################################################################## test fv3_NAM_phys: fv3_NAM_phys.exe { use plat use plat%default_resources use fv3_defaults TEST_DESCR="Compare FV3 NAM physics results with previous trunk version" CNTL_NAME='fv3_NAM_phys' COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area FV3_input_data="@[plat%INPUTS]/FV3_input_data" FHMAX='12' # The build variable is the fv3.exe or fv3_appbuild.fv3, which # provides the path to the build target, md5 sum, and modulefile. build=fv3_NAM_phys.exe prep=fv3_prep( RUNDIR="@[RUNDIR]",modules="@[fv3.exe%modules.nems]", CNTL="@[CNTL]") # Specify input files. filters input { # WORK FILE <=filter= SOURCE FILE 'input.nml' <=atparse= "@[PARMnems]/NAM_phys.nml.IN" 'model_configure' <=atparse= "@[PARMnems]/model_configure.IN" 'aerosol.dat' <=copyfrom= "@[FV3_input_data]/INPUT" 'co2historicaldata_201*.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'sfc_emissivity_idx.txt' <=copyfrom= "@[FV3_input_data]/INPUT" 'solarconstant_noaa_an.txt' <=copyfrom= "@[FV3_input_data]/INPUT" '*grb' <=copyfrom= "@[FV3_input_data]" '*_table' <=copyfrom= "@[FV3_input_data]" 'qr_acr_q*' <=copyfrom= "@[FV3_input_data]" '*.TBL' <=copyfrom= "@[FV3_input_data]" 'DETAMPNEW_DATA*' <=copyfrom= "@[FV3_input_data]" 'diag_table' <=copy= "@[FV3_input_data]/diag_table_NAM_phys" 'field_table' <=copy= "@[FV3_input_data]/field_table_NAM_phys" '*configure' <=copyfrom= "@[FV3_input_data]" 'INPUT' <=copy= "@[FV3_input_data]/INPUT" 'global_o3prdlos.f77' <=copy= "@[FV3_input_data]/INPUT/global_o3prdlos.f77" } # Specify output files: criteria output { # WORKFILE .comparison. TARGET 'atmos_4xdaily.tile1.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile2.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile3.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile4.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile5.nc' .bitcmp. "@[CNTL]" 'atmos_4xdaily.tile6.nc' .bitcmp. "@[CNTL]" 'phyf000.tile1.nc' .bitcmp. "@[CNTL]" 'phyf000.tile2.nc' .bitcmp. "@[CNTL]" 'phyf000.tile3.nc' .bitcmp. "@[CNTL]" 'phyf000.tile4.nc' .bitcmp. "@[CNTL]" 'phyf000.tile5.nc' .bitcmp. "@[CNTL]" 'phyf000.tile6.nc' .bitcmp. "@[CNTL]" 'phyf012.tile1.nc' .bitcmp. "@[CNTL]" 'phyf012.tile2.nc' .bitcmp. "@[CNTL]" 'phyf012.tile3.nc' .bitcmp. "@[CNTL]" 'phyf012.tile4.nc' .bitcmp. "@[CNTL]" 'phyf012.tile5.nc' .bitcmp. "@[CNTL]" 'phyf012.tile6.nc' .bitcmp. "@[CNTL]" 'dynf000.tile1.nc' .bitcmp. "@[CNTL]" 'dynf000.tile2.nc' .bitcmp. "@[CNTL]" 'dynf000.tile3.nc' .bitcmp. "@[CNTL]" 'dynf000.tile4.nc' .bitcmp. "@[CNTL]" 'dynf000.tile5.nc' .bitcmp. "@[CNTL]" 'dynf000.tile6.nc' .bitcmp. "@[CNTL]" 'dynf012.tile1.nc' .bitcmp. "@[CNTL]" 'dynf012.tile2.nc' .bitcmp. "@[CNTL]" 'dynf012.tile3.nc' .bitcmp. "@[CNTL]" 'dynf012.tile4.nc' .bitcmp. "@[CNTL]" 'dynf012.tile5.nc' .bitcmp. "@[CNTL]" 'dynf012.tile6.nc' .bitcmp. "@[CNTL]" 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" # Executable validation. This makes an MD5 sum of the fv3.exe # for comparison against the MD5 sum made in the build job. # This is to ensure the executable did not change during the # test suite. "@[build%target]" .md5cmp. "@[build%md5sum]" } spawn execute { # Run the {"@[build%target]", ranks="@[TASKS]" } } }