#====================================================================== # Clear coupler log files for comparison tests #====================================================================== unsetenv CPLLOG_INIT unsetenv CPLLOG_BRCH unsetenv CPLLOG_REST setenv DETECT_MEMORY_LEAK # if comparing with baseline also compare memory highwater mark from baseline # and throughput if ($?COMPARE_BASELINE ) then setenv COMPARE_MEMORY setenv COMPARE_THROUGHPUT endif #--- clone the main case to create ref1 cases set CASER0 = ${CASEROOT} set CASERR1 = ${CASEROOT}.ref1 set CASE0 = ${CASE} cd $CCSMROOT/scripts rm -r -f ${CASERR1}; ./create_clone -case ${CASERR1} -clone ${CASER0} cd $CASERR1 ./xmlchange -file env_build.xml -id EXEROOT -val ${EXEROOT} ./xmlchange -file env_build.xml -id BUILD_COMPLETE -val TRUE ./cesm_setup #---- determine run lengths needed below cd $CASER0 source ./Tools/ccsm_getenv || exit -1 @ stopn0 = ${STOP_N} set start0 = $RUN_STARTDATE @ stopn1 = ${STOP_N} @ restn1 = ${stopn1} / 2 + 1 set start1 = ${RUN_STARTDATE} @ stopn3 = ${STOP_N} - ${restn1} @ restn3 = ${stopn3} / 2 + 1 @ histn = ${stopn3} @ stopn4 = ${stopn3} - ${restn3} if (${stopn4} < 1) then echo "ERROR in ${0}: stop_n too short" >>& $TESTSTATUS_LOG echo "TFAIL ${CASEBASEID} " >&! $TESTSTATUS_OUT exit -1 endif #====================================================================== # do an initial ref1 case run, with restart, # by cloning the case and running there #====================================================================== cd ${CASERR1} source ./Tools/ccsm_getenv || exit -1 echo "ref1: doing a ${stopn1} ${STOP_OPTION} initial startup from ${start1}" >>& $TESTSTATUS_LOG #--- setup ref1 case ./xmlchange -file env_run.xml -id CONTINUE_RUN -val FALSE ./xmlchange -file env_run.xml -id STOP_N -val ${stopn1} ./xmlchange -file env_run.xml -id REST_OPTION -val ${STOP_OPTION} ./xmlchange -file env_run.xml -id REST_N -val ${restn1} ./xmlchange -file env_run.xml -id HIST_OPTION -val ${STOP_OPTION} ./xmlchange -file env_run.xml -id HIST_N -val ${histn} #--- run ref1 case ./$CASE.run gunzip ${DOUT_S_ROOT}/cpl/logs/cpl.log*.gz set CplLogFile = `ls -1t ${DOUT_S_ROOT}/cpl/logs/cpl.log* | head -1` setenv CPLLOG_INIT $CplLogFile setenv BASEGEN_FILE01 $CplLogFile set DOUTSR1 = ${DOUT_S_ROOT} set basestatus = "FAIL " if ( $?CPLLOG_INIT ) then echo "Checking successful completion of init cpl log file" >>& $TESTSTATUS_LOG set pass = `grep "SUCCESSFUL TERM" $CPLLOG_INIT | wc -l` if ( $pass != 0 ) then set basestatus = "PASS " echo "$basestatus ${CASEBASEID}.1 " >>& $TESTSTATUS_LOG else set basestatus = "FAIL " echo "$basestatus ${CASEBASEID}.1 " >>& $TESTSTATUS_LOG echo "$basestatus ${CASEBASEID} " >&! $TESTSTATUS_OUT exit -5 endif endif #====================================================================== # do a branch run from ref1 restart #====================================================================== cd $CASER0 source ./Tools/ccsm_getenv set refdate3 = `ls -1dt ${DOUTSR1}/rest/*-00000* | head -1 | sed "s/-00000.*//" | sed "s/^.*rest\///" ` echo "doing a ${stopn3} ${STOP_OPTION} branch startup from ref1 ${refdate3}" >>& $TESTSTATUS_LOG cp -f env_run.xml env_run.xml.base # save the original settings ./xmlchange -file env_run.xml -id RUN_TYPE -val branch ./xmlchange -file env_run.xml -id RUN_REFCASE -val $CASE0.ref1 ./xmlchange -file env_run.xml -id RUN_REFDATE -val ${refdate3} ./xmlchange -file env_run.xml -id GET_REFCASE -val FALSE ./xmlchange -file env_run.xml -id CONTINUE_RUN -val FALSE ./xmlchange -file env_run.xml -id STOP_N -val ${stopn3} ./xmlchange -file env_run.xml -id REST_OPTION -val ${STOP_OPTION} ./xmlchange -file env_run.xml -id REST_N -val ${restn3} ./xmlchange -file env_run.xml -id HIST_OPTION -val never mkdir -p $RUNDIR ln -s ${DOUTSR1}/rest/${refdate3}-00000/*${refdate3}* $RUNDIR/. cp ${DOUTSR1}/rest/${refdate3}-00000/*rpointer* $RUNDIR/. ./$CASE.run gunzip ${DOUT_S_ROOT}/cpl/logs/cpl.log*.gz set CplLogFile = `ls -1t ${DOUT_S_ROOT}/cpl/logs/cpl.log* | head -1` setenv CPLLOG_BRCH $CplLogFile setenv BASEGEN_FILE03 $CplLogFile set basestatus = "FAIL " if ( $?CPLLOG_BRCH ) then echo "Checking successful completion of brch cpl log file" >>& $TESTSTATUS_LOG set pass = `grep "SUCCESSFUL TERM" $CPLLOG_BRCH | wc -l` if ( $pass != 0 ) then set basestatus = "PASS " echo "$basestatus ${CASEBASEID}.3 " >>& $TESTSTATUS_LOG else set basestatus = "FAIL " echo "$basestatus ${CASEBASEID}.3 " >>& $TESTSTATUS_LOG echo "$basestatus ${CASEBASEID} " >&! $TESTSTATUS_OUT endif endif #====================================================================== # do a true restart continue run #====================================================================== cd $CASEROOT echo "doing a {stopn4} ${STOP_OPTION} continue restart test" >>& $TESTSTATUS_LOG ./xmlchange -file env_run.xml -id CONTINUE_RUN -val TRUE ./xmlchange -file env_run.xml -id STOP_N -val ${stopn4} ./xmlchange -file env_run.xml -id REST_OPTION -val never ./xmlchange -file env_run.xml -id DOUT_S -val FALSE ./xmlchange -file env_run.xml -id HIST_OPTION -val ${STOP_OPTION} ./xmlchange -file env_run.xml -id HIST_N -val ${histn} ./$CASE.run gunzip $RUNDIR/cpl.log*.gz set CplLogFile = `ls -1t $RUNDIR/cpl.log* | head -1` setenv CPLLOG_REST $CplLogFile setenv BASEGEN_FILE04 $CplLogFile # restore to original settings cp -f env_run.xml env_run.xml.run cp -f env_run.xml.base env_run.xml #====================================================================== # runs complete, compare initial run and restart run #====================================================================== setenv CPLLOG_GENCMP $CPLLOG_REST echo "Initial Test log is $CPLLOG_INIT" >>& $TESTSTATUS_LOG echo "Branch Test log is $CPLLOG_BRCH" >>& $TESTSTATUS_LOG echo "Restart Test log is $CPLLOG_REST" >>& $TESTSTATUS_LOG #====================================================================== # Check case validation first #====================================================================== set basestatus = "UNDEF" if ( $?CPLLOG_INIT ) then echo "Checking successful completion in init cpl log file" >>& $TESTSTATUS_LOG set pass = `grep "SUCCESSFUL TERM" $CPLLOG_INIT | wc -l` if ( $pass != 0 ) then set basestatus = "PASS " else set basestatus = "FAIL " endif if ( $?CPLLOG_REST ) then echo "Comparing initial log file with second log file" >>& $TESTSTATUS_LOG $CASETOOLS/check_exactrestart.pl $CPLLOG_INIT $CPLLOG_REST >>& $TESTSTATUS_LOG set pass = `tail -1 $TESTSTATUS_LOG | grep PASS | wc -l` if ( $pass != 0 ) then set basestatus = "PASS " else set basestatus = "FAIL " endif else echo "ERROR in ${0}: restart coupler log file NOT set" >>& $TESTSTATUS_LOG set basestatus = "ERROR" endif else echo "ERROR in ${0}: initial coupler log file NOT set" >>& $TESTSTATUS_LOG set basestatus = "ERROR" endif echo "$basestatus ${CASEBASEID} " >&! $TESTSTATUS_OUT