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/VALID/2INSTALL/JOBS – NEMO

source: trunk/VALID/2INSTALL/JOBS/job_ZAGRIF.ksh @ 744

Last change on this file since 744 was 744, checked in by ctlod, 16 years ago

ensure interactive jobs to work properly

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