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

Last change on this file since 179 was 179, checked in by cetlod, 15 years ago

Re-add the corrections (removed by error) made by MM and SD in Chgset 177

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