source: trunk/libIGCM/libIGCM_post/libIGCM_post.ksh @ 544

Last change on this file since 544 was 544, checked in by sdipsl, 12 years ago
  • Prepare libIGCM for TGCC migration. For now work for CCRT machines ONLY
  • SX8, SX9 and Titane are independant from DMNFS
    • 30 seconds between execution instead of at least 3 minutes ; sometimes hours
  • SX8, SX9 and Titane use their SCRATCHDIR as a BUFFER (for restart and text)
  • Titane simulations are entirely post-processed on titane mono
    • Working except create_se and atlas (missing software : ncap2, openpbm, ImageMagick?)
  • Cards are the same up to now
  • New indentation to ease readability ("svn diff -x -b" to ignore space when differencing)
  • Project (gen2211) is inherited from AA_job by post-processing jobs
    • will stop during config_check if Project is empty
  • Prepare easy switching (submitting post-processing here or there)
  • Homogenize CCRTs libIGCM_sys
  • Bugfixes
  • Cosmetics

First steps and still a long way to go.

  • 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: 33.6 KB
Line 
1#!/bin/ksh
2
3#**************************************************************
4# Author: Sebastien Denvil
5# Contact: Sebastien.Denvil__at__ipsl.jussieu.fr
6# $Revision::                                          $ Revision of last commit
7# $Author::                                            $ Author of last commit
8# $Date::                                              $ Date of last commit
9# IPSL (2006)
10#  This software is governed by the CeCILL licence see libIGCM/libIGCM_CeCILL.LIC
11#
12#**************************************************************
13
14#=======================================================================
15
16function IGCM_post_Configure
17{
18  IGCM_debug_PushStack "IGCM_post_Configure"
19
20  # Debug Print :
21  echo
22  IGCM_debug_Print 1 "IGCM_post_Configure"
23  #
24  # Initialize
25  #
26  POST=false
27  RebuildFrequency=false
28  TimeSeriesFrequency=false
29  SeasonalFrequency=false
30  #
31  # ONLY IF SOMETHING NEEDS TO BE DONE (EATHER TIME SERIES OR SEASONAL) COMPUTE THE MODULOS
32  #
33  if [ X${AsynchronousRebuild} = Xtrue ] ; then
34    list_post="RebuildFrequency"
35  fi
36  #
37  if ( [ X${TimeSeries} = Xtrue ] || [ X${TimeSeries2D} = Xtrue ] || [ X${TimeSeries3D} = Xtrue ] ) ; then
38    list_post="${list_post} TimeSeriesFrequency"
39  fi
40  #
41  if [ X${Seasonal} = Xtrue ] ; then
42    list_post="${list_post} SeasonalFrequency"
43  fi
44
45  # Overrule special cases
46  if ( [ ! X${config_Post_TimeSeriesFrequency} = X${NULL_STR} ] && \
47    [ ! X${config_Post_TimeSeriesFrequency} = XNONE ]        && \
48    [ ${SimulationLengthInDays} -ge ${ExperienceLengthInDays} ] ) ; then
49    TimeSeriesFrequency=true
50    POST=true
51  fi
52  #
53  if ( [ ! X${config_Post_RebuildFrequency} = X${NULL_STR} ] && \
54    [ ! X${config_Post_RebuildFrequency} = XNONE ]        && \
55    [ ${SimulationLengthInDays} -ge ${ExperienceLengthInDays} ] ) ; then
56    RebuildFrequency=true
57    POST=true
58  fi
59
60  # READ REBUILD OR TIME SERIES OR SEASONAL FREQUENCY
61  # AND TURN ON THE SUBMISSION FLAG WHEN MODULO IS ZERO
62  for post_freq in ${list_post} ; do
63    # Extract frequency from previously defined variable
64    config_Post_post_freq=$( eval echo \${config_Post_${post_freq}} )
65    # Offset for Seasonal Average starting period
66    if [ ${post_freq} = SeasonalFrequency ] ; then
67      if ( [ X${config_Post_SeasonalFrequencyOffset} = X${NULL_STR} ] || [ X${config_Post_SeasonalFrequencyOffset} = XNONE ] || [ X${config_Post_SeasonalFrequencyOffset} = X ] ) ; then
68        PeriodOffset=0
69      else
70        PeriodOffset=${config_Post_SeasonalFrequencyOffset}
71      fi
72    else
73      PeriodOffset=0
74    fi
75    # Compute Modulo between frequencys (/!\second argument will be multiplied by CumuPeriod/!\)
76    # RebuildFrequency needs additionnal information
77    if [ ${post_freq} = RebuildFrequency ] ; then
78      IGCM_post_ModuloRuntimeFrequency config_Post_post_freq config_UserChoices_PeriodLength NbRebuildDir
79    else
80      IGCM_post_ModuloRuntimeFrequency config_Post_post_freq config_UserChoices_PeriodLength
81    fi
82    #
83    IGCM_debug_Print 1 "${post_freq} flag value : ${RebuildFrequency}"
84  done
85  #
86  IGCM_debug_Print 2 "POST-TREATEMENT flag value : ${POST}"
87  #
88  IGCM_debug_PopStack "IGCM_post_Configure"
89}
90
91function IGCM_post_Submit
92{
93  IGCM_debug_PushStack "IGCM_post_Submit"
94
95  typeset listVarEnv
96
97  POST_DIR=${R_OUT_POST}/${config_UserChoices_TagName}/${config_UserChoices_JobName}
98
99  if [ ${POST} = true ]; then
100    echo
101    IGCM_debug_Print 1 "IGCM_post_Submit"
102    echo
103    IGCM_debug_Print 2 "POST_DIR = ${POST_DIR}"
104  fi
105
106  #============ TIME SERIES POST-TREATMENT ===========#
107  if [ ${TimeSeriesFrequency} = true ] ; then
108
109    IGCM_debug_Print 1 "TIME SERIES POST-PROCESSING ACTIVATED"
110    echo
111
112
113
114    # Get information from last execution
115    IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card PostProcessing TimeSeriesCompleted
116    CompletedFlag=${run_PostProcessing_TimeSeriesCompleted}
117    #
118
119
120
121    listVarEnv="DEBUG_debug,MODIPSL,libIGCM,libIGCM_SX,SUBMIT_DIR,POST_DIR,MASTER,RebuildFrequency,DateBegin,PeriodDateEnd,StandAlone,CompletedFlag,TsTask,CompToRead,FlagToRead,RESOL_ATM,RESOL_OCE,RESOL_ICE,RESOL_MBG,RESOL_SRF,RESOL_SBG"
122    #
123    jLoop=${#ListDimension[*]}
124    j=0
125    until [ $j -ge ${jLoop} ]; do
126      Dimension=${ListDimension[${j}]}
127      #
128      if [ X$( eval echo \${TimeSeries${Dimension}} ) = Xtrue ] ; then
129        #
130        IGCM_debug_Print 1 "TIME SERIES POST-PROCESSING ${Dimension} ACTIVATED"
131        echo
132        #
133        if [ X${Dimension} = X ] ; then
134          TsTask="empty"
135          Script_Post_Output=create_ts.${PeriodDateEnd}
136        else
137          TsTask=${Dimension}
138          Script_Post_Output=create_ts.${PeriodDateEnd}.${TsTask}
139        fi
140        #
141        if [ ${RebuildFrequency} = true ] ; then
142          #
143          if [ -f ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh ] ; then
144#           if [ X${MASTER} = Xtitane ] ; then
145#             echo "IGCM_sys_RshPost <<-EOF"                       >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
146#           fi
147            echo "export DEBUG_debug=${DEBUG_debug}              " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
148            echo "export MODIPSL=${MODIPSL}                      " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
149            echo "export libIGCM_SX=${libIGCM}                   " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
150            echo "export libIGCM=${libIGCM_POST}                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
151            echo "export SUBMIT_DIR=${SUBMIT_DIR}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
152            echo "export POST_DIR=${POST_DIR}                    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
153            echo "export MASTER=${MASTER}                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
154            echo "export RebuildFrequency=${RebuildFrequency}    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
155            echo "export DateBegin=${DateBegin}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
156            echo "export PeriodDateEnd=${PeriodDateEnd}          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
157            echo "export StandAlone=false                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
158            echo "export CompletedFlag=${CompletedFlag}          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
159            echo "export TsTask=${TsTask}                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
160            echo "unset  CompToRead                              " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
161            echo "unset  FlagToRead                              " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
162            echo "export RESOL_ATM=${RESOL_ATM}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
163            echo "export RESOL_OCE=${RESOL_OCE}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
164            echo "export RESOL_ICE=${RESOL_ICE}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
165            echo "export RESOL_MBG=${RESOL_MBG}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
166            echo "export RESOL_SRF=${RESOL_SRF}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
167            echo "export RESOL_SBG=${RESOL_SBG}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
168            echo "export listVarEnv=${listVarEnv}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
169            echo "export Script_Post_Output=${Script_Post_Output}" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
170#           if [ X${MASTER} = Xtitane ] ; then
171#             echo ". ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
172#             echo ". ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh"     >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
173#           fi
174            echo "IGCM_sys_MkdirWork ${POST_DIR}                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
175            echo "IGCM_debug_Verif_Exit_Post                     " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
176            echo "IGCM_sys_QsubPost create_ts                    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
177#           if [ X${MASTER} = Xtitane ] ; then
178#             echo "EOF"                                           >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
179#           fi
180          fi
181        else
182          IGCM_sys_RshPost <<-EOF
183                    export DEBUG_debug=${DEBUG_debug}
184                    export MODIPSL=${MODIPSL}
185                    export libIGCM_SX=${libIGCM}
186                    export libIGCM=${libIGCM_POST}
187                    export SUBMIT_DIR=${SUBMIT_DIR}
188                    export POST_DIR=${POST_DIR}
189                    export MASTER=${MASTER}
190                    export RebuildFrequency=${RebuildFrequency}
191                    export DateBegin=${DateBegin}
192                    export PeriodDateEnd=${PeriodDateEnd}
193                    export StandAlone=false
194                    export CompletedFlag=${CompletedFlag}
195                    export TsTask=${TsTask}
196                    unset  CompToRead
197                    unset  FlagToRead
198                    export RESOL_ATM=${RESOL_ATM}
199                    export RESOL_OCE=${RESOL_OCE}
200                    export RESOL_ICE=${RESOL_ICE}
201                    export RESOL_MBG=${RESOL_MBG}
202                    export RESOL_SRF=${RESOL_SRF}
203                    export RESOL_SBG=${RESOL_SBG}
204                    export listVarEnv=${listVarEnv}
205                    export Script_Post_Output=${Script_Post_Output}
206                    . ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh
207                    . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh
208                    IGCM_sys_MkdirWork ${POST_DIR}
209                    IGCM_debug_Verif_Exit_Post
210                    IGCM_sys_QsubPost create_ts
211EOF
212        fi
213      fi
214      #
215      if [ X$( eval echo \${TimeSeriesChunck${Dimension}} ) = Xtrue ] ; then
216        #
217        IGCM_debug_Print 1 "TIME SERIES POST-PROCESSING ${Dimension} WITH CHUNCK ACTIVATED"
218        echo
219        # Need to Remember This One
220        SavedDateBegin=${DateBegin}
221        # Kind of task create_ts will perform
222        TsTask=Chunck${Dimension}
223        # Number of chunck jobs to configure and submit
224        eval NbJob=\${#CHUNCK${Dimension}_COMP[@]}
225        typeset i
226        i=0
227        until [ $i -ge $NbJob ]; do
228          CompToRead=$( eval echo \${CHUNCK${Dimension}_COMP[\${i}]} )
229          FlagToRead=$( eval echo \${CHUNCK${Dimension}_FLAG[\${i}]} )
230          NameToRead=$( eval echo \${CHUNCK${Dimension}_NAME[\${i}]} )
231          ChunckSize=$( eval echo \${CHUNCK${Dimension}_SIZE[\${i}]} )
232          # Chunck Length (mandatory in Year)
233          YearsChunckLength=$( echo ${ChunckSize} | sed -e "s/[yY]//" )
234          #
235          IGCM_date_GetYearMonth ${DateBegin}     YearBegin MonthBegin
236          #
237          IGCM_date_GetYearMonth ${PeriodDateEnd} YearEnd   MonthEnd
238          # How many chunck in total since simulation began
239          NbYearsChunckLoop=$(( ( ${YearEnd} - ${YearBegin} + 1 ) / ${YearsChunckLength} ))
240          #  Tweak special case
241          [ $(( ( ${YearEnd} - ${YearBegin} + 1 ) % ${YearsChunckLength} )) = 0 ] && NbYearsChunckLoop=$(( ${NbYearsChunckLoop} - 1 ))
242          # Starting Year of the current chunck
243          ChunckTsYearBegin=$(( ${NbYearsChunckLoop} *  ${YearsChunckLength} + ${YearBegin} ))
244          # Starting date of the current chunck
245          ChunckTsDateBegin=${ChunckTsYearBegin}${MonthBegin}01
246          #
247          Script_Post_Output=create_ts.${PeriodDateEnd}.${TsTask}.${CompToRead}.${NameToRead}
248          #
249          if [ ${RebuildFrequency} = true ] ; then
250            #
251            if [ -f ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh ] ; then
252#             if [ X${MASTER} = Xtitane ] ; then
253#               echo "IGCM_sys_RshPost <<-EOF"                       >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
254#             fi
255              echo "export DEBUG_debug=${DEBUG_debug}              " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
256              echo "export MODIPSL=${MODIPSL}                      " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
257              echo "export libIGCM_SX=${libIGCM}                   " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
258              echo "export libIGCM=${libIGCM_POST}                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
259              echo "export SUBMIT_DIR=${SUBMIT_DIR}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
260              echo "export POST_DIR=${POST_DIR}                    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
261              echo "export MASTER=${MASTER}                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
262              echo "export RebuildFrequency=${RebuildFrequency}    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
263              echo "export DateBegin=${ChunckTsDateBegin}          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
264              echo "export PeriodDateEnd=${PeriodDateEnd}          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
265              echo "export StandAlone=false                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
266              echo "export CompletedFlag=${CompletedFlag}          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
267              echo "export TsTask=${TsTask}                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
268              echo "export CompToRead=${CompToRead}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
269              echo "export FlagToRead=${FlagToRead}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
270              echo "export RESOL_ATM=${RESOL_ATM}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
271              echo "export RESOL_OCE=${RESOL_OCE}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
272              echo "export RESOL_ICE=${RESOL_ICE}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
273              echo "export RESOL_MBG=${RESOL_MBG}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
274              echo "export RESOL_SRF=${RESOL_SRF}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
275              echo "export RESOL_SBG=${RESOL_SBG}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
276              echo "export listVarEnv=${listVarEnv}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
277              echo "export Script_Post_Output=${Script_Post_Output}" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
278#             if [ X${MASTER} = Xtitane ] ; then
279#               echo ". ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
280#               echo ". ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh"     >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
281#             fi
282              echo "IGCM_sys_MkdirWork ${POST_DIR}                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
283              echo "IGCM_debug_Verif_Exit_Post                     " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
284              echo "IGCM_sys_QsubPost create_ts                    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
285#             if [ X${MASTER} = Xtitane ] ; then
286#               echo "EOF"                                           >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
287#             fi
288            fi
289          else
290            IGCM_sys_RshPost <<-EOF
291                        export DEBUG_debug=${DEBUG_debug}
292                        export MODIPSL=${MODIPSL}
293                        export libIGCM_SX=${libIGCM}
294                        export libIGCM=${libIGCM_POST}
295                        export SUBMIT_DIR=${SUBMIT_DIR}
296                        export POST_DIR=${POST_DIR}
297                        export MASTER=${MASTER}
298                        export RebuildFrequency=${RebuildFrequency}
299                        export DateBegin=${ChunckTsDateBegin}
300                        export PeriodDateEnd=${PeriodDateEnd}
301                        export StandAlone=false
302                        export CompletedFlag=${CompletedFlag}
303                        export TsTask=${TsTask}
304                        export CompToRead=${CompToRead}
305                        export FlagToRead=${FlagToRead}
306                        export RESOL_ATM=${RESOL_ATM}
307                        export RESOL_OCE=${RESOL_OCE}
308                        export RESOL_ICE=${RESOL_ICE}
309                        export RESOL_MBG=${RESOL_MBG}
310                        export RESOL_SRF=${RESOL_SRF}
311                        export RESOL_SBG=${RESOL_SBG}
312                        export listVarEnv=${listVarEnv}
313                        export Script_Post_Output=${Script_Post_Output}
314                        . ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh
315                        . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh
316                        IGCM_sys_MkdirWork ${POST_DIR}
317                        IGCM_debug_Verif_Exit_Post
318                        IGCM_sys_QsubPost create_ts
319EOF
320          #
321          fi
322          #
323          export DateBegin=${SavedDateBegin}
324          #
325          (( i=i+1 ))
326          #
327        done
328      fi
329      (( j=j+1 ))
330    done
331  fi
332
333  #=============  SEASONAL POST-TREATMENT ============#
334  if [ ${SeasonalFrequency} = true ] ; then
335    #
336    IGCM_debug_Print 1 "SEASONNAL POST-TREATMENT"
337    echo
338    #
339    Script_Post_Output=create_se.${PeriodDateEnd}
340    #
341    listVarEnv="DEBUG_debug,MODIPSL,libIGCM,libIGCM_SX,SUBMIT_DIR,POST_DIR,MASTER,RebuildFrequency,DateBegin,PeriodDateEnd,StandAlone,RESOL_ATM,RESOL_OCE,RESOL_ICE,RESOL_MBG,RESOL_SRF,RESOL_SBG"
342
343    if [ ${RebuildFrequency} = true ] ; then
344      #
345      if [ -f ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh ] ; then
346        #
347#       if [ X${MASTER} = Xtitane ] ; then
348#         echo "IGCM_sys_RshPost <<-EOF"                     >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
349#       fi
350        echo "export DEBUG_debug=${DEBUG_debug}              " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
351        echo "export MODIPSL=${MODIPSL}                      " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
352        echo "export libIGCM_SX=${libIGCM}                   " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
353        echo "export libIGCM=${libIGCM_POST}                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
354        echo "export SUBMIT_DIR=${SUBMIT_DIR}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
355        echo "export POST_DIR=${POST_DIR}                    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
356        echo "export MASTER=${MASTER}                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
357        echo "export RebuildFrequency=${RebuildFrequency}    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
358        echo "export DateBegin=${DateBegin}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
359        echo "export PeriodDateEnd=${PeriodDateEnd}          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
360        echo "export StandAlone=false                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
361        echo "export RESOL_ATM=${RESOL_ATM}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
362        echo "export RESOL_OCE=${RESOL_OCE}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
363        echo "export RESOL_ICE=${RESOL_ICE}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
364        echo "export RESOL_MBG=${RESOL_MBG}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
365        echo "export RESOL_SRF=${RESOL_SRF}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
366        echo "export RESOL_SBG=${RESOL_SBG}                  " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
367        echo "export listVarEnv=${listVarEnv}                " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
368        echo "export Script_Post_Output=${Script_Post_Output}" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
369#       if [ X${MASTER} = Xtitane ] ; then
370#         echo ". ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
371#         echo ". ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh"     >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
372#       fi
373        echo "IGCM_sys_MkdirWork ${POST_DIR}                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
374        echo "IGCM_debug_Verif_Exit_Post                     " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
375        echo "IGCM_sys_QsubPost create_se                    " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
376#       if [ X${MASTER} = Xtitane ] ; then
377#         echo "EOF"                                         >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
378#       fi
379      fi
380    else
381      IGCM_sys_RshPost <<-EOF
382            export DEBUG_debug=${DEBUG_debug}
383            export MODIPSL=${MODIPSL}
384            export libIGCM_SX=${libIGCM}
385            export libIGCM=${libIGCM_POST}
386            export SUBMIT_DIR=${SUBMIT_DIR}
387            export POST_DIR=${POST_DIR}
388            export MASTER=${MASTER}
389            export RebuildFrequency=${RebuildFrequency}
390            export DateBegin=${DateBegin}
391            export PeriodDateEnd=${PeriodDateEnd}
392            export StandAlone=false
393            export RESOL_ATM=${RESOL_ATM}
394            export RESOL_OCE=${RESOL_OCE}
395            export RESOL_ICE=${RESOL_ICE}
396            export RESOL_MBG=${RESOL_MBG}
397            export RESOL_SRF=${RESOL_SRF}
398            export RESOL_SBG=${RESOL_SBG}
399            export listVarEnv=${listVarEnv}
400            export Script_Post_Output=${Script_Post_Output}
401            . ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh
402            . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh
403            IGCM_sys_MkdirWork ${POST_DIR}
404            IGCM_debug_Verif_Exit_Post
405            IGCM_sys_QsubPost create_se
406EOF
407    fi
408  fi
409
410  #============== REBUILD POST-TREATMENT =============#
411  if ( [ ! X${config_Post_RebuildFrequency} = X${NULL_STR} ] && [ ! X${config_Post_RebuildFrequency} = XNONE ] ) ; then
412    # -----------------------------------------------------------------------------------
413    # Function IGCM_FlushRebuild define in rebuild.ksh has not been closed yet. Do it now
414    # -----------------------------------------------------------------------------------
415    if [ ${DRYRUN} -le 1 ] ; then
416      echo "IGCM_debug_PopStack \"IGCM_FlushRebuild\" " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
417      echo "}                                         " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh
418    fi
419    if [ ${config_Post_RebuildFromArchive} = true ] ; then
420      IGCM_sys_Put_Dir REBUILD_${PeriodDateBegin} ${REBUILD_DIR}
421    else
422      IGCM_sys_Mv      REBUILD_${PeriodDateBegin} ${REBUILD_DIR}
423    fi
424  fi
425  #
426  if [ ${RebuildFrequency} = true ] ; then
427    if ( [ ${config_Post_RebuildFromArchive} = true ] ) ; then
428      IGCM_debug_Print 1 "REBUILD POST-TREATMENT FROM ARCHIVE"
429      echo
430      #
431      script=rebuild_fromArchive
432    else
433      IGCM_debug_Print 1 "REBUILD POST-TREATMENT FROM WORKDIR"
434      echo
435      #
436      script=rebuild_fromWorkdir
437    fi
438    #
439    Script_Post_Output=${script}.${PeriodDateEnd}
440    #
441    listVarEnv="DEBUG_debug,MODIPSL,libIGCM,libIGCM_SX,SUBMIT_DIR,REBUILD_DIR,POST_DIR,MASTER,RebuildFromArchive,DateBegin,PeriodDateBegin,PeriodDateEnd,NbRebuildDir,StandAlone,RESOL_ATM,RESOL_OCE,RESOL_ICE,RESOL_MBG,RESOL_SRF,RESOL_SBG"
442    IGCM_sys_RshPost <<-EOF
443    export DEBUG_debug=${DEBUG_debug}
444    export MODIPSL=${MODIPSL}
445    export libIGCM_SX=${libIGCM}
446    export libIGCM=${libIGCM_POST}
447    export SUBMIT_DIR=${SUBMIT_DIR}
448    export REBUILD_DIR=${REBUILD_DIR}
449    export POST_DIR=${POST_DIR}
450    export MASTER=${MASTER}
451    export RebuildFromArchive=${config_Post_RebuildFromArchive}
452    export DateBegin=${DateBegin}
453    export PeriodDateBegin=${PeriodDateBegin}
454    export PeriodDateEnd=${PeriodDateEnd}
455    export NbRebuildDir=${NbRebuildDir}
456    export StandAlone=false
457    export RESOL_ATM=${RESOL_ATM}
458    export RESOL_OCE=${RESOL_OCE}
459    export RESOL_ICE=${RESOL_ICE}
460    export RESOL_MBG=${RESOL_MBG}
461    export RESOL_SRF=${RESOL_SRF}
462    export RESOL_SBG=${RESOL_SBG}
463    export listVarEnv=${listVarEnv}
464    export Script_Post_Output=${Script_Post_Output}
465    . ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh
466    . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh
467    IGCM_sys_MkdirWork ${POST_DIR}
468    IGCM_debug_Verif_Exit_Post
469    IGCM_sys_QsubPost ${script}
470EOF
471  fi
472
473  IGCM_debug_PopStack "IGCM_post_Submit"
474}
475
476#===================================
477function IGCM_post_CheckModuloFrequency
478{
479  IGCM_debug_PushStack "IGCM_post_CheckModuloFrequency" $*
480
481  # Used by IGCM_config_Check
482  # from 2 libIGCM compatible frequency (*Y, *M, *D, *y, *m, *d)
483  # Issue an exit instruction IGCM_debug_Exit if there modulo is not zero
484  # Input parameter are the name of the variable, not the frequency value itself
485  # example
486  # IGCM_post_ModuloFrequency config_Post_RebuildFrequency config_UserChoices_PeriodLength
487
488  typeset MasterName SlaveName MasterFrequency SlaveFrequency PeriodMasterYear PeriodMasterMonth PeriodMasterDay PeriodSlaveYear PeriodSlaveMonth PeriodSlaveDay
489
490  # Get the name of the variable
491  MasterName=$1
492  SlaveName=$2
493  # Get the value the above name points to
494  MasterFrequency=$( eval echo \${${1}} )
495  SlaveFrequency=$( eval echo \${${2}} )
496
497  IGCM_debug_Print 2 "IGCM_post_CheckModuloFrequency : Master=${MasterFrequency} Slave=${SlaveFrequency}"
498
499  case ${MasterFrequency} in
500  *y|*Y)
501    PeriodMasterYear=$( echo ${MasterFrequency} | sed -e "s/[yY]//" )
502    case ${SlaveFrequency} in
503    *Y|*y)
504      PeriodSlaveYear=$( echo ${SlaveFrequency} | sed -e "s/[yY]//" )
505      if ( [ ${PeriodSlaveYear} -gt ${PeriodMasterYear} ] || \
506        [ $(( ${PeriodMasterYear} % ${PeriodSlaveYear} )) -ne 0 ] )then
507        IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with"
508        IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}"
509        IGCM_debug_Exit "Check your frequency"
510      fi ;;
511    *M|*m)
512      PeriodSlaveMonth=$( echo ${SlaveFrequency} | sed -e "s/[mM]//" )
513      if ( [ ${PeriodSlaveMonth} -gt $(( ${PeriodMasterYear} * 12 )) ] || \
514        [ $(( ( ${PeriodMasterYear} * 12 ) % ${PeriodSlaveMonth} )) -ne 0 ] ) ; then
515        IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with"
516        IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}"
517        IGCM_debug_Exit "Check your frequency"
518      fi ;;
519    *D|*d)
520      PeriodSlaveDay=$( echo ${SlaveFrequency} | sed -e "s/[dD]//" )
521      NbDays=$( IGCM_date_DaysInYear ${year} )
522      if [ ${config_UserChoices_CalendarType} = 360d ] || [ ${config_UserChoices_CalendarType} = noleap ] ; then
523        if ( [ ${PeriodSlaveDay} -gt $(( ${PeriodMasterYear} * ${NbDays} )) ] || \
524          [ $(( ( ${PeriodMasterYear} * ${NbDays} ) % ${PeriodSlaveDay} )) -ne 0 ] ; ) then
525          IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with"
526          IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}"
527          IGCM_debug_Exit "Check your frequency"
528        fi
529      else
530        IGCM_debug_Print 1 "For ${MasterName} with leap calendar:"
531        IGCM_debug_Print 1 "We have a daily ${SlaveName} frequency and ${MasterName}=${MasterFrequency}"
532        IGCM_debug_Print 1 "No post-treatment. Case not properly handle at this moment by libIGCM. Sorry"
533        IGCM_debug_Exit    "Check your frequency ${MasterName} and choose a daily frequency for this one too."
534      fi ;;
535    esac ;;
536  *M|*m)
537    PeriodMasterMonth=$( echo ${MasterFrequency} | sed -e "s/[mM]//" )
538    case ${SlaveFrequency} in               
539    *Y|*y)
540      PeriodSlaveYear=$( echo ${SlaveFrequency} | sed -e "s/[yY]//" )
541      if ( [ ${PeriodMasterMonth} -gt $(( ${PeriodSlaveYear} * 12 )) ] || \
542        [ $(( ${PeriodMasterMonth} % ( ${PeriodSlaveYear} * 12 ) )) -ne 0 ] ) ; then
543        IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with"
544        IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}"
545        IGCM_debug_Exit "Check your frequency"
546      fi ;;
547    *M|*m)
548      PeriodSlaveMonth=$( echo ${SlaveFrequency} | sed -e "s/[mM]//" )
549      if ( [ ${PeriodSlaveMonth} -gt ${PeriodMasterMonth} ] || \
550        [ $(( ${PeriodMasterMonth} % ${PeriodSlaveMonth} )) -ne 0 ] ) ;  then           
551        IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with"
552        IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}"
553        IGCM_debug_Exit "Check your frequency"
554      fi ;;
555    *D|*d)
556      IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with"
557      IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}"
558      IGCM_debug_Exit "Check your frequency" ;;
559    esac ;;
560  *D|*d)
561    PeriodMasterDay=$( echo ${MasterFrequency} | sed -e "s/[dD]//" )
562    case ${SlaveFrequency} in
563    *Y|*y)
564      IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with"
565      IGCM_debug_Print 1 "${MasterName} frequency ${MasterFrequency}"
566      IGCM_debug_Exit "Check your frequency" ;;
567    *M|*m)
568      IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with"
569      IGCM_debug_Print 1 "${MasterName} frequency ${MasterFrequency}"
570      IGCM_debug_Exit "Check your frequency" ;;
571    *D|*d)
572      PeriodSlaveDay=$( echo ${SlaveFrequency} | sed -e "s/[dD]//" )
573      if ( [ ${PeriodSlaveDay} -gt ${PeriodMasterDay} ] || \
574        [ $(( ${PeriodMasterDay} % ${PeriodSlaveDay} )) -ne 0 ] ) ;  then
575        IGCM_debug_Print 1 "${SlaveName} frequency ${SlaveFrequency} not compatbile with"
576        IGCM_debug_Print 1 "${MasterName} frequency : ${MasterFrequency}"
577        IGCM_debug_Exit "Check your frequency"
578      fi ;;
579    esac ;;
580  NONE|none) 
581    ;;
582  *)
583    IGCM_debug_Print 1 "KeyWord ${MasterFrequency} not allowed for ${MasterName} in config.card"
584    IGCM_debug_Exit "Check your ${MasterName} in config.card" ;;
585  esac
586
587  IGCM_debug_PopStack "IGCM_post_CheckModuloFrequency"
588}
589
590#===================================
591function IGCM_post_ModuloRuntimeFrequency
592{
593  IGCM_debug_PushStack "IGCM_post_ModuloRuntimeFrequency" $*
594
595  # Used by IGCM_post_Configure
596  # - from libIGCM (config_UserChoices_PeriodLength frequency * CumulPeriod) and
597  # - post-processing compatible frequency (*Y, *M, *D, *y, *m, *d)
598  # --> turn on post-processing submission when their modulo is zero
599  # Input parameter are the name of the variable, not the frequency value itself
600  # example
601  # IGCM_post_ModuloRuntimeFrequency config_Post_SeasonalFrequency config_UserChoices_PeriodLength
602
603  typeset MasterName SlaveName MasterFrequency SlaveFrequency PeriodMasterYear PeriodMasterMonth PeriodMasterDay PeriodSlaveYear PeriodSlaveMonth PeriodSlaveDay
604
605  # Get the name of the variable
606  MasterName=$1
607  SlaveName=$2
608 
609  # Get the value the above name points to
610  eval MasterFrequency=\${${1}}
611  eval SlaveFrequency=\${${2}}
612
613  echo
614  IGCM_debug_Print 2 "IGCM_post_ModuloRuntimeFrequency : Master=${MasterFrequency} Slave=${SlaveFrequency} CumulPeriod=${CumulPeriod}"
615
616  case ${MasterFrequency} in
617  *y|*Y)
618    PeriodMasterYear=$( echo ${MasterFrequency} | sed -e "s/[yY]//" )
619    case ${SlaveFrequency} in
620    *Y|*y)
621      PeriodSlaveYear=$( echo ${SlaveFrequency} | sed -e "s/[yY]//" )
622      if [ $(( ( ${CumulPeriod} * ${PeriodSlaveYear} - ${PeriodOffset} ) % ${PeriodMasterYear} )) -eq 0 ] ;  then
623        if [ $(( ${CumulPeriod} * ${PeriodSlaveYear} - ${PeriodOffset} )) -ne 0 ] ; then
624          eval ${post_freq}=true ; POST=true
625          [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ${PeriodMasterYear} / ${PeriodSlaveYear} ))
626        fi
627      fi;;
628    *M|*m)
629      PeriodSlaveMonth=$( echo ${SlaveFrequency} | sed -e "s/[mM]//" )
630      if [ $(( ( ${CumulPeriod} * ${PeriodSlaveMonth} - ${PeriodOffset} * 12 ) % ( ${PeriodMasterYear} * 12 ) )) -eq 0 ] ; then
631        if [ $(( ${CumulPeriod} * ${PeriodSlaveMonth} - ${PeriodOffset} * 12 )) -ne 0 ] ; then
632          eval ${post_freq}=true ; POST=true
633          [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ( 12 * ${PeriodMasterYear} ) / ${PeriodSlaveMonth} ))
634        fi
635      fi;;
636    *D|*d)
637      PeriodSlaveDay=$( echo ${SlaveFrequency} | sed -e "s/[dD]//" )
638      NbDays=$( IGCM_date_DaysInYear ${year} )
639      if [ $(( ( ${CumulPeriod} - ( ${PeriodOffset} * ${NbDays} / ${PeriodSlaveDay} ) ) % ( ${NbDays} * ${PeriodMasterYear} / ${PeriodSlaveDay} ) )) -eq 0 ] ; then
640        if [ $(( ${CumulPeriod} - ( ${PeriodOffset} * ${NbDays} / ${PeriodSlaveDay} ) )) -ne 0 ] ; then
641          eval ${post_freq}=true ; POST=true
642          [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ( ${NbDays} * ${PeriodMasterYear} ) / ${PeriodSlaveDay} ))
643        fi
644      fi;;
645    esac ;;
646  *M|*m)
647    PeriodMasterMonth=$( echo ${MasterFrequency} | sed -e "s/[mM]//" )
648    case ${SlaveFrequency} in
649    *Y|*y)
650      PeriodSlaveYear=$( echo ${SlaveFrequency} | sed -e "s/[yY]//" )
651      if [ $(( ( ${CumulPeriod} * ${PeriodSlaveYear} * 12 - ${PeriodOffset} ) % ( ${PeriodMasterMonth} ) )) -eq 0 ] ; then
652        if [ $(( ${CumulPeriod} * ${PeriodSlaveYear} * 12 - ${PeriodOffset} )) -ne 0 ] ; then
653          eval ${post_freq}=true ; POST=true
654          [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ${PeriodMasterMonth} / ( 12 * ${PeriodSlaveYear} ) ))
655        fi
656      fi;;
657    *M|*m)
658      PeriodSlaveMonth=$( echo ${SlaveFrequency} | sed -e "s/[mM]//" )
659      if [ $(( ( ${CumulPeriod} * ${PeriodSlaveMonth} - ${PeriodOffset} ) % ${PeriodMasterMonth} )) -eq 0 ] ;  then
660        if [ $(( ${CumulPeriod} * ${PeriodSlaveMonth} -  ${PeriodOffset} )) -ne 0 ] ; then
661          eval ${post_freq}=true ; POST=true
662          [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ${PeriodMasterMonth} / ${PeriodSlaveMonth} ))
663        fi
664      fi;;
665    *D|*d)
666      IGCM_debug_Print 1 "PeriodLength frequency ${SlaveFrequency} not compatbile with"
667      IGCM_debug_Print 1 "${flag_post} frequency : ${MasterFrequency} " ;;
668    esac ;;
669  *D|*d)
670    PeriodMasterDay=$( echo ${MasterFrequency} | sed -e "s/[dD]//" )
671    case ${SlaveFrequency} in
672    *Y|*y)
673      IGCM_debug_Print 1 "PeriodLength frequency ${SlaveFrequency} not compatbile with"
674      IGCM_debug_Print 1 "${flag_post} frequency : ${MasterFrequency} " ;;
675    *M|*m)
676      IGCM_debug_Print 1 "PeriodLength frequency ${SlaveFrequency} not compatbile with"
677      IGCM_debug_Print 1 "${flag_post} frequency : ${MasterFrequency} " ;;
678    *D|*d)
679      PeriodSlaveDay=$( echo ${SlaveFrequency} | sed -e "s/[dD]//" )
680      if [ $(( ( ${CumulPeriod} * ${PeriodSlaveDay} - ${PeriodOffset} ) % ${PeriodMasterDay} )) -eq 0 ] ;  then
681        if [ $(( ${CumulPeriod} * ${PeriodSlaveDay} - ${PeriodOffset} )) -ne 0 ] ; then
682          eval ${post_freq}=true ; POST=true
683          [ X${3} = XNbRebuildDir ] && NbRebuildDir=$(( ${PeriodMasterDay} / ${PeriodSlaveDay} ))
684        fi
685      fi;;
686    esac ;;
687  NONE|none)
688    ;;
689  *)
690    IGCM_debug_Print 1 "KeyWord not allowed for ${post_freq} in config.card"
691    ;;
692  esac
693
694  IGCM_debug_PopStack "IGCM_post_ModuloRuntimeFrequency"
695}
Note: See TracBrowser for help on using the repository browser.