/[MITgcm]/MITgcm/verification/testreport
ViewVC logotype

Diff of /MITgcm/verification/testreport

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.117 by jmc, Tue Aug 19 18:29:12 2008 UTC revision 1.135 by jmc, Thu Mar 4 21:26:27 2010 UTC
# Line 11  usage() Line 11  usage()
11      echo      echo
12      echo "where possible OPTIONS are:"      echo "where possible OPTIONS are:"
13      echo "  (-help|-h)               print usage"      echo "  (-help|-h)               print usage"
14      echo "  (-mth)                   run multi threaded (using eedata.mth)"      echo "  (-mth)                   run multi-threaded (using eedata.mth)"
15      echo "  (-mpi)                   compile and run using MPI"      echo "  (-mpi)                   compile and run using MPI"
16      echo "  (-ieee|-noieee)          if possible, use IEEE compiler flags"      echo "  (-ieee|-noieee)          if possible, use IEEE compiler flags"
17      echo "                             (DEF=\"-ieee\")"      echo "                             (DEF=\"-ieee\")"
18      echo "  (-gsl)                   compile with \"-gsl\" flag"      echo "  (-gsl)                   compile with \"-gsl\" flag"
19        echo "  (-ur4|-use_r4)           if allowed, use real*4 type for '_RS' variable"
20      echo "  (-of=|-optfile=)STRING   list of optfiles to use"      echo "  (-of=|-optfile=)STRING   list of optfiles to use"
21      echo "  (-a|-addr) STRING        list of email recipients"      echo "  (-a|-addr) STRING        list of email recipients"
22      echo "                             (DEF=\"\" no email is sent)"      echo "                             (DEF=\"\" no email is sent)"
# Line 30  usage() Line 31  usage()
31      echo "                             Bourne-compatible \"sh\" shell"      echo "                             Bourne-compatible \"sh\" shell"
32      echo "                             (DEF=\"\" for \"bash\")"      echo "                             (DEF=\"\" for \"bash\")"
33      echo "  (-adm|-ad)               perform an adjoint run"      echo "  (-adm|-ad)               perform an adjoint run"
34        echo "  (-oad)                   perform an OpenAD adjoint run"
35      echo "  (-command) STRING        command to run"      echo "  (-command) STRING        command to run"
36      echo "                             (DEF=\"make output.txt\")"      echo "                             (DEF=\"make output.txt\")"
37      echo "  (-m|-make) STRING        command to use for \"make\""      echo "  (-m|-make) STRING        command to use for \"make\""
# Line 42  usage() Line 44  usage()
44      echo "                             (DEF=\"12\")"      echo "                             (DEF=\"12\")"
45      echo "  (-j) JOBS                use \"make -j JOBS\" for parallel builds"      echo "  (-j) JOBS                use \"make -j JOBS\" for parallel builds"
46      echo "  (-clean)                 *ONLY* run \"make CLEAN\""      echo "  (-clean)                 *ONLY* run \"make CLEAN\""
47        echo "  (-norun|-nr)             skip the \"runmodel\" stage (stop after make)"
48      echo "  (-quick|-q)              same as \"-nogenmake -noclean -nodepend\""      echo "  (-quick|-q)              same as \"-nogenmake -noclean -nodepend\""
49      echo "  (-nogenmake|-ng)         skip the genmake stage"      echo "  (-nogenmake|-ng)         skip the genmake stage"
50      echo "  (-noclean|-nc)           skip the \"make clean\" stage"      echo "  (-noclean|-nc)           skip the \"make clean\" stage"
# Line 103  testoutput_var() Line 106  testoutput_var()
106  {  {
107      # testoutput_var dir s1 label subdir reference_output      # testoutput_var dir s1 label subdir reference_output
108      #      #
109      #  compares 1 variable output selected from file $dir/$subdir/$OUTPUTFILE      #  compares 1 variable output selected from file $dir/$subdir/$OUTPUTFILE
110      #     with same output from reference file $dir/results/$reference_output      #     with same output from reference file $dir/results/$reference_output
111      #  using search strings s1 and text label      #  using search strings s1 and text label
112    
# Line 175  testoutput_var() Line 178  testoutput_var()
178          fi          fi
179      fi      fi
180      rm -f tmp1.txt tmp2.txt tmp3.txt tmp4.txt      rm -f tmp1.txt tmp2.txt tmp3.txt tmp4.txt
181        
182      return $digits_of_similarity      return $digits_of_similarity
183  }  }
184    
# Line 211  testoutput_run() Line 214  testoutput_run()
214                  eval "HAVE_PTR0"$ii"=t"                  eval "HAVE_PTR0"$ii"=t"
215              else              else
216                  eval "HAVE_PTR0"$ii"=f"                  eval "HAVE_PTR0"$ii"=f"
217                if test "x$ADM" = x ; then                if test "x$ADM" = x -a "x$OADM" = x; then
218                # remove this ptr from the list of output variable to check                # remove this ptr from the list of output variable to check
219                # echo "-- ptr test=" $tst "number of var=" `echo $listVar | awk '{print NF}'` 1>&2                # echo "-- ptr test=" $tst "number of var=" `echo $listVar | awk '{print NF}'` 1>&2
220                  listVar=`echo "$listVar" | sed "s/ pt$ii..//g"`                  listVar=`echo "$listVar" | sed "s/ pt$ii..//g"`
# Line 263  testoutput_run() Line 266  testoutput_run()
266             testoutput_var $1 "trcstat_ptracer0"$ii"_mean" "p0"$ii"_mean" $2 $3; yy=$? ;;             testoutput_var $1 "trcstat_ptracer0"$ii"_mean" "p0"$ii"_mean" $2 $3; yy=$? ;;
267          'pt1sd'|'pt2sd'|'pt3sd'|'pt4sd'|'pt5sd') ii=`echo $xx | sed 's/pt//' | sed 's/..$//'`          'pt1sd'|'pt2sd'|'pt3sd'|'pt4sd'|'pt5sd') ii=`echo $xx | sed 's/pt//' | sed 's/..$//'`
268             testoutput_var $1 "trcstat_ptracer0"$ii"_sd"   "p0"$ii"_StDv"  $2 $3; yy=$? ;;             testoutput_var $1 "trcstat_ptracer0"$ii"_sd"   "p0"$ii"_StDv"  $2 $3; yy=$? ;;
269           'Qntmn') testoutput_var $1 "extforcing_qnet_min" "Qnet minimum"  $2 $3; yy=$? ;;           'Qntmn') testoutput_var $1 "forcing_qnet_min" "Qnet minimum"  $2 $3; yy=$? ;;
270           'Qntmx') testoutput_var $1 "extforcing_qnet_max" "Qnet maximum"  $2 $3; yy=$? ;;           'Qntmx') testoutput_var $1 "forcing_qnet_max" "Qnet maximum"  $2 $3; yy=$? ;;
271           'Qntav') testoutput_var $1 "extforcing_qnet_mean" "Qnet mean"    $2 $3; yy=$? ;;           'Qntav') testoutput_var $1 "forcing_qnet_mean" "Qnet mean"       $2 $3; yy=$? ;;
272           'Qntsd') testoutput_var $1 "extforcing_qnet_sd"  "Qnet Std.Dev"  $2 $3; yy=$? ;;           'Qntsd') testoutput_var $1 "forcing_qnet_sd"  "Qnet Std.Dev"  $2 $3; yy=$? ;;
273           'aSImn') testoutput_var $1 "seaice_area_min"   "SIce Area min"   $2 $3; yy=$? ;;           'aSImn') testoutput_var $1 "seaice_area_min"   "SIce Area min"   $2 $3; yy=$? ;;
274           'aSImx') testoutput_var $1 "seaice_area_max"   "SIce Area max"   $2 $3; yy=$? ;;           'aSImx') testoutput_var $1 "seaice_area_max"   "SIce Area max"   $2 $3; yy=$? ;;
275           'aSIav') testoutput_var $1 "seaice_area_mean"  "SIce Area mean"  $2 $3; yy=$? ;;           'aSIav') testoutput_var $1 "seaice_area_mean"  "SIce Area mean"  $2 $3; yy=$? ;;
276           'aSIsd') testoutput_var $1 "seaice_area_sd"    "SIce Area StDv"  $2 $3; yy=$? ;;           'aSIsd') testoutput_var $1 "seaice_area_sd"    "SIce Area StDv"  $2 $3; yy=$? ;;
277           'hSImn') testoutput_var $1 "seaice_heff_min"   "SIce Heff min"   $2 $3; yy=$? ;;           'hSImn') testoutput_var $1 "seaice_heff_min"   "SIce Heff min"   $2 $3; yy=$? ;;
278           'hSImx') testoutput_var $1 "seaice_heff_max"   "SIce Hell max"   $2 $3; yy=$? ;;           'hSImx') testoutput_var $1 "seaice_heff_max"   "SIce Heff max"   $2 $3; yy=$? ;;
279           'hSIav') testoutput_var $1 "seaice_heff_mean"  "SIce Hell mean"  $2 $3; yy=$? ;;           'hSIav') testoutput_var $1 "seaice_heff_mean"  "SIce Heff mean"  $2 $3; yy=$? ;;
280           'hSIsd') testoutput_var $1 "seaice_heff_sd"    "SIce Hell StDv"  $2 $3; yy=$? ;;           'hSIsd') testoutput_var $1 "seaice_heff_sd"    "SIce Heff StDv"  $2 $3; yy=$? ;;
281          'AthSiG') testoutput_var $1 "thSI_Ice_Area_G" "thSIc Area Global" $2 $3; yy=$? ;;          'AthSiG') testoutput_var $1 "thSI_Ice_Area_G" "thSIc Area Global" $2 $3; yy=$? ;;
282          'AthSiS') testoutput_var $1 "thSI_Ice_Area_S" "thSIc Area South"  $2 $3; yy=$? ;;          'AthSiS') testoutput_var $1 "thSI_Ice_Area_S" "thSIc Area South"  $2 $3; yy=$? ;;
283          'AthSiN') testoutput_var $1 "thSI_Ice_Area_N" "thSIc Area North"  $2 $3; yy=$? ;;          'AthSiN') testoutput_var $1 "thSI_Ice_Area_N" "thSIc Area North"  $2 $3; yy=$? ;;
# Line 290  testoutput_run() Line 293  testoutput_run()
293          done          done
294    
295          nbVar=`echo $listVar | awk '{print NF}'`          nbVar=`echo $listVar | awk '{print NF}'`
296          if [ $nbVar -lt $LEN_CHECK_LIST ] ; then          if [ $nbVar -lt $LEN_CHECK_LIST ] ; then
297          #-- fill line (up to standard length) with dot:          #-- fill line (up to standard length) with dot:
298            adNul=`expr $LEN_CHECK_LIST - $nbVar | awk '{for(i=1;i<=$1;i++){print "."}}'`            adNul=`expr $LEN_CHECK_LIST - $nbVar | awk '{for(i=1;i<=$1;i++){print "."}}'`
299            echo $allargs $adNul            echo $allargs $adNul
300          else          else
301            echo $allargs            echo $allargs
302          fi          fi
303  # <-- same processing for adjoint & forward test  # <-- same processing for adjoint & forward test
304  }  }
305    
# Line 314  genmakemodel() Line 317  genmakemodel()
317          (          (
318              cd $1;              cd $1;
319              command="$GENMAKE2  -ds -m $MAKE"              command="$GENMAKE2  -ds -m $MAKE"
320              if test "x$ADM" = x ; then              if test "x$ADM" = xt ; then
                 command="$command --mods=../code"  
             else  
321                  command="$command --mods=../code_ad"                  command="$command --mods=../code_ad"
322                elif test "x$OADM" = xt ; then
323                    command="$command -adof ../../../tools/adjoint_options/adjoint_oad -mods '../code_oad ../../OpenAD/code_oad_all'"
324                else
325                    command="$command -mods=../code"
326              fi              fi
327              if test "x$OPTFILE" != xNONE ; then              if test "x$OPTFILE" != xNONE ; then
328                  command="$command --optfile=$OPTFILE"                  command="$command -optfile=$OPTFILE"
329              fi              fi
330              if test "x$IEEE" != x ; then              if test "x$IEEE" != x ; then
331                  command="$command -ieee"                  command="$command -ieee"
# Line 331  genmakemodel() Line 336  genmakemodel()
336              if test "x$MPI" = xt ; then              if test "x$MPI" = xt ; then
337                  command="$command -mpi"                  command="$command -mpi"
338              fi              fi
339                if test "x$MULTI_THREAD" = xt ; then
340                #- run multi-threaded using OpenMP:
341                    command="$command -omp"
342                fi
343                if test "x$USE_R4" = xt ; then
344                    command="$command -use_r4"
345                fi
346              if test "x$TS" = xt ; then              if test "x$TS" = xt ; then
347                  command="$command -ts"                  command="$command -ts"
348              fi              fi
349              if test "x$PAPIS" = xt ; then              if test "x$PAPIS" = xt ; then
350                  command="$command -papis"                  command="$command -papis"
351              else              else
352              if test "x$PCLS" = xt ; then              if test "x$PCLS" = xt ; then
353                  command="$command -pcls"                  command="$command -pcls"
354              fi              fi
355              fi              fi
356              printf 'genmake ... ' 1>&2              printf 'genmake ... ' 1>&2
357              $command > make.log 2>&1              # $command > make.log 2>&1
358                eval $command > make.log 2>&1
359              RETVAL=$?              RETVAL=$?
360              #  Reduce the size of the testing emails!              #  Reduce the size of the testing emails!
361              head -100 Makefile > $CDIR/Makefile_head              head -100 Makefile > $CDIR/Makefile_head
# Line 377  makeclean() Line 390  makeclean()
390                      cp make.log $CDIR"/make.log"                      cp make.log $CDIR"/make.log"
391                      return 1                      return 1
392                  fi                  fi
393                    echo successful 1>&2
394                else
395                    echo ''
396              fi              fi
             echo successful 1>&2  
397              exit 0              exit 0
398          )          )
399      fi      fi
# Line 437  makemodel() Line 452  makemodel()
452          cd $1;          cd $1;
453          if test -r Makefile ; then          if test -r Makefile ; then
454              printf 'make ... ' 1>&2              printf 'make ... ' 1>&2
455              if test "x$ADM" = x ; then              if test "x$ADM" = xt ; then
456                    $MAKE adall >> make.log 2>&1
457                elif test "x$OADM" = xt ; then
458                    $MAKE adAll >> make.log 2>&1
459                else
460                  if test "x$JOBS" = x ; then                  if test "x$JOBS" = x ; then
461                      $MAKE >> make.log 2>&1                      $MAKE >> make.log 2>&1
462                  else                  else
463                      $MAKE -j $JOBS >> make.log 2>&1                      $MAKE -j $JOBS >> make.log 2>&1
464                  fi                  fi
             else  
                 $MAKE adall >> make.log 2>&1  
465              fi              fi
466              RETVAL=$?              RETVAL=$?
467              if test "x$RETVAL" != x0 ; then              if test "x$RETVAL" != x0 ; then
468                  tail make.log                  tail make.log
469                  echo failed 1>&2                  echo failed 1>&2
470                  cp make.log $CDIR"/make.log"                  cp make.log $CDIR"/make.log"
471                    rm -f $EXECUTABLE
472                  return 1                  return 1
473              else              else
474                  echo successful 1>&2                  echo successful 1>&2
# Line 469  symlink_mpifiles() Line 487  symlink_mpifiles()
487      code_dir=$2      code_dir=$2
488      BUILD_DIR=$dir/$3      BUILD_DIR=$dir/$3
489      CODE_DIR=$dir/$code_dir      CODE_DIR=$dir/$code_dir
490        
491      # These are files that should replace their counter-part when using -mpi      # These are files that should replace their counter-part when using -mpi
492      MPI_FILES=`(cd $CODE_DIR; find . -name "*_mpi" -print)`      MPI_FILES=`(cd $CODE_DIR; find . -name "*_mpi" -print)`
493    
# Line 504  symlink_mpifiles() Line 522  symlink_mpifiles()
522              fi              fi
523          done          done
524      fi      fi
525        
526  }  }
527    
528  linkdata()  linkdata()
# Line 515  linkdata() Line 533  linkdata()
533      if test -d $1 ; then      if test -d $1 ; then
534          (          (
535              cd $1 ; shift              cd $1 ; shift
536                inpMPI=`(cd ../$1 ; find . -name "*.mpi" -print | sed 's:^\./::')`
537                for xx in $inpMPI ; do
538                  if test -r "../"$1"/"$xx ; then
539                    # found 1 _mpi sfx file in 1rst input dir and it is readable
540                    yy=`echo $xx | sed 's:\.mpi$::'`
541                    if test "x$MPI" = "xt" ; then
542                    # mpi test: remove symbolic link & link _mpi sfx file
543                        if test -h $yy ; then rm -f $yy ; fi
544                        if test ! -r $yy ; then
545                            ln -sf "../"$1"/"$xx $yy ;
546                            printf "$xx " 1>&2
547                        fi
548                    else
549                    # not mpi test: remove symbolic link
550                        if test -h $yy ; then rm -f $yy ; fi
551                    fi
552                  fi
553                done
554              if test -r "../"$1"/eedata.mth" ; then              if test -r "../"$1"/eedata.mth" ; then
555              # found eedata.mth in 1rst input dir and it is readable              # found eedata.mth in 1rst input dir and it is readable
556                  if test "x$MULTI_THREAD" = "xt" ; then                  if test "x$MULTI_THREAD" = "xt" ; then
557                  # multi-threaded test: remove symbolic link & link eedata.mth                  # multi-threaded test: remove symbolic link & link eedata.mth
558                      if test -h eedata ; then rm -f eedata ; fi                      if test -h eedata ; then rm -f eedata ; fi
559                      if test ! -r eedata ; then                      if test ! -r eedata ; then
560                          ln -sf "../"$1"/eedata.mth" eedata ;                          ln -sf "../"$1"/eedata.mth" eedata ;
561                          printf 'eedata.mth ' 1>&2                          printf 'eedata.mth ' 1>&2
562                      fi                      fi
# Line 557  runmodel() Line 593  runmodel()
593  {  {
594      # runmodel directory      # runmodel directory
595      #      #
596      #  runs "$COMMAND in "directory"      #  runs "$COMMAND in "directory"
597      #  (where "$COMMAND" is relative to "directory")      #  (where "$COMMAND" is relative to "directory")
598      (      (
599          cd $1          cd $1
600          printf 'runmodel in %s ...' $1 1>&2          printf 'runmodel in %s ...' $1 1>&2
601          # make output.txt          # make output.txt
602          echo          echo
603          if test -L $EXECUTABLE -a -x "../"$builddir"/"$EXECUTABLE ; then          if test -L $EXECUTABLE ; then
604              if test -x "../"$builddir"/"$EXECUTABLE ; then
605              diff -q $EXECUTABLE "../"$builddir"/"$EXECUTABLE > /dev/null 2>&1              diff -q $EXECUTABLE "../"$builddir"/"$EXECUTABLE > /dev/null 2>&1
606              outD=$? ; if test $outD != 0 ; then rm -f $EXECUTABLE ; rm -f run.log ; fi              outD=$? ; if test $outD != 0 ; then rm -f $EXECUTABLE ; fi
607              else rm -f $EXECUTABLE
608              fi
609          fi          fi
610          if test ! -x $EXECUTABLE -a -x "../"$builddir"/"$EXECUTABLE ; then          if test ! -x $EXECUTABLE -a -x "../"$builddir"/"$EXECUTABLE ; then
611              echo " link" $EXECUTABLE "from dir ../"$builddir > run.log_00              echo " link" $EXECUTABLE "from dir ../"$builddir > run.log_tmp
612              ln -sf "../"$builddir"/"$EXECUTABLE .              ln -sf "../"$builddir"/"$EXECUTABLE .
613          fi          fi
614          if test ! -x $EXECUTABLE ; then          if test ! -x $EXECUTABLE ; then
615                  rm -f run.log ; touch run.log                  rm -f $RUNLOG ; touch $RUNLOG
616                  if test -f run.log_00 ; then cat run.log_00 >> run.log ; fi                  if test -f run.log_tmp ; then cat run.log_tmp >> $RUNLOG ; fi
617                  echo " no executable:" $EXECUTABLE >> run.log                  echo " no executable:" $EXECUTABLE >> $RUNLOG
618                  RETVAL=8                  RETVAL=8
619                  ENDVAL=-1                  ENDVAL=-1
620          else          else
621              if test ! -f $OUTPUTFILE -o $OUTPUTFILE -ot $EXECUTABLE ; then              if test ! -f $OUTPUTFILE -o $OUTPUTFILE -ot $EXECUTABLE ; then
622                # output do not exist or is older than executable:                # output do not exist or is older than executable:
623                  rm -f run.log ; touch run.log                  rm -f $RUNLOG ; touch $RUNLOG
624                  if test -f run.log_00 ; then cat run.log_00 >> run.log ; fi                  if test -f run.log_tmp ; then cat run.log_tmp >> $RUNLOG ; fi
625                  ( eval $COMMAND ) >> run.log 2>&1                  ( eval $COMMAND ) >> $RUNLOG 2>&1
626                  RETVAL=$?                  RETVAL=$?
627              else              else
628                  RETVAL=0                  RETVAL=0
629                  if test -f run.log ; then                  if test -f $RUNLOG ; then
630                      if test -f run.log_00 ; then cat run.log_00 >> run.log ; fi                      if test -f run.log_tmp ; then cat run.log_tmp >> $RUNLOG ; fi
631                      echo "---------->> $OUTPUTFILE is up to date " >> run.log 2>&1                      echo "---------->> $OUTPUTFILE is up to date " >> $RUNLOG 2>&1
632                  else                  else
633                      touch run.log                      touch $RUNLOG
634                      if test -f run.log_00 ; then cat run.log_00 >> run.log ; fi                      if test -f run.log_tmp ; then cat run.log_tmp >> $RUNLOG ; fi
635                      echo "---------->> $OUTPUTFILE is up to date " >> run.log 2>&1                      echo "---------->> $OUTPUTFILE is up to date " >> $RUNLOG 2>&1
636                      echo " no previous run.log: assume NORMAL END" >> run.log 2>&1                      echo " no previous $RUNLOG: assume NORMAL END" >> $RUNLOG 2>&1
637                  fi                  fi
638              fi              fi
639              ENDVAL=`cat run.log | grep -v 'ABNORMAL END' | grep -c 'NORMAL END'`              ENDVAL=`cat $RUNLOG | grep -v 'ABNORMAL END' | grep -c 'NORMAL END'`
640          fi          fi
641          rm -f run.log_00          rm -f run.log_tmp
         #if test "x$RETVAL" = x0 ; then  
642          if [ $RETVAL -eq 0 -a $ENDVAL -gt 0 ] ; then          if [ $RETVAL -eq 0 -a $ENDVAL -gt 0 ] ; then
643              tail run.log              tail $RUNLOG
644              echo successful 1>&2              echo successful 1>&2
645              # === Reduce the size of the testing emails!              # === Reduce the size of the testing emails!
646              #cp $OUTPUTFILE $CDIR"/"$OUTPUTFILE              #cp $OUTPUTFILE $CDIR"/"$OUTPUTFILE
647              if test -s STDERR.0000 ; then cp STDERR.0000 $CDIR"/STDERR.0000" ; fi              if test -s STDERR.0000 ; then cp STDERR.0000 $CDIR"/STDERR.0000" ; fi
648              return 0              return 0
649            elif [ $RETVAL -ne 0 -a $ENDVAL -gt 0 ] ; then
650                #-- for some weird cases (run is finihed but with error code)
651                tail $RUNLOG
652                echo finished with error '(run:' $RETVAL ' end:' $ENDVAL ')' 1>&2
653                return 0
654          else          else
655              tail run.log              tail $RUNLOG
656              echo failed '(run:' $RETVAL ' end:' $ENDVAL ')' 1>&2              echo failed '(run:' $RETVAL ' end:' $ENDVAL ')' 1>&2
657              cp run.log $CDIR"/run.log"              cp $RUNLOG $CDIR"/"$RUNLOG
658              if test -s STDERR.0000 ; then cp STDERR.0000 $CDIR"/STDERR.0000" ; fi              if test -s STDERR.0000 ; then cp STDERR.0000 $CDIR"/STDERR.0000" ; fi
659              return 1              return 1
660          fi          fi
# Line 662  EOF Line 705  EOF
705          return 0          return 0
706      else      else
707          echo          echo
708          echo "ERROR: failed to compile comparison code -- please specify"          echo "ERROR: failed to compile comparison code -- please specify"
709          echo "  a C compiler using the CC environment variable."          echo "  a C compiler using the CC environment variable."
710          exit 1          exit 1
711      fi      fi
# Line 681  formatresults() Line 724  formatresults()
724      printf '%3s' $listPrt      printf '%3s' $listPrt
725  #   line below does not work on hp-ux_ia64 : do those substitutions later on  #   line below does not work on hp-ux_ia64 : do those substitutions later on
726  #   printf '%3s' $listPrt | sed 's/ 99/ --/g' | sed 's/  > />/' | sed 's/  < /</'  #   printf '%3s' $listPrt | sed 's/ 99/ --/g' | sed 's/  > />/' | sed 's/  < /</'
727        
728      if [ $xx = '..' ]; then      if [ $xx = '..' ]; then
729          printf ' N/O '          printf ' N/O '
730      elif [ $xx = '--' ]; then      elif [ $xx = '--' ]; then
# Line 697  formatresults() Line 740  formatresults()
740      fi      fi
741      printf '  %s' $nm      printf '  %s' $nm
742      printf '\n'      printf '\n'
743        
744  }  }
745    
746  scandirs()  scandirs()
# Line 712  scandirs() Line 755  scandirs()
755  }  }
756    
757    
758    check_eedata()
759    {
760        # check_eedata size.h eedata
761        if [ $# -eq 2 ] ; then
762          if test -f $1 -a -f $2 ; then
763          sx=`grep "^     & *nSx *=" $1 | sed "s/^     & *nSx *=//" | sed 's/, *$//'`
764          nx=`grep "^ *nTx *=" $2 | tail -1 | sed 's/^ *nTx *= *//' | sed "s/, *$//"`
765          if test "x$nx" = x ; then
766            rx=10
767          else
768            rx=`expr $sx % $nx`
769          fi
770          sy=`grep "^     & *nSy *=" $1 | sed "s/^     & *nSy *=//" | sed 's/, *$//'`
771          ny=`grep "^ *nTy *=" $2 | tail -1 | sed 's/^ *nTy *= *//' | sed "s/, *$//"`
772          if test "x$ny" = x ; then
773            ry=20
774          else
775            ry=`expr $sy % $ny`
776          fi
777          echo `expr $rx + $ry`
778        else
779          echo '-1'
780          fi
781        else
782          echo '-2'
783        fi
784    
785    }
786    
787  ###############################################################################  ###############################################################################
788    
789    
# Line 727  fi Line 799  fi
799  GSL=f  GSL=f
800    
801  CLEANUP=f  CLEANUP=f
802    NORUN=f
803  QUICK=f  QUICK=f
804  NOGENMAKE=f  NOGENMAKE=f
805  NOCLEAN=f  NOCLEAN=f
# Line 753  MPI=f Line 826  MPI=f
826  MULTI_THREAD=f  MULTI_THREAD=f
827  OUTDIR=  OUTDIR=
828  DELDIR=  DELDIR=
829    USE_R4=
830    
831  ADM=  ADM=
832    OADM=
833    
834  # list of pTracers to check for monitor output  # list of pTracers to check for monitor output
835  PTRACERS_NUM="1 2 3 4 5"  PTRACERS_NUM="1 2 3 4 5"
# Line 774  for ac_option ; do Line 849  for ac_option ; do
849      fi      fi
850    
851      ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`      ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
852        
853      case $ac_option in      case $ac_option in
854                    
855          -help | --help | -h | --h)          -help | --help | -h | --h)
# Line 838  for ac_option ; do Line 913  for ac_option ; do
913          -clean | --clean)          -clean | --clean)
914              CLEANUP=t ; DELDIR=t ;;              CLEANUP=t ; DELDIR=t ;;
915    
916            -norun | --norun | -nr | --nr)
917                NORUN=t ;;
918          -quick | --quick | -q | --q)          -quick | --quick | -q | --q)
919              QUICK=t ;;              QUICK=t ;;
920          -nogenmake | --nogenmake | -ng | --ng)          -nogenmake | --nogenmake | -ng | --ng)
# Line 856  for ac_option ; do Line 933  for ac_option ; do
933    
934          -adm | -ad) ADM=t ;;          -adm | -ad) ADM=t ;;
935    
936            -oad) OADM=t; NODEPEND=t ;;
937    
938          -ieee) IEEE=true ;;          -ieee) IEEE=true ;;
939          -noieee) IEEE= ;;          -noieee) IEEE= ;;
940          -gsl) GSL=t ;;          -gsl) GSL=t ;;
# Line 866  for ac_option ; do Line 945  for ac_option ; do
945    
946          -deldir | -dd) DELDIR=t ;;          -deldir | -dd) DELDIR=t ;;
947    
948          -ts) TS=t;;          -ur4|-use_r4) USE_R4=t ;;
949    
950            -ts) TS=t;;
951          -papis) PAPIS=t;;          -papis) PAPIS=t;;
   
952          -pcls) PCL=t;;          -pcls) PCL=t;;
953    
954          -*)          -*)
955              echo "Error: unrecognized option: "$ac_option              echo "Error: unrecognized option: "$ac_option
956              usage              usage
957              ;;              ;;
958            
959          *)          *)
960              echo "Error: unrecognized argument: "$ac_option              echo "Error: unrecognized argument: "$ac_option
961              usage              usage
962              ;;              ;;
963            
964       esac       esac
965        
966  done  done
967    
968  if test "x$QUICK" = xt ; then  if test "x$QUICK" = xt ; then
# Line 898  if test "x$ADM" = xt ; then Line 977  if test "x$ADM" = xt ; then
977      inputdir=input_ad      inputdir=input_ad
978      ref_outp="output_adm.txt"      ref_outp="output_adm.txt"
979      EXECUTABLE="mitgcmuv_ad"      EXECUTABLE="mitgcmuv_ad"
980    elif test "x$OADM" = xt ; then
981        code_dir=code_oad
982        inputdir=input_oad
983        ref_outp="output_oadm.txt"
984        EXECUTABLE="mitgcmuv_ad"
985  else  else
986      code_dir=code      code_dir=code
987      inputdir=input      inputdir=input
# Line 921  else Line 1005  else
1005                   LIST=${LIST}" "`ls | grep 'tutorial_'` ;;                   LIST=${LIST}" "`ls | grep 'tutorial_'` ;;
1006          *)       LIST=${LIST}" "$xx ;;          *)       LIST=${LIST}" "$xx ;;
1007        esac        esac
1008      done      done
1009  fi  fi
1010  #echo 'LIST='${LIST}'<'  #echo 'LIST='${LIST}'<'
1011  #- skip dirs, remove duplicate and non-directory:  #- skip dirs, remove duplicate and non-directory:
# Line 942  do Line 1026  do
1026          else count=1 ; echo "" ;  echo -n " skip: \"$xx\""          else count=1 ; echo "" ;  echo -n " skip: \"$xx\""
1027          fi          fi
1028      fi      fi
1029  done  done
1030  if test $count = 1 ; then echo "" ; echo -n " ... " ; fi  if test $count = 1 ; then echo "" ; echo -n " ... " ; fi
1031  #echo 'TESTDIRS='${TESTDIRS}'<'  #echo 'TESTDIRS='${TESTDIRS}'<'
1032    
# Line 950  if test "x$OPTFILE" = xNONE -a "x$MITGCM Line 1034  if test "x$OPTFILE" = xNONE -a "x$MITGCM
1034      OPTFILE=$MITGCM_OF      OPTFILE=$MITGCM_OF
1035  fi  fi
1036    
1037    RUNLOG="run.log"
1038  OUTPUTFILE=$ref_outp  OUTPUTFILE=$ref_outp
1039  if test "x$COMMAND" = x ; then  if test "x$COMMAND" = x ; then
1040      COMMAND="./$EXECUTABLE > $OUTPUTFILE"      COMMAND="./$EXECUTABLE > $OUTPUTFILE"
# Line 964  echo "OK (COMMAND= $COMMAND )" Line 1049  echo "OK (COMMAND= $COMMAND )"
1049  #  (use default or load experiment-specific list from file "tr_checklist")  #  (use default or load experiment-specific list from file "tr_checklist")
1050  # content : 1rst = main variable used to decide if it pass or FAIL  # content : 1rst = main variable used to decide if it pass or FAIL
1051  #         others = number of matching digits to be printed in summary.txt  #         others = number of matching digits to be printed in summary.txt
1052  if test "x$ADM" = x ; then  if test "x$ADM" = x -a "x$OADM" = x; then
1053      DEF_CHECK_LIST='PS PS T+ S+ U+ V+ pt1+ pt2+ pt3+ pt4+ pt5+'      DEF_CHECK_LIST='PS PS T+ S+ U+ V+ pt1+ pt2+ pt3+ pt4+ pt5+'
1054      EMPTY_RESULTS='.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..'      EMPTY_RESULTS='.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..'
1055      LEN_CHECK_LIST=`echo $DEF_CHECK_LIST | sed 's/ [a-zA-Z0-9]*+/&mn &mx &av &sd/g' | awk '{print NF-1}'`      LEN_CHECK_LIST=`echo $DEF_CHECK_LIST | sed 's/ [a-zA-Z0-9]*+/&mn &mx &av &sd/g' | awk '{print NF-1}'`
# Line 977  else Line 1062  else
1062  fi  fi
1063    
1064  #  create the FORTRAN comparison code  #  create the FORTRAN comparison code
1065  createcodelet  if test -x tr_cmpnum ; then
1066        echo "skipping comparison code build"
1067    else
1068        createcodelet
1069    fi
1070    
1071  #  build the mpack utility (if ADDRESSES = NONE, do it to test the build)  #  build the mpack utility (if ADDRESSES = NONE, do it to test the build)
1072  if test "x$ADDRESSES" = x ; then  if test "x$ADDRESSES" = x ; then
# Line 988  fi Line 1077  fi
1077    
1078  #  Create a uniquely named directory to store results  #  Create a uniquely named directory to store results
1079  CMDLINE=$0  CMDLINE=$0
1080  for xx in "$@" ; do CMDLINE="$CMDLINE '$xx'" ; done  for xx in "$@" ; do nw=`echo $xx | wc -w`
1081        if test $nw = '1' ; then CMDLINE="$CMDLINE $xx"
1082                            else CMDLINE="$CMDLINE '$xx'" ; fi
1083    done
1084    #for xx in "$@" ; do CMDLINE="$CMDLINE '$xx'" ; done
1085  MACH=`hostname`  MACH=`hostname`
1086  UNAMEA=`uname -a`  UNAMEA=`uname -a`
1087  DATE=`date +%Y%m%d`  DATE=`date +%Y%m%d`
1088  BASE="tr_"$MACH"_"$DATE"_"  BASE="tr_"$MACH"_"$DATE"_"
1089  if test "x$OUTDIR" != x ; then  if test "x$OUTDIR" != x ; then
1090      BASE="tr_"$OUTDIR"_"$DATE"_"      BASE="tr_"$OUTDIR"_"$DATE"_"
1091    else
1092        short_name=`hostname | sed 's/\..*$//'`
1093        BASE="tr_"$short_name"_"$DATE"_"
1094  fi  fi
1095  DNUM=0  DNUM=0
1096  DRESULTS="$BASE$DNUM"  DRESULTS="$BASE$DNUM"
# Line 1041  else Line 1137  else
1137  fi  fi
1138  echo  echo
1139  echo >> $SUMMARY  echo >> $SUMMARY
1140  if test "x$ADM" = x ; then  if test "x$ADM" = x -a "x$OADM" = x; then
1141      if [ $MATCH_CRIT -lt 10 ] ;      if [ $MATCH_CRIT -lt 10 ] ;
1142      then line_0="default  "$MATCH_CRIT ;      then line_0="default  "$MATCH_CRIT ;
1143      else line_0="default "$MATCH_CRIT ; fi      else line_0="default "$MATCH_CRIT ; fi
1144         line_0="$line_0  ----T-----  ----S-----  ----U-----  ----V-----"         line_0="$line_0  ----T-----  ----S-----  ----U-----  ----V-----"
1145  #   line_0="            ----T-----  ----S-----  ----U-----  ----V-----"  #   line_0="            ----T-----  ----S-----  ----U-----  ----V-----"
# Line 1067  if test "x$ADM" = x ; then Line 1163  if test "x$ADM" = x ; then
1163  else  else
1164      echo "ADJOINT=true" >> $SUMMARY      echo "ADJOINT=true" >> $SUMMARY
1165      echo >> $SUMMARY      echo >> $SUMMARY
1166      if [ $MATCH_CRIT -lt 10 ] ;      if [ $MATCH_CRIT -lt 10 ] ;
1167      then line_0="default     "$MATCH_CRIT ;      then line_0="default     "$MATCH_CRIT ;
1168      else line_0="default    "$MATCH_CRIT ; fi      else line_0="default    "$MATCH_CRIT ; fi
1169      echo "$line_0" | tee -a $SUMMARY      echo "$line_0" | tee -a $SUMMARY
1170      cat << EOF | tee -a $SUMMARY      cat << EOF | tee -a $SUMMARY
# Line 1082  fi Line 1178  fi
1178    
1179  #  ...and each test directory...  #  ...and each test directory...
1180  for dir in $TESTDIRS ; do  for dir in $TESTDIRS ; do
1181        
1182      # set builddir & rundir:      # set builddir & rundir:
1183      builddir="build"      builddir="build"
1184      if test ! -d $dir/$builddir ; then mkdir $dir/$builddir ; fi      if test ! -d $dir/$builddir ; then mkdir $dir/$builddir ; fi
# Line 1095  for dir in $TESTDIRS ; do Line 1191  for dir in $TESTDIRS ; do
1191    
1192      #  Cleanup only!      #  Cleanup only!
1193      if test "x$CLEANUP" = xt ; then      if test "x$CLEANUP" = xt ; then
1194          if test -r $BUILD_DIR/Makefile ; then          echo -n '  --- dir:' $BUILD_DIR ': '
1195              echo '  ------  clean dir:' $dir/$builddir          makeclean $BUILD_DIR
1196              ( cd $BUILD_DIR ; make CLEAN )          rm -f $BUILD_DIR/$EXECUTABLE
         fi  
1197          if test -d $dir/$rundir/CVS ; then          if test -d $dir/$rundir/CVS ; then
1198              echo '  ------  clean dir:' $dir/$rundir              echo -n '  --- dir:' $dir/$rundir ': '
1199              run_clean $dir/$rundir              run_clean $dir/$rundir
1200          fi          fi
1201          (          trdir=`( cd $dir ; find . -type d -name "tr_run.*" -print | sed 's/^.\///')`
1202              cd $dir          ttd=`echo $trdir | wc -w`
1203              rm -rf tr_run.*          if test $ttd != 0 ; then
1204          )              echo '  --- rm dir:' $trdir
1205                ( cd $dir ; rm -rf $trdir )
1206            fi
1207          continue          continue
1208      fi      fi
1209    
1210      #  Verify that the testdir exists and contains previous      #  Verify that the testdir exists and contains previous
1211      #  results in the correct location--or skip this directory!      #  results in the correct location--or skip this directory!
1212      fout=$dir"/results/"$ref_outp      fout=$dir"/results/"$ref_outp
1213      if test ! -r $fout ; then      if test ! -r $fout ; then
# Line 1128  for dir in $TESTDIRS ; do Line 1225  for dir in $TESTDIRS ; do
1225          echo "can't find \"$dir/input/eedata.mth\" -- skipping $dir"          echo "can't find \"$dir/input/eedata.mth\" -- skipping $dir"
1226          continue          continue
1227      fi      fi
1228        if test "x$MPI" = "xt" -a "x$MULTI_THREAD" = "xt" ; then
1229          retv=`check_eedata $CODE_DIR"/SIZE.h_mpi" $dir"/input/eedata.mth"`
1230          if test $retv != 0 ; then
1231            echo "input/eedata.mth tiling misfit -- skipping $dir"
1232            continue
1233          fi
1234        fi
1235    
1236      #  Check whether there are "extra runs" for this testdir      #  Check whether there are "extra runs" for this testdir
1237      extra_runs=      extra_runs=
1238      ex_run_dirs=`( cd $dir ; echo $inputdir.* )`      if test "x$NORUN" = xf ; then
1239            ex_run_dirs=`( cd $dir ; echo $inputdir.* )`
1240        fi
1241      #echo "ex_run_dirs='$ex_run_dirs'"      #echo "ex_run_dirs='$ex_run_dirs'"
1242      for exd in $ex_run_dirs ; do      for exd in $ex_run_dirs ; do
1243          name=`echo $exd | sed -e "s/$inputdir\.//"`          name=`echo $exd | sed -e "s/$inputdir\.//"`
1244          refExOut=`echo $ref_outp | sed "s/\./.${name}./"`          refExOut=`echo $ref_outp | sed "s/\./.${name}./"`
1245          outf="$dir/results/$refExOut"          outf="$dir/results/$refExOut"
1246          if test -f $outf -a -r $outf ; then          if test -f $outf -a -r $outf ; then
1247              if test "x$MULTI_THREAD" = "xt" ; then            if test "x$MULTI_THREAD" = "xt" ; then
1248                  if test -r $dir"/"$exd"/eedata.mth" ; then              if test -r $dir"/"$exd"/eedata.mth" ; then
1249                  if test "x$MPI" = "xt" ; then
1250                    retv=`check_eedata $CODE_DIR"/SIZE.h_mpi" $dir"/"$exd"/eedata.mth"`
1251                    if test $retv = 0 ; then
1252                      extra_runs="$extra_runs $name"                      extra_runs="$extra_runs $name"
1253                  #else echo $dir"/"$exd"/eedata.mth: not found"                  else
1254                        echo $exd"/eedata.mth tiling misfit -- skipping $dir"
1255                  fi                  fi
1256              else                else
1257                  extra_runs="$extra_runs $name"                  extra_runs="$extra_runs $name"
1258                  fi
1259                #else echo $dir"/"$exd"/eedata.mth: not found"
1260              fi              fi
1261              else
1262                extra_runs="$extra_runs $name"
1263              fi
1264          fi          fi
1265      done      done
1266    
1267      echo "-------------------------------------------------------------------------------"      echo "-------------------------------------------------------------------------------"
1268      echo      echo
1269      if test "x$extra_runs" = "x" ; then      if test "x$extra_runs" = "x" ; then
1270         echo "Experiment:  $dir"         echo "Experiment:  $dir"
1271      else      else
1272         echo "Experiment:  $dir ; extra_runs=$extra_runs"         echo "Experiment:  $dir ; extra_runs=$extra_runs"
# Line 1164  for dir in $TESTDIRS ; do Line 1279  for dir in $TESTDIRS ; do
1279      rel_CDIR=$DRESULTS"/"$dir      rel_CDIR=$DRESULTS"/"$dir
1280      mkdir $rel_CDIR      mkdir $rel_CDIR
1281      CDIR=`pwd`"/$rel_CDIR"      CDIR=`pwd`"/$rel_CDIR"
1282        
1283      if test "x$CLEANUP" = xt ; then      if test "x$NORUN" = xt ; then
1284          echo '====>>> this is to check that we never go through this part <<< ==='              run=N
1285          makeclean $dir/$builddir \          genmakemodel $dir/$builddir && genmake=Y \
1286              && run_clean $dir/$rundir              && makeclean $dir/$builddir \
1287                && run_clean $dir/$rundir \
1288                && symlink_mpifiles $dir $code_dir $builddir \
1289                && makedependmodel $dir/$builddir && makedepend=Y \
1290                && makemodel $dir/$builddir && make=Y
1291      else      else
1292          genmakemodel $dir/$builddir && genmake=Y \          genmakemodel $dir/$builddir && genmake=Y \
1293              && makeclean $dir/$builddir \              && makeclean $dir/$builddir \
# Line 1180  for dir in $TESTDIRS ; do Line 1299  for dir in $TESTDIRS ; do
1299              && runmodel $dir/$rundir && run=Y \              && runmodel $dir/$rundir && run=Y \
1300              && results=`testoutput_run $dir $rundir $ref_outp`              && results=`testoutput_run $dir $rundir $ref_outp`
1301      fi      fi
1302        
1303        #echo "results='$results'"
1304      echo      echo
1305          fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results`          fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results`
1306          echo          echo
# Line 1236  for dir in $TESTDIRS ; do Line 1356  for dir in $TESTDIRS ; do
1356          makeclean $dir/$builddir \          makeclean $dir/$builddir \
1357              && run_clean $dir/$rundir              && run_clean $dir/$rundir
1358      fi      fi
1359        
1360      echo "-------------------------------------------------------------------------------"      echo "-------------------------------------------------------------------------------"
1361        
1362  done  done
1363    
1364  printf "Start time:  " >> $SUMMARY  printf "Start time:  " >> $SUMMARY
# Line 1267  else Line 1387  else
1387              echo "An email containing results was sent to the following addresses:"              echo "An email containing results was sent to the following addresses:"
1388              echo "  \"$ADDRESSES\""              echo "  \"$ADDRESSES\""
1389              echo              echo
1390                test -f $DRESULTS".tar"  &&  rm -f $DRESULTS".tar"
1391                test -f $DRESULTS".tar.gz"  &&  rm -f $DRESULTS".tar.gz"
1392          fi          fi
         test -f $DRESULTS".tar"  &&  rm -f $DRESULTS".tar"  
         test -f $DRESULTS".tar.gz"  &&  rm -f $DRESULTS".tar.gz"  
1393      fi      fi
1394  fi  fi
1395    
1396  rm -f tr_cmpnum.c tr_cmpnum  if test "x$QUICK" = xf -a "x$NORUN" = xf ; then
1397        rm -f tr_cmpnum.c tr_cmpnum
1398    fi
1399    
1400  if test "x$CLEANUP" != xt ; then  if test "x$CLEANUP" != xt ; then
1401      cat $SUMMARY | sed 's/ \.  \.  \.  \.  \.  \.  \.  \.  \.  \.  \.  \. //'      cat $SUMMARY | sed 's/ \.  \.  \.  \.  \.  \.  \.  \.  \.  \.  \.  \. //'

Legend:
Removed from v.1.117  
changed lines
  Added in v.1.135

  ViewVC Help
Powered by ViewVC 1.1.22