source: trunk/libIGCM/AA_job @ 85

Last change on this file since 85 was 85, checked in by sdipsl, 15 years ago

Bugfix : typo

  • Property licence set to
    The following licence information concerns ONLY the libIGCM tools
    ==================================================================

    Copyright © Centre National de la Recherche Scientifique CNRS
    Commissariat à l'Énergie Atomique CEA

    libIGCM : Library for Portable Models Computation of IGCM Group.

    IGCM Group is the french IPSL Global Climate Model Group.

    This library is a set of shell scripts and functions whose purpose is
    the management of the initialization, the launch, the transfer of
    output files, the post-processing and the monitoring of datas produce
    by any numerical program on any plateforme.

    This software is governed by the CeCILL license under French law and
    abiding by the rules of distribution of free software. You can use,
    modify and/ or redistribute the software under the terms of the CeCILL
    license as circulated by CEA, CNRS and INRIA at the following URL
    "http://www.cecill.info".

    As a counterpart to the access to the source code and rights to copy,
    modify and redistribute granted by the license, users are provided only
    with a limited warranty and the software's author, the holder of the
    economic rights, and the successive licensors have only limited
    liability.

    In this respect, the user's attention is drawn to the risks associated
    with loading, using, modifying and/or developing or reproducing the
    software by the user in light of its specific status of free software,
    that may mean that it is complicated to manipulate, and that also
    therefore means that it is reserved for developers and experienced
    professionals having in-depth computer knowledge. Users are therefore
    encouraged to load and test the software's suitability as regards their
    requirements in conditions enabling the security of their systems and/or
    data to be ensured and, more generally, to use and operate it in the
    same conditions as regards security.

    The fact that you are presently reading this means that you have had
    knowledge of the CeCILL license and that you accept its terms.
  • Property svn:keywords set to Date Author Revision
File size: 17.2 KB
Line 
1#-Q- platine #!/usr/bin/ksh
2#-Q- platine ##################
3#-Q- platine ## PLATINE   CEA ##
4#-Q- platine ##################
5#-Q- platine #BSUB -J ::Jobname::       # nom de la requete
6#-Q- platine #BSUB -N                   # message a la fin du job
7#-Q- platine #BSUB -o Script_Output_::Jobname::.000001    # nom du fichier de sortie
8#-Q- platine #BSUB -n ::JobNumProcTot::             # reservation des processeurs pour le job
9#-Q- platine #BSUB -W 1:00           # Limite temps
10#-Q- platine BATCH_NUM_PROC_TOT=$SLURM_NPROCS
11#-Q- sx8brodie #######################
12#-Q- sx8brodie ## SX8BRODIE   IDRIS ##
13#-Q- sx8brodie #######################
14#-Q- sx8brodie #PBS -N ::Jobname::         # nom de la requete
15#-Q- sx8brodie #PBS -m a                   # message a la fin du job
16#-Q- sx8brodie #PBS -j o                   # regroupement des sorties du job : standard error et output
17#-Q- sx8brodie #PBS -o Script_Output_::Jobname::.000001  # nom du fichier de sortie
18#-Q- sx8brodie #PBS -S /usr/bin/ksh        # shell de soumission
19#-Q- sx8brodie #PBS -v BATCH_NUM_PROC_TOT=::JobNumProcTot::
20#-Q- sx8brodie #PBS -q ::JobClass::                # classe multi pour BATCH_NUM_PROC_TOT superieur a 2, mono sinon
21#-Q- sx8brodie #PBS -l cpunum_job=${BATCH_NUM_PROC_TOT}  # reservation des processeurs pour le job
22#-Q- sx8brodie #PBS -l memsz_job=8.0gb     # Limite memoire
23#-Q- sx8brodie #PBS -l cputim_job=1:00:00  # Limite temps
24#-Q- aix6 #!/usr/bin/ksh
25#-Q- aix6 # ######################
26#-Q- aix6 # ##   VARGAS IDRIS   ##
27#-Q- aix6 # ######################
28#-Q- aix6 # Nom de la requete
29#-Q- aix6 # @ job_name = ::Jobname::
30#-Q- aix6 # Type de travail
31#-Q- aix6 # @ job_type = parallel
32#-Q- aix6 # Fichier de sortie standard
33#-Q- aix6 # @ output = $(job_name).$(jobid)
34#-Q- aix6 # Fichier de sortie erreur (le meme)
35#-Q- aix6 # @ error =  $(job_name).$(jobid)
36#-Q- aix6 # Nombre de processus demandes
37#-Q- aix6 # @ total_tasks = ::JobNumProcTot::
38#-Q- aix6 # @ environment "BATCH_NUM_PROC_TOT=::JobNumProcTot::"
39#-Q- aix6 # Temps CPU max. par processus MPI hh:mm:ss
40#-Q- aix6 # @ wall_clock_limit = 1:00:00
41#-Q- aix6 # Memoire max. utilisee par processus
42#-Q- aix6 # @ data_limit = 3.2gb
43#-Q- aix6 # Memoire stack demandee
44#-Q- aix6 # @ stack_limit = 0.3gb,0.3gb
45#-Q- aix6 # Pas d OpenMP
46#-Q- aix6 # @ resources = ConsumableCpus(1)
47#-Q- aix6 # Fin de l entete
48#-Q- aix6 # @ queue
49#-Q- sx8mercure #!/bin/ksh
50#-Q- sx8mercure ######################
51#-Q- sx8mercure ## SX8MERCURE   CEA ##
52#-Q- sx8mercure ######################
53#-Q- sx8mercure #PBS -N ::Jobname::           # nom de la requete
54#-Q- sx8mercure #PBS -m a                     # message a la fin du job
55#-Q- sx8mercure #PBS -j o                     # regroupement des sorties du job : standard error et output
56#-Q- sx8mercure #PBS -o Script_Output_::Jobname::.000001   # nom du fichier de sortie
57#-Q- sx8mercure #PBS -S /usr/bin/ksh          # shell de soumission
58#-Q- sx8mercure #PBS -v BATCH_NUM_PROC_TOT=::JobNumProcTot::
59#-Q- sx8mercure #PBS -l cpunum_job=${BATCH_NUM_PROC_TOT}          # reservation des processeurs pour le job
60#-Q- sx8mercure #PBS -l memsz_job=8.0gb       # limite memoire
61#-Q- sx8mercure #PBS -l elapstim_req=01:00:00 # limite en temps elapsed
62#-Q- default #!/bin/ksh
63#-Q- default ##################
64#-Q- default ## DEFAULT HOST ##
65#-Q- default ##################
66#-Q- default #For MPI use, uncomment next line :
67#-Q- default #BATCH_NUM_PROC_TOT=::JobNumProcTot::
68
69# $Date$
70# $Author$
71# $Revision$
72# IPSL (2006)
73#  This software is governed by the CeCILL licence see libIGCM/libIGCM_CeCILL.LIC
74
75#set -eu
76#set -vx
77
78date
79echo
80echo "#######################################"
81echo "#       ANOTHER GREAT SIMULATION      #"
82echo "#######################################"
83echo
84
85#D--------------------------------------------------------------------==
86#D--------------------------------------------------------------------==
87#D-
88#D-                      Job to launch IGCM models
89#D-
90#D--------------------------------------------------------------------==
91#D--------------------------------------------------------------------==
92#D-
93
94MODIPSL=::modipsl::
95libIGCM=${MODIPSL}/libIGCM
96
97#D--------------------------------------------------------------------==
98#D-                   -1. User modification place
99#D-                      - Job Verbosity
100#D-                      - PeriodNb
101#D--------------------------------------------------------------------==
102
103#D- Increased verbosity (1, 2, 3)
104Verbosity=3
105#D- Number of execution in one job
106PeriodNb=1
107
108#D-
109# --------------------------------------------------------------------
110#D- ! Optionnal features /!\ Use with care !
111# --------------------------------------------------------------------
112
113#D- Low level debug : to bypass lib test checks and stack construction
114#D- Default=true
115DEBUG_debug=false
116
117#D- Set DEBUG_sys to false to disable output calls of function
118#D- Default=true
119#DEBUG_sys=false
120
121#D- Define running directory
122#D- Default=${TMPDIR} ie temporary batch directory
123#RUN_DIR_PATH=/workdir4/rech/ces/rces452/BABATEST/TESTPOST
124
125#D- Define submit directory
126#D- Default= where you launch qsub
127#SUBMIT_DIR=/workdir4/rech/ces/rces452/SCRIPT_V1/modipsl/config/IPSLCM4_v1_OASIS3/EXP01
128
129#D- Turn in dry run mode ? (0,1,2,3)
130#D- Default=0
131#DRYRUN=3
132# YOU MUST COMPILE YOUR EXE FILES FOR DRYRUN MODE !
133# -------------------------------------------------------------------------------------
134# | DRYRUN=  |  Date computations, | sys_Get    |  Exe    | sys_Put_Out; sys_Put_Rest |
135# |          |  Cp/Exe param files |            |  Chmod  |                           |
136# |          |      Qsub           |            |         |                           |
137# -------------------------------------------------------------------------------------
138# |    0     |       yes           |    yes     |  yes    |      yes                  |
139# -------------------------------------------------------------------------------------
140# |    1     |       yes           |    yes     |  yes    |      no                   |
141# -------------------------------------------------------------------------------------
142# |    2     |       yes           |    yes     |  no     |      no                   |
143# -------------------------------------------------------------------------------------
144# |    3     |       yes           |    no      |  no     |      no                   |
145# -------------------------------------------------------------------------------------
146
147#D- Define input file root directory
148#D- Default=/u/rech/ces/rces452/IGCM
149#R_IN=/u/rech/por/rpor111/DATA
150
151#D-
152#D--------------------------------------------------------------------==
153#D-                   0. System Environment
154#D-                      - Define variables for Number of processors
155#D-                      - Define MPI variables
156#D-                      - Define batch scheduler variables
157#D-                      - Source IGCM Library
158#D-                      - Get RESOLution in .resol file (temporary)
159#D--------------------------------------------------------------------==
160
161#D--------------------------------------------------------------------==
162
163. ${libIGCM}/libIGCM_debug/libIGCM_debug.ksh
164       ( ${DEBUG_debug} ) && IGCM_debug_Check
165. ${libIGCM}/libIGCM_card/libIGCM_card.ksh
166       ( ${DEBUG_debug} ) && IGCM_card_Check
167. ${libIGCM}/libIGCM_date/libIGCM_date.ksh
168       ( ${DEBUG_debug} ) && IGCM_date_Check
169#-------
170. ${libIGCM}/libIGCM_sys/libIGCM_sys.ksh
171. ${libIGCM}/libIGCM_config/libIGCM_config.ksh
172. ${libIGCM}/libIGCM_comp/libIGCM_comp.ksh
173. ${libIGCM}/libIGCM_post/libIGCM_post.ksh
174
175#D--------------------------------------------------------------------==
176
177#-- Resolution FLAG for oasis input
178[ -f ${SUBMIT_DIR}/../.resol ] && RESOL=$(cat ${SUBMIT_DIR}/../.resol)
179#RESOL="ORCA2xLMD9671"
180
181#D-
182#D--------------------------------------------------------------------==
183#D-           1. INITIALIZE CONFIGURATION AND THEN COMPONENTS
184#D--------------------------------------------------------------------==
185
186# --------------------------------------------------------------------==
187#D- Initialize configuration :
188#D-              - Simulation configuration
189#D-              - Simulation parameters
190#D-              - Execution parameter
191#D-              - Define input files directory
192#D-              - Read or initialize CumulPeriod
193#D-              - run.card
194#D-
195# --------------------------------------------------------------------==
196IGCM_config_Initialize
197
198# --------------------------------------------------------------------==
199#D- Define, create and cd RUN_DIR
200#D- 
201# --------------------------------------------------------------------==
202RUN_DIR=${RUN_DIR_PATH}/${config_UserChoices_TagName}/${config_UserChoices_JobName}
203IGCM_sys_MkdirWork ${RUN_DIR}
204IGCM_sys_Cd ${RUN_DIR}
205
206# --------------------------------------------------------------------==
207#D- Define REBUILD_DIR :
208#D- where we store files needing rebuild process
209#D- 
210# --------------------------------------------------------------------==
211if [ "${config_Post_RebuildFromArchive}" = "true" ]; then
212    REBUILD_DIR=${R_SAVE}/TMP
213    IGCM_sys_MkdirArchive ${REBUILD_DIR}
214else
215    REBUILD_DIR=\${RUN_DIR}
216fi
217
218# --------------------------------------------------------------------==
219#D- Initialize each components taking part
220#D- into simulation configuration :
221#D-         - Define component executable
222#D-         - Define Write Frequency by component "1M" "1D" ...
223#D-         - Source ${comp}.driver
224#D-         - Define Storage Places by component
225#D-         - ${comp}_Initialize :
226#D-         - Patterns to sed
227#D-         - Variables from namelist
228#D-
229# --------------------------------------------------------------------==
230IGCM_comp_Initialize
231
232# --------------------------------------------------------------------==
233#D- Verify compatibility of period length and write frequencies
234#D-
235# --------------------------------------------------------------------==
236#IGCM_config_Check
237
238#D--------------------------------------------------------------------==
239#D-                  2. ENTER THE DEEP EXECUTION LOOP
240#D-                  !!!! FASTEN YOUR SEAT BELTS !!!!
241#D-                  !!!!!      PLEASE.          !!!!
242#D-                  !! WE WILL CROSS TURBULENCES. !!
243#D--------------------------------------------------------------------==
244
245Period=1
246while [ ${Period} -le ${PeriodNb} ]; do
247
248    echo
249    echo "Starting iteration ${Period} / ${PeriodNb}"
250
251    #D-
252    # ------------------------------------------------------------------
253    #D- COMPUTE AND DEFINE DATE STUFF.
254    # ------------------------------------------------------------------
255    IGCM_config_PeriodStart
256    #D- => ${PeriodDateBegin}
257    #D- => ${PeriodDateEnd}
258    #D- => ${CumulPeriod}
259    #D- => ${DatesPeriod}=${PeriodDateBegin}_${PeriodDateEnd}
260    #D- => ${PeriodLength} => JOURS=31 , 28, 29, 30 ; MOIS=0 ; ANS=0
261    #D- => update run.card value
262   
263    #D-
264    # ------------------------------------------------------------------
265    #D- Get parameters text files updated by job (.def, namelist ...)
266    #D- READ AND USE BY GCM AT EACH EXECUTION.
267    # ------------------------------------------------------------------
268    IGCM_comp_GetInputParametersFiles
269
270    #D-
271    # ------------------------------------------------------------------
272    #D- Get initial state (Etat0, carteveg,relief...)
273    #D- NECESSARY ONLY IF CumulPeriod= (=> NUMERO) == 1
274    #D- AND ???_Restart=NO
275    #D- READ AND USE BY GCM FOR ONLY ONE EXECUTION.
276    # ------------------------------------------------------------------
277    IGCM_comp_GetInputInitialStateFiles
278
279    #D-
280    # ------------------------------------------------------------------
281    #D- Get Boundaries Conditions (SST, WIND[X,Y,Z], LAI ...)
282    #D- READ AND USE BY GCM AT EACH EXECUTION.
283    # ------------------------------------------------------------------
284    IGCM_comp_GetInputBoundaryFiles
285
286    #D-
287    # ------------------------------------------------------------------
288    #D- Get restart files (restartphy.nc, orca_restart.nc ...)
289    #D- READ AND USE BY GCM AT EACH EXECUTION.
290    #D-
291    #D- IF A COMPONENT DO NOT RESTART FROM PREVIOULSY COMPUTED RESTART
292    #D- ONLY IF CumulPeriod= (=> NUMERO) == 1
293    #D- MUST EXECUTE CREATE ETAT0_LIMIT (TYPICALLY LMDZ AND ./create_etat0_limit.e)
294    #D-
295    #D- IF CumulPeriod == 1
296    #D- AND A COMPONENT RESTART FROM PREVIOULSY COMPUTED RESTART
297    #D- MUST BRING THIS RESTART IN ${RUN_DIR_PATH}
298    #D-
299    #D- ELSE BRING RESTART FROM ${JobName} IN ${RUN_DIR_PATH}
300    # ------------------------------------------------------------------
301    IGCM_comp_GetInputRestartFiles
302   
303    #D-
304    # ------------------------------------------------------------------
305    #D- Test if all was right before Update
306    # ------------------------------------------------------------------
307    IGCM_debug_Verif_Exit
308
309    # ------------------------------------------------------------------
310    #D- Activate running environnement variables
311    # ------------------------------------------------------------------
312    IGCM_sys_activ_variables
313
314    #D-
315    # ------------------------------------------------------------------
316    #D- UPDATE ParametersFiles (.def, namelist ...) with
317    #D- current value of (ORCA_NIT00, ORCA_LRSTAR, RAZ_DATE, ...)
318    # ------------------------------------------------------------------
319    IGCM_comp_Update
320
321    #D-
322    # ------------------------------------------------------------------
323    #D- Test if all was right before execution
324    # ------------------------------------------------------------------
325    IGCM_debug_Verif_Exit
326
327    #D-
328    #D----------------------------------------------------------------==
329    #D-                          3. Execution
330    #D----------------------------------------------------------------==
331
332    echo
333    echo "#######################################"
334    echo "#      DIR BEFORE RUN EXECUTION       #"
335    echo "#######################################"
336    echo
337    ls -lrt
338
339    echo "========================================================================"
340    if ( [ X${BATCH_NUM_PROC_TOT} != X ] && [ "${BATCH_NUM_PROC_TOT}" -gt 1 ] ) ; then
341        MPIRUN_COMMAND=${HOST_MPIRUN_COMMAND}
342        eval MPIRUN_OPTIONS=${config_UserChoices_JobRunOptions}
343    else
344        MPIRUN_COMMAND=${MPIRUN_COMMAND:="time "}
345        MPIRUN_OPTIONS=${MPIRUN_OPTIONS:=""}
346    fi
347
348    if [ ${DRYRUN} -le 1 ] ; then
349        REAL_DATE_INIT=$( date )
350        echo "EXECUTION of : ${MPIRUN_COMMAND} ${MPIRUN_OPTIONS} ./${config_Executable_Name} > ${Exe_Output} 2>&1"
351        typeset RET
352        RUN_DATE_BEGIN=$( date '+%Y-%m-%dT%H:%M:%S' )
353        ${MPIRUN_COMMAND} ${MPIRUN_OPTIONS} ./${config_Executable_Name} > ${Exe_Output} 2>&1
354        RET=$?
355        RUN_DATE_END=$( date '+%Y-%m-%dT%H:%M:%S' )
356        if [ ${RET} -gt 0 ] ; then
357            echo "Return code of executable :" ${RET}
358            IGCM_debug_Exit "EXECUTABLE"
359            IGCM_sys_Cp ${Exe_Output} ${SUBMIT_DIR}/${PREFIX}_${Exe_Output}_error
360        fi
361        echo "libIGCM RunDateBegin=${RUN_DATE_BEGIN}"  >> ${Exe_Output}
362        echo "libIGCM RunDateEnd=${RUN_DATE_END}" >> ${Exe_Output}
363    else
364        echo "EXECUTION of : ${MPIRUN_COMMAND} ${MPIRUN_OPTIONS} ./${config_Executable_Name} simulated for DRYRUN = " $DRYRUN
365        if ( $DEBUG_debug ) ; then
366            echo "FOR EXECUTION DRYRUN mode = " $DRYRUN >> stack
367        fi
368    fi
369    echo "========================================================================"
370
371    echo
372    echo "#######################################"
373    echo "#       DIR AFTER RUN EXECUTION       #"
374    echo "#######################################"
375    echo
376    ls -lrt
377
378    #D-
379    # ------------------------------------------------------------------
380    #D- Desactivate running environnement variables
381    # ------------------------------------------------------------------
382    IGCM_sys_desactiv_variables
383
384    #D-
385    #D----------------------------------------------------------------==
386    #D-                    4. Post execution operations
387    #D----------------------------------------------------------------==
388
389    #D-
390    # ------------------------------------------------------------------
391    #D- Save on archive machine netcdf outputs, restarts
392    #D- and text files of models
393    # ------------------------------------------------------------------
394    IGCM_comp_Finalize
395
396    #D-
397    # ------------------------------------------------------------------
398    #D- Test if all was right after Finalize
399    # ------------------------------------------------------------------
400    IGCM_debug_Verif_Exit
401
402    #D-
403    # ------------------------------------------------------------------
404    #D- Launch remote rebuild or/and post-treatment process if necessary
405    # ------------------------------------------------------------------
406    IGCM_post_Configure
407
408    #D-
409    # ------------------------------------------------------------------
410    #D- Save job output
411    #D- Manage executable size to save only different binary
412    #D- Write in run.card user, system and elapse time
413    #D- Check that everything went well ! No ? then we stop.
414    #D- Determine next computed period
415    # ------------------------------------------------------------------
416    IGCM_config_PeriodEnd
417
418    echo "Ending iteration ${Period}"
419    (( Period = Period + 1 ))
420
421    # End loop if date end is reached
422    if [ ${SimulationLengthInDays} -ge ${ExperienceLengthInDays} ] ; then
423        break ;
424    fi
425
426done 
427
428#D-
429#D--------------------------------------------------------------------==
430#D-     5. Submit next job or send mail if simulation over.
431#D--------------------------------------------------------------------==
432IGCM_config_Finalize
433
434date
Note: See TracBrowser for help on using the repository browser.