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

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

improvements of NVTK environnement, see ticket: #240

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