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