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 @ 2478

Last change on this file since 2478 was 2040, checked in by clevy, 14 years ago

[NVTK scripts in INSTALL/JOBS update, see ticket:#697]

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