Changeset 785 for trunk/libIGCM


Ignore:
Timestamp:
02/04/13 16:39:38 (11 years ago)
Author:
labetoulle
Message:

Cosmetics :

  • Convert tabs into space for better lisibility with different editors.
Location:
trunk/libIGCM
Files:
18 edited

Legend:

Unmodified
Added
Removed
  • trunk/libIGCM/AA_RunChecker

    r782 r785  
    133133    case ${1} in 
    134134      -f|--first) 
    135         fg_first=true 
    136         shift 1 ;; 
     135        fg_first=true 
     136        shift 1 ;; 
    137137      -l|--last) 
    138         fg_last=true 
    139         shift 1 ;; 
     138        fg_last=true 
     139        shift 1 ;; 
    140140      -j|--job) 
    141         fg_job=true 
    142         shift 1 ;; 
     141        fg_job=true 
     142        shift 1 ;; 
    143143      -*) 
    144         echo "usage: ${0}" 
    145         echo "       options = -f; -l" 
    146         exit ;; 
     144        echo "usage: ${0}" 
     145        echo "       options = -f; -l" 
     146        exit ;; 
    147147      *) 
    148         break ;; 
     148        break ;; 
    149149    esac 
    150150  done 
  • trunk/libIGCM/AA_SE_Checker

    r731 r785  
    4848 
    4949if [ ! -d ${CARD_DIR} ]; then 
    50     echo "No ${CARD_DIR}, we stop here" 
    51     exit 
     50  echo "No ${CARD_DIR}, we stop here" 
     51  exit 
    5252fi 
    5353 
     
    109109while [ ${an_fin} -le ${an_fin_all} ] ; do 
    110110 
    111     countTotal=0 
    112     countGood=0 
    113     countBad=0 
    114      
    115     IGCM_debug_Print 1 " DateBegin/End for SE :  ${an_deb}_${an_fin} " 
    116      
    117     for comp in ${config_ListOfComponents[*]} ; do 
    118         localcountBad=0 
    119         # Debug Print 
    120         IGCM_debug_Print 1 ${comp} 
    121         # Define component  
    122         IGCM_card_DefineArrayFromOption ${CARD_DIR}/config.card ListOfComponents ${comp} 
    123         eval compname=\${config_ListOfComponents_${comp}[0]} > /dev/null 2>&1 
    124          
    125         # Read libIGCM compatibility version in ${compname}.card 
    126         card=${CARD_DIR}/COMP/${compname}.card 
    127          
    128         # Read and Build Output File stuff 
    129         #IGCM_debug_Print 1 "DefineArrayFromOption  : ${compname}_OutputFiles ${card}" 
    130         IGCM_card_DefineArrayFromOption ${card} OutputFiles List 
    131         ListFilesName=${compname}_OutputFiles_List 
    132         eval FileName0=\${${ListFilesName}[0]} > /dev/null 2>&1 
    133         # 
    134         if [ X${FileName0} != X${NULL_STR} ] ; then 
    135             # 
    136             # INITIALISATION 
    137             # 
    138             eval NbFiles=\${#${ListFilesName}[@]} > /dev/null 2>&1 
    139             typeset i=2 
    140             # 
    141             until [ $i -gt $NbFiles ]; do 
    142                 # 
    143                 eval flag_post=\${${ListFilesName}[$i]} > /dev/null 2>&1 
    144                 # 
    145                 if [ X${flag_post} != XNONE ] ; then 
    146                     # 
    147                     # Check if seasonal is required for this file 
    148                     # 
    149                     IGCM_card_DefineArrayFromSection ${card} ${flag_post} 
    150                     # 
    151                     # Seasonal case : If option Seasonal is not found (old cards) put SEASONAL ON by default 
    152                     # 
    153                     # variable option allready typeset above 
    154                     for option in $( eval echo \${${compname}_${flag_post}[*]} ) ; do 
    155                         if [ ${option} = Seasonal ] ; then 
    156                             FoundSeasonal=true 
    157                             IGCM_card_DefineVariableFromOption ${card} ${flag_post} Seasonal 
    158                         fi 
    159                     done 
    160                     # 
    161                     if [ ! X${FoundSeasonal} = Xtrue ] ; then 
    162                         eval ${compname}_${flag_post}_Seasonal=ON 
    163                     fi 
    164                     # 
    165                     if [ ! X$( eval echo \${${compname}_${flag_post}_Seasonal} ) = XON ] ; then 
    166                         (( i=i+3 )) 
    167                         continue 
    168                     fi 
    169                     # 
    170                     # CREATE LIST 
    171                     # 
    172                     FILE=$( echo ${flag_post} | awk "-FPost_" '{print $2}' ) 
    173                     # 
    174                     DIRECTORY=${R_SAVE}/${comp}/Analyse/SE 
    175                     # 
    176                     TestedFile=${config_UserChoices_JobName}_SE_${an_deb}_${an_fin}_${FILE}.nc 
    177                     # 
    178                     (( countTotal = countTotal + 1 )) 
    179                     IGCM_sys_TestFileArchive ${DIRECTORY}/${TestedFile} >/dev/null 2>&1  
    180                     if [ ! $? = 0 ] ; then 
    181                         eval set +A LISTE_FILE_${comp}_${an_deb} \$\{LISTE_FILE_${comp}_${an_deb}[*]} ${TestedFile} 
    182                         (( countBad = countBad + 1 )) 
    183                         (( localcountBad = localcountBad + 1 )) 
    184                     else 
    185                         (( countGood = countGood + 1 )) 
    186                     fi 
    187                 fi 
    188                 (( i=i+3 )) # to explore file list 
    189             done            # until [ $i -eq $NbFiles ] 
    190         fi                  # [ X${FileName0} != X${NULL_STR} ]  
    191          
    192         [ $localcountBad = 0 ] || IGCM_debug_Print 1 "$localcountBad file(s) missing for ${comp} : " $( eval echo \${LISTE_FILE_${comp}_${an_deb}[*]} ) 
    193     done 
    194      
    195     # create_se submit if files don't exist 
    196     if [ $countGood != $countTotal ] ; then 
    197         IGCM_debug_Print 2 -e "\033[1;31mSubmit create_se \033[m for period ${an_deb}-${an_fin}" 
    198          
    199         listVarEnv="libIGCM,SUBMIT_DIR,POST_DIR,DateBegin,PeriodDateEnd,RebuildFrequency,RESOL_ATM,RESOL_SRF,RESOL_SBG,RESOL_OCE,RESOL_ICE,RESOL_MBG" 
    200         export libIGCM=${libIGCM} 
    201         export SUBMIT_DIR=${CARD_DIR} 
    202         export POST_DIR=${POST_DIR} 
    203         export DateBegin=${an_deb} 
    204         export PeriodDateEnd=${an_fin}1231 
    205         export RebuildFrequency=${RebuildFrequency} 
    206         export RESOL_ATM=${RESOL_ATM} 
    207         export RESOL_SRF=${RESOL_SRF} 
    208         export RESOL_SBG=${RESOL_SBG} 
    209         export RESOL_OCE=${RESOL_OCE} 
    210         export RESOL_ICE=${RESOL_ICE} 
    211         export RESOL_MBG=${RESOL_MBG} 
    212         export listVarEnv=${listVarEnv} 
    213         IGCM_sys_MkdirWork ${POST_DIR} 
    214         IGCM_debug_Verif_Exit_Post 
    215         Script_Post_Output=create_se.${PeriodDateEnd} 
    216         IGCM_sys_QsubPost create_se 
    217  
    218         echo 
    219     fi 
    220  
    221     (( an_deb = an_deb + freq )) 
    222     (( an_fin = an_fin + freq )) 
    223      
     111  countTotal=0 
     112  countGood=0 
     113  countBad=0 
     114 
     115  IGCM_debug_Print 1 " DateBegin/End for SE :  ${an_deb}_${an_fin} " 
     116 
     117  for comp in ${config_ListOfComponents[*]} ; do 
     118    localcountBad=0 
     119    # Debug Print 
     120    IGCM_debug_Print 1 ${comp} 
     121    # Define component  
     122    IGCM_card_DefineArrayFromOption ${CARD_DIR}/config.card ListOfComponents ${comp} 
     123    eval compname=\${config_ListOfComponents_${comp}[0]} > /dev/null 2>&1 
     124 
     125    # Read libIGCM compatibility version in ${compname}.card 
     126    card=${CARD_DIR}/COMP/${compname}.card 
     127 
     128    # Read and Build Output File stuff 
     129    #IGCM_debug_Print 1 "DefineArrayFromOption  : ${compname}_OutputFiles ${card}" 
     130    IGCM_card_DefineArrayFromOption ${card} OutputFiles List 
     131    ListFilesName=${compname}_OutputFiles_List 
     132    eval FileName0=\${${ListFilesName}[0]} > /dev/null 2>&1 
     133    # 
     134    if [ X${FileName0} != X${NULL_STR} ] ; then 
     135      # 
     136      # INITIALISATION 
     137      # 
     138      eval NbFiles=\${#${ListFilesName}[@]} > /dev/null 2>&1 
     139      typeset i=2 
     140      # 
     141      until [ $i -gt $NbFiles ]; do 
     142        # 
     143        eval flag_post=\${${ListFilesName}[$i]} > /dev/null 2>&1 
     144        # 
     145        if [ X${flag_post} != XNONE ] ; then 
     146          # 
     147          # Check if seasonal is required for this file 
     148          # 
     149          IGCM_card_DefineArrayFromSection ${card} ${flag_post} 
     150          # 
     151          # Seasonal case : If option Seasonal is not found (old cards) put SEASONAL ON by default 
     152          # 
     153          # variable option allready typeset above 
     154          for option in $( eval echo \${${compname}_${flag_post}[*]} ) ; do 
     155            if [ ${option} = Seasonal ] ; then 
     156              FoundSeasonal=true 
     157              IGCM_card_DefineVariableFromOption ${card} ${flag_post} Seasonal 
     158            fi 
     159          done 
     160          # 
     161          if [ ! X${FoundSeasonal} = Xtrue ] ; then 
     162            eval ${compname}_${flag_post}_Seasonal=ON 
     163          fi 
     164          # 
     165          if [ ! X$( eval echo \${${compname}_${flag_post}_Seasonal} ) = XON ] ; then 
     166            (( i=i+3 )) 
     167            continue 
     168          fi 
     169          # 
     170          # CREATE LIST 
     171          # 
     172          FILE=$( echo ${flag_post} | awk "-FPost_" '{print $2}' ) 
     173          # 
     174          DIRECTORY=${R_SAVE}/${comp}/Analyse/SE 
     175          # 
     176          TestedFile=${config_UserChoices_JobName}_SE_${an_deb}_${an_fin}_${FILE}.nc 
     177          # 
     178          (( countTotal = countTotal + 1 )) 
     179          IGCM_sys_TestFileArchive ${DIRECTORY}/${TestedFile} >/dev/null 2>&1  
     180          if [ ! $? = 0 ] ; then 
     181            eval set +A LISTE_FILE_${comp}_${an_deb} \$\{LISTE_FILE_${comp}_${an_deb}[*]} ${TestedFile} 
     182            (( countBad = countBad + 1 )) 
     183            (( localcountBad = localcountBad + 1 )) 
     184          else 
     185            (( countGood = countGood + 1 )) 
     186          fi 
     187        fi 
     188        (( i=i+3 )) # to explore file list 
     189      done            # until [ $i -eq $NbFiles ] 
     190    fi                  # [ X${FileName0} != X${NULL_STR} ]  
     191 
     192    [ $localcountBad = 0 ] || IGCM_debug_Print 1 "$localcountBad file(s) missing for ${comp} : " $( eval echo \${LISTE_FILE_${comp}_${an_deb}[*]} ) 
     193  done 
     194 
     195  # create_se submit if files don't exist 
     196  if [ $countGood != $countTotal ] ; then 
     197    IGCM_debug_Print 2 -e "\033[1;31mSubmit create_se \033[m for period ${an_deb}-${an_fin}" 
     198 
     199    listVarEnv="libIGCM,SUBMIT_DIR,POST_DIR,DateBegin,PeriodDateEnd,RebuildFrequency,RESOL_ATM,RESOL_SRF,RESOL_SBG,RESOL_OCE,RESOL_ICE,RESOL_MBG" 
     200    export libIGCM=${libIGCM} 
     201    export SUBMIT_DIR=${CARD_DIR} 
     202    export POST_DIR=${POST_DIR} 
     203    export DateBegin=${an_deb} 
     204    export PeriodDateEnd=${an_fin}1231 
     205    export RebuildFrequency=${RebuildFrequency} 
     206    export RESOL_ATM=${RESOL_ATM} 
     207    export RESOL_SRF=${RESOL_SRF} 
     208    export RESOL_SBG=${RESOL_SBG} 
     209    export RESOL_OCE=${RESOL_OCE} 
     210    export RESOL_ICE=${RESOL_ICE} 
     211    export RESOL_MBG=${RESOL_MBG} 
     212    export listVarEnv=${listVarEnv} 
     213    IGCM_sys_MkdirWork ${POST_DIR} 
     214    IGCM_debug_Verif_Exit_Post 
     215    Script_Post_Output=create_se.${PeriodDateEnd} 
     216    IGCM_sys_QsubPost create_se 
     217 
     218    echo 
     219  fi 
     220 
     221  (( an_deb = an_deb + freq )) 
     222  (( an_fin = an_fin + freq )) 
     223 
    224224done # while 
  • trunk/libIGCM/AA_atlas_ORCA_LIM

    r770 r785  
    22#-Q- curie ## CURIE   TGCC/CEA ## 
    33#-Q- curie ###################### 
    4 #-Q- curie #MSUB -r ATL_OPA        # Nom du job                
     4#-Q- curie #MSUB -r ATL_OPA        # Nom du job 
    55#-Q- curie #MSUB -eo 
    66#-Q- curie #MSUB -n 1              # Reservation du processus 
     
    1717#-Q- ada # Nom du travail LoadLeveler 
    1818#-Q- ada # @ job_name   = ATL_OPA 
    19 #-Q- ada # Fichier de sortie standard du travail        
     19#-Q- ada # Fichier de sortie standard du travail 
    2020#-Q- ada # @ output     = $(job_name).$(jobid) 
    2121#-Q- ada # Fichier de sortie d'erreur du travail 
     
    4040#-Q- titane ## TITANE   CEA ## 
    4141#-Q- titane ###################### 
    42 #-Q- titane #MSUB -r ATL_OPA        # Nom du job                 
     42#-Q- titane #MSUB -r ATL_OPA        # Nom du job 
    4343#-Q- titane #MSUB -eo 
    4444#-Q- titane #MSUB -n 1              # Reservation du processus 
     
    142142 
    143143atlas -o ${RUN_DIR}/${R_ATLAS}/OCE_T -l ${FER_ATLAS}/atlas_p_${RESOL_OCE}_diag1_[abc].cfg     ${RUN_DIR}/${config_UserChoices_JobName}_SE_${YEARS}_1M_grid_T.nc 
    144 atlas -o ${RUN_DIR}/${R_ATLAS}/OCE_U -l ${FER_ATLAS}/atlas_p_${RESOL_OCE}_diag0_U.cfg        ${RUN_DIR}/${config_UserChoices_JobName}_SE_${YEARS}_1M_grid_U.nc 
    145 atlas -o ${RUN_DIR}/${R_ATLAS}/OCE_V -l ${FER_ATLAS}/atlas_p_${RESOL_OCE}_diag0_V.cfg        ${RUN_DIR}/${config_UserChoices_JobName}_SE_${YEARS}_1M_grid_V.nc 
    146 #atlas -o ${RUN_DIR}/${R_ATLAS}/OCE_W -l ${FER_ATLAS}/atlas_p_${RESOL_OCE}_diag0_W.cfg        ${RUN_DIR}/${config_UserChoices_JobName}_SE_${YEARS}_1M_grid_W.nc 
     144atlas -o ${RUN_DIR}/${R_ATLAS}/OCE_U -l ${FER_ATLAS}/atlas_p_${RESOL_OCE}_diag0_U.cfg         ${RUN_DIR}/${config_UserChoices_JobName}_SE_${YEARS}_1M_grid_U.nc 
     145atlas -o ${RUN_DIR}/${R_ATLAS}/OCE_V -l ${FER_ATLAS}/atlas_p_${RESOL_OCE}_diag0_V.cfg         ${RUN_DIR}/${config_UserChoices_JobName}_SE_${YEARS}_1M_grid_V.nc 
     146#atlas -o ${RUN_DIR}/${R_ATLAS}/OCE_W -l ${FER_ATLAS}/atlas_p_${RESOL_OCE}_diag0_W.cfg         ${RUN_DIR}/${config_UserChoices_JobName}_SE_${YEARS}_1M_grid_W.nc 
    147147atlas -o ${RUN_DIR}/${R_ATLAS}/OCE   -l ${FER_ATLAS}/atlas_p_${RESOL_OCE}_diag0_[defg].cfg     ${RUN_DIR}/${config_UserChoices_JobName}_SE_${YEARS}_1M_grid_T.nc 
    148 atlas -o ${RUN_DIR}/${R_ATLAS}/ICE   -l ${FER_ATLAS}/atlas_p_${RESOL_OCE}LIM_diag0_[abc].cfg ${RUN_DIR}/${config_UserChoices_JobName}_SE_${YEARS}_1M_icemod.nc 
     148atlas -o ${RUN_DIR}/${R_ATLAS}/ICE   -l ${FER_ATLAS}/atlas_p_${RESOL_OCE}LIM_diag0_[abc].cfg  ${RUN_DIR}/${config_UserChoices_JobName}_SE_${YEARS}_1M_icemod.nc 
    149149 
    150150# IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 
    151151 
    152152# Put ferret journal files together 
    153 for file in $( ls ${R_ATLAS}/OCE_T/*/*jnl ) ; do   
    154     echo -e "\n\n################################" ;  
    155     echo -e "$file\n" ; cat $file ;  
     153for file in $( ls ${R_ATLAS}/OCE_T/*/*jnl ) ; do 
     154  echo -e "\n\n################################" ;  
     155  echo -e "$file\n" ; cat $file ;  
    156156done  > ${R_ATLAS}/OCE_T/allferretscript.txt 
    157157 
    158158for file in $( ls ${R_ATLAS}/OCE_U/*/*jnl ) ; do   
    159     echo -e "\n\n################################" ;  
    160     echo -e "$file\n" ; cat $file ;  
     159  echo -e "\n\n################################" ;  
     160  echo -e "$file\n" ; cat $file ;  
    161161done  > ${R_ATLAS}/OCE_U/allferretscript.txt 
    162162 
    163163for file in $( ls ${R_ATLAS}/OCE_V/*/*jnl ) ; do   
    164     echo -e "\n\n################################" ;  
    165     echo -e "$file\n" ; cat $file ;  
     164  echo -e "\n\n################################" ;  
     165  echo -e "$file\n" ; cat $file ;  
    166166done  > ${R_ATLAS}/OCE_V/allferretscript.txt 
    167167 
    168168for file in $( ls ${R_ATLAS}/OCE/*/*jnl ) ; do   
    169     echo -e "\n\n################################" ;  
    170     echo -e "$file\n" ; cat $file ;  
     169  echo -e "\n\n################################" ;  
     170  echo -e "$file\n" ; cat $file ;  
    171171done  > ${R_ATLAS}/OCE/allferretscript.txt 
    172172 
    173173for file in $( ls ${R_ATLAS}/ICE/*/*jnl ) ; do   
    174     echo -e "\n\n################################" ;  
    175     echo -e "$file\n" ; cat $file ;  
     174  echo -e "\n\n################################" ;  
     175  echo -e "$file\n" ; cat $file ;  
    176176done  > ${R_ATLAS}/ICE/allferretscript.txt 
    177177 
    178178# WHILE WAITING FOR A MORE GENERIC SOLUTION 
    179179if ( [ ${config_UserChoices_TagName} = "IPSLCM5" ] || [ ${config_UserChoices_TagName} = "IPSLCM5A" ] || [ ${config_UserChoices_TagName} = "IPSLCM5A-MR" ] || [ ${config_UserChoices_TagName} = "ORCA2_LIM2" ] || [ ${config_UserChoices_TagName} = "ORCA2_LIM2_PISCES" ] ) ; then 
    180     IGCM_sys_Get ${R_OUT_OCE}/Analyse/${DIR_OUT}/${config_UserChoices_JobName}_SE_${YEARS}_1M_diaptr.nc  ${RUN_DIR} ; 
    181     atlas -o ${RUN_DIR}/${R_ATLAS}/ZNL   -d -l ${FER_ATLAS}/atlas_l_${RESOL_OCE}_znl.cfg         ${RUN_DIR}/${config_UserChoices_JobName}_SE_${YEARS}_1M_diaptr.nc ; 
    182     for file in $( ls ${R_ATLAS}/ZNL/*/*jnl ) ; do 
    183         echo -e "\n\n################################" ; 
    184         echo -e "$file\n" ; cat $file ; 
    185     done > ${R_ATLAS}/ZNL/allferretscript.txt 
     180  IGCM_sys_Get ${R_OUT_OCE}/Analyse/${DIR_OUT}/${config_UserChoices_JobName}_SE_${YEARS}_1M_diaptr.nc  ${RUN_DIR} ; 
     181  atlas -o ${RUN_DIR}/${R_ATLAS}/ZNL   -d -l ${FER_ATLAS}/atlas_l_${RESOL_OCE}_znl.cfg         ${RUN_DIR}/${config_UserChoices_JobName}_SE_${YEARS}_1M_diaptr.nc ; 
     182  for file in $( ls ${R_ATLAS}/ZNL/*/*jnl ) ; do 
     183    echo -e "\n\n################################" ; 
     184    echo -e "$file\n" ; cat $file ; 
     185  done > ${R_ATLAS}/ZNL/allferretscript.txt 
    186186fi 
    187187 
     
    194194IGCM_sys_Rm -Rf ATLAS 
    195195IGCM_sys_Rm ${config_UserChoices_JobName}_SE_${YEARS}_1M_grid_[TUVW].nc  
    196 IGCM_sys_Rm ${config_UserChoices_JobName}_SE_${YEARS}_1M_icemod.nc       
     196IGCM_sys_Rm ${config_UserChoices_JobName}_SE_${YEARS}_1M_icemod.nc 
    197197# WHILE WAITING FOR A MORE GENERIC SOLUTION 
    198198if ( [ ${config_UserChoices_TagName} = "IPSLCM5" ] || [ ${config_UserChoices_TagName} = "IPSLCM5A" ] || [ ${config_UserChoices_TagName} = "IPSLCM5A-MR" ] || [ ${config_UserChoices_TagName} = "ORCA2_LIM2" ] || [ ${config_UserChoices_TagName} = "ORCA2_LIM2_PISCES" ] ) ; then 
    199     IGCM_sys_Rm ${config_UserChoices_JobName}_SE_${YEARS}_1M_diaptr.nc ;  
     199  IGCM_sys_Rm ${config_UserChoices_JobName}_SE_${YEARS}_1M_diaptr.nc ;  
    200200fi 
    201201 
  • trunk/libIGCM/AA_clean_month

    r782 r785  
    8181 
    8282if [ ! -f ${SUBMIT_DIR}/run.card ]; then  
    83     echo "You seem NOT to have a run.card in this directory !!" 
    84     echo "This script will fail because it doesn't know what to do without run.card available." 
    85     exit 1 
     83  echo "You seem NOT to have a run.card in this directory !!" 
     84  echo "This script will fail because it doesn't know what to do without run.card available." 
     85  exit 1 
    8686else 
    87     #===================================# 
    88     #        Read updated run.card      # 
    89     #===================================# 
    90     IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card Configuration PeriodState 
    91     IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card Configuration OldPrefix 
    92     IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card Configuration PeriodDateBegin 
    93     IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card Configuration PeriodDateEnd 
    94     IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card Configuration CumulPeriod 
    95  
    96     PeriodDateEnd=$( IGCM_date_ConvertFormatToGregorian ${run_Configuration_PeriodDateEnd} ) 
    97     echo "Search files with ${PeriodDateEnd} in ${R_SAVE}" 
    98     set +A ListFiles -- $( IGCM_sys_RshArchive "find ${R_SAVE} -name \"*${PeriodDateEnd}*\" " ) 
    99     CountListFiles=${#ListFiles[@]} 
    100  
     87  #===================================# 
     88  #        Read updated run.card      # 
     89  #===================================# 
     90  IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card Configuration PeriodState 
     91  IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card Configuration OldPrefix 
     92  IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card Configuration PeriodDateBegin 
     93  IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card Configuration PeriodDateEnd 
     94  IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card Configuration CumulPeriod 
     95 
     96  PeriodDateEnd=$( IGCM_date_ConvertFormatToGregorian ${run_Configuration_PeriodDateEnd} ) 
     97  echo "Search files with ${PeriodDateEnd} in ${R_SAVE}" 
     98  set +A ListFiles -- $( IGCM_sys_RshArchive "find ${R_SAVE} -name \"*${PeriodDateEnd}*\" " ) 
     99  CountListFiles=${#ListFiles[@]} 
     100 
     101  if [ X${Pack} = Xtrue ] ; then 
     102    echo "Search files with ${PeriodDateEnd} in ${R_BUFR}" 
     103    set +A ListFilesBuf -- $( IGCM_sys_RshMaster "find ${R_BUFR} -name \"*${PeriodDateEnd}*\" " ) 
     104    CountListFilesBuf=${#ListFilesBuf[@]} 
     105  else 
     106    CountListFilesBuf=0 
     107  fi 
     108 
     109  # If exist, erase REBUILD DIR 
     110  PeriodDateBegin=$( IGCM_date_ConvertFormatToGregorian ${run_Configuration_PeriodDateBegin} ) 
     111  CountRebuildDir=0 
     112  if [ X${config_Post_RebuildFrequency} != X ] ; then 
     113    if [ X${config_Post_RebuildFromArchive} = Xtrue ] ; then 
     114      set +A RebuildDir -- $( IGCM_sys_RshArchive "find ${REBUILD_DIR} -type d -name \"*${PeriodDateBegin}*\" " ) 
     115    else 
     116      set +A RebuildDir -- $( find ${REBUILD_DIR} -type d -name "*${PeriodDateBegin}*" ) 
     117    fi 
     118    CountRebuildDir=${#RebuildDir[@]} 
     119  fi 
     120 
     121  IGCM_debug_Print 1 "Number of files to be erased : ${CountListFiles}." 
     122  if ( [ ${CountListFiles} -gt 0 ] || [ ${CountListFilesBuf} -gt 0 ] ) ; then  
     123    for file in ${ListFiles[@]} ; do 
     124      IGCM_debug_Print 2 -e "\033[1;31m ${file}\033[m" 
     125    done 
    101126    if [ X${Pack} = Xtrue ] ; then 
    102       echo "Search files with ${PeriodDateEnd} in ${R_BUFR}" 
    103       set +A ListFilesBuf -- $( IGCM_sys_RshMaster "find ${R_BUFR} -name \"*${PeriodDateEnd}*\" " ) 
    104       CountListFilesBuf=${#ListFilesBuf[@]} 
    105     else 
    106       CountListFilesBuf=0 
     127      for file in ${ListFilesBuf[@]} ; do 
     128        IGCM_debug_Print 2 -e "\033[1;31m ${file}\033[m" 
     129      done 
    107130    fi 
    108  
    109     # If exist, erase REBUILD DIR 
    110     PeriodDateBegin=$( IGCM_date_ConvertFormatToGregorian ${run_Configuration_PeriodDateBegin} ) 
    111     CountRebuildDir=0 
    112     if [ X${config_Post_RebuildFrequency} != X ] ; then 
    113         if [ X${config_Post_RebuildFromArchive} = Xtrue ] ; then 
    114             set +A RebuildDir -- $( IGCM_sys_RshArchive "find ${REBUILD_DIR} -type d -name \"*${PeriodDateBegin}*\" " ) 
    115         else 
    116             set +A RebuildDir -- $( find ${REBUILD_DIR} -type d -name  "*${PeriodDateBegin}*" ) 
    117         fi 
    118         CountRebuildDir=${#RebuildDir[@]} 
    119     fi 
    120  
    121     IGCM_debug_Print 1 "Number of files to be erased : ${CountListFiles}." 
    122     if ( [ ${CountListFiles} -gt 0 ] || [ ${CountListFilesBuf} -gt 0 ] ) ; then  
    123         for file in ${ListFiles[@]} ; do 
    124             IGCM_debug_Print 2 -e "\033[1;31m ${file}\033[m" 
    125         done 
     131    echo -e "\033[1;32mDo you REALLY want to erase all those files ?" 
     132    echo -n -e " Your answer (y/n) : \033[m" 
     133    read reponse 
     134    case ${reponse} in 
     135 
     136      oui|OUI|o|y|yes|YES) 
     137        echo "OK. It will be erased." 
     138        IGCM_sys_RshArchive "find ${R_SAVE} -name \"*${PeriodDateEnd}*\" -exec rm -f '{}' \;" 
    126139        if [ X${Pack} = Xtrue ] ; then 
    127           for file in ${ListFilesBuf[@]} ; do 
    128             IGCM_debug_Print 2 -e "\033[1;31m ${file}\033[m" 
    129           done 
     140          IGCM_sys_RshMaster  "find ${R_BUFR} -name \"*${PeriodDateEnd}*\" -exec rm -f '{}' \;" 
    130141        fi 
    131         echo -e "\033[1;32mDo you REALLY want to erase all those files ?" 
    132         echo -n -e " Your answer (y/n) : \033[m" 
    133         read reponse 
    134         case ${reponse} in 
    135              
    136             oui|OUI|o|y|yes|YES) 
    137                 echo "OK. It will be erased." 
    138                 IGCM_sys_RshArchive "find ${R_SAVE} -name \"*${PeriodDateEnd}*\" -exec rm -f '{}' \;" 
    139                 if [ X${Pack} = Xtrue ] ; then 
    140                   IGCM_sys_RshMaster  "find ${R_BUFR} -name \"*${PeriodDateEnd}*\" -exec rm -f '{}' \;" 
    141                 fi 
    142                 echo "done." 
    143                 ;; 
    144             non|NON|n|no|NO) 
    145                 echo "Nothing to do !" 
    146                 ;; 
    147         esac 
    148     fi 
    149  
    150     if [ ${CountRebuildDir} -gt 0 ] ; then  
    151         IGCM_debug_Print 1 "Number of REBUILD Dirs to be erased : ${CountRebuildDir}." 
    152         for Dir in ${RebuildDir[@]} ; do 
    153             IGCM_debug_Print 2 -e "\033[1;31m ${Dir}\033[m" 
    154         done 
    155  
    156         echo -e "\033[1;32mDo you REALLY want to erase all those Directories ?" 
    157         echo -n -e " Your answer (y/n) : \033[m" 
    158         read reponse 
    159         case ${reponse} in 
    160              
    161             oui|OUI|o|y|yes|YES) 
    162                 echo "OK. It will be erased." 
    163                 if [ X${config_Post_RebuildFromArchive} = Xtrue ] ; then 
    164                     IGCM_sys_RshArchive "find ${REBUILD_DIR} -type d -name \"*${PeriodDateBegin}*\" -exec rm -Rf '{}' \;" 
    165                 else 
    166                     find ${REBUILD_DIR} -type d -name "*${PeriodDateBegin}*" -exec rm -Rf '{}' \; 
    167                 fi 
    168                 echo "done." 
    169                 ;; 
    170             non|NON|n|no|NO) 
    171                 echo "Nothing to do !" 
    172                 ;; 
    173         esac 
    174     fi 
    175      
    176     IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card Configuration PeriodState 
    177     if ( [ ${run_Configuration_PeriodState} != "Running" ] && [ ${run_Configuration_PeriodState} != "OnQueue" ] && [ ${run_Configuration_PeriodState} != "Continue" ] ) ; then 
    178  
    179         echo -e "\033[1;32mNOW do you want to continue the simulation (Set PeriodState=OnQueue into run.card) ?" 
    180         echo -n -e " Your answer (y/n) : \033[m" 
    181         read reponse 
    182         case ${reponse} in 
    183              
    184             oui|OUI|o|y|yes|YES) 
    185                 echo "OK. Now you can submit the Job : ${SUBMIT_DIR}/Job_${config_UserChoices_JobName}." 
    186                 IGCM_card_WriteOption ${SUBMIT_DIR}/run.card Configuration PeriodState "OnQueue" 
    187                 ;; 
    188             non|NON|n|no|NO) 
    189                 echo "Nothing to do !" 
    190                 ;; 
    191         esac 
    192     else 
    193         echo "You can submit the Job : ${SUBMIT_DIR}/Job_${config_UserChoices_JobName}." 
    194     fi 
    195  
    196     if ( [ X${run_Configuration_CumulPeriod} = X ] || [ X${run_Configuration_CumulPeriod} = X1 ] ); then 
    197       echo "CumulPeriod=1 so we erase run.card to start properly." 
    198       IGCM_sys_Rm ${SUBMIT_DIR}/run.card 
    199     fi 
     142        echo "done." 
     143        ;; 
     144      non|NON|n|no|NO) 
     145        echo "Nothing to do !" 
     146        ;; 
     147    esac 
     148  fi 
     149 
     150  if [ ${CountRebuildDir} -gt 0 ] ; then  
     151    IGCM_debug_Print 1 "Number of REBUILD Dirs to be erased : ${CountRebuildDir}." 
     152    for Dir in ${RebuildDir[@]} ; do 
     153      IGCM_debug_Print 2 -e "\033[1;31m ${Dir}\033[m" 
     154    done 
     155 
     156    echo -e "\033[1;32mDo you REALLY want to erase all those Directories ?" 
     157    echo -n -e " Your answer (y/n) : \033[m" 
     158    read reponse 
     159    case ${reponse} in 
     160 
     161      oui|OUI|o|y|yes|YES) 
     162        echo "OK. It will be erased." 
     163        if [ X${config_Post_RebuildFromArchive} = Xtrue ] ; then 
     164          IGCM_sys_RshArchive "find ${REBUILD_DIR} -type d -name \"*${PeriodDateBegin}*\" -exec rm -Rf '{}' \;" 
     165        else 
     166          find ${REBUILD_DIR} -type d -name "*${PeriodDateBegin}*" -exec rm -Rf '{}' \; 
     167        fi 
     168        echo "done." 
     169        ;; 
     170      non|NON|n|no|NO) 
     171        echo "Nothing to do !" 
     172        ;; 
     173    esac 
     174  fi 
     175 
     176  IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card Configuration PeriodState 
     177  if ( [ ${run_Configuration_PeriodState} != "Running" ] && [ ${run_Configuration_PeriodState} != "OnQueue" ] && [ ${run_Configuration_PeriodState} != "Continue" ] ) ; then 
     178 
     179    echo -e "\033[1;32mNOW do you want to continue the simulation (Set PeriodState=OnQueue into run.card) ?" 
     180    echo -n -e " Your answer (y/n) : \033[m" 
     181    read reponse 
     182    case ${reponse} in 
     183 
     184      oui|OUI|o|y|yes|YES) 
     185        echo "OK. Now you can submit the Job : ${SUBMIT_DIR}/Job_${config_UserChoices_JobName}." 
     186        IGCM_card_WriteOption ${SUBMIT_DIR}/run.card Configuration PeriodState "OnQueue" 
     187        ;; 
     188      non|NON|n|no|NO) 
     189        echo "Nothing to do !" 
     190        ;; 
     191    esac 
     192  else 
     193    echo "You can submit the Job : ${SUBMIT_DIR}/Job_${config_UserChoices_JobName}." 
     194  fi 
     195 
     196  if ( [ X${run_Configuration_CumulPeriod} = X ] || [ X${run_Configuration_CumulPeriod} = X1 ] ); then 
     197    echo "CumulPeriod=1 so we erase run.card to start properly." 
     198    IGCM_sys_Rm ${SUBMIT_DIR}/run.card 
     199  fi 
    200200fi 
    201201exit 0 
  • trunk/libIGCM/AA_clean_year

    r782 r785  
    198198    read reponse 
    199199    case ${reponse} in 
    200        
     200 
    201201      oui|OUI|o|y|yes|YES) 
    202202        echo "OK. It will be erased." 
     
    220220                               -$( IGCM_date_DaysInMonth ${PeriodYear} ${PeriodMonth} ) ) 
    221221  IGCM_date_GetYearMonth ${PreviousPeriodDateEnd} PreviousPeriodYear PreviousPeriodMonth 
    222   
     222 
    223223  PreviousPeriodDateBegin=$( IGCM_date_AddDaysToGregorianDate ${PeriodDateBegin} \ 
    224224                         -$( IGCM_date_DaysInMonth ${PreviousPeriodYear} ${PreviousPeriodMonth} ) ) 
  • trunk/libIGCM/AA_create_multi_se

    r770 r785  
    22#-Q- curie ## CURIE   TGCC/CEA ## 
    33#-Q- curie ###################### 
    4 #-Q- curie #MSUB -r MULTISE        # Nom du job                
     4#-Q- curie #MSUB -r MULTISE        # Nom du job 
    55#-Q- curie #MSUB -eo 
    66#-Q- curie #MSUB -n 1              # Reservation du processus 
     
    1717#-Q- ada # Nom du travail LoadLeveler 
    1818#-Q- ada # @ job_name   = MULTISE 
    19 #-Q- ada # Fichier de sortie standard du travail        
     19#-Q- ada # Fichier de sortie standard du travail 
    2020#-Q- ada # @ output     = $(job_name).$(jobid) 
    2121#-Q- ada # Fichier de sortie d'erreur du travail 
     
    4040#-Q- titane ## TITANE   CEA ## 
    4141#-Q- titane ###################### 
    42 #-Q- titane #MSUB -r MULTISE             # Nom du job                 
     42#-Q- titane #MSUB -r MULTISE             # Nom du job 
    4343#-Q- titane #MSUB -eo 
    4444#-Q- titane #MSUB -n 1              # Reservation du processus 
     
    152152 
    153153if [ ${StandAlone} = true ] ; then 
    154     CARD_DIR=${SUBMIT_DIR} 
     154  CARD_DIR=${SUBMIT_DIR} 
    155155else 
    156     CARD_DIR=${RUN_DIR_PATH} 
    157     IGCM_sys_Get_Master ${SUBMIT_DIR}/config.card ${RUN_DIR_PATH} 
    158     IGCM_sys_Get_Master ${SUBMIT_DIR}/run.card    ${RUN_DIR_PATH} 
    159     IGCM_sys_Get_Master ${SUBMIT_DIR}/COMP        ${RUN_DIR_PATH} 
    160     IGCM_sys_Get_Master ${SUBMIT_DIR}/POST        ${RUN_DIR_PATH} 
     156  CARD_DIR=${RUN_DIR_PATH} 
     157  IGCM_sys_Get_Master ${SUBMIT_DIR}/config.card ${RUN_DIR_PATH} 
     158  IGCM_sys_Get_Master ${SUBMIT_DIR}/run.card    ${RUN_DIR_PATH} 
     159  IGCM_sys_Get_Master ${SUBMIT_DIR}/COMP        ${RUN_DIR_PATH} 
     160  IGCM_sys_Get_Master ${SUBMIT_DIR}/POST        ${RUN_DIR_PATH} 
    161161fi 
    162162 
     
    185185FoundMultiSeasonal=false 
    186186for option in ${config_Post[*]} ; do 
    187     if [ ${option} = MultiSeasonalFrequency ] ; then 
    188         FoundMultiSeasonal=true 
    189         IGCM_card_DefineVariableFromOption ${CARD_DIR}/config.card Post MultiSeasonalFrequency 
    190     fi 
     187  if [ ${option} = MultiSeasonalFrequency ] ; then 
     188    FoundMultiSeasonal=true 
     189    IGCM_card_DefineVariableFromOption ${CARD_DIR}/config.card Post MultiSeasonalFrequency 
     190  fi 
    191191done 
    192192if [ ! X${FoundMultiSeasonal} = Xtrue ] ; then 
    193     config_Post_MultiSeasonalFrequency=50Y 
     193  config_Post_MultiSeasonalFrequency=50Y 
    194194fi 
    195195# 
     
    221221# 
    222222for comp in ${config_ListOfComponents[*]} ; do 
    223     # 
    224     IGCM_card_DefineArrayFromOption ${CARD_DIR}/config.card ListOfComponents ${comp} 
    225     eval compname=\${config_ListOfComponents_${comp}[0]} > /dev/null 2>&1 
    226     # 
    227     card=${CARD_DIR}/COMP/${compname}.card 
    228     IGCM_card_DefineArrayFromOption ${card} OutputFiles List 
    229     # 
    230     ListFilesName=${compname}_OutputFiles_List 
    231     eval FileName0=\${${ListFilesName}[0]} > /dev/null 2>&1 
    232     # 
    233     if [ X${FileName0} != X${NULL_STR} ] ; then 
    234         # 
    235         # INITIALISATION 
    236         # 
    237         eval NbFiles=\${#${ListFilesName}[@]} > /dev/null 2>&1 
    238         typeset i=2 
    239         # 
    240         until [ $i -gt $NbFiles ]; do 
    241             # 
    242             eval flag_post=\${${ListFilesName}[$i]} > /dev/null 2>&1 
    243             # 
    244             if [ X${flag_post} != XNONE ] ; then 
    245                 # 
    246                 # Check if seasonal is required for this file 
    247                 # 
    248                 IGCM_card_DefineArrayFromSection ${card} ${flag_post} 
    249                 # 
    250                 # Seasonal case : If option Seasonal is not found (old cards) put SEASONAL ON by default 
    251                 # 
    252                 # variable option allready typeset above 
    253                 for option in $( eval echo \${${compname}_${flag_post}[*]} ) ; do 
    254                     if [ ${option} = Seasonal ] ; then 
    255                         FoundSeasonal=true 
    256                         IGCM_card_DefineVariableFromOption ${card} ${flag_post} Seasonal 
    257                     fi 
    258                 done 
    259                 # 
    260                 if [ ! X${FoundSeasonal} = Xtrue ] ; then 
    261                     eval ${compname}_${flag_post}_Seasonal=ON 
    262                 fi 
    263                 # 
    264                 if [ ! X$( eval echo \${${compname}_${flag_post}_Seasonal} ) = XON ] ; then 
    265                     (( i=i+3 )) 
    266                     continue 
    267                 fi 
    268                 # 
    269                 # CREATE LIST 
    270                 # 
    271                 FILE=$( echo ${flag_post} | awk "-FPost_" '{print $2}' ) 
    272                 # 
    273                 DIRECTORY=${R_SAVE}/${comp}/Analyse/SE 
    274                 # 
    275                 MULTI_DIRECTORY=${R_SAVE}/${comp}/Analyse/${DIR_OUT} 
    276                 # 
    277                 TestedFile=${config_UserChoices_JobName}_SE_${an_multi_deb}_${an_multi_fin}_${FILE}.nc 
    278                 # 
    279                 IGCM_sys_TestFileArchive ${MULTI_DIRECTORY}/${TestedFile} 
    280                 if [ ! $? = 0 ] ; then 
    281                     eval set +A LISTE_FILE_${comp} \$\{LISTE_FILE_${comp}[*]} ${FILE} 
    282                 fi 
    283             fi 
    284             (( i=i+3 )) 
    285         done # until [ $i -eq $NbFiles ] 
     223  # 
     224  IGCM_card_DefineArrayFromOption ${CARD_DIR}/config.card ListOfComponents ${comp} 
     225  eval compname=\${config_ListOfComponents_${comp}[0]} > /dev/null 2>&1 
     226  # 
     227  card=${CARD_DIR}/COMP/${compname}.card 
     228  IGCM_card_DefineArrayFromOption ${card} OutputFiles List 
     229  # 
     230  ListFilesName=${compname}_OutputFiles_List 
     231  eval FileName0=\${${ListFilesName}[0]} > /dev/null 2>&1 
     232  # 
     233  if [ X${FileName0} != X${NULL_STR} ] ; then 
     234    # 
     235    # INITIALISATION 
     236    # 
     237    eval NbFiles=\${#${ListFilesName}[@]} > /dev/null 2>&1 
     238    typeset i=2 
     239    # 
     240    until [ $i -gt $NbFiles ]; do 
     241      # 
     242      eval flag_post=\${${ListFilesName}[$i]} > /dev/null 2>&1 
     243      # 
     244      if [ X${flag_post} != XNONE ] ; then 
     245        # 
     246        # Check if seasonal is required for this file 
     247        # 
     248        IGCM_card_DefineArrayFromSection ${card} ${flag_post} 
     249        # 
     250        # Seasonal case : If option Seasonal is not found (old cards) put SEASONAL ON by default 
     251        # 
     252        # variable option allready typeset above 
     253        for option in $( eval echo \${${compname}_${flag_post}[*]} ) ; do 
     254          if [ ${option} = Seasonal ] ; then 
     255            FoundSeasonal=true 
     256            IGCM_card_DefineVariableFromOption ${card} ${flag_post} Seasonal 
     257          fi 
     258        done 
     259        # 
     260        if [ ! X${FoundSeasonal} = Xtrue ] ; then 
     261          eval ${compname}_${flag_post}_Seasonal=ON 
     262        fi 
     263        # 
     264        if [ ! X$( eval echo \${${compname}_${flag_post}_Seasonal} ) = XON ] ; then 
     265          (( i=i+3 )) 
     266          continue 
     267        fi 
     268        # 
     269        # CREATE LIST 
     270        # 
     271        FILE=$( echo ${flag_post} | awk "-FPost_" '{print $2}' ) 
     272        # 
     273        DIRECTORY=${R_SAVE}/${comp}/Analyse/SE 
     274        # 
     275        MULTI_DIRECTORY=${R_SAVE}/${comp}/Analyse/${DIR_OUT} 
     276        # 
     277        TestedFile=${config_UserChoices_JobName}_SE_${an_multi_deb}_${an_multi_fin}_${FILE}.nc 
     278        # 
     279        IGCM_sys_TestFileArchive ${MULTI_DIRECTORY}/${TestedFile} 
     280        if [ ! $? = 0 ] ; then 
     281          eval set +A LISTE_FILE_${comp} \$\{LISTE_FILE_${comp}[*]} ${FILE} 
     282        fi 
     283      fi 
     284      (( i=i+3 )) 
     285    done # until [ $i -eq $NbFiles ] 
     286  fi 
     287done         # for comp 
     288 
     289for comp in ${config_ListOfComponents[*]} ; do 
     290  # 
     291  eval R_OUT_${comp}=${R_SAVE}/${comp} 
     292  # 
     293  i=0 
     294  for file in $( eval echo \${LISTE_FILE_${comp}[*]} ); do 
     295    # 
     296    RESULT_MULTI_SE=${config_UserChoices_JobName}_SE_${an_multi_deb}_${an_multi_fin}_${file}.nc 
     297    # Do not redo an existing SE 
     298    IGCM_sys_TestFileArchive ${R_SAVE}/${comp}/Analyse/${DIR_OUT}/${RESULT_MULTI_SE} 
     299    if [ $? = 0 ] ; then 
     300      continue 
    286301    fi 
    287 done         # for comp 
    288  
    289 for comp in ${config_ListOfComponents[*]} ; do 
    290     # 
    291     eval R_OUT_${comp}=${R_SAVE}/${comp} 
    292     # 
    293     i=0 
    294     for file in $( eval echo \${LISTE_FILE_${comp}[*]} ); do 
    295         # 
    296         RESULT_MULTI_SE=${config_UserChoices_JobName}_SE_${an_multi_deb}_${an_multi_fin}_${file}.nc 
    297         # Do not redo an existing SE 
    298         IGCM_sys_TestFileArchive ${R_SAVE}/${comp}/Analyse/${DIR_OUT}/${RESULT_MULTI_SE} 
    299         if [ $? = 0 ] ; then 
    300             continue 
    301         fi 
    302         # 
    303         eval file_path=\${R_OUT_${comp}}/Analyse/SE/ 
    304         # 
    305         (( an = an_multi_deb )) 
    306         # Initialize array 
    307         #set -A liste_file_se 
    308         #set -A liste_file_se_tmp 
    309         unset liste_file_se 
    310         unset liste_file_se_tmp 
    311         while [ ${an} -le ${an_multi_fin} ] ; do 
    312             # 
    313             an_deb=$(printf "%04i\n" ${an} ) 
    314             # 
    315             (( an_fin = an_deb + freq - 1 )) 
    316             date=${an_deb}_${an_fin} 
    317             #set +A liste_file_se ${liste_file_se[*]} ${file_path}${config_UserChoices_JobName}_${date}_${file}.nc 
    318             #set +A liste_file_se_tmp ${liste_file_se_tmp[*]} ${config_UserChoices_JobName}_${date}_${file}.nc 
    319             liste_file_se[${#liste_file_se[*]}]=${file_path}${config_UserChoices_JobName}_SE_${date}_${file}.nc 
    320             liste_file_se_tmp[${#liste_file_se_tmp[*]}]=${config_UserChoices_JobName}_SE_${date}_${file}.nc 
    321             (( an = an + freq )) 
    322         done 
    323         # 
    324         IGCM_sys_Get /l liste_file_se[*] ${RUN_DIR_PATH} 
    325         IGCM_debug_Verif_Exit_Post 
    326         # Search of common list of variables to be treated 
    327         nbfile=0 
    328         for file_common_var in ${liste_file_se_tmp[*]} ; do 
    329             ncdump -h ${file_common_var} | grep -E 'float|double' | cut -f 1 -d '(' | cut -f 2 -d ' ' >> tmpfile_ncra 
    330             (( nbfile = nbfile + 1 )) 
    331         done 
    332         list_var_final_ncra=`cat tmpfile_ncra | sort | uniq -c | awk -v nbfile=$nbfile '{if ($1 == nbfile) {print $2}}' | paste -s -d ','` 
    333         IGCM_sys_Rm tmpfile_ncra 
    334  
    335         # detect time counter : time or time_counter ie unlimited variable 
    336         var_unlim=$(ncdump -h ${liste_file_se_tmp[1]}|grep UNLIMITED|awk '{print $1}') 
    337  
    338         for mois in  01 02 03 04 05 06 07 08 09 10 11 12 ; do 
    339         # 
    340             (( nb = ${mois} - 1 )) 
    341         # 
    342             OUT_SE[${nb}]=${config_UserChoices_JobName}_SE${mois}_${an_deb}_${an_fin}_${file}.nc 
    343             IGCM_sys_ncra -O -v ${list_var_final_ncra} -d ${var_unlim},${nb},,12 ${liste_file_se_tmp[*]} ${OUT_SE[${nb}]} 
    344         done 
    345         IGCM_sys_Rm ${liste_file_se_tmp[*]} 
    346         # 
    347  
    348         # Search of common list of variables to be treated 
    349         nbfile=0 
    350         for file_common_var in ${OUT_SE[*]} ; do 
    351            ncdump -h ${file_common_var} | grep -E 'float|double' | cut -f 1 -d '(' | cut -f 2 -d ' ' >> tmpfile_ncrcat 
    352            (( nbfile = nbfile + 1 )) 
    353         done 
    354         list_var_final_ncrcat=`cat tmpfile_ncrcat | sort | uniq -c | awk -v nbfile=$nbfile '{if ($1 == nbfile) {print $2}}' | paste -s -d ','` 
    355         IGCM_sys_Rm tmpfile_ncrcat 
    356  
    357         IGCM_sys_ncrcat -O -v ${list_var_final_ncrcat} ${OUT_SE[*]} ${RESULT_MULTI_SE} 
    358         # 
    359         IGCM_sys_Rm ${OUT_SE[*]} 
    360          
    361         # Put correct climatological axis following calendar  
    362         case ${config_UserChoices_CalendarType} in 
    363                 360d|360_day) 
    364                         # 360 days 
    365                         ncap2cmd="'defdim(\"tbnds\",2) ; ${var_unlim}[${var_unlim}]={15, 45, 75, 105, 135, 165, 195, 225, 255, 285, 315, 345.} ; ${var_unlim}_bnds[${var_unlim},tbnds]={0, 30, 30, 60, 60, 90, 90, 120, 120, 150, 150, 180, 180, 210, 210, 240, 240, 270, 270, 300, 300, 330, 330, 360.} ; ${var_unlim}@units=\"days since 0000-01-01 00:00:00\" ; ${var_unlim}@time_origin=\"01-JAN-0000 00:00:00\" ; ${var_unlim}@calendar=\"360_day\" ; ${var_unlim}@bounds=\"${var_unlim}_bnds\"'" 
    366                         ;; 
    367                 noleap|365_day) 
    368                         # 365 days 
    369                         ncap2cmd="'defdim(\"tbnds\",2) ; ${var_unlim}[${var_unlim}]={15.5, 45, 74.5, 105, 135.5, 166, 196.5, 227.5, 258, 288.5, 319, 349.5} ; ${var_unlim}_bnds[${var_unlim},tbnds]={0, 31, 31, 59, 59, 90, 90, 120, 120, 151, 151, 181, 181, 212, 212, 243, 243, 273, 273, 304, 304, 334, 334, 365.} ; ${var_unlim}@units=\"days since 0000-01-01 00:00:00\" ; ${var_unlim}@time_origin=\"01-JAN-0000 00:00:00\" ; ${var_unlim}@calendar=\"365_day\" ; ${var_unlim}@bounds=\"${var_unlim}_bnds\"'" 
    370                         ;; 
    371                 all_leap|366_day) 
    372                         # 366 days 
    373                         ncap2cmd="'defdim(\"tbnds\",2) ; ${var_unlim}[${var_unlim}]={15.5, 45.5, 75.5, 106, 136.5, 167, 197.5, 228.5, 259, 289.5, 320, 350.5} ; ${var_unlim}_bnds[${var_unlim},tbnds]={0, 31, 31, 60, 60, 91, 91, 121, 121, 152, 152, 182, 182, 213, 213, 244, 244, 274, 274, 305, 305, 335, 335, 366.} ; ${var_unlim}@units=\"days since 0000-01-01 00:00:00\" ; ${var_unlim}@time_origin=\"01-JAN-0000 00:00:00\" ; ${var_unlim}@calendar=\"366_day\" ; ${var_unlim}@bounds=\"${var_unlim}_bnds\"'" 
    374                         ;; 
    375                 leap|gregorian|standard) 
    376                         # 365.2425 days 
    377                         ncap2cmd="'defdim(\"tbnds\",2) ; ${var_unlim}[${var_unlim}]={15.5, 45.12125, 74.7425, 105.2425, 135.7425, 166.2425, 196.7425, 227.7425, 258.2425, 288.7425, 319.2425, 349.7425} ; ${var_unlim}_bnds[${var_unlim},tbnds]={0, 31, 31, 59.2425, 59.2425, 90.2425, 90.2425, 120.2425, 120.2425, 151.2425, 151.2425, 181.2425, 181.2425, 212.2425, 212.2425, 243.2425, 243.2425, 273.2425, 273.2425, 304.2425, 304.2425, 334.2425, 334.2425, 365.2425} ; ${var_unlim}@units=\"days since 0000-01-01 00:00:00\" ; ${var_unlim}@time_origin=\"01-JAN-0000 00:00:00\" ; ${var_unlim}@calendar=\"gregorian\" ; ${var_unlim}@bounds=\"${var_unlim}_bnds\"'" 
    378                         ;; 
    379         esac 
    380         eval IGCM_sys_ncap2 -Oh -s $ncap2cmd ${RESULT_MULTI_SE} tmp.nc 
    381         IGCM_sys_Rm ${RESULT_MULTI_SE} 
    382         IGCM_sys_Mv tmp.nc ${RESULT_MULTI_SE} 
    383         # 
    384         eval IGCM_sys_Put_Out ${RESULT_MULTI_SE} \${R_OUT_${comp}}/Analyse/${DIR_OUT}/${RESULT_MULTI_SE} 
    385         IGCM_sys_Rm ${RESULT_MULTI_SE} 
    386         # 
     302    # 
     303    eval file_path=\${R_OUT_${comp}}/Analyse/SE/ 
     304    # 
     305    (( an = an_multi_deb )) 
     306    # Initialize array 
     307    #set -A liste_file_se 
     308    #set -A liste_file_se_tmp 
     309    unset liste_file_se 
     310    unset liste_file_se_tmp 
     311    while [ ${an} -le ${an_multi_fin} ] ; do 
     312      # 
     313      an_deb=$(printf "%04i\n" ${an} ) 
     314      # 
     315      (( an_fin = an_deb + freq - 1 )) 
     316      date=${an_deb}_${an_fin} 
     317      #set +A liste_file_se ${liste_file_se[*]} ${file_path}${config_UserChoices_JobName}_${date}_${file}.nc 
     318      #set +A liste_file_se_tmp ${liste_file_se_tmp[*]} ${config_UserChoices_JobName}_${date}_${file}.nc 
     319      liste_file_se[${#liste_file_se[*]}]=${file_path}${config_UserChoices_JobName}_SE_${date}_${file}.nc 
     320      liste_file_se_tmp[${#liste_file_se_tmp[*]}]=${config_UserChoices_JobName}_SE_${date}_${file}.nc 
     321      (( an = an + freq )) 
    387322    done 
     323    # 
     324    IGCM_sys_Get /l liste_file_se[*] ${RUN_DIR_PATH} 
     325    IGCM_debug_Verif_Exit_Post 
     326    # Search of common list of variables to be treated 
     327    nbfile=0 
     328    for file_common_var in ${liste_file_se_tmp[*]} ; do 
     329      ncdump -h ${file_common_var} | grep -E 'float|double' | cut -f 1 -d '(' | cut -f 2 -d ' ' >> tmpfile_ncra 
     330      (( nbfile = nbfile + 1 )) 
     331    done 
     332    list_var_final_ncra=`cat tmpfile_ncra | sort | uniq -c | awk -v nbfile=$nbfile '{if ($1 == nbfile) {print $2}}' | paste -s -d ','` 
     333    IGCM_sys_Rm tmpfile_ncra 
     334 
     335    # detect time counter : time or time_counter ie unlimited variable 
     336    var_unlim=$(ncdump -h ${liste_file_se_tmp[1]}|grep UNLIMITED|awk '{print $1}') 
     337 
     338    for mois in  01 02 03 04 05 06 07 08 09 10 11 12 ; do 
     339      # 
     340      (( nb = ${mois} - 1 )) 
     341      # 
     342      OUT_SE[${nb}]=${config_UserChoices_JobName}_SE${mois}_${an_deb}_${an_fin}_${file}.nc 
     343      IGCM_sys_ncra -O -v ${list_var_final_ncra} -d ${var_unlim},${nb},,12 ${liste_file_se_tmp[*]} ${OUT_SE[${nb}]} 
     344    done 
     345    IGCM_sys_Rm ${liste_file_se_tmp[*]} 
     346    # 
     347 
     348    # Search of common list of variables to be treated 
     349    nbfile=0 
     350    for file_common_var in ${OUT_SE[*]} ; do 
     351      ncdump -h ${file_common_var} | grep -E 'float|double' | cut -f 1 -d '(' | cut -f 2 -d ' ' >> tmpfile_ncrcat 
     352      (( nbfile = nbfile + 1 )) 
     353    done 
     354    list_var_final_ncrcat=`cat tmpfile_ncrcat | sort | uniq -c | awk -v nbfile=$nbfile '{if ($1 == nbfile) {print $2}}' | paste -s -d ','` 
     355    IGCM_sys_Rm tmpfile_ncrcat 
     356 
     357    IGCM_sys_ncrcat -O -v ${list_var_final_ncrcat} ${OUT_SE[*]} ${RESULT_MULTI_SE} 
     358    # 
     359    IGCM_sys_Rm ${OUT_SE[*]} 
     360 
     361    # Put correct climatological axis following calendar  
     362    case ${config_UserChoices_CalendarType} in 
     363      360d|360_day) 
     364      # 360 days 
     365        ncap2cmd="'defdim(\"tbnds\",2) ; ${var_unlim}[${var_unlim}]={15, 45, 75, 105, 135, 165, 195, 225, 255, 285, 315, 345.} ; ${var_unlim}_bnds[${var_unlim},tbnds]={0, 30, 30, 60, 60, 90, 90, 120, 120, 150, 150, 180, 180, 210, 210, 240, 240, 270, 270, 300, 300, 330, 330, 360.} ; ${var_unlim}@units=\"days since 0000-01-01 00:00:00\" ; ${var_unlim}@time_origin=\"01-JAN-0000 00:00:00\" ; ${var_unlim}@calendar=\"360_day\" ; ${var_unlim}@bounds=\"${var_unlim}_bnds\"'" 
     366        ;; 
     367      noleap|365_day) 
     368      # 365 days 
     369        ncap2cmd="'defdim(\"tbnds\",2) ; ${var_unlim}[${var_unlim}]={15.5, 45, 74.5, 105, 135.5, 166, 196.5, 227.5, 258, 288.5, 319, 349.5} ; ${var_unlim}_bnds[${var_unlim},tbnds]={0, 31, 31, 59, 59, 90, 90, 120, 120, 151, 151, 181, 181, 212, 212, 243, 243, 273, 273, 304, 304, 334, 334, 365.} ; ${var_unlim}@units=\"days since 0000-01-01 00:00:00\" ; ${var_unlim}@time_origin=\"01-JAN-0000 00:00:00\" ; ${var_unlim}@calendar=\"365_day\" ; ${var_unlim}@bounds=\"${var_unlim}_bnds\"'" 
     370        ;; 
     371      all_leap|366_day) 
     372      # 366 days 
     373        ncap2cmd="'defdim(\"tbnds\",2) ; ${var_unlim}[${var_unlim}]={15.5, 45.5, 75.5, 106, 136.5, 167, 197.5, 228.5, 259, 289.5, 320, 350.5} ; ${var_unlim}_bnds[${var_unlim},tbnds]={0, 31, 31, 60, 60, 91, 91, 121, 121, 152, 152, 182, 182, 213, 213, 244, 244, 274, 274, 305, 305, 335, 335, 366.} ; ${var_unlim}@units=\"days since 0000-01-01 00:00:00\" ; ${var_unlim}@time_origin=\"01-JAN-0000 00:00:00\" ; ${var_unlim}@calendar=\"366_day\" ; ${var_unlim}@bounds=\"${var_unlim}_bnds\"'" 
     374        ;; 
     375      leap|gregorian|standard) 
     376      # 365.2425 days 
     377        ncap2cmd="'defdim(\"tbnds\",2) ; ${var_unlim}[${var_unlim}]={15.5, 45.12125, 74.7425, 105.2425, 135.7425, 166.2425, 196.7425, 227.7425, 258.2425, 288.7425, 319.2425, 349.7425} ; ${var_unlim}_bnds[${var_unlim},tbnds]={0, 31, 31, 59.2425, 59.2425, 90.2425, 90.2425, 120.2425, 120.2425, 151.2425, 151.2425, 181.2425, 181.2425, 212.2425, 212.2425, 243.2425, 243.2425, 273.2425, 273.2425, 304.2425, 304.2425, 334.2425, 334.2425, 365.2425} ; ${var_unlim}@units=\"days since 0000-01-01 00:00:00\" ; ${var_unlim}@time_origin=\"01-JAN-0000 00:00:00\" ; ${var_unlim}@calendar=\"gregorian\" ; ${var_unlim}@bounds=\"${var_unlim}_bnds\"'" 
     378        ;; 
     379    esac 
     380    eval IGCM_sys_ncap2 -Oh -s $ncap2cmd ${RESULT_MULTI_SE} tmp.nc 
     381    IGCM_sys_Rm ${RESULT_MULTI_SE} 
     382    IGCM_sys_Mv tmp.nc ${RESULT_MULTI_SE} 
     383    # 
     384    eval IGCM_sys_Put_Out ${RESULT_MULTI_SE} \${R_OUT_${comp}}/Analyse/${DIR_OUT}/${RESULT_MULTI_SE} 
     385    IGCM_sys_Rm ${RESULT_MULTI_SE} 
     386    # 
     387  done 
    388388done 
    389389 
    390390# DODS copy 
    391391for comp in ${config_ListOfComponents[*]} ; do 
    392     IGCM_sys_TestDirArchive ${R_SAVE}/${comp}/Analyse/${DIR_OUT} 
    393     [ $? = 0 ] && IGCM_sys_Put_Dods ${comp}/Analyse/${DIR_OUT} 
     392  IGCM_sys_TestDirArchive ${R_SAVE}/${comp}/Analyse/${DIR_OUT} 
     393  [ $? = 0 ] && IGCM_sys_Put_Dods ${comp}/Analyse/${DIR_OUT} 
    394394done 
    395395 
     
    411411   [ ${config_UserChoices_TagName} = "IPSLCM4_v2" ]        || \ 
    412412   [ ${config_UserChoices_TagName} = "IPSL_ESM_V1" ] ; then 
    413     # 
    414     Script_Post_Output=atlas_ORCHIDEE.${PeriodDateEnd} ; 
    415     IGCM_sys_QsubPost atlas_ORCHIDEE                   ; 
    416     Script_Post_Output=atlas_LDMZ.${PeriodDateEnd}     ; 
    417     IGCM_sys_QsubPost atlas_LMDZ                       ; 
    418     Script_Post_Output=atlas_ORCA_LIM.${PeriodDateEnd} ; 
    419     IGCM_sys_QsubPost atlas_ORCA_LIM                   ; 
    420     Script_Post_Output=additionnal.${PeriodDateEnd}    ; 
    421     IGCM_sys_QsubPost additionnal                      ; 
    422     # 
     413  # 
     414  Script_Post_Output=atlas_ORCHIDEE.${PeriodDateEnd} ; 
     415  IGCM_sys_QsubPost atlas_ORCHIDEE                   ; 
     416  Script_Post_Output=atlas_LDMZ.${PeriodDateEnd}     ; 
     417  IGCM_sys_QsubPost atlas_LMDZ                       ; 
     418  Script_Post_Output=atlas_ORCA_LIM.${PeriodDateEnd} ; 
     419  IGCM_sys_QsubPost atlas_ORCA_LIM                   ; 
     420  Script_Post_Output=additionnal.${PeriodDateEnd}    ; 
     421  IGCM_sys_QsubPost additionnal                      ; 
     422  # 
    423423elif [ ${config_UserChoices_TagName} = "IPSLCM5" ]  || \ 
    424424     [ ${config_UserChoices_TagName} = "IPSLCM5A" ] || \ 
    425425     [ ${config_UserChoices_TagName} = "IPSLCM5B" ] || \ 
    426426     [ ${config_UserChoices_TagName} = "IPSLCM5A-MR" ] ; then 
    427     Script_Post_Output=atlas_ORCHIDEE.${PeriodDateEnd} ; 
    428     IGCM_sys_QsubPost atlas_ORCHIDEE                   ; 
    429     Script_Post_Output=atlas_LDMZ.${PeriodDateEnd}     ; 
    430     IGCM_sys_QsubPost atlas_LMDZ                       ; 
    431     Script_Post_Output=atlas_ORCA_LIM.${PeriodDateEnd} ; 
    432     IGCM_sys_QsubPost atlas_ORCA_LIM                   ; 
    433     Script_Post_Output=atlas_PISCES.${PeriodDateEnd}   ; 
    434     IGCM_sys_QsubPost atlas_PISCES                     ; 
    435     # 
     427  Script_Post_Output=atlas_ORCHIDEE.${PeriodDateEnd} ; 
     428  IGCM_sys_QsubPost atlas_ORCHIDEE                   ; 
     429  Script_Post_Output=atlas_LDMZ.${PeriodDateEnd}     ; 
     430  IGCM_sys_QsubPost atlas_LMDZ                       ; 
     431  Script_Post_Output=atlas_ORCA_LIM.${PeriodDateEnd} ; 
     432  IGCM_sys_QsubPost atlas_ORCA_LIM                   ; 
     433  Script_Post_Output=atlas_PISCES.${PeriodDateEnd}   ; 
     434  IGCM_sys_QsubPost atlas_PISCES                     ; 
     435  # 
    436436elif [ ${config_UserChoices_TagName} = "LMDZ4OR" ]  || \ 
    437437     [ ${config_UserChoices_TagName} = "LMDZOR" ]   || \ 
    438438     [ ${config_UserChoices_TagName} = "LMDZ4OR_v2" ] ; then 
    439     # 
    440     Script_Post_Output=atlas_LDMZ.${PeriodDateEnd}     ; 
    441     IGCM_sys_QsubPost atlas_LMDZ                       ; 
    442     Script_Post_Output=atlas_ORCHIDEE.${PeriodDateEnd} ; 
    443     IGCM_sys_QsubPost atlas_ORCHIDEE                   ; 
    444     # 
     439  # 
     440  Script_Post_Output=atlas_LDMZ.${PeriodDateEnd}     ; 
     441  IGCM_sys_QsubPost atlas_LMDZ                       ; 
     442  Script_Post_Output=atlas_ORCHIDEE.${PeriodDateEnd} ; 
     443  IGCM_sys_QsubPost atlas_ORCHIDEE                   ; 
     444  # 
    445445elif [ ${config_UserChoices_TagName} = "LMDZ" ] ; then 
    446     # 
    447     Script_Post_Output=atlas_LDMZ.${PeriodDateEnd}     ; 
    448     IGCM_sys_QsubPost atlas_LMDZ                       ; 
    449     # 
     446  # 
     447  Script_Post_Output=atlas_LDMZ.${PeriodDateEnd}     ; 
     448  IGCM_sys_QsubPost atlas_LMDZ                       ; 
     449  # 
    450450elif [ ${config_UserChoices_TagName} = "OL" ]      || \ 
    451451     [ ${config_UserChoices_TagName} = "OL2" ] ; then 
    452     # 
    453     Script_Post_Output=atlas_ORCHIDEE.${PeriodDateEnd} ; 
    454     IGCM_sys_QsubPost atlas_ORCHIDEE                   ; 
    455     # 
     452  # 
     453  Script_Post_Output=atlas_ORCHIDEE.${PeriodDateEnd} ; 
     454  IGCM_sys_QsubPost atlas_ORCHIDEE                   ; 
     455  # 
    456456elif [ ${config_UserChoices_TagName} = "ORCA2_LIM" ]       || 
    457457     [ ${config_UserChoices_TagName} = "ORCA2_LIM2" ] ; then 
    458     # 
    459     Script_Post_Output=atlas_ORCA_LIM.${PeriodDateEnd} ; 
    460     IGCM_sys_QsubPost atlas_ORCA_LIM                   ; 
     458  # 
     459  Script_Post_Output=atlas_ORCA_LIM.${PeriodDateEnd} ; 
     460  IGCM_sys_QsubPost atlas_ORCA_LIM                   ; 
    461461elif [ ${config_UserChoices_TagName} = "ORCA2_LIM2_PISCES" ]  ; then 
    462     # 
    463     Script_Post_Output=atlas_ORCA_LIM.${PeriodDateEnd} ; 
    464     IGCM_sys_QsubPost atlas_ORCA_LIM                   ; 
    465     Script_Post_Output=atlas_PISCES.${PeriodDateEnd}   ; 
    466     IGCM_sys_QsubPost atlas_PISCES                     ; 
     462  # 
     463  Script_Post_Output=atlas_ORCA_LIM.${PeriodDateEnd} ; 
     464  IGCM_sys_QsubPost atlas_ORCA_LIM                   ; 
     465  Script_Post_Output=atlas_PISCES.${PeriodDateEnd}   ; 
     466  IGCM_sys_QsubPost atlas_PISCES                     ; 
    467467elif [ ${config_UserChoices_TagName} = "ORCA2_OFF_PISCES" ]  ; then 
    468     # 
    469     Script_Post_Output=atlas_PISCES.${PeriodDateEnd}   ; 
    470     IGCM_sys_QsubPost atlas_PISCES                     ; 
    471     # 
     468  # 
     469  Script_Post_Output=atlas_PISCES.${PeriodDateEnd}   ; 
     470  IGCM_sys_QsubPost atlas_PISCES                     ; 
     471  # 
    472472fi 
    473473 
  • trunk/libIGCM/AA_create_se

    r783 r785  
    217217# 
    218218for comp in ${config_ListOfComponents[*]} ; do 
    219     # 
    220     IGCM_card_DefineArrayFromOption ${CARD_DIR}/config.card ListOfComponents ${comp} 
    221     eval compname=\${config_ListOfComponents_${comp}[0]} > /dev/null 2>&1 
    222     # 
    223     card=${CARD_DIR}/COMP/${compname}.card 
    224     IGCM_card_DefineArrayFromOption ${card} OutputFiles List 
    225     # 
    226     ListFilesName=${compname}_OutputFiles_List 
    227     eval FileName0=\${${ListFilesName}[0]} > /dev/null 2>&1 
    228     # 
    229     if [ X${FileName0} != X${NULL_STR} ] ; then 
    230         # 
    231         # INITIALISATION 
    232         # 
    233         eval NbFiles=\${#${ListFilesName}[@]} > /dev/null 2>&1 
    234         typeset i=2 
    235         # 
    236         until [ $i -gt $NbFiles ]; do 
    237             # 
    238             eval flag_post=\${${ListFilesName}[$i]} > /dev/null 2>&1 
    239             # 
    240             if [ X${flag_post} != XNONE ] ; then 
    241                 # 
    242                 # Check if seasonal is required for this file 
    243                 # 
    244                 IGCM_card_DefineArrayFromSection ${card} ${flag_post} 
    245                 # 
    246                 # Seasonal case : If option Seasonal is not found (old cards) put SEASONAL ON by default 
    247                 # 
    248                 # variable option allready typeset above 
    249                 for option in $( eval echo \${${compname}_${flag_post}[*]} ) ; do 
    250                     if [ ${option} = Seasonal ] ; then 
    251                         FoundSeasonal=true 
    252                         IGCM_card_DefineVariableFromOption ${card} ${flag_post} Seasonal 
    253                     fi 
    254                 done 
    255                 # 
    256                 if [ ! X${FoundSeasonal} = Xtrue ] ; then 
    257                     eval ${compname}_${flag_post}_Seasonal=ON 
    258                 fi 
    259                 # 
    260                 if [ ! X$( eval echo \${${compname}_${flag_post}_Seasonal} ) = XON ] ; then 
    261                     (( i=i+3 )) 
    262                     continue 
    263                 fi 
    264                 # 
    265                 # CREATE LIST 
    266                 # 
    267                 FILE=$( echo ${flag_post} | awk "-FPost_" '{print $2}' ) 
    268                 # 
    269                 DIRECTORY=${R_SAVE}/${comp}/Analyse/SE 
    270                 # 
    271                 TestedFile=${config_UserChoices_JobName}_SE_${an_deb}_${an_fin}_${FILE}.nc 
    272                 # 
    273                 IGCM_sys_TestFileArchive ${DIRECTORY}/${TestedFile} 
    274                 if [ ! $? = 0 ] ; then 
    275                     eval set +A LISTE_FILE_${comp} \$\{LISTE_FILE_${comp}[*]} ${FILE} 
    276                     if [ ! ${RebuildFrequency} = true ] ; then 
    277                         IGCM_card_DefineArrayFromOption ${card} Post_${FILE} Patches 
    278                         eval set +A LISTE_PATCHES_${FILE} \$\{${compname}_Post_${FILE}_Patches[*]} 
    279                         if [ X$( eval echo \${LISTE_PATCHES_${FILE}[0]} ) !=  X${NULL_STR} ]; then 
    280                             for Patch in $( eval echo \${LISTE_PATCHES_${FILE}[*]} ); do 
    281                                 if [ Xload${Patch} != X ] ; then 
    282                                     . ${libIGCM}/libIGCM_post/IGCM_${Patch}.ksh 
    283                                     eval load${Patch}=loaded 
    284                                 fi 
    285                             done 
    286                         fi 
    287                     fi 
    288                 fi 
    289             fi 
    290             (( i=i+3 )) 
    291         done # until [ $i -eq $NbFiles ] 
     219  # 
     220  IGCM_card_DefineArrayFromOption ${CARD_DIR}/config.card ListOfComponents ${comp} 
     221  eval compname=\${config_ListOfComponents_${comp}[0]} > /dev/null 2>&1 
     222  # 
     223  card=${CARD_DIR}/COMP/${compname}.card 
     224  IGCM_card_DefineArrayFromOption ${card} OutputFiles List 
     225  # 
     226  ListFilesName=${compname}_OutputFiles_List 
     227  eval FileName0=\${${ListFilesName}[0]} > /dev/null 2>&1 
     228  # 
     229  if [ X${FileName0} != X${NULL_STR} ] ; then 
     230    # 
     231    # INITIALISATION 
     232    # 
     233    eval NbFiles=\${#${ListFilesName}[@]} > /dev/null 2>&1 
     234    typeset i=2 
     235    # 
     236    until [ $i -gt $NbFiles ]; do 
     237      # 
     238      eval flag_post=\${${ListFilesName}[$i]} > /dev/null 2>&1 
     239      # 
     240      if [ X${flag_post} != XNONE ] ; then 
     241        # 
     242        # Check if seasonal is required for this file 
     243        # 
     244        IGCM_card_DefineArrayFromSection ${card} ${flag_post} 
     245        # 
     246        # Seasonal case : If option Seasonal is not found (old cards) put SEASONAL ON by default 
     247        # 
     248        # variable option allready typeset above 
     249        for option in $( eval echo \${${compname}_${flag_post}[*]} ) ; do 
     250          if [ ${option} = Seasonal ] ; then 
     251            FoundSeasonal=true 
     252            IGCM_card_DefineVariableFromOption ${card} ${flag_post} Seasonal 
     253          fi 
     254        done 
     255        # 
     256        if [ ! X${FoundSeasonal} = Xtrue ] ; then 
     257            eval ${compname}_${flag_post}_Seasonal=ON 
     258        fi 
     259        # 
     260        if [ ! X$( eval echo \${${compname}_${flag_post}_Seasonal} ) = XON ] ; then 
     261          (( i=i+3 )) 
     262          continue 
     263        fi 
     264        # 
     265        # CREATE LIST 
     266        # 
     267        FILE=$( echo ${flag_post} | awk "-FPost_" '{print $2}' ) 
     268        # 
     269        DIRECTORY=${R_SAVE}/${comp}/Analyse/SE 
     270        # 
     271        TestedFile=${config_UserChoices_JobName}_SE_${an_deb}_${an_fin}_${FILE}.nc 
     272        # 
     273        IGCM_sys_TestFileArchive ${DIRECTORY}/${TestedFile} 
     274        if [ ! $? = 0 ] ; then 
     275          eval set +A LISTE_FILE_${comp} \$\{LISTE_FILE_${comp}[*]} ${FILE} 
     276          if [ ! ${RebuildFrequency} = true ] ; then 
     277            IGCM_card_DefineArrayFromOption ${card} Post_${FILE} Patches 
     278            eval set +A LISTE_PATCHES_${FILE} \$\{${compname}_Post_${FILE}_Patches[*]} 
     279            if [ X$( eval echo \${LISTE_PATCHES_${FILE}[0]} ) !=  X${NULL_STR} ]; then 
     280              for Patch in $( eval echo \${LISTE_PATCHES_${FILE}[*]} ); do 
     281                if [ Xload${Patch} != X ] ; then 
     282                  . ${libIGCM}/libIGCM_post/IGCM_${Patch}.ksh 
     283                  eval load${Patch}=loaded 
     284                fi 
     285              done 
     286            fi 
     287          fi 
     288        fi 
     289      fi 
     290      (( i=i+3 )) 
     291    done # until [ $i -eq $NbFiles ] 
     292  fi 
     293done         # for comp 
     294 
     295for comp in ${config_ListOfComponents[*]} ; do 
     296  # 
     297  eval R_OUT_${comp}=${R_SAVE}/${comp} 
     298  # 
     299  i=0 
     300  for file in $( eval echo \${LISTE_FILE_${comp}[*]} ); do 
     301    # 
     302    # Determine in which output can we find file 
     303    # IE : Output/MO or Output/DA or ... 
     304    # 
     305    FlagDir=$( echo ${file} | awk -F "_" '{print $1}' ) 
     306    case ${FlagDir} in 
     307      1Y)    FreqDir=YE  ;; 
     308      1M)    FreqDir=MO  ;; 
     309      5D|1D) FreqDir=DA  ;; 
     310      HF)    FreqDir=HF  ;; 
     311      3H)    FreqDir=HF  ;; 
     312      INS)   FreqDir=INS ;; 
     313    esac 
     314    # 
     315    RESULT_SE=${config_UserChoices_JobName}_SE_${an_deb}_${an_fin}_${file}.nc 
     316    # Do not redoo an existing SE 
     317    IGCM_sys_TestFileArchive ${R_SAVE}/${comp}/Analyse/SE/${RESULT_SE} 
     318    if [ $? = 0 ] ; then 
     319      continue 
    292320    fi 
    293 done         # for comp 
    294  
    295 for comp in ${config_ListOfComponents[*]} ; do 
    296     # 
    297     eval R_OUT_${comp}=${R_SAVE}/${comp} 
    298     # 
    299     i=0 
    300     for file in $( eval echo \${LISTE_FILE_${comp}[*]} ); do 
    301         # 
    302         # Determine in which output can we find file 
    303         # IE : Output/MO or Output/DA or ... 
    304         # 
    305         FlagDir=$( echo ${file} | awk -F "_" '{print $1}' ) 
    306         case ${FlagDir} in 
    307             1Y)    FreqDir=YE  ;; 
    308             1M)    FreqDir=MO  ;; 
    309             5D|1D) FreqDir=DA  ;; 
    310             HF)    FreqDir=HF  ;; 
    311             3H)    FreqDir=HF  ;; 
    312             INS)   FreqDir=INS ;; 
    313         esac 
    314         # 
    315         RESULT_SE=${config_UserChoices_JobName}_SE_${an_deb}_${an_fin}_${file}.nc 
    316         # Do not redoo an existing SE 
    317         IGCM_sys_TestFileArchive ${R_SAVE}/${comp}/Analyse/SE/${RESULT_SE} 
    318         if [ $? = 0 ] ; then 
    319             continue 
    320         fi 
    321         # 
    322         eval file_path=\${R_OUT_${comp}}/Output/${FreqDir}/ 
    323         # 
    324         case ${config_UserChoices_PeriodLength} in 
    325         # For Yearly simulation : 
    326         1Y|1y) 
    327           (( an = an_deb )) 
    328           # Initialize array 
    329           #set -A liste_file_se 
    330           #set -A liste_file_se_tmp 
    331           unset liste_file_se 
    332           unset liste_file_se_tmp 
    333           while [ ${an} -le ${an_fin} ] ; do 
    334               moisL=$( IGCM_date_DaysInMonth ${an} ${mois} ) 
    335               # 
    336               an4=$(printf "%04i\n" ${an} ) 
    337               # 
    338               diy=$( IGCM_date_DaysInYear $an4 ) 
    339               afin=$( IGCM_date_AddDaysToGregorianDate ${an4}0101 $(( diy - 1 )) ) 
    340               date=${an4}0101_${afin} 
    341               #set +A liste_file_se ${liste_file_se[*]} ${file_path}${config_UserChoices_JobName}_${date}_${file}.nc 
    342               #set +A liste_file_se_tmp ${liste_file_se_tmp[*]} ${config_UserChoices_JobName}_${date}_${file}.nc 
    343               liste_file_se[${#liste_file_se[*]}]=${file_path}${config_UserChoices_JobName}_${date}_${file}.nc 
    344               liste_file_se_tmp[${#liste_file_se_tmp[*]}]=${config_UserChoices_JobName}_${date}_${file}.nc 
    345               (( an = an + 1 )) 
    346           done 
    347           # 
    348           IGCM_sys_Get /l liste_file_se[*] ${RUN_DIR_PATH} 
    349           IGCM_debug_Verif_Exit_Post 
    350            
    351           # Apply IGCM_Patch if needed 
    352           if [ ! ${RebuildFrequency} = true ] ; then 
    353               if [ X$( eval echo \${LISTE_PATCHES_${file}[0]} ) !=  X${NULL_STR} ]; then 
    354                   for file_t in $( eval echo ${liste_file_se_tmp[*]} ); do 
    355                       for Patch in $( eval echo \${LISTE_PATCHES_${file}[*]} ); do 
    356                           IGCM_${Patch} ${file_t} 
    357                       done 
    358                   done 
    359               fi 
    360           fi 
    361                        
    362           # Search of common list of variables to be treated 
    363           nbfile=0 
    364           for file_common_var in ${liste_file_se_tmp[*]} ; do 
    365               ncdump -h ${file_common_var} | grep -E 'float|double' | cut -f 1 -d '(' | cut -f 2 -d ' ' >> tmpfile_ncra 
    366               (( nbfile = nbfile + 1 )) 
    367           done 
    368           list_var_final_ncra=`cat tmpfile_ncra | sort | uniq -c | awk -v nbfile=$nbfile '{if ($1 == nbfile) {print $2}}' | paste -s -d ','` 
    369           IGCM_sys_Rm tmpfile_ncra 
    370  
    371           # detect time counter : time or time_counter ie unlimited variable 
    372           var_unlim=$(ncdump -h ${liste_file_se_tmp[1]}|grep UNLIMITED|awk '{print $1}') 
    373  
    374           for mois in  01 02 03 04 05 06 07 08 09 10 11 12 ; do 
    375           # 
    376               (( nb = ${mois} - 1 )) 
    377           # 
    378               OUT_SE[${nb}]=${config_UserChoices_JobName}_SE${mois}_${an_deb}_${an_fin}_${file}.nc 
    379               IGCM_sys_ncra -O -v ${list_var_final_ncra} -d ${var_unlim},${nb},,12 ${liste_file_se_tmp[*]} ${OUT_SE[${nb}]} 
    380           done 
    381           IGCM_sys_Rm ${liste_file_se_tmp[*]} 
    382           ;; 
    383         # For Monthly simulation : 
    384         1M|1m) 
    385           for mois in  01 02 03 04 05 06 07 08 09 10 11 12 ; do 
    386               # 
    387               (( nb = ${mois} - 1 )) 
    388               # 
    389               OUT_SE[${nb}]=${config_UserChoices_JobName}_SE${mois}_${an_deb}_${an_fin}_${file}.nc 
    390               # 
    391               (( an = an_deb )) 
    392               # Initialize array 
    393               #set -A liste_file_se 
    394               #set -A liste_file_se_tmp 
    395               unset liste_file_se 
    396               unset liste_file_se_tmp 
    397               while [ ${an} -le ${an_fin} ] ; do 
    398                   moisL=$( IGCM_date_DaysInMonth ${an} ${mois} ) 
    399                   # 
    400                   an4=$(printf "%04i\n" ${an} ) 
    401                   # 
    402                   date=${an4}${mois}01_${an4}${mois}${moisL} 
    403                   #set +A liste_file_se ${liste_file_se[*]} ${file_path}${config_UserChoices_JobName}_${date}_${file}.nc 
    404                   #set +A liste_file_se_tmp ${liste_file_se_tmp[*]} ${config_UserChoices_JobName}_${date}_${file}.nc 
    405                   liste_file_se[${#liste_file_se[*]}]=${file_path}${config_UserChoices_JobName}_${date}_${file}.nc 
    406                   liste_file_se_tmp[${#liste_file_se_tmp[*]}]=${config_UserChoices_JobName}_${date}_${file}.nc 
    407  
    408                   (( an = an + 1 )) 
    409               done 
    410               # 
    411               IGCM_sys_Get /l liste_file_se[*] ${RUN_DIR_PATH} 
    412               IGCM_debug_Verif_Exit_Post 
    413                
    414               # Apply IGCM_Patch if needed 
    415               if [ ! ${RebuildFrequency} = true ] ; then 
    416                   if [ X$( eval echo \${LISTE_PATCHES_${file}[0]} ) !=  X${NULL_STR} ]; then 
    417                       for file_t in $( eval echo ${liste_file_se_tmp[*]} ); do 
    418                           for Patch in $( eval echo \${LISTE_PATCHES_${file}[*]} ); do 
    419                               IGCM_${Patch} ${file_t} 
    420                           done 
    421                       done 
    422                   fi 
    423               fi 
    424                
    425               # Search of common list of variables to be treated 
    426               nbfile=0 
    427               for file_common_var in ${liste_file_se_tmp[*]} ; do 
    428                   ncdump -h ${file_common_var} | grep -E 'float|double' | cut -f 1 -d '(' | cut -f 2 -d ' ' >> tmpfile_ncra 
    429                   (( nbfile = nbfile + 1 )) 
    430               done 
    431               list_var_final_ncra=`cat tmpfile_ncra | sort | uniq -c | awk -v nbfile=$nbfile '{if ($1 == nbfile) {print $2}}' | paste -s -d ','` 
    432               IGCM_sys_Rm tmpfile_ncra 
    433  
    434               IGCM_sys_ncra -O -v ${list_var_final_ncra} ${liste_file_se_tmp[*]} ${OUT_SE[${nb}]} 
    435  
    436               IGCM_sys_Rm ${liste_file_se_tmp[*]} 
    437           done 
    438           ;; 
    439         *D|*d) 
    440           for mois in  01 02 03 04 05 06 07 08 09 10 11 12 ; do 
    441               # 
    442               (( nb = ${mois} - 1 )) 
    443               # 
    444               OUT_SE[${nb}]=${config_UserChoices_JobName}_SE${mois}_${an_deb}_${an_fin}_${file}.nc 
    445               # 
    446               (( an = an_deb )) 
    447               # Initialize array 
    448               #set -A liste_file_se 
    449               #set -A liste_file_se_tmp 
    450               unset liste_file_se 
    451               unset liste_file_se_tmp 
    452               while [ ${an} -le ${an_fin} ] ; do 
    453                   moisL=$( IGCM_date_DaysInMonth ${an} ${mois} ) 
    454                   # 
    455                   an4=$(printf "%04i\n" ${an} ) 
    456                   # 
    457                   length_d=$(( ${config_UserChoices_PeriodLength} - 1 )) 
    458                   # for one day 
    459                   if [ ${length_d} -eq 1 ] ; then 
    460                       (( length_d = 0 )) 
    461                   fi 
    462                   (( day  = 1 )) 
    463                   while [ ${day} -le ${moisL} ] ; do 
    464                       day2=$(printf "%02i\n" ${day} ) 
    465                       day_beg=${an4}${mois}${day2} 
    466                       day_end=$( IGCM_date_AddDaysToGregorianDate ${day_beg} ${length_d} ) 
    467                       date=${an4}${mois}${day_beg}_${an4}${mois}${day_end} 
    468                       #set +A liste_file_se ${liste_file_se[*]} ${file_path}${config_UserChoices_JobName}_${date}_${file}.nc 
    469                       #set +A liste_file_se_tmp ${liste_file_se_tmp[*]} ${config_UserChoices_JobName}_${date}_${file}.nc 
    470                       liste_file_se[${#liste_file_se[*]}]=${file_path}${config_UserChoices_JobName}_${date}_${file}.nc 
    471                       liste_file_se_tmp[${#liste_file_se_tmp[*]}]=${config_UserChoices_JobName}_${date}_${file}.nc 
    472                       (( day = day + 1 )) 
    473                   done 
    474                   (( an = an + 1 )) 
    475               done 
    476               # 
    477               IGCM_sys_Get /l liste_file_se[*] ${RUN_DIR_PATH} 
    478               IGCM_debug_Verif_Exit_Post 
    479                
    480               # Apply IGCM_Patch if needed 
    481               if [ ! ${RebuildFrequency} = true ] ; then 
    482                   if [ X$( eval echo \${LISTE_PATCHES_${file}[0]} ) !=  X${NULL_STR} ]; then 
    483                       for file_t in $( eval echo ${liste_file_se_tmp[*]} ); do 
    484                           for Patch in $( eval echo \${LISTE_PATCHES_${file}[*]} ); do 
    485                               IGCM_${Patch} ${file_t} 
    486                           done 
    487                       done 
    488                   fi 
    489               fi 
    490  
    491               # Search of common list of variables to be treated 
    492               nbfile=0 
    493               for file_common_var in ${liste_file_se_tmp[*]} ; do 
    494                   ncdump -h ${file_common_var} | grep -E 'float|double' | cut -f 1 -d '(' | cut -f 2 -d ' ' >> tmpfile_ncra 
    495                   (( nbfile = nbfile + 1 )) 
    496               done 
    497               list_var_final_ncra=`cat tmpfile_ncra | sort | uniq -c | awk -v nbfile=$nbfile '{if ($1 == nbfile) {print $2}}' | paste -s -d ','` 
    498               IGCM_sys_Rm tmpfile_ncra 
    499  
    500               IGCM_sys_ncra -O -v ${list_var_final_ncra} ${liste_file_se_tmp[*]} ${OUT_SE[${nb}]} 
    501               IGCM_sys_Rm ${liste_file_se_tmp[*]} 
    502           done 
    503           ;; 
    504         esac 
    505         # 
     321    # 
     322    eval file_path=\${R_OUT_${comp}}/Output/${FreqDir}/ 
     323    # 
     324    case ${config_UserChoices_PeriodLength} in 
     325      # For Yearly simulation : 
     326      1Y|1y) 
     327        (( an = an_deb )) 
     328        # Initialize array 
     329        #set -A liste_file_se 
     330        #set -A liste_file_se_tmp 
     331        unset liste_file_se 
     332        unset liste_file_se_tmp 
     333        while [ ${an} -le ${an_fin} ] ; do 
     334          moisL=$( IGCM_date_DaysInMonth ${an} ${mois} ) 
     335          # 
     336          an4=$(printf "%04i\n" ${an} ) 
     337          # 
     338          diy=$( IGCM_date_DaysInYear $an4 ) 
     339          afin=$( IGCM_date_AddDaysToGregorianDate ${an4}0101 $(( diy - 1 )) ) 
     340          date=${an4}0101_${afin} 
     341          #set +A liste_file_se ${liste_file_se[*]} ${file_path}${config_UserChoices_JobName}_${date}_${file}.nc 
     342          #set +A liste_file_se_tmp ${liste_file_se_tmp[*]} ${config_UserChoices_JobName}_${date}_${file}.nc 
     343          liste_file_se[${#liste_file_se[*]}]=${file_path}${config_UserChoices_JobName}_${date}_${file}.nc 
     344          liste_file_se_tmp[${#liste_file_se_tmp[*]}]=${config_UserChoices_JobName}_${date}_${file}.nc 
     345          (( an = an + 1 )) 
     346        done 
     347        # 
     348        IGCM_sys_Get /l liste_file_se[*] ${RUN_DIR_PATH} 
     349        IGCM_debug_Verif_Exit_Post 
     350 
     351        # Apply IGCM_Patch if needed 
     352        if [ ! ${RebuildFrequency} = true ] ; then 
     353          if [ X$( eval echo \${LISTE_PATCHES_${file}[0]} ) !=  X${NULL_STR} ]; then 
     354            for file_t in $( eval echo ${liste_file_se_tmp[*]} ); do 
     355              for Patch in $( eval echo \${LISTE_PATCHES_${file}[*]} ); do 
     356                IGCM_${Patch} ${file_t} 
     357              done 
     358            done 
     359          fi 
     360        fi 
    506361 
    507362        # Search of common list of variables to be treated 
    508363        nbfile=0 
    509         for file_common_var in ${OUT_SE[*]} ; do 
    510            ncdump -h ${file_common_var} | grep -E 'float|double' | cut -f 1 -d '(' | cut -f 2 -d ' ' >> tmpfile_ncrcat 
    511            (( nbfile = nbfile + 1 )) 
     364        for file_common_var in ${liste_file_se_tmp[*]} ; do 
     365          ncdump -h ${file_common_var} | grep -E 'float|double' | cut -f 1 -d '(' | cut -f 2 -d ' ' >> tmpfile_ncra 
     366          (( nbfile = nbfile + 1 )) 
    512367        done 
    513         list_var_final_ncrcat=`cat tmpfile_ncrcat | sort | uniq -c | awk -v nbfile=$nbfile '{if ($1 == nbfile) {print $2}}' | paste -s -d ','` 
    514         IGCM_sys_Rm tmpfile_ncrcat 
    515  
    516         IGCM_sys_ncrcat -O -v ${list_var_final_ncrcat} ${OUT_SE[*]} ${RESULT_SE} 
    517         # 
    518         IGCM_sys_Rm ${OUT_SE[*]} 
    519         # 
    520         # detect time counter : time or time_counter ie unlimited variable 
    521         var_unlim=$(ncdump -h ${RESULT_SE}|grep UNLIMITED| cut -d ' ' -f 1) 
    522  
    523         # Put correct climatological axis following calendar  
    524         case ${config_UserChoices_CalendarType} in 
    525                 360d|360_day) 
    526                         # 360 days 
    527                         ncap2cmd="'defdim(\"tbnds\",2) ; ${var_unlim}[${var_unlim}]={15, 45, 75, 105, 135, 165, 195, 225, 255, 285, 315, 345.} ; ${var_unlim}_bnds[${var_unlim},tbnds]={0, 30, 30, 60, 60, 90, 90, 120, 120, 150, 150, 180, 180, 210, 210, 240, 240, 270, 270, 300, 300, 330, 330, 360.} ; ${var_unlim}@units=\"days since 0000-01-01 00:00:00\" ; ${var_unlim}@time_origin=\"01-JAN-0000 00:00:00\" ; ${var_unlim}@calendar=\"360_day\" ; ${var_unlim}@bounds=\"${var_unlim}_bnds\"'" 
    528                         ;; 
    529                 noleap|365_day) 
    530                         # 365 days 
    531                         ncap2cmd="'defdim(\"tbnds\",2) ; ${var_unlim}[${var_unlim}]={15.5, 45, 74.5, 105, 135.5, 166, 196.5, 227.5, 258, 288.5, 319, 349.5} ; ${var_unlim}_bnds[${var_unlim},tbnds]={0, 31, 31, 59, 59, 90, 90, 120, 120, 151, 151, 181, 181, 212, 212, 243, 243, 273, 273, 304, 304, 334, 334, 365.} ; ${var_unlim}@units=\"days since 0000-01-01 00:00:00\" ; ${var_unlim}@time_origin=\"01-JAN-0000 00:00:00\" ; ${var_unlim}@calendar=\"365_day\" ; ${var_unlim}@bounds=\"${var_unlim}_bnds\"'" 
    532                         ;; 
    533                 all_leap|366_day) 
    534                         # 366 days 
    535                         ncap2cmd="'defdim(\"tbnds\",2) ; ${var_unlim}[${var_unlim}]={15.5, 45.5, 75.5, 106, 136.5, 167, 197.5, 228.5, 259, 289.5, 320, 350.5} ; ${var_unlim}_bnds[${var_unlim},tbnds]={0, 31, 31, 60, 60, 91, 91, 121, 121, 152, 152, 182, 182, 213, 213, 244, 244, 274, 274, 305, 305, 335, 335, 366.} ; ${var_unlim}@units=\"days since 0000-01-01 00:00:00\" ; ${var_unlim}@time_origin=\"01-JAN-0000 00:00:00\" ; ${var_unlim}@calendar=\"366_day\" ; ${var_unlim}@bounds=\"${var_unlim}_bnds\"'" 
    536                         ;; 
    537                 leap|gregorian|standard) 
    538                         # 365.2425 days 
    539                         ncap2cmd="'defdim(\"tbnds\",2) ; ${var_unlim}[${var_unlim}]={15.5, 45.12125, 74.7425, 105.2425, 135.7425, 166.2425, 196.7425, 227.7425, 258.2425, 288.7425, 319.2425, 349.7425} ; ${var_unlim}_bnds[${var_unlim},tbnds]={0, 31, 31, 59.2425, 59.2425, 90.2425, 90.2425, 120.2425, 120.2425, 151.2425, 151.2425, 181.2425, 181.2425, 212.2425, 212.2425, 243.2425, 243.2425, 273.2425, 273.2425, 304.2425, 304.2425, 334.2425, 334.2425, 365.2425} ; ${var_unlim}@units=\"days since 0000-01-01 00:00:00\" ; ${var_unlim}@time_origin=\"01-JAN-0000 00:00:00\" ; ${var_unlim}@calendar=\"gregorian\" ; ${var_unlim}@bounds=\"${var_unlim}_bnds\"'" 
    540                         ;; 
    541         esac 
    542         eval IGCM_sys_ncap2 -Oh -s $ncap2cmd ${RESULT_SE} tmp.nc 
    543         IGCM_sys_Rm ${RESULT_SE} 
    544         IGCM_sys_Mv tmp.nc ${RESULT_SE} 
    545         # 
    546         eval IGCM_sys_Put_Out ${RESULT_SE} \${R_OUT_${comp}}/Analyse/SE/${RESULT_SE} 
    547         IGCM_sys_Rm ${RESULT_SE} 
    548         # 
    549     done 
     368        list_var_final_ncra=`cat tmpfile_ncra | sort | uniq -c | awk -v nbfile=$nbfile '{if ($1 == nbfile) {print $2}}' | paste -s -d ','` 
     369        IGCM_sys_Rm tmpfile_ncra 
     370 
     371        # detect time counter : time or time_counter ie unlimited variable 
     372        var_unlim=$(ncdump -h ${liste_file_se_tmp[1]}|grep UNLIMITED|awk '{print $1}') 
     373 
     374        for mois in  01 02 03 04 05 06 07 08 09 10 11 12 ; do 
     375          # 
     376          (( nb = ${mois} - 1 )) 
     377          # 
     378          OUT_SE[${nb}]=${config_UserChoices_JobName}_SE${mois}_${an_deb}_${an_fin}_${file}.nc 
     379          IGCM_sys_ncra -O -v ${list_var_final_ncra} -d ${var_unlim},${nb},,12 ${liste_file_se_tmp[*]} ${OUT_SE[${nb}]} 
     380        done 
     381        IGCM_sys_Rm ${liste_file_se_tmp[*]} 
     382        ;; 
     383      # For Monthly simulation : 
     384      1M|1m) 
     385        for mois in 01 02 03 04 05 06 07 08 09 10 11 12 ; do 
     386          # 
     387          (( nb = ${mois} - 1 )) 
     388          # 
     389          OUT_SE[${nb}]=${config_UserChoices_JobName}_SE${mois}_${an_deb}_${an_fin}_${file}.nc 
     390          # 
     391          (( an = an_deb )) 
     392          # Initialize array 
     393          #set -A liste_file_se 
     394          #set -A liste_file_se_tmp 
     395          unset liste_file_se 
     396          unset liste_file_se_tmp 
     397          while [ ${an} -le ${an_fin} ] ; do 
     398            moisL=$( IGCM_date_DaysInMonth ${an} ${mois} ) 
     399            # 
     400            an4=$(printf "%04i\n" ${an} ) 
     401            # 
     402            date=${an4}${mois}01_${an4}${mois}${moisL} 
     403            #set +A liste_file_se ${liste_file_se[*]} ${file_path}${config_UserChoices_JobName}_${date}_${file}.nc 
     404            #set +A liste_file_se_tmp ${liste_file_se_tmp[*]} ${config_UserChoices_JobName}_${date}_${file}.nc 
     405            liste_file_se[${#liste_file_se[*]}]=${file_path}${config_UserChoices_JobName}_${date}_${file}.nc 
     406            liste_file_se_tmp[${#liste_file_se_tmp[*]}]=${config_UserChoices_JobName}_${date}_${file}.nc 
     407 
     408            (( an = an + 1 )) 
     409          done 
     410          # 
     411          IGCM_sys_Get /l liste_file_se[*] ${RUN_DIR_PATH} 
     412          IGCM_debug_Verif_Exit_Post 
     413 
     414          # Apply IGCM_Patch if needed 
     415          if [ ! ${RebuildFrequency} = true ] ; then 
     416            if [ X$( eval echo \${LISTE_PATCHES_${file}[0]} ) !=  X${NULL_STR} ]; then 
     417              for file_t in $( eval echo ${liste_file_se_tmp[*]} ); do 
     418                for Patch in $( eval echo \${LISTE_PATCHES_${file}[*]} ); do 
     419                  IGCM_${Patch} ${file_t} 
     420                done 
     421              done 
     422            fi 
     423          fi 
     424 
     425          # Search of common list of variables to be treated 
     426          nbfile=0 
     427          for file_common_var in ${liste_file_se_tmp[*]} ; do 
     428            ncdump -h ${file_common_var} | grep -E 'float|double' | cut -f 1 -d '(' | cut -f 2 -d ' ' >> tmpfile_ncra 
     429            (( nbfile = nbfile + 1 )) 
     430          done 
     431            list_var_final_ncra=`cat tmpfile_ncra | sort | uniq -c | awk -v nbfile=$nbfile '{if ($1 == nbfile) {print $2}}' | paste -s -d ','` 
     432          IGCM_sys_Rm tmpfile_ncra 
     433 
     434          IGCM_sys_ncra -O -v ${list_var_final_ncra} ${liste_file_se_tmp[*]} ${OUT_SE[${nb}]} 
     435 
     436          IGCM_sys_Rm ${liste_file_se_tmp[*]} 
     437        done 
     438        ;; 
     439      *D|*d) 
     440        for mois in 01 02 03 04 05 06 07 08 09 10 11 12 ; do 
     441          # 
     442          (( nb = ${mois} - 1 )) 
     443          # 
     444          OUT_SE[${nb}]=${config_UserChoices_JobName}_SE${mois}_${an_deb}_${an_fin}_${file}.nc 
     445          # 
     446          (( an = an_deb )) 
     447          # Initialize array 
     448          #set -A liste_file_se 
     449          #set -A liste_file_se_tmp 
     450          unset liste_file_se 
     451          unset liste_file_se_tmp 
     452          while [ ${an} -le ${an_fin} ] ; do 
     453            moisL=$( IGCM_date_DaysInMonth ${an} ${mois} ) 
     454            # 
     455            an4=$(printf "%04i\n" ${an} ) 
     456              # 
     457            length_d=$(( ${config_UserChoices_PeriodLength} - 1 )) 
     458            # for one day 
     459            if [ ${length_d} -eq 1 ] ; then 
     460              (( length_d = 0 )) 
     461            fi 
     462            (( day  = 1 )) 
     463            while [ ${day} -le ${moisL} ] ; do 
     464              day2=$(printf "%02i\n" ${day} ) 
     465              day_beg=${an4}${mois}${day2} 
     466              day_end=$( IGCM_date_AddDaysToGregorianDate ${day_beg} ${length_d} ) 
     467              date=${an4}${mois}${day_beg}_${an4}${mois}${day_end} 
     468              #set +A liste_file_se ${liste_file_se[*]} ${file_path}${config_UserChoices_JobName}_${date}_${file}.nc 
     469              #set +A liste_file_se_tmp ${liste_file_se_tmp[*]} ${config_UserChoices_JobName}_${date}_${file}.nc 
     470              liste_file_se[${#liste_file_se[*]}]=${file_path}${config_UserChoices_JobName}_${date}_${file}.nc 
     471              liste_file_se_tmp[${#liste_file_se_tmp[*]}]=${config_UserChoices_JobName}_${date}_${file}.nc 
     472              (( day = day + 1 )) 
     473            done 
     474            (( an = an + 1 )) 
     475          done 
     476          # 
     477          IGCM_sys_Get /l liste_file_se[*] ${RUN_DIR_PATH} 
     478          IGCM_debug_Verif_Exit_Post 
     479 
     480          # Apply IGCM_Patch if needed 
     481          if [ ! ${RebuildFrequency} = true ] ; then 
     482            if [ X$( eval echo \${LISTE_PATCHES_${file}[0]} ) !=  X${NULL_STR} ]; then 
     483              for file_t in $( eval echo ${liste_file_se_tmp[*]} ); do 
     484                for Patch in $( eval echo \${LISTE_PATCHES_${file}[*]} ); do 
     485                  IGCM_${Patch} ${file_t} 
     486                done 
     487              done 
     488            fi 
     489          fi 
     490 
     491          # Search of common list of variables to be treated 
     492          nbfile=0 
     493          for file_common_var in ${liste_file_se_tmp[*]} ; do 
     494            ncdump -h ${file_common_var} | grep -E 'float|double' | cut -f 1 -d '(' | cut -f 2 -d ' ' >> tmpfile_ncra 
     495            (( nbfile = nbfile + 1 )) 
     496          done 
     497            list_var_final_ncra=`cat tmpfile_ncra | sort | uniq -c | awk -v nbfile=$nbfile '{if ($1 == nbfile) {print $2}}' | paste -s -d ','` 
     498          IGCM_sys_Rm tmpfile_ncra 
     499 
     500          IGCM_sys_ncra -O -v ${list_var_final_ncra} ${liste_file_se_tmp[*]} ${OUT_SE[${nb}]} 
     501          IGCM_sys_Rm ${liste_file_se_tmp[*]} 
     502        done 
     503        ;; 
     504      esac 
     505      # 
     506 
     507      # Search of common list of variables to be treated 
     508      nbfile=0 
     509      for file_common_var in ${OUT_SE[*]} ; do 
     510        ncdump -h ${file_common_var} | grep -E 'float|double' | cut -f 1 -d '(' | cut -f 2 -d ' ' >> tmpfile_ncrcat 
     511        (( nbfile = nbfile + 1 )) 
     512      done 
     513      list_var_final_ncrcat=`cat tmpfile_ncrcat | sort | uniq -c | awk -v nbfile=$nbfile '{if ($1 == nbfile) {print $2}}' | paste -s -d ','` 
     514      IGCM_sys_Rm tmpfile_ncrcat 
     515 
     516    IGCM_sys_ncrcat -O -v ${list_var_final_ncrcat} ${OUT_SE[*]} ${RESULT_SE} 
     517    # 
     518    IGCM_sys_Rm ${OUT_SE[*]} 
     519    # 
     520    # detect time counter : time or time_counter ie unlimited variable 
     521    var_unlim=$(ncdump -h ${RESULT_SE}|grep UNLIMITED| cut -d ' ' -f 1) 
     522 
     523    # Put correct climatological axis following calendar  
     524    case ${config_UserChoices_CalendarType} in 
     525      360d|360_day) 
     526      # 360 days 
     527        ncap2cmd="'defdim(\"tbnds\",2) ; ${var_unlim}[${var_unlim}]={15, 45, 75, 105, 135, 165, 195, 225, 255, 285, 315, 345.} ; ${var_unlim}_bnds[${var_unlim},tbnds]={0, 30, 30, 60, 60, 90, 90, 120, 120, 150, 150, 180, 180, 210, 210, 240, 240, 270, 270, 300, 300, 330, 330, 360.} ; ${var_unlim}@units=\"days since 0000-01-01 00:00:00\" ; ${var_unlim}@time_origin=\"01-JAN-0000 00:00:00\" ; ${var_unlim}@calendar=\"360_day\" ; ${var_unlim}@bounds=\"${var_unlim}_bnds\"'" 
     528        ;; 
     529      noleap|365_day) 
     530      # 365 days 
     531        ncap2cmd="'defdim(\"tbnds\",2) ; ${var_unlim}[${var_unlim}]={15.5, 45, 74.5, 105, 135.5, 166, 196.5, 227.5, 258, 288.5, 319, 349.5} ; ${var_unlim}_bnds[${var_unlim},tbnds]={0, 31, 31, 59, 59, 90, 90, 120, 120, 151, 151, 181, 181, 212, 212, 243, 243, 273, 273, 304, 304, 334, 334, 365.} ; ${var_unlim}@units=\"days since 0000-01-01 00:00:00\" ; ${var_unlim}@time_origin=\"01-JAN-0000 00:00:00\" ; ${var_unlim}@calendar=\"365_day\" ; ${var_unlim}@bounds=\"${var_unlim}_bnds\"'" 
     532        ;; 
     533      all_leap|366_day) 
     534      # 366 days 
     535        ncap2cmd="'defdim(\"tbnds\",2) ; ${var_unlim}[${var_unlim}]={15.5, 45.5, 75.5, 106, 136.5, 167, 197.5, 228.5, 259, 289.5, 320, 350.5} ; ${var_unlim}_bnds[${var_unlim},tbnds]={0, 31, 31, 60, 60, 91, 91, 121, 121, 152, 152, 182, 182, 213, 213, 244, 244, 274, 274, 305, 305, 335, 335, 366.} ; ${var_unlim}@units=\"days since 0000-01-01 00:00:00\" ; ${var_unlim}@time_origin=\"01-JAN-0000 00:00:00\" ; ${var_unlim}@calendar=\"366_day\" ; ${var_unlim}@bounds=\"${var_unlim}_bnds\"'" 
     536        ;; 
     537      leap|gregorian|standard) 
     538      # 365.2425 days 
     539        ncap2cmd="'defdim(\"tbnds\",2) ; ${var_unlim}[${var_unlim}]={15.5, 45.12125, 74.7425, 105.2425, 135.7425, 166.2425, 196.7425, 227.7425, 258.2425, 288.7425, 319.2425, 349.7425} ; ${var_unlim}_bnds[${var_unlim},tbnds]={0, 31, 31, 59.2425, 59.2425, 90.2425, 90.2425, 120.2425, 120.2425, 151.2425, 151.2425, 181.2425, 181.2425, 212.2425, 212.2425, 243.2425, 243.2425, 273.2425, 273.2425, 304.2425, 304.2425, 334.2425, 334.2425, 365.2425} ; ${var_unlim}@units=\"days since 0000-01-01 00:00:00\" ; ${var_unlim}@time_origin=\"01-JAN-0000 00:00:00\" ; ${var_unlim}@calendar=\"gregorian\" ; ${var_unlim}@bounds=\"${var_unlim}_bnds\"'" 
     540        ;; 
     541    esac 
     542    eval IGCM_sys_ncap2 -Oh -s $ncap2cmd ${RESULT_SE} tmp.nc 
     543    IGCM_sys_Rm ${RESULT_SE} 
     544    IGCM_sys_Mv tmp.nc ${RESULT_SE} 
     545    # 
     546    eval IGCM_sys_Put_Out ${RESULT_SE} \${R_OUT_${comp}}/Analyse/SE/${RESULT_SE} 
     547    IGCM_sys_Rm ${RESULT_SE} 
     548    # 
     549  done 
    550550done 
    551551 
    552552# DODS copy 
    553553for comp in ${config_ListOfComponents[*]} ; do 
    554     IGCM_sys_TestDirArchive ${R_SAVE}/${comp}/Analyse/SE 
    555     [ $? = 0 ] && IGCM_sys_Put_Dods ${comp}/Analyse/SE 
     554  IGCM_sys_TestDirArchive ${R_SAVE}/${comp}/Analyse/SE 
     555  [ $? = 0 ] && IGCM_sys_Put_Dods ${comp}/Analyse/SE 
    556556done 
    557557 
     
    574574   [ ${config_UserChoices_TagName} = "IPSLCM4_v2" ]        || \ 
    575575   [ ${config_UserChoices_TagName} = "IPSL_ESM_V1" ] ; then 
    576     # 
    577     Script_Post_Output=atlas_ORCHIDEE.${PeriodDateEnd} ; 
    578     IGCM_sys_QsubPost atlas_ORCHIDEE                   ; 
    579     Script_Post_Output=atlas_LMDZ.${PeriodDateEnd}     ; 
    580     IGCM_sys_QsubPost atlas_LMDZ                       ; 
    581     Script_Post_Output=atlas_ORCA_LIM.${PeriodDateEnd} ; 
    582     IGCM_sys_QsubPost atlas_ORCA_LIM                   ; 
    583     Script_Post_Output=additionnal.${PeriodDateEnd}    ; 
    584     IGCM_sys_QsubPost additionnal                      ; 
    585     # 
     576  # 
     577  Script_Post_Output=atlas_ORCHIDEE.${PeriodDateEnd} ; 
     578  IGCM_sys_QsubPost atlas_ORCHIDEE                   ; 
     579  Script_Post_Output=atlas_LMDZ.${PeriodDateEnd}     ; 
     580  IGCM_sys_QsubPost atlas_LMDZ                       ; 
     581  Script_Post_Output=atlas_ORCA_LIM.${PeriodDateEnd} ; 
     582  IGCM_sys_QsubPost atlas_ORCA_LIM                   ; 
     583  Script_Post_Output=additionnal.${PeriodDateEnd}    ; 
     584  IGCM_sys_QsubPost additionnal                      ; 
     585  # 
    586586elif [ ${config_UserChoices_TagName} = "IPSLCM5" ]  || \ 
    587587     [ ${config_UserChoices_TagName} = "IPSLCM5A" ] || \ 
    588588     [ ${config_UserChoices_TagName} = "IPSLCM5B" ] || \ 
    589589     [ ${config_UserChoices_TagName} = "IPSLCM5A-MR" ] ; then 
    590     Script_Post_Output=atlas_ORCHIDEE.${PeriodDateEnd} ; 
    591     IGCM_sys_QsubPost atlas_ORCHIDEE                   ; 
    592     Script_Post_Output=atlas_LMDZ.${PeriodDateEnd}     ; 
    593     IGCM_sys_QsubPost atlas_LMDZ                       ; 
    594     Script_Post_Output=atlas_ORCA_LIM.${PeriodDateEnd} ; 
    595     IGCM_sys_QsubPost atlas_ORCA_LIM                   ; 
    596     Script_Post_Output=atlas_PISCES.${PeriodDateEnd}   ; 
    597     IGCM_sys_QsubPost atlas_PISCES                     ; 
    598     # 
     590  Script_Post_Output=atlas_ORCHIDEE.${PeriodDateEnd} ; 
     591  IGCM_sys_QsubPost atlas_ORCHIDEE                   ; 
     592  Script_Post_Output=atlas_LMDZ.${PeriodDateEnd}     ; 
     593  IGCM_sys_QsubPost atlas_LMDZ                       ; 
     594  Script_Post_Output=atlas_ORCA_LIM.${PeriodDateEnd} ; 
     595  IGCM_sys_QsubPost atlas_ORCA_LIM                   ; 
     596  Script_Post_Output=atlas_PISCES.${PeriodDateEnd}   ; 
     597  IGCM_sys_QsubPost atlas_PISCES                     ; 
     598  # 
    599599elif [ ${config_UserChoices_TagName} = "LMDZ4OR" ]  || \ 
    600600     [ ${config_UserChoices_TagName} = "LMDZOR" ]   || \ 
    601601     [ ${config_UserChoices_TagName} = "LMDZ4OR_v2" ] ; then 
    602     # 
    603     Script_Post_Output=atlas_LMDZ.${PeriodDateEnd}     ; 
    604     IGCM_sys_QsubPost atlas_LMDZ                       ; 
    605     Script_Post_Output=atlas_ORCHIDEE.${PeriodDateEnd} ; 
    606     IGCM_sys_QsubPost atlas_ORCHIDEE                   ; 
    607     # 
     602  # 
     603  Script_Post_Output=atlas_LMDZ.${PeriodDateEnd}     ; 
     604  IGCM_sys_QsubPost atlas_LMDZ                       ; 
     605  Script_Post_Output=atlas_ORCHIDEE.${PeriodDateEnd} ; 
     606  IGCM_sys_QsubPost atlas_ORCHIDEE                   ; 
     607  # 
    608608elif [ ${config_UserChoices_TagName} = "LMDZ" ] ; then 
    609     # 
    610     Script_Post_Output=atlas_LMDZ.${PeriodDateEnd}     ; 
    611     IGCM_sys_QsubPost atlas_LMDZ                       ; 
    612     # 
     609  # 
     610  Script_Post_Output=atlas_LMDZ.${PeriodDateEnd}     ; 
     611  IGCM_sys_QsubPost atlas_LMDZ                       ; 
     612  # 
    613613elif [ ${config_UserChoices_TagName} = "OL" ]      || \ 
    614614     [ ${config_UserChoices_TagName} = "OL2" ] ; then 
    615     # 
    616     Script_Post_Output=atlas_ORCHIDEE.${PeriodDateEnd} ; 
    617     IGCM_sys_QsubPost atlas_ORCHIDEE                   ; 
    618     # 
     615  # 
     616  Script_Post_Output=atlas_ORCHIDEE.${PeriodDateEnd} ; 
     617  IGCM_sys_QsubPost atlas_ORCHIDEE                   ; 
     618  # 
    619619elif [ ${config_UserChoices_TagName} = "ORCA2_LIM" ]       || 
    620620     [ ${config_UserChoices_TagName} = "ORCA2_LIM2" ] ; then 
    621     # 
    622     Script_Post_Output=atlas_ORCA_LIM.${PeriodDateEnd} ; 
    623     IGCM_sys_QsubPost atlas_ORCA_LIM                   ; 
     621  # 
     622  Script_Post_Output=atlas_ORCA_LIM.${PeriodDateEnd} ; 
     623  IGCM_sys_QsubPost atlas_ORCA_LIM                   ; 
    624624elif [ ${config_UserChoices_TagName} = "ORCA2_LIM2_PISCES" ]  ; then 
    625     # 
    626     Script_Post_Output=atlas_ORCA_LIM.${PeriodDateEnd} ; 
    627     IGCM_sys_QsubPost atlas_ORCA_LIM                   ; 
    628     Script_Post_Output=atlas_PISCES.${PeriodDateEnd}   ; 
    629     IGCM_sys_QsubPost atlas_PISCES                     ; 
     625  # 
     626  Script_Post_Output=atlas_ORCA_LIM.${PeriodDateEnd} ; 
     627  IGCM_sys_QsubPost atlas_ORCA_LIM                   ; 
     628  Script_Post_Output=atlas_PISCES.${PeriodDateEnd}   ; 
     629  IGCM_sys_QsubPost atlas_PISCES                     ; 
    630630elif [ ${config_UserChoices_TagName} = "ORCA2_OFF_PISCES" ]  ; then 
    631     # 
    632     Script_Post_Output=atlas_PISCES.${PeriodDateEnd}   ; 
    633     IGCM_sys_QsubPost atlas_PISCES                     ; 
    634     # 
     631  # 
     632  Script_Post_Output=atlas_PISCES.${PeriodDateEnd}   ; 
     633  IGCM_sys_QsubPost atlas_PISCES                     ; 
     634  # 
    635635fi 
    636636 
  • trunk/libIGCM/AA_create_ts

    r770 r785  
    100100TsTask=${TsTask:=2D} 
    101101if [ X${TsTask} = Xempty ] ; then 
    102     TsTask="" 
     102  TsTask="" 
    103103fi 
    104104 
     
    165165MENAGE ()  
    166166{ 
    167     [ -f $3 ] && ( IGCM_sys_RshArchive rm -f $1/$2 ;) 
     167  [ -f $3 ] && ( IGCM_sys_RshArchive rm -f $1/$2 ;) 
    168168} 
    169169 
     
    179179 
    180180if [ ${StandAlone} = true ] ; then 
    181     CARD_DIR=${SUBMIT_DIR} 
     181  CARD_DIR=${SUBMIT_DIR} 
    182182else 
    183     CARD_DIR=${RUN_DIR_PATH} 
    184     IGCM_sys_Get_Master ${SUBMIT_DIR}/config.card ${RUN_DIR_PATH} 
    185     IGCM_sys_Get_Master ${SUBMIT_DIR}/run.card    ${RUN_DIR_PATH} 
    186     IGCM_sys_Get_Master ${SUBMIT_DIR}/COMP        ${RUN_DIR_PATH} 
    187     IGCM_sys_Get_Master ${SUBMIT_DIR}/POST        ${RUN_DIR_PATH} 
     183  CARD_DIR=${RUN_DIR_PATH} 
     184  IGCM_sys_Get_Master ${SUBMIT_DIR}/config.card ${RUN_DIR_PATH} 
     185  IGCM_sys_Get_Master ${SUBMIT_DIR}/run.card    ${RUN_DIR_PATH} 
     186  IGCM_sys_Get_Master ${SUBMIT_DIR}/COMP        ${RUN_DIR_PATH} 
     187  IGCM_sys_Get_Master ${SUBMIT_DIR}/POST        ${RUN_DIR_PATH} 
    188188fi 
    189189 
     
    228228# Determine Dimension of the produced time series : 2D or 3D 
    229229if (   [ X${TsTask} = XChunck2D ] || [ X${TsTask} = X2D ] ) ; then 
    230     Dimension=2D 
     230  Dimension=2D 
    231231elif ( [ X${TsTask} = XChunck3D ] || [ X${TsTask} = X3D ] ) ; then 
    232     Dimension=3D 
     232  Dimension=3D 
    233233else 
    234     Dimension="" 
     234  Dimension="" 
    235235fi 
    236236 
     
    255255DoJob=false 
    256256for comp in ${config_ListOfComponents[*]} ; do 
    257     # 
    258     ActiveComp=false 
    259     # 
    260     IGCM_card_DefineArrayFromOption ${CARD_DIR}/config.card ListOfComponents ${comp} 
    261     eval compname=\${config_ListOfComponents_${comp}[0]} > /dev/null 2>&1 
    262     # 
    263     card=${CARD_DIR}/COMP/${compname}.card 
    264  
    265     IGCM_card_DefineArrayFromOption ${card} OutputFiles List 
    266     # 
    267     ListFilesName=${compname}_OutputFiles_List 
    268     eval FileName0=\${${ListFilesName}[0]} > /dev/null 2>&1 
    269     # 
    270     if [ X${FileName0} != X${NULL_STR} ] ; then 
    271         # 
    272         #IGCM_debug_Print 1 "Component      : ${compname}" 
    273         # 
    274         # INITIALISATION 
    275         # 
    276         typeset i 
    277         if [ ${FlagToRead} ] ; then 
    278             ((NbFiles=${FlagToRead})) 
    279             ((i=${NbFiles})) 
    280         else 
    281             eval NbFiles=\${#${ListFilesName}[@]} > /dev/null 2>&1 
    282             i=2 
    283         fi 
    284         # 
    285         until [ $i -gt $NbFiles ]; do 
    286             # 
    287             eval flag_post=\${${ListFilesName}[$i]} > /dev/null 2>&1 
    288             # 
    289             if [ X${flag_post} != XNONE ] ; then 
    290                 # 
    291                 # For each comp and each file who needs post-processing 
    292                 # determine which variables need time series. 
    293                 # 
    294                 FILE=$( echo ${flag_post} | awk "-FPost_" '{print $2}' ) 
    295                 IGCM_card_DefineArrayFromOption ${card}    Post_${FILE} TimeSeriesVars${Dimension} 
    296                 IGCM_card_DefineVariableFromOption ${card} Post_${FILE} ChunckJob${Dimension} 
    297                 # 
    298                 # If TimeSeriesVars list is empty we skip 
    299                 # 
    300                 if [ $( eval echo \${${compname}_Post_${FILE}_TimeSeriesVars${Dimension}} ) = ${NULL_STR} ] ; then 
    301                     # 
    302                     IGCM_debug_Print 3 "Nothing to do for ${FILE} according to ${card}" 
    303                     IGCM_debug_Print 3 "TimeSeriesVars${Dimension} for ${FILE} is empty" 
    304                     (( i=i+3 )) 
    305                     continue 
    306                     # 
    307                 fi 
    308                 # 
    309                 # If files/variables has been switch off by ChunckJob${Dimension}=0 we skip 
    310                 # 
    311                 if [ X$( eval echo \${${compname}_Post_${FILE}_ChunckJob${Dimension}} ) = XOFF ] ; then 
    312                     IGCM_debug_Print 3 "Nothing to do for ${FILE} according to ${card}" 
    313                     IGCM_debug_Print 3 "ChunckJob${Dimension}=OFF for ${FILE} so it has been switched off" 
    314                     (( i=i+3 )) 
    315                     continue 
    316                 fi 
    317                 # 
    318                 # If we are not a Chunck type task, we skip files/variables handled by chunck task 
    319                 # 
    320                 if ( [ ! X${TsTask} = XChunck${Dimension} ] && [ ! X${TsTask} = X ] && [ ! XChunck${Dimension} = XChunck ] ) ; then 
    321                     if [ ! $( eval echo \${${compname}_Post_${FILE}_ChunckJob${Dimension}} ) = NONE ] ; then 
    322                         IGCM_debug_Print 3 "Nothing to do for ${FILE} TimeSeriesVars${Dimension} according to ${card}" 
    323                         IGCM_debug_Print 3 "Let another chunck task do the job $( eval echo \${${compname}_Post_${FILE}_ChunckJob${Dimension}} )" 
    324                         (( i=i+3 )) 
    325                         continue 
    326                     fi 
    327                 fi 
    328                 # 
    329                 # Now on we know we have things to do 
    330                 # 
    331  
    332                 # 
    333                 #  We need coordinates axis to properly fill produced time series 
    334                 # 
    335                 IGCM_card_DefineArrayFromOption ${card} Post_${FILE} GatherWithInternal 
    336                 # 
    337                 if [ $( eval echo \${${compname}_Post_${FILE}_GatherWithInternal} ) = ${NULL_STR} ] ; then 
    338                     # 
    339                     IGCM_debug_Print 1 "ERROR !! We miss coordinate axis for ${FILE} according to ${card}" 
    340                     IGCM_debug_Print 1 "So no time series will be produced for ${FILE} !!" 
    341                     (( i=i+3 )) 
    342                     continue 
    343                     # 
    344                 fi 
    345                 # 
    346                 # We need LIST of variables not allready produced (useful for standalone mode) 
    347                 # 
    348                 FlagDir=$( echo ${FILE} | awk -F "_" '{print $1}' ) 
    349                 case ${FlagDir} in 
    350                     *Y)  TS_Dir=TS_YE  ;; 
    351                     *M)  TS_Dir=TS_MO  ;; 
    352                     *D)  TS_Dir=TS_DA  ;; 
    353                     HF)  TS_Dir=TS_HF  ;; 
    354                     3H)  TS_Dir=TS_HF  ;; 
    355                     INS) TS_Dir=TS_INS ;; 
    356                 esac 
    357                 # 
    358                 count=0 
    359                 for var in $( eval echo \${${compname}_Post_${FILE}_TimeSeriesVars${Dimension}[*]} ) ; do 
    360                     # 
    361                     DIRECTORY=${R_SAVE}/${comp}/Analyse/${TS_Dir} 
    362                     TestedFile=${config_UserChoices_JobName}_${DateBegin}_${PeriodDateEnd}_${FlagDir}_${var}.nc 
    363                     # 
    364                     IGCM_sys_TestFileArchive ${DIRECTORY}/${TestedFile} 
    365                     if [ ! $? = 0 ] ; then 
    366                         eval set +A LISTE_VARS_${FILE} \${LISTE_VARS_${FILE}[*]} ${var} 
    367                         ActiveComp=true 
    368                         (( count = count + 1 )) 
    369                     fi 
    370                 done 
    371                 # 
    372                 if [ ${count} -gt 0 ] ; then 
    373                     # 
    374                     eval set +A LISTE_FILE_${comp} \${LISTE_FILE_${comp}[*]} ${FILE} 
    375                     eval set +A LISTE_AXIS_${FILE} \${${compname}_Post_${FILE}_GatherWithInternal[*]} 
    376                     # 
    377                     if [ ! X${RebuildFrequency} = Xtrue ] ; then 
    378                         IGCM_card_DefineArrayFromOption ${card} Post_${FILE} Patches 
    379                         eval set +A LISTE_PATCHES_${FILE} \${${compname}_Post_${FILE}_Patches[*]} 
    380                         if [ X$( eval echo \${LISTE_PATCHES_${FILE}[0]} ) !=  X${NULL_STR} ]; then 
    381                             for Patch in $( eval echo \${LISTE_PATCHES_${FILE}[*]} ); do 
    382                                 if [ Xload${Patch} != X ] ; then 
    383                                     . ${libIGCM}/libIGCM_post/IGCM_${Patch}.ksh 
    384                                     eval load${Patch}=loaded 
    385                                 fi 
    386                             done 
    387                         fi 
    388                     fi 
    389                 fi 
    390             fi 
    391             (( i=i+3 )) 
    392         done 
     257  # 
     258  ActiveComp=false 
     259  # 
     260  IGCM_card_DefineArrayFromOption ${CARD_DIR}/config.card ListOfComponents ${comp} 
     261  eval compname=\${config_ListOfComponents_${comp}[0]} > /dev/null 2>&1 
     262  # 
     263  card=${CARD_DIR}/COMP/${compname}.card 
     264 
     265  IGCM_card_DefineArrayFromOption ${card} OutputFiles List 
     266  # 
     267  ListFilesName=${compname}_OutputFiles_List 
     268  eval FileName0=\${${ListFilesName}[0]} > /dev/null 2>&1 
     269  # 
     270  if [ X${FileName0} != X${NULL_STR} ] ; then 
     271    # 
     272    #IGCM_debug_Print 1 "Component      : ${compname}" 
     273    # 
     274    # INITIALISATION 
     275    # 
     276    typeset i 
     277    if [ ${FlagToRead} ] ; then 
     278      ((NbFiles=${FlagToRead})) 
     279      ((i=${NbFiles})) 
     280    else 
     281      eval NbFiles=\${#${ListFilesName}[@]} > /dev/null 2>&1 
     282      i=2 
    393283    fi 
    394284    # 
    395     if [ ${ActiveComp} = true ] ; then 
    396         set +A ActiveListOfComponents ${ActiveListOfComponents[*]} ${comp} 
    397     fi 
     285    until [ $i -gt $NbFiles ]; do 
     286      # 
     287      eval flag_post=\${${ListFilesName}[$i]} > /dev/null 2>&1 
     288      # 
     289      if [ X${flag_post} != XNONE ] ; then 
     290        # 
     291        # For each comp and each file who needs post-processing 
     292        # determine which variables need time series. 
     293        # 
     294        FILE=$( echo ${flag_post} | awk "-FPost_" '{print $2}' ) 
     295        IGCM_card_DefineArrayFromOption ${card}    Post_${FILE} TimeSeriesVars${Dimension} 
     296        IGCM_card_DefineVariableFromOption ${card} Post_${FILE} ChunckJob${Dimension} 
     297        # 
     298        # If TimeSeriesVars list is empty we skip 
     299        # 
     300        if [ $( eval echo \${${compname}_Post_${FILE}_TimeSeriesVars${Dimension}} ) = ${NULL_STR} ] ; then 
     301          # 
     302          IGCM_debug_Print 3 "Nothing to do for ${FILE} according to ${card}" 
     303          IGCM_debug_Print 3 "TimeSeriesVars${Dimension} for ${FILE} is empty" 
     304          (( i=i+3 )) 
     305          continue 
     306          # 
     307        fi 
     308        # 
     309        # If files/variables has been switch off by ChunckJob${Dimension}=0 we skip 
     310        # 
     311        if [ X$( eval echo \${${compname}_Post_${FILE}_ChunckJob${Dimension}} ) = XOFF ] ; then 
     312          IGCM_debug_Print 3 "Nothing to do for ${FILE} according to ${card}" 
     313          IGCM_debug_Print 3 "ChunckJob${Dimension}=OFF for ${FILE} so it has been switched off" 
     314          (( i=i+3 )) 
     315          continue 
     316        fi 
     317        # 
     318          # If we are not a Chunck type task, we skip files/variables handled by chunck task 
     319          # 
     320        if ( [ ! X${TsTask} = XChunck${Dimension} ] && [ ! X${TsTask} = X ] && [ ! XChunck${Dimension} = XChunck ] ) ; then 
     321          if [ ! $( eval echo \${${compname}_Post_${FILE}_ChunckJob${Dimension}} ) = NONE ] ; then 
     322            IGCM_debug_Print 3 "Nothing to do for ${FILE} TimeSeriesVars${Dimension} according to ${card}" 
     323            IGCM_debug_Print 3 "Let another chunck task do the job $( eval echo \${${compname}_Post_${FILE}_ChunckJob${Dimension}} )" 
     324            (( i=i+3 )) 
     325            continue 
     326          fi 
     327        fi 
     328        # 
     329        # Now on we know we have things to do 
     330        # 
     331 
     332        # 
     333        #  We need coordinates axis to properly fill produced time series 
     334        # 
     335        IGCM_card_DefineArrayFromOption ${card} Post_${FILE} GatherWithInternal 
     336        # 
     337        if [ $( eval echo \${${compname}_Post_${FILE}_GatherWithInternal} ) = ${NULL_STR} ] ; then 
     338          # 
     339          IGCM_debug_Print 1 "ERROR !! We miss coordinate axis for ${FILE} according to ${card}" 
     340          IGCM_debug_Print 1 "So no time series will be produced for ${FILE} !!" 
     341          (( i=i+3 )) 
     342          continue 
     343          # 
     344        fi 
     345        # 
     346        # We need LIST of variables not allready produced (useful for standalone mode) 
     347        # 
     348        FlagDir=$( echo ${FILE} | awk -F "_" '{print $1}' ) 
     349        case ${FlagDir} in 
     350          *Y)  TS_Dir=TS_YE  ;; 
     351          *M)  TS_Dir=TS_MO  ;; 
     352          *D)  TS_Dir=TS_DA  ;; 
     353          HF)  TS_Dir=TS_HF  ;; 
     354          3H)  TS_Dir=TS_HF  ;; 
     355          INS) TS_Dir=TS_INS ;; 
     356        esac 
     357        # 
     358        count=0 
     359        for var in $( eval echo \${${compname}_Post_${FILE}_TimeSeriesVars${Dimension}[*]} ) ; do 
     360          # 
     361          DIRECTORY=${R_SAVE}/${comp}/Analyse/${TS_Dir} 
     362          TestedFile=${config_UserChoices_JobName}_${DateBegin}_${PeriodDateEnd}_${FlagDir}_${var}.nc 
     363          # 
     364          IGCM_sys_TestFileArchive ${DIRECTORY}/${TestedFile} 
     365          if [ ! $? = 0 ] ; then 
     366            eval set +A LISTE_VARS_${FILE} \${LISTE_VARS_${FILE}[*]} ${var} 
     367            ActiveComp=true 
     368            (( count = count + 1 )) 
     369          fi 
     370        done 
     371        # 
     372        if [ ${count} -gt 0 ] ; then 
     373          # 
     374          eval set +A LISTE_FILE_${comp} \${LISTE_FILE_${comp}[*]} ${FILE} 
     375          eval set +A LISTE_AXIS_${FILE} \${${compname}_Post_${FILE}_GatherWithInternal[*]} 
     376          # 
     377          if [ ! X${RebuildFrequency} = Xtrue ] ; then 
     378            IGCM_card_DefineArrayFromOption ${card} Post_${FILE} Patches 
     379            eval set +A LISTE_PATCHES_${FILE} \${${compname}_Post_${FILE}_Patches[*]} 
     380            if [ X$( eval echo \${LISTE_PATCHES_${FILE}[0]} ) !=  X${NULL_STR} ]; then 
     381              for Patch in $( eval echo \${LISTE_PATCHES_${FILE}[*]} ); do 
     382                if [ Xload${Patch} != X ] ; then 
     383                  . ${libIGCM}/libIGCM_post/IGCM_${Patch}.ksh 
     384                  eval load${Patch}=loaded 
     385                fi 
     386              done 
     387            fi 
     388          fi 
     389        fi 
     390      fi 
     391      (( i=i+3 )) 
     392    done 
     393  fi 
     394  # 
     395  if [ ${ActiveComp} = true ] ; then 
     396    set +A ActiveListOfComponents ${ActiveListOfComponents[*]} ${comp} 
     397  fi 
    398398done 
    399399 
     
    414414 
    415415if [ ${StandAlone} != true ] ; then 
    416     Running_Flag=$( IGCM_sys_RshMaster "IGCM_card_DefineVariableFromOption \ 
    417        ${SUBMIT_DIR}/run.card PostProcessing TimeSeriesRunning ; \ 
    418        echo \${run_PostProcessing_TimeSeriesRunning}" ) 
    419  
    420     #if [ X${Running_Flag} = Xy ] ; then 
    421     #    # Time Series Job allready running 
    422     #   IGCM_debug_Print 1 "Time Series Job allready running exit" 
    423     #   exit 
    424     #fi 
    425     # Now run.card know we are running 
    426  
    427  
    428  
    429  
    430     IGCM_sys_RshMaster IGCM_card_WriteOption ${SUBMIT_DIR}/run.card PostProcessing TimeSeriesRunning "y" 
    431  
    432  
    433  
    434  
    435  
    436     # Get information from last execution 
    437     #CompletedFlag=$( IGCM_sys_RshMaster \ 
    438     #   "IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card PostProcessing TimeSeriesCompleted ;\ 
    439     #        echo \${run_PostProcessing_TimeSeriesCompleted}" ) 
     416  Running_Flag=$( IGCM_sys_RshMaster "IGCM_card_DefineVariableFromOption \ 
     417  ${SUBMIT_DIR}/run.card PostProcessing TimeSeriesRunning ; \ 
     418  echo \${run_PostProcessing_TimeSeriesRunning}" ) 
     419 
     420  #if [ X${Running_Flag} = Xy ] ; then 
     421  #  # Time Series Job allready running 
     422  IGCM_debug_Print 1 "Time Series Job allready running exit" 
     423  exit 
     424  #fi 
     425  # Now run.card know we are running 
     426 
     427 
     428 
     429 
     430  IGCM_sys_RshMaster IGCM_card_WriteOption ${SUBMIT_DIR}/run.card PostProcessing TimeSeriesRunning "y" 
     431 
     432 
     433 
     434 
     435 
     436  # Get information from last execution 
     437  #CompletedFlag=$( IGCM_sys_RshMaster \ 
     438  # "IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card PostProcessing TimeSeriesCompleted ;\ 
     439  #        echo \${run_PostProcessing_TimeSeriesCompleted}" ) 
    440440fi 
    441441 
     
    443443 
    444444if ( [ X${CompletedFlag} = X ] || [ X${CompletedFlag} = X$( IGCM_date_AddDaysToGregorianDate ${DateBegin} -1 ) ] ) ; then 
    445     # First Time Series Submission 
    446     FIRST_PASS=TRUE 
    447     Length=$( IGCM_date_DaysInPreviousPeriod ${DateBegin} ${config_UserChoices_PeriodLength} begin) 
    448     DATE_FIN_JOB_B=$( IGCM_date_AddDaysToGregorianDate ${DateBegin} $(( Length - 1 )) ) 
     445  # First Time Series Submission 
     446  FIRST_PASS=TRUE 
     447  Length=$( IGCM_date_DaysInPreviousPeriod ${DateBegin} ${config_UserChoices_PeriodLength} begin) 
     448  DATE_FIN_JOB_B=$( IGCM_date_AddDaysToGregorianDate ${DateBegin} $(( Length - 1 )) ) 
    449449else 
    450     # Last Completed Time Series 
    451     FIRST_PASS=FALSE 
    452     DATE_FIN_JOB_B=${CompletedFlag} 
    453     date=${DateBegin}_${DATE_FIN_JOB_B} 
    454     for comp in ${config_ListOfComponents[*]} ; do 
    455         # 
    456         IGCM_sys_Mkdir ${RUN_DIR_PATH}/${comp} 
    457         # 
    458         IGCM_sys_Cd ${RUN_DIR_PATH}/${comp} 
    459         # 
    460         #set -A liste_file 
    461         unset liste_file 
    462         # 
    463         file_path=${R_SAVE}/${comp}/Analyse 
    464         # 
    465         i=0 
    466         file=${NULL_STR} 
    467         # 
    468         for file in $( eval echo \${LISTE_FILE_${comp}[*]} ); do 
    469             # 
    470             # Determine in which output can we find file 
    471             # IE : Analyse/TS or Analyse/DA2TS or ... 
    472             # 
    473             FlagDir=$( echo ${file} | awk -F "_" '{print $1}' ) 
    474             case ${FlagDir} in 
    475                 *Y)  TS_Dir=TS_YE  ;; 
    476                 *M)  TS_Dir=TS_MO  ;; 
    477                 *D)  TS_Dir=TS_DA  ;; 
    478                 HF)  TS_Dir=TS_HF  ;; 
    479                 3H)  TS_Dir=TS_HF  ;; 
    480                 INS) TS_Dir=TS_INS ;; 
    481             esac 
    482             for var in $( eval echo \${LISTE_VARS_${file}[*]} ) ; do 
    483                 # 
    484                 #set +A liste_file ${liste_file[*]} ${file_path}/${TS_Dir}/${config_UserChoices_JobName}_${date}_${FlagDir}_${var}.nc 
    485                 liste_file[${#liste_file[*]}]=${file_path}/${TS_Dir}/${config_UserChoices_JobName}_${date}_${FlagDir}_${var}.nc 
    486                 # 
    487             done 
    488         done 
    489         if [ X${file} != X${NULL_STR} ] ; then 
    490             IGCM_sys_Get /l liste_file[*] ${RUN_DIR_PATH}/${comp} 
    491             # Even if some files are missing we tried to continue 
    492             # Either ListVar in compname.card are asked but not present in original history file 
    493             # Either a previous TS task failed 
    494             ExitFlag=false 
    495             IGCM_debug_Verif_Exit_Post 
    496         fi 
     450  # Last Completed Time Series 
     451  FIRST_PASS=FALSE 
     452  DATE_FIN_JOB_B=${CompletedFlag} 
     453  date=${DateBegin}_${DATE_FIN_JOB_B} 
     454  for comp in ${config_ListOfComponents[*]} ; do 
     455    # 
     456    IGCM_sys_Mkdir ${RUN_DIR_PATH}/${comp} 
     457    # 
     458    IGCM_sys_Cd ${RUN_DIR_PATH}/${comp} 
     459    # 
     460    #set -A liste_file 
     461    unset liste_file 
     462    # 
     463    file_path=${R_SAVE}/${comp}/Analyse 
     464    # 
     465    i=0 
     466    file=${NULL_STR} 
     467    # 
     468    for file in $( eval echo \${LISTE_FILE_${comp}[*]} ); do 
     469      # 
     470      # Determine in which output can we find file 
     471      # IE : Analyse/TS or Analyse/DA2TS or ... 
     472      # 
     473      FlagDir=$( echo ${file} | awk -F "_" '{print $1}' ) 
     474      case ${FlagDir} in 
     475        *Y)  TS_Dir=TS_YE  ;; 
     476        *M)  TS_Dir=TS_MO  ;; 
     477        *D)  TS_Dir=TS_DA  ;; 
     478        HF)  TS_Dir=TS_HF  ;; 
     479        3H)  TS_Dir=TS_HF  ;; 
     480        INS) TS_Dir=TS_INS ;; 
     481      esac 
     482      for var in $( eval echo \${LISTE_VARS_${file}[*]} ) ; do 
     483        # 
     484        #set +A liste_file ${liste_file[*]} ${file_path}/${TS_Dir}/${config_UserChoices_JobName}_${date}_${FlagDir}_${var}.nc 
     485        liste_file[${#liste_file[*]}]=${file_path}/${TS_Dir}/${config_UserChoices_JobName}_${date}_${FlagDir}_${var}.nc 
     486        # 
     487      done 
    497488    done 
    498     # 
    499     LEVEL=0 
    500     # 
     489    if [ X${file} != X${NULL_STR} ] ; then 
     490      IGCM_sys_Get /l liste_file[*] ${RUN_DIR_PATH}/${comp} 
     491      # Even if some files are missing we tried to continue 
     492      # Either ListVar in compname.card are asked but not present in original history file 
     493      # Either a previous TS task failed 
     494      ExitFlag=false 
     495      IGCM_debug_Verif_Exit_Post 
     496    fi 
     497  done 
     498  # 
     499  LEVEL=0 
     500  # 
    501501fi 
    502502 
     
    513513 
    514514if [ ${DoJob} = true ] ; then 
    515     while [ ${DATE_COUNT} -lt ${PeriodDateEnd} ] ; do 
    516         (( NBRE_FILE_TOT = NBRE_FILE_TOT + 1 )) 
    517         Length=$( IGCM_date_DaysInNextPeriod ${DATE_COUNT} ${config_UserChoices_PeriodLength} ) 
    518         DATE_COUNT=$( IGCM_date_AddDaysToGregorianDate ${DATE_COUNT} ${Length} ) 
    519     done 
     515  while [ ${DATE_COUNT} -lt ${PeriodDateEnd} ] ; do 
     516    (( NBRE_FILE_TOT = NBRE_FILE_TOT + 1 )) 
     517    Length=$( IGCM_date_DaysInNextPeriod ${DATE_COUNT} ${config_UserChoices_PeriodLength} ) 
     518    DATE_COUNT=$( IGCM_date_AddDaysToGregorianDate ${DATE_COUNT} ${Length} ) 
     519  done 
    520520else 
    521     NBRE_FILE_TOT=0 
     521  NBRE_FILE_TOT=0 
    522522fi 
    523523 
    524524if [ ${NBRE_FILE_TOT} -le ${UNIX_MAX_LIMIT} ] ; then 
    525     NBRE_TOUR=1  
     525  NBRE_TOUR=1  
    526526elif [ ${NBRE_FILE_TOT}%${UNIX_MAX_LIMIT} -eq 0 ] ; then 
    527     let NBRE_TOUR=${NBRE_FILE_TOT}/${UNIX_MAX_LIMIT}  
     527  let NBRE_TOUR=${NBRE_FILE_TOT}/${UNIX_MAX_LIMIT}  
    528528else 
    529     let NBRE_TOUR=${NBRE_FILE_TOT}/${UNIX_MAX_LIMIT}+1 
     529  let NBRE_TOUR=${NBRE_FILE_TOT}/${UNIX_MAX_LIMIT}+1 
    530530fi 
    531531 
     
    538538 
    539539while [ ${CURRENT_LOOP} -le  ${NBRE_TOUR} ] ; do 
    540        
    541     if [ ${NBRE_FILE_TOT} -le ${UNIX_MAX_LIMIT} ] ; then  
    542         # - LEVEL 1 : JUST ONE LOOP TO COMPLETE 
    543         NBRE_FILE_LOOP=${NBRE_FILE_TOT} 
    544  
    545         if [ ${FIRST_PASS} = TRUE ] ; then 
    546             DATE_COURANTE=${DATE_FIN_JOB_B_LOOP} 
    547         else 
    548             Length=$( IGCM_date_DaysInNextPeriod ${DATE_FIN_JOB_B_LOOP} ${config_UserChoices_PeriodLength} ) 
    549             DATE_COURANTE=$( IGCM_date_AddDaysToGregorianDate ${DATE_FIN_JOB_B_LOOP} ${Length} ) 
    550         fi 
    551  
    552         DATE_FIN=${PeriodDateEnd} 
    553         DATE_FIN_JOB_B_LOOP_PREC=${DATE_FIN_JOB_B_LOOP} 
    554  
    555         [ -n "${DATE_LOOP}" ] && DATE_FIN_JOB_B_LOOP=${DATE_LOOP} 
    556         [ -n "${LEVEL}" ] && FLAG_B="TRUE" || FLAG_B="FALSE" 
    557  
    558         LEVEL=1 
    559         DEPOT="TRUE"      
    560     elif [ ${CURRENT_LOOP} -ne  ${NBRE_TOUR} ] ; then 
    561         # - LEVEL 2 : WE ARE IN THE "DEEP" LOOP 
    562         NBRE_FILE_LOOP=${UNIX_MAX_LIMIT} 
    563  
    564         if [ ! ${FIRST_PASS} = TRUE ] && [ ${CURRENT_LOOP} -eq 1 ] ; then 
    565             Length=$( IGCM_date_DaysInNextPeriod ${DATE_FIN_JOB_B_LOOP} ${config_UserChoices_PeriodLength} ) 
    566             DATE_COURANTE=$( IGCM_date_AddDaysToGregorianDate ${DATE_FIN_JOB_B_LOOP} ${Length} ) 
    567         elif [ -z "${DATE_COURANTE}" ] ; then 
    568             DATE_COURANTE=${DATE_FIN_JOB_B} 
    569         else 
    570             Length=$( IGCM_date_DaysInNextPeriod ${DATE_FIN} ${config_UserChoices_PeriodLength} ) 
    571             DATE_COURANTE=$( IGCM_date_AddDaysToGregorianDate ${DATE_FIN} ${Length} ) 
    572         fi 
    573           
    574         (( TotLength = 0 )) 
    575         COMPTEUR=1 
    576         DATE_LOOP=${DATE_COURANTE} 
    577  
    578         while [ ${COMPTEUR} -lt ${NBRE_FILE_LOOP} ] ; do 
    579             # 
    580             Length=$( IGCM_date_DaysInNextPeriod ${DATE_LOOP} ${config_UserChoices_PeriodLength} ) 
    581             DATE_LOOP=$( IGCM_date_AddDaysToGregorianDate ${DATE_LOOP} ${Length} ) 
    582             (( TotLength = TotLength + Length )) 
    583             (( COMPTEUR = COMPTEUR + 1 )) 
    584             # 
    585         done # while [ ${COMPTEUR} -le ${NBRE_FILE_LOOP} ] done 
    586         DATE_FIN=$( IGCM_date_AddDaysToGregorianDate ${DATE_COURANTE} ${TotLength} ) 
    587  
    588         [ -n "${DATE_LOOP}" ] && DATE_FIN_JOB_B_LOOP_PREC=${DATE_FIN_JOB_B_LOOP} ; DATE_FIN_JOB_B_LOOP=${DATE_LOOP} 
    589         [ -n "${LEVEL}" ] && [ ${LEVEL} -eq 0 ] && FLAG_B="TRUE" || [ ${CURRENT_LOOP} -gt 1 ] && FLAG_B="TRUE" || FLAG_B="FALSE" 
    590         DEPOT="FALSE" 
    591         LEVEL=2 
     540 
     541  if [ ${NBRE_FILE_TOT} -le ${UNIX_MAX_LIMIT} ] ; then  
     542    # - LEVEL 1 : JUST ONE LOOP TO COMPLETE 
     543    NBRE_FILE_LOOP=${NBRE_FILE_TOT} 
     544 
     545    if [ ${FIRST_PASS} = TRUE ] ; then 
     546      DATE_COURANTE=${DATE_FIN_JOB_B_LOOP} 
    592547    else 
    593         # - LEVEL 3 : WE ARE IN THE LAST LOOP 
    594         NBRE_FILE_LOOP=$(( ${NBRE_FILE_TOT} % ( ${UNIX_MAX_LIMIT} * ( ${CURRENT_LOOP} - 1 ) ) )) 
    595         [ ${NBRE_FILE_LOOP} -eq 0 ] && NBRE_FILE_LOOP=${UNIX_MAX_LIMIT} 
    596  
    597         Length=$( IGCM_date_DaysInNextPeriod ${DATE_FIN} ${config_UserChoices_PeriodLength} ) 
    598         DATE_COURANTE=$(IGCM_date_AddDaysToGregorianDate ${DATE_FIN} ${Length} ) 
    599         DATE_FIN=${PeriodDateEnd} 
    600         [ -n "${DATE_LOOP}" ] && DATE_FIN_JOB_B_LOOP_PREC=${DATE_FIN_JOB_B_LOOP} ; DATE_FIN_JOB_B_LOOP=${DATE_LOOP} 
    601  
    602         LEVEL=3 
    603         DEPOT="TRUE" 
    604         FLAG_B="TRUE" 
     548      Length=$( IGCM_date_DaysInNextPeriod ${DATE_FIN_JOB_B_LOOP} ${config_UserChoices_PeriodLength} ) 
     549      DATE_COURANTE=$( IGCM_date_AddDaysToGregorianDate ${DATE_FIN_JOB_B_LOOP} ${Length} ) 
    605550    fi 
    606551 
    607     # THEN FOR EACH FILE TYPE WE LOOP BETWEEN DATE_COURANTE AND DATE_FIN. 
    608     for comp in ${config_ListOfComponents[*]} ; do 
    609         # 
    610         IGCM_sys_Mkdir ${RUN_DIR_PATH}/${comp} 
    611         # 
    612         IGCM_sys_Cd ${RUN_DIR_PATH}/${comp} 
    613         # 
    614         eval R_OUT_${comp}=${R_SAVE}/${comp} 
    615         # 
    616         i=0 
    617         # 
    618         for file in $( eval echo \${LISTE_FILE_${comp}[*]} ); do 
    619             # 
    620             # Determine in which output can we find file 
    621             # IE : Output/MO or Output/DA or ... 
    622             # 
    623             FlagDir=$( echo ${file} | awk -F "_" '{print $1}' ) 
    624             case ${FlagDir} in 
    625                 *Y)    TS_Dir=TS_YE  ; FreqDir=YE  ;; 
    626                 *M)    TS_Dir=TS_MO  ; FreqDir=MO  ;; 
    627                 *D)    TS_Dir=TS_DA  ; FreqDir=DA  ;; 
    628                 HF)    TS_Dir=TS_HF  ; FreqDir=HF  ;; 
    629                 3H)    TS_Dir=TS_HF  ; FreqDir=HF  ;; 
    630                 INS)   TS_Dir=TS_INS ; FreqDir=INS ;; 
    631                 *)  
    632                        IGCM_debug_Print 1 "Error in FlagDir=${FlagDir} for file ${file}." 
    633                        IGCM_sys_Exit "Job create_ts" ;; 
    634             esac 
    635  
    636             # Initialize array 
    637             #set -A liste_file 
    638             #set -A liste_file_tmp 
    639             unset liste_file 
    640             unset liste_file_tmp 
    641             eval file_path=\${R_OUT_${comp}}/Output/${FreqDir}/ 
    642  
    643             COMPTEUR=1 
    644             DATE_LOOP=${DATE_COURANTE} 
    645  
    646             while [ ${COMPTEUR} -le ${NBRE_FILE_LOOP} ] ; do 
    647                 # 
    648                 Length1=$( IGCM_date_DaysInPreviousPeriod ${DATE_LOOP} ${config_UserChoices_PeriodLength} end) 
    649                 DATE_TAB=$(  IGCM_date_AddDaysToGregorianDate ${DATE_LOOP} $(( 1 - Length1 )) )_${DATE_LOOP} 
    650  
    651                 Length2=$( IGCM_date_DaysInNextPeriod ${DATE_LOOP} ${config_UserChoices_PeriodLength} ) 
    652                 DATE_LOOP=$( IGCM_date_AddDaysToGregorianDate ${DATE_LOOP} ${Length2} ) 
    653  
    654                 #set +A liste_file ${liste_file[*]} ${file_path}${config_UserChoices_JobName}_${DATE_TAB}_${file}.nc 
    655                 #set +A liste_file_tmp ${liste_file_tmp[*]} ${config_UserChoices_JobName}_${DATE_TAB}_${file}.nc 
    656                 liste_file[${#liste_file[*]}]=${file_path}${config_UserChoices_JobName}_${DATE_TAB}_${file}.nc 
    657                 liste_file_tmp[${#liste_file_tmp[*]}]=${config_UserChoices_JobName}_${DATE_TAB}_${file}.nc 
    658                 (( COMPTEUR = COMPTEUR + 1 )) 
    659                 # 
    660             done # while [ ${COMPTEUR} -le ${NBRE_FILE_LOOP} ] done 
    661             DATE_LOOP=$( IGCM_date_AddDaysToGregorianDate ${DATE_LOOP} -${Length2} ) 
    662  
    663             # Get selected files 
    664             IGCM_sys_Get /l liste_file[*] ${RUN_DIR_PATH}/${comp} 
    665             IGCM_debug_Verif_Exit_Post 
    666  
    667             # Apply IGCM_Patch if needed 
    668             if [ ! X${RebuildFrequency} = Xtrue ] ; then 
    669                 if [ X$( eval echo \${LISTE_PATCHES_${file}[0]} ) !=  X${NULL_STR} ]; then 
    670                     for file_t in $( eval echo ${liste_file_tmp[*]} ); do                
    671                         for Patch in $( eval echo \${LISTE_PATCHES_${file}[*]} ); do 
    672                             IGCM_${Patch} ${file_t} 
    673                             IGCM_debug_Verif_Exit_Post 
    674                         done 
    675                     done 
    676                 fi 
    677             fi 
    678  
    679             # WE CAN CONCATENATE FILES AT THIS POINT 
    680             [ "${FLAG_B}" = "TRUE" ] && DATE_BUILD_B=${DateBegin}_${DATE_FIN_JOB_B_LOOP_PREC} 
    681             Length=$( IGCM_date_DaysInPreviousPeriod ${DATE_COURANTE} ${config_UserChoices_PeriodLength} end) 
    682             DATE_BUILD1=$( IGCM_date_AddDaysToGregorianDate ${DATE_COURANTE} -$(( Length - 1 )) ) 
    683             DATE_BUILD=${DATE_BUILD1}_${DATE_FIN} 
    684             DATE_BUILD_END=${DateBegin}_${DATE_FIN} 
    685  
    686             liste_coord=" " 
    687             for axis in $( eval echo \${LISTE_AXIS_${file}[*]} ); do 
    688               liste_coord=${liste_coord}${axis}"," 
    689             done 
    690  
    691             # Time axis must be the last dimension 
    692             time_axis=${axis} 
    693  
    694             # SWITCH BETWEEN MODEL TO FIT PARTICULAR CASE 
    695             for var in $( eval echo \${LISTE_VARS_${file}[*]} ) ; do 
    696                 # 
    697                 if [ "${FLAG_B}" = "TRUE" ] ; then 
    698                     # WE CONCATENATE WITH EXISTING FILES 
    699                     file1=${config_UserChoices_JobName}_${DATE_BUILD_B}_${FlagDir}_${var}.nc 
    700                     file_out=${config_UserChoices_JobName}_${DATE_BUILD_END}_${FlagDir}_${var}.nc 
    701                     IGCM_sys_ncrcat --hst -v ${liste_coord}${var} ${file1} ${liste_file_tmp[*]} ${file_out} 
    702                     # 
    703                     IGCM_sys_Rm ${file1} 
    704                     if [ ! "${DEPOT}" = "TRUE" ] ; then 
    705                         eval IGCM_sys_Put_Out ${file_out} \${R_OUT_${comp}}/Analyse/${TS_Dir}/${file_out} 
    706                         # "${file1} = file_before ? 
    707                         [ ! "${file1}" = "${config_UserChoices_JobName}_${DateBegin}_${DATE_FIN_JOB_B}_${FlagDir}_${var}.nc" ] && eval MENAGE \${R_OUT_${comp}}/Analyse/${TS_Dir} ${file1} ${file_out} 
    708                     fi 
    709  
    710                     ExitFlag=false 
    711                 else 
    712                     # OR NOT 
    713                     IGCM_sys_ncrcat --hst -v ${liste_coord}${var} ${liste_file_tmp[*]} ${config_UserChoices_JobName}_${DATE_BUILD}_${FlagDir}_${var}.nc 
    714                 fi 
    715  
    716                 # 
    717                 if [ "${DEPOT}" = "TRUE" ] ; then 
    718                     # WE PUT FINAL FILE ON FILE SYSTEM 
    719                     [ "${FLAG_B}" = "FALSE" ] && file_out=${config_UserChoices_JobName}_${DATE_BUILD}_${FlagDir}_${var}.nc 
    720                     file_before=${config_UserChoices_JobName}_${DateBegin}_${DATE_FIN_JOB_B}_${FlagDir}_${var}.nc 
    721                     # 
    722                     eval IGCM_sys_Put_Out ${file_out} \${R_OUT_${comp}}/Analyse/${TS_Dir}/${file_out} 
    723                     [ "${FLAG_B}" = "TRUE" ] && eval MENAGE \${R_OUT_${comp}}/Analyse/${TS_Dir} ${file_before} ${file_out} 
    724                     if [ ! "X${file1}" = "X" ] ; then 
    725                         [ ! "${file1}" = "${config_UserChoices_JobName}_${DateBegin}_${DATE_FIN_JOB_B}_${FlagDir}_${var}.nc" ] && eval MENAGE \${R_OUT_${comp}}/Analyse/${TS_Dir} ${file1} ${file_out} 
    726                     fi 
    727                     # 
    728                     if ( [ ${FlagDir} = "1M" ] && [ -f ${file_out} ] ) ; then 
    729                         file_before_YE=${config_UserChoices_JobName}_${DateBegin}_${DATE_FIN_JOB_B}_1Y_${var}.nc 
    730                         file_out_YE=${config_UserChoices_JobName}_${DATE_BUILD_END}_1Y_${var}.nc 
    731                         # 
    732                         # Compute yearly average considering calendar 
    733                         # and set date of the mid year to 01/07 at 00:00 
    734                         IGCM_sys_cdo -settime,00:00 -setday,1 -setmon,7 -settunits,days -divdpy -yearsum -muldpm -selvar,${var} ${file_out} ${file_out_YE} 
    735                         # Extract all ancillary variables except $var, they will be appended after the cdo command 
    736                         # Needed because cdo applies calculs on all variables 
    737                         IGCM_sys_ncks -Oh -x -v ${var} ${file_out} ${file_out_YE%%.nc}_tmp1.nc 
    738                         # This will remove the time axis because cdo rewrites severely with only considered useful variables 
    739                         IGCM_sys_cdo -mulc,1 ${file_out_YE%%.nc}_tmp1.nc ${file_out_YE%%.nc}_tmp2.nc 2>/dev/null 
    740                         if [ $? -eq 0 ] ; then 
    741                                 # Now append all ancillary variables if previous cdo operator ok 
    742                                 IGCM_sys_ncks -h -A ${file_out_YE%%.nc}_tmp2.nc ${file_out_YE} 
    743                         fi 
    744  
    745                         # Put global history attribut 
    746                         IGCM_sys_ncatted -Oh -a history,global,o,c,"build by libIGCM/create_ts" ${file_out_YE} 
    747                         # 
    748                         eval IGCM_sys_Put_Out ${file_out_YE} \${R_OUT_${comp}}/Analyse/TS_MO_YE/${file_out_YE} 
    749                         [ "${FLAG_B}" = "TRUE" ] && eval MENAGE \${R_OUT_${comp}}/Analyse/TS_MO_YE/ ${file_before_YE} ${file_out_YE} 
    750                         IGCM_sys_Rm ${file_out_YE%%.nc}_tmp*.nc 
    751                     fi 
    752                     # 
    753                     IGCM_sys_Rm ${file_out} 
    754                     ExitFlag=false 
    755                     # 
    756                 fi 
    757                 # 
    758             done     # for var in ${liste_var} ; do 
    759             IGCM_sys_Rm ${liste_file_tmp[*]} 
    760         done         # for file in ${liste_file_brut} do 
    761     done             # for comp in ${config_ListOfComponents[*]} ; do 
    762     # GO AHEAD IN DEEPEST LOOP 
    763     (( CURRENT_LOOP = CURRENT_LOOP + 1 )) 
     552    DATE_FIN=${PeriodDateEnd} 
     553    DATE_FIN_JOB_B_LOOP_PREC=${DATE_FIN_JOB_B_LOOP} 
     554 
     555    [ -n "${DATE_LOOP}" ] && DATE_FIN_JOB_B_LOOP=${DATE_LOOP} 
     556    [ -n "${LEVEL}" ] && FLAG_B="TRUE" || FLAG_B="FALSE" 
     557 
     558    LEVEL=1 
     559    DEPOT="TRUE"        
     560  elif [ ${CURRENT_LOOP} -ne  ${NBRE_TOUR} ] ; then 
     561    # - LEVEL 2 : WE ARE IN THE "DEEP" LOOP 
     562    NBRE_FILE_LOOP=${UNIX_MAX_LIMIT} 
     563 
     564    if [ ! ${FIRST_PASS} = TRUE ] && [ ${CURRENT_LOOP} -eq 1 ] ; then 
     565      Length=$( IGCM_date_DaysInNextPeriod ${DATE_FIN_JOB_B_LOOP} ${config_UserChoices_PeriodLength} ) 
     566      DATE_COURANTE=$( IGCM_date_AddDaysToGregorianDate ${DATE_FIN_JOB_B_LOOP} ${Length} ) 
     567    elif [ -z "${DATE_COURANTE}" ] ; then 
     568      DATE_COURANTE=${DATE_FIN_JOB_B} 
     569    else 
     570      Length=$( IGCM_date_DaysInNextPeriod ${DATE_FIN} ${config_UserChoices_PeriodLength} ) 
     571      DATE_COURANTE=$( IGCM_date_AddDaysToGregorianDate ${DATE_FIN} ${Length} ) 
     572    fi 
     573 
     574    (( TotLength = 0 )) 
     575    COMPTEUR=1 
     576    DATE_LOOP=${DATE_COURANTE} 
     577 
     578    while [ ${COMPTEUR} -lt ${NBRE_FILE_LOOP} ] ; do 
     579      # 
     580      Length=$( IGCM_date_DaysInNextPeriod ${DATE_LOOP} ${config_UserChoices_PeriodLength} ) 
     581      DATE_LOOP=$( IGCM_date_AddDaysToGregorianDate ${DATE_LOOP} ${Length} ) 
     582      (( TotLength = TotLength + Length )) 
     583      (( COMPTEUR = COMPTEUR + 1 )) 
     584      # 
     585    done # while [ ${COMPTEUR} -le ${NBRE_FILE_LOOP} ] done 
     586    DATE_FIN=$( IGCM_date_AddDaysToGregorianDate ${DATE_COURANTE} ${TotLength} ) 
     587 
     588    [ -n "${DATE_LOOP}" ] && DATE_FIN_JOB_B_LOOP_PREC=${DATE_FIN_JOB_B_LOOP} ; DATE_FIN_JOB_B_LOOP=${DATE_LOOP} 
     589    [ -n "${LEVEL}" ] && [ ${LEVEL} -eq 0 ] && FLAG_B="TRUE" || [ ${CURRENT_LOOP} -gt 1 ] && FLAG_B="TRUE" || FLAG_B="FALSE" 
     590    DEPOT="FALSE" 
     591    LEVEL=2 
     592  else 
     593    # - LEVEL 3 : WE ARE IN THE LAST LOOP 
     594    NBRE_FILE_LOOP=$(( ${NBRE_FILE_TOT} % ( ${UNIX_MAX_LIMIT} * ( ${CURRENT_LOOP} - 1 ) ) )) 
     595    [ ${NBRE_FILE_LOOP} -eq 0 ] && NBRE_FILE_LOOP=${UNIX_MAX_LIMIT} 
     596 
     597    Length=$( IGCM_date_DaysInNextPeriod ${DATE_FIN} ${config_UserChoices_PeriodLength} ) 
     598    DATE_COURANTE=$(IGCM_date_AddDaysToGregorianDate ${DATE_FIN} ${Length} ) 
     599    DATE_FIN=${PeriodDateEnd} 
     600    [ -n "${DATE_LOOP}" ] && DATE_FIN_JOB_B_LOOP_PREC=${DATE_FIN_JOB_B_LOOP} ; DATE_FIN_JOB_B_LOOP=${DATE_LOOP} 
     601 
     602    LEVEL=3 
     603    DEPOT="TRUE" 
     604    FLAG_B="TRUE" 
     605  fi 
     606 
     607  # THEN FOR EACH FILE TYPE WE LOOP BETWEEN DATE_COURANTE AND DATE_FIN. 
     608  for comp in ${config_ListOfComponents[*]} ; do 
     609    # 
     610    IGCM_sys_Mkdir ${RUN_DIR_PATH}/${comp} 
     611      # 
     612    IGCM_sys_Cd ${RUN_DIR_PATH}/${comp} 
     613    # 
     614    eval R_OUT_${comp}=${R_SAVE}/${comp} 
     615    # 
     616    i=0 
     617    # 
     618    for file in $( eval echo \${LISTE_FILE_${comp}[*]} ); do 
     619      # 
     620      # Determine in which output we can find file 
     621      # IE : Output/MO or Output/DA or ... 
     622      # 
     623      FlagDir=$( echo ${file} | awk -F "_" '{print $1}' ) 
     624      case ${FlagDir} in 
     625        *Y)    TS_Dir=TS_YE  ; FreqDir=YE  ;; 
     626        *M)    TS_Dir=TS_MO  ; FreqDir=MO  ;; 
     627        *D)    TS_Dir=TS_DA  ; FreqDir=DA  ;; 
     628        HF)    TS_Dir=TS_HF  ; FreqDir=HF  ;; 
     629        3H)    TS_Dir=TS_HF  ; FreqDir=HF  ;; 
     630        INS)   TS_Dir=TS_INS ; FreqDir=INS ;; 
     631        *)     IGCM_debug_Print 1 "Error in FlagDir=${FlagDir} for file ${file}." 
     632               IGCM_sys_Exit "Job create_ts" ;; 
     633      esac 
     634 
     635      # Initialize array 
     636      #set -A liste_file 
     637      #set -A liste_file_tmp 
     638      unset liste_file 
     639      unset liste_file_tmp 
     640      eval file_path=\${R_OUT_${comp}}/Output/${FreqDir}/ 
     641 
     642      COMPTEUR=1 
     643      DATE_LOOP=${DATE_COURANTE} 
     644 
     645      while [ ${COMPTEUR} -le ${NBRE_FILE_LOOP} ] ; do 
     646        # 
     647        Length1=$( IGCM_date_DaysInPreviousPeriod ${DATE_LOOP} ${config_UserChoices_PeriodLength} end) 
     648        DATE_TAB=$(  IGCM_date_AddDaysToGregorianDate ${DATE_LOOP} $(( 1 - Length1 )) )_${DATE_LOOP} 
     649 
     650        Length2=$( IGCM_date_DaysInNextPeriod ${DATE_LOOP} ${config_UserChoices_PeriodLength} ) 
     651        DATE_LOOP=$( IGCM_date_AddDaysToGregorianDate ${DATE_LOOP} ${Length2} ) 
     652 
     653        #set +A liste_file ${liste_file[*]} ${file_path}${config_UserChoices_JobName}_${DATE_TAB}_${file}.nc 
     654        #set +A liste_file_tmp ${liste_file_tmp[*]} ${config_UserChoices_JobName}_${DATE_TAB}_${file}.nc 
     655        liste_file[${#liste_file[*]}]=${file_path}${config_UserChoices_JobName}_${DATE_TAB}_${file}.nc 
     656        liste_file_tmp[${#liste_file_tmp[*]}]=${config_UserChoices_JobName}_${DATE_TAB}_${file}.nc 
     657        (( COMPTEUR = COMPTEUR + 1 )) 
     658        # 
     659      done # while [ ${COMPTEUR} -le ${NBRE_FILE_LOOP} ] done 
     660      DATE_LOOP=$( IGCM_date_AddDaysToGregorianDate ${DATE_LOOP} -${Length2} ) 
     661 
     662      # Get selected files 
     663      IGCM_sys_Get /l liste_file[*] ${RUN_DIR_PATH}/${comp} 
     664      IGCM_debug_Verif_Exit_Post 
     665 
     666      # Apply IGCM_Patch if needed 
     667      if [ ! X${RebuildFrequency} = Xtrue ] ; then 
     668        if [ X$( eval echo \${LISTE_PATCHES_${file}[0]} ) !=  X${NULL_STR} ]; then 
     669          for file_t in $( eval echo ${liste_file_tmp[*]} ); do          
     670            for Patch in $( eval echo \${LISTE_PATCHES_${file}[*]} ); do 
     671              IGCM_${Patch} ${file_t} 
     672              IGCM_debug_Verif_Exit_Post 
     673            done 
     674          done 
     675        fi 
     676      fi 
     677 
     678      # WE CAN CONCATENATE FILES AT THIS POINT 
     679      [ "${FLAG_B}" = "TRUE" ] && DATE_BUILD_B=${DateBegin}_${DATE_FIN_JOB_B_LOOP_PREC} 
     680      Length=$( IGCM_date_DaysInPreviousPeriod ${DATE_COURANTE} ${config_UserChoices_PeriodLength} end) 
     681      DATE_BUILD1=$( IGCM_date_AddDaysToGregorianDate ${DATE_COURANTE} -$(( Length - 1 )) ) 
     682      DATE_BUILD=${DATE_BUILD1}_${DATE_FIN} 
     683      DATE_BUILD_END=${DateBegin}_${DATE_FIN} 
     684 
     685      liste_coord=" " 
     686      for axis in $( eval echo \${LISTE_AXIS_${file}[*]} ); do 
     687        liste_coord=${liste_coord}${axis}"," 
     688      done 
     689 
     690      # Time axis must be the last dimension 
     691      time_axis=${axis} 
     692 
     693      # SWITCH BETWEEN MODEL TO FIT PARTICULAR CASE 
     694      for var in $( eval echo \${LISTE_VARS_${file}[*]} ) ; do 
     695        # 
     696        if [ "${FLAG_B}" = "TRUE" ] ; then 
     697          # WE CONCATENATE WITH EXISTING FILES 
     698          file1=${config_UserChoices_JobName}_${DATE_BUILD_B}_${FlagDir}_${var}.nc 
     699          file_out=${config_UserChoices_JobName}_${DATE_BUILD_END}_${FlagDir}_${var}.nc 
     700          IGCM_sys_ncrcat --hst -v ${liste_coord}${var} ${file1} ${liste_file_tmp[*]} ${file_out} 
     701          # 
     702          IGCM_sys_Rm ${file1} 
     703          if [ ! "${DEPOT}" = "TRUE" ] ; then 
     704            eval IGCM_sys_Put_Out ${file_out} \${R_OUT_${comp}}/Analyse/${TS_Dir}/${file_out} 
     705            # "${file1} = file_before ? 
     706            [ ! "${file1}" = "${config_UserChoices_JobName}_${DateBegin}_${DATE_FIN_JOB_B}_${FlagDir}_${var}.nc" ] && eval MENAGE \${R_OUT_${comp}}/Analyse/${TS_Dir} ${file1} ${file_out} 
     707          fi 
     708 
     709          ExitFlag=false 
     710        else 
     711          # OR NOT 
     712          IGCM_sys_ncrcat --hst -v ${liste_coord}${var} ${liste_file_tmp[*]} ${config_UserChoices_JobName}_${DATE_BUILD}_${FlagDir}_${var}.nc 
     713        fi 
     714 
     715        # 
     716        if [ "${DEPOT}" = "TRUE" ] ; then 
     717          # WE PUT FINAL FILE ON FILE SYSTEM 
     718          [ "${FLAG_B}" = "FALSE" ] && file_out=${config_UserChoices_JobName}_${DATE_BUILD}_${FlagDir}_${var}.nc 
     719          file_before=${config_UserChoices_JobName}_${DateBegin}_${DATE_FIN_JOB_B}_${FlagDir}_${var}.nc 
     720          # 
     721          eval IGCM_sys_Put_Out ${file_out} \${R_OUT_${comp}}/Analyse/${TS_Dir}/${file_out} 
     722          [ "${FLAG_B}" = "TRUE" ] && eval MENAGE \${R_OUT_${comp}}/Analyse/${TS_Dir} ${file_before} ${file_out} 
     723          if [ ! "X${file1}" = "X" ] ; then 
     724            [ ! "${file1}" = "${config_UserChoices_JobName}_${DateBegin}_${DATE_FIN_JOB_B}_${FlagDir}_${var}.nc" ] && eval MENAGE \${R_OUT_${comp}}/Analyse/${TS_Dir} ${file1} ${file_out} 
     725          fi 
     726          # 
     727          if ( [ ${FlagDir} = "1M" ] && [ -f ${file_out} ] ) ; then 
     728            file_before_YE=${config_UserChoices_JobName}_${DateBegin}_${DATE_FIN_JOB_B}_1Y_${var}.nc 
     729            file_out_YE=${config_UserChoices_JobName}_${DATE_BUILD_END}_1Y_${var}.nc 
     730            # 
     731            # Compute yearly average considering calendar 
     732            # and set date of the mid year to 01/07 at 00:00 
     733            IGCM_sys_cdo -settime,00:00 -setday,1 -setmon,7 -settunits,days -divdpy -yearsum -muldpm -selvar,${var} ${file_out} ${file_out_YE} 
     734            # Extract all ancillary variables except $var, they will be appended after the cdo command 
     735            # Needed because cdo applies calculs on all variables 
     736            IGCM_sys_ncks -Oh -x -v ${var} ${file_out} ${file_out_YE%%.nc}_tmp1.nc 
     737            # This will remove the time axis because cdo rewrites severely with only considered useful variables 
     738            IGCM_sys_cdo -mulc,1 ${file_out_YE%%.nc}_tmp1.nc ${file_out_YE%%.nc}_tmp2.nc 2>/dev/null 
     739            if [ $? -eq 0 ] ; then 
     740              # Now append all ancillary variables if previous cdo operator ok 
     741              IGCM_sys_ncks -h -A ${file_out_YE%%.nc}_tmp2.nc ${file_out_YE} 
     742            fi 
     743 
     744            # Put global history attribut 
     745            IGCM_sys_ncatted -Oh -a history,global,o,c,"build by libIGCM/create_ts" ${file_out_YE} 
     746            # 
     747            eval IGCM_sys_Put_Out ${file_out_YE} \${R_OUT_${comp}}/Analyse/TS_MO_YE/${file_out_YE} 
     748            [ "${FLAG_B}" = "TRUE" ] && eval MENAGE \${R_OUT_${comp}}/Analyse/TS_MO_YE/ ${file_before_YE} ${file_out_YE} 
     749            IGCM_sys_Rm ${file_out_YE%%.nc}_tmp*.nc 
     750          fi 
     751          # 
     752          IGCM_sys_Rm ${file_out} 
     753          ExitFlag=false 
     754          # 
     755        fi 
     756        # 
     757      done     # for var in ${liste_var} ; do 
     758      IGCM_sys_Rm ${liste_file_tmp[*]} 
     759    done         # for file in ${liste_file_brut} do 
     760  done             # for comp in ${config_ListOfComponents[*]} ; do 
     761  # GO AHEAD IN DEEPEST LOOP 
     762  (( CURRENT_LOOP = CURRENT_LOOP + 1 )) 
    764763done                 # while [ ${CURRENT_LOOP} -le  ${NBRE_TOUR} ] do 
    765764# FINISH 
     
    767766# DODS copy 
    768767for comp in ${config_ListOfComponents[*]} ; do 
    769     for TS_Dir in TS_YE TS_MO TS_MO_YE TS_DA TS_HF TS_INS ; do 
    770         IGCM_sys_TestDirArchive ${R_SAVE}/${comp}/Analyse/${TS_Dir} 
    771         [ $? = 0 ] && IGCM_sys_Put_Dods ${comp}/Analyse/${TS_Dir} 
    772     done 
     768  for TS_Dir in TS_YE TS_MO TS_MO_YE TS_DA TS_HF TS_INS ; do 
     769    IGCM_sys_TestDirArchive ${R_SAVE}/${comp}/Analyse/${TS_Dir} 
     770    [ $? = 0 ] && IGCM_sys_Put_Dods ${comp}/Analyse/${TS_Dir} 
     771  done 
    773772done 
    774773 
     
    788787# -------------------------------------------------------------------- 
    789788if ( [ X${TsTask} = X2D ] || [ X${TsTask} = X3D ] || [ X${TsTask} = X ] ) ; then 
    790     Script_Post_Output=monitoring.${PeriodDateEnd} 
    791     IGCM_sys_QsubPost monitoring 
     789  Script_Post_Output=monitoring.${PeriodDateEnd} 
     790  IGCM_sys_QsubPost monitoring 
    792791fi 
    793792 
     
    797796# -------------------------------------------------------------------- 
    798797if [ ${StandAlone} != true ] ; then 
    799     # Put in run.card end period of time series 
    800     [ X"${DATE_FIN}" = X ] || IGCM_sys_RshMaster IGCM_card_WriteOption ${SUBMIT_DIR}/run.card PostProcessing TimeSeriesCompleted "${DATE_FIN}" 
    801     # We have finish the job ! 
    802     IGCM_sys_RshMaster IGCM_card_WriteOption ${SUBMIT_DIR}/run.card PostProcessing TimeSeriesRunning "n" 
     798  # Put in run.card end period of time series 
     799  [ X"${DATE_FIN}" = X ] || IGCM_sys_RshMaster IGCM_card_WriteOption ${SUBMIT_DIR}/run.card PostProcessing TimeSeriesCompleted "${DATE_FIN}" 
     800  # We have finish the job ! 
     801  IGCM_sys_RshMaster IGCM_card_WriteOption ${SUBMIT_DIR}/run.card PostProcessing TimeSeriesRunning "n" 
    803802fi 
    804803 
  • trunk/libIGCM/AA_job

    r781 r785  
    291291while ( ${PeriodContinue} ) ; do 
    292292 
    293     echo 
    294     echo "Starting iteration ${Period} / ${PeriodNb}" 
    295  
    296     #D- 
    297     # ------------------------------------------------------------------ 
    298     #D- COMPUTE AND DEFINE DATE STUFF. 
    299     # ------------------------------------------------------------------ 
    300     IGCM_config_PeriodStart 
    301     #D- => ${PeriodDateBegin} 
    302     #D- => ${PeriodDateEnd} 
    303     #D- => ${CumulPeriod} 
    304     #D- => ${DatesPeriod}=${PeriodDateBegin}_${PeriodDateEnd} 
    305     #D- => ${PeriodLength} => JOURS=31 , 28, 29, 30 ; MOIS=0 ; ANS=0 
    306     #D- => update run.card value 
    307      
    308     #D- 
    309     # ------------------------------------------------------------------ 
    310     #D- BEGIN COMPUTATION ONLY IF NEEDED 
    311     # ------------------------------------------------------------------ 
    312     if [ ${SimulationLengthInDays} -gt ${ExperienceLengthInDays} ] ; then 
    313         IGCM_debug_Print 1 "break because '${SimulationLengthInDays} -gt ${ExperienceLengthInDays}' : ${SimulationLengthInDays} -gt ${ExperienceLengthInDays}" 
    314         break ; 
    315     fi  
    316     
    317     #D- 
    318     # ------------------------------------------------------------------ 
    319     #D- Optionnal function in driver  
    320     #D- to set special variables used in forward lists (Param, Init or Bc). 
    321     # ------------------------------------------------------------------ 
    322     IGCM_comp_PeriodStart 
    323      
    324     #D- 
    325     # ------------------------------------------------------------------ 
    326     #D- Get parameters text files updated by job (.def, namelist ...) 
    327     #D- READ AND USE BY GCM AT EACH EXECUTION. 
    328     # ------------------------------------------------------------------ 
    329     IGCM_comp_GetInputParametersFiles 
    330  
    331     #D- 
    332     # ------------------------------------------------------------------ 
    333     #D- Get initial state (Etat0, carteveg,relief...) 
    334     #D- NECESSARY ONLY IF CumulPeriod= (=> NUMERO) == 1 
    335     #D- AND ???_Restart=NO 
    336     #D- READ AND USE BY GCM FOR ONLY ONE EXECUTION. 
    337     # ------------------------------------------------------------------ 
    338     IGCM_comp_GetInputInitialStateFiles 
    339  
    340     #D- 
    341     # ------------------------------------------------------------------ 
    342     #D- Get Boundaries Conditions (SST, WIND[X,Y,Z], LAI ...) 
    343     #D- READ AND USE BY GCM AT EACH EXECUTION. 
    344     # ------------------------------------------------------------------ 
    345     IGCM_comp_GetInputBoundaryFiles 
    346  
    347     #D- 
    348     # ------------------------------------------------------------------ 
    349     #D- Get SmoothFiles Conditions (SST, WIND[X,Y,Z], LAI ...) 
    350     #D- READ AND USE BY GCM AT EACH EXECUTION but varying in time 
    351     # ------------------------------------------------------------------ 
    352     IGCM_comp_GetInputSmoothFiles  
    353  
    354     #D- 
    355     # ------------------------------------------------------------------ 
    356     #D- Get restart files (restartphy.nc, orca_restart.nc ...) 
    357     #D- READ AND USE BY GCM AT EACH EXECUTION. 
    358     #D- 
    359     #D- IF A COMPONENT DO NOT RESTART FROM PREVIOULSY COMPUTED RESTART 
    360     #D- ONLY IF CumulPeriod= (=> NUMERO) == 1 
    361     #D- MUST EXECUTE CREATE ETAT0_LIMIT (TYPICALLY LMDZ AND ./create_etat0_limit.e) 
    362     #D- 
    363     #D- IF CumulPeriod == 1 
    364     #D- AND A COMPONENT RESTART FROM PREVIOULSY COMPUTED RESTART 
    365     #D- MUST BRING THIS RESTART IN ${RUN_DIR_PATH} 
    366     #D- 
    367     #D- ELSE BRING RESTART FROM ${JobName} IN ${RUN_DIR_PATH} 
    368     # ------------------------------------------------------------------ 
    369     IGCM_comp_GetInputRestartFiles 
    370      
    371     #D- 
    372     # ------------------------------------------------------------------ 
    373     #D- Test if all was right before Update 
    374     # ------------------------------------------------------------------ 
    375     IGCM_debug_Verif_Exit 
    376  
    377     # ------------------------------------------------------------------ 
    378     #D- Activate running environnement variables 
    379     # ------------------------------------------------------------------ 
    380     IGCM_sys_activ_variables 
    381  
    382     #D- 
    383     # ------------------------------------------------------------------ 
    384     #D- UPDATE ParametersFiles (.def, namelist ...) with  
    385     #D- current value of (ORCA_NIT00, ORCA_LRSTAR, RAZ_DATE, ...) 
    386     # ------------------------------------------------------------------ 
    387     IGCM_comp_Update 
    388  
    389     #D- 
    390     # ------------------------------------------------------------------ 
    391     #D- Test if all was right before execution 
    392     # ------------------------------------------------------------------ 
    393     IGCM_debug_Verif_Exit 
    394  
    395     #D- 
    396     #D----------------------------------------------------------------== 
    397     #D-                          3. Execution 
    398     #D----------------------------------------------------------------== 
    399  
    400     echo 
    401     echo "#######################################" 
    402     echo "#      DIR BEFORE RUN EXECUTION       #" 
    403     echo "#######################################" 
    404     echo 
    405     ls -lrt 
    406  
    407     echo "========================================================================" 
    408     if [ ${DRYRUN} -le 1 ] ; then 
    409         REAL_DATE_INIT=$( date ) 
    410         echo                                                                                   > ${Exe_Output} 
    411         echo "#######################################"                                        >> ${Exe_Output} 
    412         echo "EXECUTION of : ${EXECUTION}" 
    413         echo "EXECUTION of : ${EXECUTION}"                                                    >> ${Exe_Output} 
    414         echo                                                                                  >> ${Exe_Output} 
    415         typeset RET 
    416         RUN_DATE_BEGIN=$( date '+%Y-%m-%dT%H:%M:%S' ) 
    417         ${EXECUTION}  >> ${Exe_Output} 2>&1 
    418         RET=$? 
    419         RUN_DATE_END=$( date '+%Y-%m-%dT%H:%M:%S' ) 
    420         if [ ${RET} -gt 0 ] ; then 
    421             echo "Return code of executable :" ${RET} 
    422             IGCM_debug_Exit "EXECUTABLE" 
    423             IGCM_sys_Mkdir ${SUBMIT_DIR}/Debug 
    424             IGCM_sys_Cp ${Exe_Output} ${SUBMIT_DIR}/Debug/${PREFIX}_${Exe_Output}_error 
    425             ExecutionFail=true 
    426         fi 
    427         echo                                            >> ${Exe_Output} 
    428         echo "#######################################"  >> ${Exe_Output} 
    429         echo "libIGCM RunDateBegin=${RUN_DATE_BEGIN}"   >> ${Exe_Output} 
    430         echo "libIGCM RunDateEnd=${RUN_DATE_END}"       >> ${Exe_Output} 
    431         echo                                            >> ${Exe_Output} 
    432     else 
    433         echo "EXECUTION of : ${EXECUTION} simulated for DRYRUN = " $DRYRUN 
    434         echo "EXECUTION of : ${EXECUTION} simulated for DRYRUN = " $DRYRUN > ${Exe_Output} 
    435         if ( $DEBUG_debug ) ; then 
    436             echo "FOR EXECUTION DRYRUN mode = " $DRYRUN >> stack 
    437         fi 
     293  echo 
     294  echo "Starting iteration ${Period} / ${PeriodNb}" 
     295 
     296  #D- 
     297  # ------------------------------------------------------------------ 
     298  #D- COMPUTE AND DEFINE DATE STUFF. 
     299  # ------------------------------------------------------------------ 
     300  IGCM_config_PeriodStart 
     301  #D- => ${PeriodDateBegin} 
     302  #D- => ${PeriodDateEnd} 
     303  #D- => ${CumulPeriod} 
     304  #D- => ${DatesPeriod}=${PeriodDateBegin}_${PeriodDateEnd} 
     305  #D- => ${PeriodLength} => JOURS=31 , 28, 29, 30 ; MOIS=0 ; ANS=0 
     306  #D- => update run.card value 
     307 
     308  #D- 
     309  # ------------------------------------------------------------------ 
     310  #D- BEGIN COMPUTATION ONLY IF NEEDED 
     311  # ------------------------------------------------------------------ 
     312  if [ ${SimulationLengthInDays} -gt ${ExperienceLengthInDays} ] ; then 
     313    IGCM_debug_Print 1 "break because '${SimulationLengthInDays} -gt ${ExperienceLengthInDays}' : ${SimulationLengthInDays} -gt ${ExperienceLengthInDays}" 
     314    break ; 
     315  fi 
     316 
     317  #D- 
     318  # ------------------------------------------------------------------ 
     319  #D- Optionnal function in driver  
     320  #D- to set special variables used in forward lists (Param, Init or Bc). 
     321  # ------------------------------------------------------------------ 
     322  IGCM_comp_PeriodStart 
     323 
     324  #D- 
     325  # ------------------------------------------------------------------ 
     326  #D- Get parameters text files updated by job (.def, namelist ...) 
     327  #D- READ AND USE BY GCM AT EACH EXECUTION. 
     328  # ------------------------------------------------------------------ 
     329  IGCM_comp_GetInputParametersFiles 
     330 
     331  #D- 
     332  # ------------------------------------------------------------------ 
     333  #D- Get initial state (Etat0, carteveg,relief...) 
     334  #D- NECESSARY ONLY IF CumulPeriod= (=> NUMERO) == 1 
     335  #D- AND ???_Restart=NO 
     336  #D- READ AND USE BY GCM FOR ONLY ONE EXECUTION. 
     337  # ------------------------------------------------------------------ 
     338  IGCM_comp_GetInputInitialStateFiles 
     339 
     340  #D- 
     341  # ------------------------------------------------------------------ 
     342  #D- Get Boundaries Conditions (SST, WIND[X,Y,Z], LAI ...) 
     343  #D- READ AND USE BY GCM AT EACH EXECUTION. 
     344  # ------------------------------------------------------------------ 
     345  IGCM_comp_GetInputBoundaryFiles 
     346 
     347  #D- 
     348  # ------------------------------------------------------------------ 
     349  #D- Get SmoothFiles Conditions (SST, WIND[X,Y,Z], LAI ...) 
     350  #D- READ AND USE BY GCM AT EACH EXECUTION but varying in time 
     351  # ------------------------------------------------------------------ 
     352  IGCM_comp_GetInputSmoothFiles  
     353 
     354  #D- 
     355  # ------------------------------------------------------------------ 
     356  #D- Get restart files (restartphy.nc, orca_restart.nc ...) 
     357  #D- READ AND USE BY GCM AT EACH EXECUTION. 
     358  #D- 
     359  #D- IF A COMPONENT DO NOT RESTART FROM PREVIOULSY COMPUTED RESTART 
     360  #D- ONLY IF CumulPeriod= (=> NUMERO) == 1 
     361  #D- MUST EXECUTE CREATE ETAT0_LIMIT (TYPICALLY LMDZ AND ./create_etat0_limit.e) 
     362  #D- 
     363  #D- IF CumulPeriod == 1 
     364  #D- AND A COMPONENT RESTART FROM PREVIOULSY COMPUTED RESTART 
     365  #D- MUST BRING THIS RESTART IN ${RUN_DIR_PATH} 
     366  #D- 
     367  #D- ELSE BRING RESTART FROM ${JobName} IN ${RUN_DIR_PATH} 
     368  # ------------------------------------------------------------------ 
     369  IGCM_comp_GetInputRestartFiles 
     370 
     371  #D- 
     372  # ------------------------------------------------------------------ 
     373  #D- Test if all was right before Update 
     374  # ------------------------------------------------------------------ 
     375  IGCM_debug_Verif_Exit 
     376 
     377  # ------------------------------------------------------------------ 
     378  #D- Activate running environnement variables 
     379  # ------------------------------------------------------------------ 
     380  IGCM_sys_activ_variables 
     381 
     382  #D- 
     383  # ------------------------------------------------------------------ 
     384  #D- UPDATE ParametersFiles (.def, namelist ...) with  
     385  #D- current value of (ORCA_NIT00, ORCA_LRSTAR, RAZ_DATE, ...) 
     386  # ------------------------------------------------------------------ 
     387  IGCM_comp_Update 
     388 
     389  #D- 
     390  # ------------------------------------------------------------------ 
     391  #D- Test if all was right before execution 
     392  # ------------------------------------------------------------------ 
     393  IGCM_debug_Verif_Exit 
     394 
     395  #D- 
     396  #D----------------------------------------------------------------== 
     397  #D-                          3. Execution 
     398  #D----------------------------------------------------------------== 
     399 
     400  echo 
     401  echo "#######################################" 
     402  echo "#      DIR BEFORE RUN EXECUTION       #" 
     403  echo "#######################################" 
     404  echo 
     405  ls -lrt 
     406 
     407  echo "========================================================================" 
     408  if [ ${DRYRUN} -le 1 ] ; then 
     409    REAL_DATE_INIT=$( date ) 
     410    echo                                                                                   > ${Exe_Output} 
     411    echo "#######################################"                                        >> ${Exe_Output} 
     412    echo "EXECUTION of : ${EXECUTION}" 
     413    echo "EXECUTION of : ${EXECUTION}"                                                    >> ${Exe_Output} 
     414    echo                                                                                  >> ${Exe_Output} 
     415    typeset RET 
     416    RUN_DATE_BEGIN=$( date '+%Y-%m-%dT%H:%M:%S' ) 
     417    ${EXECUTION}  >> ${Exe_Output} 2>&1 
     418    RET=$? 
     419    RUN_DATE_END=$( date '+%Y-%m-%dT%H:%M:%S' ) 
     420    if [ ${RET} -gt 0 ] ; then 
     421      echo "Return code of executable :" ${RET} 
     422      IGCM_debug_Exit "EXECUTABLE" 
     423      IGCM_sys_Mkdir ${SUBMIT_DIR}/Debug 
     424      IGCM_sys_Cp ${Exe_Output} ${SUBMIT_DIR}/Debug/${PREFIX}_${Exe_Output}_error 
     425      ExecutionFail=true 
    438426    fi 
    439     echo "========================================================================" 
    440  
    441     echo 
    442     echo "#######################################" 
    443     echo "#       DIR AFTER RUN EXECUTION       #" 
    444     echo "#######################################" 
    445     echo 
    446     ls -lrt 
    447  
    448     #D- 
    449     # ------------------------------------------------------------------ 
    450     #D- Desactivate running environnement variables 
    451     # ------------------------------------------------------------------ 
    452     IGCM_sys_desactiv_variables 
    453  
    454     #D- 
    455     #D----------------------------------------------------------------== 
    456     #D-                    4. Post execution operations 
    457     #D----------------------------------------------------------------== 
    458  
    459     #D- 
    460     # ------------------------------------------------------------------ 
    461     #D- Save on archive machine netcdf outputs, restarts 
    462     #D- and text files of models 
    463     # ------------------------------------------------------------------ 
    464     IGCM_comp_Finalize 
    465  
    466     #D- 
    467     # ------------------------------------------------------------------ 
    468     #D- Test if all was right after Finalize 
    469     # ------------------------------------------------------------------ 
    470     IGCM_debug_Verif_Exit 
    471  
    472     #D- 
    473     # ------------------------------------------------------------------ 
    474     #D- Configure asynchronous post-treatment (Level 0) when necessary (rebuild) 
    475     #D- Configure classic post-treatment (Level 1) when necessary (TimeSeries/Seasonal) 
    476     # ------------------------------------------------------------------ 
    477     IGCM_post_Configure 
    478  
    479     #D- 
    480     # ------------------------------------------------------------------ 
    481     #D- Launch remote rebuild or/and post-treatment process if necessary 
    482     # ------------------------------------------------------------------ 
    483     IGCM_post_Submit 
    484  
    485     #D- 
    486     # ------------------------------------------------------------------ 
    487     #D- Save job output 
    488     #D- Manage executable size to save only different binary 
    489     #D- Write in run.card user, system and elapse time 
    490     #D- Check that everything went well ! No ? then we stop. 
    491     #D- Determine next computed period 
    492     # ------------------------------------------------------------------ 
    493     IGCM_config_PeriodEnd 
    494  
    495     echo "Ending iteration ${Period}" 
    496     (( Period = Period + 1 )) 
    497  
    498     # End loop if date end is reached 
    499     if [ ${SimulationLengthInDays} -ge ${ExperienceLengthInDays} ] ; then 
    500         break ; 
     427    echo                                            >> ${Exe_Output} 
     428    echo "#######################################"  >> ${Exe_Output} 
     429    echo "libIGCM RunDateBegin=${RUN_DATE_BEGIN}"   >> ${Exe_Output} 
     430    echo "libIGCM RunDateEnd=${RUN_DATE_END}"       >> ${Exe_Output} 
     431    echo                                            >> ${Exe_Output} 
     432  else 
     433    echo "EXECUTION of : ${EXECUTION} simulated for DRYRUN = " $DRYRUN 
     434    echo "EXECUTION of : ${EXECUTION} simulated for DRYRUN = " $DRYRUN > ${Exe_Output} 
     435    if ( $DEBUG_debug ) ; then 
     436      echo "FOR EXECUTION DRYRUN mode = " $DRYRUN >> stack 
    501437    fi 
    502  
    503     PeriodContinue=false 
    504     if [ ${Period} -le ${PeriodNb} ]; then 
    505         PeriodContinue=true 
    506     fi 
    507 done  
     438  fi 
     439  echo "========================================================================" 
     440 
     441  echo 
     442  echo "#######################################" 
     443  echo "#       DIR AFTER RUN EXECUTION       #" 
     444  echo "#######################################" 
     445  echo 
     446  ls -lrt 
     447 
     448  #D- 
     449  # ------------------------------------------------------------------ 
     450  #D- Desactivate running environnement variables 
     451  # ------------------------------------------------------------------ 
     452  IGCM_sys_desactiv_variables 
     453 
     454  #D- 
     455  #D----------------------------------------------------------------== 
     456  #D-                    4. Post execution operations 
     457  #D----------------------------------------------------------------== 
     458 
     459  #D- 
     460  # ------------------------------------------------------------------ 
     461  #D- Save on archive machine netcdf outputs, restarts 
     462  #D- and text files of models 
     463  # ------------------------------------------------------------------ 
     464  IGCM_comp_Finalize 
     465 
     466  #D- 
     467  # ------------------------------------------------------------------ 
     468  #D- Test if all was right after Finalize 
     469  # ------------------------------------------------------------------ 
     470  IGCM_debug_Verif_Exit 
     471 
     472  #D- 
     473  # ------------------------------------------------------------------ 
     474  #D- Configure asynchronous post-treatment (Level 0) when necessary (rebuild) 
     475  #D- Configure classic post-treatment (Level 1) when necessary (TimeSeries/Seasonal) 
     476  # ------------------------------------------------------------------ 
     477  IGCM_post_Configure 
     478 
     479  #D- 
     480  # ------------------------------------------------------------------ 
     481  #D- Launch remote rebuild or/and post-treatment process if necessary 
     482  # ------------------------------------------------------------------ 
     483  IGCM_post_Submit 
     484 
     485  #D- 
     486  # ------------------------------------------------------------------ 
     487  #D- Save job output 
     488  #D- Manage executable size to save only different binary 
     489  #D- Write in run.card user, system and elapse time 
     490  #D- Check that everything went well ! No ? then we stop. 
     491  #D- Determine next computed period 
     492  # ------------------------------------------------------------------ 
     493  IGCM_config_PeriodEnd 
     494 
     495  echo "Ending iteration ${Period}" 
     496  (( Period = Period + 1 )) 
     497 
     498  # End loop if date end is reached 
     499  if [ ${SimulationLengthInDays} -ge ${ExperienceLengthInDays} ] ; then 
     500    break ; 
     501  fi 
     502 
     503  PeriodContinue=false 
     504  if [ ${Period} -le ${PeriodNb} ]; then 
     505    PeriodContinue=true 
     506  fi 
     507done 
    508508 
    509509#D- 
  • trunk/libIGCM/AA_monitoring

    r770 r785  
    154154 
    155155if [ ${StandAlone} = true ] ; then 
    156     CARD_DIR=${SUBMIT_DIR} 
     156  CARD_DIR=${SUBMIT_DIR} 
    157157else 
    158     CARD_DIR=${RUN_DIR} 
    159     IGCM_sys_Get_Master ${SUBMIT_DIR}/config.card ${RUN_DIR_PATH} 
    160     IGCM_sys_Get_Master ${SUBMIT_DIR}/run.card    ${RUN_DIR_PATH} 
    161     IGCM_sys_Get_Master ${SUBMIT_DIR}/COMP        ${RUN_DIR_PATH} 
    162     IGCM_sys_Get_Master ${SUBMIT_DIR}/POST        ${RUN_DIR_PATH} 
     158  CARD_DIR=${RUN_DIR} 
     159  IGCM_sys_Get_Master ${SUBMIT_DIR}/config.card ${RUN_DIR_PATH} 
     160  IGCM_sys_Get_Master ${SUBMIT_DIR}/run.card    ${RUN_DIR_PATH} 
     161  IGCM_sys_Get_Master ${SUBMIT_DIR}/COMP        ${RUN_DIR_PATH} 
     162  IGCM_sys_Get_Master ${SUBMIT_DIR}/POST        ${RUN_DIR_PATH} 
    163163fi 
    164164 
     
    183183IGCM_sys_TestDirArchive ${R_FIGR}/MONITORING 
    184184if [ $? = 0 ] ; then 
    185     IGCM_debug_Print 1 "Get MONITORING directory from archive" 
    186     IGCM_sys_Get_Dir ${R_FIGR}/MONITORING ${RUN_DIR} 
     185  IGCM_debug_Print 1 "Get MONITORING directory from archive" 
     186  IGCM_sys_Get_Dir ${R_FIGR}/MONITORING ${RUN_DIR} 
    187187else 
    188     IGCM_debug_Print 1 "MONITORING first pass. Nothing has been done before" 
     188  IGCM_debug_Print 1 "MONITORING first pass. Nothing has been done before" 
    189189fi 
    190190# -------------------------------------------- 
     
    194194 
    195195for comp in ${config_ListOfComponents[*]} ; do 
    196     IGCM_debug_Print 1 "################## Component: ${comp} ######################" 
    197     liste_file_monitoring="" 
    198     IGCM_card_DefineArrayFromOption ${CARD_DIR}/config.card ListOfComponents ${comp} 
    199     eval compname=\${config_ListOfComponents_${comp}[0]}                > /dev/null 2>&1 
    200  
    201     PATH_monitoring_file="" 
    202     eval monitoring_file=monitoring01_${compname}_\${RESOL_${comp}}.cfg > /dev/null 2>&1 
    203     if [[ -d ${CARD_DIR}/POST && -f ${CARD_DIR}/POST/monitoring01_${compname}.cfg ]] ; then 
    204         PATH_monitoring_file=${CARD_DIR}/POST/monitoring01_${compname}.cfg 
    205     elif [ -f ${FER_ATLAS}/${monitoring_file} ] ; then 
    206         PATH_monitoring_file=${FER_ATLAS}/${monitoring_file} 
    207     else 
    208         IGCM_debug_Print 1 "No monitoring file found for this component. Was expecting ${monitoring_file}" 
    209         IGCM_debug_Print 1 "Step to next component" 
    210         continue 
    211     fi 
    212     # 
    213     if [ X${PATH_monitoring_file} != X"" ] ; then 
    214         IGCM_debug_Print 1 "Monitoring file used : ${PATH_monitoring_file}" 
    215         IGCM_debug_Print 1 "Determine which files we need." 
    216         . monitoring01 -l2 --listcommand 'IGCM_sys_RshArchive ls' ${PATH_monitoring_file} ${R_SAVE}/${comp}/Analyse/TS_MO 
    217         liste_file_monitoring=$( . monitoring01 -q -l2 --listcommand 'IGCM_sys_RshArchive ls' ${PATH_monitoring_file} ${R_SAVE}/${comp}/Analyse/TS_MO ) 
    218     fi 
    219     # 
    220     if [ ! "X${liste_file_monitoring}" = X ] ; then 
    221         IGCM_sys_Get /l liste_file_monitoring ${RUN_DIR} 
    222         IGCM_debug_Print 1 "monitoring01 -c ${CARD_DIR} -p ${comp} --time -t \"${config_UserChoices_JobName} monitoring\" -o ${RUN_DIR}/MONITORING ${PATH_monitoring_file} ." 
    223         IGCM_debug_Print 1 "monitoring01 starts ................................................." 
    224         monitoring01 -c ${CARD_DIR} -p ${comp} --time -t "${config_UserChoices_JobName} monitoring" -o ${RUN_DIR}/MONITORING ${PATH_monitoring_file} . 
    225     else 
    226         IGCM_debug_Print 1 "No time series detected by this command :" 
    227         IGCM_debug_Print 1 "monitoring01 -l2 --listcommand 'IGCM_sys_RshArchive ls' ${PATH_monitoring_file} ${R_SAVE}/${comp}/Analyse/TS_MO" 
    228         . monitoring01 -l2 --listcommand 'IGCM_sys_RshArchive ls' ${PATH_monitoring_file} ${R_SAVE}/${comp}/Analyse/TS_MO 
    229     fi 
    230     # 
     196  IGCM_debug_Print 1 "################## Component: ${comp} ######################" 
     197  liste_file_monitoring="" 
     198  IGCM_card_DefineArrayFromOption ${CARD_DIR}/config.card ListOfComponents ${comp} 
     199  eval compname=\${config_ListOfComponents_${comp}[0]}                > /dev/null 2>&1 
     200 
     201  PATH_monitoring_file="" 
     202  eval monitoring_file=monitoring01_${compname}_\${RESOL_${comp}}.cfg > /dev/null 2>&1 
     203  if [[ -d ${CARD_DIR}/POST && -f ${CARD_DIR}/POST/monitoring01_${compname}.cfg ]] ; then 
     204    PATH_monitoring_file=${CARD_DIR}/POST/monitoring01_${compname}.cfg 
     205  elif [ -f ${FER_ATLAS}/${monitoring_file} ] ; then 
     206    PATH_monitoring_file=${FER_ATLAS}/${monitoring_file} 
     207  else 
     208    IGCM_debug_Print 1 "No monitoring file found for this component. Was expecting ${monitoring_file}" 
     209    IGCM_debug_Print 1 "Step to next component" 
     210    continue 
     211  fi 
     212  # 
     213  if [ X${PATH_monitoring_file} != X"" ] ; then 
     214    IGCM_debug_Print 1 "Monitoring file used : ${PATH_monitoring_file}" 
     215    IGCM_debug_Print 1 "Determine which files we need." 
     216    . monitoring01 -l2 --listcommand 'IGCM_sys_RshArchive ls' ${PATH_monitoring_file} ${R_SAVE}/${comp}/Analyse/TS_MO 
     217    liste_file_monitoring=$( . monitoring01 -q -l2 --listcommand 'IGCM_sys_RshArchive ls' ${PATH_monitoring_file} ${R_SAVE}/${comp}/Analyse/TS_MO ) 
     218  fi 
     219  # 
     220  if [ ! "X${liste_file_monitoring}" = X ] ; then 
     221    IGCM_sys_Get /l liste_file_monitoring ${RUN_DIR} 
     222    IGCM_debug_Print 1 "monitoring01 -c ${CARD_DIR} -p ${comp} --time -t \"${config_UserChoices_JobName} monitoring\" -o ${RUN_DIR}/MONITORING ${PATH_monitoring_file} ." 
     223    IGCM_debug_Print 1 "monitoring01 starts ................................................." 
     224    monitoring01 -c ${CARD_DIR} -p ${comp} --time -t "${config_UserChoices_JobName} monitoring" -o ${RUN_DIR}/MONITORING ${PATH_monitoring_file} . 
     225  else 
     226    IGCM_debug_Print 1 "No time series detected by this command :" 
     227    IGCM_debug_Print 1 "monitoring01 -l2 --listcommand 'IGCM_sys_RshArchive ls' ${PATH_monitoring_file} ${R_SAVE}/${comp}/Analyse/TS_MO" 
     228    . monitoring01 -l2 --listcommand 'IGCM_sys_RshArchive ls' ${PATH_monitoring_file} ${R_SAVE}/${comp}/Analyse/TS_MO 
     229  fi 
     230  # 
    231231done 
    232232 
  • trunk/libIGCM/AA_move-and-rename

    r731 r785  
    6969function REPLACE_sed 
    7070{ 
    71     IGCM_debug_PushStack "REPLACE_sed" 
    72     typeset RET 
    73      
    74     FILEIN=${1} 
    75     FILEOUT=$( basename ${FILEIN} ) 
    76  
    77     sed -e "s&${R_SAVE}&${NEW_R_SAVE}&g" -e "s/${config_UserChoices_JobName}/${NEW_JobName}/g" \ 
    78         ${1} > ${RUN_DIR_PATH}/${FILEOUT} 
    79     RET=$? 
    80  
    81     touch --reference=${1} ${RUN_DIR_PATH}/${FILEOUT} 
    82     IGCM_sys_Mv ${RUN_DIR_PATH}/${FILEOUT} ${2} 
    83     chmod --reference=${1} ${2}/${FILEOUT} 
    84  
    85     IGCM_sys_Rm -f ${1} 
    86  
    87     IGCM_debug_Print 3 "REPLACE_sed : ${1} ${2}" 
    88      
    89     IGCM_debug_PopStack "REPLACE_sed" 
    90     return $RET 
     71  IGCM_debug_PushStack "REPLACE_sed" 
     72  typeset RET 
     73 
     74  FILEIN=${1} 
     75  FILEOUT=$( basename ${FILEIN} ) 
     76 
     77  sed -e "s&${R_SAVE}&${NEW_R_SAVE}&g" -e "s/${config_UserChoices_JobName}/${NEW_JobName}/g" \ 
     78  ${1} > ${RUN_DIR_PATH}/${FILEOUT} 
     79  RET=$? 
     80 
     81  touch --reference=${1} ${RUN_DIR_PATH}/${FILEOUT} 
     82  IGCM_sys_Mv ${RUN_DIR_PATH}/${FILEOUT} ${2} 
     83  chmod --reference=${1} ${2}/${FILEOUT} 
     84 
     85  IGCM_sys_Rm -f ${1} 
     86 
     87  IGCM_debug_Print 3 "REPLACE_sed : ${1} ${2}" 
     88 
     89  IGCM_debug_PopStack "REPLACE_sed" 
     90  return $RET 
    9191} 
    9292 
    9393function MOVE_and_RENAME_files 
    9494{ 
    95     IGCM_debug_PushStack "MOVE_and_RENAME_files" 
    96  
    97     typeset VAR_files FILE_OUT file i RET 
    98  
    99     VAR_files=${1} 
    100     eval VAR1=\${${VAR_files[0]}} 
    101  
    102     if [ X$( echo ${NEW_R_SAVE} | grep ${config_UserChoices_JobName} ) != X ]; then 
    103         set +A FILE_OUT -- $( eval echo \${${VAR_files}[*]} | sed -e "s&${R_SAVE}&${NEW_R_SAVE}&g" ) 
    104         ((i=0)) 
    105         for file in ${FILE_OUT[@]} ; do 
    106             FILE_OUT[$i]=$( dirname $file )/$( echo $( basename $file ) | sed -e "s/${config_UserChoices_JobName}/${NEW_JobName}/g" ) 
    107             (( i = i + 1 )) 
    108         done 
    109     else 
    110         set +A FILE_OUT -- $( eval echo \${${VAR_files}[*]} | sed -e "s&${R_SAVE}&${NEW_R_SAVE}&g" -e "s/${config_UserChoices_JobName}/${NEW_JobName}/g" ) 
    111     fi 
    112     IGCM_debug_Print 3 "MOVE_and_RENAME_files all : ${VAR1}" 
    113     IGCM_debug_Print 3 "    to     ${FILE_OUT}."  
    114  
    115     (( ifile = 0 )) 
    116     for file_o in ${FILE_OUT[@]} ; do 
    117         eval IGCM_sys_Mv \${${VAR_files}[${ifile}]} ${file_o} 
    118         RET=$? 
    119         (( ifile = ifile + 1 )) 
    120     done     
    121  
    122     IGCM_debug_PopStack "MOVE_and_RENAME_files" 
    123     return $RET 
     95  IGCM_debug_PushStack "MOVE_and_RENAME_files" 
     96 
     97  typeset VAR_files FILE_OUT file i RET 
     98 
     99  VAR_files=${1} 
     100  eval VAR1=\${${VAR_files[0]}} 
     101 
     102  if [ X$( echo ${NEW_R_SAVE} | grep ${config_UserChoices_JobName} ) != X ]; then 
     103    set +A FILE_OUT -- $( eval echo \${${VAR_files}[*]} | sed -e "s&${R_SAVE}&${NEW_R_SAVE}&g" ) 
     104    ((i=0)) 
     105    for file in ${FILE_OUT[@]} ; do 
     106      FILE_OUT[$i]=$( dirname $file )/$( echo $( basename $file ) | sed -e "s/${config_UserChoices_JobName}/${NEW_JobName}/g" ) 
     107      (( i = i + 1 )) 
     108    done 
     109  else 
     110    set +A FILE_OUT -- $( eval echo \${${VAR_files}[*]} | sed -e "s&${R_SAVE}&${NEW_R_SAVE}&g" -e "s/${config_UserChoices_JobName}/${NEW_JobName}/g" ) 
     111  fi 
     112  IGCM_debug_Print 3 "MOVE_and_RENAME_files all : ${VAR1}" 
     113  IGCM_debug_Print 3 "    to     ${FILE_OUT}."  
     114 
     115  (( ifile = 0 )) 
     116  for file_o in ${FILE_OUT[@]} ; do 
     117    eval IGCM_sys_Mv \${${VAR_files}[${ifile}]} ${file_o} 
     118    RET=$? 
     119    (( ifile = ifile + 1 )) 
     120  done     
     121 
     122  IGCM_debug_PopStack "MOVE_and_RENAME_files" 
     123  return $RET 
    124124} 
    125125 
    126126function MY_DODS_Cp 
    127127{ 
    128     IGCM_debug_PushStack "MY_DODS_Cp" 
    129  
    130     typeset old_JobName old_R_DODS 
    131     IGCM_sys_Cd ${NEW_R_SAVE} 
    132     old_JobName=${config_UserChoices_JobName} 
    133     old_R_DODS=${R_DODS} 
    134     old_R_SAVE=${R_SAVE} 
    135  
    136     config_UserChoices_JobName=${NEW_JobName} 
    137     R_DODS=${NEW_R_DODS} 
    138     R_SAVE=${NEW_R_SAVE} 
    139  
    140     IGCM_sys_Dods_Cp ${1} 
    141     IGCM_debug_Print 3 "MY_DODS_Cp : ${config_UserChoices_JobName}/${1}" 
    142     IGCM_sys_Cd ${RUN_DIR_PATH} 
    143  
    144     config_UserChoices_JobName=${old_JobName} 
    145     R_DODS=${old_R_DODS} 
    146     R_SAVE=${old_R_SAVE} 
    147  
    148     IGCM_debug_PopStack "MY_DODS_Cp" 
     128  IGCM_debug_PushStack "MY_DODS_Cp" 
     129 
     130  typeset old_JobName old_R_DODS 
     131  IGCM_sys_Cd ${NEW_R_SAVE} 
     132  old_JobName=${config_UserChoices_JobName} 
     133  old_R_DODS=${R_DODS} 
     134  old_R_SAVE=${R_SAVE} 
     135 
     136  config_UserChoices_JobName=${NEW_JobName} 
     137  R_DODS=${NEW_R_DODS} 
     138  R_SAVE=${NEW_R_SAVE} 
     139 
     140  IGCM_sys_Dods_Cp ${1} 
     141  IGCM_debug_Print 3 "MY_DODS_Cp : ${config_UserChoices_JobName}/${1}" 
     142  IGCM_sys_Cd ${RUN_DIR_PATH} 
     143 
     144  config_UserChoices_JobName=${old_JobName} 
     145  R_DODS=${old_R_DODS} 
     146  R_SAVE=${old_R_SAVE} 
     147 
     148  IGCM_debug_PopStack "MY_DODS_Cp" 
    149149} 
    150150 
    151151function MY_DODS_Rm 
    152152{ 
    153     IGCM_debug_PushStack "MY_DODS_Rm" 
    154     DEBUG_debug=false 
    155  
    156     IGCM_sys_Cd ${R_SAVE} 
    157     IGCM_sys_Dods_Rm ${1} 
    158     IGCM_debug_Print 3 "MY_DODS_Rm : ${config_UserChoices_JobName}/${1}" 
    159     IGCM_sys_Cd ${RUN_DIR_PATH} 
    160  
    161     IGCM_debug_PopStack "MY_DODS_Rm" 
     153  IGCM_debug_PushStack "MY_DODS_Rm" 
     154  DEBUG_debug=false 
     155 
     156  IGCM_sys_Cd ${R_SAVE} 
     157  IGCM_sys_Dods_Rm ${1} 
     158  IGCM_debug_Print 3 "MY_DODS_Rm : ${config_UserChoices_JobName}/${1}" 
     159  IGCM_sys_Cd ${RUN_DIR_PATH} 
     160 
     161  IGCM_debug_PopStack "MY_DODS_Rm" 
    162162} 
    163163######################################################################## 
    164164 
    165165if [ ! -d ${SUBMIT_DIR} ]; then 
    166     IGCM_debug_Print 1 "No ${SUBMIT_DIR}, we stop here" 
    167     exit 1 
     166  IGCM_debug_Print 1 "No ${SUBMIT_DIR}, we stop here" 
     167  exit 1 
    168168fi 
    169169 
    170170# We temporary change ${run_Configuration_PeriodState} to  
    171171if [ -f ${SUBMIT_DIR}/run.card ] ; then 
    172     IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card Configuration PeriodState 
    173     if ( [ ${run_Configuration_PeriodState} != "Start" ] && [ ${run_Configuration_PeriodState} != "Running" ] && [ ${run_Configuration_PeriodState} != "OnQueue" ] && [ ${run_Configuration_PeriodState} != "Continue" ] ) ; then 
    174         old_run_Configuration_PeriodState=${run_Configuration_PeriodState} 
    175         IGCM_debug_PrintVariables 2 old_run_Configuration_PeriodState 
    176         IGCM_card_WriteOption ${SUBMIT_DIR}/run.card Configuration PeriodState "OnQueue" 
    177     fi 
     172  IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card Configuration PeriodState 
     173  if ( [ ${run_Configuration_PeriodState} != "Start" ] && [ ${run_Configuration_PeriodState} != "Running" ] && [ ${run_Configuration_PeriodState} != "OnQueue" ] && [ ${run_Configuration_PeriodState} != "Continue" ] ) ; then 
     174    old_run_Configuration_PeriodState=${run_Configuration_PeriodState} 
     175    IGCM_debug_PrintVariables 2 old_run_Configuration_PeriodState 
     176    IGCM_card_WriteOption ${SUBMIT_DIR}/run.card Configuration PeriodState "OnQueue" 
     177  fi 
    178178fi 
    179179 
     
    181181 
    182182if [ -f ${SUBMIT_DIR}/run.card ] ; then 
    183     IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card Configuration OldPrefix 
    184     IGCM_debug_PrintVariables 2 run_Configuration_OldPrefix 
    185     if [ X${old_run_Configuration_PeriodState} != X"Completed" ] ; then 
    186         DateEnd=$( IGCM_date_ConvertFormatToGregorian $( echo ${run_Configuration_OldPrefix} | awk -F'_' '{print $2}' ) ) 
    187     else 
    188         DateEnd=$( IGCM_date_ConvertFormatToGregorian ${config_UserChoices_DateEnd} ) 
    189     fi 
     183  IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/run.card Configuration OldPrefix 
     184  IGCM_debug_PrintVariables 2 run_Configuration_OldPrefix 
     185  if [ X${old_run_Configuration_PeriodState} != X"Completed" ] ; then 
     186    DateEnd=$( IGCM_date_ConvertFormatToGregorian $( echo ${run_Configuration_OldPrefix} | awk -F'_' '{print $2}' ) ) 
     187  else 
     188    DateEnd=$( IGCM_date_ConvertFormatToGregorian ${config_UserChoices_DateEnd} ) 
     189  fi 
    190190else 
    191     DateEnd=$( IGCM_date_ConvertFormatToGregorian ${config_UserChoices_DateEnd} ) 
     191  DateEnd=$( IGCM_date_ConvertFormatToGregorian ${config_UserChoices_DateEnd} ) 
    192192fi 
    193193 
     
    203203#DEFINE NEW_R_SAVE 
    204204if [ X${config_UserChoices_SpaceName} != X ] ; then 
    205     NEW_SAVE=${config_UserChoices_TagName}/${NEW_SpaceName} 
     205  NEW_SAVE=${config_UserChoices_TagName}/${NEW_SpaceName} 
    206206else 
    207     NEW_SAVE=${config_UserChoices_TagName} 
     207  NEW_SAVE=${config_UserChoices_TagName} 
    208208fi 
    209209if [ X${config_UserChoices_ExperimentName} != X ] ; then 
    210     NEW_SAVE=${NEW_SAVE}/${NEW_ExperimentName} 
     210  NEW_SAVE=${NEW_SAVE}/${NEW_ExperimentName} 
    211211fi 
    212212 
     
    215215IGCM_debug_Print 1 "Move ${R_SAVE} to ${NEW_R_SAVE}" 
    216216if [ -d ${NEW_R_SAVE} ] ; then 
    217     IGCM_debug_Print 1 "ERROR : ${NEW_R_SAVE} directory already exist !" 
    218     IGCM_debug_Print 1 "We won't try to  We stop here." 
    219     exit 1 
     217  IGCM_debug_Print 1 "ERROR : ${NEW_R_SAVE} directory already exist !" 
     218  IGCM_debug_Print 1 "We won't try to  We stop here." 
     219  exit 1 
    220220fi 
    221221IGCM_sys_MkdirArchive ${NEW_R_SAVE} 
     
    231231# Define NEW_REBUILD_DIR 
    232232if [ -d ${REBUILD_DIR} ] ; then 
    233     if [ X${config_Post_RebuildFromArchive} = Xtrue ] ; then 
    234         NEW_REBUILD_DIR=${NEW_R_SAVE}/TMP 
    235         IGCM_sys_MkdirArchive ${NEW_REBUILD_DIR} 
    236     else 
    237         NEW_REBUILD_DIR=${BIG_DIR}/${config_UserChoices_TagName}/${NEW_JobName} 
    238         IGCM_sys_MkdirWork ${NEW_REBUILD_DIR} 
    239     fi 
     233  if [ X${config_Post_RebuildFromArchive} = Xtrue ] ; then 
     234    NEW_REBUILD_DIR=${NEW_R_SAVE}/TMP 
     235    IGCM_sys_MkdirArchive ${NEW_REBUILD_DIR} 
     236  else 
     237    NEW_REBUILD_DIR=${BIG_DIR}/${config_UserChoices_TagName}/${NEW_JobName} 
     238    IGCM_sys_MkdirWork ${NEW_REBUILD_DIR} 
     239  fi 
    240240fi 
    241241 
     
    261261# Change JobName and copy run.card 
    262262if [ -f ${OutinDir}/run.card ] ; then 
    263     sed -e "s/OldPrefix=\ *${config_UserChoices_JobName}/OldPrefix= ${NEW_JobName}/g" \ 
    264         ${OutinDir}/run.card > ${RUN_DIR_PATH}/run.card 
    265     RET=$? 
    266     if [ ${RET} = 0 ] ; then 
    267         IGCM_sys_Mv -f ${RUN_DIR_PATH}/run.card ${OutNEWDir} 
    268         IGCM_sys_Rm -f ${OutinDir}/run.card 
    269     fi 
     263  sed -e "s/OldPrefix=\ *${config_UserChoices_JobName}/OldPrefix= ${NEW_JobName}/g" \ 
     264    ${OutinDir}/run.card > ${RUN_DIR_PATH}/run.card 
     265  RET=$? 
     266  if [ ${RET} = 0 ] ; then 
     267    IGCM_sys_Mv -f ${RUN_DIR_PATH}/run.card ${OutNEWDir} 
     268    IGCM_sys_Rm -f ${OutinDir}/run.card 
     269  fi 
    270270fi 
    271271 
     
    274274set +A listfiles -- $( find ${OutinDir} -type f -name "run.card\.[0-9]*\.[0-9]*" ) 
    275275if [ ${#listfiles[*]} -gt 0 ] ; then 
    276     IGCM_sys_Cp ${listfiles[*]} ${OutNEWDir} 
    277     RET=$? 
    278     if [ ${RET} = 0 ] ; then 
    279         IGCM_sys_Rm -f ${listfiles[*]} 
    280     fi 
     276  IGCM_sys_Cp ${listfiles[*]} ${OutNEWDir} 
     277  RET=$? 
     278  if [ ${RET} = 0 ] ; then 
     279    IGCM_sys_Rm -f ${listfiles[*]} 
     280  fi 
    281281fi 
    282282 
     
    300300IGCM_debug_Print 1 "Move Output" 
    301301for comp in ${config_ListOfComponents[*]} ; do 
    302     IGCM_debug_Print 2 "------------------" 
    303     IGCM_debug_Print 2 "for component ${comp}" 
    304  
    305     unset FREQDIR 
    306     set +A FREQDIR -- $( find ${R_SAVE}/${comp}/Output -type d -not -name "*Output" ) 
    307  
    308     IGCM_debug_Print 3 "List of WriteFrequencies : ${FREQDIR[*]}" 
    309  
    310     for ThisfreqDir in ${FREQDIR[*]} ; do 
    311         freq=$( basename ${ThisfreqDir} ) 
    312         IGCM_debug_Print 2 "${freq}." 
    313  
    314         NEW_freqDir=${NEW_R_SAVE}/${comp}/Output/${freq} 
    315         IGCM_sys_MkdirArchive ${NEW_freqDir} 
    316  
    317         unset listfiles 
    318         set +A listfiles -- $( find ${ThisfreqDir} -type f ) 
    319          
    320         MOVE_and_RENAME_files "listfiles" 
    321     done 
    322  
    323     unset COMPFILES 
    324     set +A COMPFILES -- $( find ${R_SAVE}/${comp}/Output -type f ) 
    325      
    326     if [ ${#COMPFILES[*]} -gt 0 ] ; then 
    327         IGCM_debug_Print 2 "simple Output FILES : ${COMPFILES[*]}." 
    328  
    329         MOVE_and_RENAME_files "COMPFILES" 
    330     fi 
     302  IGCM_debug_Print 2 "------------------" 
     303  IGCM_debug_Print 2 "for component ${comp}" 
     304 
     305  unset FREQDIR 
     306  set +A FREQDIR -- $( find ${R_SAVE}/${comp}/Output -type d -not -name "*Output" ) 
     307 
     308  IGCM_debug_Print 3 "List of WriteFrequencies : ${FREQDIR[*]}" 
     309 
     310  for ThisfreqDir in ${FREQDIR[*]} ; do 
     311    freq=$( basename ${ThisfreqDir} ) 
     312    IGCM_debug_Print 2 "${freq}." 
     313 
     314    NEW_freqDir=${NEW_R_SAVE}/${comp}/Output/${freq} 
     315    IGCM_sys_MkdirArchive ${NEW_freqDir} 
     316 
     317    unset listfiles 
     318    set +A listfiles -- $( find ${ThisfreqDir} -type f ) 
     319 
     320    MOVE_and_RENAME_files "listfiles" 
     321  done 
     322 
     323  unset COMPFILES 
     324  set +A COMPFILES -- $( find ${R_SAVE}/${comp}/Output -type f ) 
     325 
     326  if [ ${#COMPFILES[*]} -gt 0 ] ; then 
     327    IGCM_debug_Print 2 "simple Output FILES : ${COMPFILES[*]}." 
     328 
     329    MOVE_and_RENAME_files "COMPFILES" 
     330  fi 
    331331done 
    332332 
     
    336336IGCM_debug_Print 1 "Move Restart" 
    337337for comp in ${config_ListOfComponents[*]} ; do 
    338     IGCM_debug_Print 2 "------------------" 
    339     IGCM_debug_Print 2 "for component ${comp}" 
    340  
    341     ThisRestDir=${R_SAVE}/${comp}/Restart 
    342     NEW_RestDir=${NEW_R_SAVE}/${comp}/Restart 
    343     IGCM_sys_MkdirArchive ${NEW_RestDir} 
    344  
    345     unset listfiles 
    346     set +A listfiles -- $( find ${ThisRestDir} -type f ) 
    347      
    348     MOVE_and_RENAME_files "listfiles" 
     338  IGCM_debug_Print 2 "------------------" 
     339  IGCM_debug_Print 2 "for component ${comp}" 
     340 
     341  ThisRestDir=${R_SAVE}/${comp}/Restart 
     342  NEW_RestDir=${NEW_R_SAVE}/${comp}/Restart 
     343  IGCM_sys_MkdirArchive ${NEW_RestDir} 
     344 
     345  unset listfiles 
     346  set +A listfiles -- $( find ${ThisRestDir} -type f ) 
     347 
     348  MOVE_and_RENAME_files "listfiles" 
    349349done 
    350350 
     
    355355IGCM_debug_Print 1 "Move Debug" 
    356356for comp in ${config_ListOfComponents[*]} ; do 
    357     IGCM_debug_Print 2 "------------------" 
    358     IGCM_debug_Print 2 "for component ${comp}" 
    359  
    360     ThisDebugDir=${R_SAVE}/${comp}/Debug 
    361     NEW_DebugDir=${NEW_R_SAVE}/${comp}/Debug 
    362     IGCM_sys_MkdirArchive ${NEW_DebugDir} 
    363  
    364     unset listfiles 
    365     set +A listfiles -- $( find ${ThisDebugDir} -type f ) 
    366      
    367     MOVE_and_RENAME_files "listfiles" 
     357  IGCM_debug_Print 2 "------------------" 
     358  IGCM_debug_Print 2 "for component ${comp}" 
     359 
     360  ThisDebugDir=${R_SAVE}/${comp}/Debug 
     361  NEW_DebugDir=${NEW_R_SAVE}/${comp}/Debug 
     362  IGCM_sys_MkdirArchive ${NEW_DebugDir} 
     363 
     364  unset listfiles 
     365  set +A listfiles -- $( find ${ThisDebugDir} -type f ) 
     366 
     367  MOVE_and_RENAME_files "listfiles" 
    368368done 
    369369 
     
    373373IGCM_debug_Print 1 "Move Analyse" 
    374374for comp in ${config_ListOfComponents[*]} ; do 
    375     IGCM_debug_Print 2 "------------------" 
    376     IGCM_debug_Print 2 "for component ${comp}" 
    377      
    378     if [ -d ${R_SAVE}/${comp}/Analyse ] ; then 
    379         unset TSDIR 
    380         set +A TSDIR -- $( find ${R_SAVE}/${comp}/Analyse -name "TS_*" -type d ) 
    381          
    382         for ThisTSDir in ${TSDIR[*]} ; do 
    383             TS_Dir=$( basename ${ThisTSDir} ) 
    384             IGCM_debug_Print 2 "${TS_Dir}." 
    385              
    386             NEW_TSDir=${NEW_R_SAVE}/${comp}/Analyse/${TS_Dir} 
    387             IGCM_sys_MkdirArchive ${NEW_TSDir} 
    388              
    389             MY_DODS_Rm ${comp}/Analyse/${TS_Dir} 
    390              
    391             unset listfiles 
    392             set +A listfiles -- $( find ${ThisTSDir} -type f ) 
    393              
    394             MOVE_and_RENAME_files "listfiles" 
    395              
    396             MY_DODS_Cp ${comp}/Analyse/${TS_Dir} 
    397         done 
    398  
    399         ThisSEDir=${R_SAVE}/${comp}/Analyse/SE 
    400         IGCM_sys_TestDirArchive ${ThisSEDir} 
    401         if [ $? = 0 ] ; then 
    402             IGCM_debug_Print 2 "SE." 
    403             NEW_SEDir=${NEW_R_SAVE}/${comp}/Analyse/SE 
    404             IGCM_sys_MkdirArchive ${NEW_SEDir} 
    405              
    406             MY_DODS_Rm ${comp}/Analyse/SE 
    407              
    408             unset listfiles 
    409             set +A listfiles -- $( find ${ThisSEDir} -type f ) 
    410              
    411             MOVE_and_RENAME_files "listfiles" 
    412              
    413             MY_DODS_Cp ${comp}/Analyse/SE 
    414         fi 
    415  
    416         MY_DODS_Rm ${comp}/Analyse 
    417         MY_DODS_Rm ${comp} 
    418     else 
    419         IGCM_debug_Print 2 "nothing to do without Analyse." 
     375  IGCM_debug_Print 2 "------------------" 
     376  IGCM_debug_Print 2 "for component ${comp}" 
     377 
     378  if [ -d ${R_SAVE}/${comp}/Analyse ] ; then 
     379    unset TSDIR 
     380    set +A TSDIR -- $( find ${R_SAVE}/${comp}/Analyse -name "TS_*" -type d ) 
     381 
     382    for ThisTSDir in ${TSDIR[*]} ; do 
     383      TS_Dir=$( basename ${ThisTSDir} ) 
     384      IGCM_debug_Print 2 "${TS_Dir}." 
     385 
     386      NEW_TSDir=${NEW_R_SAVE}/${comp}/Analyse/${TS_Dir} 
     387      IGCM_sys_MkdirArchive ${NEW_TSDir} 
     388 
     389      MY_DODS_Rm ${comp}/Analyse/${TS_Dir} 
     390 
     391      unset listfiles 
     392      set +A listfiles -- $( find ${ThisTSDir} -type f ) 
     393 
     394      MOVE_and_RENAME_files "listfiles" 
     395 
     396      MY_DODS_Cp ${comp}/Analyse/${TS_Dir} 
     397    done 
     398 
     399    ThisSEDir=${R_SAVE}/${comp}/Analyse/SE 
     400    IGCM_sys_TestDirArchive ${ThisSEDir} 
     401    if [ $? = 0 ] ; then 
     402      IGCM_debug_Print 2 "SE." 
     403      NEW_SEDir=${NEW_R_SAVE}/${comp}/Analyse/SE 
     404      IGCM_sys_MkdirArchive ${NEW_SEDir} 
     405 
     406      MY_DODS_Rm ${comp}/Analyse/SE 
     407 
     408      unset listfiles 
     409      set +A listfiles -- $( find ${ThisSEDir} -type f ) 
     410 
     411      MOVE_and_RENAME_files "listfiles" 
     412 
     413      MY_DODS_Cp ${comp}/Analyse/SE 
    420414    fi 
     415 
     416    MY_DODS_Rm ${comp}/Analyse 
     417    MY_DODS_Rm ${comp} 
     418  else 
     419    IGCM_debug_Print 2 "nothing to do without Analyse." 
     420  fi 
    421421 
    422422done 
     
    428428IGCM_sys_TestDirArchive ${R_SAVE}/${R_ATLAS} 
    429429if [ $? = 0 ] ; then 
    430 #    REPLACE_sed ${NEW_R_SAVE}/${R_ATLAS}/*/*/index.html ${NEW_R_SAVE}/${R_ATLAS} 
    431  
    432     MY_DODS_Rm ${R_ATLAS} 
    433  
    434     IGCM_sys_Mv ${R_SAVE}/${R_ATLAS} ${NEW_R_SAVE}/${R_ATLAS} 
    435  
    436     MY_DODS_Cp ${R_ATLAS} 
     430  # REPLACE_sed ${NEW_R_SAVE}/${R_ATLAS}/*/*/index.html ${NEW_R_SAVE}/${R_ATLAS} 
     431 
     432  MY_DODS_Rm ${R_ATLAS} 
     433 
     434  IGCM_sys_Mv ${R_SAVE}/${R_ATLAS} ${NEW_R_SAVE}/${R_ATLAS} 
     435 
     436  MY_DODS_Cp ${R_ATLAS} 
    437437fi 
    438438 
     
    441441IGCM_sys_TestDirArchive ${R_SAVE}/${R_MONITORING} 
    442442if [ $? = 0 ] ; then 
    443     IGCM_sys_MkdirArchive ${NEW_R_SAVE}/${R_MONITORING} 
    444     REPLACE_sed ${R_SAVE}/${R_MONITORING}/index.html ${NEW_R_SAVE}/${R_MONITORING} 
    445     sed -e "s/OldPrefix=\ *${config_UserChoices_JobName}/OldPrefix= ${NEW_JobName}/g" \ 
    446         ${R_SAVE}/${R_MONITORING}/run.card > ${RUN_DIR_PATH}/run.card 
    447     IGCM_sys_Mv -f ${RUN_DIR_PATH}/run.card ${NEW_R_SAVE}/${R_MONITORING} 
    448     RET=$? 
    449     if [ ${RET} = 0 ] ; then 
    450         IGCM_sys_Rm -f ${R_SAVE}/${R_MONITORING}/run.card 
     443  IGCM_sys_MkdirArchive ${NEW_R_SAVE}/${R_MONITORING} 
     444  REPLACE_sed ${R_SAVE}/${R_MONITORING}/index.html ${NEW_R_SAVE}/${R_MONITORING} 
     445  sed -e "s/OldPrefix=\ *${config_UserChoices_JobName}/OldPrefix= ${NEW_JobName}/g" \ 
     446  ${R_SAVE}/${R_MONITORING}/run.card > ${RUN_DIR_PATH}/run.card 
     447  IGCM_sys_Mv -f ${RUN_DIR_PATH}/run.card ${NEW_R_SAVE}/${R_MONITORING} 
     448  RET=$? 
     449  if [ ${RET} = 0 ] ; then 
     450    IGCM_sys_Rm -f ${R_SAVE}/${R_MONITORING}/run.card 
     451  fi 
     452  REPLACE_sed ${R_SAVE}/${R_MONITORING}/config.card ${NEW_R_SAVE}/${R_MONITORING} 
     453  IGCM_sys_Cp -rp ${R_SAVE}/${R_MONITORING} ${NEW_R_SAVE} 
     454 
     455  MY_DODS_Rm ${R_MONITORING} 
     456  IGCM_sys_Rm -rf ${R_SAVE}/${R_MONITORING} 
     457 
     458  MY_DODS_Cp ${R_MONITORING} 
     459fi 
     460 
     461 
     462#==================================================== 
     463#REBUILD 
     464 
     465if [ -d ${REBUILD_DIR} ] ; then 
     466 
     467  IGCM_debug_Print 1 "Move REBUILD" 
     468  set +A LISTREBUILDS -- $( find ${REBUILD_DIR} -type d  -not -name "*${config_UserChoices_JobName}" -a -not -name "*TMP" ) 
     469 
     470  for ThisREBDir in ${LISTREBUILDS[*]} ; do 
     471    rebdir=$( basename ${ThisREBDir} ) 
     472    IGCM_debug_Print 2 "${rebdir}." 
     473    if [ X${config_Post_RebuildFromArchive} = Xtrue ] ; then 
     474      IGCM_sys_MkdirArchive ${NEW_REBUILD_DIR}/${rebdir} 
     475    else 
     476      IGCM_sys_MkdirWork ${NEW_REBUILD_DIR}/${rebdir} 
    451477    fi 
    452     REPLACE_sed ${R_SAVE}/${R_MONITORING}/config.card ${NEW_R_SAVE}/${R_MONITORING} 
    453     IGCM_sys_Cp -rp ${R_SAVE}/${R_MONITORING} ${NEW_R_SAVE} 
    454  
    455     MY_DODS_Rm ${R_MONITORING} 
    456     IGCM_sys_Rm -rf ${R_SAVE}/${R_MONITORING} 
    457  
    458     MY_DODS_Cp ${R_MONITORING} 
    459 fi 
    460  
    461  
    462 #==================================================== 
    463 #REBUILD 
    464  
    465 if [ -d ${REBUILD_DIR} ] ; then 
    466  
    467     IGCM_debug_Print 1 "Move REBUILD" 
    468     set +A LISTREBUILDS -- $( find ${REBUILD_DIR} -type d  -not -name "*${config_UserChoices_JobName}" -a -not -name "*TMP" ) 
    469  
    470     for ThisREBDir in ${LISTREBUILDS[*]} ; do 
    471         rebdir=$( basename ${ThisREBDir} ) 
    472         IGCM_debug_Print 2 "${rebdir}." 
    473         if [ X${config_Post_RebuildFromArchive} = Xtrue ] ; then 
    474             IGCM_sys_MkdirArchive ${NEW_REBUILD_DIR}/${rebdir} 
    475         else 
    476             IGCM_sys_MkdirWork ${NEW_REBUILD_DIR}/${rebdir} 
    477         fi 
    478         REPLACE_sed ${REBUILD_DIR}/${rebdir}/rebuild.ksh ${NEW_REBUILD_DIR}/${rebdir} 
    479         IGCM_sys_Mv -f ${REBUILD_DIR}/${rebdir}/* ${NEW_REBUILD_DIR}/${rebdir}/ 
    480     done 
     478    REPLACE_sed ${REBUILD_DIR}/${rebdir}/rebuild.ksh ${NEW_REBUILD_DIR}/${rebdir} 
     479    IGCM_sys_Mv -f ${REBUILD_DIR}/${rebdir}/* ${NEW_REBUILD_DIR}/${rebdir}/ 
     480  done 
    481481fi 
    482482 
     
    492492echo -n " Your answer (y/n) : \033[m" 
    493493if [ X${reponse} = X ] ; then 
    494     read reponse 
     494  read reponse 
    495495fi 
    496496case ${reponse} in 
    497              
    498     oui|OUI|o|y|yes|YES) 
    499         echo "OK. It will be erased." 
    500         IGCM_sys_Rm -Rf ${R_SAVE} 
    501         echo "done." 
    502         ;; 
    503     non|NON|n|no|NO) 
    504         echo "Nothing to do !" 
    505         ;; 
     497 
     498  oui|OUI|o|y|yes|YES) 
     499    echo "OK. It will be erased." 
     500    IGCM_sys_Rm -Rf ${R_SAVE} 
     501    echo "done." 
     502    ;; 
     503  non|NON|n|no|NO) 
     504    echo "Nothing to do !" 
     505    ;; 
    506506esac 
    507507 
     
    512512IGCM_debug_Print 1 "edit config.card" 
    513513if [ X${config_UserChoices_SpaceName} != X ] ; then 
    514     IGCM_card_WriteOption ${SUBMIT_DIR}/config.card UserChoices SpaceName ${NEW_SpaceName} 
     514  IGCM_card_WriteOption ${SUBMIT_DIR}/config.card UserChoices SpaceName ${NEW_SpaceName} 
    515515fi 
    516516if [ X${config_UserChoices_ExperimentName} != X ] ; then 
    517     IGCM_card_WriteOption ${SUBMIT_DIR}/config.card UserChoices ExperimentName ${NEW_ExperimentName} 
     517  IGCM_card_WriteOption ${SUBMIT_DIR}/config.card UserChoices ExperimentName ${NEW_ExperimentName} 
    518518fi 
    519519IGCM_card_WriteOption ${SUBMIT_DIR}/config.card UserChoices JobName ${NEW_JobName} 
    520520 
    521521if [ -f ${SUBMIT_DIR}/run.card ] ; then 
    522     IGCM_debug_Print 1 "edit run.card" 
    523     sed -e "s/OldPrefix=\ *${config_UserChoices_JobName}/OldPrefix= ${NEW_JobName}/g" \ 
    524         ${SUBMIT_DIR}/run.card > ${RUN_DIR_PATH}/run.card 
    525     IGCM_sys_Mv -f ${RUN_DIR_PATH}/run.card ${SUBMIT_DIR}/run.card 
    526  
    527     if [ X${old_run_Configuration_PeriodState} != X ] ; then 
    528         IGCM_card_WriteOption ${SUBMIT_DIR}/run.card Configuration PeriodState ${old_run_Configuration_PeriodState} 
    529     fi 
     522  IGCM_debug_Print 1 "edit run.card" 
     523  sed -e "s/OldPrefix=\ *${config_UserChoices_JobName}/OldPrefix= ${NEW_JobName}/g" \ 
     524  ${SUBMIT_DIR}/run.card > ${RUN_DIR_PATH}/run.card 
     525  IGCM_sys_Mv -f ${RUN_DIR_PATH}/run.card ${SUBMIT_DIR}/run.card 
     526 
     527  if [ X${old_run_Configuration_PeriodState} != X ] ; then 
     528    IGCM_card_WriteOption ${SUBMIT_DIR}/run.card Configuration PeriodState ${old_run_Configuration_PeriodState} 
     529  fi 
    530530fi 
    531531 
    532532if [ -f ${SUBMIT_DIR}/Job_${config_UserChoices_JobName} ] ; then 
    533     IGCM_debug_Print 1 "edit Job_${NEW_JobName}" 
    534     sed -e "s&${R_SAVE}&${NEW_R_SAVE}&g" -e "s/${config_UserChoices_JobName}/${NEW_JobName}/g" \ 
    535         ${SUBMIT_DIR}/Job_${config_UserChoices_JobName} > ${SUBMIT_DIR}/Job_${NEW_JobName} 
    536     chmod --reference=${SUBMIT_DIR}/Job_${config_UserChoices_JobName} ${SUBMIT_DIR}/Job_${NEW_JobName} 
    537     ls -la ${SUBMIT_DIR}/Job_${NEW_JobName} 
    538 fi 
     533  IGCM_debug_Print 1 "edit Job_${NEW_JobName}" 
     534  sed -e "s&${R_SAVE}&${NEW_R_SAVE}&g" -e "s/${config_UserChoices_JobName}/${NEW_JobName}/g" \ 
     535  ${SUBMIT_DIR}/Job_${config_UserChoices_JobName} > ${SUBMIT_DIR}/Job_${NEW_JobName} 
     536  chmod --reference=${SUBMIT_DIR}/Job_${config_UserChoices_JobName} ${SUBMIT_DIR}/Job_${NEW_JobName} 
     537  ls -la ${SUBMIT_DIR}/Job_${NEW_JobName} 
     538fi 
  • trunk/libIGCM/AA_pack_output

    r770 r785  
    278278        #mv liste_pack_${myType}_${date_begin_pack}_${date_end_pack}.txt ${STORE_DEBUG} 
    279279        IGCM_debug_Print 1 "Ncrcat and cleaning done for ${dir} and ${myType}" 
    280         echo 
     280        echo 
    281281      done 
    282282    done 
  • trunk/libIGCM/AA_rebuild_fromArchive

    r770 r785  
    185185# 
    186186if [ ${RebuildFromArchive} = true ] ; then 
    187     ListAllRebuildDir=$( IGCM_sys_RshArchive ls -d ${REBUILD_DIR}/REBUILD_* | grep -B $(( ${NbRebuildDir} -1 )) ${LastPeriodForRebuild} ) 
     187  ListAllRebuildDir=$( IGCM_sys_RshArchive ls -d ${REBUILD_DIR}/REBUILD_* | grep -B $(( ${NbRebuildDir} -1 )) ${LastPeriodForRebuild} ) 
    188188else 
    189     ListAllRebuildDir=$( IGCM_sys_RshMaster ls -d ${REBUILD_DIR}/REBUILD_* | grep -B $(( ${NbRebuildDir} -1 )) ${LastPeriodForRebuild} ) 
     189  ListAllRebuildDir=$( IGCM_sys_RshMaster ls -d ${REBUILD_DIR}/REBUILD_* | grep -B $(( ${NbRebuildDir} -1 )) ${LastPeriodForRebuild} ) 
    190190fi 
    191191# 
    192192 
    193193for directory in ${ListAllRebuildDir} ; do 
    194     # 
    195     if [ ${RebuildFromArchive} = true ] ; then 
    196         IGCM_sys_Get_Dir ${directory} ${RUN_DIR} 
    197     else 
    198         IGCM_sys_Get_Master ${directory} ${RUN_DIR} 
    199     fi 
    200     # 
    201     IGCM_sys_Cd ${RUN_DIR}/$( basename ${directory} ) 
    202  
    203     # -------------------------------------------------------------------- 
    204     # Source function include in the REBUILD ksh and rebuild 
    205     # -------------------------------------------------------------------- 
    206     . ${RUN_DIR}/$( basename ${directory} )/rebuild.ksh 
    207     IGCM_FlushRebuild 
    208     # 
    209     IGCM_sys_Cd ${RUN_DIR} 
    210     # Clean Up 
    211     # local clean up 
    212     IGCM_sys_Rm -rf $( basename ${directory} ) 
    213     # remote clean up 
    214     if [ ${RebuildFromArchive} = true ] ; then 
    215         IGCM_sys_RshArchive rm -rf ${directory} 
    216     else 
    217         IGCM_sys_Rm -rf ${directory} 
    218     fi 
     194  # 
     195  if [ ${RebuildFromArchive} = true ] ; then 
     196    IGCM_sys_Get_Dir ${directory} ${RUN_DIR} 
     197  else 
     198    IGCM_sys_Get_Master ${directory} ${RUN_DIR} 
     199  fi 
     200  # 
     201  IGCM_sys_Cd ${RUN_DIR}/$( basename ${directory} ) 
     202 
     203  # -------------------------------------------------------------------- 
     204  # Source function include in the REBUILD ksh and rebuild 
     205  # -------------------------------------------------------------------- 
     206  . ${RUN_DIR}/$( basename ${directory} )/rebuild.ksh 
     207  IGCM_FlushRebuild 
     208  # 
     209  IGCM_sys_Cd ${RUN_DIR} 
     210  # Clean Up 
     211  # local clean up 
     212  IGCM_sys_Rm -rf $( basename ${directory} ) 
     213  # remote clean up 
     214  if [ ${RebuildFromArchive} = true ] ; then 
     215    IGCM_sys_RshArchive rm -rf ${directory} 
     216  else 
     217    IGCM_sys_Rm -rf ${directory} 
     218  fi 
    219219done 
    220220 
  • trunk/libIGCM/AA_rebuild_fromWorkdir

    r770 r785  
    185185# 
    186186if [ ${RebuildFromArchive} = true ] ; then 
    187     ListAllRebuildDir=$( IGCM_sys_RshArchive ls -d ${REBUILD_DIR}/REBUILD_* | grep -B $(( ${NbRebuildDir} -1 )) ${LastPeriodForRebuild} ) 
     187  ListAllRebuildDir=$( IGCM_sys_RshArchive ls -d ${REBUILD_DIR}/REBUILD_* | grep -B $(( ${NbRebuildDir} -1 )) ${LastPeriodForRebuild} ) 
    188188else 
    189     ListAllRebuildDir=$( IGCM_sys_RshMaster ls -d ${REBUILD_DIR}/REBUILD_* | grep -B $(( ${NbRebuildDir} -1 )) ${LastPeriodForRebuild} ) 
     189  ListAllRebuildDir=$( IGCM_sys_RshMaster ls -d ${REBUILD_DIR}/REBUILD_* | grep -B $(( ${NbRebuildDir} -1 )) ${LastPeriodForRebuild} ) 
    190190fi 
    191191# 
    192192 
    193193for directory in ${ListAllRebuildDir} ; do 
    194     # 
    195     if [ ${RebuildFromArchive} = true ] ; then 
    196         IGCM_sys_Get_Dir ${directory} ${RUN_DIR} 
    197     else 
    198         IGCM_sys_Get_Master ${directory} ${RUN_DIR} 
    199     fi 
    200     # 
    201     IGCM_sys_Cd ${RUN_DIR}/$( basename ${directory} ) 
    202  
    203     # -------------------------------------------------------------------- 
    204     # Source function include in the REBUILD ksh and rebuild 
    205     # -------------------------------------------------------------------- 
    206     . ${RUN_DIR}/$( basename ${directory} )/rebuild.ksh 
    207     IGCM_FlushRebuild 
    208     # 
    209     IGCM_sys_Cd ${RUN_DIR} 
    210     # Clean Up 
    211     # local clean up 
    212     IGCM_sys_Rm -rf $( basename ${directory} ) 
    213     # remote clean up 
    214     if [ ${RebuildFromArchive} = true ] ; then 
    215         IGCM_sys_RshArchive rm -rf ${directory} 
    216     else 
    217         IGCM_sys_RshMaster rm -rf ${directory} 
    218     fi 
     194  # 
     195  if [ ${RebuildFromArchive} = true ] ; then 
     196    IGCM_sys_Get_Dir ${directory} ${RUN_DIR} 
     197  else 
     198    IGCM_sys_Get_Master ${directory} ${RUN_DIR} 
     199  fi 
     200  # 
     201  IGCM_sys_Cd ${RUN_DIR}/$( basename ${directory} ) 
     202 
     203  # -------------------------------------------------------------------- 
     204  # Source function include in the REBUILD ksh and rebuild 
     205  # -------------------------------------------------------------------- 
     206  . ${RUN_DIR}/$( basename ${directory} )/rebuild.ksh 
     207  IGCM_FlushRebuild 
     208  # 
     209  IGCM_sys_Cd ${RUN_DIR} 
     210  # Clean Up 
     211  # local clean up 
     212  IGCM_sys_Rm -rf $( basename ${directory} ) 
     213  # remote clean up 
     214  if [ ${RebuildFromArchive} = true ] ; then 
     215    IGCM_sys_RshArchive rm -rf ${directory} 
     216  else 
     217    IGCM_sys_RshMaster rm -rf ${directory} 
     218  fi 
    219219done 
    220220 
  • trunk/libIGCM/libIGCM_debug/libIGCM_debug.ksh

    r775 r785  
    8181      decal=0 
    8282      until [ $decal -eq ${i} ]; do 
    83         printf -- ' ' 
    84         let $(( decal=decal+1 )) 
     83        printf -- ' ' 
     84        let $(( decal=decal+1 )) 
    8585      done 
    8686      echo "$i - ${IGCM_debug_Stack[$(( $IGCM_debug_LenStack-$i-1 ))]}"\ 
    87                 "(${IGCM_debug_StackArgs[$(( $IGCM_debug_LenStack-$i-1 ))]})" 
     87           "(${IGCM_debug_StackArgs[$(( $IGCM_debug_LenStack-$i-1 ))]})" 
    8888      let $((i=i+1)) 
    8989    done 
     
    229229      echo 
    230230      if ( $DEBUG_debug ) ; then 
    231         IGCM_sys_Cp stack ${SUBMIT_DIR}/stack_error 
    232         echo 
     231        IGCM_sys_Cp stack ${SUBMIT_DIR}/stack_error 
     232        echo 
    233233      fi 
    234234      # Mail notification 
  • trunk/libIGCM/libIGCM_sys/libIGCM_sys_curie.ksh

    r782 r785  
    326326#      if [ ${status} -ne 0 ]; 
    327327#      then 
    328 #       sleep $DELAI 
     328#        sleep $DELAI 
    329329#      else 
    330 #       break 
     330#        break 
    331331#      fi 
    332332#      let i=$i+1 
     
    14751475    #echo ${dm_liste[0]} | grep "${R_OUT}" > /dev/null 2>&1 
    14761476    #if [ $? -eq 0 ] ; then 
    1477     #    # Yes  ? then we try to get it in SCRATCHDIR 
    1478     #    set +A file_work $( echo ${dm_liste[*]} | sed -e "s|${R_OUT}|${R_BUF}|g" ) 
    1479     #    if [ -f ${file_work[0]} ] ; then 
    1480     #   IGCM_sys_Cp ${file_work[*]} ${DEST} 
    1481     #   IGCM_debug_PopStack "IGCM_sys_Get" 
    1482     #   return 
    1483     #    fi 
     1477    #  # Yes  ? then we try to get it in SCRATCHDIR 
     1478    #  set +A file_work $( echo ${dm_liste[*]} | sed -e "s|${R_OUT}|${R_BUF}|g" ) 
     1479    #  if [ -f ${file_work[0]} ] ; then 
     1480    #    IGCM_sys_Cp ${file_work[*]} ${DEST} 
     1481    #    IGCM_debug_PopStack "IGCM_sys_Get" 
     1482    #    return 
     1483    #  fi 
    14841484    #fi 
    14851485 
     
    14931493 
    14941494    #if [ ${status} -gt 0 ] ; then 
    1495     #    if [ ! "X$( grep "Lost dmusrcmd connection" out_rsync )" = "X" ] ; then 
    1496     #   cat out_rsync 
    1497     #   echo "WARNING IGCM_sys_Get : Lost dmusrcmd connection : " 
    1498     #   sleep 30 
    1499     #   echo "We try another time" 
    1500     ##  dmget ${dm_liste[*]} > out_rsync 2>&1 
    1501     #   ccc_hsm get ${dm_liste[*]} > out_rsync 2>&1 
    1502     #   status=$? 
    1503     #   if [ ${status} -gt 0 ] ; then 
    1504     #       echo "ERROR IGCM_sys_Get : again demigration error :" 
    1505     #       cat out_rsync 
    1506     #       IGCM_debug_Exit "IGCM_sys_Get" 
    1507     #   fi 
    1508     #    else 
    1509     #   echo "ERROR IGCM_sys_Get : demigration error :" 
    1510     #   cat out_rsync 
    1511     #   IGCM_debug_Exit "IGCM_sys_Get" 
     1495    #  if [ ! "X$( grep "Lost dmusrcmd connection" out_rsync )" = "X" ] ; then 
     1496    #    cat out_rsync 
     1497    #    echo "WARNING IGCM_sys_Get : Lost dmusrcmd connection : " 
     1498    #    sleep 30 
     1499    #    echo "We try another time" 
     1500    ##    dmget ${dm_liste[*]} > out_rsync 2>&1 
     1501    #    ccc_hsm get ${dm_liste[*]} > out_rsync 2>&1 
     1502    #    status=$? 
     1503    #    if [ ${status} -gt 0 ] ; then 
     1504    #      echo "ERROR IGCM_sys_Get : again demigration error :" 
     1505    #      cat out_rsync 
     1506    #      IGCM_debug_Exit "IGCM_sys_Get" 
    15121507    #    fi 
     1508    #  else 
     1509    #    echo "ERROR IGCM_sys_Get : demigration error :" 
     1510    #    cat out_rsync 
     1511    #    IGCM_debug_Exit "IGCM_sys_Get" 
     1512    #  fi 
    15131513    #fi 
    15141514 
     
    17301730    status=$? 
    17311731 
    1732 #       if [ ${status} -gt 0 ] ; then 
    1733 #           echo "IGCM_sys_Dods_Rm : error." 
    1734 #           cat out_dods_rm 
    1735 #           IGCM_debug_Exit "IGCM_sys_Dods_Rm" 
    1736 #       else 
    1737 #           rm out_dods_rm 
    1738 #       fi 
     1732#    if [ ${status} -gt 0 ] ; then 
     1733#      echo "IGCM_sys_Dods_Rm : error." 
     1734#      cat out_dods_rm 
     1735#      IGCM_debug_Exit "IGCM_sys_Dods_Rm" 
     1736#    else 
     1737#      rm out_dods_rm 
     1738#    fi 
    17391739 
    17401740  else 
  • trunk/libIGCM/libIGCM_sys/libIGCM_sys_default.ksh

    r782 r785  
    774774    echo "IGCM_sys_RmRunDir :" $@ 
    775775    echo "Dummy call, let the scheduler do that." 
    776 #       IGCM_sys_Rm -rf ${RUN_DIR} 
     776#    IGCM_sys_Rm -rf ${RUN_DIR} 
    777777  fi 
    778778  IGCM_debug_PopStack "IGCM_sys_RmRunDir" 
  • trunk/libIGCM/libIGCM_sys/libIGCM_sys_iitm.ksh

    r782 r785  
    156156EOF 
    157157    if [ $? -gt 0 ] ; then 
    158         echo "IGCM_sys_RshArchive : erreur." 
    159         IGCM_debug_Exit "IGCM_sys_RshArchive" 
     158      echo "IGCM_sys_RshArchive : erreur." 
     159      IGCM_debug_Exit "IGCM_sys_RshArchive" 
    160160    fi 
    161161    IGCM_debug_PopStack "IGCM_sys_RshMaster" 
     
    173173EOF 
    174174    if [ $? -gt 0 ] ; then 
    175         echo "IGCM_sys_RshArchive : erreur." 
    176         IGCM_debug_Exit "IGCM_sys_RshArchive" 
     175      echo "IGCM_sys_RshArchive : erreur." 
     176      IGCM_debug_Exit "IGCM_sys_RshArchive" 
    177177    fi 
    178178    IGCM_debug_PopStack "IGCM_sys_RshArchive" 
     
    187187    IGCM_debug_PushStack "IGCM_sys_RshPost" $@ 
    188188    if ( $DEBUG_sys ) ; then 
    189         echo "IGCM_sys_RshPost :" $@ 
     189      echo "IGCM_sys_RshPost :" $@ 
    190190    fi 
    191191    /bin/ksh ${@} 
    192192    #rsh ulam exec /bin/ksh ${@} 
    193193    if [ $? -gt 0 ] ; then 
    194         echo "IGCM_sys_RshPost : erreur." 
    195         IGCM_debug_Exit "IGCM_sys_RshPost" 
     194      echo "IGCM_sys_RshPost : erreur." 
     195      IGCM_debug_Exit "IGCM_sys_RshPost" 
    196196    fi 
    197197    IGCM_debug_PopStack "IGCM_sys_RshPost" 
     
    206206    IGCM_debug_PushStack "IGCM_sys_SendMail" $@ 
    207207    if ( $DEBUG_sys ) ; then 
    208         echo "IGCM_sys_SendMail :" $@ 
     208      echo "IGCM_sys_SendMail :" $@ 
    209209    fi 
    210210 
    211211    if ( ${ExitFlag} ) ; then 
    212         status=failed 
     212      status=failed 
    213213    else 
    214         status=completed 
     214      status=completed 
    215215    fi 
    216216    cat  << END_MAIL > job_end.mail 
     
    225225 
    226226    if [ ! -z ${config_UserChoices_MailName} ] ; then 
    227         mailx -s "${config_UserChoices_JobName} ${status}" ${config_UserChoices_MailName} <  job_end.mail 
     227      mailx -s "${config_UserChoices_JobName} ${status}" ${config_UserChoices_MailName} <  job_end.mail 
    228228    elif [ -f ~/.forward ] ; then 
    229         mailx -s "${config_UserChoices_JobName} ${status}" $( cat ~/.forward ) < job_end.mail 
     229      mailx -s "${config_UserChoices_JobName} ${status}" $( cat ~/.forward ) < job_end.mail 
    230230    else 
    231         mailx -s "${config_UserChoices_JobName} ${status}" ${USER} < job_end.mail 
     231      mailx -s "${config_UserChoices_JobName} ${status}" ${USER} < job_end.mail 
    232232    fi 
    233233 
    234234    if [ $? -gt 0 ] ; then 
    235         echo "IGCM_sys_SendMail : erreur." 
    236         IGCM_debug_Exit "IGCM_sys_SendMail" 
     235      echo "IGCM_sys_SendMail : erreur." 
     236      IGCM_debug_Exit "IGCM_sys_SendMail" 
    237237    fi 
    238238    IGCM_debug_PopStack "IGCM_sys_SendMail" 
Note: See TracChangeset for help on using the changeset viewer.