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

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

initialize the variable PAT_NAMECF in job_ZAGRIF.ksh job, see ticket, #262

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