source: branches/ORCHIDEE_EXT/ORCHIDEE_OL/OOL_SEC_STO/Job_SECHSTOM @ 65

Last change on this file since 65 was 65, checked in by didier.solyga, 14 years ago

Import first version of ORCHIDEE_EXT

File size: 15.5 KB
Line 
1######################
2## OBELIX      LSCE ##
3######################
4#PBS -N SECHSTOM
5#PBS -m a
6#PBS -j oe
7#PBS -q medium
8#PBS -o Script_Output_SECHSTOM.000001
9#PBS -S /bin/ksh
10#PBS -v BATCH_NUM_PROC_TOT=4
11#PBS -l nodes=1:ppn=4
12
13# $Date: 2010-07-06 10:02:51 +0200 (Tue, 06 Jul 2010) $
14# $Author: mafoipsl $
15# $Revision: 314 $
16# IPSL (2006)
17#  This software is governed by the CeCILL licence see libIGCM/libIGCM_CeCILL.LIC
18
19#set -eu
20#set -vx
21
22date
23echo
24echo "#######################################"
25echo "#       ANOTHER GREAT SIMULATION      #"
26echo "#######################################"
27echo
28
29#D--------------------------------------------------------------------==
30#D--------------------------------------------------------------------==
31#D-
32#D-                      Job to launch IGCM models
33#D-
34#D--------------------------------------------------------------------==
35#D--------------------------------------------------------------------==
36#D-
37
38MODIPSL=/home/users/dsolyga/DEV/Orchidee_ext/modipsl
39libIGCM=${MODIPSL}/libIGCM
40
41#D--------------------------------------------------------------------==
42#D-                   -1. User modification place
43#D-                      - Job Verbosity
44#D-                      - PeriodNb
45#D-                      - Experience type : DEB(ug), DEV(elopment), RUN
46#D--------------------------------------------------------------------==
47
48#D- Increased verbosity (1, 2, 3)
49Verbosity=3
50#D- Number of execution in one job
51PeriodNb=1
52
53#D-
54# --------------------------------------------------------------------
55#D- ! Optionnal features /!\ Use with care !
56# --------------------------------------------------------------------
57
58#D- Low level debug : to bypass lib test checks and stack construction
59#D- Default=true
60DEBUG_debug=false
61
62#D- Set DEBUG_sys to false to disable output calls of function
63#D- Default=true
64#DEBUG_sys=false
65
66#D- Experience type : DEB(ug), DEV(elopment), RUN (default)
67JobType=RUN
68
69#D- Define running directory
70#D- Default=${TMPDIR} ie temporary batch directory
71#RUN_DIR_PATH=/workdir/or/scratchdir/of/this/machine
72
73#D- Define submit directory
74#D- Default= where you launch qsub (variable from scheduler)
75#SUBMIT_DIR=$( pwd )
76
77#D- Define BIG_DIR directory
78#D- Default=(strongly machine dependant/see libIGCM_sys for details)
79#BIG_DIR=/somewhere/with/lot/of/space/scratchdir/may/be
80
81#D- Turn in dry run mode ? (0,1,2,3)
82#D- Default=0
83#DRYRUN=3
84# YOU MUST COMPILE YOUR EXE FILES FOR DRYRUN MODE !
85# -------------------------------------------------------------------------------------
86# | DRYRUN=  |  Date computations, | sys_Get    |  Exe    | sys_Put_Out; sys_Put_Rest |
87# |          |  Cp/Exe param files |            |  Chmod  |                           |
88# |          |      Qsub           |            |         |                           |
89# -------------------------------------------------------------------------------------
90# |    0     |       yes           |    yes     |  yes    |      yes                  |
91# -------------------------------------------------------------------------------------
92# |    1     |       yes           |    yes     |  yes    |      no                   |
93# -------------------------------------------------------------------------------------
94# |    2     |       yes           |    yes     |  no     |      no                   |
95# -------------------------------------------------------------------------------------
96# |    3     |       yes           |    no      |  no     |      no                   |
97# -------------------------------------------------------------------------------------
98
99#D- Define input file root directory
100#D- Default=/IGCMG/common/account/of/this/machine
101#R_IN=/u/rech/por/rpor111/DATA
102
103#D-
104#D--------------------------------------------------------------------==
105#D-                   0. System Environment
106#D-                      - Define variables for Number of processors
107#D-                      - Define MPI variables
108#D-                      - Define batch scheduler variables
109#D-                      - Source IGCM Library
110#D-                      - Get RESOLution in .resol file (temporary)
111#D--------------------------------------------------------------------==
112
113#D--------------------------------------------------------------------==
114
115. ${libIGCM}/libIGCM_debug/libIGCM_debug.ksh
116       ( ${DEBUG_debug} ) && IGCM_debug_Check
117. ${libIGCM}/libIGCM_card/libIGCM_card.ksh
118       ( ${DEBUG_debug} ) && IGCM_card_Check
119. ${libIGCM}/libIGCM_date/libIGCM_date.ksh
120       ( ${DEBUG_debug} ) && IGCM_date_Check
121#-------
122. ${libIGCM}/libIGCM_sys/libIGCM_sys.ksh
123. ${libIGCM}/libIGCM_config/libIGCM_config.ksh
124. ${libIGCM}/libIGCM_comp/libIGCM_comp.ksh
125. ${libIGCM}/libIGCM_post/libIGCM_post.ksh
126
127#D--------------------------------------------------------------------==
128
129#-- Resolution FLAG for oasis input
130[ -f ${SUBMIT_DIR}/../.resol ] && RESOL=$(head -1 ${SUBMIT_DIR}/../.resol)
131#RESOL="ORCA2xLMD9671"
132
133#D-
134#D--------------------------------------------------------------------==
135#D-           1. INITIALIZE CONFIGURATION AND THEN COMPONENTS
136#D--------------------------------------------------------------------==
137
138# --------------------------------------------------------------------==
139#D- Initialize configuration :
140#D-              - Simulation configuration
141#D-              - Simulation parameters
142#D-              - Execution parameter
143#D-              - Define input files directory
144#D-              - Read or initialize CumulPeriod
145#D-              - run.card
146#D-
147# --------------------------------------------------------------------==
148IGCM_config_Initialize
149
150# --------------------------------------------------------------------==
151#D- Define, create and cd RUN_DIR
152#D- 
153# --------------------------------------------------------------------==
154RUN_DIR=${RUN_DIR_PATH}/${config_UserChoices_TagName}/${config_UserChoices_JobName}.${$}
155IGCM_sys_MkdirWork ${RUN_DIR}
156IGCM_sys_Cd ${RUN_DIR}
157
158# --------------------------------------------------------------------==
159#D- Initialize each components taking part
160#D- into simulation configuration :
161#D-         - Define component executable
162#D-         - Define Write Frequency by component "1M" "1D" ...
163#D-         - Source ${comp}.driver
164#D-         - Define Storage Places by component
165#D-         - ${comp}_Initialize :
166#D-         - Patterns to sed
167#D-         - Variables from namelist
168#D-
169# --------------------------------------------------------------------==
170IGCM_comp_Initialize
171
172# --------------------------------------------------------------------==
173#D- Verify compatibility of period length, write frequencies, ...
174#D- Verify compatibility of rebuild choices and post-process choices
175#D- Will stop here if something is wrong
176# --------------------------------------------------------------------==
177#IGCM_config_Check
178
179#D--------------------------------------------------------------------==
180#D-                  2. ENTER THE DEEP EXECUTION LOOP
181#D-                  !!!! FASTEN YOUR SEAT BELTS !!!!
182#D-                  !!!!!      PLEASE.          !!!!
183#D-                  !! WE WILL CROSS TURBULENCES. !!
184#D--------------------------------------------------------------------==
185
186Period=1
187
188PeriodContinue=false
189if [ ${Period} -le ${PeriodNb} ]; then
190    PeriodContinue=true
191fi
192while ( ${PeriodContinue} ) ; do
193
194    echo
195    echo "Starting iteration ${Period} / ${PeriodNb}"
196
197    #D-
198    # ------------------------------------------------------------------
199    #D- COMPUTE AND DEFINE DATE STUFF.
200    # ------------------------------------------------------------------
201    IGCM_config_PeriodStart
202    #D- => ${PeriodDateBegin}
203    #D- => ${PeriodDateEnd}
204    #D- => ${CumulPeriod}
205    #D- => ${DatesPeriod}=${PeriodDateBegin}_${PeriodDateEnd}
206    #D- => ${PeriodLength} => JOURS=31 , 28, 29, 30 ; MOIS=0 ; ANS=0
207    #D- => update run.card value
208   
209    #D-
210    # ------------------------------------------------------------------
211    #D- Optionnal function in driver
212    #D- to set special variables used in forward lists (Param, Init or Bc).
213    # ------------------------------------------------------------------
214    IGCM_comp_PeriodStart
215   
216    #D-
217    # ------------------------------------------------------------------
218    #D- Get parameters text files updated by job (.def, namelist ...)
219    #D- READ AND USE BY GCM AT EACH EXECUTION.
220    # ------------------------------------------------------------------
221    IGCM_comp_GetInputParametersFiles
222
223    #D-
224    # ------------------------------------------------------------------
225    #D- Get initial state (Etat0, carteveg,relief...)
226    #D- NECESSARY ONLY IF CumulPeriod= (=> NUMERO) == 1
227    #D- AND ???_Restart=NO
228    #D- READ AND USE BY GCM FOR ONLY ONE EXECUTION.
229    # ------------------------------------------------------------------
230    IGCM_comp_GetInputInitialStateFiles
231
232    #D-
233    # ------------------------------------------------------------------
234    #D- Get Boundaries Conditions (SST, WIND[X,Y,Z], LAI ...)
235    #D- READ AND USE BY GCM AT EACH EXECUTION.
236    # ------------------------------------------------------------------
237    IGCM_comp_GetInputBoundaryFiles
238
239    #D-
240    # ------------------------------------------------------------------
241    #D- Get SmoothFiles Conditions (SST, WIND[X,Y,Z], LAI ...)
242    #D- READ AND USE BY GCM AT EACH EXECUTION but varying in time
243    # ------------------------------------------------------------------
244    IGCM_comp_GetInputSmoothFiles
245
246    #D-
247    # ------------------------------------------------------------------
248    #D- Get restart files (restartphy.nc, orca_restart.nc ...)
249    #D- READ AND USE BY GCM AT EACH EXECUTION.
250    #D-
251    #D- IF A COMPONENT DO NOT RESTART FROM PREVIOULSY COMPUTED RESTART
252    #D- ONLY IF CumulPeriod= (=> NUMERO) == 1
253    #D- MUST EXECUTE CREATE ETAT0_LIMIT (TYPICALLY LMDZ AND ./create_etat0_limit.e)
254    #D-
255    #D- IF CumulPeriod == 1
256    #D- AND A COMPONENT RESTART FROM PREVIOULSY COMPUTED RESTART
257    #D- MUST BRING THIS RESTART IN ${RUN_DIR_PATH}
258    #D-
259    #D- ELSE BRING RESTART FROM ${JobName} IN ${RUN_DIR_PATH}
260    # ------------------------------------------------------------------
261    IGCM_comp_GetInputRestartFiles
262   
263    #D-
264    # ------------------------------------------------------------------
265    #D- Test if all was right before Update
266    # ------------------------------------------------------------------
267    IGCM_debug_Verif_Exit
268
269    # ------------------------------------------------------------------
270    #D- Activate running environnement variables
271    # ------------------------------------------------------------------
272    IGCM_sys_activ_variables
273
274    #D-
275    # ------------------------------------------------------------------
276    #D- UPDATE ParametersFiles (.def, namelist ...) with
277    #D- current value of (ORCA_NIT00, ORCA_LRSTAR, RAZ_DATE, ...)
278    # ------------------------------------------------------------------
279    IGCM_comp_Update
280
281    #D-
282    # ------------------------------------------------------------------
283    #D- Test if all was right before execution
284    # ------------------------------------------------------------------
285    IGCM_debug_Verif_Exit
286
287    #D-
288    #D----------------------------------------------------------------==
289    #D-                          3. Execution
290    #D----------------------------------------------------------------==
291
292    echo
293    echo "#######################################"
294    echo "#      DIR BEFORE RUN EXECUTION       #"
295    echo "#######################################"
296    echo
297    ls -lrt
298
299    echo "========================================================================"
300    if ( [ X${BATCH_NUM_PROC_TOT} != X ] && [ "${BATCH_NUM_PROC_TOT}" -gt 1 ] ) ; then
301        MPIRUN_COMMAND=${HOST_MPIRUN_COMMAND}
302        eval MPIRUN_OPTIONS=${config_UserChoices_JobRunOptions}
303    else
304        MPIRUN_COMMAND=${MPIRUN_COMMAND:="time "}
305        MPIRUN_OPTIONS=${MPIRUN_OPTIONS:=""}
306    fi
307
308    if [ ${DRYRUN} -le 1 ] ; then
309        REAL_DATE_INIT=$( date )
310        echo "EXECUTION of : ${MPIRUN_COMMAND} ${MPIRUN_OPTIONS} ./${config_Executable_Name}   > ${Exe_Output} 2>&1"
311        echo                                                                                   > ${Exe_Output}
312        echo "#######################################"                                        >> ${Exe_Output}
313        echo "EXECUTION of : ${MPIRUN_COMMAND} ${MPIRUN_OPTIONS} ./${config_Executable_Name}" >> ${Exe_Output}
314        echo                                                                                  >> ${Exe_Output}
315        typeset RET
316        RUN_DATE_BEGIN=$( date '+%Y-%m-%dT%H:%M:%S' )
317        ${MPIRUN_COMMAND} ${MPIRUN_OPTIONS} ./${config_Executable_Name} >> ${Exe_Output} 2>&1
318        RET=$?
319        RUN_DATE_END=$( date '+%Y-%m-%dT%H:%M:%S' )
320        if [ ${RET} -gt 0 ] ; then
321            echo "Return code of executable :" ${RET}
322            IGCM_debug_Exit "EXECUTABLE"
323            IGCM_sys_Cp ${Exe_Output} ${SUBMIT_DIR}/${PREFIX}_${Exe_Output}_error
324        fi
325        echo                                            >> ${Exe_Output}
326        echo "#######################################"  >> ${Exe_Output}
327        echo "libIGCM RunDateBegin=${RUN_DATE_BEGIN}"   >> ${Exe_Output}
328        echo "libIGCM RunDateEnd=${RUN_DATE_END}"       >> ${Exe_Output}
329        echo                                            >> ${Exe_Output}
330    else
331        echo "EXECUTION of : ${MPIRUN_COMMAND} ${MPIRUN_OPTIONS} ./${config_Executable_Name} simulated for DRYRUN = " $DRYRUN
332        if ( $DEBUG_debug ) ; then
333            echo "FOR EXECUTION DRYRUN mode = " $DRYRUN >> stack
334        fi
335    fi
336    echo "========================================================================"
337
338    echo
339    echo "#######################################"
340    echo "#       DIR AFTER RUN EXECUTION       #"
341    echo "#######################################"
342    echo
343    ls -lrt
344
345    #D-
346    # ------------------------------------------------------------------
347    #D- Desactivate running environnement variables
348    # ------------------------------------------------------------------
349    IGCM_sys_desactiv_variables
350
351    #D-
352    #D----------------------------------------------------------------==
353    #D-                    4. Post execution operations
354    #D----------------------------------------------------------------==
355
356    #D-
357    # ------------------------------------------------------------------
358    #D- Save on archive machine netcdf outputs, restarts
359    #D- and text files of models
360    # ------------------------------------------------------------------
361    IGCM_comp_Finalize
362
363    #D-
364    # ------------------------------------------------------------------
365    #D- Test if all was right after Finalize
366    # ------------------------------------------------------------------
367    IGCM_debug_Verif_Exit
368
369    #D-
370    # ------------------------------------------------------------------
371    #D- Launch remote rebuild or/and post-treatment process if necessary
372    # ------------------------------------------------------------------
373    IGCM_post_Configure
374
375    #D-
376    # ------------------------------------------------------------------
377    #D- Save job output
378    #D- Manage executable size to save only different binary
379    #D- Write in run.card user, system and elapse time
380    #D- Check that everything went well ! No ? then we stop.
381    #D- Determine next computed period
382    # ------------------------------------------------------------------
383    IGCM_config_PeriodEnd
384
385    echo "Ending iteration ${Period}"
386    (( Period = Period + 1 ))
387
388    # End loop if date end is reached
389    if [ ${SimulationLengthInDays} -ge ${ExperienceLengthInDays} ] ; then
390        break ;
391    fi
392
393    PeriodContinue=false
394    if [ ${Period} -le ${PeriodNb} ]; then
395        PeriodContinue=true
396    fi
397done
398
399#D-
400#D--------------------------------------------------------------------==
401#D-     5. Submit next job or send mail if simulation over.
402#D--------------------------------------------------------------------==
403IGCM_config_Finalize
404
405date
Note: See TracBrowser for help on using the repository browser.