Ignore:
Timestamp:
01/29/13 15:54:58 (11 years ago)
Author:
labetoulle
Message:

Bugfix in GetInputRestartFiles? when Restarts_OverRule=n (see #101).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/libIGCM/libIGCM_comp/libIGCM_comp.ksh

    r749 r778  
    1717  IGCM_debug_PushStack "IGCM_comp_Initialize" 
    1818 
    19     # Debug Print : 
     19  # Debug Print : 
    2020  echo 
    2121  IGCM_debug_Print 1 "IGCM_comp_Initialize" 
     
    3737    IGCM_card_DefineVariableFromOption ${card} Compatibility libIGCM 
    3838 
    39     eval CompatibilityTag=\${${compname}_Compatibility_libIGCM} > /dev/null 2>&1         
     39    eval CompatibilityTag=\${${compname}_Compatibility_libIGCM} > /dev/null 2>&1 
    4040    if [ ! "${CompatibilityTag}" = "${libIGCM_CurrentTag}" ] ; then 
    4141      IGCM_debug_Exit "${compname}.card is not compatible with libIGCM version ${libIGCM_CurrentTag} see libIGCM FAQ http://wiki.ipsl.jussieu.fr/wiki_ipsl/IGCMG/libIGCM/DocUtilisateur/FAQ ." 
     
    116116    if [ X${first_option} != X"Error:" ] ; then 
    117117      if [ X${card_UserChoices[0]} != X ] ; then 
    118         unset card_UserChoices 
     118        unset card_UserChoices 
    119119      fi 
    120120      eval set +A card_UserChoices -- \${${compname}_UserChoices[*]} > /dev/null 2>&1 
    121121      IGCM_debug_Print 3 "${compname}_UserChoices_values:" 
    122122      for option in ${card_UserChoices[*]} ; do 
    123         IGCM_card_DefineVariableFromOption ${card} UserChoices ${option} 
    124         eval IGCM_debug_Print 3 "${option}=\${${compname}_UserChoices_${option}}" 
     123        IGCM_card_DefineVariableFromOption ${card} UserChoices ${option} 
     124        eval IGCM_debug_Print 3 "${option}=\${${compname}_UserChoices_${option}}" 
    125125      done 
    126126    fi 
     
    143143      # 
    144144      until [ $i -ge $NbFiles ]; do 
    145         # 
    146         eval flag_post=\${${ListFilesName}[$i]} > /dev/null 2>&1 
    147         # 
    148         if [ X${flag_post} != XNONE ] ; then 
    149           # 
     145        # 
     146        eval flag_post=\${${ListFilesName}[$i]} > /dev/null 2>&1 
     147        # 
     148        if [ X${flag_post} != XNONE ] ; then 
     149          # 
    150150          # First of all 
    151151          # 
    152           IGCM_card_DefineArrayFromSection ${card} ${flag_post} 
    153           # 
    154           # Seasonal case : If option Seasonal is not found (old cards) put SEASONAL ON by default 
    155           # 
    156           # variable option allready typeset above 
    157           for option in $( eval echo \${${compname}_${flag_post}[*]} ) ; do 
    158             if [ ${option} = Seasonal ] ; then 
    159               FoundSeasonal=true 
    160               IGCM_card_DefineVariableFromOption ${card} ${flag_post} Seasonal 
    161             fi 
    162           done 
    163           # 
    164           if [ ! X${FoundSeasonal} = Xtrue ] ; then 
    165             eval ${compname}_${flag_post}_Seasonal=ON 
    166           fi 
    167           # 
    168           if [ $( eval echo \${${compname}_${flag_post}_Seasonal} ) = ON ] ; then 
    169             Seasonal=true 
    170           fi 
    171            
    172           # Dimension = vide si vieille card. 
    173           IGCM_card_DefineArrayFromOption ${card} ${flag_post} TimeSeriesVars 
    174           IGCM_card_DefineArrayFromOption ${card} ${flag_post} Patches 
    175           if [ X"$( eval echo \${${compname}_${flag_post}_TimeSeriesVars[*]} )" = X"Option not" ] ; then 
    176             # New TimeSeriesVar description, with 2D, 3D and associate ChunckJob. 
    177             ListDimension[0]=2D 
    178             ListDimension[1]=3D 
    179             TimeSeries=false 
    180             iLoop=${#ListDimension[*]} 
    181             j=0 
    182             until [ $j -ge ${iLoop} ]; do 
    183               Dimension=${ListDimension[${j}]} 
    184               IGCM_card_DefineArrayFromOption ${card} ${flag_post} TimeSeriesVars${Dimension} 
    185               IGCM_card_DefineVariableFromOption ${card} ${flag_post} ChunckJob${Dimension} 
    186               # 
    187               # Time series WITHOUT chunk 
    188               # 
    189               if [ ! $( eval echo \${${compname}_${flag_post}_TimeSeriesVars${Dimension}} ) = ${NULL_STR} ] ; then 
    190                 if [ $( eval echo \${${compname}_${flag_post}_ChunckJob${Dimension}} ) = NONE ] ; then 
    191                   IGCM_debug_Print 3 "${Dimension} time series activated for ${flag_post}" 
    192                   eval TimeSeries${Dimension}=true 
    193                 fi 
    194               fi 
     152          IGCM_card_DefineArrayFromSection ${card} ${flag_post} 
     153          # 
     154          # Seasonal case : If option Seasonal is not found (old cards) put SEASONAL ON by default 
     155          # 
     156          # variable option allready typeset above 
     157          for option in $( eval echo \${${compname}_${flag_post}[*]} ) ; do 
     158            if [ ${option} = Seasonal ] ; then 
     159              FoundSeasonal=true 
     160              IGCM_card_DefineVariableFromOption ${card} ${flag_post} Seasonal 
     161            fi 
     162          done 
     163          # 
     164          if [ ! X${FoundSeasonal} = Xtrue ] ; then 
     165            eval ${compname}_${flag_post}_Seasonal=ON 
     166          fi 
     167          # 
     168          if [ $( eval echo \${${compname}_${flag_post}_Seasonal} ) = ON ] ; then 
     169            Seasonal=true 
     170          fi 
     171 
     172          # Dimension = vide si vieille card. 
     173          IGCM_card_DefineArrayFromOption ${card} ${flag_post} TimeSeriesVars 
     174          IGCM_card_DefineArrayFromOption ${card} ${flag_post} Patches 
     175          if [ X"$( eval echo \${${compname}_${flag_post}_TimeSeriesVars[*]} )" = X"Option not" ] ; then 
     176            # New TimeSeriesVar description, with 2D, 3D and associate ChunckJob. 
     177            ListDimension[0]=2D 
     178            ListDimension[1]=3D 
     179            TimeSeries=false 
     180            iLoop=${#ListDimension[*]} 
     181            j=0 
     182            until [ $j -ge ${iLoop} ]; do 
     183              Dimension=${ListDimension[${j}]} 
     184              IGCM_card_DefineArrayFromOption ${card} ${flag_post} TimeSeriesVars${Dimension} 
     185              IGCM_card_DefineVariableFromOption ${card} ${flag_post} ChunckJob${Dimension} 
    195186              # 
    196               # Time series WITH chunk 
    197               # 
    198               if [ ! $( eval echo \${${compname}_${flag_post}_TimeSeriesVars${Dimension}} ) = ${NULL_STR} ] ; then 
    199                 chunck_size=$( eval echo \${${compname}_${flag_post}_ChunckJob${Dimension}} ) 
    200                 if [ ! ${chunck_size} = NONE ] &&  [ ! ${chunck_size} = OFF ] ; then 
    201                   IGCM_debug_Print 3 "${Dimension} time series activated with chunck for ${flag_post}" 
    202                   eval TimeSeriesChunck${Dimension}=true 
    203                   eval set +A CHUNCK${Dimension}_COMP \${CHUNCK${Dimension}_COMP[*]} ${comp} 
    204                   eval set +A CHUNCK${Dimension}_FLAG \${CHUNCK${Dimension}_FLAG[*]} ${i} 
    205                   eval set +A CHUNCK${Dimension}_NAME \${CHUNCK${Dimension}_NAME[*]} ${flag_post} 
    206                   eval set +A CHUNCK${Dimension}_SIZE \${CHUNCK${Dimension}_SIZE[*]} ${chunck_size} 
    207                 fi 
    208               fi 
    209               (( j=j+1 )) 
    210             done 
    211           else 
    212             ListDimension[0]="" 
    213             TimeSeries=true 
    214             TimeSeries2D=false 
    215             TimeSeries3D=false 
    216             TimeSeriesChunck2D=false 
    217             TimeSeriesChunck3D=false 
    218           fi 
    219         fi 
    220         (( i=i+3 )) 
     187              # Time series WITHOUT chunk 
     188              # 
     189              if [ ! $( eval echo \${${compname}_${flag_post}_TimeSeriesVars${Dimension}} ) = ${NULL_STR} ] ; then 
     190                if [ $( eval echo \${${compname}_${flag_post}_ChunckJob${Dimension}} ) = NONE ] ; then 
     191                  IGCM_debug_Print 3 "${Dimension} time series activated for ${flag_post}" 
     192                  eval TimeSeries${Dimension}=true 
     193                fi 
     194              fi 
     195              # 
     196              # Time series WITH chunk 
     197              # 
     198              if [ ! $( eval echo \${${compname}_${flag_post}_TimeSeriesVars${Dimension}} ) = ${NULL_STR} ] ; then 
     199                chunck_size=$( eval echo \${${compname}_${flag_post}_ChunckJob${Dimension}} ) 
     200                if [ ! ${chunck_size} = NONE ] &&  [ ! ${chunck_size} = OFF ] ; then 
     201                  IGCM_debug_Print 3 "${Dimension} time series activated with chunck for ${flag_post}" 
     202                  eval TimeSeriesChunck${Dimension}=true 
     203                  eval set +A CHUNCK${Dimension}_COMP \${CHUNCK${Dimension}_COMP[*]} ${comp} 
     204                  eval set +A CHUNCK${Dimension}_FLAG \${CHUNCK${Dimension}_FLAG[*]} ${i} 
     205                  eval set +A CHUNCK${Dimension}_NAME \${CHUNCK${Dimension}_NAME[*]} ${flag_post} 
     206                  eval set +A CHUNCK${Dimension}_SIZE \${CHUNCK${Dimension}_SIZE[*]} ${chunck_size} 
     207                fi 
     208              fi 
     209              (( j=j+1 )) 
     210            done 
     211          else 
     212            ListDimension[0]="" 
     213            TimeSeries=true 
     214            TimeSeries2D=false 
     215            TimeSeries3D=false 
     216            TimeSeriesChunck2D=false 
     217            TimeSeriesChunck3D=false 
     218          fi 
     219        fi 
     220        (( i=i+3 )) 
    221221      done 
    222222    fi 
     
    235235{ 
    236236  IGCM_debug_PushStack "IGCM_comp_PrepareDeletedFiles" $@ 
    237    
     237 
    238238  if [ X${2} != X. ] ; then 
    239239    eval FileToBeDeleted[${#FileToBeDeleted[@]}]=$( basename ${2} ) > /dev/null 2>&1 
     
    265265      # Do we need to bring initial state file for this component 
    266266      if [ "${config_Restarts_OverRule}" = "y" ] ; then 
    267         eval do_init="n" 
     267        eval do_init="n" 
    268268      else 
    269         # Read component Restarts parameters 
    270         IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/config.card ${comp} Restart 
    271         eval do_start=\${config_${comp}_Restart} > /dev/null 2>&1 
    272         if [ "${do_start}" = "y" ] ; then 
    273           do_init="n" 
    274         else 
    275           do_init="y" 
    276         fi 
     269        # Read component Restarts parameters 
     270        IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/config.card ${comp} Restart 
     271        eval do_start=\${config_${comp}_Restart} > /dev/null 2>&1 
     272        if [ "${do_start}" = "y" ] ; then 
     273          do_init="n" 
     274        else 
     275          do_init="y" 
     276        fi 
    277277      fi 
    278278 
    279279      if [ "${do_init}" = "y" ] ; then 
    280         # Define component  
    281         eval compname=\${config_ListOfComponents_${comp}[0]} > /dev/null 2>&1 
    282         eval comptagname=\${config_ListOfComponents_${comp}[1]} > /dev/null 2>&1 
    283  
    284         # Debug Print : 
    285         IGCM_debug_Print 3 "Initialisation files ${compname}" 
    286  
    287         card=${SUBMIT_DIR}/COMP/${compname}.card 
    288  
    289         IGCM_card_DefineArrayFromOption ${card} InitialStateFiles List 
    290         ListFilesName=${compname}_InitialStateFiles_List 
    291  
    292         eval FileName0=\${${ListFilesName}[0]} > /dev/null 2>&1 
    293         if [ X${FileName0} != X${NULL_STR} ] ; then 
    294           eval NbFiles=\${#${ListFilesName}[@]} > /dev/null 2>&1 
    295           (( i=0 )) 
    296           until [ $i -ge $NbFiles ]; do 
    297             eval file_in_=\${${ListFilesName}[$i]} > /dev/null 2>&1 
    298             eval file_in=${file_in_} 
    299             (( i_ = i+1 )) 
    300             eval file_out_=\${${ListFilesName}[$i_]} > /dev/null 2>&1 
    301             eval file_out=${file_out_} 
    302  
    303             IGCM_sys_IsFileArchived ${file_in} 
    304             if [ $? = 0 ] ; then 
    305               IGCM_sys_Get ${file_in} ${file_out} 
    306               #IGCM_comp_PrepareDeletedFiles ${file_in} ${file_out} 
    307             else 
    308               IGCM_sys_Cp ${file_in} ${file_out} 
    309             fi 
    310             (( i=i+2 )) 
    311           done 
    312         fi 
     280        # Define component  
     281        eval compname=\${config_ListOfComponents_${comp}[0]} > /dev/null 2>&1 
     282        eval comptagname=\${config_ListOfComponents_${comp}[1]} > /dev/null 2>&1 
     283 
     284        # Debug Print : 
     285        IGCM_debug_Print 3 "Initialisation files ${compname}" 
     286 
     287        card=${SUBMIT_DIR}/COMP/${compname}.card 
     288 
     289        IGCM_card_DefineArrayFromOption ${card} InitialStateFiles List 
     290        ListFilesName=${compname}_InitialStateFiles_List 
     291 
     292        eval FileName0=\${${ListFilesName}[0]} > /dev/null 2>&1 
     293        if [ X${FileName0} != X${NULL_STR} ] ; then 
     294          eval NbFiles=\${#${ListFilesName}[@]} > /dev/null 2>&1 
     295          (( i=0 )) 
     296          until [ $i -ge $NbFiles ]; do 
     297            eval file_in_=\${${ListFilesName}[$i]} > /dev/null 2>&1 
     298            eval file_in=${file_in_} 
     299            (( i_ = i+1 )) 
     300            eval file_out_=\${${ListFilesName}[$i_]} > /dev/null 2>&1 
     301            eval file_out=${file_out_} 
     302 
     303            IGCM_sys_IsFileArchived ${file_in} 
     304            if [ $? = 0 ] ; then 
     305              IGCM_sys_Get ${file_in} ${file_out} 
     306              #IGCM_comp_PrepareDeletedFiles ${file_in} ${file_out} 
     307            else 
     308              IGCM_sys_Cp ${file_in} ${file_out} 
     309            fi 
     310            (( i=i+2 )) 
     311          done 
     312        fi 
    313313      fi 
    314314    done 
     
    403403      (( i=0 )) 
    404404      until [ $i -ge $NbFiles ]; do 
    405         eval file_in_=\${${ListFilesName}[$i]} > /dev/null 2>&1 
    406         eval file_in=${file_in_} 
    407         (( i_ = i+1 )) 
    408         eval file_out_=\${${ListFilesName}[$i_]} > /dev/null 2>&1 
    409         eval file_out=${file_out_} 
    410  
    411         # define CumulPeriod definition for this file 
    412         (( i__ = i+2 )) 
    413         eval SmoothDef=\${${ListFilesName}[$i__]} 
    414         IGCM_debug_Print 3 "  ${file_in} ${SmoothDef}" 
    415         aux=$( IGCM_SmoothModulo ${SmoothDef} ${CumulPeriod} ) 
    416         j=1 
    417         for val in ${aux} ; do 
    418           [ ${j} -eq 1 ] && SmoothMin=${val} 
    419           [ ${j} -eq 2 ] && SmoothMax=${val} 
    420           [ ${j} -eq 3 ] && ret=${val} 
    421           (( j=j+1 )) 
    422         done 
    423         [ ${SmoothMax} -eq -1 ] && SmoothMax=${CumulPeriod} 
    424         if ( [ X${ret} = Xtrue ] || ( [ ${Period} -eq 1 ] && [ ${CumulPeriod} -ge ${SmoothMin} ] && [ ${CumulPeriod} -le ${SmoothMax} ] ) ) ; then 
    425  
    426           IGCM_sys_IsFileArchived ${file_in} 
    427           if [ $? = 0 ] ; then 
    428             IGCM_sys_Get ${file_in} ${file_out} 
    429             #IGCM_comp_PrepareDeletedFiles ${file_in} ${file_out} 
    430           else 
    431             IGCM_sys_Cp ${file_in} ${file_out} 
    432           fi 
    433         fi 
    434         (( i=i+3 )) 
     405        eval file_in_=\${${ListFilesName}[$i]} > /dev/null 2>&1 
     406        eval file_in=${file_in_} 
     407        (( i_ = i+1 )) 
     408        eval file_out_=\${${ListFilesName}[$i_]} > /dev/null 2>&1 
     409        eval file_out=${file_out_} 
     410 
     411        # define CumulPeriod definition for this file 
     412        (( i__ = i+2 )) 
     413        eval SmoothDef=\${${ListFilesName}[$i__]} 
     414        IGCM_debug_Print 3 "  ${file_in} ${SmoothDef}" 
     415        aux=$( IGCM_SmoothModulo ${SmoothDef} ${CumulPeriod} ) 
     416        j=1 
     417        for val in ${aux} ; do 
     418          [ ${j} -eq 1 ] && SmoothMin=${val} 
     419          [ ${j} -eq 2 ] && SmoothMax=${val} 
     420          [ ${j} -eq 3 ] && ret=${val} 
     421          (( j=j+1 )) 
     422        done 
     423        [ ${SmoothMax} -eq -1 ] && SmoothMax=${CumulPeriod} 
     424        if ( [ X${ret} = Xtrue ] || ( [ ${Period} -eq 1 ] && [ ${CumulPeriod} -ge ${SmoothMin} ] && [ ${CumulPeriod} -le ${SmoothMax} ] ) ) ; then 
     425 
     426          IGCM_sys_IsFileArchived ${file_in} 
     427          if [ $? = 0 ] ; then 
     428            IGCM_sys_Get ${file_in} ${file_out} 
     429            #IGCM_comp_PrepareDeletedFiles ${file_in} ${file_out} 
     430          else 
     431            IGCM_sys_Cp ${file_in} ${file_out} 
     432          fi 
     433        fi 
     434        (( i=i+3 )) 
    435435      done 
    436436    fi 
    437437  done 
    438    
     438 
    439439  IGCM_debug_PopStack "IGCM_comp_GetInputSmoothFiles" 
    440440} 
     
    477477      (( i=0 )) 
    478478      until [ $i -ge $NbFiles ]; do 
    479         eval file_in_=\${${ListFilesName}[$i]} > /dev/null 2>&1 
    480         eval file_in=${file_in_} 
    481         (( i_ = i+1 )) 
    482         eval file_out_=\${${ListFilesName}[$i_]} > /dev/null 2>&1 
    483         eval file_out=${file_out_} 
    484  
    485         IGCM_sys_IsFileArchived ${file_in} 
    486         if [ $? = 0 ] ; then 
    487           IGCM_sys_Get ${file_in} ${file_out} 
    488           #IGCM_comp_PrepareDeletedFiles ${file_in} ${file_out} 
    489         else 
    490           IGCM_sys_Cp ${file_in} ${file_out} 
    491         fi 
    492  
    493         (( i=i+2 )) 
     479        eval file_in_=\${${ListFilesName}[$i]} > /dev/null 2>&1 
     480        eval file_in=${file_in_} 
     481        (( i_ = i+1 )) 
     482        eval file_out_=\${${ListFilesName}[$i_]} > /dev/null 2>&1 
     483        eval file_out=${file_out_} 
     484 
     485        IGCM_sys_IsFileArchived ${file_in} 
     486        if [ $? = 0 ] ; then 
     487          IGCM_sys_Get ${file_in} ${file_out} 
     488          #IGCM_comp_PrepareDeletedFiles ${file_in} ${file_out} 
     489        else 
     490          IGCM_sys_Cp ${file_in} ${file_out} 
     491        fi 
     492 
     493        (( i=i+2 )) 
    494494      done 
    495495    fi 
     
    501501      ListFilesName=${compname}_BoundaryFiles_ListNonDel 
    502502      eval FileName0=\${${ListFilesName}[0]} > /dev/null 2>&1 
    503        
     503 
    504504      if [ X${FileName0} != X${NULL_STR} ] ; then 
    505         eval NbFiles=\${#${ListFilesName}[@]} > /dev/null 2>&1 
    506          
    507         (( i=0 )) 
    508         until [ $i -ge $NbFiles ]; do 
    509           eval file_in_=\${${ListFilesName}[$i]} > /dev/null 2>&1 
    510           eval file_in=${file_in_} 
    511           (( i_ = i+1 )) 
    512           eval file_out_=\${${ListFilesName}[$i_]} > /dev/null 2>&1 
    513           eval file_out=${file_out_} 
    514  
    515           IGCM_sys_IsFileArchived ${file_in} 
    516           if [ $? = 0 ] ; then 
    517             IGCM_sys_Get ${file_in} ${file_out} 
    518             #IGCM_comp_PrepareDeletedFiles ${file_in} ${file_out} 
    519           else 
    520             IGCM_sys_Cp ${file_in} ${file_out} 
    521           fi 
    522  
    523           if [ X${file_out} != X. ] ; then 
    524             ListFixBoundary=${ListFixBoundary}" "${file_out} 
    525           else 
    526             ListFixBoundary=${ListFixBoundary}" "$( basename ${file_in} ) 
    527           fi 
    528  
    529           (( i=i+2 )) 
    530         done 
     505        eval NbFiles=\${#${ListFilesName}[@]} > /dev/null 2>&1 
     506 
     507        (( i=0 )) 
     508        until [ $i -ge $NbFiles ]; do 
     509          eval file_in_=\${${ListFilesName}[$i]} > /dev/null 2>&1 
     510          eval file_in=${file_in_} 
     511          (( i_ = i+1 )) 
     512          eval file_out_=\${${ListFilesName}[$i_]} > /dev/null 2>&1 
     513          eval file_out=${file_out_} 
     514 
     515          IGCM_sys_IsFileArchived ${file_in} 
     516          if [ $? = 0 ] ; then 
     517            IGCM_sys_Get ${file_in} ${file_out} 
     518            #IGCM_comp_PrepareDeletedFiles ${file_in} ${file_out} 
     519          else 
     520            IGCM_sys_Cp ${file_in} ${file_out} 
     521          fi 
     522 
     523          if [ X${file_out} != X. ] ; then 
     524            ListFixBoundary=${ListFixBoundary}" "${file_out} 
     525          else 
     526            ListFixBoundary=${ListFixBoundary}" "$( basename ${file_in} ) 
     527          fi 
     528 
     529          (( i=i+2 )) 
     530        done 
    531531      fi 
    532532    fi 
    533533  done 
    534    
     534 
    535535  IGCM_debug_PopStack "IGCM_comp_GetInputBoundaryFiles" 
    536536} 
     
    571571    IGCM_debug_Print 3 "Parameters ${compname}" 
    572572 
    573     card=${SUBMIT_DIR}/COMP/${compname}.card     
     573    card=${SUBMIT_DIR}/COMP/${compname}.card 
    574574 
    575575    IGCM_card_DefineArrayFromOption ${card} ParametersFiles List 
     
    582582      (( i=0 )) 
    583583      until [ $i -ge $NbFiles ]; do 
    584         eval file_in_=\${${ListFilesName}[$i]} > /dev/null 2>&1 
    585         eval file_in=${file_in_} 
    586         (( i_ = i+1 )) 
    587         eval file_out_=\${${ListFilesName}[$i_]} > /dev/null 2>&1 
    588         eval file_out=${file_out_}  
    589  
    590         IGCM_sys_Cp ${file_in} ${file_out}  
    591         IGCM_comp_PrepareDeletedFiles ${file_in} ${file_out} 
    592  
    593         (( i=i+2 )) 
     584        eval file_in_=\${${ListFilesName}[$i]} > /dev/null 2>&1 
     585        eval file_in=${file_in_} 
     586        (( i_ = i+1 )) 
     587        eval file_out_=\${${ListFilesName}[$i_]} > /dev/null 2>&1 
     588        eval file_out=${file_out_}  
     589 
     590        IGCM_sys_Cp ${file_in} ${file_out}  
     591        IGCM_comp_PrepareDeletedFiles ${file_in} ${file_out} 
     592 
     593        (( i=i+2 )) 
    594594      done 
    595595    fi 
     
    614614  typeset file_in file_out file_in_ file_out_ file_in_Name 
    615615  typeset -Z4 j4 
     616 
     617  IsMatching="" 
    616618 
    617619  for comp in ${config_ListOfComponents[*]} ; do 
     
    632634 
    633635      if [ "${config_Restarts_OverRule}" = "y" ] ; then 
    634         eval config_${comp}_Restart="y" 
    635         eval config_${comp}_RestartDate=${config_Restarts_RestartDate} 
    636         eval config_${comp}_RestartJobName=${config_Restarts_RestartJobName} 
    637         eval config_${comp}_RestartPath=${config_Restarts_RestartPath} 
    638         eval do_start=\${config_${comp}_Restart} > /dev/null 2>&1 
    639         eval CompOldName=${comp} 
     636        eval config_${comp}_Restart="y" 
     637        eval config_${comp}_RestartDate=${config_Restarts_RestartDate} 
     638        eval config_${comp}_RestartJobName=${config_Restarts_RestartJobName} 
     639        eval config_${comp}_RestartPath=${config_Restarts_RestartPath} 
     640        eval do_start=\${config_${comp}_Restart} > /dev/null 2>&1 
     641        eval CompOldName=${comp} 
    640642      else 
    641         # Read component Restarts parameters 
    642         IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/config.card ${comp} Restart 
    643         eval do_start=\${config_${comp}_Restart} > /dev/null 2>&1 
    644  
    645         if [ "${do_start}" = "y" ] ; then 
    646           IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/config.card ${comp} RestartDate 
    647           IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/config.card ${comp} RestartJobName 
    648           IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/config.card ${comp} RestartPath 
    649         else 
    650           eval config_${comp}_RestartDate=-1 
    651           eval config_${comp}_RestartJobName=${NULL_STR} 
    652           eval config_${comp}_RestartPath=${NULL_STR} 
    653         fi 
    654         IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/config.card ${comp} OldName 
    655         eval CompOldName=\${config_${comp}_OldName} 
    656         if [ X${CompOldName} = X ] ; then 
    657           eval CompOldName=${comp} 
    658         fi 
     643        # Read component Restarts parameters 
     644        IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/config.card ${comp} Restart 
     645        eval do_start=\${config_${comp}_Restart} > /dev/null 2>&1 
     646 
     647        if [ "${do_start}" = "y" ] ; then 
     648          IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/config.card ${comp} RestartDate 
     649          IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/config.card ${comp} RestartJobName 
     650          IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/config.card ${comp} RestartPath 
     651        else 
     652          eval config_${comp}_RestartDate=-1 
     653          eval config_${comp}_RestartJobName=${NULL_STR} 
     654          eval config_${comp}_RestartPath=${NULL_STR} 
     655        fi 
     656        IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/config.card ${comp} OldName 
     657        eval CompOldName=\${config_${comp}_OldName} 
     658        if [ X${CompOldName} = X ] ; then 
     659          eval CompOldName=${comp} 
     660        fi 
     661 
     662        # Reinitialize IsMatching to allow searching for a different tar file for each component. 
     663        IsMatching="" 
     664        TarFileFound="" 
    659665      fi 
    660666 
     
    663669        # Restore Restarts files 
    664670        #----------------------- 
    665         if ( [ X${FileName0} != X${NULL_STR} ] && [ X${FileName0} != XNONE ] ) ; then 
    666           eval NbFiles=\${#${ListFilesName}[@]} > /dev/null 2>&1 
    667  
    668           (( i=1 )) 
    669           until [ $i -gt $NbFiles ]; do 
    670             eval file_in_=\${${ListFilesName}[$i]} > /dev/null 2>&1 
    671             eval file_in=${file_in_} 
    672             (( i_ = i+1 )) 
    673             eval file_out_=\${${ListFilesName}[$i_]} > /dev/null 2>&1 
    674             eval file_out=${file_out_} 
    675              
    676             eval Date_tmp=\${config_${comp}_RestartDate} 
    677             Date_r=$( IGCM_date_ConvertFormatToGregorian ${Date_tmp} ) 
     671        if ( [ X${FileName0} != X${NULL_STR} ] && [ X${FileName0} != XNONE ] ) ; then 
     672          eval NbFiles=\${#${ListFilesName}[@]} > /dev/null 2>&1 
     673 
     674          (( i=1 )) 
     675          until [ $i -gt $NbFiles ]; do 
     676            eval file_in_=\${${ListFilesName}[$i]} > /dev/null 2>&1 
     677            eval file_in=${file_in_} 
     678            (( i_ = i+1 )) 
     679            eval file_out_=\${${ListFilesName}[$i_]} > /dev/null 2>&1 
     680            eval file_out=${file_out_} 
     681 
     682            eval Date_tmp=\${config_${comp}_RestartDate} 
     683            Date_r=$( IGCM_date_ConvertFormatToGregorian ${Date_tmp} ) 
    678684            # will be re-use 
    679685            eval RestartPath=\${config_${comp}_RestartPath} 
    680686            eval RestartJobName=\${config_${comp}_RestartJobName} 
    681687            # 
    682             Path_r=${RestartPath}/${RestartJobName}/${CompOldName}/Restart 
    683             file_in_Name=${RestartJobName}_${Date_r}_${file_in} 
    684  
    685             extension_in=$( echo ${file_in_Name##*.} ) 
    686             extension_out=$( echo ${file_out##*.} ) 
    687  
    688             generic_restart_file_name_in=$( basename ${file_in_Name} .${extension_in} ) 
    689             generic_restart_file_name_out=$( basename ${file_out} .${extension_out} ) 
    690              
    691             Path_OUT=${Path_r}/${generic_restart_file_name_in} 
     688            Path_r=${RestartPath}/${RestartJobName}/${CompOldName}/Restart 
     689            file_in_Name=${RestartJobName}_${Date_r}_${file_in} 
     690 
     691            extension_in=$( echo ${file_in_Name##*.} ) 
     692            extension_out=$( echo ${file_out##*.} ) 
     693 
     694            generic_restart_file_name_in=$( basename ${file_in_Name} .${extension_in} ) 
     695            generic_restart_file_name_out=$( basename ${file_out} .${extension_out} ) 
     696 
     697            Path_OUT=${Path_r}/${generic_restart_file_name_in} 
    692698 
    693699            if [ $( IGCM_sys_TestFileBuffer ${Path_OUT}*.${extension_in} ; echo $? ) = 0 ] ; then 
    694               IGCM_debug_Print 3 "Buffered restart" 
    695               Buffered=true 
    696               Archived=false 
    697               Tared=false 
    698               nb_restart_file=$(IGCM_sys_CountFileBuffer ${Path_OUT}_????.${extension_in}) 
     700              IGCM_debug_Print 3 "Buffered restart" 
     701              Buffered=true 
     702              Archived=false 
     703              Tared=false 
     704              nb_restart_file=$(IGCM_sys_CountFileBuffer ${Path_OUT}_????.${extension_in}) 
    699705            elif [ $( IGCM_sys_TestFileArchive ${Path_OUT}*.${extension_in} ; echo $? ) = 0 ] ; then 
    700               IGCM_debug_Print 3 "Archived restart" 
    701               Buffered=false 
    702               Archived=true 
    703               Tared=false 
    704               nb_restart_file=$(IGCM_sys_CountFileArchive ${Path_OUT}_????.${extension_in}) 
     706              IGCM_debug_Print 3 "Archived restart" 
     707              Buffered=false 
     708              Archived=true 
     709              Tared=false 
     710              nb_restart_file=$(IGCM_sys_CountFileArchive ${Path_OUT}_????.${extension_in}) 
    705711            else 
    706712              IGCM_debug_Print 3 "Tared restart" 
    707               Buffered=false 
    708               Archived=false 
    709               Tared=true 
     713              Buffered=false 
     714              Archived=false 
     715              Tared=true 
    710716              # Look after the tar file we want if we did not found it already 
    711               if [ X${IsMatching} = X ] ; then 
    712                 for PotentialTarFile in $( find ${RestartPath}/${RestartJobName}/RESTART -name "${RestartJobName}_*_restart.tar" -print ) ; do 
    713                   IsMatching=$( echo ${PotentialTarFile##*/} | sed "s:^${RestartJobName}_::" | sed "s:\.restart\.tar$::" | gawk -F_ -v restartdate=${Date_r} '{if (($1 < restartdate) && ($2 >= restartdate)) {print $1"_"$2}}' ) 
    714                   if [ ! X${IsMatching} = X ] ; then 
    715                     TarFileFound=${PotentialTarFile} 
    716                     break 
    717                   fi 
    718                 done 
    719               fi 
     717              if [ X${IsMatching} = X ] ; then 
     718                for PotentialTarFile in $( find ${RestartPath}/${RestartJobName}/RESTART -name "${RestartJobName}_*_restart.tar" -print ) ; do 
     719                  IsMatching=$( echo ${PotentialTarFile##*/} | \ 
     720                        sed "s:^${RestartJobName}_::" | \ 
     721                        sed "s:\.restart\.tar$::" | \ 
     722                        gawk -F_ -v restartdate=${Date_r} \ 
     723                             '{if (($1 < restartdate) && ($2 >= restartdate)) {print $1"_"$2}}' ) 
     724                  if [ ! X${IsMatching} = X ] ; then 
     725                    TarFileFound=${PotentialTarFile} 
     726                    break 
     727                  fi 
     728                done 
     729              fi 
    720730              IGCM_debug_Print 1 "tar xvf ${TarFileFound} ${comp}_${generic_restart_file_name_in}*.${extension_in}" 
    721               tar xvf ${TarFileFound} ${comp}_${generic_restart_file_name_in}*.${extension_in} 
    722               nb_restart_file=$( IGCM_sys_CountFileBuffer ${comp}_${generic_restart_file_name_in}_????.${extension_in} ) 
    723             fi 
     731              tar xvf ${TarFileFound} ${comp}_${generic_restart_file_name_in}*.${extension_in} 
     732              nb_restart_file=$( IGCM_sys_CountFileBuffer ${comp}_${generic_restart_file_name_in}_????.${extension_in} ) 
     733            fi 
    724734 
    725735            if [ ${nb_restart_file} -gt 1 ] ; then 
    726               j=0 
    727               until [ $j -ge ${nb_restart_file} ]; do 
    728                 j4=${j} 
    729                 if [ X${Buffered} = Xtrue ] ; then 
    730                   IGCM_sys_GetBuffer ${Path_OUT}_${j4}.${extension_in} ${generic_restart_file_name_out}_${j4}.${extension_out} 
    731                 elif [ X${Archived} = Xtrue ] ; then 
    732                   IGCM_sys_Get ${Path_OUT}_${j4}.${extension_in} ${generic_restart_file_name_out}_${j4}.${extension_out} 
    733                 elif [ X${Tared} = Xtrue ] ; then 
    734                   IGCM_sys_Mv ${comp}_${generic_restart_file_name_in}_${j4}.${extension_in} ${generic_restart_file_name_out}_${j4}.${extension_out} 
    735                 fi 
    736                 (( j=j+1 )) 
    737               done 
     736              j=0 
     737              until [ $j -ge ${nb_restart_file} ]; do 
     738                j4=${j} 
     739                if [ X${Buffered} = Xtrue ] ; then 
     740                  IGCM_sys_GetBuffer ${Path_OUT}_${j4}.${extension_in} ${generic_restart_file_name_out}_${j4}.${extension_out} 
     741                elif [ X${Archived} = Xtrue ] ; then 
     742                  IGCM_sys_Get ${Path_OUT}_${j4}.${extension_in} ${generic_restart_file_name_out}_${j4}.${extension_out} 
     743                elif [ X${Tared} = Xtrue ] ; then 
     744                  IGCM_sys_Mv ${comp}_${generic_restart_file_name_in}_${j4}.${extension_in} ${generic_restart_file_name_out}_${j4}.${extension_out} 
     745                fi 
     746                (( j=j+1 )) 
     747              done 
    738748 
    739749              if [ X${NUM_PROC_OCE} != X ] ; then 
     
    743753                fi 
    744754              fi 
    745             else 
    746               if [ X${Buffered} = Xtrue ] ; then 
    747                 IGCM_sys_GetBuffer ${Path_r}/${file_in_Name} ${file_out} 
    748               elif [ X${Archived} = Xtrue ] ; then 
    749                 IGCM_sys_Get ${Path_r}/${file_in_Name} ${file_out} 
    750               elif [ X${Tared} = Xtrue ] ; then 
    751                 IGCM_sys_Mv ${comp}_${file_in_Name} ${file_out} 
    752               fi 
    753             fi 
    754             (( i=i+3 )) 
    755           done 
    756  
    757         else 
    758           if [ X${FileName0} != XNONE ] ; then 
    759             IGCM_debug_Exit "IGCM_comp_GetInputRestartFiles : No file in list for ${compname}." 
    760           else 
    761             IGCM_debug_Print 1 "IGCM_comp_GetInputRestartFiles : NONE specified in Restart List ${compname}." 
    762           fi 
    763         fi 
     755            else 
     756              if [ X${Buffered} = Xtrue ] ; then 
     757                IGCM_sys_GetBuffer ${Path_r}/${file_in_Name} ${file_out} 
     758              elif [ X${Archived} = Xtrue ] ; then 
     759                IGCM_sys_Get ${Path_r}/${file_in_Name} ${file_out} 
     760              elif [ X${Tared} = Xtrue ] ; then 
     761                IGCM_sys_Mv ${comp}_${file_in_Name} ${file_out} 
     762              fi 
     763            fi 
     764            (( i=i+3 )) 
     765          done 
     766 
     767        else 
     768          if [ X${FileName0} != XNONE ] ; then 
     769            IGCM_debug_Exit "IGCM_comp_GetInputRestartFiles : No file in list for ${compname}." 
     770          else 
     771            IGCM_debug_Print 1 "IGCM_comp_GetInputRestartFiles : NONE specified in Restart List ${compname}." 
     772          fi 
     773        fi 
    764774      fi 
    765775    elif [ ${Period} -eq 1 ] ; then 
     
    769779      #----------------------- 
    770780      if ( [ X${FileName0} != X${NULL_STR} ] && [ X${FileName0} != XNONE ] ) ; then 
    771         eval NbFiles=\${#${ListFilesName}[@]} > /dev/null 2>&1 
    772  
    773         (( i=1 )) 
    774         until [ $i -gt $NbFiles ]; do 
    775           eval file_in_=\${${ListFilesName}[$i]} > /dev/null 2>&1 
    776           eval file_in=${file_in_} 
    777           (( i_ = i+1 )) 
    778           eval file_out_=\${${ListFilesName}[$i_]} > /dev/null 2>&1 
    779           eval file_out=${file_out_} 
    780            
    781           file_in_Name=${run_Configuration_OldPrefix}_${file_in} 
    782            
    783           extension_in=$( echo ${file_in_Name##*.} ) 
    784           extension_out=$( echo ${file_out##*.} ) 
    785  
    786           generic_restart_file_name_in=$( basename ${file_in_Name} .${extension_in} ) 
    787           generic_restart_file_name_out=$( basename ${file_out} .${extension_out} ) 
    788  
    789           eval Path_BUF=\${R_BUF_${comp}_R}/${generic_restart_file_name_in} 
    790           eval Path_OUT=\${R_OUT_${comp}_R}/${generic_restart_file_name_in} 
     781        eval NbFiles=\${#${ListFilesName}[@]} > /dev/null 2>&1 
     782 
     783        (( i=1 )) 
     784        until [ $i -gt $NbFiles ]; do 
     785          eval file_in_=\${${ListFilesName}[$i]} > /dev/null 2>&1 
     786          eval file_in=${file_in_} 
     787          (( i_ = i+1 )) 
     788          eval file_out_=\${${ListFilesName}[$i_]} > /dev/null 2>&1 
     789          eval file_out=${file_out_} 
     790 
     791          file_in_Name=${run_Configuration_OldPrefix}_${file_in} 
     792 
     793          extension_in=$( echo ${file_in_Name##*.} ) 
     794          extension_out=$( echo ${file_out##*.} ) 
     795 
     796          generic_restart_file_name_in=$( basename ${file_in_Name} .${extension_in} ) 
     797          generic_restart_file_name_out=$( basename ${file_out} .${extension_out} ) 
     798 
     799          eval Path_BUF=\${R_BUF_${comp}_R}/${generic_restart_file_name_in} 
     800          eval Path_OUT=\${R_OUT_${comp}_R}/${generic_restart_file_name_in} 
    791801 
    792802          if [ $( IGCM_sys_TestFileBuffer ${Path_BUF}*.${extension_in} ; echo $? ) = 0 ] ; then 
    793             IGCM_debug_Print 3 "Buffered restart" 
    794             Buffered=true 
    795             Archived=false 
    796             Tared=false 
    797             nb_restart_file=$(IGCM_sys_CountFileBuffer ${Path_BUF}_????.${extension_in}) 
     803            IGCM_debug_Print 3 "Buffered restart" 
     804            Buffered=true 
     805            Archived=false 
     806            Tared=false 
     807            nb_restart_file=$(IGCM_sys_CountFileBuffer ${Path_BUF}_????.${extension_in}) 
    798808          elif [ $( IGCM_sys_TestFileArchive ${Path_OUT}*.${extension_in} ; echo $? ) = 0 ] ; then 
    799             IGCM_debug_Print 3 "Archived restart" 
    800             Buffered=false 
    801             Archived=true 
    802             Tared=false 
    803             nb_restart_file=$(IGCM_sys_CountFileArchive ${Path_OUT}_????.${extension_in}) 
    804           else 
    805             IGCM_debug_Print 3 "Tared restart" 
    806             Buffered=false 
    807             Archived=false 
    808             Tared=true 
    809             # Look after the tar file we want if we did not found it already 
    810             if [ X${IsMatching} = X ] ; then 
    811               for PotentialTarFile in $( find ${R_SAVE}/RESTART -name "${config_UserChoices_JobName}_*_restart.tar" -print ) ; do 
    812                 IsMatching=$( echo ${PotentialTarFile##*/} | sed "s:^${config_UserChoices_JobName}_::" | sed "s:\.restart\.tar$::" | gawk -F_ -v restartdate=${LastPeriodDateEnd} '{if (($1 < restartdate) && ($2 >= restartdate)) {print $1"_"$2}}' ) 
    813                 if [ ! X${IsMatching} = X ] ; then 
    814                   TarFileFound=${PotentialTarFile} 
    815                   break 
    816                 fi 
    817               done 
    818             fi 
    819             tar xvf ${TarFileFound} ${comp}_${generic_restart_file_name_in}*.${extension_in} 
    820             nb_restart_file=$( IGCM_sys_CountFileBuffer ${comp}_${generic_restart_file_name_in}_????.${extension_in} ) 
    821           fi 
    822  
    823           if [ ${nb_restart_file} -gt 1 ] ; then 
    824             j=0 
    825             until [ $j -ge ${nb_restart_file} ]; do 
    826               j4=${j} 
    827               if [ X${Buffered} = Xtrue ] ; then 
    828                 IGCM_sys_GetBuffer ${Path_BUF}_${j4}.${extension_in} ${generic_restart_file_name_out}_${j4}.${extension_out} 
    829               elif [ X${Archived} = Xtrue ] ; then 
    830                 IGCM_sys_Get ${Path_OUT}_${j4}.${extension_in} ${generic_restart_file_name_out}_${j4}.${extension_out} 
    831               elif [ X${Tared} = Xtrue ] ; then 
    832                 IGCM_sys_Mv ${comp}_${generic_restart_file_name_in}_${j4}.${extension_in} ${generic_restart_file_name_out}_${j4}.${extension_out} 
    833               fi 
    834               (( j=j+1 )) 
    835             done 
    836           else 
    837             if [ X${Buffered} = Xtrue ] ; then 
    838               eval IGCM_sys_GetBuffer \${R_BUF_${comp}_R}/${file_in_Name} ${file_out} 
    839             elif [ X${Archived} = Xtrue ] ; then 
    840               eval IGCM_sys_Get \${R_OUT_${comp}_R}/${file_in_Name} ${file_out} 
    841             elif [ X${Tared} = Xtrue ] ; then 
    842               IGCM_sys_Mv ${comp}_${file_in_Name} ${file_out} 
    843             fi 
    844           fi 
    845           (( i=i+3 )) 
    846         done 
     809            IGCM_debug_Print 3 "Archived restart" 
     810            Buffered=false 
     811            Archived=true 
     812            Tared=false 
     813            nb_restart_file=$(IGCM_sys_CountFileArchive ${Path_OUT}_????.${extension_in}) 
     814          else 
     815            IGCM_debug_Print 3 "Tared restart" 
     816            Buffered=false 
     817            Archived=false 
     818            Tared=true 
     819            # Look after the tar file we want if we did not found it already 
     820            if [ X${IsMatching} = X ] ; then 
     821              for PotentialTarFile in $( find ${R_SAVE}/RESTART -name "${config_UserChoices_JobName}_*_restart.tar" -print ) ; do 
     822                IsMatching=$( echo ${PotentialTarFile##*/} | sed "s:^${config_UserChoices_JobName}_::" | sed "s:\.restart\.tar$::" | gawk -F_ -v restartdate=${LastPeriodDateEnd} '{if (($1 < restartdate) && ($2 >= restartdate)) {print $1"_"$2}}' ) 
     823                if [ ! X${IsMatching} = X ] ; then 
     824                  TarFileFound=${PotentialTarFile} 
     825                  break 
     826                fi 
     827              done 
     828            fi 
     829            tar xvf ${TarFileFound} ${comp}_${generic_restart_file_name_in}*.${extension_in} 
     830            nb_restart_file=$( IGCM_sys_CountFileBuffer ${comp}_${generic_restart_file_name_in}_????.${extension_in} ) 
     831          fi 
     832 
     833          if [ ${nb_restart_file} -gt 1 ] ; then 
     834            j=0 
     835            until [ $j -ge ${nb_restart_file} ]; do 
     836              j4=${j} 
     837              if [ X${Buffered} = Xtrue ] ; then 
     838                IGCM_sys_GetBuffer ${Path_BUF}_${j4}.${extension_in} ${generic_restart_file_name_out}_${j4}.${extension_out} 
     839              elif [ X${Archived} = Xtrue ] ; then 
     840                IGCM_sys_Get ${Path_OUT}_${j4}.${extension_in} ${generic_restart_file_name_out}_${j4}.${extension_out} 
     841              elif [ X${Tared} = Xtrue ] ; then 
     842                IGCM_sys_Mv ${comp}_${generic_restart_file_name_in}_${j4}.${extension_in} ${generic_restart_file_name_out}_${j4}.${extension_out} 
     843              fi 
     844              (( j=j+1 )) 
     845            done 
     846          else 
     847            if [ X${Buffered} = Xtrue ] ; then 
     848              eval IGCM_sys_GetBuffer \${R_BUF_${comp}_R}/${file_in_Name} ${file_out} 
     849            elif [ X${Archived} = Xtrue ] ; then 
     850              eval IGCM_sys_Get \${R_OUT_${comp}_R}/${file_in_Name} ${file_out} 
     851            elif [ X${Tared} = Xtrue ] ; then 
     852              IGCM_sys_Mv ${comp}_${file_in_Name} ${file_out} 
     853            fi 
     854          fi 
     855          (( i=i+3 )) 
     856        done 
    847857      else 
    848         if [ X${FileName0} != XNONE ] ; then 
    849           IGCM_debug_Exit "IGCM_comp_GetInputRestartFiles : No file in list for ${compname}." 
    850         else 
    851           IGCM_debug_Print 1 "IGCM_comp_GetInputRestartFiles : NONE specified in Restart List ${compname}." 
    852         fi 
     858        if [ X${FileName0} != XNONE ] ; then 
     859          IGCM_debug_Exit "IGCM_comp_GetInputRestartFiles : No file in list for ${compname}." 
     860        else 
     861          IGCM_debug_Print 1 "IGCM_comp_GetInputRestartFiles : NONE specified in Restart List ${compname}." 
     862        fi 
    853863      fi 
    854864    fi 
     
    918928    if [ ${DRYRUN} -le 1 ] && [ X${ExeNameIn} != X\"\" ] &&  [ ! -f ${R_EXE}/${ExeNameIn} ] ; then 
    919929      IGCM_debug_Exit "IGCM_comp_Update missing executable ${ExeNameIn}" 
    920     fi  
     930    fi 
    921931 
    922932    if [ ${Period} -eq 1 ] && [ -f ${R_EXE}/${ExeNameIn} ] ; then 
     
    976986    ${comp}_Finalize 
    977987 
    978     card=${SUBMIT_DIR}/COMP/${compname}.card     
     988    card=${SUBMIT_DIR}/COMP/${compname}.card 
    979989 
    980990    # Save Restarts files 
     
    984994    ListFilesName=${compname}_RestartFiles_List 
    985995    eval FileName0=\${${ListFilesName}[0]} > /dev/null 2>&1 
    986      
     996 
    987997    if ( [ X${FileName0} != X${NULL_STR} ] && [ X${FileName0} != XNONE ] ) ; then 
    988998      eval NbFiles=\${#${ListFilesName}[@]} > /dev/null 2>&1 
    989        
     999 
    9901000      (( i=0 )) 
    9911001      until [ $i -ge $NbFiles ]; do 
    992         eval file_in_=\${${ListFilesName}[$i]} > /dev/null 2>&1 
    993         eval file_in=${file_in_} 
    994  
    995         (( i_ = i+1 )) 
    996         eval file_out_=\${${ListFilesName}[$i_]} > /dev/null 2>&1 
    997         eval file_out=${file_out_} 
    998  
    999         (( i_ = i+2 )) 
    1000         eval file_outin_=\${${ListFilesName}[$i_]} > /dev/null 2>&1 
    1001         eval file_outin=${file_outin_} 
    1002  
    1003         generic_restart_file_name_in=$(    basename ${file_in} .nc ) 
    1004         generic_restart_file_name_out=$(   basename ${config_UserChoices_JobName}_${PeriodDateEnd}_${file_out} .nc ) 
    1005         generic_restart_file_name_outin=$( basename ${file_outin} .nc ) 
    1006          
    1007         nb_restart_file=$( ls ${generic_restart_file_name_in}_????.nc 2>/dev/null | wc -l )  
    1008         if [ ${nb_restart_file} -gt 1 ] ; then 
    1009           j=0 
    1010           until [ $j -ge ${nb_restart_file} ]; do 
    1011             j4=${j} 
    1012             if [ X${Pack} = Xtrue ] ; then 
    1013               eval IGCM_sys_PutBuffer_Rest ${generic_restart_file_name_in}_${j4}.nc \${R_BUF_${comp}_R}/${generic_restart_file_name_out}_${j4}.nc 
    1014             else 
    1015               eval IGCM_sys_Put_Rest ${generic_restart_file_name_in}_${j4}.nc \${R_OUT_${comp}_R}/${generic_restart_file_name_out}_${j4}.nc 
    1016             fi 
    1017             if [ ! ${file_in} = ${file_outin} ] ; then 
    1018               if ( ${ExitFlag} ) ; then 
    1019                 echo "IGCM_sys_Mv ${generic_restart_file_name_in}_${j4}.nc ${generic_restart_file_name_outin}_${j4}.nc not executed." 
    1020               else 
    1021                 IGCM_sys_Mv ${generic_restart_file_name_in}_${j4}.nc ${generic_restart_file_name_outin}_${j4}.nc 
    1022               fi 
    1023             fi 
    1024             (( j=j+1 )) 
    1025           done 
    1026         else 
    1027           if [ X${Pack} = Xtrue ] ; then 
    1028             eval IGCM_sys_PutBuffer_Rest ${file_in} \${R_BUF_${comp}_R}/${config_UserChoices_JobName}_${PeriodDateEnd}_${file_out} 
    1029           else 
    1030             eval IGCM_sys_Put_Rest ${file_in} \${R_OUT_${comp}_R}/${config_UserChoices_JobName}_${PeriodDateEnd}_${file_out} 
    1031           fi 
    1032           if [ ! ${file_in} = ${file_outin} ] ; then 
    1033             if ( ${ExitFlag} ) ; then 
    1034               echo "IGCM_sys_Mv ${file_in} ${file_outin} not executed." 
    1035             else 
    1036               IGCM_sys_Mv ${file_in} ${file_outin} 
    1037             fi 
    1038           fi 
    1039         fi 
    1040  
    1041         (( i=i+3 )) 
     1002        eval file_in_=\${${ListFilesName}[$i]} > /dev/null 2>&1 
     1003        eval file_in=${file_in_} 
     1004 
     1005        (( i_ = i+1 )) 
     1006        eval file_out_=\${${ListFilesName}[$i_]} > /dev/null 2>&1 
     1007        eval file_out=${file_out_} 
     1008 
     1009        (( i_ = i+2 )) 
     1010        eval file_outin_=\${${ListFilesName}[$i_]} > /dev/null 2>&1 
     1011        eval file_outin=${file_outin_} 
     1012 
     1013        generic_restart_file_name_in=$(    basename ${file_in} .nc ) 
     1014        generic_restart_file_name_out=$(   basename ${config_UserChoices_JobName}_${PeriodDateEnd}_${file_out} .nc ) 
     1015        generic_restart_file_name_outin=$( basename ${file_outin} .nc ) 
     1016 
     1017        nb_restart_file=$( ls ${generic_restart_file_name_in}_????.nc 2>/dev/null | wc -l )  
     1018        if [ ${nb_restart_file} -gt 1 ] ; then 
     1019          j=0 
     1020          until [ $j -ge ${nb_restart_file} ]; do 
     1021            j4=${j} 
     1022            if [ X${Pack} = Xtrue ] ; then 
     1023              eval IGCM_sys_PutBuffer_Rest ${generic_restart_file_name_in}_${j4}.nc \${R_BUF_${comp}_R}/${generic_restart_file_name_out}_${j4}.nc 
     1024            else 
     1025              eval IGCM_sys_Put_Rest ${generic_restart_file_name_in}_${j4}.nc \${R_OUT_${comp}_R}/${generic_restart_file_name_out}_${j4}.nc 
     1026            fi 
     1027            if [ ! ${file_in} = ${file_outin} ] ; then 
     1028              if ( ${ExitFlag} ) ; then 
     1029                echo "IGCM_sys_Mv ${generic_restart_file_name_in}_${j4}.nc ${generic_restart_file_name_outin}_${j4}.nc not executed." 
     1030              else 
     1031                IGCM_sys_Mv ${generic_restart_file_name_in}_${j4}.nc ${generic_restart_file_name_outin}_${j4}.nc 
     1032              fi 
     1033            fi 
     1034            (( j=j+1 )) 
     1035          done 
     1036        else 
     1037          if [ X${Pack} = Xtrue ] ; then 
     1038            eval IGCM_sys_PutBuffer_Rest ${file_in} \${R_BUF_${comp}_R}/${config_UserChoices_JobName}_${PeriodDateEnd}_${file_out} 
     1039          else 
     1040            eval IGCM_sys_Put_Rest ${file_in} \${R_OUT_${comp}_R}/${config_UserChoices_JobName}_${PeriodDateEnd}_${file_out} 
     1041          fi 
     1042          if [ ! ${file_in} = ${file_outin} ] ; then 
     1043            if ( ${ExitFlag} ) ; then 
     1044              echo "IGCM_sys_Mv ${file_in} ${file_outin} not executed." 
     1045            else 
     1046              IGCM_sys_Mv ${file_in} ${file_outin} 
     1047            fi 
     1048          fi 
     1049        fi 
     1050 
     1051        (( i=i+3 )) 
    10421052      done 
    10431053    else 
    10441054      if [ X${FileName0} != XNONE ] ; then 
    1045         IGCM_debug_Exit "IGCM_comp_Finalize : No file in restart list for ${compname}." 
     1055        IGCM_debug_Exit "IGCM_comp_Finalize : No file in restart list for ${compname}." 
    10461056      else 
    1047         IGCM_debug_Print 1 "IGCM_comp_Finalize : NONE specified in Restart List ${compname}." 
     1057        IGCM_debug_Print 1 "IGCM_comp_Finalize : NONE specified in Restart List ${compname}." 
    10481058      fi 
    10491059    fi 
     
    10611071      (( i=0 )) 
    10621072      until [ $i -ge $NbFiles ]; do 
    1063         SaveOnArchive=true 
    1064         eval file_in_=\${${ListFilesName}[$i]} > /dev/null 2>&1 
    1065         eval file_in=${file_in_} 
    1066         (( i_ = i+1 )) 
    1067         eval file_out_=\${${ListFilesName}[$i_]} > /dev/null 2>&1 
    1068         eval file_out=${file_out_} 
    1069         # 
    1070         # Override file_out path remplacing R_SAVE by R_BUFR 
    1071         # 
    1072         if [ X${Pack} = Xtrue ] ; then 
    1073           file_out=$( echo $file_out | sed "s:^$R_SAVE:$R_BUFR:" ) 
    1074         fi 
    1075         # 
    1076         # Not necessarily the best option. /!\ Potential side effects /!\ 
    1077         # 
    1078         (( i_ = i+2 )) 
    1079         eval flag_post=\${${ListFilesName}[$i_]} > /dev/null 2>&1 
    1080         # 
    1081         generic_file_name=$( basename ${file_in} .nc ) 
    1082         nb_rebuild_file=$( ls | grep "^${generic_file_name}_[0-9]*.nc" | wc -l ) 
    1083         # 
    1084         if ( [ ${nb_rebuild_file} -eq 1 ] && [ -f ${generic_file_name}_0000.nc ] ) ; then 
    1085           IGCM_debug_Print 2 "Parallelism with 1 process. Rebuilding ${file_in} not needed" 
    1086           IGCM_sys_Mv ${generic_file_name}_0000.nc ${file_in} 
    1087         elif [ ${nb_rebuild_file} -gt 1 ] ; then 
    1088           IGCM_debug_Print 2 "Parallelism detected rebuilding ${file_in} is needed" 
    1089           if [ X${AsynchronousRebuild} = Xfalse ] ; then 
    1090             IGCM_debug_Print 2 "Rebuilding ${file_in} online" 
    1091             IGCM_sys_rebuild ${file_in} ${generic_file_name}_*.nc 
    1092           else 
    1093             IGCM_debug_Print 2 "Preparing offline rebuild for ${file_in}" 
    1094             [ ! -d ${RUN_DIR}/REBUILD_${PeriodDateBegin} ] && IGCM_sys_Mkdir ${RUN_DIR}/REBUILD_${PeriodDateBegin} 
    1095             IGCM_sys_Mv ${generic_file_name}_????.nc ${RUN_DIR}/REBUILD_${PeriodDateBegin} 
    1096  
    1097             # Prepare headers for the shell dedicated to offline rebuild 
    1098             if [ ! -f ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh ] ; then 
    1099               if [ $DRYRUN -le 1 ]; then 
    1100                 echo "#!/bin/ksh                                        " >  ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1101                 echo "function IGCM_FlushRebuild                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1102                 echo "{                                                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1103                 echo "IGCM_debug_PushStack \"IGCM_FlushRebuild\"        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1104                 echo "echo                                              " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1105                 echo "IGCM_debug_Print 1 \"IGCM_FlushRebuild\"          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1106                 echo "echo                                              " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1107                 echo "export R_SAVE=${R_SAVE}                           " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1108                 echo "export R_BUFR=${R_BUFR}                           " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1073        SaveOnArchive=true 
     1074        eval file_in_=\${${ListFilesName}[$i]} > /dev/null 2>&1 
     1075        eval file_in=${file_in_} 
     1076        (( i_ = i+1 )) 
     1077        eval file_out_=\${${ListFilesName}[$i_]} > /dev/null 2>&1 
     1078        eval file_out=${file_out_} 
     1079        # 
     1080        # Override file_out path remplacing R_SAVE by R_BUFR 
     1081        # 
     1082        if [ X${Pack} = Xtrue ] ; then 
     1083          file_out=$( echo $file_out | sed "s:^$R_SAVE:$R_BUFR:" ) 
     1084        fi 
     1085        # 
     1086        # Not necessarily the best option. /!\ Potential side effects /!\ 
     1087        # 
     1088        (( i_ = i+2 )) 
     1089        eval flag_post=\${${ListFilesName}[$i_]} > /dev/null 2>&1 
     1090        # 
     1091        generic_file_name=$( basename ${file_in} .nc ) 
     1092        nb_rebuild_file=$( ls | grep "^${generic_file_name}_[0-9]*.nc" | wc -l ) 
     1093        # 
     1094        if ( [ ${nb_rebuild_file} -eq 1 ] && [ -f ${generic_file_name}_0000.nc ] ) ; then 
     1095          IGCM_debug_Print 2 "Parallelism with 1 process. Rebuilding ${file_in} not needed" 
     1096          IGCM_sys_Mv ${generic_file_name}_0000.nc ${file_in} 
     1097        elif [ ${nb_rebuild_file} -gt 1 ] ; then 
     1098          IGCM_debug_Print 2 "Parallelism detected rebuilding ${file_in} is needed" 
     1099          if [ X${AsynchronousRebuild} = Xfalse ] ; then 
     1100            IGCM_debug_Print 2 "Rebuilding ${file_in} online" 
     1101            IGCM_sys_rebuild ${file_in} ${generic_file_name}_*.nc 
     1102          else 
     1103            IGCM_debug_Print 2 "Preparing offline rebuild for ${file_in}" 
     1104            [ ! -d ${RUN_DIR}/REBUILD_${PeriodDateBegin} ] && IGCM_sys_Mkdir ${RUN_DIR}/REBUILD_${PeriodDateBegin} 
     1105            IGCM_sys_Mv ${generic_file_name}_????.nc ${RUN_DIR}/REBUILD_${PeriodDateBegin} 
     1106 
     1107            # Prepare headers for the shell dedicated to offline rebuild 
     1108            if [ ! -f ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh ] ; then 
     1109              if [ $DRYRUN -le 1 ]; then 
     1110                echo "#!/bin/ksh                                        " >  ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1111                echo "function IGCM_FlushRebuild                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1112                echo "{                                                 " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1113                echo "IGCM_debug_PushStack \"IGCM_FlushRebuild\"        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1114                echo "echo                                              " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1115                echo "IGCM_debug_Print 1 \"IGCM_FlushRebuild\"          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1116                echo "echo                                              " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1117                echo "export R_SAVE=${R_SAVE}                           " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1118                echo "export R_BUFR=${R_BUFR}                           " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    11091119                echo "export R_OUT_KSH=${R_OUT_KSH}                     " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    11101120                echo "export R_BUF_KSH=${R_BUF_KSH}                     " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    11111121                echo "export config_UserChoices_JobName=${config_UserChoices_JobName}     " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    11121122                echo "export config_UserChoices_SpaceName=${config_UserChoices_SpaceName} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1113               fi 
    1114             fi 
    1115             # Prepare the shell dedicated to offline rebuild 
    1116             if [ $DRYRUN -le 1 ]; then 
     1123              fi 
     1124            fi 
     1125            # Prepare the shell dedicated to offline rebuild 
     1126            if [ $DRYRUN -le 1 ]; then 
    11171127              if [ ${file_in} = histstn.nc ] ; then 
    11181128                echo "IGCM_sys_rebuild_station ${file_in} ${generic_file_name}_*.nc" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    11191129              else 
    1120                 echo "IGCM_sys_rebuild ${file_in} ${generic_file_name}_*.nc" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1130                echo "IGCM_sys_rebuild ${file_in} ${generic_file_name}_*.nc" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    11211131              fi 
    11221132              echo "IGCM_debug_Verif_Exit_Post" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1123             fi 
    1124             # 
    1125             # Load Patch we need to apply and apply 
    1126             if [ $DRYRUN -le 1 ]; then 
    1127               if [ X$( eval echo \${${compname}_${flag_post}_Patches[0]} ) !=  X${NULL_STR} ]; then 
    1128                 for Patch in $( eval echo \${${compname}_${flag_post}_Patches[*]} ); do 
    1129                   echo ". ${libIGCM_POST}/libIGCM_post/IGCM_${Patch}.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1130                   echo "IGCM_${Patch} ${file_in}                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1131                   echo "IGCM_debug_Verif_Exit_Post                      " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1132                 done 
    1133               fi 
    1134             fi 
    1135             # 
    1136             if [ $DRYRUN -le 1 ]; then 
    1137               if [ X${Pack} = Xtrue ] ; then 
    1138                 echo "IGCM_sys_PutBuffer_Out ${file_in} ${file_out}     " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1139               else 
    1140                 echo "IGCM_sys_Put_Out ${file_in} ${file_out}           " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1141               fi 
    1142               echo "IGCM_debug_Verif_Exit_Post                          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1143               echo "IGCM_sys_Rm ${generic_file_name}_*.nc               " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1144             fi 
    1145             SaveOnArchive=false 
    1146           fi 
    1147         fi 
    1148         # 
    1149         if [ ${SaveOnArchive} = true ] ; then 
    1150           # 
    1151           # Rebuild has been done online or it was not needed 
    1152           # 
    1153           # If we need to apply a patch we use TMP DIRECTORY before ARCHIVING if asynchronous rebuild is on 
    1154           # 
    1155           thereisapatch=$( eval echo \${${compname}_${flag_post}_Patches[0]} ) 
    1156           if ( [ ! X${thereisapatch} = X${NULL_STR} ] && [ X${AsynchronousRebuild} = Xtrue ] && [ -f ${file_in} ] ) ; then 
    1157             [ ! -d ${RUN_DIR}/REBUILD_${PeriodDateBegin} ] && IGCM_sys_Mkdir ${RUN_DIR}/REBUILD_${PeriodDateBegin} 
    1158             IGCM_sys_Mv ${file_in} ${RUN_DIR}/REBUILD_${PeriodDateBegin} 
    1159             eval FileToBeDeleted[${#FileToBeDeleted[@]}]=REBUILD_${PeriodDateBegin}/${file_in} > /dev/null 2>&1 
    1160             # 
    1161             if [ $DRYRUN -le 1 ]; then 
    1162               if [ ! -f ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh ] ; then 
    1163                 echo "#!/bin/ksh                                      " >  ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1164                 echo "function IGCM_FlushRebuild                      " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1165                 echo "{                                               " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1166                 echo "IGCM_debug_PushStack \"IGCM_FlushRebuild\"      " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1167                 echo "echo                                            " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1168                 echo "IGCM_debug_Print 1 \"IGCM_FlushRebuild\"        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1169                 echo "echo                                            " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1170                 echo "export R_SAVE=${R_SAVE}                         " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1171                 echo "export config_UserChoices_JobName=${config_UserChoices_JobName} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1172               fi 
     1133            fi 
     1134            # 
     1135            # Load Patch we need to apply and apply 
     1136            if [ $DRYRUN -le 1 ]; then 
     1137              if [ X$( eval echo \${${compname}_${flag_post}_Patches[0]} ) !=  X${NULL_STR} ]; then 
     1138                for Patch in $( eval echo \${${compname}_${flag_post}_Patches[*]} ); do 
     1139                  echo ". ${libIGCM_POST}/libIGCM_post/IGCM_${Patch}.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1140                  echo "IGCM_${Patch} ${file_in}                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1141                  echo "IGCM_debug_Verif_Exit_Post                      " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1142                done 
     1143              fi 
     1144            fi 
     1145            # 
     1146            if [ $DRYRUN -le 1 ]; then 
     1147              if [ X${Pack} = Xtrue ] ; then 
     1148                echo "IGCM_sys_PutBuffer_Out ${file_in} ${file_out}     " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1149              else 
     1150                echo "IGCM_sys_Put_Out ${file_in} ${file_out}           " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1151              fi 
     1152              echo "IGCM_debug_Verif_Exit_Post                          " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1153              echo "IGCM_sys_Rm ${generic_file_name}_*.nc               " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1154            fi 
     1155            SaveOnArchive=false 
     1156          fi 
     1157        fi 
     1158        # 
     1159        if [ ${SaveOnArchive} = true ] ; then 
     1160          # 
     1161          # Rebuild has been done online or it was not needed 
     1162          # 
     1163          # If we need to apply a patch we use TMP DIRECTORY before ARCHIVING if asynchronous rebuild is on 
     1164          # 
     1165          thereisapatch=$( eval echo \${${compname}_${flag_post}_Patches[0]} ) 
     1166          if ( [ ! X${thereisapatch} = X${NULL_STR} ] && [ X${AsynchronousRebuild} = Xtrue ] && [ -f ${file_in} ] ) ; then 
     1167            [ ! -d ${RUN_DIR}/REBUILD_${PeriodDateBegin} ] && IGCM_sys_Mkdir ${RUN_DIR}/REBUILD_${PeriodDateBegin} 
     1168            IGCM_sys_Mv ${file_in} ${RUN_DIR}/REBUILD_${PeriodDateBegin} 
     1169            eval FileToBeDeleted[${#FileToBeDeleted[@]}]=REBUILD_${PeriodDateBegin}/${file_in} > /dev/null 2>&1 
     1170            # 
     1171            if [ $DRYRUN -le 1 ]; then 
     1172              if [ ! -f ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh ] ; then 
     1173                echo "#!/bin/ksh                                      " >  ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1174                echo "function IGCM_FlushRebuild                      " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1175                echo "{                                               " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1176                echo "IGCM_debug_PushStack \"IGCM_FlushRebuild\"      " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1177                echo "echo                                            " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1178                echo "IGCM_debug_Print 1 \"IGCM_FlushRebuild\"        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1179                echo "echo                                            " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1180                echo "export R_SAVE=${R_SAVE}                         " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1181                echo "export config_UserChoices_JobName=${config_UserChoices_JobName} " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1182              fi 
    11731183              # 
    1174               for Patch in $( eval echo \${${compname}_${flag_post}_Patches[*]} ); do 
    1175                 echo ". ${libIGCM_POST}/libIGCM_post/IGCM_${Patch}.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1176                 echo "IGCM_${Patch} ${file_in}                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1177                 echo "IGCM_debug_Verif_Exit_Post                      " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1178               done 
    1179               # 
    1180               if [ X${Pack} = Xtrue ] ; then 
    1181                 echo "IGCM_sys_PutBuffer_Out ${file_in} ${file_out}   " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1182               else 
    1183                 echo "IGCM_sys_Put_Out ${file_in} ${file_out}         " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1184               fi 
    1185               echo "IGCM_debug_Verif_Exit_Post                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
    1186               # 
    1187             fi 
    1188           else 
    1189             # 
    1190             # No Patch, No Asynchronous rebuild, online rebuild has been done or was not needed 
    1191             # 
    1192             if [ X${Pack} = Xtrue ] ; then 
    1193               IGCM_sys_PutBuffer_Out ${file_in} ${file_out} 
    1194             else 
    1195               IGCM_sys_Put_Out ${file_in} ${file_out} 
    1196             fi 
    1197             eval FileToBeDeleted[${#FileToBeDeleted[@]}]="${file_in}" > /dev/null 2>&1 
    1198             if [ ${nb_rebuild_file} -gt 1 ] ; then 
    1199               for DelFile in $( ls | grep "${generic_file_name}[_0-9]*.nc" ) ; do 
    1200                 eval FileToBeDeleted[${#FileToBeDeleted[@]}]=${DelFile} > /dev/null 2>&1 
    1201               done 
    1202             fi 
    1203           fi 
    1204         fi 
    1205         (( i=i+3 )) 
     1184              for Patch in $( eval echo \${${compname}_${flag_post}_Patches[*]} ); do 
     1185                echo ". ${libIGCM_POST}/libIGCM_post/IGCM_${Patch}.ksh" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1186                echo "IGCM_${Patch} ${file_in}                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1187                echo "IGCM_debug_Verif_Exit_Post                      " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1188              done 
     1189              # 
     1190              if [ X${Pack} = Xtrue ] ; then 
     1191                echo "IGCM_sys_PutBuffer_Out ${file_in} ${file_out}   " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1192              else 
     1193                echo "IGCM_sys_Put_Out ${file_in} ${file_out}         " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1194              fi 
     1195              echo "IGCM_debug_Verif_Exit_Post                        " >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     1196              # 
     1197            fi 
     1198          else 
     1199            # 
     1200            # No Patch, No Asynchronous rebuild, online rebuild has been done or was not needed 
     1201            # 
     1202            if [ X${Pack} = Xtrue ] ; then 
     1203              IGCM_sys_PutBuffer_Out ${file_in} ${file_out} 
     1204            else 
     1205              IGCM_sys_Put_Out ${file_in} ${file_out} 
     1206            fi 
     1207            eval FileToBeDeleted[${#FileToBeDeleted[@]}]="${file_in}" > /dev/null 2>&1 
     1208            if [ ${nb_rebuild_file} -gt 1 ] ; then 
     1209              for DelFile in $( ls | grep "${generic_file_name}[_0-9]*.nc" ) ; do 
     1210                eval FileToBeDeleted[${#FileToBeDeleted[@]}]=${DelFile} > /dev/null 2>&1 
     1211              done 
     1212            fi 
     1213          fi 
     1214        fi 
     1215        (( i=i+3 )) 
    12061216      done 
    12071217    fi 
     
    12121222    IGCM_card_DefineArrayFromOption ${card} OutputText List 
    12131223    ListTextName=${compname}_OutputText_List 
    1214      
     1224 
    12151225    eval TextName0=\${${ListTextName}[0]} > /dev/null 2>&1 
    12161226    if [ X${TextName0} != X${NULL_STR} ] ; then 
     
    12191229      (( i=0 )) 
    12201230      until [ $i -eq $NbFiles ]; do 
    1221         eval file_in=\${${ListTextName}[$i]} > /dev/null 2>&1 
    1222         eval file_out=${PREFIX}_${file_in} 
    1223  
    1224         (( i=i+1 )) 
    1225  
    1226         unset list_file 
    1227         #set +A list_file -- $( ls ${file_in}* | sort 2>/dev/null ) 
     1231        eval file_in=\${${ListTextName}[$i]} > /dev/null 2>&1 
     1232        eval file_out=${PREFIX}_${file_in} 
     1233 
     1234        (( i=i+1 )) 
     1235 
     1236        unset list_file 
     1237        #set +A list_file -- $( ls ${file_in}* | sort 2>/dev/null ) 
    12281238        # result for a a1 a10 a2 with file_in=a a a1 a2 a10 
    1229         set +A list_file -- $( [ -f ${file_in} ] && ls ${file_in} ; for i in $(ls ${file_in}* 2>/dev/null | sed "s/${file_in}//" | sort -n) ; do ls ${file_in}$i ; done ) 
    1230         nlist_file=${#list_file[@]} 
    1231           if [ ${nlist_file} -gt 1 ] ; then 
    1232             if ( ${compactoutputs} ) ; then 
    1233               IGCM_debug_Print 2 "Parallelism of Text Output with ${nlist_file} files." 
    1234               IGCM_debug_Print 2 "Compact files in ${file_out} : " ${list_file[*]} 
    1235               echo ${list_file[*]} > ${file_out} 
    1236               echo " 
     1239        set +A list_file -- $( [ -f ${file_in} ] && ls ${file_in} ; for i in $(ls ${file_in}* 2>/dev/null | sed "s/${file_in}//" | sort -n) ; do ls ${file_in}$i ; done ) 
     1240        nlist_file=${#list_file[@]} 
     1241        if [ ${nlist_file} -gt 1 ] ; then 
     1242          if ( ${compactoutputs} ) ; then 
     1243            IGCM_debug_Print 2 "Parallelism of Text Output with ${nlist_file} files." 
     1244            IGCM_debug_Print 2 "Compact files in ${file_out} : " ${list_file[*]} 
     1245            echo ${list_file[*]} > ${file_out} 
     1246            echo " 
    12371247" >> ${file_out} 
    1238                
    1239               (( i_ = 0 )) 
    1240               for file in ${list_file[@]} 
    1241               do 
    1242                 echo "_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ " >> ${file_out} 
    1243                 echo "| " ${i_} " " ${file} >> ${file_out} 
    1244                 echo "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - " >> ${file_out} 
    1245                 cat ${file} | sed "s/\(.*\)/${i_}\1/" ${file} >> ${file_out} 
    1246                 echo " 
     1248 
     1249            (( i_ = 0 )) 
     1250            for file in ${list_file[@]} 
     1251            do 
     1252              echo "_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ " >> ${file_out} 
     1253              echo "| " ${i_} " " ${file} >> ${file_out} 
     1254              echo "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - " >> ${file_out} 
     1255              cat ${file} | sed "s/\(.*\)/${i_}\1/" ${file} >> ${file_out} 
     1256              echo " 
    12471257" >> ${file_out} 
    1248                 eval FileToBeDeleted[${#FileToBeDeleted[@]}]="${file}" > /dev/null 2>&1 
    1249                     (( i_ = i_ + 1 )) 
    1250               done 
    1251               if [ X${Pack} = Xtrue ] ; then 
    1252                 eval IGCM_sys_PutBuffer_Out ${file_out} \${R_BUF_${comp}_D}/${file_out} 
    1253               else 
    1254                 eval IGCM_sys_Put_Out ${file_out} \${R_OUT_${comp}_D}/${file_out} 
    1255               fi 
    1256               eval FileToBeDeleted[${#FileToBeDeleted[@]}]="${file_out}" > /dev/null 2>&1 
    1257  
    1258               if ( ${ExecutionFail} ) ; then 
    1259                 IGCM_sys_Cp ${file_out} ${SUBMIT_DIR}/Debug 
    1260               fi 
    1261             else 
    1262               for file in ${list_file[@]} 
    1263               do 
    1264                 if [ X${Pack} = Xtrue ] ; then 
    1265                   eval IGCM_sys_PutBuffer_Out ${file} \${R_BUF_${comp}_D}/${PREFIX}_${file} 
    1266                 else 
    1267                   eval IGCM_sys_Put_Out ${file} \${R_OUT_${comp}_D}/${PREFIX}_${file} 
    1268                 fi 
    1269                 eval FileToBeDeleted[${#FileToBeDeleted[@]}]="${file}" > /dev/null 2>&1 
    1270  
    1271                 if ( ${ExecutionFail} ) ; then 
    1272                   IGCM_sys_Cp ${file} ${SUBMIT_DIR}/Debug/${PREFIX}_${file} 
    1273                 fi 
    1274               done 
    1275             fi 
    1276           else 
    1277             if ( [ -f ${file_in}_0000 ] || [ -f ${file_in}0 ] ) ; then 
    1278               eval IGCM_sys_Mv ${file_in}* ${file_in} 
    1279             fi 
    1280             if [ X${Pack} = Xtrue ] ; then 
    1281               eval IGCM_sys_PutBuffer_Out ${file_in} \${R_BUF_${comp}_D}/${file_out} 
    1282             else 
    1283               eval IGCM_sys_Put_Out ${file_in} \${R_OUT_${comp}_D}/${file_out} 
    1284             fi 
    1285             eval FileToBeDeleted[${#FileToBeDeleted[@]}]="${file_in}" > /dev/null 2>&1 
    1286  
    1287             if ( ${ExecutionFail} ) ; then 
    1288               IGCM_sys_Cp ${file_in} ${SUBMIT_DIR}/Debug/${file_out} 
    1289             fi 
    1290           fi 
     1258              eval FileToBeDeleted[${#FileToBeDeleted[@]}]="${file}" > /dev/null 2>&1 
     1259                  (( i_ = i_ + 1 )) 
     1260            done 
     1261            if [ X${Pack} = Xtrue ] ; then 
     1262              eval IGCM_sys_PutBuffer_Out ${file_out} \${R_BUF_${comp}_D}/${file_out} 
     1263            else 
     1264              eval IGCM_sys_Put_Out ${file_out} \${R_OUT_${comp}_D}/${file_out} 
     1265            fi 
     1266            eval FileToBeDeleted[${#FileToBeDeleted[@]}]="${file_out}" > /dev/null 2>&1 
     1267 
     1268            if ( ${ExecutionFail} ) ; then 
     1269              IGCM_sys_Cp ${file_out} ${SUBMIT_DIR}/Debug 
     1270            fi 
     1271          else 
     1272            for file in ${list_file[@]} 
     1273            do 
     1274              if [ X${Pack} = Xtrue ] ; then 
     1275                eval IGCM_sys_PutBuffer_Out ${file} \${R_BUF_${comp}_D}/${PREFIX}_${file} 
     1276              else 
     1277                eval IGCM_sys_Put_Out ${file} \${R_OUT_${comp}_D}/${PREFIX}_${file} 
     1278              fi 
     1279              eval FileToBeDeleted[${#FileToBeDeleted[@]}]="${file}" > /dev/null 2>&1 
     1280 
     1281              if ( ${ExecutionFail} ) ; then 
     1282                IGCM_sys_Cp ${file} ${SUBMIT_DIR}/Debug/${PREFIX}_${file} 
     1283              fi 
     1284            done 
     1285          fi 
     1286        else 
     1287          if ( [ -f ${file_in}_0000 ] || [ -f ${file_in}0 ] ) ; then 
     1288            eval IGCM_sys_Mv ${file_in}* ${file_in} 
     1289          fi 
     1290          if [ X${Pack} = Xtrue ] ; then 
     1291            eval IGCM_sys_PutBuffer_Out ${file_in} \${R_BUF_${comp}_D}/${file_out} 
     1292          else 
     1293            eval IGCM_sys_Put_Out ${file_in} \${R_OUT_${comp}_D}/${file_out} 
     1294          fi 
     1295          eval FileToBeDeleted[${#FileToBeDeleted[@]}]="${file_in}" > /dev/null 2>&1 
     1296 
     1297          if ( ${ExecutionFail} ) ; then 
     1298            IGCM_sys_Cp ${file_in} ${SUBMIT_DIR}/Debug/${file_out} 
     1299          fi 
     1300        fi 
    12911301      done 
    12921302    fi 
Note: See TracChangeset for help on using the changeset viewer.