Index: /branches/2015/dev_r5092_CNRS_SETTE/NEMOGCM/TRUST/cfg/X64_ADA.cfg
===================================================================
--- /branches/2015/dev_r5092_CNRS_SETTE/NEMOGCM/TRUST/cfg/X64_ADA.cfg	(revision 5292)
+++ /branches/2015/dev_r5092_CNRS_SETTE/NEMOGCM/TRUST/cfg/X64_ADA.cfg	(revision 5292)
@@ -0,0 +1,17 @@
+# 
+COMPILER=ifort
+MPI_NAME=intel
+
+# Job commands: LoadLeveler
+JOB_SUBM=llsubmit
+JOB_LIST=llq
+JOB_VIEW='llq -xl'
+JOB_DELE=llcancel                          
+
+# Directories ($HOME/$WORKDIR/$COMMONDIR/$TMPDIR/ergon)
+DIR_WORK=$WORKDIR
+DIR_SCRA=$TMPDIR/trusting
+DIR_STOR=trusting_sav
+
+# Loading environment architecture
+. ${DIR_XIOS}/arch/arch-${ARCH}.env
Index: /branches/2015/dev_r5092_CNRS_SETTE/NEMOGCM/TRUST/cfg/X64_CURIE.cfg
===================================================================
--- /branches/2015/dev_r5092_CNRS_SETTE/NEMOGCM/TRUST/cfg/X64_CURIE.cfg	(revision 5292)
+++ /branches/2015/dev_r5092_CNRS_SETTE/NEMOGCM/TRUST/cfg/X64_CURIE.cfg	(revision 5292)
@@ -0,0 +1,20 @@
+# Curie super-computer configuration
+
+# Available softwares:
+CDO=cdo 
+COMPILER=ifort
+MPI=bullxmpi
+NETCDF=netcdf
+
+# Job commands: ccc_*
+JOB_SUBM=ccc_msub
+JOB_LIST=ccc_mpp
+JOB_VIEW=ccc_macct
+JOB_DELE=ccc_mdel                          
+
+#
+[ -z "$NPROC"     ] && NPROC=1
+[ -z "$TIME_LIMI" ] && TIME_LIMI=10800 # 3h
+
+# Architecture environment (be careful with compliance with XIOS)
+ARCH_ENV=${DIR_XIOS}/arch/arch-${ARCH}.env
Index: /branches/2015/dev_r5092_CNRS_SETTE/NEMOGCM/TRUST/cfg/user_template.cfg
===================================================================
--- /branches/2015/dev_r5092_CNRS_SETTE/NEMOGCM/TRUST/cfg/user_template.cfg	(revision 5292)
+++ /branches/2015/dev_r5092_CNRS_SETTE/NEMOGCM/TRUST/cfg/user_template.cfg	(revision 5292)
@@ -0,0 +1,32 @@
+# Copy to ./user.cfg, fill in according to your installation
+
+# User configuration
+
+# Global Directories:
+DIR_WORK=''   	 			  # Directory for compilation
+DIR_SCRA=''    	 			  #    " "    " " computation to increase perfs on some super-computers
+              	 			  # (will copy into it all requested forcing input & ".*(cfg|opa|ref|xml)" files)
+DIR_STOR=''    	 			  #    " "     for comparison (ASCII output & restart files of reference config)
+
+# NEMO overall configuration:
+[ -z "${NEMO_BRAN}" ] && NEMO_BRAN=''     # trunk, dev_v3_4_STABLE_2012, ...
+[ -z "${CONF_REFE}" ] && CONF_REFE=''     # ORCA2_LIM_PISCES, GYRE, ...
+[ -z "${CONF_TEST}" ] && CONF_TEST=''     # ${CONF_REFE}_trust, ...
+NEMO_HOME=''                              # NEMOGCM equivalent root directory to find ./ARCH,./CONFIG, ...
+                                          # (${DIR_WORK}/NEMO/${NEMO_BRAN}/NEMOGCM, ...)
+
+# Comparatives directories localization:
+DIR_REFE=''			      	  # ${DIR_STOR}/${CONF_REFE}/${NEMO_BRAN}
+DIR_TEST=''			      	  # ${DIR_SCRA}/${CONF_REFE}/${NEMO_BRAN}/trusting_${DATE_STR}
+
+# External softs directories:
+DIR_XIOS=''			      	  # ${DIR_WORK}/XIOS/xios-1.0
+DIR_OASI=''			      	  # ${DIR_WORK}/OASIS        
+
+# NEMO inputs (fill in if necessary)
+NEMO_FORC=''                              # Directory synchronized with DODS server
+                                          # (${DIR_WORK}/NEMO/FORC, ...)
+FORC_TARF=''                              # Archive name (ORCA2_LIM_nemo_v3.6.tar, ...)
+
+# Mailing list to inform of a failure, -p|--publish option required
+[ -z "$MAIL"] && MAIL=''
Index: /branches/2015/dev_r5092_CNRS_SETTE/NEMOGCM/TRUST/trusting.env
===================================================================
--- /branches/2015/dev_r5092_CNRS_SETTE/NEMOGCM/TRUST/trusting.env	(revision 5292)
+++ /branches/2015/dev_r5092_CNRS_SETTE/NEMOGCM/TRUST/trusting.env	(revision 5292)
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+
+# Time-stamp
+date_test=$( date )
+export DATE_STR=$( LC_ALL=C date -d"${date_test}" +%Y%m%dT%H%M )
+
+# Sourcing user configuration
+[ ! find ./cfg        -name ${CFG_USER}.cfg ] && { echo 'No configuration file in ./cfg for '${CFG_USER}; exit; }
+. cfg/${CFG_USER}.cfg
+export DIR_WORK  DIR_SCRA  DIR_STOR
+export NEMO_HOME NEMO_BRAN CONF_REFE CONF_TEST
+export DIR_REFE  DIR_TEST
+export DIR_XIOS  DIR_OASI
+export NEMO_FORC FORC_TARF
+
+NEMO_ARCH=${NEMO_HOME}/ARCH         ; NEMO_CONF=${NEMO_HOME}/CONFIG         ; NEMO_ENGI=${NEMO_HOME}/NEMO
+NEMO_EFCM=${NEMO_HOME}/EXTERNAL/fcm ; NEMO_IPSL=${NEMO_HOME}/EXTERNAL/IOIPSL; NEMO_TRUS=${NEMO_HOME}/SETTE
+NEMO_TCMP=${NEMO_HOME}/TOOLS/COMPILE
+export NEMO_ARCH NEMO_CONF NEMO_EFCM
+export NEMO_ENGI NEMO_IPSL NEMO_TRUS
+export NEMO_TCMP
+
+# Sourcing super-computer configuration
+[ ! find ./cfg        -name ${CFG_ARCH}.cfg ] && { echo 'No configuration file in ./cfg for '${CFG_ARCH}; exit; }
+. cfg/${CFG_ARCH}.cfg
+export CDO      COMPILER  MPI      NETCDF
+export JOB_SUBM JOB_LIST  JOB_VIEW JOB_DELE
+export NPROC    TIME_LIMI
+export ARCH_ENV
+
+[ ! find ${NEMO_ARCH} -name arch-$ARCH.fcm  ] && { echo 'No fcm file in '${NEMO_ARCH}' for '$ARCH       ; exit; }
Index: /branches/2015/dev_r5092_CNRS_SETTE/NEMOGCM/TRUST/trusting.sh
===================================================================
--- /branches/2015/dev_r5092_CNRS_SETTE/NEMOGCM/TRUST/trusting.sh	(revision 5292)
+++ /branches/2015/dev_r5092_CNRS_SETTE/NEMOGCM/TRUST/trusting.sh	(revision 5292)
@@ -0,0 +1,167 @@
+#!/bin/bash
+#
+# Author: Patrick Brockmann
+# Contact: Patrick.Brockmann@cea.fr
+# History:
+# Modification: Nicolas-thierry.Martin@locean-ipsl.upmc.fr
+#
+
+
+# Set defaults
+DEBUG=0; PUBLISH=0; status='OK'
+
+# Get options to replace some initials settings
+while [ $# -ne 0 ]; do
+    case $1 in
+        -b|--branch ) NEMO_BRAN=$2         ; shift 2;; -d|--debug  ) set -vx; DEBUG=1     ; shift  ;;
+	-e|--email  ) MAIL=$2              ; shift 2;; -j|--job    ) NPROC=$2             ; shift 2;;
+	-h|--help   ) cat trusting_help.txt; exit   ;; -m|--machine) CFG_ARCH=$2          ; shift 2;;
+	-n|--newconf) CONF_TEST=$2         ; shift 2;; -r|--refconf) CONF_REFE=$2         ; shift 2;;
+	-t|--time   ) TIME_LIMI=$2         ; shift 2;; -p|--publish) PUBLISH=1            ; shift  ;;
+        -u|--user   ) CFG_USER=$2          ; shift 2;; -v|--version) NEMO_REVI=$2         ; shift 2;;
+                   *) cat trusting_help.txt; exit   ;;
+    esac
+done
+
+# Set super-computer & user environment
+[[ ! -z "${CFG_ARCH}" && ! -z "${CFG_USER}" ]] && . trusting.env || { ./trusting.sh -h && exit; }
+export DEBUG PUBLISH
+
+# Initialization
+#=============================================
+
+echo ${DIR_TEST}
+mkdir -p ${DIR_TEST} ${DIR_REFE}
+cd ${DIR_TEST}
+datestr1=$( LC_ALL=C date -d"$DATE_STR" +%Y-%m-%dT%H:%M )
+printf "Date\n%s\n"       $datestr1 > mesg_01_date_${CFG_USER}_${CFG_ARCH}.txt
+
+printf "Status\nFAILED\n"           > mesg_02_status_${CFG_USER}_${CFG_ARCH}.txt # Only at end status will change to OK
+
+. trusting_func.sh
+#=============================================
+
+
+# 
+#=============================================
+for rel in $CDO $COMPILER $MPI $NETCDF; do
+    printf "Step......................\nGet $rel release\n" > mesg_03_step_${CFG_USER}_${CFG_ARCH}.txt
+                             arch_rel=$( echo $LOADEDMODULES | sed "s#.*:$rel/\([^:]*\).*#\1#" )
+    [ -z "${arch_rel}"  ] && arch_rel=$( echo $PATH          | sed "s#.*$rel/\([^/]*\).*#\1#"  )
+    [ $( echo $rel | grep "$CDO\|$COMPILER" ) ] && arch_rel=$( $rel --version | grep -m1 -o ' [0-9.]* ' )
+    echo $rel ${arch_rel} >> model.log
+done
+
+sed -n 1p model.log | sed 'i\Fortran compiler' > mesg_04_compiler_${CFG_USER}_${CFG_ARCH}.txt
+sed -n 2p model.log | sed 'i\MPI libraries   ' > mesg_05_mpi_${CFG_USER}_${CFG_ARCH}.txt
+sed -n 3p model.log | sed 'i\NetCDF libraries' > mesg_06_netcdf_${CFG_USER}_${CFG_ARCH}.txt
+
+
+#---------------------------------------------
+printf "Step......................\nCheckout XIOS, FCM-make(/EXTERNAL/fcm), NEMO engines (/NEMO) & configuration (/CONFIG)\n" > mesg_03_step_${CFG_USER}_${CFG_ARCH}.txt
+svn_cmd='svn status'
+
+# If -v|--version option has been set, modify svn command
+[ $( echo ${NEMO_VERS} | grep  "up\|update"         ) ] && svn_cmd='svn update'
+[ $( echo ${NEMO_VERS} | tr -d '[:alpha:][:punct:]' ) ] && svn_cmd='svn update -r '$( echo ${NEMO_VERS} | tr -d '[:alpha:][:punct:]' )
+
+rev=0
+for dir in ${DIR_XIOS} ${NEMO_ARCH} ${NEMO_CONF} ${NEMO_EFCM} ${NEMO_ENGI} ${NEMO_IPSL} ${NEMO_TRUS} ${NEMO_TCMP}; do
+    [ $dir == ${DIR_XIOS} ] && echo 'XIOS '$( svn info $dir | awk '(NR == 9) {print $NF}' ) >> model.log && continue
+    ${svn_cmd} $dir
+    rev_loc=$( svn info $dir | awk '(NR == 9) {print $NF}' )
+    (( ${rev_loc} >= $rev )) && rev=${rev_loc}
+done
+echo 'NEMO '$rev >> model.log
+
+
+#---------------------------------------------
+printf "Step......................\nCompilation NEMO configuration %s\n" ${CONF_REF} > mesg_03_step_${CFG_USER}_${CFG_ARCH}.txt
+cd ${NEMO_CONF}
+. ${ARCH_ENV}     # Sourcing architecture environment
+#[ -d ${CONF_TEST} ] && ./makenemo -n ${CONF_TEST} clean
+./makenemo -n ${CONF_TEST} -r ${CONF_REFE} -m $ARCH -j $NPROC #> /dev/null 2>&1
+[ ! -e ${CONF_TEST}/BLD/bin/nemo.exe ] && getout
+
+
+#---------------------------------------------
+printf "Step......................\nPreparing job\n" > mesg_03_step_${CFG_USER}_${CFG_ARCH}.txt
+cd ${DIR_TEST}
+find ${NEMO_CONF}/${CONF_TEST}/EXP00 -regex '.*\(cfg\|opa\|ref\|xml\)' -exec cp {} . \;
+
+if [ ! -z "${NEMO_FORC}" ]; then
+    cp ${NEMO_FORC}/${FORC_TAR} .
+    tar -tvf ${FORC_TAR} > inputs_list.txt && tar -vxf ${FORC_TAR}
+    [ $? -ne 0 ] && getout
+    gunzip *.gz
+else
+    touch inputs_list.txt
+fi
+
+
+#---------------------------------------------
+printf "Step......................\nRunning\n"       > mesg_03_step_${CFG_USER}_${CFG_ARCH}.txt
+#${JOB_SUB} ${DIR_TEST}/../../batch.sh
+job_num=$( ${JOB_SUB} ${DIR_TEST}/../../batch.sh | awk '{print $NF}')
+[ $? -ne 0 ] && getout
+
+time_elapsed=0; time_increment=300
+sleep ${time_increment}
+while [[ $( ${JOB_LIST} | grep $job_num ) && ${time_elapsed} -lt ${TIME_LIMI} ]] ; do
+    printf "\n####################################################" >> computation.log
+    ${JOB_VIEW} $job_num                                            >> computation.log
+    sleep ${time_increment}
+    let time_elapsed+=${time_increment}
+done
+
+
+#---------------------------------------------
+printf "Step......................\nTest if ASCII output files exist\n"   > mesg_03_step_${CFG_USER}_${CFG_ARCH}.txt
+if      [ ! -f ${output_test} ]; then
+
+    getout
+else if [  ]
+
+    grep 'E R R O R' ocean.output    >> mesg_11_comments_${CFG_USER}_${CFG_ARCH}.txt
+    sed 's/^/Time step :/' time.step >> mesg_11_comments_${CFG_USER}_${CFG_ARCH}.txt
+fi
+
+
+#---------------------------------------------
+printf "Step......................\nTest ASCII output files difference\n" > mesg_03_step_${CFG_USER}_${CFG_ARCH}.txt
+for file in ocean.output solver.stat tracer.stat; do
+    diff $file ${DIR_REFE}/$file
+    [ $? -ne 0 ] && status='FAILED'
+done
+
+
+#---------------------------------------------
+printf "Step......................\nTest last restart files difference\n" > mesg_03_step_${CFG_USER}_${CFG_ARCH}.txt
+diff_trusting 2>/dev/null
+[ $? -ne 0 ] && status='FAILED'
+
+
+#---------------------------------------------
+echo 'Comments'                    >  mesg_11_comments_${CFG_USER}_${CFG_ARCH}.txt
+grep 'W A R N I N G:' ocean.output >> mesg_11_comments_${CFG_USER}_${CFG_ARCH}.txt
+
+
+#---------------------------------------------
+if [ $status != 'FAILED' ]; then
+    printf "Step......................\nGet Real CPU time\n" > mesg_03_step_${CFG_USER}_${CFG_ARCH}.txt
+    real_cpu_time=$( ${JOB_VIEW} $job_num | awk 'END{print $9}')
+    printf "Real CPU time\n%s\n" ${real_cpu_time} > mesg_08_realcputime_${CFG_USER}_${CFG_ARCH}.txt
+else
+    printf "Step......................\nTest InputFiles difference\n" > mesg_03_step_${CFG_USER}_${CFG_ARCH}.txt
+    diff inputs_list.txt ${DIR_REFE}/inputs_list.txt
+    [ $? -ne 0 ] && getout
+    [[ $? -ne 0 && printf "InputFiles\n%s\n" "Different" > mesg_09_inputfiles_${CFG_USER}_${CFG_ARCH}.txt ]] || printf "InputFiles\n%s\n" "Same" > mesg_09_inputfiles_${CFG_USER}_${CFG_ARCH}.txt
+fi
+
+
+#---------------------------------------------
+printf "Status\nOK\n" > mesg_02_status_${CFG_USER}_${CFG_ARCH}.txt
+printf "Step......................\nCode is reliable\n" > mesg_03_step_${CFG_USER}_${CFG_ARCH}.txt
+
+#---------------------------------------------
+getout
Index: /branches/2015/dev_r5092_CNRS_SETTE/NEMOGCM/TRUST/trusting_func.sh
===================================================================
--- /branches/2015/dev_r5092_CNRS_SETTE/NEMOGCM/TRUST/trusting_func.sh	(revision 5292)
+++ /branches/2015/dev_r5092_CNRS_SETTE/NEMOGCM/TRUST/trusting_func.sh	(revision 5292)
@@ -0,0 +1,106 @@
+#!/bin/bash
+
+function mesg_make { 
+    paste -d ';' mesg_*_${CFG_USER}_${CFG_ARCH}.txt > trusting_${DATE_STR}_${CFG_USER}_${CFG_ARCH}.txt
+    cat trusting_${DATE_STR}_${CFG_USER}_${CFG_ARCH}.txt
+}
+
+#=============================================
+function mesg_publish { 
+  
+if [ $PUBLISH -eq 1 ]; then
+
+  if [ -f ${DIR_TEST}/trusting_${CFG_USER}_${CFG_ARCH}.txt ] ; then
+      tail -1 trusting_${DATE_STR}_${CFG_USER}_${CFG_ARCH}.txt >> ${DIR_TEST}/trusting_${CFG_USER}_${CFG_ARCH}.txt
+  else
+      cp      trusting_${DATE_STR}_${CFG_USER}_${CFG_ARCH}.txt    ${DIR_TEST}/trusting_${CFG_USER}_${CFG_ARCH}.txt
+  fi
+
+  cp trusting_${DATE_STR}_${CFG_USER}_${CFG_ARCH}.txt ${DIR_TEST}
+#  chmod o+r ${DIR_TEST}/trusting_${DATE_STR}_${CFG_USER}_${CFG_ARCH}.txt
+  
+#  rm -rf              ${DIR_WORK}/../../dods/public/${LOGNAME}/trusting/${CONF_REF}
+#  cp -alf ${DIR_TEST} ${DIR_WORK}/../../dods/public/${LOGNAME}/trusting/${CONF_REF}
+#  chmod o+rX          ${DIR_WORK}/../../dods/public/${LOGNAME}/trusting/${CONF_REF}
+  
+  # Send mail only when FAILED
+  if [[ grep 'FAILED' mesg_02_status_${CFG_USER}_${CFG_ARCH}.txt && ! -z $MAIL ]]; then
+      cat << END_MAIL > ${DIR_TEST}/trusting.mail
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+Dear $USER,
+
+The trusting sequence for ${CONF_REF} has failed.
+Please consult http://webservices.ipsl.fr/trusting/
+
+Failed at step: `tail -n 1 mesg_03_step_${CFG_USER}_${CFG_ARCH}.txt`
+Directory : ${DIR_TEST}
+
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
+END_MAIL
+      mail -s "[trusting ${CONF_REF}] FAILED" $MAIL < ${DIR_TEST}/trusting.mail
+  fi
+
+fi
+
+}
+
+#=============================================
+function getout { 
+	cd ${DIR_TEST}
+        mesg_make; mesg_publish
+
+        # Add tar saved into {DIR_STOR}
+	find ${DIR_SCRA}/trusting/${CONF_REF}/* -prune -mtime +7 -exec /bin/rm -rf {} \; > /dev/null 2>&1
+        [ -f ${DIR_STOR}/${CONF_REF}.tar ] && \rm ${DIR_STOR}/${CONF_REF}.tar
+        tar -cf ${DIR_STOR}/${CONF_REF}.tar .
+
+        exit
+}
+
+#=============================================
+function diffnc {
+    stat=100; file1=$1; file2=$2
+
+    cdo diffv $file1 $file2 > out_tmp
+    ( [ $? -ne 0 ] && stat=100 ) || stat=$( grep -m 1 "records differ" out_tmp | awk '-Fof' '{print $1}' )
+    [ -f out_tmp ] && rm out_tmp
+
+    return $stat
+} 
+
+#---------------------------------------------
+function diff_trusting {
+
+    name_first=${JOB_NAME}
+    name_second=EXP00C
+    rep_ref=EXP00C_REFE
+    experiment_name=trusting
+    tagname=TEST
+    #listcomp="ATM SBG SRF CPL ICE MBG OCE"
+    listcomp="ATM SRF CPL ICE MBG OCE"
+    result_final=0
+
+# Output  
+    cd ${DIR_SCRA}/IGCM_OUT/${CONFIG_WORK}/${tagname}/${experiment_name}/${name_first}
+    for comp in ${listcomp}; do
+	echo ${comp}
+	cd ${DIR_SCRA}/IGCM_OUT/${CONFIG_WORK}/${tagname}/${experiment_name}/${name_first}/${comp}/Output
+	listfreq=$(ls -d MO/ DA/)
+	for freq in ${listfreq}; do
+            echo ${freq}
+            cd ${DIR_SCRA}/IGCM_OUT/${CONFIG_WORK}/${tagname}/${experiment_name}/${name_first}/${comp}/Output/${freq}
+            listfile=$( ls *.nc )
+            for file in ${listfile}; do
+		var=$( echo $file | sed -e "s/^${name_first}//" )
+		result=$( diffnc ${name_first}${var} ${DIR_SCRA}/IGCM_OUT/${CONFIG_WORK}/${tagname}/${CONFIG_WORK}/${rep_ref}/${comp}/Output/${freq}${name_second}${var} )
+		result=$?
+		echo 'diffnc '${name_first}${var} ${DIR_SCRA}/IGCM_OUT/${CONFIG_WORK}/TEST/${CONFIG_WORK}/${rep_ref}/${comp}/Output/${freq}${name_second}${var}
+		echo $result
+		(( result_final = result_final + result ))
+            done
+	done
+    done
+    return $result_final
+
+}
Index: /branches/2015/dev_r5092_CNRS_SETTE/NEMOGCM/TRUST/trusting_help.txt
===================================================================
--- /branches/2015/dev_r5092_CNRS_SETTE/NEMOGCM/TRUST/trusting_help.txt	(revision 5292)
+++ /branches/2015/dev_r5092_CNRS_SETTE/NEMOGCM/TRUST/trusting_help.txt	(revision 5292)
@@ -0,0 +1,23 @@
+----------------------------------------------------------------------------
+Usage: trusting [-h] [-d] [-p] configuration
+
+# ($ARCH & ./cfg/$ARCH.cfg file and at least arch-$ARCH.fcm file in NEMO ARCH dir are mandatory)
+
+Options:
+   -h, --help, -help
+       Print this manual
+   -d, --debug
+       set -v
+   -p, --publish
+       Publish on dods server
+
+Examples:"
+   $ trusting -p IPSLCM5A
+
+Notes:
+   - To reset the trusting dashboard, type manually :
+     $ rm -rf $CCCWORKDIR/trusting/configuration
+     $ rm -rf $CCCWORKDIR/../../dods/public/${LOGNAME}/trusting/configuration
+   - Output will be saved at :
+     $ ls $CCCSTOREDIR/IGCM_OUT
+
