Changeset 8797
- Timestamp:
- 2017-11-23T16:36:09+01:00 (5 years ago)
- Location:
- branches/2015/dev_r5092_CNRS18_TRUST/NEMOGCM/TRUST
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_r5092_CNRS18_TRUST/NEMOGCM/TRUST/cfg/martin.cfg
r8783 r8797 5 5 ## Default settings 6 6 ##--------------------------------------------------- 7 [ -z "${TRUS_BRAN}" ] && TRUS_BRAN='trunk' 8 TRUS_CKOT=( 'ARCH CONFIG NEMO \ 9 EXTERNAL/AGRIF EXTERNAL/fcm EXTERNAL/IOIPSL \ 10 TOOLS/COMPILE TOOLS/maketools TOOLS/REBUILD_NEMO ' ) 7 TRUS_CKOT=( 'ARCH CONFIG NEMO 8 EXTERNAL/AGRIF EXTERNAL/fcm EXTERNAL/IOIPSL 9 TOOLS/COMPILE TOOLS/maketools TOOLS/REBUILD_NEMO' ) 11 10 12 [ -z "${TRUS_REFE}" ] && TRUS_REFE='ORCA2_LIM_PISCES'13 11 TRUS_CONF=${TRUS_REFE}'_trust' 14 12 15 [ -z "${TRUS_TARF}" ] && TRUS_TARF='ORCA2_LIM_nemo_v3.6.tar' 16 [ ${TRUS_REFE} == 'ORCA1_LIM3_PISCES' ] && TRUS_TARF='INPUTS_ORCA1_LIM3_PISCES_V10.tar' 17 [ ${TRUS_REFE} == 'AMM12' ] && TRUS_TARF='AMM12_v3.6.tar' 13 if [ -z "${TRUS_BRAN}" ]; then 14 TRUS_BRAN='trunk' 15 16 if [ -z ${TRUS_REFE} ]; then 17 TRUS_REFE='ORCA2_LIM3_PISCES' 18 elif [ ${TRUS_REFE} == 'AMM12' ]; then 19 TRUS_TARF='AMM12_v3.7.tar' 20 fi 21 22 [ -z ${TRUS_TARF} ] && TRUS_TARF='ORCA2_LIM_nemo_v3.7.tar 23 INPUTS_PISCES_v3.6st.tar' 24 elif [ ${TRUS_BRAN} == 'nemo_v3_6_STABLE' ]; then 25 26 if [ -z "${TRUS_REFE}" ]; then 27 TRUS_REFE='ORCA2_LIM_PISCES' 28 elif [ ${TRUS_REFE} == 'ORCA1_LIM3_PISCES' ]; then 29 TRUS_TARF='INPUTS_ORCA1_LIM3_PISCES_V10.tar' 30 elif [ ${TRUS_REFE} == 'AMM12' ]; then 31 TRUS_TARF='AMM12_v3.6.tar' 32 fi 33 34 fi 18 35 19 36 TRUS_KEYA=''; TRUS_KEYD='' 20 [ ${TRUS_REFE} == 'ORCA2_LIM' ] && TRUS_KEYA='key_add key_agrif' && TRUS_KEYD='key_del key_zdftmx'21 37 38 [ -z "${TRUS_TARF}" ] && TRUS_TARF='ORCA2_LIM_nemo_v3.6.tar' 22 39 23 40 ## User environment … … 29 46 TRUS_XIOS=$CCCWORKDIR/XIOS/xios-1.0 30 47 31 [ ${TRUS_REFE} == 'ORCA2_LIM_PISCES' ] && TRUS_CONF='O2LP_trust' 32 [ ${TRUS_REFE} == 'ORCA1_LIM3_PISCES' ] && TRUS_CONF='O1L3P_trust' && TRUS_XIOS=${TRUS_WORK}/XIOS/XIOS_DEV_CMIP6 33 [ ${TRUS_REFE} == 'ORCA2_LIM' ] && TRUS_CONF='O2LA_trust' 34 35 if [ ${TRUS_BRAN} == 'trunk' ]; then 36 TRUS_XIOS=$CCCWORKDIR/XIOS/trunk 37 TRUS_TARF='ORCA2_LIM_nemo_v3.7.tar INPUTS_PISCES_v3.6st.tar' 38 [ ${TRUS_REFE} == 'AMM12' ] && TRUS_TARF='AMM12_v3.7.tar' 48 if [ ${TRUS_REFE} == 'ORCA2_LIM_PISCES' ]; then 49 TRUS_CONF='O2LP_trust' 50 elif [ ${TRUS_REFE} == 'ORCA2_LIM3_PISCES' ]; then 51 TRUS_CONF='O2L3P_trust' 52 elif [ ${TRUS_REFE} == 'ORCA1_LIM3_PISCES' ]; then 53 TRUS_CONF='O1L3P_trust' 54 TRUS_XIOS=$CCCWORKDIR/XIOS/XIOS_DEV_CMIP6 39 55 fi 40 56 41 [ -z "${TRUS_MAIL}" ] && TRUS_MAIL='nicolas.martin@upmc.fr claire.levy@locean-ipsl.upmc.fr officers@nemo-ocean.eu' 57 [ ${TRUS_BRAN} == 'trunk' ] && TRUS_XIOS=$CCCWORKDIR/XIOS/trunk 58 59 [ -z "${TRUS_MAIL}" ] && TRUS_MAIL='nicolas.martin@upmc.fr 60 claire.levy@locean-ipsl.upmc.fr 61 officers@nemo-ocean.eu' -
branches/2015/dev_r5092_CNRS18_TRUST/NEMOGCM/TRUST/cfg/user_template.cfg
r8780 r8797 16 16 17 17 ## Minimal content for code checkout/update 18 TRUS_CKOT=( 'ARCH CONFIG NEMO \19 EXTERNAL/AGRIF EXTERNAL/fcm EXTERNAL/IOIPSL \18 TRUS_CKOT=( 'ARCH CONFIG NEMO 19 EXTERNAL/AGRIF EXTERNAL/fcm EXTERNAL/IOIPSL 20 20 TOOLS/COMPILE TOOLS/maketools TOOLS/REBUILD_NEMO ' ) 21 21 … … 39 39 ## ...../${TRUS_REFE}/${TRUS_BRAN}/${TRUS_DATE} recommended 40 40 TRUS_STOR= ## Benchmark folder where target files for comparison have been stored, ie: 41 ## Inputs (all) : CPP_*, namelist_*, *.xml et inputs_list.txt (created by initial test)41 ## Inputs (all) : cpp_*, namelist_*, *.xml et inputs_list.txt (created by initial test) 42 42 ## Outputs (any) : *.stat, ocean.output, restarts 43 43 ## ...../${TRUS_REFE}/${TRUS_BRAN} recommended (same layout as ${TRUS_SCRA}) -
branches/2015/dev_r5092_CNRS18_TRUST/NEMOGCM/TRUST/inc/trusting.env
r8780 r8797 7 7 export TRUS_DATE=$( date -ud "$dat" +"%Y%m%d%Z%H%M" ) 8 8 export TRUS_NAME=${TRUS_USER}'_'${TRUS_HPCC} 9 export TRUS_SVN H='https://forge.ipsl.jussieu.fr/nemo/svn'9 export TRUS_SVNR='https://forge.ipsl.jussieu.fr/nemo/svn' 10 10 11 11 … … 28 28 29 29 30 ## 31 ##--------------------------------------------------- 30 32 export TRUS_NGCM=${TRUS_WORK}/${TRUS_BRAN}/NEMOGCM 33 export TRUS_HIST=${TRUS_STOR}/trusting_${TRUS_NAME}.txt 34 export TRUS_ARCH=trusting_${TRUS_DATE}_${TRUS_NAME}.tgz -
branches/2015/dev_r5092_CNRS18_TRUST/NEMOGCM/TRUST/inc/trusting_func.sh
r8780 r8797 4 4 ## Messenger filenames 5 5 file_date=mesg_01_date.txt ; file_rslt=mesg_02_result.txt 6 file_stat=mesg_03_stat e.txt; file_nemo=mesg_04_nemo.txt6 file_stat=mesg_03_status.txt; file_nemo=mesg_04_nemo.txt 7 7 file_xios=mesg_05_xios.txt ; file_cmpf=mesg_06_compiler.txt 8 8 file_lmpi=mesg_07_mpi.txt ; file_ncdf=mesg_08_netcdf.txt … … 10 10 file_memy=mesg_11_memory.txt; file_note=mesg_12_comments.txt 11 11 12 ## Trusting timestamped logfile & archive13 TRUS_FILE=trusting_${TRUS_DATE}_$TRUS_NAME.txt; TRUS_ARCH=trusting_${TRUS_DATE}_$TRUS_NAME.tgz14 15 12 16 13 ## Functions in order of use … … 24 21 init_files() { 25 22 echo 'Date' > ${file_date}; echo 'Result' > ${file_rslt} 26 echo 'Stat e' > ${file_stat}; echo 'NEMOGCM rev.' > ${file_nemo}23 echo 'Status' > ${file_stat}; echo 'NEMOGCM rev.' > ${file_nemo} 27 24 echo 'XIOS rev.' > ${file_xios}; echo 'Fortran compiler' > ${file_cmpf} 28 25 echo 'MPI libs' > ${file_lmpi}; echo 'NetCDF libs' > ${file_ncdf} … … 118 115 119 116 get_inputs() { 120 ## Extract archive or copy files in case of personal inputs 121 [ -z "${TRUS_TARF}" ] && get_io="cp ${TRUS_FORC}/* ." || get_io="tar -vxf ${TRUS_FORC}/${TRUS_TARF}" 122 123 ${get_io} > /dev/null 124 [ $? -ne 0 ] && get_out 3 || echo 'Success' 125 [ $( find -name '*.gz' -print -quit ) ] && find . -name '*.gz' -exec gzip -d {} \; 126 127 ls -lh > inputs_list.txt 117 # List archive content & extract it by default 118 local get_iol=$( eval " 119 for archive in ${TRUS_TARF}; do 120 tar -tvf ${TRUS_FORC}/\$archive >> inputs_list.txt; 121 done 122 " ) 123 local get_iof=$( eval " 124 for archive in ${TRUS_TARF}; do 125 tar -vxf ${TRUS_FORC}/\$archive > /dev/null; 126 done 127 " ) 128 129 ## List & copy files in case of personal inputs 130 if [ -z "${TRUS_TARF}" ]; then 131 get_iol="ls ${TRUS_FORC}/*" 132 get_iof="\cp ${TRUS_FORC}/* ." 133 fi 134 135 ${get_iol}; ${get_iof} 136 137 if [ `find -name '*.gz' -print -quit` ]; then 138 find . -name '*.gz' -exec gzip -d {} \; 139 fi 128 140 } 129 141 … … 196 208 197 209 diff_restart() { 198 local base_name comp dif file list_comp list_tmsp nb_dom time_step tmsp 199 local files_list='' dif_sum=0 200 201 ## Stop if no benchmark files (ie time.step) 202 [ ! -e ${TRUS_STOR}/time.step ] && { TRUS_RSLT='FAILED'; get_out 7; } 203 time_step=$( cat ${TRUS_STOR}/time.step | tr -d [:space:] ) 210 local dif filebase filebases ndomain out 211 local files_list='' dif_sum='undef' 204 212 205 213 ## Find all restart files to rebuild 206 214 if [ $( find -regex ".*_restart.*[0-9]\.nc" -print -quit ) ]; then 207 base_name=$( find -regex ".*_restart.*[0-9]\.nc" \ 208 | sed "s#^\./\(.*\)_[0-9]*_restart.*#\1#" | sort -u ) 209 list_comp=$( find -regex ".*_restart.*[0-9]\.nc" \ 210 | sed "s#^.*\(restart[a-z_]*\)_[0-9].*\.nc#\1#" | sort -u ) 211 list_tmsp=$( find -regex ".*_restart.*[0-9]\.nc" \ 212 | sed "s#^.*\([0-9]\{8\}\)_restart.*#\1#" | sort -u ) 213 214 ## Loop on each time step 215 for tmsp in ${list_tmsp}; do 216 217 for comp in ${list_comp}; do 218 file=${base_name}_${tmsp}_${comp} 219 nb_dom=$( find -name "${file}_[0-9]*.nc" | wc -l | awk '{ print $1 }' ) 220 221 if [ ${nb_dom} -gt 1 ]; then 222 ${TRUS_NGCM}/TOOLS/REBUILD_NEMO/rebuild_nemo -t ${TRUS_NPRO} $file ${nb_dom} \ 223 > /dev/null 224 225 ## Possibility of remaining decomposed restarts (even after rebuild) 226 [ $? -eq 0 ] && rm -f ${file}_[0-9]*.nc \ 227 > /dev/null 228 229 elif [ ${nb_dom} -eq 0 ]; then 230 TRUS_RSLT='FAILED' && get_out 8 215 filebases=$( find -regextype sed -regex ".*_[0-9]\{4\}\.nc" \ 216 | sed 's/\(.*\)_.*/\1/' | sort -u ) 217 218 for filebase in ${filebases}; do 219 220 ndomain=$( find -regex ".*${name}_[0-9]*.nc" | wc -l | awk '{print $1}' ) 221 222 [ ${ndomain} -eq 0 ] && TRUS_RSLT='FAILED' && get_out 8 223 224 ${TRUS_NGCM}/TOOLS/REBUILD_NEMO/rebuild_nemo \ 225 -t ${TRUS_NPRO} $filebase ${ndomain} \ 226 > /dev/null 227 228 ## Possibility of remaining decomposed restarts (even after rebuild) 229 [ $? -eq 0 ] && rm -f ${file}_[0-9]*.nc \ 230 > /dev/null 231 232 dif='' 233 234 ## Stop if no benchmark files (restart file) 235 if [ -e ${TRUS_STOR}/$file.nc ]; then 236 237 out=$( $TRUS_CDOD $name.nc ${TRUS_STOR}/$name.nc 2>&1 ) 238 dif=$( echo $out | grep -o "[0-9]* of [0-9]* records" ) 239 240 ## Fix for cdo aborting on restarts with different inputs 241 if [[ $out =~ 'Abort' ]]; then 242 dif=$( echo $out | awk -F: '{print $NF}' ) 231 243 fi 232 244 233 ## Compare restart files at same time step 234 if [ $tmsp -eq ${time_step} ]; then 235 236 ## Stop if no benchmark files (restart file) 237 if [ -e ${TRUS_STOR}/$file.nc ]; then 238 239 ## UNIX `cmp` not suitable (timestamp in .nc file) 240 dif=$( $TRUS_CDOD $file.nc ${TRUS_STOR}/$file.nc 2> /dev/null \ 241 | awk '/records/ {print $0}' | sed '2 s/^/,/' | tr -d '\n' ) 242 243 ## CDO can return void stdout with no difference 244 if [[ -n "$dif" && $( echo $dif | awk '{print $1}' ) -ne 0 ]]; then 245 TRUS_RSLT='FAILED' 246 files_list+=$comp' ' && let dif_sum+=$( echo $dif | awk '{print $1}' ) 247 echo $file.nc': '$dif 248 fi 249 250 else 251 TRUS_RSLT='FAILED' && get_out 7 252 fi 253 254 else 255 continue 245 if [ -n "$dif" ]; then 246 export TRUS_RSLT='FAILED' 247 files_list+=$name' ' && echo $name'.nc: '$dif 248 let dif_sum+=$( echo $dif | awk '{print $1}' ) 256 249 fi 257 250 258 done259 260 251 done 261 252 253 ## Stop if no benchmark files (ie time.step) 254 if [ ${dif_sum} == 'undef' ]; then 255 TRUS_RSLT='FAILED' 256 get_out 7 262 257 ## List different files for web comment with sum of different records 263 if [ ${dif_sum} -ne 0]; then258 elif [ ${dif_sum} -ne 0 ]; then 264 259 echo 'Restarts: '${files_list}${dif_sum}' record(s) differ<br>' \ 265 260 >> temp_${file_note} … … 328 323 329 324 ## Create or append trusting logfile 330 if [ -f ${TRUS_ STOR}/trusting_$TRUS_NAME.txt]; then cmd='tail -1'; else cmd='cat'; fi331 332 $cmd ${TRUS_FILE} 333 >> ${TRUS_ STOR}/trusting_$TRUS_NAME.txt325 if [ -f ${TRUS_HIST} ]; then cmd='tail -1'; else cmd='cat'; fi 326 327 $cmd ${TRUS_FILE} \ 328 >> ${TRUS_HIST} 334 329 335 330 ## Send mail only when FAILED -
branches/2015/dev_r5092_CNRS18_TRUST/NEMOGCM/TRUST/install_new_branch.sh
r8780 r8797 46 46 printf "\nWhat branch do you want to install in "${TRUS_WORK}" for trusting test ? " 47 47 echo 'Enter 0 to abort' 48 select branch in 'trunk' $( svn ls ${TRUS_SVN H}/branches/2015 | tr -d / | sort -r ); do48 select branch in 'trunk' $( svn ls ${TRUS_SVNR}/branches/2015 | tr -d / | sort -r ); do 49 49 50 50 if [ $REPLY -eq 0 ]; then exit 1; else export TRUS_BRAN=$branch; fi … … 74 74 75 75 if [ $elmt == 'TOOLS/maketools' ]; then 76 svn co -q ${TRUS_SVN H}/${svn_bran}/NEMOGCM/TOOLS --depth empty76 svn co -q ${TRUS_SVNR}/${svn_bran}/NEMOGCM/TOOLS --depth empty 77 77 svn up -q $elmt 78 78 else 79 svn co -q ${TRUS_SVN H}/${svn_bran}/NEMOGCM/$elmt $elmt79 svn co -q ${TRUS_SVNR}/${svn_bran}/NEMOGCM/$elmt $elmt 80 80 fi 81 81 -
branches/2015/dev_r5092_CNRS18_TRUST/NEMOGCM/TRUST/trusting.sh
r8780 r8797 54 54 ## If -v|--version option has been set, modify default SVN action on directories 55 55 if [ $( echo ${TRUS_SVNV} | grep "HEAD\|up\|update" ) ]; then 56 TRUS_SVNA='svn update -r HEAD --accept=theirs-conflict'56 TRUS_SVNA='svn update -r HEAD' 57 57 elif [ $( echo ${TRUS_SVNV} | grep -o '{[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}}' ) ]; then 58 58 TRUS_SVNA='svn update -r '$( echo ${TRUS_SVNV} | grep -o '{[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}}' )
Note: See TracChangeset
for help on using the changeset viewer.