source: tags/libIGCM_v1_6/AA_job @ 1456

Last change on this file since 1456 was 281, checked in by mmaipsl, 14 years ago

Add obelix headers.

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