--- mitgcm.org/front_content/make_summary	2004/04/02 21:51:31	1.14
+++ mitgcm.org/front_content/make_summary	2024/01/03 00:37:19	1.90
@@ -1,238 +1,86 @@
 #! /usr/bin/env bash
 
-# $Header: /home/ubuntu/mnt/e9_copy/mitgcm.org/front_content/make_summary,v 1.14 2004/04/02 21:51:31 edhill Exp $
+# $Header: /home/ubuntu/mnt/e9_copy/mitgcm.org/front_content/make_summary,v 1.90 2024/01/03 00:37:19 jmc Exp $
 #
 #  The purpose of this script is to create HTML summaries of the
 #  directories produced by the "parse_emails" script.
 
-
 usage()
 {
     echo
     echo "Usage:  $0 [OPTIONS]"
-    echo 
+    echo
     echo "where possible OPTIONS are:"
     echo "  (-help|-h)           print usage"
     echo "  (-date |-d )PERIOD   run for PERIOD=\"YYYY_MM\""
     echo "                         [def=\"$PERIOD\"]"
-    echo 
+    echo
     exit 1
 }
 
-old_summary()
-{
-    #  Create the old-style summary file for $PERIOD
-    echo -n "Creating the summary file for the period \"$PERIOD\" ...  "
-    cat > $OUTFILE << EOF
-
-
-
-  
-    MITgcm testing summary
-    
-    
-  
-  
-    
-
-EOF
-
-    # all_files=`find $INDIR -name summary.txt`
-    all_files=`( cd $INDIR ; find . -name summary.txt )`
-
-    for f in $all_files ; do
-	
-	file=$INDIR"/"${f/.\//}
-	grep "^fresults" $file > /dev/null 2>&1
-	RETVAL=$?
-	if test "x$RETVAL" != x0 ; then
-	    continue
-	fi
-	
-	url=`echo $file | sed -e 's|/u/edhill/www|http://mitgcm.org/~edhill|'`
-	url=`echo $url | sed -e 's|summary.txt||'`
-	MACH=
-	fresults=
-	color="#eeeeee"
-	
-	source $file
-	echo $fresults | grep FAIL > /dev/null 2>&1
-	if test "x$?" = x0 ; then
-	    color="#ff99ff"
-	fi
-	echo $fresults | grep pass > /dev/null 2>&1
-	if test "x$?" = x0 ; then
-	    color="#99ffff"
-	fi
-	
-	gm_state=`echo $file | sed -e 's/summary.txt/genmake_state/g'`
-	if test -r $gm_state ; then
-	    grep '^OPTFILE=' $gm_state > ./tmp_state
-	    source ./tmp_state
-	else
-	    optfile="unknown"
-	fi
-	optfile=`echo $OPTFILE | awk -F '/' '{print $NF}'`
-	
-	echo "" >> $OUTFILE
-	echo "| $MACH | " >> $OUTFILE
-	echo "$DATE | " >> $OUTFILE
-	for i in $fresults ; do
-	    if test "x$i" = xN ; then
-		echo -n "$i | " >> $OUTFILE
-	    else
-		echo -n "$i | " >> $OUTFILE
-	    fi
-	done
-	echo "$optfile | " >> $OUTFILE
-	echo "
" >> $OUTFILE
-	
-    done
-    
-    cat >> $OUTFILE << EOF
-
-    
-  
-
-EOF
-
-    chmod a+r $OUTFILE
-    echo "done"
-}
-
-
+export LC_ALL="en_US.UTF-8"
+CURR_PER=`date +%Y`"_"`date +%m`
 # defaults
-PERIOD=`date +%Y`"_"`date +%m`
+PERIOD=$CURR_PER
 
 #  Parse options
 ac_prev=
 for ac_option ; do
-        
+
     # If the previous option needs an argument, assign it.
     if test -n "$ac_prev"; then
-        eval "$ac_prev=\$ac_option"
-        ac_prev=
-        continue
+	eval "$ac_prev=\$ac_option"
+	ac_prev=
+	continue
     fi
-    
+
     ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
-    
+
     case $ac_option in
-	
+
 	-help | --help | -h | --h)
 	    usage ;;
-	
-        -date | --date | -d | --d)
-            ac_prev=PERIOD ;;
-        --date=* | -date=*)
-            PERIOD=$ac_optarg ;;
-        
-        *)
+
+	-date | --date | -d | --d)
+	    ac_prev=PERIOD ;;
+	--date=* | -date=*)
+	    PERIOD=$ac_optarg ;;
+
+	*)
 	    echo "Error: don't understand argument \"$ac_option\""
 	    usage
-            ;;
-        
+	    ;;
+
      esac
-     
+
 done
 
+#INDIR="/net/orwell/export/export-9/mitgcm-testing/results/$PERIOD"
+#OUTDIR="/home/jmc/mitgcm/test_web/summary"
 INDIR="/u/u0/httpd/html/testing/results/$PERIOD"
 OUTDIR="/u/u0/httpd/html/testing/summary"
-OUTFILE=$OUTDIR"/summary_"$PERIOD".html"
 
-#  Create the "latest" links
+OUTFILE=$OUTDIR"/output_"$PERIOD".html"
+res_url="http://mitgcm.org/testing/"
+
+#TMP=./mksum_$$
+#- try to put temporary files in system-local /tmp dir
+TMP=/tmp/mksum_$$
+touch $TMP ; retVal=$?
+if [ $retVal -eq 0 ] ; then
+  if test ! -r $TMP ; then TMP=./mksum_$$ ; fi
+else
+  TMP=./mksum_$$
+fi
+rm -f $TMP
+# echo "temp files: $TMP"
+
+#  Create the links in $OUTFILE :
 echo "Creating the \"latest\" file for each machine: "
-LATEST=$OUTDIR"/latest_"$PERIOD".html"
 the_date=`date`
-cat > $LATEST << EOF
-
-
-
-  
-    MITgcm testing summary
-    
-
-    
-
-    
-    
-    
-    
-    
-    
-
-  
-  
-    The MITgcm model is tested 
-      (compiled and run) in an automated fashion on a varirety of 
-      different machines.  The following is a summary of the MITgcm 
-      verification suite for the time period: $PERIOD.
-
-    The machine naming scheme is:
-    
 
-    
-      The complete output for the verification runs can be found in
-      the summary pages
-      and the testing archives. 
-      The latest reports are:
+sed "s/_PERIOD/$PERIOD/" summary_head > $OUTFILE
+cat <>$OUTFILE
     
 
   |  Nickname  | 
@@ -247,19 +95,31 @@
 
 color="#bbffdd"
 ncolor="#bbddff"
-res_url="http://mitgcm.org/testing/"
 
-MACHINES="faulks shelley myrinet eaps halem hopper lomax orion bf bs slough sea"
-MACHINES="$MACHINES  eddy adams dolphin hemmingway"
+MACHINES="villon batsi engaging svante glacier"
+MACHINES="$MACHINES albedo pleiades archer"
+
+( cd $INDIR ; ls -1 -t */summary.txt | sed 's/\/summary.txt//' ) > $TMP.dir_all
 
-( cd $INDIR ; ls -1 ) > ./dir_all
+MALL=`cat $TMP.dir_all | sed -e 's|_| |g' | awk '{print $2}' | sort | uniq`
+for madd in $MALL ; do
+    present=0
+    for m in $MACHINES ; do
+	echo $madd | grep $m > /dev/null 2>&1
+	RETVAL=$?
+	test $RETVAL = 0  &&  present=1
+	continue
+    done
+    test $present = 0  &&  MACHINES="$MACHINES $madd"
+done
+#MACHINES="baudelaire"
 
 for mname in $MACHINES ; do
 
     echo "  $mname"
 
-    dir_list=`grep $mname ./dir_all`
-    echo -n "" > ./mlist
+    dir_list=`grep $mname $TMP.dir_all`
+    echo -n "" > $TMP.mlist
 
     for i in $dir_list ; do
 
@@ -276,7 +136,7 @@
 	    OPTFILE=${OPTFILE##*/}
 	fi
 	if test "x$OPTFILE" = x ; then
-	    comm=`grep '^# OPTFILE=' $dir/*/Makefile 2>/dev/null | head -1`
+	    comm=`grep '^# OPTFILE=' $dir/*/Makefile* 2>/dev/null | head -1`
 	    comm=${comm##*#}
 	    eval $comm
 	    OPTFILE=${OPTFILE##*/}
@@ -285,41 +145,114 @@
 	    OPTFILE="not_explicitly_specified"
 	fi
 
-	ADJOINT=
+	# EXTRA = non-standard list of experiment
+	ADJOINT=0
+	TANGLIN=0
+	OPENAD=0
+	TAPENAD=0
+	RESTART=0
+	Special=0
+	EXTRA=
+	FAST=0
+	DVLP=0
+	MPI=0
+	MTH=0
+	UR4=0
 	if test -r $dir/summary.txt ; then
-	    comm=`grep 'ADJOINT=true' $dir/summary.txt 2>/dev/null`
-	    eval $comm
+	    TAPENAD=`grep -c ' generated by Tapenade' $dir/summary.txt`
+	    ADJOINT=`grep -c -i '^ADJOINT' $dir/summary.txt`
+	    TANGLIN=`grep -c -i '^TANGLIN' $dir/summary.txt`
+	    if test "x$ADJOINT" = x1 ; then
+		OPENAD=`grep -c '^Adjoint .* OpenAD' $dir/summary.txt`
+	    fi
+	    RESTART=`grep -c 'test 2+2=4 summary' $dir/summary.txt`
+	    #- special label for "darwin" tests
+	    Special=`echo $i | grep -c '\-darwin[0-9]'`
+	    if test $Special != 0 ; then
+		Special=`echo $i | sed -e "s/.*$mname/$mname/" -e "s/_/ /g" -e "s/-/ /g"`
+		Special=`echo $Special | awk '{print $2}' | sed 's/darwin//'`
+	    fi
+	    comm=`grep '^run: .*testreport.* ' $dir/summary.txt`
+	    EXTRA=`echo "$comm" | grep " -*-tdir\>" | sed -e "s/^.* -*-tdir\>//" -e "s/ -.*$//"`
+	    if test "x$EXTRA" = x ; then
+		EXTRA=`echo "$comm" | grep " -*-t\>" | sed -e "s/^.*-*-t\>//" -e "s/ -.*$//"`
+	    fi
+	    if test "x$EXTRA" = x ; then EXTRA=0 ; else
+		#echo -n "EXTRA=$EXTRA"
+		nn0=`echo $EXTRA | sed "s/ *' *//g" | wc -w`
+		nn1=`echo $EXTRA | sed "s/ *' *//g" | tr ' ' '\n' | grep -c "\"`
+	    if test "x$FAST" = x0 ; then
+		FAST=`echo "$comm" | grep -c " '*-noieee'*"`
+	    fi
+	    DVLP=`echo "$comm" | grep -c " -*-devel\>"`
+	    MPI=`echo "$comm" | grep -c " -*-mpi\>"`
+	    if test "x$MPI" = x0 ; then
+		MPI=`echo "$comm" | grep -c " -*-MPI\>"`
+	    fi
+	    MTH=`echo "$comm" | grep -c " -*-mth\>"`
+	    UR4=`echo "$comm" | grep -c " -*-use_r4\>"`
+	    if test "x$UR4" = x0 ; then
+		UR4=`echo "$comm" | grep -c " -*-ur4\>"`
+	    fi
+	else EXTRA=0 ; fi
+	if test "x$ADJOINT" = x1 ; then
+	    kind="adjoint-taf" ; order=0
+	  if test "x$TAPENAD" = x1 ; then
+	    kind="adjoint-Tap" ; order=2
+	  elif test "x$OPENAD" = x1 ; then
+	    kind="adjoint-oad" ; order=4
+	  fi
+	elif test "x$TANGLIN" = x1 ; then
+	    kind="tanglin-taf" ; order=1
+	  if test "x$TAPENAD" = x1 ; then
+	    kind="tanglin-Tap" ; order=3
+	  fi
+	elif test "x$RESTART" = x0 ; then
+	    kind="forward" ; order=6
+	else
+	    kind="restart" ; order=7
+	fi
+	if test "x$UR4" = x1 ; then
+	    OPTFILE="${OPTFILE}.use_r4"
+	fi
+	if test "x$MPI" = x1 ; then
+	    yy=`echo $OPTFILE | grep -c '+mpi'`
+	    if test $yy = 0 ; then yy=`echo $OPTFILE | grep -c '+impi'` ; fi
+	    if test $yy = 0 ; then OPTFILE="${OPTFILE}+mpi"
+			      else order=`expr $order + 200` ; fi
 	fi
-	if test "x$ADJOINT" = x ; then
-	    kind="forward"
+	if test "x$MTH" = x1 ; then
+	    yy=`echo $OPTFILE | grep -c '+mth$'`
+	    if test $yy = 0 ; then OPTFILE="${OPTFILE}+mth" ; fi
+	fi
+	if test "x$FAST" = x1 ; then
+	    OPTFILE="${OPTFILE}.fast"
+	fi
+	if test "x$DVLP" = x1 ; then
+	    OPTFILE="${OPTFILE}.dvlp"
+	fi
+	if [ $Special -eq 0 ] ; then
+	    order=`expr $order + 10 \* $EXTRA`
 	else
-	    test "x$ADJOINT" = xtrue  &&  kind="adjoint"
+	    order=`expr $order + 10 \* $Special`
 	fi
+	order=`printf '%3.3i' $order`
 
 	t_pass="--"
 	t_tot="--"
 	if test -r $dir/summary.txt ; then
-	    grep '^[YN] [YN] [YN] [YN] ' $dir/summary.txt > ./all_tests 2>/dev/null
+	    grep '^[YN] [YN] [YN] [YN]' $dir/summary.txt > ./all_tests 2>/dev/null
 	    t_tot=`cat ./all_tests | wc -l | sed -e 's| ||g'`
-	    grep '^Y Y Y Y ' ./all_tests > ./all_ran 2>/dev/null
-	    grep advect_ ./all_ran 2>/dev/null > ./all_ran_advect
-	    t_advect=`cat ./all_ran_advect | wc -l | sed -e 's| ||g'`
-	    digits=`cat ./all_ran_advect | awk '{print $9}'`
-	    t_advect_pass=0
-	    for k in $digits ; do
-		test "x$k" = x--   &&  k=0
-		test $k -ge 9  &&  t_advect_pass=$(( $t_advect_pass + 1 ))
-	    done
-	    grep -v advect ./all_ran 2>/dev/null > ./all_ran_noadvect
-	    digits=`cat ./all_ran_noadvect | awk '{print $5}'`
-	    t_sum=0
-	    for k in $digits ; do
-		test "x$k" = x--   &&  k=0
-		test $k -ge 9  &&  t_sum=$(( $t_sum + 1 ))
-	    done
-	    t_pass=$(( $t_sum + $t_advect_pass ))
+	    t_pass=`grep '^Y Y Y Y' ./all_tests | grep 'pass ' | wc -l | sed -e 's| ||g'`
 	fi
-	rm -f ./all_tests ./all_ran ./all_ran_advect ./all_ran_noadvect
+	rm -f ./all_tests
 	# echo "${dir##*/} : $t_pass out of $t_tot"
 
 	tokens=`echo $i | sed -e 's|_| |g'`
@@ -327,38 +260,43 @@
 	for tok in $tokens ; do
 	    echo $tok >> ./ms_tmp
 	done
-	DAY=`cat ./ms_tmp | awk '(length($1)==8 && substr($1,0,3)=="200")'`
+	DAY=`cat ./ms_tmp | awk '(length($1)==8 && substr($1,0,2)=="20")'`
 	rm -f ./ms_tmp
 
-	echo "$OPTFILE$kind $DAY $OPTFILE $kind $i $t_pass:$t_tot" >> ./mlist
+	echo "$OPTFILE$order $DAY $OPTFILE $kind $i $t_pass:$t_tot" >> $TMP.mlist
 
     done
 
     # helpful for debugging
-    # cat ./mlist
+    # cat $TMP.mlist
 
     #  Do we have any data?  If so, create the latest pointer.
-    num=`wc -l ./mlist | awk '{print $1}'`
+    num=`wc -l $TMP.mlist | awk '{print $1}'`
     if test $num -gt 0 ; then
 
 	# swap colors
-        ctmp=$color
-        color=$ncolor
-        ncolor=$ctmp
+	ctmp=$color
+	color=$ncolor
+	ncolor=$ctmp
 
-	keys=`cat ./mlist | cut -d " " -f 1 | sort | uniq`
+	keys=`cat $TMP.mlist | cut -d " " -f 1 | sort | uniq`
 
 	for key in $keys ; do
-	    tline=`grep "^$key " ./mlist | sort -r | head -1`
+	    tline=`grep "^$key " $TMP.mlist | head -1`
 	    ratio=`echo $tline | cut -d " " -f 6`
 	    ldir=`echo $tline | cut -d " " -f 5`
 	    kind=`echo $tline | cut -d " " -f 4`
 	    optf=`echo $tline | cut -d " " -f 3`
 	    DAY=`echo $tline | cut -d " " -f 2`
 	    URL="results/$PERIOD/$ldir"
-	    cat <>$LATEST
+	    #-- machine name to print:
+	    sname=`echo $mname | sed 's/-$//'`
+	    alt=`echo $key | sed "s/$optf//"`
+	   #if   [ $alt -ge 30 ] ; then sname="${sname}.darwin"
+	   #elif [ $alt -ge 20 ] ; then sname="${sname}.monod" ; fi
+	    cat <>$OUTFILE
 
-  |  $mname  | 
+   $sname  | 
    $optf  | 
    $kind  | 
    $DAY  | 
@@ -371,27 +309,30 @@
 
 done
 
-cat >> $LATEST << EOF
+cat >> $OUTFILE << EOF
 
   | This table generated on: $the_date | 
 
 
     
 
-Examples of the scripts used for these testing runs can be obtained
-from 
-the "contrib" area of the MITgcm CVS archive.
-
+Examples of the scripts used for these testing runs can be obtained from: 
+MITgcm_contrib/test_scripts.
 
   
 
 
 EOF
 
-rm -f ./dir_all ./mlist
+rm -f $TMP.dir_all $TMP.mlist
+
+#- put the file in place
+chgrp gcmpack $OUTFILE
+chmod 664 $OUTFILE
+LATEST=$OUTDIR"/latest_"$PERIOD".html"
+mv -f $OUTFILE $LATEST
 
-CURR_PER=`date +%Y`"_"`date +%m`
 if test "x$PERIOD" = "x$CURR_PER" ; then
     cp $LATEST ./testing.xml
     (