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

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

trunk: adapt NVTK jobs to changes related to namelists, see tickets: #174, #184, #204

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