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

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

trunk: improve the treatment of namelists in NVTK jobs based on sed and grep UNIX commands, see ticket: #222

File size: 8.3 KB
Line 
1set -xv
2
3CONF=GYRE
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=360 ;;
28             
29        '1_short' ) 
30             DIROUT='1_SHORT'
31             ITERATIONS=180 ;;
32             
33        '2_short' ) 
34             DIROUT='2_SHORT'
35             ITERATIONS=180 ;;
36
37        'gtime' ) 
38             DIROUT='GTIME'
39             ITERATIONS=4320 ;;
40esac
41
42# Working directory
43cd ${TMPDIR}
44#-T- osxxlf cd ${WORK}/NEMO_VALID/W${CONF}/${RUN}/${DIROUT}/RUN
45#-T- osxxlf zback=$?
46#-T- osxxlf if [ ${zback} = 0 ] ; then rm -rf namelist* *.nc memory* solver.stat ocean.output* mpp.output* mono.output* ; fi
47
48##############################################################
49##############################################################
50##############################################################
51###             Input files
52##############################################################
53##############################################################
54##############################################################
55# Ocean namelist
56cp ${MAINDIR}/modipsl/config/${CONF}/EXP00/namelist .
57
58# Local function to find namelists parameters
59supergrep () {
60    grep "^ *$1 *=" $2 | sed -e "s% *\!.*%%"
61}
62
63# namelist modifications
64PAT_NIT000=$( supergrep nit000             namelist )
65PAT_NITEND=$( supergrep nitend             namelist )
66PAT_NSTOCK=$( supergrep nstock             namelist )
67PAT_NWRITE=$( supergrep nwrite             namelist )
68PAT_NRSTDT=$( supergrep nrstdt             namelist )
69PAT_NBITCM=$( supergrep nbit_cmp           namelist )
70PAT_NSOLVV=$( supergrep nsolv              namelist )
71PAT_RESTAR=$( supergrep ln_rstart          namelist )
72PAT_RESMLD=$( supergrep ln_trdmld_restart  namelist )
73
74sed -e "s%$PAT_RESTAR%   ln_rstart   =  .false.%"          \
75    -e "s%$PAT_NIT000%   nit000     =     1   %"           \
76    -e "s%$PAT_NITEND%   nitend     =     ${ITERATIONS} %" \
77    -e "s%$PAT_NSTOCK%   nstock     =     ${ITERATIONS} %" \
78    -e "s%$PAT_NWRITE%   nwrite     =     75  %"           \
79    -e "s%$PAT_NRSTDT%   nrstdt     =     0   %"           \
80    -e "s%$PAT_NBITCM%   nbit_cmp   =     1%"              \
81    -e "s%$PAT_NSOLVV%   nsolv     =      2%"              \
82    -e "s%$PAT_RESMLD%   ln_trdmld_restart =  .false.%" namelist > nam.tmp
83
84mv nam.tmp namelist
85
86# Analytical forcing
87
88# Get restarts files if needed
89if [ $type = '2_short' ]
90then
91    if [ ${RUN} = 'mon' -o ${RUN} = 'omp' ] ; then
92        cp ${WORK}/NEMO_VALID/W${CONF}/${RUN}/1_SHORT/*_restart.nc restart.nc
93        cp ${WORK}/NEMO_VALID/W${CONF}/${RUN}/1_SHORT/*_restart_mld.nc restart_mld.nc
94    fi
95
96    if [ ${RUN} = 'mpi' ] ; then
97        typeset -Z4 i=0
98        while [ $i -lt $NB_PROCS ]
99        do
100           cp ${WORK}/NEMO_VALID/W${CONF}/${RUN}/1_SHORT/*_restart_${i}.nc restart_${i}.nc
101           cp ${WORK}/NEMO_VALID/W${CONF}/${RUN}/1_SHORT/*_restart_mld_${i}.nc restart_mld_${i}.nc
102           let i=$i+1
103        done
104    fi
105
106    # Ocean namelist modifications
107    PAT_NIT000=$( supergrep nit000             namelist )
108    PAT_NITEND=$( supergrep nitend             namelist )
109    PAT_NRSTDT=$( supergrep nrstdt             namelist )
110    PAT_RESTAR=$( supergrep ln_rstart          namelist )
111    PAT_RESMLD=$( supergrep ln_trdmld_restart  namelist )
112    ORCA_NIT000=$(( $ITERATIONS + 1 ))
113    ORCA_NITEND=$(( $ITERATIONS*2 ))
114   
115    sed  -e "s%$PAT_RESTAR%   ln_rstart   =  .true.%"          \
116         -e "s%$PAT_NIT000%   nit000     =     $ORCA_NIT000 %" \
117         -e "s%$PAT_NITEND%   nitend     =     $ORCA_NITEND %" \
118         -e "s%$PAT_NRSTDT%   nrstdt     =     2%"             \
119         -e "s%$PAT_RESMLD%   ln_trdmld_restart =  .true.%" namelist > nam.tmp
120   
121    mv nam.tmp namelist
122
123fi
124
125##############################################################
126##############################################################
127##############################################################
128###             Launch run
129##############################################################
130##############################################################
131##############################################################
132
133cp ${WORK}/NEMO_VALID/W${CONF}/opa_${CONF}_${RUN} opa_${CONF}_${RUN}
134cp ${WORK}/NEMO_VALID/W${CONF}/opa_${CONF}_memo opa_${CONF}_memo
135chmod 777 opa_${CONF}_${RUN}
136chmod 777 opa_${CONF}_memo
137
138#
139# Profiling & Executable memory size
140####################################
141touch memory_size.txt
142
143case ${RUN} in
144        'mon' ) 
145#-T- sx8brodie export F_PROGINF=detail
146#-T- sx8brodie echo "Stack memory: $( (size opa_${CONF}_${RUN}) )"    >> memory_size.txt
147#-T- sx8brodie echo "Static memory: $( (size opa_${CONF}_memo) )"   >> memory_size.txt  ;;
148#-T- aix     ;;
149#-T- ax_mono echo "Stack memory: $( (size opa_${CONF}_memo) )"    >> memory_size.txt
150#-T- ax_mono echo "Static memory: $( (size opa_${CONF}_${RUN}) )"   >> memory_size.txt ;;
151#-T- osxxlf echo "Stack memory: $( (size opa_${CONF}_memo) )"    >> memory_size.txt
152#-T- osxxlf echo "Static memory: $( (size opa_${CONF}_${RUN}) )"   >> memory_size.txt ;;
153        'mpi' ) 
154#-T- sx8brodie export MPIPROGINF=detail ;;
155#-T- aix     ;;
156#-T- ax_mono ;;
157#-T- osxxlf  ;;
158        'omp' ) 
159#-T- sx8brodie export F_PROGINF=detail
160#-T- sx8brodie export OMP_NUM_THREADS=${NB_PROCS} ;;
161#-T- aix     ;;
162#-T- ax_mono ;;
163#-T- osxxlf  ;;
164esac
165#
166# >>>>>> EXECUTION < < < <
167##########################
168
169case ${RUN} in
170        'mon' | 'omp' ) 
171              ${CPERF} ./opa_${CONF}_${RUN} ;;
172        'mpi' ) 
173#-T- sx8brodie              ${CPERF} ${LEXE} ./opa_${CONF}_${RUN} ;;
174#-T- aix              ${CPERF} ${LEXE} ./opa_${CONF}_${RUN} ;;
175#-T- osxxlf   mpd&
176#-T- osxxlf   sleep 5
177#-T- osxxlf   ${CPERF} ${LEXE} ./opa_${CONF}_${RUN}
178#-T- osxxlf   mpdallexit ;;
179esac
180
181ls -l
182#
183
184##############################################################
185##############################################################
186##############################################################
187###             Save output files
188##############################################################
189##############################################################
190##############################################################
191case ${RUN} in
192   'mon' | 'omp' )
193               liste_files=' *abort* memory* namelist* perfs* solver.stat ocean.output layout* GYRE* restart* mono*' ;;
194   'mpi' )
195               liste_files=' *abort* namelist* solver.stat perfs* ocean.output* layout* GYRE* restart* mpp*' ;;
196esac
197
198# Ensure that all files saved are coming from the current run
199ind=1
200for k in $liste_files
201do
202   echo $k > temp
203   var=$( ( awk '{printf("%-.4s", varin ) } ' varin=$k temp ) )
204   if [ ${ind} = 1 -a ${var} = 'perf' ] ; then
205       kc='perf*'
206       rm -f ${WORK}/NEMO_VALID/W${CONF}/${RUN}/${DIROUT}/${kc}
207       ind=0
208   fi
209   cp $k ${WORK}/NEMO_VALID/W${CONF}/${RUN}/${DIROUT}/$k
210done
211
212##############################################################
213##############################################################
214##############################################################
215###             Retrieve some reference run files
216##############################################################
217##############################################################
218##############################################################
219if [ ${REF_TAG} ]
220then
221   STORE_DATA=${REF_OD}/${CONF}/${REF_TAG}/${RUN}/${DIROUT}
222   LFILES="solver.stat memory_size.txt ocean.output ${RUN}${CONF}_err"
223   for ref_file in ${LFILES}
224   do
225       ${D_GET} ${STORE_DATA}/${TSYMB}${ref_file} ${WORK}/NEMO_VALID/W${CONF}/${RUN}/${DIROUT}/REF/${ref_file}
226   done
227fi
228
229##############################################################
230##############################################################
231##############################################################
232###             Launch restart job
233##############################################################
234##############################################################
235##############################################################
236if [ $type = '1_short' ] ; then
237    cd ${WORK}/NEMO_VALID/W${CONF}/${RUN}/2_SHORT
238    ${LAUNCH}job_${RUN}_2_short.ksh
239fi
Note: See TracBrowser for help on using the repository browser.