diff --git a/AGCM.rc.tmpl b/AGCM.rc.tmpl index 727d48c3..f989acc2 100644 --- a/AGCM.rc.tmpl +++ b/AGCM.rc.tmpl @@ -19,20 +19,36 @@ AGCM.LM: @AGCM_LM AGCM.IM_WORLD: @AGCM_IM @LATLON_AGCM AGCM.JM_WORLD: @AGCM_JM +@CONUS AGCM.STRETCH_FACTOR: @STRETCH_FACTOR +@CONUS AGCM.TARGET_LAT: 39.5 +@CONUS AGCM.TARGET_LON: -98.35 + +########################################################### +# long physics DT options +# ---------------------------------------- +ADJUST_DT: .FALSE. +CHEMISTRY_RUN_AT_INTERVAL_START: .TRUE. +CHEMISTRY_DT: @LONG_DT +GOCART_DT: @LONG_DT +HEMCO_DT: @LONG_DT +GF_DT: @LONG_DT +UW_DT: @LONG_DT +########################################################### + ########################################################### # dynamics options # ---------------------------------------- DYCORE: @DYCORE -#FV3_CONFIG: MONOTONIC +@CONUS FV3_CONFIG: HWT AdvCore_Advection: 0 ########################################################### ########################################################### # radiation options # ---------------------------------------- - SOLAR_DT: 3600 - IRRAD_DT: 3600 -SATSIM_DT: 3600 + SOLAR_DT: @SOLAR_DT + IRRAD_DT: @IRRAD_DT +SATSIM_DT: @IRRAD_DT SOLARAvrg: 0 IRRADAvrg: 0 EOT: .TRUE. @@ -50,7 +66,6 @@ ORBIT_ANAL2B: .TRUE. # ---------------------------------------- @GFDL_1M_CLDMICR_OPTION: GFDL_1M @GFDL_1M_HYDROSTATIC: @GFDL_HYDRO -@GFDL_1M_USE_AEROSOL_NN: .FALSE. ########################################################### ########################################################### @@ -91,7 +106,8 @@ CLOSURE_CONGESTUS: 3 ########################################################### # Enable wet scavenging -MTRI_increments:: +# NOTE: this section should be commented out when running gocart.data +MCHEMTRI_increments:: DU::DU default SS::SS default SU::SO4 default diff --git a/HISTORY.AGCM.rc.tmpl b/HISTORY.AGCM.rc.tmpl index ae84551c..7ed8fa6e 100644 --- a/HISTORY.AGCM.rc.tmpl +++ b/HISTORY.AGCM.rc.tmpl @@ -991,13 +991,13 @@ PC@HIST_IMx@HIST_JM-DC.LM: @AGCM_LM 'NIFLUXV' , 'NI' , 'NH3SV' , 'NI' , 'NH4SV' , 'NI' , - 'MTRI%DU::DUIM' , 'PHYSICS' , 'DUSV' , - 'MTRI%SS::SSIM' , 'PHYSICS' , 'SSSV' , - 'MTRI%CA.oc::CA.ocphilicIM' , 'PHYSICS' , 'OCSV' , - 'MTRI%CA.bc::CA.bcphilicIM' , 'PHYSICS' , 'BCSV' , - 'MTRI%CA.br::CA.brphilicIM' , 'PHYSICS' , 'BRSV' , - 'MTRI%SU::SO4IM' , 'PHYSICS' , 'SUSV' , - 'MTRI%NI::NO3an1IM' , 'PHYSICS' , 'NISV' , + 'MCHEMTRI%DU::DUIM' , 'PHYSICS' , 'DUSV' , + 'MCHEMTRI%SS::SSIM' , 'PHYSICS' , 'SSSV' , + 'MCHEMTRI%CA.oc::CA.ocphilicIM' , 'PHYSICS' , 'OCSV' , + 'MCHEMTRI%CA.bc::CA.bcphilicIM' , 'PHYSICS' , 'BCSV' , + 'MCHEMTRI%CA.br::CA.brphilicIM' , 'PHYSICS' , 'BRSV' , + 'MCHEMTRI%SU::SO4IM' , 'PHYSICS' , 'SUSV' , + 'MCHEMTRI%NI::NO3an1IM' , 'PHYSICS' , 'NISV' , :: tavg3d_aer_p.template: '%y4%m2%d2_%h2%n2z.nc4', diff --git a/fvcore_layout.rc b/fvcore_layout.rc index 50603168..834bad2b 100644 --- a/fvcore_layout.rc +++ b/fvcore_layout.rc @@ -2,6 +2,10 @@ @FV_HYDRO range_warn = .T. fv_debug = .F. + @FV_SCHMIDT + @FV_STRETCH_FAC + @FV_TARGET_LON + @FV_TARGET_LAT / &main_nml @@ -28,8 +32,8 @@ do_qa = .false. tau_l2v = 150. tau_i2v = 150. - tau_revp = 300. - tau_frz = 300. + tau_revp = 450. + tau_frz = 450. dw_land = 0.05 dw_ocean = 0.10 rh_inc = 0.30 diff --git a/gcm_regress.j b/gcm_regress.j index 03e89e3a..2b98be46 100755 --- a/gcm_regress.j +++ b/gcm_regress.j @@ -26,15 +26,68 @@ limit stacksize unlimited # ----------------------------------------------- setenv OMP_NUM_THREADS 1 +####################################################################### +# Command Line Arguments +####################################################################### + +# Set the defaults for our arguments +# ---------------------------------- + +# We use positive logic here. So if we want to run +# both tests, we set both to TRUE. If we want to +# run only one, we set the other to FALSE + +set RUN_STARTSTOP = TRUE +set RUN_LAYOUT = TRUE + +while ($#argv > 0) + switch ($1) + case --startstop: + set RUN_LAYOUT = FALSE + shift + breaksw + case --layout: + set RUN_STARTSTOP = FALSE + shift + breaksw + case -[Hh]: + case --[Hh]elp: + echo "Usage: $0 [--startstop] [--layout]" + echo "" + echo "By default, both the start/stop and layout tests are run." + echo "You can specify one or the other with the following options:" + echo " --startstop: Only run the start/stop test" + echo " --layout: Only run the layout test" + echo " -h, --help: Print this help message" + exit 0 + default: + echo "Unknown argument: $1" + echo "Usage: $0 [--startstop] [--layout]" + echo "" + echo "By default, both the start/stop and layout tests are run." + echo "You can specify one or the other with the following options:" + echo " --startstop: Only run the start/stop test" + echo " --layout: Only run the layout test" + echo " -h, --help: Print this help message" + exit 1 + endsw +end + +# Now because of g5_modules we have to "clear" argv +# otherwise g5_modules will go into script mode and not +# source the modules + +set argv = () + ####################################################################### # Architecture Specific Environment Variables ####################################################################### setenv ARCH `uname` -setenv SITE @SITE -setenv GEOSDIR @GEOSDIR -setenv GEOSBIN @GEOSBIN +setenv SITE @SITE +setenv GEOSDIR @GEOSDIR +setenv GEOSBIN @GEOSBIN source $GEOSBIN/g5_modules setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${BASEDIR}/${ARCH}/lib:${GEOSDIR}/lib @@ -45,17 +98,17 @@ setenv RUN_CMD "$GEOSBIN/esma_mpirun -np " # Experiment Specific Environment Variables ####################################################################### -setenv EXPID @EXPID -setenv EXPDIR @EXPDIR -setenv HOMDIR @HOMDIR -setenv SCRDIR $EXPDIR/scratch +setenv EXPID @EXPID +setenv EXPDIR @EXPDIR +setenv HOMDIR @HOMDIR +setenv SCRDIR $EXPDIR/scratch ####################################################################### # Create Clean Regress Sub-Directory ####################################################################### -mkdir -p $EXPDIR/regress -cd $EXPDIR/regress +mkdir -p $EXPDIR/regress +cd $EXPDIR/regress /bin/rm -rf `/bin/ls | grep -v gcm_regress.j | grep -v slurm` # Copy RC Files from Home Directory @@ -63,8 +116,8 @@ cd $EXPDIR/regress cd $HOMDIR set files = `ls -1 *.rc` foreach file ($files) - set fname = `echo $file | cut -d "." -f1` - cp $fname.rc $EXPDIR/regress + set fname = `echo $file | cut -d "." -f1` + cp $fname.rc $EXPDIR/regress end cd $EXPDIR/regress @@ -85,13 +138,6 @@ set IM = `grep AGCM_IM: $HOMDIR/AGCM.rc | cut -d':' -f2` set JM = `grep AGCM_JM: $HOMDIR/AGCM.rc | cut -d':' -f2` set LM = `grep AGCM_LM: $HOMDIR/AGCM.rc | cut -d':' -f2` -@ IM6 = 6 * $IM -if( $IM6 == $JM ) then - set CUBE = TRUE -else - set CUBE = FALSE -endif - # Create Restart List # ------------------- set rst_files = `cat AGCM.rc | grep "RESTART_FILE" | grep -v VEGDYN | grep -v "#" | cut -d ":" -f1 | cut -d "_" -f1-2` @@ -165,8 +211,32 @@ cat << _EOF_ > $FILE EXPID: ${EXPID} EXPDSC: ${EXPID}_Regression_Test -COLLECTIONS: +COLLECTIONS: test_collection :: + + test_collection.template: '%y4%m2%d2_%h2%n2z.nc4' , + test_collection.archive: '%c/Y%y4' , + test_collection.format: 'CFIO' , + test_collection.deflate: 1 , + test_collection.frequency: 060000 , +@DATAOCEAN test_collection.fields: 'PHIS', 'AGCM' , +@DATAOCEAN 'SLP' , 'DYN' , +@DATAOCEAN 'T' , 'DYN' , +@DATAOCEAN 'U;V' , 'DYN' , +@DATAOCEAN 'Q' , 'MOIST', 'QV', +@MOM5 test_collection.fields: 'UW' ,'MOM' , 'US', +@MOM5 'VW' ,'MOM' , 'VS', +@MOM5 'TW' ,'MOM' , 'TS', +@MOM5 'SW' ,'MOM' , 'SS', +@MOM5 'SLV' ,'MOM' , +@MOM5 'QFLUX','OCEAN' , +@MOM6 test_collection.fields: 'UW' ,'MOM6' , 'US', +@MOM6 'VW' ,'MOM6' , 'VS', +@MOM6 'TW' ,'MOM6' , 'TS', +@MOM6 'SW' ,'MOM6' , 'SS', +@MOM6 'SLV' ,'MOM6' , +@MOM6 'QFLUX','OCEAN' , + :: _EOF_ ################################################################## @@ -220,9 +290,9 @@ if( @EMISSIONS == AMIP_EMISSIONS ) then set AMIP_Transition_Date = 20000301 if( $nymd0 < ${AMIP_Transition_Date} ) then - set AMIP_EMISSIONS_DIRECTORY = $EXPDIR/RC/AMIP.20C + set AMIP_EMISSIONS_DIRECTORY = $EXPDIR/RC/AMIP.20C else - set AMIP_EMISSIONS_DIRECTORY = $EXPDIR/RC/AMIP + set AMIP_EMISSIONS_DIRECTORY = $EXPDIR/RC/AMIP endif else set AMIP_EMISSIONS_DIRECTORY = $EXPDIR/RC/AMIP @@ -307,6 +377,48 @@ if( $REPLAY_MODE == 'Exact' | $REPLAY_MODE == 'Regular' ) then endif +# Copy the original files + +cp CAP.rc CAP.rc.orig +cp AGCM.rc AGCM.rc.orig +cp HISTORY.rc0 HISTORY.rc + +# Capture the original NX and NY + +set NX0 = `grep "^ *NX:" AGCM.rc.orig | cut -d':' -f2` +set NY0 = `grep "^ *NY:" AGCM.rc.orig | cut -d':' -f2` + +# Set the test_durations for the various tests in HHMMSS format +# +# We can generically set the lengths of startstop and layout tests +# and use those values to set the test durations for the various steps + +set length_of_startstop_test = 240000 +set length_of_layout_test = 060000 + +# Now for safety, we need to make sure that the test durations +# are divisible by 3 hours due to a limitation in GOCART. We'll use modulo +# for this +@ length_of_startstop_test_mod = $length_of_startstop_test % 030000 +@ length_of_layout_test_mod = $length_of_layout_test % 030000 + +# If either of these is not zero, then we exit with an error +if( $length_of_startstop_test_mod != 0 || $length_of_layout_test_mod != 0 ) then + echo "ERROR: Both the length_of_startstop_test and length_of_layout_test" + echo " must be divisible by 3 hours due to a limitation in GOCART." + exit 1 +endif + +# Now we can set the test durations for the various steps +set test_duration_step1 = $length_of_startstop_test +set test_duration_step2 = $length_of_layout_test + +# The step3 duration is step1 - step2 +@ test_duration_step3 = $test_duration_step1 - $test_duration_step2 + +# The step4 duration is identical to step2 +set test_duration_step4 = $test_duration_step2 + ################################################################## ###### ###### Perform Regression Test # 1 @@ -314,94 +426,112 @@ endif ###### ################################################################## -set test_duration = 240000 +# This only needs to be run in the startstop case -cp CAP.rc CAP.rc.orig -cp AGCM.rc AGCM.rc.orig -cp HISTORY.rc0 HISTORY.rc +if( $RUN_STARTSTOP == TRUE ) then -set NX0 = `grep "^ *NX:" AGCM.rc.orig | cut -d':' -f2` -set NY0 = `grep "^ *NY:" AGCM.rc.orig | cut -d':' -f2` + ./strip CAP.rc + set oldstring = `cat CAP.rc | grep JOB_SGMT:` + set newstring = "JOB_SGMT: 00000000 ${test_duration_step1}" + /bin/mv CAP.rc CAP.tmp + cat CAP.tmp | sed -e "s?$oldstring?$newstring?g" > CAP.rc -@ NPES0 = $NX0 * $NY0 + set NX = `grep "^ *NX": AGCM.rc | cut -d':' -f2` + set NY = `grep "^ *NY": AGCM.rc | cut -d':' -f2` + @ NPES = $NX * $NY + echo "=== Running test of duration ${test_duration_step1} with NX = $NX and NY = $NY starting at $nymd0 $nhms0 ===" -./strip CAP.rc -set oldstring = `cat CAP.rc | grep JOB_SGMT:` -set newstring = "JOB_SGMT: 00000000 ${test_duration}" -/bin/mv CAP.rc CAP.tmp -cat CAP.tmp | sed -e "s?$oldstring?$newstring?g" > CAP.rc + @OCEAN_PRELOAD $RUN_CMD $NPES ./GEOSgcm.x --logging_config 'logging.yaml' -set NX = `grep "^ *NX": AGCM.rc | cut -d':' -f2` -set NY = `grep "^ *NY": AGCM.rc | cut -d':' -f2` -@ NPES = $NX * $NY -@OCEAN_PRELOAD $RUN_CMD $NPES ./GEOSgcm.x + set date = `cat cap_restart` + set nymde1 = $date[1] + set nhmse1 = $date[2] + foreach chk ( $chk_file_names ) + /bin/mv -v $chk ${chk}.${nymde1}_${nhmse1}.1 + end + @MOM6/bin/mv -v RESTART/MOM.res.nc MOM.res.nc.1 -set date = `cat cap_restart` -set nymde = $date[1] -set nhmse = $date[2] + # Move history as well + set hist_file_names = `ls -1 ${EXPID}.test_collection.*.nc4` + # Need also make another variable storing all the history files + set complete_startstop_hist_file_names = `ls -1 ${EXPID}.test_collection.*.nc4` -foreach chk ( $chk_file_names ) - /bin/mv $chk ${chk}.${nymde}_${nhmse}.1 -end -@MOM6/bin/mv RESTART/MOM.res.nc MOM.res.nc.1 + foreach hist ( $hist_file_names ) + /bin/mv -v $hist ${hist}.${nymde1}_${nhmse1}.1 + end + +endif ################################################################## ###### ###### Perform Regression Test # 2 +###### (6-Hour Using NX:NY Layout) ###### ################################################################## -set test_duration = 180000 - -@DATAOCEAN if( $CUBE == TRUE ) then -@DATAOCEAN @ test_NX = $NPES0 / 6 -@DATAOCEAN @ test_NP = $IM / $test_NX -@DATAOCEAN if($test_NP < 4 ) then -@DATAOCEAN @ test_NX = $IM / 4 # To ensure enough gridpoints for HALO -@DATAOCEAN endif -@DATAOCEAN set test_NY = 6 -@DATAOCEAN else -@DATAOCEAN set test_NX = $NY0 -@DATAOCEAN set test_NY = $NX0 -@DATAOCEAN endif - -@COUPLED set test_NX = $NX0 -@COUPLED set test_NY = $NY0 +# This case runs for both startstop and layout /bin/rm cap_restart echo $nymd0 $nhms0 > cap_restart -cp CAP.rc.orig CAP.rc -cp AGCM.rc.orig AGCM.rc +cp CAP.rc.orig CAP.rc +cp AGCM.rc.orig AGCM.rc cp HISTORY.rc0 HISTORY.rc +@COUPLED /bin/rm -rf INPUT +@COUPLED /bin/mkdir INPUT +@COUPLED cp $EXPDIR/RESTART/* INPUT + ./strip CAP.rc -set oldstring = `cat CAP.rc | grep JOB_SGMT:` -set newstring = "JOB_SGMT: 00000000 ${test_duration}" +set oldstring = `cat CAP.rc | grep JOB_SGMT:` +set newstring = "JOB_SGMT: 00000000 ${test_duration_step2}" /bin/mv CAP.rc CAP.tmp cat CAP.tmp | sed -e "s?$oldstring?$newstring?g" > CAP.rc -./strip AGCM.rc -set oldstring = `cat AGCM.rc | grep "^ *NX:"` -set newstring = "NX: ${test_NX}" -/bin/mv AGCM.rc AGCM.tmp -cat AGCM.tmp | sed -e "s?$oldstring?$newstring?g" > AGCM.rc -set oldstring = `cat AGCM.rc | grep "^ *NY:"` -set newstring = "NY: ${test_NY}" -/bin/mv AGCM.rc AGCM.tmp -cat AGCM.tmp | sed -e "s?$oldstring?$newstring?g" > AGCM.rc - setenv YEAR `cat cap_restart | cut -c1-4` ./linkbcs set NX = `grep "^ *NX": AGCM.rc | cut -d':' -f2` set NY = `grep "^ *NY": AGCM.rc | cut -d':' -f2` @ NPES = $NX * $NY -@OCEAN_PRELOAD $RUN_CMD $NPES ./GEOSgcm.x + +echo "=== Running test of duration ${test_duration_step2} with NX = $NX and NY = $NY starting at $nymd0 $nhms0 ===" + +@OCEAN_PRELOAD $RUN_CMD $NPES ./GEOSgcm.x --logging_config 'logging.yaml' + +set date = `cat cap_restart` +set nymde2 = $date[1] +set nhmse2 = $date[2] + +# If we are doing startstop we need to copy the checkpoints +# If we run layout only, we need to move the checkpoints +if ($RUN_STARTSTOP == TRUE) then + set MOVE_OR_COPY = "/bin/cp -v" +else + set MOVE_OR_COPY = "/bin/mv -v" +endif + +foreach chk ( $chk_file_names ) + $MOVE_OR_COPY $chk ${chk}.${nymde2}_${nhmse2}.2 +end +@MOM6 $MOVE_OR_COPY RESTART/MOM.res.nc MOM.res.nc.2 + +# *Copy* history as well +set hist_file_names = `ls -1 ${EXPID}.test_collection.*.nc4` + +# Need also make another variable storing all the history files +set complete_layout_hist_file_names = `ls -1 ${EXPID}.test_collection.*.nc4` + +# Note: We copy the history here because this lets the file(s) +# be available for Test #3 so a full compare can be made +# with Test #1 +foreach hist ( $hist_file_names ) + $MOVE_OR_COPY $hist ${hist}.${nymde2}_${nhmse2}.2 +end foreach rst ( $rst_file_names ) - /bin/rm -f $rst + /bin/rm -f $rst end set numrst = `echo $rst_files | wc -w` set numchk = `echo $chk_files | wc -w` @@ -431,132 +561,375 @@ end ################################################################## ###### ###### Perform Regression Test # 3 +###### (18-Hour Using NX:NY Layout) ###### ################################################################## -set test_duration = 060000 +# This case is only needed for startstop + +if ($RUN_STARTSTOP == TRUE) then + + cp HISTORY.rc0 HISTORY.rc + + @MOM6# When you restart in MOM6 mode, you must change input_filename + @MOM6# in the input.nml file from 'n' to 'r' + @MOM6 /bin/cp input.nml input.nml.orig + @MOM6 sed -i -e "s/input_filename = 'n'/input_filename = 'r'/g" input.nml + + ./strip CAP.rc + set oldstring = `cat CAP.rc | grep JOB_SGMT:` + set newstring = "JOB_SGMT: 00000000 ${test_duration_step3}" + /bin/mv CAP.rc CAP.tmp + cat CAP.tmp | sed -e "s?$oldstring?$newstring?g" > CAP.rc + + setenv YEAR `cat cap_restart | cut -c1-4` + ./linkbcs + set NX = `grep "^ *NX": AGCM.rc | cut -d':' -f2` + set NY = `grep "^ *NY": AGCM.rc | cut -d':' -f2` + @ NPES = $NX * $NY + + set date = `cat cap_restart` + set nymdb = $date[1] + set nhmsb = $date[2] + + echo "=== Running test of duration ${test_duration_step3} with NX = $NX and NY = $NY starting at $nymdb $nhmsb ===" + + @OCEAN_PRELOAD $RUN_CMD $NPES ./GEOSgcm.x --logging_config 'logging.yaml' + + set date = `cat cap_restart` + set nymde3 = $date[1] + set nhmse3 = $date[2] + + foreach chk ( $chk_file_names ) + /bin/mv -v $chk ${chk}.${nymde3}_${nhmse3}.3 + end + @MOM6/bin/mv -v RESTART/MOM.res.nc MOM.res.nc.3 + + # Move history as well + set hist_file_names = `ls -1 ${EXPID}.test_collection.*.nc4` + + foreach hist ( $hist_file_names ) + /bin/mv -v $hist ${hist}.${nymde3}_${nhmse3}.3 + end -if( $CUBE == TRUE ) then - set test_NX = 1 - set test_NY = 6 - set test_Cores = 6 -else - set test_NX = 1 - set test_NY = 2 - set test_Cores = 2 endif -./strip CAP.rc -set oldstring = `cat CAP.rc | grep JOB_SGMT:` -set newstring = "JOB_SGMT: 00000000 ${test_duration}" -/bin/mv CAP.rc CAP.tmp -cat CAP.tmp | sed -e "s?$oldstring?$newstring?g" > CAP.rc +################################################################## +###### +###### Perform Regression Test # 4 +###### (6-Hour Using 1:6 Layout) +###### +################################################################## -./strip AGCM.rc -set oldstring = `cat AGCM.rc | grep "^ *NX:"` -set newstring = "NX: ${test_NX}" -/bin/mv AGCM.rc AGCM.tmp -cat AGCM.tmp | sed -e "s?$oldstring?$newstring?g" > AGCM.rc -set oldstring = `cat AGCM.rc | grep "^ *NY:"` -set newstring = "NY: ${test_NY}" -/bin/mv AGCM.rc AGCM.tmp -cat AGCM.tmp | sed -e "s?$oldstring?$newstring?g" > AGCM.rc -@COUPLED set oldstring = `cat AGCM.rc | grep "^ *OGCM.NX:"` -@COUPLED set newstring = "OGCM.NX: ${test_NY}" -@COUPLED /bin/mv AGCM.rc AGCM.tmp -@COUPLED cat AGCM.tmp | sed -e "s?$oldstring?$newstring?g" > AGCM.rc -@COUPLED set oldstring = `cat AGCM.rc | grep "^ *OGCM.NY:"` -@COUPLED set newstring = "OGCM.NY: ${test_NX}" -@COUPLED /bin/mv AGCM.rc AGCM.tmp -@COUPLED cat AGCM.tmp | sed -e "s?$oldstring?$newstring?g" > AGCM.rc - -@MOM5sed -r -i -e "/^ *layout/ s#= ([0-9]+),*([0-9]+)#= ${test_NY},${test_NX}#" input.nml -@MOM6sed -r -i -e "/^ *LAYOUT/ s#= ([0-9]+), *([0-9]+)#= ${test_NY}, ${test_NX}#" MOM_input +# This case runs only for layout + +if ( $RUN_LAYOUT == TRUE) then + + set test_NX = 1 + set test_NY = 6 + + # Copy Original Restarts to Regress directory + # ------------------------------------------- + foreach rst ( $rst_file_names ) + /bin/rm -f $rst + cp $EXPDIR/$rst $EXPDIR/regress + end + + @COUPLED /bin/rm -rf INPUT + @COUPLED /bin/mkdir INPUT + @COUPLED cp $EXPDIR/RESTART/* INPUT + + @COUPLED # restore original input.nml + @COUPLED /bin/mv input.nml.orig input.nml + + /bin/rm cap_restart + echo $nymd0 $nhms0 > cap_restart + + cp CAP.rc.orig CAP.rc + cp AGCM.rc.orig AGCM.rc + cp HISTORY.rc0 HISTORY.rc + + ./strip CAP.rc + set oldstring = `cat CAP.rc | grep JOB_SGMT:` + set newstring = "JOB_SGMT: 00000000 ${test_duration_step4}" + /bin/mv CAP.rc CAP.tmp + cat CAP.tmp | sed -e "s?$oldstring?$newstring?g" > CAP.rc + + ./strip AGCM.rc + set oldstring = `cat AGCM.rc | grep "^ *NX:"` + set newstring = "NX: ${test_NX}" + /bin/mv AGCM.rc AGCM.tmp + cat AGCM.tmp | sed -e "s?$oldstring?$newstring?g" > AGCM.rc + set oldstring = `cat AGCM.rc | grep "^ *NY:"` + set newstring = "NY: ${test_NY}" + /bin/mv AGCM.rc AGCM.tmp + cat AGCM.tmp | sed -e "s?$oldstring?$newstring?g" > AGCM.rc + @COUPLED set oldstring = `cat AGCM.rc | grep "^ *OGCM.NX:"` + @COUPLED set newstring = "OGCM.NX: ${test_NY}" + @COUPLED /bin/mv AGCM.rc AGCM.tmp + @COUPLED cat AGCM.tmp | sed -e "s?$oldstring?$newstring?g" > AGCM.rc + @COUPLED set oldstring = `cat AGCM.rc | grep "^ *OGCM.NY:"` + @COUPLED set newstring = "OGCM.NY: ${test_NX}" + @COUPLED /bin/mv AGCM.rc AGCM.tmp + @COUPLED cat AGCM.tmp | sed -e "s?$oldstring?$newstring?g" > AGCM.rc + + @MOM5sed -r -i -e "/^ *layout/ s#= ([0-9]+),*([0-9]+)#= ${test_NY},${test_NX}#" input.nml + @MOM6sed -r -i -e "s/#override LAYOUT = 3, 2/#override LAYOUT = ${test_NY}, ${test_NX}/g" MOM_override + + setenv YEAR `cat cap_restart | cut -c1-4` + ./linkbcs + set NX = `grep "^ *NX": AGCM.rc | cut -d':' -f2` + set NY = `grep "^ *NY": AGCM.rc | cut -d':' -f2` + @ NPES = $NX * $NY + + echo "=== Running test of duration ${test_duration_step4} with NX = $test_NX and NY = $test_NY starting at $nymd0 $nhms0 ===" + + @OCEAN_PRELOAD $RUN_CMD $NPES ./GEOSgcm.x --logging_config 'logging.yaml' + + set date = `cat cap_restart` + set nymde4 = $date[1] + set nhmse4 = $date[2] + + foreach chk ( $chk_file_names ) + /bin/mv -v $chk ${chk}.${nymde4}_${nhmse4}.4 + end + @MOM6/bin/mv -v RESTART/MOM.res.nc MOM.res.nc.4 + + # Move history as well + set hist_file_names = `ls -1 ${EXPID}.test_collection.*.nc4` + + foreach hist ( $hist_file_names ) + /bin/mv -v $hist ${hist}.${nymde4}_${nhmse4}.4 + end -setenv YEAR `cat cap_restart | cut -c1-4` -./linkbcs -set NX = `grep "^ *NX": AGCM.rc | cut -d':' -f2` -set NY = `grep "^ *NY": AGCM.rc | cut -d':' -f2` -@ NPES = $NX * $NY -@OCEAN_PRELOAD $RUN_CMD $NPES ./GEOSgcm.x +endif -set date = `cat cap_restart` -set nymde = $date[1] -set nhmse = $date[2] +####################################################################### +# Compare Restarts +# for start stop regression +####################################################################### -foreach chk ( $chk_file_names ) - /bin/mv $chk ${chk}.${nymde}_${nhmse}.2 -end -@MOM6/bin/mv RESTART/MOM.res.nc MOM.res.nc.2 +# This part compares the restarts from the 24-hour NXxNY run (.1) with the +# restarts at the end of the 6-hour + 18-hour runs (.3) + +if ($RUN_STARTSTOP == TRUE) then + + set NCCMP = `echo ${BASEDIR}/${ARCH}/bin/nccmp -dmfgBq ` + + if( -e startstop_regress_test ) /bin/rm startstop_regress_test + + echo "=== Comparing restarts from ${NX0}x${NY0} run of duration ${test_duration_step1} with restarts from ${test_duration_step2} + ${test_duration_step3} ${NX0}x${NY0} runs ===" + + set startstop_pass = true + foreach chk ( $chk_file_names ) + set file1 = ${chk}.${nymde1}_${nhmse1}.1 + set file2 = ${chk}.${nymde3}_${nhmse3}.3 + if( -e $file1 && -e $file2 ) then + set check = true + foreach exempt (${EXEMPT_chk}) + if( $chk == $exempt ) set check = false + end + if( $check == true ) then + echo Comparing ${chk} + + # compare binary checkpoint files + cmp $file1 $file2 + if( $status == 0 ) then + echo Start-Stop Success! + echo " " + else + echo Start-Stop Failed! + echo " " + set startstop_pass = false + endif + + # compare NetCDF-4 checkpoint files + # ${NCCMP} $file1 $file2 + # if( status == 0 ) then + # echo Start-Stop Success! + # echo " " + # else + # echo Start-Stop Failed! + # echo " " + # set startstop_pass = false + # endif + + endif + endif + end + + @MOM6# check MOM.res.nc (MOM6 restart) + @MOM6set file1 = MOM.res.nc.1 + @MOM6set file2 = MOM.res.nc.3 + @MOM6if( -e $file1 && -e $file2 ) then + @MOM6 set check = true + @MOM6 if( $check == true ) then + @MOM6 echo Comparing "MOM6 restarts" + @MOM6 cmp $file1 $file2 + @MOM6 if( $status == 0 ) then + @MOM6 echo Start-Stop Success! + @MOM6 echo " " + @MOM6 else + @MOM6 echo Start-Stop Failed! + @MOM6 echo " " + @MOM6 set pass = false + @MOM6 endif + @MOM6 endif + @MOM6endif + + echo "=== Comparing history files from ${NX0}x${NY0} run of duration ${test_duration_step1} with restarts from ${test_duration_step2} + ${test_duration_step3} ${NX0}x${NY0} runs ===" + + # Check history files + foreach hist ( $complete_startstop_hist_file_names ) + set file1 = ${hist}.${nymde1}_${nhmse1}.1 + set file2 = ${hist}.${nymde3}_${nhmse3}.3 + if( -e $file1 && -e $file2 ) then + set check = true + if( $check == true ) then + echo Comparing ${hist} + + # compare history files + ${NCCMP} $file1 $file2 + if( $status == 0 ) then + echo Start-Stop Success! + echo " " + else + echo Start-Stop Failed! + echo " " + set startstop_pass = false + endif + + endif + endif + end + + if( $startstop_pass == true ) then + echo " PASS " > startstop_regress_test + else + echo " FAIL " > startstop_regress_test + endif + +else + + # We need to set something here for the "overall" regress_test file + set startstop_pass = true + +endif ####################################################################### # Compare Restarts +# for layout regression ####################################################################### -set CDO = `echo ${BASEDIR}/${ARCH}/bin/cdo -Q -s diffn` +# This part compares the restarts from the 6-hour NXxNY run (.2) with the +# restarts from the 6-hour 1x6 run (.4) + +if ($RUN_LAYOUT == TRUE) then + + set NCCMP = `echo ${BASEDIR}/${ARCH}/bin/nccmp -dmfgBq ` + + if( -e layout_regress_test ) /bin/rm layout_regress_test + + echo "=== Comparing restarts from ${NX0}x${NY0} run of duration ${test_duration_step2} with restarts from ${test_NX}x${test_NY} run of duration ${test_duration_step4} ===" + + set layout_pass = true + foreach chk ( $chk_file_names ) + set file1 = ${chk}.${nymde2}_${nhmse2}.2 + set file2 = ${chk}.${nymde4}_${nhmse4}.4 + if( -e $file1 && -e $file2 ) then + set check = true + foreach exempt (${EXEMPT_chk}) + if( $chk == $exempt ) set check = false + end + if( $check == true ) then + echo Comparing ${chk} + + # compare binary checkpoint files + cmp $file1 $file2 + if( $status == 0 ) then + echo Layout Success! + echo " " + else + echo Layout Failed! + echo " " + set layout_pass = false + endif + + # compare NetCDF-4 checkpoint files + # ${NCCMP} $file1 $file2 + # if( status == 0 ) then + # echo Layout Success! + # echo " " + # else + # echo Layout Failed! + # echo " " + # set layout_pass = false + # endif -if( -e regress_test ) /bin/rm regress_test + endif + endif + end + + @MOM6# check MOM.res.nc (MOM6 restart) + @MOM6set file1 = MOM.res.nc.2 + @MOM6set file2 = MOM.res.nc.4 + @MOM6if( -e $file1 && -e $file2 ) then + @MOM6 set check = true + @MOM6 if( $check == true ) then + @MOM6 echo Comparing "MOM6 restarts" + @MOM6 cmp $file1 $file2 + @MOM6 if( $status == 0 ) then + @MOM6 echo Layout Success! + @MOM6 echo " " + @MOM6 else + @MOM6 echo Layout Failed! + @MOM6 echo " " + @MOM6 set pass = false + @MOM6 endif + @MOM6 endif + @MOM6endif + + echo "=== Comparing history files from 6-hour ${NX0}x${NY0} run with restarts from 6-hour ${test_NX}x${test_NY} run ===" + + # Check history files + foreach hist ( $complete_layout_hist_file_names ) + set file1 = ${hist}.${nymde2}_${nhmse4}.2 + set file2 = ${hist}.${nymde2}_${nhmse4}.4 + if( -e $file1 && -e $file2 ) then + set check = true + if( $check == true ) then + echo Comparing ${hist} + + # compare history files + ${NCCMP} $file1 $file2 + if( $status == 0 ) then + echo Layout Success! + echo " " + else + echo Layout Failed! + echo " " + set layout_pass = false + endif -set pass = true -foreach chk ( $chk_file_names ) - set file1 = ${chk}.${nymde}_${nhmse}.1 - set file2 = ${chk}.${nymde}_${nhmse}.2 - if( -e $file1 && -e $file2 ) then - set check = true - foreach exempt (${EXEMPT_chk}) - if( $chk == $exempt ) set check = false - end - if( $check == true ) then - echo Comparing ${chk} - -# compare binary checkpoint files - cmp $file1 $file2 - if( $status == 0 ) then - echo Success! - echo " " - else - echo Failed! - echo " " - set pass = false endif + endif + end -# compare NetCDF-4 checkpoint files -# set NUMDIFF = `${CDO} $file1 $file2 | awk '{print $1}'` -# if( "$NUMDIFF" == "" ) then -# echo Success! -# echo " " -# else -# echo Failed! -# echo `${CDO} $file1 $file2` -# echo " " -# set pass = false -# endif - - endif - endif -end + if( $layout_pass == true ) then + echo " PASS " > layout_regress_test + else + echo " FAIL " > layout_regress_test + endif + +else + + # We need to set something here for the "overal" regress_test file + set layout_pass = true + +endif -# check MOM.res.nc (MOM6 restart) -@MOM6set file1 = MOM.res.nc.1 -@MOM6set file2 = MOM.res.nc.2 -@MOM6if( -e $file1 && -e $file2 ) then -@MOM6 set check = true -@MOM6 if( $check == true ) then -@MOM6 echo Comparing "MOM6 restarts" -@MOM6 cmp $file1 $file2 -@MOM6 if( $status == 0 ) then -@MOM6 echo Success! -@MOM6 echo " " -@MOM6 else -@MOM6 echo Failed! -@MOM6 echo " " -@MOM6 set pass = false -@MOM6 endif -@MOM6 endif -@MOM6endif - -if( $pass == true ) then - echo " PASS " > regress_test +if( $startstop_pass == true && $layout_pass == true ) then + echo " PASS " > regress_test else - echo " FAIL " > regress_test + echo " FAIL " > regress_test endif diff --git a/gcm_setup b/gcm_setup index 6e8600f4..89ed8288 100755 --- a/gcm_setup +++ b/gcm_setup @@ -198,14 +198,11 @@ echo " ${C2}c1440 - 1/16 deg (${C1} 6.25 km${C2}) ${CN}" echo " ${C2}c2880 - 1/32 deg (${C1} 3.125 km${C2}) ${CN}" echo " ${C2}c5760 - 1/64 deg (${C1} 1.5625 km${C2}) ${CN}" echo " ${C2} CONUS Stretched Grids " -echo " ${C2}c270 -- ${C1} 13.0 -100 km${C2}) ${CN} " -echo " ${C2}c540 -- ${C1} 7.0 - 50 km${C2}) ${CN} " -echo " ${C2}c1080 - ${C1} 3.5 - 25 km${C2}) ${CN} " -echo " ${C2}c2160 - ${C1} 1.25- 12 km${C2}) ${CN} " -echo " ${C2} DYAMOND Grids " -echo " ${C2}c768 -- 1/8 deg (${C1} 12.0 km${C2}) ${CN}" -echo " ${C2}c1536 - 1/16 deg (${C1} 6.0 km${C2}) ${CN}" -echo " ${C2}c3072 - 1/32 deg (${C1} 3.0 km${C2}) ${CN}" +echo " ${C2}c270 -- ${C1} 16.0 -100 km${C2}) ${CN} " +echo " ${C2}c540 -- ${C1} 8.0 - 50 km${C2}) ${CN} " +echo " ${C2}c1080 - ${C1} 4.0 - 25 km${C2}) ${CN} " +echo " ${C2}c1536 - ${C1} 2.0 - 20 km${C2}) ${CN} " +echo " ${C2}c2160 - ${C1} 2.0 - 12 km${C2}) ${CN} " echo " " set HRCODE = `echo $<` set HRCODE = `echo $HRCODE | tr "[:upper:]" "[:lower:]"` @@ -223,10 +220,8 @@ if( $HRCODE != 'c12' & \ $HRCODE != 'c270' & \ $HRCODE != 'c540' & \ $HRCODE != 'c1080' & \ - $HRCODE != 'c2160' & \ - $HRCODE != 'c768' & \ $HRCODE != 'c1536' & \ - $HRCODE != 'c3072' ) goto HRCODE + $HRCODE != 'c2160' ) goto HRCODE set Resolution = $HRCODE @@ -327,10 +322,8 @@ if( $HRCODE == 'c180' | \ $HRCODE == 'c270' | \ $HRCODE == 'c540' | \ $HRCODE == 'c1080' | \ - $HRCODE == 'c2160' | \ - $HRCODE == 'c768' | \ $HRCODE == 'c1536' | \ - $HRCODE == 'c3072' ) then + $HRCODE == 'c2160' ) then set DEFAULT_DO_IOS = TRUE echo "Do you wish to ${C1}IOSERVER${CN}? (Default: ${C2}YES${CN} or ${C2}TRUE${CN})" @@ -815,7 +808,7 @@ if( $AGCM_IM == "c12" ) then set SOLAR_DT = 3600 set IRRAD_DT = 3600 set OCEAN_DT = $IRRAD_DT - set CHEM_DT = $DT + set LONG_DT = $DT set AGCM_IM = 12 set AGCM_JM = `expr $AGCM_IM \* 6` # C12 MOM6 should be 1x6 to match the default 3x2 ocean layout @@ -841,7 +834,7 @@ if( $AGCM_IM == "c24" ) then set SOLAR_DT = 3600 set IRRAD_DT = 3600 set OCEAN_DT = $IRRAD_DT - set CHEM_DT = $DT + set LONG_DT = $DT set AGCM_IM = 24 set AGCM_JM = `expr $AGCM_IM \* 6` set NX = 4 @@ -862,7 +855,7 @@ if( $AGCM_IM == "c48" ) then set SOLAR_DT = 3600 set IRRAD_DT = 3600 set OCEAN_DT = $IRRAD_DT - set CHEM_DT = $DT + set LONG_DT = $DT set AGCM_IM = 48 set AGCM_JM = `expr $AGCM_IM \* 6` set NX = 4 @@ -877,9 +870,10 @@ if( $AGCM_IM == "c48" ) then set POST_NDS = 4 endif if( $AGCM_IM == "c90" ) then - set DT = 900 + set DT = 1800 set SOLAR_DT = 3600 set IRRAD_DT = 3600 + set LONG_DT = $DT set AGCM_IM = 90 set AGCM_JM = `expr $AGCM_IM \* 6` if( $OGCM == TRUE ) then @@ -887,11 +881,10 @@ if( $AGCM_IM == "c90" ) then set NY = $OGCM_NX set OCEAN_DT = $DT else - set NX = 4 + set NX = 3 set NY = `expr $NX \* 6` set OCEAN_DT = $IRRAD_DT endif - set CHEM_DT = $DT set HYDROSTATIC = $USE_HYDROSTATIC set HIST_IM = `expr $AGCM_IM \* 4` set HIST_JM = `expr $AGCM_IM \* 2 + 1` @@ -902,10 +895,10 @@ if( $AGCM_IM == "c90" ) then set POST_NDS = 8 endif if( $AGCM_IM == "c180" ) then - set DT = 600 + set DT = 900 set SOLAR_DT = 3600 set IRRAD_DT = 3600 - set CHEM_DT = $DT + set LONG_DT = $DT set AGCM_IM = 180 set AGCM_JM = `expr $AGCM_IM \* 6` if( $OGCM == TRUE ) then @@ -932,7 +925,7 @@ if( $AGCM_IM == "c360" ) then set SOLAR_DT = 3600 set IRRAD_DT = 3600 set OCEAN_DT = $IRRAD_DT - set CHEM_DT = $DT + set LONG_DT = $DT set AGCM_IM = 360 set AGCM_JM = `expr $AGCM_IM \* 6` set NX = 12 @@ -953,10 +946,10 @@ if( $AGCM_IM == "c720" ) then set SOLAR_DT = 3600 set IRRAD_DT = 3600 set OCEAN_DT = $IRRAD_DT - set CHEM_DT = $DT + set LONG_DT = 450 set AGCM_IM = 720 set AGCM_JM = `expr $AGCM_IM \* 6` - set NX = 16 + set NX = 24 set NY = `expr $NX \* 6` set HYDROSTATIC = $USE_HYDROSTATIC set HIST_IM = `expr $AGCM_IM \* 4` @@ -972,13 +965,13 @@ if( $AGCM_IM == "c720" ) then endif if( $AGCM_IM == "c1440" ) then set DT = 150 - set SOLAR_DT = 3600 - set IRRAD_DT = 3600 + set SOLAR_DT = 1800 + set IRRAD_DT = 1800 set OCEAN_DT = $IRRAD_DT - set CHEM_DT = $DT + set LONG_DT = 300 set AGCM_IM = 1440 set AGCM_JM = `expr $AGCM_IM \* 6` - set NX = 30 + set NX = 48 set NY = `expr $NX \* 6` set HYDROSTATIC = $USE_HYDROSTATIC set HIST_IM = `expr $AGCM_IM \* 4` @@ -994,13 +987,13 @@ if( $AGCM_IM == "c1440" ) then endif if( $AGCM_IM == "c2880" ) then set DT = 75 - set SOLAR_DT = 3600 - set IRRAD_DT = 3600 + set SOLAR_DT = 1800 + set IRRAD_DT = 1800 set OCEAN_DT = $IRRAD_DT - set CHEM_DT = $DT + set LONG_DT = 300 set AGCM_IM = 2880 set AGCM_JM = `expr $AGCM_IM \* 6` - set NX = 30 + set NX = 96 set NY = `expr $NX \* 6 \* 2` set HYDROSTATIC = $USE_HYDROSTATIC set HIST_IM = `expr $AGCM_IM \* 4` @@ -1016,14 +1009,14 @@ if( $AGCM_IM == "c2880" ) then set DEF_IOS_NDS = 4 endif if( $AGCM_IM == "c5760" ) then - set DT = 150 - set SOLAR_DT = 3600 - set IRRAD_DT = 3600 + set DT = 30 + set SOLAR_DT = 900 + set IRRAD_DT = 900 set OCEAN_DT = $IRRAD_DT - set CHEM_DT = $DT + set LONG_DT = 300 set AGCM_IM = 5760 set AGCM_JM = `expr $AGCM_IM \* 6` - set NX = 60 + set NX = 192 set NY = `expr $NX \* 6` set HYDROSTATIC = $USE_HYDROSTATIC set HIST_IM = `expr $AGCM_IM \* 4` @@ -1039,15 +1032,16 @@ if( $AGCM_IM == "c5760" ) then set DEF_IOS_NDS = 4 endif # CONUS Stretched Grids +set CONUS = '#' if( $AGCM_IM == "c270" ) then - set DT = 225 + set DT = 600 set SOLAR_DT = 3600 set IRRAD_DT = 3600 set OCEAN_DT = $IRRAD_DT - set CHEM_DT = $DT + set LONG_DT = $DT set AGCM_IM = 270 set AGCM_JM = `expr $AGCM_IM \* 6` - set NX = 9 + set NX = 18 set NY = `expr $NX \* 6 \* 2` set HYDROSTATIC = $USE_HYDROSTATIC set HIST_IM = `expr $AGCM_IM \* 4` @@ -1060,16 +1054,18 @@ if( $AGCM_IM == "c270" ) then set CNV_NX = 8 set POST_NDS = 32 set USE_SHMEM = 1 + set CONUS = '' + set STRETCH_FACTOR = 2.5 endif if( $AGCM_IM == "c540" ) then - set DT = 150 + set DT = 300 set SOLAR_DT = 3600 set IRRAD_DT = 3600 set OCEAN_DT = $IRRAD_DT - set CHEM_DT = $DT + set LONG_DT = $DT set AGCM_IM = 540 set AGCM_JM = `expr $AGCM_IM \* 6` - set NX = 18 + set NX = 36 set NY = `expr $NX \* 6 \* 2` set HYDROSTATIC = $USE_HYDROSTATIC set HIST_IM = `expr $AGCM_IM \* 4` @@ -1082,37 +1078,17 @@ if( $AGCM_IM == "c540" ) then set CNV_NX = 8 set POST_NDS = 32 set USE_SHMEM = 1 + set CONUS = '' + set STRETCH_FACTOR = 2.5 endif if( $AGCM_IM == "c1080" ) then - set DT = 75 - set SOLAR_DT = 3600 - set IRRAD_DT = 3600 + set DT = 150 + set SOLAR_DT = 900 + set IRRAD_DT = 900 set OCEAN_DT = $IRRAD_DT - set CHEM_DT = $DT + set LONG_DT = 300 set AGCM_IM = 1080 set AGCM_JM = `expr $AGCM_IM \* 6` - set NX = 36 - set NY = `expr $NX \* 6 \* 2` - set HYDROSTATIC = $USE_HYDROSTATIC - set HIST_IM = `expr $AGCM_IM \* 4` - set HIST_JM = `expr $AGCM_IM \* 2 + 1` - set GRID_FILE = "Gnomonic_c${AGCM_IM}.dat" - set NUM_READERS = 6 - set JOB_SGMT = 00000001 - set NUM_SGMT = 1 - set ATMOS_RES = CF1080x6C - set CNV_NX = 8 - set POST_NDS = 32 - set USE_SHMEM = 1 -endif -if( $AGCM_IM == "c2160" ) then - set DT = 60 - set SOLAR_DT = 3600 - set IRRAD_DT = 3600 - set OCEAN_DT = $IRRAD_DT - set CHEM_DT = $DT - set AGCM_IM = 2160 - set AGCM_JM = `expr $AGCM_IM \* 6` set NX = 72 set NY = `expr $NX \* 6 \* 2` set HYDROSTATIC = $USE_HYDROSTATIC @@ -1122,43 +1098,22 @@ if( $AGCM_IM == "c2160" ) then set NUM_READERS = 6 set JOB_SGMT = 00000001 set NUM_SGMT = 1 - set ATMOS_RES = CF2160x6C + set ATMOS_RES = CF1080x6C set CNV_NX = 8 set POST_NDS = 32 set USE_SHMEM = 1 -endif -# DYAMOND Resolutions -if( $AGCM_IM == "c768" ) then - set DT = 180 - set SOLAR_DT = 3600 - set IRRAD_DT = 3600 - set OCEAN_DT = $IRRAD_DT - set CHEM_DT = 900 - set AGCM_IM = 768 - set AGCM_JM = `expr $AGCM_IM \* 6` - set NX = 32 - set NY = `expr $NX \* 6` - set HYDROSTATIC = $USE_HYDROSTATIC - set HIST_IM = `expr $AGCM_IM \* 4` - set HIST_JM = `expr $AGCM_IM \* 2 + 1` - set GRID_FILE = "Gnomonic_c${AGCM_IM}.dat" - set NUM_READERS = 6 - set JOB_SGMT = 00000005 - set NUM_SGMT = 1 - set ATMOS_RES = CF0768x6C - set CNV_NX = 8 - set POST_NDS = 16 - set USE_SHMEM = 1 + set CONUS = '' + set STRETCH_FACTOR = 2.5 endif if( $AGCM_IM == "c1536" ) then - set DT = 90 - set SOLAR_DT = 3600 - set IRRAD_DT = 3600 + set DT = 75 + set SOLAR_DT = 900 + set IRRAD_DT = 900 set OCEAN_DT = $IRRAD_DT - set CHEM_DT = 900 + set LONG_DT = 300 set AGCM_IM = 1536 set AGCM_JM = `expr $AGCM_IM \* 6` - set NX = 64 + set NX = 96 set NY = `expr $NX \* 6` set HYDROSTATIC = $USE_HYDROSTATIC set HIST_IM = `expr $AGCM_IM \* 4` @@ -1169,30 +1124,34 @@ if( $AGCM_IM == "c1536" ) then set NUM_SGMT = 1 set ATMOS_RES = CF1536x6C set CNV_NX = 8 - set POST_NDS = 16 + set POST_NDS = 16 set USE_SHMEM = 1 + set CONUS = '' + set STRETCH_FACTOR = 3.0 endif -if( $AGCM_IM == "c3072" ) then - set DT = 45 - set SOLAR_DT = 3600 - set IRRAD_DT = 3600 +if( $AGCM_IM == "c2160" ) then + set DT = 60 + set SOLAR_DT = 900 + set IRRAD_DT = 900 set OCEAN_DT = $IRRAD_DT - set CHEM_DT = 900 - set AGCM_IM = 3072 + set LONG_DT = 300 + set AGCM_IM = 2160 set AGCM_JM = `expr $AGCM_IM \* 6` - set NX = 64 - set NY = `expr $NX \* 6` + set NX = 192 + set NY = `expr $NX \* 6 \* 2` set HYDROSTATIC = $USE_HYDROSTATIC set HIST_IM = `expr $AGCM_IM \* 4` set HIST_JM = `expr $AGCM_IM \* 2 + 1` set GRID_FILE = "Gnomonic_c${AGCM_IM}.dat" set NUM_READERS = 6 - set JOB_SGMT = 00000005 + set JOB_SGMT = 00000001 set NUM_SGMT = 1 - set ATMOS_RES = CF3072x6C + set ATMOS_RES = CF2160x6C set CNV_NX = 8 - set POST_NDS = 16 + set POST_NDS = 32 set USE_SHMEM = 1 + set CONUS = '' + set STRETCH_FACTOR = 2.5 endif set IS_FCST = 0 @@ -1270,6 +1229,17 @@ else endif endif +if ($CONUS == '#') then + set SCHMIDT = "do_schmidt = .false." + set STRETCH_FAC = "stretch_fac = 1.0" + set TARGET_LON = "target_lon = 0.0" + set TARGET_LAT = "target_lat = 0.0" +else + set SCHMIDT = "do_schmidt = .true." + set STRETCH_FAC = "stretch_fac = $STRETCH_FACTOR" + set TARGET_LON = "target_lon = -98.35" + set TARGET_LAT = "target_lat = 39.5" +endif ####################################################################### # Check for land surface and runoff routing models # @@ -1423,6 +1393,7 @@ set RATS_PROVIDER = PCHEM # Per W. Putman recommendation, set heartbeat to 450s anytime BACM_1M is selected if( "$CLDMICRO" == "BACM_1M" ) then set DT = 450 + set LONG_DT = 450 endif ASKHB: @@ -2251,7 +2222,7 @@ s/@DT/$DT/g s/@SOLAR_DT/$SOLAR_DT/g s/@IRRAD_DT/$IRRAD_DT/g s/@OCEAN_DT/$OCEAN_DT/g -s/@CHEM_DT/$CHEM_DT/g +s/@LONG_DT/$LONG_DT/g s/@NX/$NX/g s/@NY/$NY/g s/@USE_SHMEM/$USE_SHMEM/g @@ -2281,6 +2252,9 @@ s/@END_DATE/${END_DATE}/g s/@JOB_SGMT/${JOB_SGMT}/g s/@NUM_SGMT/${NUM_SGMT}/g +s/@CONUS/${CONUS}/g +s/@STRETCH_FAC/${STRETCH_FAC}/g + s/@INTERPOLATE_SST/$INTERPOLATE_SST/g s/@HIST_IM/$HIST_IM/g s/@HIST_JM/$HIST_JM/g @@ -2303,23 +2277,24 @@ s?@BACM_1M_?$BACM_1M_?g s?@GFDL_1M_?$GFDL_1M_?g s?@MGB2_2M_?$MGB2_2M_?g -s?@GFDL_HYDRO?$GFDL_HYDRO?g - -s?@FV_MAKENH?$FV_MAKENH?g -s?@FV_HYDRO?$FV_HYDRO?g - -s?@GFDL_PROG_CCN?$GFDL_PROG_CCN?g -s?@GFDL_USE_CCN?$GFDL_USE_CCN?g - EOF -# Added FV3 Specific Parameters -# ----------------------------- +# Added FV3/GFDL-MP Specific Parameters +# ------------------------------------- cat >> $HOMDIR/sedfile << EOF s^@HYDROSTATIC^$HYDROSTATIC^g s/@GRID_FILE/$GRID_FILE/g +s?@FV_SCHMIDT?$SCHMIDT?g +s?@FV_STRETCH_FAC?$STRETCH_FAC?g +s?@FV_TARGET_LON?$TARGET_LON?g +s?@FV_TARGET_LAT?$TARGET_LAT?g +s?@FV_MAKENH?$FV_MAKENH?g +s?@FV_HYDRO?$FV_HYDRO?g +s?@GFDL_PROG_CCN?$GFDL_PROG_CCN?g +s?@GFDL_USE_CCN?$GFDL_USE_CCN?g +s?@GFDL_HYDRO?$GFDL_HYDRO?g EOF