Changeset 22


Ignore:
Timestamp:
10/28/08 17:40:40 (15 years ago)
Author:
sdipsl
Message:

SD : - Add the so called "rebuild déporté" or asynchronous rebuild

  • EXPERIMENTAL, work at CCRT only (for now mercure+platine)
  • Add IDRIS when new post-process machine is available
  • On SX one needs to run on $SCRATCHDIR not $LOCALTMPDIR
  • To keep it disable : RebuildFrequency?=NONE in config.card
  • To enable it : RebuildFrequency?=2Y in config.card
  • To enable it on SX8R : RUN_DIR_PATH=$SCRATCHDIR in AA_job
  • Need testing to tune empirically dependance between RebuildFrequency? and other post-processing frequency
  • Need more tests to prevent user choices' inconsitency
Location:
trunk/libIGCM
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/libIGCM/AA_job

    r5 r22  
    361361    #D- 
    362362    # ------------------------------------------------------------------ 
    363     #D- Launch post-treatment process if necessary 
    364     # ------------------------------------------------------------------ 
    365     IGCM_post_Initialize 
     363    #D- Launch remote rebuild or/and post-treatment process if necessary 
     364    # ------------------------------------------------------------------ 
     365    IGCM_post_Configure 
    366366 
    367367    #D- 
  • trunk/libIGCM/libIGCM_comp/libIGCM_comp.ksh

    r5 r22  
    528528 
    529529    typeset ListTextName TextName0 
    530     typeset comp compname comptagname card ListFilesName FileName0 NbFiles  
     530    typeset comp compname comptagname card ListFilesName FileName0 NbFiles SaveOnArchive 
    531531    typeset i i_ file_in file_in_ file_out file_out_ generic_file_name nb_rebuild_file 
    532532    for comp in ${config_ListOfComponents[*]} ; do 
     
    585585            (( i=0 )) 
    586586            until [ $i -ge $NbFiles ]; do 
     587                SaveOnArchive=true 
    587588                eval file_in_=\${${ListFilesName}[$i]} > /dev/null 2>&1 
    588589                eval file_in=${file_in_} 
     
    590591                eval file_out_=\${${ListFilesName}[$i_]} > /dev/null 2>&1 
    591592                eval file_out=${file_out_} 
    592  
     593                # 
    593594                generic_file_name=$( basename ${file_in} .nc ) 
    594595                nb_rebuild_file=$( ls | grep "${generic_file_name}[_0-9]*.nc" | wc -l ) 
    595                 if [ ${nb_rebuild_file} -gt 1 ] ; then 
    596                     IGCM_debug_Print 2 "Rebuilding  ${file_in}" 
    597                     IGCM_sys_rebuild ${file_in} ${generic_file_name}_*.nc 
    598                     # DEBUG Rebuild : 
    599                     #eval IGCM_sys_Cp ${generic_file_name}_*.nc \${R_OUT_${comp}_O_M}/ 
    600                 elif [ -f ${generic_file_name}_0000.nc ] ; then 
     596                # 
     597                if ( [ ${nb_rebuild_file} -eq 1 ] && [ -f ${generic_file_name}_0000.nc ] ) ; then 
     598                    IGCM_debug_Print 2 "Parallelism with 1 process. Rebuilding ${file_in} not needed" 
    601599                    IGCM_sys_Mv ${generic_file_name}_0000.nc ${file_in} 
     600                elif [ ${nb_rebuild_file} -gt 1 ] ; then 
     601                    IGCM_debug_Print 2 "Parallelism detected rebuilding ${file_in} is needed" 
     602                    if ( [ X${config_Post_RebuildFrequency} = X${NULL_STR} ] || [ X${config_Post_RebuildFrequency} = XNONE ] ) ; then 
     603                        IGCM_debug_Print 2 "Rebuilding ${file_in} online" 
     604                        IGCM_sys_rebuild ${file_in} ${generic_file_name}_*.nc 
     605                    else 
     606                        IGCM_debug_Print 2 "Preparing offline rebuild for ${file_in}" 
     607                        IGCM_sys_Mkdir ${RUN_DIR}/REBUILD_${PeriodDateBegin} 
     608                        IGCM_sys_Mv ${generic_file_name}_????.nc ${RUN_DIR}/REBUILD_${PeriodDateBegin} 
     609                        # Prepare headers for the shell dedicated to offline rebuild 
     610                        if [ ! -f ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh ] ; then 
     611                            echo \#!/bin/ksh                               > ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     612                            echo function IGCM_FlushRebuild               >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     613                            echo {                                        >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     614                            echo IGCM_debug_PushStack "IGCM_FlushRebuild" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     615                            echo echo                                     >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     616                            echo IGCM_debug_Print 1 "IGCM_FlushRebuild :" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     617                            echo echo                                     >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     618                        fi 
     619                        # Prepare the shell dedicated to offline rebuild 
     620                        echo IGCM_sys_rebuild ${file_in} ${generic_file_name}_*.nc >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     621                        echo IGCM_sys_Put_Out ${file_in} ${file_out}               >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     622                        echo IGCM_sys_Rm ${generic_file_name}_*.nc                 >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     623                        SaveOnArchive=false 
     624                    fi 
    602625                fi 
    603  
    604                 IGCM_sys_Put_Out ${file_in} ${file_out} 
    605                 if [ $? -eq 0 ] ; then 
    606                     eval FileToBeDeleted[${#FileToBeDeleted[@]}]="${file_in}" > /dev/null 2>&1 
     626                # 
     627                if [ ${SaveOnArchive} = true ] ; then 
     628                    IGCM_sys_Put_Out ${file_in} ${file_out} 
     629                    [ $? -eq 0 ] && eval FileToBeDeleted[${#FileToBeDeleted[@]}]="${file_in}" > /dev/null 2>&1 
    607630                    if [ ${nb_rebuild_file} -gt 1 ] ; then 
    608                         eval FileToBeDeleted[${#FileToBeDeleted[@]}]=$( ls | grep "${generic_file_name}_[0-9]*.nc" ) > /dev/null 2>&1 
     631                        for DelFile in $( ls | grep "${generic_file_name}[_0-9]*.nc" ) ; do 
     632                            eval FileToBeDeleted[${#FileToBeDeleted[@]}]=${DelFile} > /dev/null 2>&1 
     633                        done 
    609634                    fi 
    610635                fi 
  • trunk/libIGCM/libIGCM_config/libIGCM_config.ksh

    r7 r22  
    117117        IGCM_debug_Print 3 "${option} : ${auxprint}" 
    118118    done 
     119 
     120    echo 
     121    IGCM_debug_Print 1 "DefineVariableFromOption : config_Post" 
     122    # 
     123    IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/config.card Post RebuildFrequency 
     124    # 
    119125 
    120126    #================================================================# 
  • trunk/libIGCM/libIGCM_post/libIGCM_post.ksh

    r5 r22  
    1515 
    1616#======================================================================= 
     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 "${flag_post} frequency : ${config_Post_post_freq} " 
     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                            else 
     57                                IGCM_debug_Print 3 "PeriodLength frequency ${config_UserChoices_PeriodLength} not compatbile with" 
     58                                IGCM_debug_Print 3 "${flag_post} frequency : ${config_Post_post_freq} " 
     59                            fi 
     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 "${flag_post} frequency : ${config_Post_post_freq} " 
     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 "${flag_post} frequency : ${config_Post_post_freq} " 
     107                        fi ;; 
     108                    *D|*d) 
     109                        IGCM_debug_Print 3 "PeriodLength frequency ${config_UserChoices_PeriodLength} not compatbile with" 
     110                        IGCM_debug_Print 3 "${flag_post} frequency : ${config_Post_post_freq} " ;; 
     111                esac 
     112                ;; 
     113            NONE|none) 
     114                ;; 
     115            *) 
     116                IGCM_debug_Print 3 "KeyWord not allowed for RebuildFrequency in config.card" 
     117                ;; 
     118        esac 
     119    else 
     120        # 
     121        IGCM_debug_Print 1 "Asynchronous rebuild has not been activated" 
     122        IGCM_debug_Print 1 "Proceed with standard post-treatment pathway" 
     123        echo 
     124        # 
     125    fi 
     126 
     127    IGCM_debug_Print 1 "RebuildFrequency flag value : ${RebuildFrequency}" 
     128    IGCM_post_Initialize 
     129 
     130    IGCM_debug_PopStack "IGCM_post_Configure" 
     131} 
     132 
    17133function IGCM_post_Initialize 
    18134{ 
     
    29145    # READ TIME SERIES OR SEASONAL FREQUENCY 
    30146    # AND TURN ON THE FLAG WHEN MODULO IS ZERO 
    31     for post_freq in RebuildFrequency TimeSeriesFrequency SeasonalFrequency ; do 
     147    for post_freq in TimeSeriesFrequency SeasonalFrequency ; do 
    32148        # 
    33149        # Initialize 
     
    45161        # 
    46162        if ( [ X${config_Post_post_freq} = X${NULL_STR} ] || [ X${config_Post_post_freq} = XNONE ] ) ; then 
    47           # 
    48           continue 
    49           # 
     163            # 
     164            continue 
     165            # 
    50166        fi 
    51167        # 
     
    60176            # 
    61177            if [ X${FileName0} != X${NULL_STR} ] ; then 
    62               # 
    63               #IGCM_debug_Print 1 "Component      : ${compname}" 
    64               # 
    65               # INITIALISATION 
    66               # 
    67               eval NbFiles=\${#${ListFilesName}[@]} > /dev/null 2>&1 
    68               typeset i=0 
    69               # 
    70               until [ $i -eq $NbFiles ]; do 
    71178                # 
    72                 eval file_in_=\${${ListFilesName}[$i]} > /dev/null 2>&1 
    73                 eval file_in=${file_in_} 
    74                 let $(( i_ = i+2 )) 
    75                 eval flag_post_=\${${ListFilesName}[$i_]} > /dev/null 2>&1 
    76                 eval flag_post=${flag_post_} 
     179                #IGCM_debug_Print 1 "Component      : ${compname}" 
    77180                # 
    78                 if [ X${flag_post} != XNONE ] ; then 
    79                   # 
    80                   # Initialize ${flag_post}_${compname}_${post_freq} 
    81                   # 
    82                   eval ${flag_post}_${compname}_${post_freq}=false 
    83                   # 
    84                   case ${config_Post_post_freq} in 
    85                     *y|*Y) 
    86                       PeriodYear=$( echo ${config_Post_post_freq} | sed -e "s/[yY]//" ) 
    87                       case ${config_UserChoices_PeriodLength} in 
    88                         1Y|1y) 
    89                           if [ $( expr ${CumulPeriod} % ${PeriodYear}  ) -eq 0 ] ;  then 
    90                              eval ${flag_post}_${compname}_${post_freq}=true 
    91                              eval ${post_freq}=true 
    92                              POST=true 
    93                           fi ;; 
    94                         1M|1m) 
    95                           if [ $( expr ${CumulPeriod} % $( expr ${PeriodYear} \* 12 ) ) -eq 0 ] ; then 
    96                              eval ${flag_post}_${compname}_${post_freq}=true 
    97                              eval ${post_freq}=true 
    98                              POST=true 
    99                           fi ;; 
    100                         *D|*d) 
    101                           LengthDays=$( echo ${config_UserChoices_PeriodLength} | sed -e "s/[dD]//" ) 
    102                           NbDays=$( IGCM_date_DaysInYear ${year} ) 
    103                           if [ ${config_UserChoices_CalendarType} = 360d ] | [ ${config_UserChoices_CalendarType} = noleap ] ; then 
    104                              if [ $( expr ${CumulPeriod} % $( expr \( ${NbDays} \* ${PeriodYear} \/ ${LengthDays} \) ) ) -eq 0 ] ; then 
    105                                 eval ${flag_post}_${compname}_${post_freq}=true 
    106                                 eval ${post_freq}=true 
    107                                 POST=true 
    108                              fi 
    109                           else 
    110                               if [ ${PeriodYear} -eq 1 ] ; then 
    111                                 PeriodEndJul=$( IGCM_date_ConvertGregorianDateToJulian ${PeriodDateEnd} ) 
    112                                 PostEndJul=${year}${NbDays} 
    113                                 #echo "PeriodYear=${PeriodYear} Year ; NbDays${NbDays} PeriodEndJul=${PeriodEndJul} PostEndJul=${PostEndJul}" 
    114                                 if [ ${PostEndJul} -le ${PeriodEndJul} ] ; then 
    115                                    eval ${flag_post}_${compname}_${post_freq}=true 
    116                                    eval ${post_freq}=true 
    117                                    POST=true 
    118                                 fi 
    119                               else 
    120                                 echo "For ${post_freq}, for ${comp} and ${file_in} :" 
    121                                 echo "We have a daily WriteFrequency and ${post_freq}=${PeriodYear}Y." 
    122                                 echo "No post-treatment." 
    123                               fi 
    124                             fi;; 
    125                       esac ;; 
    126                     1M|1m) 
    127                       case ${config_UserChoices_PeriodLength} in 
    128                         1Y|1y) 
    129                           IGCM_debug_Print 3 "Frequency not allowed for TimeSeriesFrequency in ${flag_post}" ;; 
    130                         1M|1m) 
    131                           eval ${flag_post}_${compname}_${post_freq}=true 
    132                           eval ${post_freq}=true 
    133                           POST=true;; 
    134                         *D|*d) 
    135                           NbDays=$( IGCM_date_DaysInMonth ${year} ${month} ) 
    136                           PeriodEndJul=$( IGCM_date_ConvertGregorianDateToJulian ${PeriodDateEnd} ) 
    137                           PostEndJul=$( IGCM_date_ConvertGregorianDateToJulian ${year}${month}${NbDays} ) 
    138                           #echo "year_month=${year}_${month} Month ; NbDays${NbDays} PeriodEndJul=${PeriodEndJul} PostEndJul=${PostEndJul}" 
    139                           if [ ${PostEndJul} -le ${PeriodEndJul} ] ; then 
    140                             eval ${flag_post}_${compname}_${post_freq}=true 
    141                             eval ${post_freq}=true 
    142                             POST=true 
    143                           fi 
    144                           ;; 
    145                       esac 
    146                         ;; 
    147                     NONE|none) 
    148                       ;; 
    149                     *) 
    150                       IGCM_debug_Print 3 "KeyWord not allowed for ${post_freq} in config.card" 
    151                       ;; 
    152                   esac 
    153                 fi 
    154                 let $(( i=i+3 )) 
    155               done 
     181                # INITIALISATION 
     182                # 
     183                eval NbFiles=\${#${ListFilesName}[@]} > /dev/null 2>&1 
     184                typeset i=0 
     185                # 
     186                until [ $i -eq $NbFiles ]; do 
     187                    # 
     188                    eval file_in_=\${${ListFilesName}[$i]} > /dev/null 2>&1 
     189                    eval file_in=${file_in_} 
     190                    let $(( i_ = i+2 )) 
     191                    eval flag_post_=\${${ListFilesName}[$i_]} > /dev/null 2>&1 
     192                    eval flag_post=${flag_post_} 
     193                    # 
     194                    if [ X${flag_post} != XNONE ] ; then 
     195                    # 
     196                        case ${config_Post_post_freq} in 
     197                            *y|*Y) 
     198                                PeriodYear=$( echo ${config_Post_post_freq} | sed -e "s/[yY]//" ) 
     199                                case ${config_UserChoices_PeriodLength} in 
     200                                    *Y|*y) 
     201                                        PeriodPost=$( echo ${config_UserChoices_PeriodLength} | sed -e "s/[yY]//" ) 
     202                                        if [ ${PeriodPost} -le ${PeriodYear} ] ; then 
     203                                            if [ $( expr $(( ${CumulPeriod} * ${PeriodPost} )) % ${PeriodYear}  ) -eq 0 ] ;  then 
     204                                                eval ${post_freq}=true 
     205                                                POST=true 
     206                                            fi 
     207                                        else 
     208                                            IGCM_debug_Print 3 "PeriodLength frequency ${config_UserChoices_PeriodLength} not compatbile with" 
     209                                            IGCM_debug_Print 3 "${flag_post} frequency : ${config_Post_post_freq} " 
     210                                        fi ;; 
     211                                    *M|*m) 
     212                                        PeriodPost=$( echo ${config_UserChoices_PeriodLength} | sed -e "s/[mM]//" ) 
     213                                        if [ ${PeriodPost} -le $(( ${PeriodYear} * 12 )) ] ; then 
     214                                            if [ $( expr $(( ${CumulPeriod} * ${PeriodPost} )) % $(( ${PeriodYear} * 12 )) ) -eq 0 ] ; then 
     215                                                eval ${post_freq}=true 
     216                                                POST=true 
     217                                                else 
     218                                                IGCM_debug_Print 3 "PeriodLength frequency ${config_UserChoices_PeriodLength} not compatbile with" 
     219                                                IGCM_debug_Print 3 "${flag_post} frequency : ${config_Post_post_freq} " 
     220                                            fi 
     221                                        fi ;; 
     222                                    *D|*d) 
     223                                        PeriodPost=$( echo ${config_UserChoices_PeriodLength} | sed -e "s/[dD]//" ) 
     224                                        NbDays=$( IGCM_date_DaysInYear ${year} ) 
     225                                        if [ ${config_UserChoices_CalendarType} = 360d ] | [ ${config_UserChoices_CalendarType} = noleap ] ; then 
     226                                            if [ ${PeriodPost} -le $(( ${PeriodYear} * ${NbDays} )) ] ; then 
     227                                                if [ $( expr ${CumulPeriod} % $( expr \( ${NbDays} \* ${PeriodYear} \/ ${PeriodPost} \) ) ) -eq 0 ] ; then 
     228                                                    eval ${post_freq}=true 
     229                                                    POST=true 
     230                                                fi 
     231                                            else 
     232                                                IGCM_debug_Print 3 "PeriodLength frequency ${config_UserChoices_PeriodLength} not compatbile with" 
     233                                                IGCM_debug_Print 3 "${flag_post} frequency : ${config_Post_post_freq} " 
     234                                            fi 
     235                                        else 
     236#                                           if [ ${PeriodYear} -eq 1 ] ; then 
     237#                                               PeriodEndJul=$( IGCM_date_ConvertGregorianDateToJulian ${PeriodDateEnd} ) 
     238#                                               PostEndJul=${year}${NbDays} 
     239#                                                #echo "PeriodYear=${PeriodYear} NbDays=${NbDays}" 
     240#                                               #echo PeriodEndJul=${PeriodEndJul} PostEndJul=${PostEndJul}" 
     241#                                               if [ ${PostEndJul} -le ${PeriodEndJul} ] ; then 
     242#                                                   eval ${post_freq}=true 
     243#                                                   POST=true 
     244#                                               fi 
     245#                                           else 
     246                                            IGCM_debug_Print 3 "For ${post_freq} with leap calendar, for ${comp} and ${file_in} :" 
     247                                            IGCM_debug_Print 3 "We have a daily PeriodLength frequency and RebuildFrequency=${PeriodYear}Y." 
     248                                            IGCM_debug_Print 3 "No post-treatment. Case not properly handle at this moment." 
     249#                                           fi 
     250                                        fi;; 
     251                                esac ;; 
     252                            *M|*m) 
     253                                PeriodMonth=$( echo ${config_Post_RebuildFrequency} | sed -e "s/[mM]//" ) 
     254                                case ${config_UserChoices_PeriodLength} in 
     255                                    *Y|*y) 
     256                                        IGCM_debug_Print 3 "PeriodLength frequency ${config_UserChoices_PeriodLength} not compatbile with" 
     257                                        IGCM_debug_Print 3 "${flag_post} frequency : ${config_Post_post_freq} " ;; 
     258                                    *M|*m) 
     259                                        PeriodPost=$( echo ${config_UserChoices_PeriodLength} | sed -e "s/[mM]//" ) 
     260                                        if [ ${PeriodPost} -le ${PeriodMonth} ] ; then 
     261                                            if [ $( expr $(( ${CumulPeriod} * ${PeriodPost} )) % ${PeriodMonth}  ) -eq 0 ] ;  then 
     262                                                eval ${post_freq}=true 
     263                                                POST=true 
     264                                            fi 
     265                                        else 
     266                                            IGCM_debug_Print 3 "PeriodLength frequency ${config_UserChoices_PeriodLength} not compatbile with" 
     267                                            IGCM_debug_Print 3 "${flag_post} frequency : ${config_Post_post_freq} " 
     268                                        fi;; 
     269                                    *D|*d) 
     270                                        IGCM_debug_Print 3 "PeriodLength frequency ${config_UserChoices_PeriodLength} not compatbile with" 
     271                                        IGCM_debug_Print 3 "${flag_post} frequency : ${config_Post_post_freq} " ;; 
     272                                esac ;; 
     273                            NONE|none) 
     274                                ;; 
     275                            *) 
     276                                IGCM_debug_Print 3 "KeyWord not allowed for ${post_freq} in config.card" 
     277                                ;; 
     278                        esac 
     279                    fi 
     280                    let $(( i=i+3 )) 
     281                done 
    156282            fi 
    157283        done 
     
    172298    echo 
    173299 
    174     typeset comp 
    175  
    176300    POST_DIR=${R_OUT_POST}/${config_UserChoices_TagName}/${config_UserChoices_JobName} 
    177     echo "POST_DIR = ${POST_DIR}" 
     301    IGCM_debug_Print 1 "POST_DIR = ${POST_DIR}" 
     302 
     303    #============ TIME SERIES POST-TREATMENT ===========# 
     304    if [ ${TimeSeriesFrequency} = true ] ; then 
     305 
     306        IGCM_debug_Print 2 "TIME SERIES POST-TREATMENT :" 
     307        echo 
     308        # 
     309        typeset listVarEnv 
     310        listVarEnv="MODIPSL,libIGCM,libIGCM_SX,SUBMIT_DIR,POST_DIR,DateBegin,PeriodDateEnd,StandAlone,RESOL_ATM,RESOL_OCE,RESOL_ICE,RESOL_SRF" 
     311 
     312        if [ ${RebuildFrequency} = true ] ; then 
     313            # 
     314            echo IGCM_sys_QsubPost create_ts >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     315            # 
     316        else 
     317            # 
     318            IGCM_sys_RshPost <<-EOF 
     319            export MODIPSL=${MODIPSL} 
     320            export libIGCM_SX=${libIGCM} 
     321            export libIGCM=${libIGCM_POST} 
     322            export SUBMIT_DIR=${SUBMIT_DIR} 
     323            export POST_DIR=${POST_DIR} 
     324            export DateBegin=${DateBegin} 
     325            export PeriodDateEnd=${PeriodDateEnd} 
     326            export StandAlone=false 
     327            export RESOL_ATM=${RESOL_ATM} 
     328            export RESOL_OCE=${RESOL_OCE} 
     329            export RESOL_ICE=${RESOL_ICE} 
     330            export RESOL_SRF=${RESOL_SRF} 
     331            export listVarEnv=${listVarEnv} 
     332            . ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh 
     333            . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh 
     334            IGCM_sys_MkdirWork ${POST_DIR} 
     335            IGCM_debug_Verif_Exit 
     336            IGCM_sys_QsubPost create_ts 
     337EOF 
     338            # 
     339        fi 
     340    fi 
     341 
     342    #=============  SEASONAL POST-TREATMENT ============# 
     343    if [ ${SeasonalFrequency} = true ] ; then 
     344        # 
     345        IGCM_debug_Print 2 "SEASONNAL POST-TREATMENT :" 
     346        echo 
     347        # 
     348        typeset listVarEnv 
     349        listVarEnv="MODIPSL,libIGCM,libIGCM_SX,SUBMIT_DIR,POST_DIR,DateBegin,PeriodDateEnd,StandAlone,RESOL_ATM,RESOL_OCE,RESOL_ICE,RESOL_SRF" 
     350 
     351        if [ ${RebuildFrequency} = true ] ; then 
     352            # 
     353            echo IGCM_sys_QsubPost create_se >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     354            # 
     355        else 
     356            # 
     357            IGCM_sys_RshPost <<-EOF 
     358            export MODIPSL=${MODIPSL} 
     359            export libIGCM_SX=${libIGCM} 
     360            export libIGCM=${libIGCM_POST} 
     361            export SUBMIT_DIR=${SUBMIT_DIR} 
     362            export POST_DIR=${POST_DIR} 
     363            export DateBegin=${DateBegin} 
     364            export PeriodDateEnd=${PeriodDateEnd} 
     365            export StandAlone=false 
     366            export RESOL_ATM=${RESOL_ATM} 
     367            export RESOL_OCE=${RESOL_OCE} 
     368            export RESOL_ICE=${RESOL_ICE} 
     369            export RESOL_SRF=${RESOL_SRF} 
     370            export listVarEnv=${listVarEnv} 
     371            . ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh 
     372            . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh 
     373            IGCM_sys_MkdirWork ${POST_DIR} 
     374            IGCM_debug_Verif_Exit 
     375            IGCM_sys_QsubPost create_se 
     376EOF 
     377        # 
     378        fi 
     379    fi 
    178380 
    179381    #============== REBUILD POST-TREATMENT =============# 
     
    183385        echo 
    184386        # 
    185         # BUILD A PACKED LIST FOR POST-TREATMENT JOB 
    186         # BECAUSE IT'S NOT POSSIBLE TO DEFINE DYNAMICAL 
    187         # VARIABLE NAME THROUGHT RSH !! 
    188         # 
    189         LISTE_PACK=" " 
    190         # 
    191     fi 
    192  
    193     #============ TIME SERIES POST-TREATMENT ===========# 
    194     if [ ${TimeSeriesFrequency} = true ] ; then 
    195  
    196         IGCM_debug_Print 2 "TIME SERIES POST-TREATMENT :" 
    197         echo 
    198         # 
    199387        typeset listVarEnv 
    200         listVarEnv="MODIPSL,libIGCM,libIGCM_SX,SUBMIT_DIR,POST_DIR,DateBegin,PeriodDateEnd,StandAlone,RESOL_ATM,RESOL_OCE,RESOL_ICE,RESOL_SRF" 
     388        listVarEnv="MODIPSL,libIGCM,libIGCM_SX,SUBMIT_DIR,RUN_DIR,POST_DIR,DateBegin,PeriodDateBegin,PeriodDateEnd,NbRebuildDir,StandAlone,RESOL_ATM,RESOL_OCE,RESOL_ICE,RESOL_SRF" 
    201389        IGCM_sys_RshPost <<-EOF 
    202390        export MODIPSL=${MODIPSL} 
     
    204392        export libIGCM=${libIGCM_POST} 
    205393        export SUBMIT_DIR=${SUBMIT_DIR} 
     394        export RUN_DIR=${RUN_DIR} 
    206395        export POST_DIR=${POST_DIR} 
    207396        export DateBegin=${DateBegin} 
     397        export PeriodDateBegin=${PeriodDateBegin} 
    208398        export PeriodDateEnd=${PeriodDateEnd} 
     399        export NbRebuildDir=${NbRebuildDir} 
    209400        export StandAlone=false 
    210401        export RESOL_ATM=${RESOL_ATM} 
     
    217408        IGCM_sys_MkdirWork ${POST_DIR} 
    218409        IGCM_debug_Verif_Exit 
    219         IGCM_sys_QsubPost create_ts 
     410        IGCM_sys_QsubPost rebuild 
    220411EOF 
    221412    fi 
    222413 
    223     #=============  SEASONAL POST-TREATMENT ============# 
    224     if [ ${SeasonalFrequency} = true ] ; then 
    225         # 
    226         IGCM_debug_Print 2 "SEASONNAL POST-TREATMENT :" 
    227         echo 
    228         # 
    229         typeset listVarEnv 
    230         listVarEnv="MODIPSL,libIGCM,libIGCM_SX,SUBMIT_DIR,POST_DIR,DateBegin,PeriodDateEnd,StandAlone,RESOL_ATM,RESOL_OCE,RESOL_ICE,RESOL_SRF" 
    231         IGCM_sys_RshPost <<-EOF 
    232         export MODIPSL=${MODIPSL} 
    233         export SUBMIT_DIR=${SUBMIT_DIR} 
    234         export libIGCM_SX=${libIGCM} 
    235         export libIGCM=${libIGCM_POST} 
    236         export SUBMIT_DIR=${SUBMIT_DIR} 
    237         export POST_DIR=${POST_DIR} 
    238         export DateBegin=${DateBegin} 
    239         export PeriodDateEnd=${PeriodDateEnd} 
    240         export StandAlone=false 
    241         export RESOL_ATM=${RESOL_ATM} 
    242         export RESOL_OCE=${RESOL_OCE} 
    243         export RESOL_ICE=${RESOL_ICE} 
    244         export RESOL_SRF=${RESOL_SRF} 
    245         export listVarEnv=${listVarEnv} 
    246         . ${libIGCM_POST}/libIGCM_debug/libIGCM_debug.ksh 
    247         . ${libIGCM_POST}/libIGCM_sys/libIGCM_sys.ksh 
    248         IGCM_sys_MkdirWork ${POST_DIR} 
    249         IGCM_debug_Verif_Exit 
    250         IGCM_sys_QsubPost create_se 
    251 EOF 
    252     fi 
    253  
    254414    IGCM_debug_PopStack "IGCM_post_Submit" 
    255415} 
    256  
    257  
  • trunk/libIGCM/run.card.init

    r5 r22  
    2020[PostProcessing] 
    2121# postraitements state == .date 
    22 PostState = Start 
    2322 
    24 MonitoringRunning=n 
    25 MonitoringCompleted= 
     23#RebuildRunning=y/n 
     24#RebuildToComplete=number of dir to rebuild 
     25#RebuildDateID=PeriodDateEnd correspondant au dernier flag de RebuildFrequency=true 
    2626 
    2727TimeSeriesRunning=n 
     
    2929 
    3030SeasonalRunning=n 
    31 SeasonalCompleted= 
    3231 
    3332# machine time == .log 
Note: See TracChangeset for help on using the changeset viewer.