# $Id$ set -xv CONF=ORCA2_LIM # Variables changed by lance_batch.ksh script RUN=xxx NB_PROCS=xxx LAUNCH=xxx LEXE=xxx CPERF=xxx D_INPUT=xxx D_GET=xxx REF_TAG=xxx MYO_EXP=xxx TSYMB=xxx USE_IOMPUT=xxx USE_IOSERVER=xxx NB_PROCS_IOSERVER=xxx # # Variables changed by ins_valid.ksh script MAINDIR=/workdir/rech/eee/reee534/AUTRE WORK=/workdir/rech/eee/reee534/AUTRE/modipsl/config/ REF_OD=/u/rech/eee/reee831/NEMO_VALIDATION # Arguments # type = 'long' or '1_short' or '2_short' type=$1 case ${type} in 'long' ) DIROUT='LONG' ITERATIONS=300 ;; '1_short' ) DIROUT='1_SHORT' ITERATIONS=150 ;; '2_short' ) DIROUT='2_SHORT' ITERATIONS=150 ;; 'gtime' ) DIROUT='GTIME' ITERATIONS=5475 ;; esac # Working directory cd ${TMPDIR} #-T- osxxlf mkdir -p ${WORK}/NEMO_VALID/W${CONF}/${RUN}/${DIROUT}/${MYO_EXP}/RUN #-T- osxxlf cd ${WORK}/NEMO_VALID/W${CONF}/${RUN}/${DIROUT}/${MYO_EXP}/RUN #-T- osxxlf zback=$? #-T- osxxlf if [ ${zback} = 0 ] ; then rm -rf namelist* *.nc memory* solver.stat ocean.output* mpp.output* mono.output* ; fi ############################################################## ############################################################## ############################################################## ### Input files ############################################################## ############################################################## ############################################################## # Local function to copy namelists files get_namelist () { if [ -a $1/$2_$3 ] ; then cp $1/$2_$3 $4 else echo ' ###############################################################' echo ' ######################## W A R N I N G ########################' echo ' ######################## W A R N I N G ########################' echo ' ######################## W A R N I N G ########################' echo ' ###############################################################' echo " $2_$3 file doesn't exist, we use the standard $2" echo ' ###############################################################' echo ' ######################## W A R N I N G ########################' echo ' ######################## W A R N I N G ########################' echo ' ######################## W A R N I N G ########################' echo ' ###############################################################' cp $1/$2 $4 fi } # Local function to find namelists parameters supergrep () { grep "^ *$1 *=" $2 | sed -e "s% *\!.*%%" } # Ocean namelist LOC_NAM=${MAINDIR}/modipsl/config/${CONF}/EXP00 get_namelist ${LOC_NAM} namelist ${MYO_EXP} namelist # Sea-Ice namelist get_namelist ${LOC_NAM} namelist_ice_lim2 ${MYO_EXP} namelist_ice # iom_put xml file if [ "${USE_IOMPUT}" = "true" ] then get_namelist ${LOC_NAM} xmlio_server.def ${MYO_EXP} xmlio_server.def get_namelist ${LOC_NAM} iodef.xml ${MYO_EXP} iodef.xml sed -e "s/^ *using_server *=.*$/ using_server = .${USE_IOSERVER}./" xmlio_server.def > tmp$$ mv tmp$$ xmlio_server.def fi # Local function to find namelists parameters supergrep () { grep "^ *$1 *=" $2 | sed -e "s% *\!.*%%" } # namelist modifications PAT_NIT000=$( supergrep nn_it000 namelist ) PAT_NITEND=$( supergrep nn_itend namelist ) PAT_NSTOCK=$( supergrep nn_stock namelist ) PAT_NWRITE=$( supergrep nn_write namelist ) PAT_NRSTDT=$( supergrep nn_rstctl namelist ) PAT_NBITCM=$( supergrep nn_bit_cmp namelist ) PAT_TRACEN=$( supergrep ln_traadv_cen2 namelist ) PAT_TRATVD=$( supergrep ln_traadv_tvd namelist ) PAT_N_CLAA=$( supergrep nn_cla namelist ) PAT_NSOLVV=$( supergrep nn_solv namelist ) PAT_RESTAR=$( supergrep ln_rstart namelist ) PAT_RESMLD=$( supergrep ln_trdmld_restart namelist ) PAT_NN_FWB=$( supergrep nn_fwb namelist ) PAT_NNSSSR=$( supergrep nn_sssr namelist ) sed -e "s%$PAT_RESTAR% ln_rstart = .false.%" \ -e "s%$PAT_NIT000% nn_it000 = 1 %" \ -e "s%$PAT_NITEND% nn_itend = ${ITERATIONS} %" \ -e "s%$PAT_NSTOCK% nn_stock = ${ITERATIONS} %" \ -e "s%$PAT_NWRITE% nn_write = 75 %" \ -e "s%$PAT_NRSTDT% nn_rstctl = 0 %" \ -e "s%$PAT_NBITCM% nn_bit_cmp = 1%" \ -e "s%$PAT_TRACEN% ln_traadv_cen2 = .false.%" \ -e "s%$PAT_TRATVD% ln_traadv_tvd = .true.%" \ -e "s%$PAT_N_CLAA% nn_cla = 0%" \ -e "s%$PAT_NSOLVV% nn_solv = 2%" \ -e "s%$PAT_RESMLD% ln_trdmld_restart = .false.%" \ -e "s%$PAT_NN_FWB% nn_fwb = 0%" \ -e "s%$PAT_NNSSSR% nn_sssr = 1%" namelist > nam.tmp mv nam.tmp namelist # Get forcing files ${D_GET} ${D_INPUT}/ORCA2_LIM_nemo_v3.2.tar ORCA2_LIM_nemo_v3.2.tar tar xvf ORCA2_LIM_nemo_v3.2.tar rm -f ORCA2_LIM_nemo_v3.2.tar # Get restarts files if needed if [ $type = '2_short' ] then if [ ${RUN} = 'mon' -o ${RUN} = 'omp' ] ; then cp ${WORK}/NEMO_VALID/W${CONF}/${RUN}/1_SHORT/${MYO_EXP}/*_restart.nc restart.nc cp ${WORK}/NEMO_VALID/W${CONF}/${RUN}/1_SHORT/${MYO_EXP}/*restart_ice.nc restart_ice_in.nc cp ${WORK}/NEMO_VALID/W${CONF}/${RUN}/1_SHORT/${MYO_EXP}/*_restart_mld.nc restart_mld.nc fi if [ ${RUN} = 'mpi' ] ; then typeset -Z4 i=0 while [ $i -lt $NB_PROCS ] do cp ${WORK}/NEMO_VALID/W${CONF}/${RUN}/1_SHORT/${MYO_EXP}/*_restart_${i}.nc restart_${i}.nc cp ${WORK}/NEMO_VALID/W${CONF}/${RUN}/1_SHORT/${MYO_EXP}/*restart_ice_${i}.nc restart_ice_in_${i}.nc cp ${WORK}/NEMO_VALID/W${CONF}/${RUN}/1_SHORT/${MYO_EXP}/*_restart_mld_${i}.nc restart_mld_${i}.nc let i=$i+1 done fi # Ocean namelist modifications PAT_NIT000=$( supergrep nn_it000 namelist ) PAT_NITEND=$( supergrep nn_itend namelist ) PAT_NRSTDT=$( supergrep nn_rstctl namelist ) PAT_RESTAR=$( supergrep ln_rstart namelist ) PAT_RESMLD=$( supergrep ln_trdmld_restart namelist ) ORCA_NIT000=$(( $ITERATIONS + 1 )) ORCA_NITEND=$(( $ITERATIONS*2 )) sed -e "s%$PAT_RESTAR% ln_rstart = .true.%" \ -e "s%$PAT_NIT000% nn_it000 = $ORCA_NIT000 %" \ -e "s%$PAT_NITEND% nn_itend = $ORCA_NITEND %" \ -e "s%$PAT_NRSTDT% nn_rstctl = 2%" \ -e "s%$PAT_RESMLD% ln_trdmld_restart = .true.%" namelist > nam.tmp mv nam.tmp namelist fi ############################################################## ############################################################## ############################################################## ### Launch run ############################################################## ############################################################## ############################################################## cp ${MAINDIR}/modipsl/bin/opa_${CONF}_${RUN}_${MYO_EXP} opa_${CONF}_${RUN}_${MYO_EXP} cp ${MAINDIR}/modipsl/bin/opa_${CONF}_memo_${MYO_EXP} opa_${CONF}_memo_${MYO_EXP} chmod 777 opa_${CONF}_${RUN}_${MYO_EXP} chmod 777 opa_${CONF}_memo_${MYO_EXP} if [ "${USE_IOSERVER}" = "true" ] then cp ${MAINDIR}/modipsl/bin/ioserver ioserver chmod 777 ioserver fi # # Profiling & Executable memory size #################################### touch memory_size.txt case ${RUN} in 'mon' ) #-T- sx8brodie export F_PROGINF=detail #-T- sx8brodie echo "Stack memory: $( (size opa_${CONF}_${RUN}_${MYO_EXP}) )" >> memory_size.txt #-T- sx8brodie echo "Static memory: $( (size opa_${CONF}_memo_${MYO_EXP}) )" >> memory_size.txt ;; #-T- sx8mercure export F_PROGINF=detail #-T- sx8mercure echo "Stack memory: $( (size opa_${CONF}_${RUN}_${MYO_EXP}) )" >> memory_size.txt #-T- sx8mercure echo "Static memory: $( (size opa_${CONF}_memo_${MYO_EXP}) )" >> memory_size.txt ;; #-T- aix6 echo "Stack memory: $( (size opa_${CONF}_memo_${MYO_EXP}) )" >> memory_size.txt #-T- aix6 echo "Static memory: $( (size opa_${CONF}_${RUN}_${MYO_EXP}) )" >> memory_size.txt ;; #-T- osxxlf echo "Stack memory: $( (size opa_${CONF}_memo_${MYO_EXP}) )" >> memory_size.txt #-T- osxxlf echo "Static memory: $( (size opa_${CONF}_${RUN}_${MYO_EXP}) )" >> memory_size.txt ;; 'mpi' ) #-T- sx8brodie export MPIPROGINF=detail ;; #-T- sx8mercure export MPIPROGINF=detail ;; #-T- aix6 ;; #-T- osxxlf ;; 'omp' ) #-T- sx8brodie export F_PROGINF=detail #-T- sx8brodie export OMP_NUM_THREADS=${NB_PROCS} ;; #-T- sx8mercure export F_PROGINF=detail #-T- sx8mercure export OMP_NUM_THREADS=${NB_PROCS} ;; #-T- aix6 ;; #-T- osxxlf ;; esac # # >>>>>> EXECUTION < < < < ########################## if [ "${USE_IOSERVER}" = "true" ] then #-T- aix6 rm -f cmdfile #-T- aix6 cnt=1 #-T- aix6 while [ $cnt -le ${NB_PROCS_IOSERVER} ] #-T- aix6 do #-T- aix6 echo "${CPERF#poe} ./ioserver" >> cmdfile #-T- aix6 cnt=$(( $cnt + 1 )) #-T- aix6 done #-T- aix6 cnt=1 #-T- aix6 while [ $cnt -le ${NB_PROCS} ] #-T- aix6 do #-T- aix6 echo "${CPERF#poe} ./opa_${CONF}_${RUN}_${MYO_EXP}" >> cmdfile #-T- aix6 cnt=$(( $cnt + 1 )) #-T- aix6 done #-T- aix6 poe -pgmmodel MPMD -cmdfile ./cmdfile #-T- sx8brodie echo "-p ${NB_PROCS_IOSERVER} -e ./ioserver" > cmdfile #-T- sx8brodie echo "-p ${NB_PROCS} -e ./opa_${CONF}_${RUN}_${MYO_EXP}" >> cmdfile #-T- sx8brodie ${CPERF} ${LEXE%% *} -f cmdfile #-T- sx8mercure echo "-p ${NB_PROCS_IOSERVER} -e ./ioserver" > cmdfile #-T- sx8mercure echo "-p ${NB_PROCS} -e ./opa_${CONF}_${RUN}_${MYO_EXP}" >> cmdfile #-T- sx8mercure ${CPERF} ${LEXE%% *} -f cmdfile else case ${RUN} in 'mon' | 'omp' ) ${CPERF} ./opa_${CONF}_${RUN}_${MYO_EXP} ;; 'mpi' ) #-T- sx8brodie ${CPERF} ${LEXE} ./opa_${CONF}_${RUN}_${MYO_EXP} ;; #-T- sx8mercure ${CPERF} ${LEXE} ./opa_${CONF}_${RUN}_${MYO_EXP} ;; #-T- aix6 ${CPERF} ${LEXE} ./opa_${CONF}_${RUN}_${MYO_EXP} ;; #-T- osxxlf mpd& #-T- osxxlf sleep 5 #-T- osxxlf ${CPERF} ${LEXE} ./opa_${CONF}_${RUN}_${MYO_EXP} #-T- osxxlf mpdallexit ;; esac fi ls -l # ############################################################## ############################################################## ############################################################## ### Save output files ############################################################## ############################################################## ############################################################## case ${RUN} in 'mon' | 'omp' ) liste_files='*abort* memory* namelist* *xml* perfs* cmdfile solver.stat ocean.output layout* ORCA2* restart* mono*' ;; 'mpi' ) liste_files='*abort* namelist* *xml* solver.stat perfs* cmdfile ocean.output* layout* ORCA2* restart* mpp*' ;; esac # Ensure that all files saved are coming from the current run ind=1 for k in $liste_files do echo $k > temp var=$( ( awk '{printf("%-.4s", varin ) } ' varin=$k temp ) ) if [ ${ind} = 1 -a ${var} = 'perf' ] ; then kc='perf*' rm -f ${WORK}/NEMO_VALID/W${CONF}/${RUN}/${DIROUT}/${MYO_EXP}/${kc} ind=0 fi cp $k ${WORK}/NEMO_VALID/W${CONF}/${RUN}/${DIROUT}/${MYO_EXP}/$k done ############################################################## ############################################################## ############################################################## ### Retrieve some reference run files ############################################################## ############################################################## ############################################################## if [ ${REF_TAG} = 'nemo_v2' -o ${REF_TAG} = 'nemo_v2_3' -o ${REF_TAG} = 'nemo_v3' -o ${REF_TAG} = 'nemo_v3_2' ] then STORE_DATA=${REF_OD}/${CONF}/${REF_TAG}/${RUN}/${DIROUT} LFILES="solver.stat memory_size.txt ocean.output ${RUN}${CONF}_err" SAV_DIR=${WORK}/NEMO_VALID/W${CONF}/${RUN}/${DIROUT}/${REF_TAG} if [ ! -d ${SAV_DIR} ] ; then mkdir ${SAV_DIR} fi for ref_file in ${LFILES} do ${D_GET} ${STORE_DATA}/${TSYMB}${ref_file} ${SAV_DIR}/${ref_file} done fi ############################################################## ############################################################## ############################################################## ### Launch restart job ############################################################## ############################################################## ############################################################## if [ $type = '1_short' ] ; then cd ${WORK}/NEMO_VALID/W${CONF}/${RUN}/2_SHORT/${MYO_EXP} ${LAUNCH}job_${RUN}_2_short_${MYO_EXP}.ksh fi