Changeset 5672


Ignore:
Timestamp:
2015-08-07T16:35:17+02:00 (5 years ago)
Author:
nicolasmartin
Message:

dev_r5092_CNRS_SETTE Trusting functions: bugfix & rebuild all restart files

Location:
branches/2015/dev_r5092_CNRS_SETTE/NEMOGCM/TRUST
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5092_CNRS_SETTE/NEMOGCM/TRUST/install_dir.sh

    r5644 r5672  
    1111 
    1212for elmt in 'ARCH' 'CONFIG' 'NEMO' 'EXTERNAL/IOIPSL' 'EXTERNAL/fcm' 'TOOLS' 'TRUST'; do 
    13     svn_bran=${NEMO_BRAN} 
    14     [ "$elmt" == 'TRUST' ] && svn_bran='branches/2015/dev_r5092_CNRS_SETTE' 
    15     svn co http://forge.ipsl.jussieu.fr/nemo/svn/${svn_bran}/NEMOGCM/$elmt ${}/NEMOGCM/$elmt 
     13    svn_bran=${NEMO_BRAN}; rev='' 
     14    [ "$elmt" == 'TRUST' ] && svn_bran='branches/2015/dev_r5092_CNRS_SETTE' && rev='-r 5671' 
     15    svn co $rev http://forge.ipsl.jussieu.fr/nemo/svn/${svn_bran}/NEMOGCM/$elmt ${}/NEMOGCM/$elmt 
    1616 
    1717done 
     
    2020 
    2121for elmt in $( ls * ); do 
    22     [ ! $( echo $elmt | grep "COMPILE\|maketools\|REBUILD_NEMO" ) ] && rm -rf $elmt 
     22    if [ ! $( echo $elmt | grep "COMPILE\|maketools\|REBUILD_NEMO" ) ]; then 
     23   echo $elmt && rm -rf $elmt > /dev/null 
     24    fi 
    2325done 
    2426 
  • branches/2015/dev_r5092_CNRS_SETTE/NEMOGCM/TRUST/trusting_func.sh

    r5671 r5672  
    8686 
    8787   [ "$soft" == "$COMPILER" ] && soft_rel=$( $soft --version | grep -m1 -oe '\<[0-9. ]*\>' ) 
    88    soft=$( echo $soft | sed 's#\\##g; s#[/-]$##' ) ## Cleaning characters string to display proper soft name 
     88   ## Cleaning characters string to display proper soft name 
     89   soft=$( echo $soft | sed 's#\\##g; s#[/-]$##' ) 
    8990   echo $soft ${soft_rel} >> model.log 
    9091    done 
    9192 
    92     sed -n 4p model.log >> ${FILE_COMP}; sed -n 5p model.log >> ${FILE_MPIN}; sed -n 6p model.log >> ${FILE_NCDF} 
     93    sed -n 4p model.log >> ${FILE_COMP}; sed -n 5p model.log >> ${FILE_MPIN} 
     94    sed -n 6p model.log >> ${FILE_NCDF} 
    9395} 
    9496 
     
    110112   if [ -n "$dif" ]; then 
    111113       mesg='Different' 
    112        [ "$dif" != '0' ] && echo $dif && files_list+=$file' ' 
     114       (( "$dif" != '0' )) && echo $dif && files_list+=$file' ' 
    113115   fi 
    114116 
     
    118120    echo $mesg >> ${FILE_INPT} 
    119121 
    120     [ -n "${files_list}" ] && echo 'Inputs  : '${files_list}'differ<br>' >> temp_${FILE_COMM} 
     122    [ -n "${files_list}" ] && echo 'Inputs  : '${files_list}'differ<br>' \ 
     123   >> temp_${FILE_COMM} 
    121124} 
    122125 
    123126job_pending() { 
    124     local time_elapsed=0 time_increment=30 
     127    local outline=$( printf "%100s" ) time_elapsed=0 time_increment=30 
    125128 
    126129    sleep ${time_increment} 
    127130 
    128131    while [[ $( ${JOB_LIST} | grep ${JOB_ID} ) && ${time_elapsed} -lt ${TIME_LIMI} ]]; do 
    129    printf "\n####################################################\n" >> computation.log 
    130    ${JOB_INFO} ${JOB_ID}                                             >> computation.log 
     132   printf "\n%s\n" ${outline// /#} >> computation.log 
     133   ${JOB_INFO} ${JOB_ID}           >> computation.log 
    131134   sleep ${time_increment} 
    132135   time_elapsed=$(( ${time_elapsed} + ${time_increment} )) 
     
    135138    sleep ${time_increment} 
    136139 
    137     if [ ${time_elapsed} -eq ${TIME_LIMI} ]; then 
     140    if (( ${time_elapsed} == ${TIME_LIMI} )); then 
    138141   ${JOB_DELE} ${JOB_ID} &> /dev/null 
    139142   let TIME_LIMIT/=3600 
     
    152155    done 
    153156 
    154     [ -n "${files_list}" ] && echo 'Results : '${files_list}'differ<br>' >> temp_${FILE_COMM} 
     157    [ -n "${files_list}" ] && echo 'Results : '${files_list}'differ<br>' \ 
     158   >> temp_${FILE_COMM} 
    155159} 
    156160 
    157161diff_restart() { 
    158     local base_name diff_rcd file nb_dom 
    159     local dif=0 files_list='' list_rst=('restart restart_ice restart_trc restart_oce_out') 
     162    local base_name dif dift file list_comp list_tmsp nb_dom 
     163    local files_list=''  
    160164 
    161165    [ ! -e  ${REFE_DIR}/time.step ] && export ST='FAILED' && get_out 7 
    162  
    163166    export TIME_STEP=$( cat ${REFE_DIR}/time.step | tr -d [:space:] ) 
    164     echo 'Last time step of standard run: '${TIME_STEP} 
    165  
    166     if [ $( find -regex ".*_0+$TIME_STEP_restart.*\.nc" -print -quit ) ]; then 
    167    base_name=$( find -regex ".*_0+$TIME_STEP_restart.*\.nc" -print -quit  \ 
    168                 | cut -d/ -f2 | sed "s/^\(.*$TIME_STEP\)\_restart.*/\1\_/" ) 
    169  
    170    for comp in ${list_rst}; do 
    171        file=${base_name}${comp} 
    172  
    173        nb_dom=$( find -name "${file}_[0-9]*.nc" | wc -l | awk '{ print $1 }' ) 
    174        if   [ ${nb_dom} -gt 1 ]; then 
    175       ${NEMO_TRBD}/rebuild_nemo -t $NPROC $file ${nb_dom} > /dev/null 
    176       [ $? -eq 0 ] && rm -f ${base_name}${comp}_[0-9]*.nc > /dev/null 
    177        elif [ ${nb_dom} -eq 0 ]; then 
    178       export ST='FAILED' && get_out 8 
    179        fi 
    180  
    181        if [ -e ${REFE_DIR}/$file.nc ]; then 
    182        ## UNIX `cmp` not suitable (filename & timestamp in .nc file) 
    183       diff_rcd=$( $CDO diffn $file.nc ${REFE_DIR}/$file.nc 2> /dev/null      \ 
    184                   | awk '/records/ {print $0}' | sed '2 s/^/,/' | tr -d '\n'  ) 
    185  
    186       if [[ ! -z ${diff_rcd} && $( echo ${diff_rcd} | awk '{ print $1 }') -ne 0 ]]; then 
    187           export ST='FAILED' 
    188           files_list+=$file' ' 
    189           let dif+=$( echo ${diff_rcd} | awk '{print $1}' ) 
    190           echo $file.nc': '${diff_rcd} 
     167    echo 'Last time step of benchmark run: '${TIME_STEP} 
     168 
     169    ## Find all restart files to rebuild 
     170    if [ $( find -regex ".*_restart.*[0-9]\.nc" -print -quit ) ]; then 
     171   base_name=$( find -regex ".*_restart.*[0-9]\.nc"                      \ 
     172                | sed "s#^\./\(.*\)_[0-9]*_restart.*#\1#"       | sort -u ) 
     173   list_comp=$( find -regex ".*_restart.*[0-9]\.nc"                      \ 
     174                | sed "s#^.*\(restart[a-z_]*\)_[0-9].*\.nc#\1#" | sort -u ) 
     175   list_tmsp=$( find -regex ".*_restart.*[0-9]\.nc"                      \ 
     176                | sed "s#^.*\([0-9]\{8\}\)_restart.*#\1#"       | sort -u ) 
     177 
     178   for tmsp in ${list_tmsp}; do 
     179       for comp in ${list_comp}; do 
     180      file=${base_name}_${tmsp}_${comp} 
     181      nb_dom=$( find -name "${file}_[0-9]*.nc" | wc -l | awk '{ print $1 }' ) 
     182 
     183      if   (( ${nb_dom} >  1 )); then 
     184          ${NEMO_TRBD}/rebuild_nemo -t $NPROC $file ${nb_dom} > /dev/null 
     185          [ $? -eq 0 ] && rm -f ${file}_[0-9]*.nc             > /dev/null 
     186      elif (( ${nb_dom} == 0 )); then 
     187          export ST='FAILED' && get_out 8 
     188      fi 
     189 
     190      ## Compare restart files at same time step 
     191      if (( $tmsp == ${TIME_STEP} )); then 
     192          if [ -e ${REFE_DIR}/$file.nc ]; then 
     193                   ## UNIX `cmp` not suitable (timestamp in .nc file) 
     194         dif=$( $CDO diffn $file.nc ${REFE_DIR}/$file.nc 2> /dev/null      \ 
     195                | awk '/records/ {print $0}' | sed '2 s/^/,/' | tr -d '\n'  ) 
     196 
     197         if [[ -n "${dif}" && $( echo $dif | awk '{ print $1 }') -ne 0 ]]; then 
     198             export ST='FAILED' && files_list+=$file' ' 
     199             let dift+=$( echo $dif | awk '{print $1}' ) 
     200             echo $file'.nc: '$dif 
     201         else 
     202             echo 'identical' 
     203         fi 
     204 
     205          else 
     206         export ST='FAILED' && get_out 7 
     207          fi 
     208 
    191209      else 
    192           echo 'identical' 
     210          continue 
    193211      fi 
    194212 
    195        else 
    196       export ST='FAILED' && get_out 7 
    197        fi 
    198  
     213       done 
    199214   done 
    200215 
    201    [ -n "${files_list}" ] && echo 'Restarts: '${files_list}$dif' record(s) differ<br>' >> temp_${FILE_COMM} 
     216   [ -n "${files_list}" ] && echo 'Restarts: '${files_list}$dift' record(s) differ<br>' \ 
     217       >> temp_${FILE_COMM} 
    202218    else 
    203219   export ST='FAILED' 
     
    228244mesg_make() { 
    229245    ## Format comments for web 
    230     [ -e temp_${FILE_COMM} ] && cat temp_${FILE_COMM} | tr -d '\n' | sed 's/<br>$//' >> ${FILE_COMM} 
     246    [ -e temp_${FILE_COMM} ] && cat temp_${FILE_COMM} | tr -d '\n' | sed 's/<br>$//' \ 
     247   >> ${FILE_COMM} 
    231248 
    232249    paste -d ';' mesg_*.txt | tee ${FILE_TRUS} 
     
    242259   $cmd ${FILE_TRUS} >> ${REFE_DIR}/trusting_$PATTERNAME.txt 
    243260 
    244   ## Send mail only when FAILED 
    245    if [[ ! -z $EMAIL && "$ST" == 'FAILED' ]]; then 
     261        ## Send mail only when FAILED 
     262   if [[ ! -z "$EMAIL" && "$ST" == 'FAILED' ]]; then 
    246263       cat << END_MAIL > trusting.mail 
    247264XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
     
    256273 
    257274END_MAIL 
    258        [ -e ${TEST_DIR}/${FILE_TRUS} ] && cat ${TEST_DIR}/${FILE_TRUS}                  >> trusting.mail 
    259        mail -s "[NEMO Trusting ${NEMO_HPCC} ${REFE_CONF} ${NEMO_BRAN}] $ST $ERR" $EMAIL <  trusting.mail 
     275       [ -e ${TEST_DIR}/${FILE_TRUS} ] && cat ${TEST_DIR}/${FILE_TRUS}                  \ 
     276      >> trusting.mail 
     277       mail -s "[NEMO Trusting ${NEMO_HPCC} ${REFE_CONF} ${NEMO_BRAN}] $ST $ERR" $EMAIL \ 
     278      <  trusting.mail 
    260279   fi 
    261280 
Note: See TracChangeset for help on using the changeset viewer.