Ignore:
Timestamp:
02/22/13 16:01:21 (11 years ago)
Author:
sdipsl
Message:
  • Files waiting for rebuild are stored within the relevant simulation tree. see #87

--> /IGCM_OUT/TagName/SpaceName/ExperiementName/JobName/REBUILD

  • Using only 1 proc and having RebuildFrequency? != NONE won't be an issue. see #88
  • Homogenize RUN_DIR PATH during computing and post-processing. see #92
  • Save text files before restarts and outputs. (more chance to have a clue of what went wrong) see #103
  • Remove useless variable BIG_DIR
  • Cosmectics
File:
1 edited

Legend:

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

    r801 r804  
    7979 
    8080    eval R_OUT_${comp}_R=\${R_OUT_${comp}}/Restart 
    81     eval IGCM_sys_MkdirArchive \${R_OUT_${comp}_R} 
     81    [ ${config_Post_PackFrequency} = NONE ] && eval IGCM_sys_MkdirArchive \${R_OUT_${comp}_R} 
    8282 
    8383    eval R_OUT_${comp}_D=\${R_OUT_${comp}}/Debug 
    84     eval IGCM_sys_MkdirArchive \${R_OUT_${comp}_D} 
     84    [ ${config_Post_PackFrequency} = NONE ] && eval IGCM_sys_MkdirArchive \${R_OUT_${comp}_D} 
    8585 
    8686    eval R_OUT_${comp}_O_I=\${R_OUT_${comp}_O}/INS 
     
    9191 
    9292    # Define BUFFERED Dirs 
    93     eval R_BUF_${comp}=${R_BUFR}/${comp} 
    94     eval IGCM_sys_Mkdir \${R_BUF_${comp}} 
    95  
    96     eval R_BUF_${comp}_O=\${R_BUF_${comp}}/Output 
    97     eval IGCM_sys_Mkdir \${R_BUF_${comp}_O} 
    98  
    99     eval R_BUF_${comp}_R=\${R_BUF_${comp}}/Restart 
    100     eval IGCM_sys_Mkdir \${R_BUF_${comp}_R} 
    101  
    102     eval R_BUF_${comp}_D=\${R_BUF_${comp}}/Debug 
    103     eval IGCM_sys_Mkdir \${R_BUF_${comp}_D} 
    104  
    105     eval R_BUF_${comp}_O_I=\${R_BUF_${comp}_O}/INS 
    106     eval R_BUF_${comp}_O_H=\${R_BUF_${comp}_O}/HF 
    107     eval R_BUF_${comp}_O_D=\${R_BUF_${comp}_O}/DA 
    108     eval R_BUF_${comp}_O_M=\${R_BUF_${comp}_O}/MO 
    109     eval R_BUF_${comp}_O_Y=\${R_BUF_${comp}_O}/YE 
     93    if [ ! ${config_Post_PackFrequency} = NONE ] ; then 
     94      eval R_BUF_${comp}=${R_BUFR}/${comp} 
     95      eval IGCM_sys_Mkdir \${R_BUF_${comp}} 
     96 
     97      eval R_BUF_${comp}_O=\${R_BUF_${comp}}/Output 
     98      eval IGCM_sys_Mkdir \${R_BUF_${comp}_O} 
     99 
     100      eval R_BUF_${comp}_R=\${R_BUF_${comp}}/Restart 
     101      eval IGCM_sys_Mkdir \${R_BUF_${comp}_R} 
     102 
     103      eval R_BUF_${comp}_D=\${R_BUF_${comp}}/Debug 
     104      eval IGCM_sys_Mkdir \${R_BUF_${comp}_D} 
     105 
     106      eval R_BUF_${comp}_O_I=\${R_BUF_${comp}_O}/INS 
     107      eval R_BUF_${comp}_O_H=\${R_BUF_${comp}_O}/HF 
     108      eval R_BUF_${comp}_O_D=\${R_BUF_${comp}_O}/DA 
     109      eval R_BUF_${comp}_O_M=\${R_BUF_${comp}_O}/MO 
     110      eval R_BUF_${comp}_O_Y=\${R_BUF_${comp}_O}/YE 
     111    fi 
    110112 
    111113    # Read UserChoices section of component card 
     
    113115    IGCM_card_DefineArrayFromSection ${card} UserChoices 
    114116    eval first_option=\${${compname}_UserChoices[0]} > /dev/null 2>&1 
     117 
    115118    # If section is not empty we define corresponding variables 
    116119    if [ X${first_option} != X"Error:" ] ; then 
     
    991994    card=${SUBMIT_DIR}/COMP/${compname}.card 
    992995 
     996    # Save Output Text files of models 
     997    #--------------------------------- 
     998    IGCM_debug_Print 2 "Save Output Text files for ${comp} : ${compname} component." 
     999    IGCM_card_DefineArrayFromOption ${card} OutputText List 
     1000    ListTextName=${compname}_OutputText_List 
     1001 
     1002    eval TextName0=\${${ListTextName}[0]} > /dev/null 2>&1 
     1003    if [ X${TextName0} != X${NULL_STR} ] ; then 
     1004      eval NbFiles=\${#${ListTextName}[@]} > /dev/null 2>&1 
     1005 
     1006      (( i=0 )) 
     1007      until [ $i -eq $NbFiles ]; do 
     1008        eval file_in=\${${ListTextName}[$i]} > /dev/null 2>&1 
     1009        eval file_out=${PREFIX}_${file_in} 
     1010 
     1011        (( i=i+1 )) 
     1012 
     1013        unset list_file 
     1014        #set +A list_file -- $( ls ${file_in}* | sort 2>/dev/null ) 
     1015        # result for a a1 a10 a2 with file_in=a a a1 a2 a10 
     1016        set +A list_file -- $( [ -f ${file_in} ] && ls ${file_in} ; for i in $(ls ${file_in}* 2>/dev/null | sed "s/${file_in}//" | sort -n) ; do ls ${file_in}$i ; done ) 
     1017        nlist_file=${#list_file[@]} 
     1018        if [ ${nlist_file} -gt 1 ] ; then 
     1019          if ( ${compactoutputs} ) ; then 
     1020            IGCM_debug_Print 2 "Parallelism of Text Output with ${nlist_file} files." 
     1021            IGCM_debug_Print 2 "Compact files in ${file_out} : " ${list_file[*]} 
     1022            echo ${list_file[*]} > ${file_out} 
     1023            echo " 
     1024" >> ${file_out} 
     1025 
     1026            (( i_ = 0 )) 
     1027            for file in ${list_file[@]} 
     1028            do 
     1029              echo "_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ " >> ${file_out} 
     1030              echo "| " ${i_} " " ${file} >> ${file_out} 
     1031              echo "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - " >> ${file_out} 
     1032              cat ${file} | sed "s/\(.*\)/${i_}\1/" ${file} >> ${file_out} 
     1033              echo " 
     1034" >> ${file_out} 
     1035              eval FileToBeDeleted[${#FileToBeDeleted[@]}]="${file}" > /dev/null 2>&1 
     1036                  (( i_ = i_ + 1 )) 
     1037            done 
     1038            if [ X${Pack} = Xtrue ] ; then 
     1039              eval IGCM_sys_PutBuffer_Out ${file_out} \${R_BUF_${comp}_D}/${file_out} 
     1040            else 
     1041              eval IGCM_sys_Put_Out ${file_out} \${R_OUT_${comp}_D}/${file_out} 
     1042            fi 
     1043            eval FileToBeDeleted[${#FileToBeDeleted[@]}]="${file_out}" > /dev/null 2>&1 
     1044 
     1045            if ( ${ExecutionFail} ) ; then 
     1046              IGCM_sys_Cp ${file_out} ${SUBMIT_DIR}/Debug 
     1047            fi 
     1048          else 
     1049            for file in ${list_file[@]} 
     1050            do 
     1051              if [ X${Pack} = Xtrue ] ; then 
     1052                eval IGCM_sys_PutBuffer_Out ${file} \${R_BUF_${comp}_D}/${PREFIX}_${file} 
     1053              else 
     1054                eval IGCM_sys_Put_Out ${file} \${R_OUT_${comp}_D}/${PREFIX}_${file} 
     1055              fi 
     1056              eval FileToBeDeleted[${#FileToBeDeleted[@]}]="${file}" > /dev/null 2>&1 
     1057 
     1058              if ( ${ExecutionFail} ) ; then 
     1059                IGCM_sys_Cp ${file} ${SUBMIT_DIR}/Debug/${PREFIX}_${file} 
     1060              fi 
     1061            done 
     1062          fi 
     1063        else 
     1064          if ( [ -f ${file_in}_0000 ] || [ -f ${file_in}0 ] ) ; then 
     1065            eval IGCM_sys_Mv ${file_in}* ${file_in} 
     1066          fi 
     1067          if [ X${Pack} = Xtrue ] ; then 
     1068            eval IGCM_sys_PutBuffer_Out ${file_in} \${R_BUF_${comp}_D}/${file_out} 
     1069          else 
     1070            eval IGCM_sys_Put_Out ${file_in} \${R_OUT_${comp}_D}/${file_out} 
     1071          fi 
     1072          eval FileToBeDeleted[${#FileToBeDeleted[@]}]="${file_in}" > /dev/null 2>&1 
     1073 
     1074          if ( ${ExecutionFail} ) ; then 
     1075            IGCM_sys_Cp ${file_in} ${SUBMIT_DIR}/Debug/${file_out} 
     1076          fi 
     1077        fi 
     1078      done 
     1079    fi 
     1080 
    9931081    # Save Restarts files 
    9941082    #-------------------- 
     
    10961184        # 
    10971185        if ( [ ${nb_rebuild_file} -eq 1 ] && [ -f ${generic_file_name}_0000.nc ] ) ; then 
    1098           IGCM_debug_Print 2 "Parallelism with 1 process. Rebuilding ${file_in} not needed" 
     1186          IGCM_debug_Print 2 "Parallelism with 1 file. Rebuilding ${file_in} not needed" 
    10991187          IGCM_sys_Mv ${generic_file_name}_0000.nc ${file_in} 
    11001188        elif [ ${nb_rebuild_file} -gt 1 ] ; then 
    1101           IGCM_debug_Print 2 "Parallelism detected rebuilding ${file_in} is needed" 
     1189          IGCM_debug_Print 2 "Parallelism detected and rebuilding ${file_in} is needed" 
    11021190          if [ X${AsynchronousRebuild} = Xfalse ] ; then 
    11031191            IGCM_debug_Print 2 "Rebuilding ${file_in} online" 
     
    12191307      done 
    12201308    fi 
    1221  
    1222     # Save Output Text files of models 
    1223     #--------------------------------- 
    1224     IGCM_debug_Print 2 "Save Output Text files for ${comp} : ${compname} component." 
    1225     IGCM_card_DefineArrayFromOption ${card} OutputText List 
    1226     ListTextName=${compname}_OutputText_List 
    1227  
    1228     eval TextName0=\${${ListTextName}[0]} > /dev/null 2>&1 
    1229     if [ X${TextName0} != X${NULL_STR} ] ; then 
    1230       eval NbFiles=\${#${ListTextName}[@]} > /dev/null 2>&1 
    1231  
    1232       (( i=0 )) 
    1233       until [ $i -eq $NbFiles ]; do 
    1234         eval file_in=\${${ListTextName}[$i]} > /dev/null 2>&1 
    1235         eval file_out=${PREFIX}_${file_in} 
    1236  
    1237         (( i=i+1 )) 
    1238  
    1239         unset list_file 
    1240         #set +A list_file -- $( ls ${file_in}* | sort 2>/dev/null ) 
    1241         # result for a a1 a10 a2 with file_in=a a a1 a2 a10 
    1242         set +A list_file -- $( [ -f ${file_in} ] && ls ${file_in} ; for i in $(ls ${file_in}* 2>/dev/null | sed "s/${file_in}//" | sort -n) ; do ls ${file_in}$i ; done ) 
    1243         nlist_file=${#list_file[@]} 
    1244         if [ ${nlist_file} -gt 1 ] ; then 
    1245           if ( ${compactoutputs} ) ; then 
    1246             IGCM_debug_Print 2 "Parallelism of Text Output with ${nlist_file} files." 
    1247             IGCM_debug_Print 2 "Compact files in ${file_out} : " ${list_file[*]} 
    1248             echo ${list_file[*]} > ${file_out} 
    1249             echo " 
    1250 " >> ${file_out} 
    1251  
    1252             (( i_ = 0 )) 
    1253             for file in ${list_file[@]} 
    1254             do 
    1255               echo "_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ " >> ${file_out} 
    1256               echo "| " ${i_} " " ${file} >> ${file_out} 
    1257               echo "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - " >> ${file_out} 
    1258               cat ${file} | sed "s/\(.*\)/${i_}\1/" ${file} >> ${file_out} 
    1259               echo " 
    1260 " >> ${file_out} 
    1261               eval FileToBeDeleted[${#FileToBeDeleted[@]}]="${file}" > /dev/null 2>&1 
    1262                   (( i_ = i_ + 1 )) 
    1263             done 
    1264             if [ X${Pack} = Xtrue ] ; then 
    1265               eval IGCM_sys_PutBuffer_Out ${file_out} \${R_BUF_${comp}_D}/${file_out} 
    1266             else 
    1267               eval IGCM_sys_Put_Out ${file_out} \${R_OUT_${comp}_D}/${file_out} 
    1268             fi 
    1269             eval FileToBeDeleted[${#FileToBeDeleted[@]}]="${file_out}" > /dev/null 2>&1 
    1270  
    1271             if ( ${ExecutionFail} ) ; then 
    1272               IGCM_sys_Cp ${file_out} ${SUBMIT_DIR}/Debug 
    1273             fi 
    1274           else 
    1275             for file in ${list_file[@]} 
    1276             do 
    1277               if [ X${Pack} = Xtrue ] ; then 
    1278                 eval IGCM_sys_PutBuffer_Out ${file} \${R_BUF_${comp}_D}/${PREFIX}_${file} 
    1279               else 
    1280                 eval IGCM_sys_Put_Out ${file} \${R_OUT_${comp}_D}/${PREFIX}_${file} 
    1281               fi 
    1282               eval FileToBeDeleted[${#FileToBeDeleted[@]}]="${file}" > /dev/null 2>&1 
    1283  
    1284               if ( ${ExecutionFail} ) ; then 
    1285                 IGCM_sys_Cp ${file} ${SUBMIT_DIR}/Debug/${PREFIX}_${file} 
    1286               fi 
    1287             done 
    1288           fi 
    1289         else 
    1290           if ( [ -f ${file_in}_0000 ] || [ -f ${file_in}0 ] ) ; then 
    1291             eval IGCM_sys_Mv ${file_in}* ${file_in} 
    1292           fi 
    1293           if [ X${Pack} = Xtrue ] ; then 
    1294             eval IGCM_sys_PutBuffer_Out ${file_in} \${R_BUF_${comp}_D}/${file_out} 
    1295           else 
    1296             eval IGCM_sys_Put_Out ${file_in} \${R_OUT_${comp}_D}/${file_out} 
    1297           fi 
    1298           eval FileToBeDeleted[${#FileToBeDeleted[@]}]="${file_in}" > /dev/null 2>&1 
    1299  
    1300           if ( ${ExecutionFail} ) ; then 
    1301             IGCM_sys_Cp ${file_in} ${SUBMIT_DIR}/Debug/${file_out} 
    1302           fi 
    1303         fi 
    1304       done 
    1305     fi 
    13061309    echo 
    13071310  done 
Note: See TracChangeset for help on using the changeset viewer.