New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
job_ZAGRIF.ksh in trunk/NVTK/INSTALL/JOBS – NEMO

source: trunk/NVTK/INSTALL/JOBS/job_ZAGRIF.ksh @ 1639

Last change on this file since 1639 was 1620, checked in by ctlod, 15 years ago

NVTK: change nn_fwb and nn_sssr parameters value to ensure reproductibility, see ticket: #533

  • Property svn:keywords set to Id
File size: 12.6 KB
RevLine 
[1154]1# $Id$
[695]2set -xv
3
4CONF=ZAGRIF
5# Variables changed by lance_batch.ksh script
6RUN=xxx
7NB_PROCS=xxx
8LAUNCH=xxx
9LEXE=xxx
10CPERF=xxx
11D_INPUT=xxx
12D_GET=xxx
13REF_TAG=xxx
[1305]14MYO_EXP=xxx
[695]15TSYMB=xxx
16
17# Variables changed by ins_valid.ksh script
[1301]18MAINDIR=/workdir/rech/eee/reee534/AUTRE
19WORK=/workdir/rech/eee/reee534/AUTRE/modipsl/config/
20REF_OD=/u/rech/eee/reee831/NEMO_VALIDATION
[695]21
22# Arguments
23# type = 'long' or '1_short' or '2_short'
24type=$1
25
26case ${type} in
27        'long' ) 
28             DIROUT='LONG'
[1403]29             ITERATIONS=300
[695]30             NOUTPUT=75 ;;
31             
32        '1_short' ) 
33             DIROUT='1_SHORT'
[1403]34             ITERATIONS=150
[695]35             NOUTPUT=75 ;;
36             
37        '2_short' ) 
38             DIROUT='2_SHORT'
[1403]39             ITERATIONS=150
[695]40             NOUTPUT=75 ;;
41
42        'gtime' ) 
43             DIROUT='GTIME'
44             ITERATIONS=5475
45             NOUTPUT=75 ;;
46esac
47
48# Working directory
49cd ${TMPDIR}
50
51##############################################################
52##############################################################
53##############################################################
54###             Input files
55##############################################################
56##############################################################
57##############################################################
[1301]58# Local function to copy namelists files
59get_namelist () {
60    if [ -a $1/$2_$3 ] ; then
61        cp $1/$2_$3 $4
62    else
63        echo '                ###############################################################'
64        echo '                ######################## W A R N I N G ########################'
65        echo '                ######################## W A R N I N G ########################'
66        echo '                ######################## W A R N I N G ########################'
67        echo '                ###############################################################'
68        echo "              $2_$3 file doesn't exist, we use the standard $2"
69        echo '                ###############################################################'
70        echo '                ######################## W A R N I N G ########################'
71        echo '                ######################## W A R N I N G ########################'
72        echo '                ######################## W A R N I N G ########################'
73        echo '                ###############################################################'
74        cp $1/$2 $4
75    fi
76}
77
78# Local function to find namelists parameters
79supergrep () {
80    grep "^ *$1 *=" $2 | sed -e "s% *\!.*%%"
81}
82
[695]83# Ocean namelist
[1301]84LOC_NAM=${MAINDIR}/modipsl/config/${CONF}/EXP00
85get_namelist ${LOC_NAM} namelist ${MYO_EXP} namelist
86get_namelist ${LOC_NAM} 1_namelist ${MYO_EXP} 1_namelist
[695]87
88# Sea-Ice namelist
[1301]89get_namelist ${LOC_NAM} namelist_ice_lim2 ${MYO_EXP} namelist_ice
90get_namelist ${LOC_NAM} 1_namelist_ice_lim2 ${MYO_EXP} 1_namelist_ice
[695]91
92# AGRIF file
[1301]93cp ${LOC_NAM}/AGRIF_FixedGrids.in AGRIF_FixedGrids.in
[695]94
[1144]95# Local function to find namelists parameters
96supergrep () {
97    grep "^ *$1 *=" $2 | sed -e "s% *\!.*%%"
98}
99
[695]100for CHGFILE in `ls *namelist`
101do
102     # namelist modifications
[1603]103     PAT_NIT000=$( supergrep nn_it000             ${CHGFILE} )
104     PAT_NITEND=$( supergrep nn_itend             ${CHGFILE} )
105     PAT_NSTOCK=$( supergrep nn_stock             ${CHGFILE} )
106     PAT_NWRITE=$( supergrep nn_write             ${CHGFILE} )
107     PAT_NRSTDT=$( supergrep nn_rstctl            ${CHGFILE} )
108     PAT_NBITCM=$( supergrep nn_bit_cmp           ${CHGFILE} )
109     PAT_TRACEN=$( supergrep ln_traadv_cen2       ${CHGFILE} )
110     PAT_TRATVD=$( supergrep ln_traadv_tvd        ${CHGFILE} )
111     PAT_N_CLAA=$( supergrep nn_cla               ${CHGFILE} )
112     PAT_NSOLVV=$( supergrep nn_solv              ${CHGFILE} )
[1144]113     PAT_RESTAR=$( supergrep ln_rstart          ${CHGFILE} )
114     PAT_RESMLD=$( supergrep ln_trdmld_restart  ${CHGFILE} )
[1603]115     PAT_NAMECF=$( supergrep cn_exp             ${CHGFILE} )
[1620]116     PAT_NN_FWB=$( supergrep nn_fwb             ${CHGFILE} )
117     PAT_NNSSSR=$( supergrep nn_sssr            ${CHGFILE} )
[695]118
119    if [ ${CHGFILE} = 'namelist' ] ; then
120        ORCA_NITEND=$(( $ITERATIONS   ))
121        ORCA_NSTOCK=$(( $NOUTPUT   ))
[1603]122        PAT_NAMECF_tmp="   cn_exp     =     \"${CONF}\""
[695]123    else
124        ORCA_NITEND=$(( $ITERATIONS*2 ))
125        ORCA_NSTOCK=$(( $NOUTPUT*2   ))
126        PAT_NAMECF_tmp="$PAT_NAMECF"
127    fi
128
[1144]129     sed -e "s%$PAT_RESTAR%   ln_rstart   =  .false.%"           \
130         -e "s%$PAT_NAMECF%$PAT_NAMECF_tmp%"                     \
[1603]131         -e "s%$PAT_NIT000%   nn_it000     =     1   %"            \
132         -e "s%$PAT_NITEND%   nn_itend     =     ${ORCA_NITEND} %" \
133         -e "s%$PAT_NSTOCK%   nn_stock     =     ${ORCA_NITEND} %" \
134         -e "s%$PAT_NWRITE%   nn_write     =     ${ORCA_NSTOCK} %" \
135         -e "s%$PAT_NRSTDT%   nn_rstctl    =     0   %"            \
136         -e "s%$PAT_NBITCM%   nn_bit_cmp   =     1%"                 \
[1144]137         -e "s%$PAT_TRACEN%   ln_traadv_cen2   =  .false.%"      \
138         -e "s%$PAT_TRATVD%   ln_traadv_tvd    =  .true.%"       \
[1603]139         -e "s%$PAT_N_CLAA%   nn_cla   = 0%"                      \
140         -e "s%$PAT_NSOLVV%   nn_solv  =      2%"               \
[1620]141         -e "s%$PAT_NN_FWB%   nn_fwb      =      0%"            \
142         -e "s%$PAT_NNSSSR%   nn_sssr     =      1%"            \
[1144]143         -e "s%$PAT_RESMLD%   ln_trdmld_restart =  .false.%" ${CHGFILE} > nam.$$
[695]144     
145     mv nam.$$ ${CHGFILE} && rm -f nam.$$
146done
147
148# Get forcing files
[1297]149${D_GET} ${D_INPUT}/ORCA2_LIM_nemo_v3.1.tar ORCA2_LIM_nemo_v3.1.tar
150tar xvf ORCA2_LIM_nemo_v3.1.tar
[1603]151rm -f ORCA2_LIM_nemo_v3.1.tar
[695]152
153# Get restarts files if needed
154if [ $type = '2_short' ]
155then
156    if [ ${RUN} = 'mon' -o ${RUN} = 'omp' ] ; then
[1301]157        cp ${WORK}/NEMO_VALID/W${CONF}/${RUN}/1_SHORT/${MYO_EXP}/ZAGRI*_restart.nc restart.nc
158        cp ${WORK}/NEMO_VALID/W${CONF}/${RUN}/1_SHORT/${MYO_EXP}/1_*restart.nc 1_restart.nc
159        cp ${WORK}/NEMO_VALID/W${CONF}/${RUN}/1_SHORT/${MYO_EXP}/ZAGRI*restart_ice.nc restart_ice_in.nc
160        cp ${WORK}/NEMO_VALID/W${CONF}/${RUN}/1_SHORT/${MYO_EXP}/1_*restart_ice.nc 1_restart_ice_in.nc
161        cp ${WORK}/NEMO_VALID/W${CONF}/${RUN}/1_SHORT/${MYO_EXP}/*_restart_mld.nc restart_mld.nc
[695]162    fi
163
164    if [ ${RUN} = 'mpi' ] ; then
165        typeset -Z4 i=0
166        while [ $i -lt $NB_PROCS ]
167        do
[1301]168           cp ${WORK}/NEMO_VALID/W${CONF}/${RUN}/1_SHORT/${MYO_EXP}/ZAGRI*_restart_${i}.nc restart_${i}.nc
169           cp ${WORK}/NEMO_VALID/W${CONF}/${RUN}/1_SHORT/${MYO_EXP}/1_*restart_${i}.nc 1_restart_${i}.nc
170           cp ${WORK}/NEMO_VALID/W${CONF}/${RUN}/1_SHORT/${MYO_EXP}/ZAGRI*_restart_ice_${i}.nc restart_ice_in_${i}.nc
171           cp ${WORK}/NEMO_VALID/W${CONF}/${RUN}/1_SHORT/${MYO_EXP}/1_*restart_ice_${i}.nc 1_restart_ice_in_${i}.nc
172           cp ${WORK}/NEMO_VALID/W${CONF}/${RUN}/1_SHORT/${MYO_EXP}/*_restart_mld_${i}.nc restart_mld_${i}.nc
[695]173           let i=$i+1
174        done
175    fi
176
177    for CHGFILE in `ls *namelist`
178    do
179        # namelist modifications
[1603]180        PAT_NIT000=$( supergrep nn_it000             ${CHGFILE} )
181        PAT_NITEND=$( supergrep nn_itend             ${CHGFILE} )
182        PAT_NRSTDT=$( supergrep nn_rstctl            ${CHGFILE} )
[1144]183        PAT_RESTAR=$( supergrep ln_rstart          ${CHGFILE} )
184        PAT_RESMLD=$( supergrep ln_trdmld_restart  ${CHGFILE} )
[695]185
186        if [ ${CHGFILE} = 'namelist' ] ; then
187            ORCA_NIT000=$(( $ITERATIONS + 1 ))
188            ORCA_NITEND=$(( $ITERATIONS*2   ))
189        else
190            ORCA_NIT000=$(( $ITERATIONS*2 + 1 ))
191            ORCA_NITEND=$(( $ITERATIONS*4 ))
192        fi
193       
[1144]194        sed -e "s%$PAT_RESTAR%   ln_rstart   =  .true.%"          \
[1603]195            -e "s%$PAT_NIT000%   nn_it000    =     $ORCA_NIT000 %" \
196            -e "s%$PAT_NITEND%   nn_itend    =     $ORCA_NITEND %" \
197            -e "s%$PAT_NRSTDT%   nn_rstctl   =     2%"             \
[1144]198            -e "s%$PAT_RESMLD%   ln_trdmld_restart =  .true.%" ${CHGFILE} > nam.$$
[695]199       
200        mv nam.$$ ${CHGFILE} && rm -f nam.$$
201    done
202
203fi
204
205##############################################################
206##############################################################
207##############################################################
208###             Launch run
209##############################################################
210##############################################################
211##############################################################
212
[1603]213cp ${MAINDIR}/modipsl/bin/opa_${CONF}_${RUN}_${MYO_EXP} opa_${CONF}_${RUN}_${MYO_EXP}
214cp ${MAINDIR}/modipsl/bin/opa_${CONF}_memo_${MYO_EXP} opa_${CONF}_memo_${MYO_EXP}
[1301]215chmod 777 opa_${CONF}_${RUN}_${MYO_EXP}
216chmod 777 opa_${CONF}_memo_${MYO_EXP}
[695]217
218#
219# Profiling & Executable memory size
220####################################
221touch memory_size.txt
222
223case ${RUN} in
224        'mon' ) 
225#-T- sx8brodie export F_PROGINF=detail
[1301]226#-T- sx8brodie echo "Stack memory: $( (size opa_${CONF}_${RUN}_${MYO_EXP}) )"    >> memory_size.txt
227#-T- sx8brodie echo "Static memory: $( (size opa_${CONF}_memo_${MYO_EXP}) )"   >> memory_size.txt  ;;
[1365]228#-T- sx8mercure export F_PROGINF=detail
229#-T- sx8mercure echo "Stack memory: $( (size opa_${CONF}_${RUN}_${MYO_EXP}) )"    >> memory_size.txt
230#-T- sx8mercure echo "Static memory: $( (size opa_${CONF}_memo_${MYO_EXP}) )"   >> memory_size.txt  ;;
[1402]231#-T- aix6 echo "Stack memory: $( (size opa_${CONF}_memo_${MYO_EXP}) )"    >> memory_size.txt
232#-T- aix6 echo "Static memory: $( (size opa_${CONF}_${RUN}_${MYO_EXP}) )"   >> memory_size.txt ;;
[695]233        'mpi' ) 
234#-T- sx8brodie export MPIPROGINF=detail ;;
[1365]235#-T- sx8mercure export MPIPROGINF=detail ;;
[1297]236#-T- aix6     ;;
[695]237        'omp' ) 
238#-T- sx8brodie export F_PROGINF=detail
[1115]239#-T- sx8brodie export OMP_NUM_THREADS=${NB_PROCS} ;;
[1365]240#-T- sx8mercure export F_PROGINF=detail
241#-T- sx8mercure export OMP_NUM_THREADS=${NB_PROCS} ;;
[1297]242#-T- aix6     ;;
[695]243esac
244#
245# >>>>>> EXECUTION < < < <
246##########################
247
248case ${RUN} in
249        'mon' | 'omp' ) 
[1301]250              ${CPERF} ./opa_${CONF}_${RUN}_${MYO_EXP} ;;
[695]251        'mpi' ) 
[1365]252#-T- sx8brodie         ${CPERF} ${LEXE} ./opa_${CONF}_${RUN}_${MYO_EXP} ;;
[1603]253#-T- sx8mercure        ${CPERF} ${LEXE} ./opa_${CONF}_${RUN}_${MYO_EXP} ;;
[1301]254#-T- aix6              ${CPERF} ${LEXE} ./opa_${CONF}_${RUN}_${MYO_EXP} ;;
[695]255esac
256
257ls -l
258#
259
260##############################################################
261##############################################################
262##############################################################
263###             Save output files
264##############################################################
265##############################################################
266##############################################################
267case ${RUN} in
268   'mon' | 'omp' )
269               liste_files=' *abort* memory* *namelist* perfs* solver.stat ocean.output 1_Agulhas* layout* ZAGRIF* restart* mono*' ;;
270   'mpi' )
271               liste_files=' *abort* *namelist* solver.stat perfs* ocean.output* layout* 1_Agulhas* ZAGRIF* restart* mpp*' ;;
272esac
273
274# Ensure that all files saved are coming from the current run
275ind=1
276for k in $liste_files
277do
278   echo $k > temp
279   var=$( ( awk '{printf("%-.4s", varin ) } ' varin=$k temp ) )
[1054]280   if [ ${ind} = 1 -a ${var} = 'perf' ] ; then
[695]281       kc='perf*'
[1301]282       rm -f ${WORK}/NEMO_VALID/W${CONF}/${RUN}/${DIROUT}/${MYO_EXP}/${kc}
[695]283       ind=0
284   fi
[1301]285   cp $k ${WORK}/NEMO_VALID/W${CONF}/${RUN}/${DIROUT}/${MYO_EXP}/$k
[695]286done
287
288##############################################################
289##############################################################
290##############################################################
291###             Retrieve some reference run files
292##############################################################
293##############################################################
294##############################################################
[1564]295if [ ${REF_TAG} = 'nemo_v2' -o ${REF_TAG} = 'nemo_v2_3' -o ${REF_TAG} = 'nemo_v3' ]
[695]296then
297   STORE_DATA=${REF_OD}/${CONF}/${REF_TAG}/${RUN}/${DIROUT}
298   LFILES="solver.stat memory_size.txt ocean.output ${RUN}${CONF}_err"
[1564]299   SAV_DIR=${WORK}/NEMO_VALID/W${CONF}/${RUN}/${DIROUT}/${REF_TAG}
300   if [ ! -d ${SAV_DIR} ] ;  then
301      mkdir ${SAV_DIR}
302   fi
[695]303   for ref_file in ${LFILES}
304   do
[1564]305       ${D_GET} ${STORE_DATA}/${TSYMB}${ref_file} ${SAV_DIR}/${ref_file}
[695]306   done
307fi
308
309##############################################################
310##############################################################
311##############################################################
312###             Launch restart job
313##############################################################
314##############################################################
315##############################################################
316if [ $type = '1_short' ] ; then
[1301]317    cd ${WORK}/NEMO_VALID/W${CONF}/${RUN}/2_SHORT/${MYO_EXP}
318    ${LAUNCH}job_${RUN}_2_short_${MYO_EXP}.ksh
[695]319fi
Note: See TracBrowser for help on using the repository browser.