source: trunk/libIGCM/AA_job @ 1238

Last change on this file since 1238 was 1238, checked in by sdipsl, 9 years ago
  • ins_job (the one from libIGCM) will edit Job headers according to config.card specs. see #96
  • need more testing
  • 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 Revision Author Date
File size: 20.8 KB
Line 
1#-Q- curie #!/bin/ksh
2#-Q- curie ######################
3#-Q- curie ## CURIE   TGCC/CEA ##
4#-Q- curie ######################
5#-Q- curie #MSUB -r ::Jobname::        # Job Name
6#-Q- curie #MSUB -o Script_Output_::Jobname::.000001    # standard output
7#-Q- curie #MSUB -e Script_Output_::Jobname::.000001    # error output
8#-Q- curie #MSUB -eo
9#-Q- curie #MSUB -n ::JobNumProcTot::  # Number of MPI tasks (SPMD case) or cores (MPMD case)
10#-Q- curie #MSUB -c ::openMPthreads::  # Number of openMP threads. To specify only for SMPD
11#-Q- curie #MSUB -x                    # exclusive node. To specify only for MPMD together with the one below
12#-Q- curie #MSUB -E '--cpu_bind=none'
13#-Q- curie #MSUB -T 86400              # Wall clock limit (seconds)
14#-Q- curie #MSUB -q standard           # thin nodes
15#-Q- curie #MSUB -A ::default_project::
16#-Q- curie # Below specific options that can be activated
17#-Q- curie ##MSUB -q ivybridge         # Option for Airain
18
19#-Q- curie
20#-Q- curie BATCH_NUM_PROC_TOT=$BRIDGE_MSUB_NPROC
21#-Q- curie set +x
22#-Q- ada #!/bin/ksh
23#-Q- ada # ######################
24#-Q- ada # ##  ADA       IDRIS ##
25#-Q- ada # ######################
26#-Q- ada # Job name
27#-Q- ada # @ job_name = ::Jobname::
28#-Q- ada # Job type
29#-Q- ada # @ job_type = parallel
30#-Q- ada # Standard output file name
31#-Q- ada # @ output = Script_Output_::Jobname::.000001
32#-Q- ada # Error output file name
33#-Q- ada # @ error = Script_Output_::Jobname::.000001
34#-Q- ada # Total number of tasks
35#-Q- ada # @ total_tasks = ::JobNumProcTot::
36#-Q- ada # @ environment = "BATCH_NUM_PROC_TOT=::JobNumProcTot::" ; wall_clock_limit=$(wall_clock_limit)
37#-Q- ada # Maximum CPU time per task hh:mm:ss
38#-Q- ada # @ wall_clock_limit = 1:00:00
39#-Q- ada # Specific option for OpenMP parallelization: Number of OpenMP threads per MPI task
40#-Q- ada # @ parallel_threads = ::openMPthreads::
41#-Q- ada # End of the header options
42#-Q- ada # @ queue
43#-Q- lxiv8 ######################
44#-Q- lxiv8 ## OBELIX      LSCE ##
45#-Q- lxiv8 ######################
46#-Q- lxiv8 #PBS -N ::Jobname::
47#-Q- lxiv8 #PBS -m a
48#-Q- lxiv8 #PBS -j oe
49#-Q- lxiv8 #PBS -q mediump
50#-Q- lxiv8 #PBS -o Script_Output_::Jobname::.000001
51#-Q- lxiv8 #PBS -S /bin/ksh
52#-Q- lxiv8 #PBS -v BATCH_NUM_PROC_TOT=::JobNumProcTot::
53#-Q- lxiv8 #PBS -l nodes=1:ppn=::JobNumProcTot::
54#-Q- ifort_CICLAD ######################
55#-Q- ifort_CICLAD ##   CICLAD    IPSL ##
56#-Q- ifort_CICLAD ######################
57#-Q- ifort_CICLAD #PBS -N ::Jobname::
58#-Q- ifort_CICLAD #PBS -m a
59#-Q- ifort_CICLAD #PBS -j oe
60#-Q- ifort_CICLAD #PBS -q h12
61#-Q- ifort_CICLAD #PBS -o Script_Output_::Jobname::.000001
62#-Q- ifort_CICLAD #PBS -S /bin/ksh
63#-Q- ifort_CICLAD #PBS -v BATCH_NUM_PROC_TOT=::JobNumProcTot::
64#-Q- ifort_CICLAD #PBS -l nodes=1:ppn=::JobNumProcTot::
65#-Q- default #!/bin/ksh
66#-Q- default ##################
67#-Q- default ## DEFAULT HOST ##
68#-Q- default ##################
69#-Q- default #For MPI use, uncomment next line :
70#-Q- default #BATCH_NUM_PROC_TOT=::JobNumProcTot::
71
72#**************************************************************
73# Author: Sebastien Denvil
74# Contact: Sebastien.Denvil__at__ipsl.jussieu.fr
75# $Revision::                                          $ Revision of last commit
76# $Author::                                            $ Author of last commit
77# $Date::                                              $ Date of last commit
78# IPSL (2006)
79#  This software is governed by the CeCILL licence see libIGCM/libIGCM_CeCILL.LIC
80#
81#**************************************************************
82
83#set -eu
84#set -vx
85
86date
87echo
88echo "#######################################"
89echo "#       ANOTHER GREAT SIMULATION      #"
90echo "#######################################"
91echo
92
93#D--------------------------------------------------------------------==
94#D-
95#D-                      Job to launch IGCM models
96#D-
97#D--------------------------------------------------------------------==
98#D-
99
100MODIPSL=::modipsl::
101libIGCM=${MODIPSL}/libIGCM
102
103#D--------------------------------------------------------------------==
104#D- -1. PLACE FOR USER MODIFICATION
105#D-     - Job Verbosity
106#D-     - PeriodNb
107#D-     - Experience type : DEB(ug), DEV(elopment), RUN
108#D--------------------------------------------------------------------==
109
110#D- Task type (computing or post-processing)
111TaskType=computing
112#D- Increased verbosity (1, 2, 3)
113Verbosity=3
114#D- Experience type : DEB(ug), DEV(elopment), RUN (default)
115JobType=RUN
116#D- Number of execution in one job
117PeriodNb=1
118#-Q- sx9mercure PeriodNb=60
119
120#D-
121#D- --------------------------------------------------------------------------------------------------#
122#D-                          ! OPTIONNAL FEATURES /!\ USE WITH CARE !                                 #
123#D- --------------------------------------------------------------------------------------------------#
124
125
126#D- Low level debug : to perform lib test checks, stack construction and IO functions instrumentation
127#D- Default=true
128#D-
129DEBUG_debug=true
130
131#D- Messaging : all activities and call stacks will be sent to ipsl servers
132#D- If true will imply DEBUG_debug=true
133#D- Default=false
134#D-
135BigBrother=true
136
137#D- Set DEBUG_sys to false to disable output calls of function
138#D- true when JobType=DEB # means DEB(ug)
139#D-
140#DEBUG_sys=false
141
142#D- Define running directory
143#D- Default=${TMPDIR} ie temporary batch directory
144#D-
145#RUN_DIR_PATH=/workdir/or/scratchdir/of/this/machine
146
147#D- Define submit directory
148#D- Default= where you launch qsub (variable from scheduler)
149#D-
150#SUBMIT_DIR=$( pwd )
151
152#D- Define input file root directory
153#D- Default=/IGCMG/common/account/of/this/machine
154#D-
155#R_IN=/u/rech/por/rpor111/DATA
156
157#D- Turn in dry run mode ? (0,1,2,3)
158#D- Default=0
159#D-
160#DRYRUN=3
161#D-# YOU HAVE TO COMPILE YOUR EXE FILES to USE DRYRUN MODE !
162#D-# -------------------------------------------------------------------------------------
163#D-# | DRYRUN=  |  Date computations, | sys_Get    |  Exe    | sys_Put_Out; sys_Put_Rest |
164#D-# |          |  Cp/Exe/param/files |            |         |                           |
165#D-# |          |  Chmod Qsub         |            |         |                           |
166#D-# -------------------------------------------------------------------------------------
167#D-# |    0     |       yes           |    yes     |  yes    |      yes                  |
168#D-# -------------------------------------------------------------------------------------
169#D-# |    1     |       yes           |    yes     |  yes    |      no                   |
170#D-# -------------------------------------------------------------------------------------
171#D-# |    2     |       yes           |    yes     |  no     |      no                   |
172#D-# -------------------------------------------------------------------------------------
173#D-# |    3     |       yes           |    no      |  no     |      no                   |
174#D-# -------------------------------------------------------------------------------------
175
176#D-
177# --------------------------------------------------------------------------------------------------#
178#D- ! END OF OPTIONNAL FEATURES /!\ DO NOT MODIFY ANYTHING BELOW UNLESS YOU KNOW WHAT YOU ARE DOING #
179# --------------------------------------------------------------------------------------------------#
180
181#D-
182#D--------------------------------------------------------------------==
183#D- 0.0 SYSTEM ENVIRONMENT
184#D-     - Define variables for Number of processors
185#D-     - Define MPI variables
186#D-     - Define batch scheduler variables
187#D-     - Source IGCM Library
188#D-     - Get RESOLution in .resol file (temporary)
189#D--------------------------------------------------------------------==
190
191#---------------------------------------------------------------------==
192
193. ${libIGCM}/libIGCM_debug/libIGCM_debug.ksh
194. ${libIGCM}/libIGCM_card/libIGCM_card.ksh
195. ${libIGCM}/libIGCM_date/libIGCM_date.ksh
196#-------
197. ${libIGCM}/libIGCM_sys/libIGCM_sys.ksh
198. ${libIGCM}/libIGCM_config/libIGCM_config.ksh
199. ${libIGCM}/libIGCM_comp/libIGCM_comp.ksh
200. ${libIGCM}/libIGCM_post/libIGCM_post.ksh
201#-------
202( ${DEBUG_debug} ) && IGCM_debug_Check
203( ${DEBUG_debug} ) && IGCM_card_Check
204( ${DEBUG_debug} ) && IGCM_date_Check
205
206#--------------------------------------------------------------------==
207
208#-- Resolution FLAG for oasis input
209#RESOL="ORCA2xLMD9671"
210[ -f ${SUBMIT_DIR}/../.resol ] && RESOL=$(head -1 ${SUBMIT_DIR}/../.resol)
211#-- Chemistrie FLAG to ease chemistries configurations management
212#CHEM="AER"
213[ -f ${SUBMIT_DIR}/../.chimie ] && eval $(grep CHEM ${SUBMIT_DIR}/../.chimie)
214
215#D-
216#D--------------------------------------------------------------------==
217#D- 0.1 COMMON ENVIRONMENT
218#D-     - Read libIGCM compatibility version in config.card
219#D-     - Read UserChoices section
220#D-     - Read Ensemble section
221#D-     - Read Post section
222#D-     - Define all netcdf output directories
223#D--------------------------------------------------------------------==
224IGCM_config_CommonConfiguration ${SUBMIT_DIR}/config.card
225
226if [ ! -r ${SUBMIT_DIR}/run.card ] ; then
227  #================================================#
228  #         The file run.card doesn't exist        #
229  #================================================#
230  FirstInitialize=true
231  #copy initial run.card
232  IGCM_sys_Cp ${SUBMIT_DIR}/run.card.init ${SUBMIT_DIR}/run.card
233  IGCM_debug_Print 2 "run.card copied from run.card.init"
234else
235  FirstInitialize=false
236  IGCM_debug_Print 2 "run.card exists"
237fi
238
239# ------------------------------------------------------------------
240# Activate BigBrother so as to supervise this simulation
241# ------------------------------------------------------------------
242IGCM_debug_BigBro_Initialize
243
244#D-
245#D--------------------------------------------------------------------==
246#D- 1. INITIALIZE CONFIGURATION
247#D-    - Simulation configuration
248#D-    - Simulation parameters
249#D-    - Execution parameter
250#D-    - Define input files directory
251#D-    - Read or initialize CumulPeriod
252#D-    - run.card
253#D--------------------------------------------------------------------==
254IGCM_config_Initialize
255
256# --------------------------------------------------------------------==
257# Define, create and cd RUN_DIR
258# --------------------------------------------------------------------==
259RUN_DIR=${RUN_DIR_PATH}/${config_UserChoices_JobName}.${$}
260IGCM_sys_MkdirWork ${RUN_DIR}
261IGCM_sys_Cd ${RUN_DIR}
262
263# ------------------------------------------------------------------
264# Test if all was right before proceeding further
265# ------------------------------------------------------------------
266IGCM_debug_Verif_Exit
267
268#D-
269#D---------------------------------------------------------------------==
270#D- 2. INITIALIZE ALL COMPONENT OF THE CONFIGURATION
271#D-    - Define component executable
272#D-    - Define Write Frequency by component "1M" "1D" ...
273#D-    - Source ${comp}.driver
274#D-    - Define Storage Places by component
275#D-    - ${comp}_Initialize :
276#D-    - Patterns to sed
277#D-    - Variables from namelist
278#D---------------------------------------------------------------------==
279IGCM_comp_Initialize
280
281#D-
282#D---------------------------------------------------------------------==
283#D- 3. PERFORM GENERAL VERIFICATION
284#D-    - Verify compatibility of period length, write frequencies, ...
285#D-    - Verify compatibility of rebuild choices and post-process choices
286#D-    - Will stop here if something is wrong
287#D---------------------------------------------------------------------==
288IGCM_config_Check
289
290# ------------------------------------------------------------------
291# Test if all was right before entering the period loop
292# ------------------------------------------------------------------
293IGCM_debug_Verif_Exit
294
295#D-
296#D---------------------------------------------------------------------==
297#D- 4. ENTER THE DEEP EXECUTION LOOP
298#D-    ! FASTEN YOUR SEAT BELTS PLEASE. !
299#D-    !   WE WILL CROSS TURBULENCES.   !
300#D---------------------------------------------------------------------==
301
302Period=1
303
304PeriodContinue=false
305if [ ${Period} -le ${PeriodNb} ]; then
306  PeriodContinue=true
307fi
308while ( ${PeriodContinue} ) ; do
309
310  echo
311  echo "Starting iteration ${Period} / ${PeriodNb}"
312
313  #D-
314  # ------------------------------------------------------------------
315  #D-   4.1 COMPUTE AND DEFINE DATE INFORMATION.
316  #D-       - ${PeriodDateBegin}
317  #D-       - ${PeriodDateEnd}
318  #D-       - ${CumulPeriod}
319  #D-       - ${DatesPeriod}=${PeriodDateBegin}_${PeriodDateEnd}
320  #D-       - ${PeriodLength} => JOURS=31 , 28, 29, 30 ; MOIS=0 ; ANS=0
321  #D-       - update run.card value
322  # ------------------------------------------------------------------
323  IGCM_config_PeriodStart
324
325  #D-
326  # ------------------------------------------------------------------
327  #D-   4.2 BEGIN COMPUTATION ONLY IF NEEDED
328  # ------------------------------------------------------------------
329  if [ ${SimulationLengthInDays} -gt ${ExperienceLengthInDays} ] ; then
330    IGCM_debug_Print 1 "break because '${SimulationLengthInDays} -gt ${ExperienceLengthInDays}' : ${SimulationLengthInDays} -gt ${ExperienceLengthInDays}"
331    break ;
332  fi
333
334  #D-
335  # ------------------------------------------------------------------
336  #D-   4.3 CALL OPTIONNAL FUNCTION WITHIN DRIVER
337  #D-       - to set special variables used in lists (Param, Init or Bc).
338  # ------------------------------------------------------------------
339  IGCM_comp_PeriodStart
340
341  #D-
342  # ------------------------------------------------------------------
343  #D-   4.4 GET PARAMETERS TEXT FILES UPDATED BY JOB
344  #D-       - (.def, namelist ...)
345  #D-       - READ AND USE BY GCM AT EACH EXECUTION.
346  # ------------------------------------------------------------------
347  IGCM_comp_GetInputParametersFiles
348
349  #D-
350  # ------------------------------------------------------------------
351  #D-   4.5 GET INITIAL STATE
352  #D-       - (Etat0, carteveg,relief...)
353  #D-       - NECESSARY ONLY IF CumulPeriod= (=> NUMERO) == 1
354  #D-       - AND ???_Restart=NO
355  #D-       - READ AND USE BY GCM FOR ONLY ONE EXECUTION.
356  # ------------------------------------------------------------------
357  IGCM_comp_GetInputInitialStateFiles
358
359  #D-
360  # ------------------------------------------------------------------
361  #D-   4.6 GET BOUNDARIES CONDITIONS
362  #D-       - (SST, WIND[X,Y,Z], LAI ...)
363  #D-       - READ AND USE BY GCM AT EACH EXECUTION.
364  # ------------------------------------------------------------------
365  IGCM_comp_GetInputBoundaryFiles
366
367  #D-
368  # ------------------------------------------------------------------
369  #D-   4.7 GET SmoothFiles CONDITIONS
370  #D-       - (SST, WIND[X,Y,Z], LAI ...)
371  #D-       - READ AND USE BY GCM AT EACH EXECUTION
372  #D-       - Do not change at each ${Period}
373  # ------------------------------------------------------------------
374  IGCM_comp_GetInputSmoothFiles
375
376  #D-
377  # ------------------------------------------------------------------
378  #D-   4.8 GET RESTART FILES
379  #D-       - (restartphy.nc, orca_restart.nc ...)
380  #D-       - READ AND USE BY GCM AT EACH EXECUTION.
381  #D-
382  #D-       - IF A COMPONENT DO NOT RESTART FROM PREVIOULSY COMPUTED RESTART
383  #D-       - ONLY IF CumulPeriod= (=> NUMERO) == 1
384  #D-       - MUST EXECUTE CREATE ETAT0_LIMIT (TYPICALLY LMDZ AND ./create_etat0_limit.e)
385  #D-
386  #D-       - IF CumulPeriod == 1
387  #D-       - AND A COMPONENT RESTART FROM PREVIOULSY COMPUTED RESTART
388  #D-       - MUST BRING THIS RESTART IN ${RUN_DIR_PATH}
389  #D-
390  #D-       - ELSE BRING RESTART FROM ${JobName} IN ${RUN_DIR_PATH}
391  # ------------------------------------------------------------------
392  IGCM_comp_GetInputRestartFiles
393
394  # ------------------------------------------------------------------
395  # Test if all was right before Update
396  # ------------------------------------------------------------------
397  IGCM_debug_Verif_Exit
398
399  #D-
400  # ------------------------------------------------------------------
401  #D-   4.9 ACTIVATE RUNNING ENVIRONNEMENT VARIABLES
402  # ------------------------------------------------------------------
403  IGCM_sys_activ_variables
404
405  #D-
406  # ------------------------------------------------------------------
407  #D-   4.10 UPDATE ParametersFiles
408  #D-        - (.def, namelist ...)
409  #D-        - with current value of (ORCA_NIT00, ORCA_LRSTAR, RAZ_DATE, ...)
410  # ------------------------------------------------------------------
411  IGCM_comp_Update
412
413  # ------------------------------------------------------------------
414  # Test if all was right before execution
415  # ------------------------------------------------------------------
416  IGCM_debug_Verif_Exit
417
418  #D-
419  #D---------------------------------------------------------------------==
420  #D- 5. EXECUTION
421  #D---------------------------------------------------------------------==
422
423  echo
424  echo "#######################################"
425  echo "#      DIR BEFORE RUN EXECUTION       #"
426  echo "#######################################"
427  echo
428  ls -lrt
429
430  echo "========================================================================"
431  if [ ${DRYRUN} -le 1 ] ; then
432    REAL_DATE_INIT=$( date )
433    echo                                                                                   > ${Exe_Output}
434    echo "#######################################"                                        >> ${Exe_Output}
435    echo "EXECUTION of : ${EXECUTION}"
436    echo "EXECUTION of : ${EXECUTION}"                                                    >> ${Exe_Output}
437    echo                                                                                  >> ${Exe_Output}
438    typeset RET
439    RUN_DATE_BEGIN=$( date '+%Y-%m-%dT%H:%M:%S' )
440    ${EXECUTION}  >> ${Exe_Output} 2>&1
441    RET=$?
442    RUN_DATE_END=$( date '+%Y-%m-%dT%H:%M:%S' )
443    if [ ${RET} -gt 0 ] ; then
444      echo "Return code of executable :" ${RET}
445      IGCM_debug_Exit "EXECUTABLE"
446      IGCM_sys_Mkdir ${SUBMIT_DIR}/Debug
447      IGCM_sys_Cp ${Exe_Output} ${SUBMIT_DIR}/Debug/${PREFIX}_${Exe_Output}_error
448      ExecutionFail=true
449    fi
450    echo                                            >> ${Exe_Output}
451    echo "#######################################"  >> ${Exe_Output}
452    echo "libIGCM RunDateBegin=${RUN_DATE_BEGIN}"   >> ${Exe_Output}
453    echo "libIGCM RunDateEnd=${RUN_DATE_END}"       >> ${Exe_Output}
454    echo                                            >> ${Exe_Output}
455  else
456    echo "EXECUTION of : ${EXECUTION} simulated for DRYRUN = " $DRYRUN
457    echo "EXECUTION of : ${EXECUTION} simulated for DRYRUN = " $DRYRUN > ${Exe_Output}
458    if ( $DEBUG_debug ) ; then
459      echo "FOR EXECUTION DRYRUN mode = " $DRYRUN >> stack
460    fi
461  fi
462  echo "========================================================================"
463
464  echo
465  echo "#######################################"
466  echo "#       DIR AFTER RUN EXECUTION       #"
467  echo "#######################################"
468  echo
469  ls -lrt
470
471  #D-
472  #D---------------------------------------------------------------------==
473  #D- 6. POST EXECUTION OPERATIONS
474  #D---------------------------------------------------------------------==
475
476  #D-
477  # ------------------------------------------------------------------
478  #D-   6.1. DESACTIVATE RUNNING ENVIRONNEMENT VARIABLES
479  # ------------------------------------------------------------------
480  IGCM_sys_desactiv_variables
481
482  #D-
483  # ------------------------------------------------------------------
484  #D-   6.2. SAVE OUTPUTS
485  #D-        - On archive/storage machine
486  #D-        - netcdf outputs, restarts and text files of models
487  # ------------------------------------------------------------------
488  IGCM_comp_Finalize
489
490  # ------------------------------------------------------------------
491  # Test if all was right after Finalize
492  # ------------------------------------------------------------------
493  IGCM_debug_Verif_Exit
494
495  #D-
496  # ------------------------------------------------------------------
497  #D-   6.3. CONFIGURE POST-PROCESSING
498  #D-        - asynchronous post-treatment (Level 0) when necessary (rebuild/pack)
499  #D-        - classic post-treatment      (Level 1) when necessary (TimeSeries/Seasonal)
500  # ------------------------------------------------------------------
501  IGCM_post_Configure
502
503  #D-
504  # ------------------------------------------------------------------
505  #D-   6.4. SUBMIT POST-PROCESSING
506  #D-        - remote rebuild or/and post-treatment process if necessary
507  # ------------------------------------------------------------------
508  IGCM_post_Submit
509
510  #D-
511  # ------------------------------------------------------------------
512  #D-   6.5. FINALYZE CURRENT LOOP AND PREPARE NEXT ONE
513  #D-        - Manage executable size to save only different binary
514  #D-        - Write in run.card user, system and elapse time
515  #D-        - Check that everything went well ! No ? then we stop.
516  #D-        - Determine next computed period
517  # ------------------------------------------------------------------
518  IGCM_config_PeriodEnd
519
520  echo "Ending iteration ${Period}"
521  (( Period = Period + 1 ))
522
523  # End loop if date end is reached
524  if [ ${SimulationLengthInDays} -ge ${ExperienceLengthInDays} ] ; then
525    break ;
526  fi
527
528  PeriodContinue=false
529  if [ ${Period} -le ${PeriodNb} ]; then
530    PeriodContinue=true
531  fi
532done
533
534#D-
535#D---------------------------------------------------------------------==
536#D- 7. SUBMIT NEXT JOB OR SEND MAIL IF SIMULATION IS OVER.
537#D---------------------------------------------------------------------==
538IGCM_config_Finalize
539
540date
Note: See TracBrowser for help on using the repository browser.