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_GYRE.ksh in trunk/NVTK/INSTALL/JOBS – NEMO

source: trunk/NVTK/INSTALL/JOBS/job_GYRE.ksh @ 1603

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

Doctor naming of OPA namelist variables, see ticket: #526

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