Changeset 1007
- Timestamp:
- 07/02/14 18:24:56 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/libIGCM/libIGCM_ensemble/libIGCM_ensemble.ksh
r1001 r1007 17 17 IGCM_debug_PushStack "IGCM_ensemble_Init" 18 18 19 IGCM_card_DefineVariableFromOption ${F ileName} Ens_PERTURB active20 IGCM_card_DefineVariableFromOption ${F ileName} Ens_DATE active21 IGCM_card_DefineVariableFromOption ${F ileName} Ens_PARAMETRIC active22 19 IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_PERTURB active 20 IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_DATE active 21 IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_PARAMETRIC active 22 23 23 IGCM_debug_Print 1 "Ens_PERTURB ACTIVE = ${ensemble_Ens_PERTURB_active}" 24 24 IGCM_debug_Print 1 "Ens_DATE ACTIVE = ${ensemble_Ens_DATE_active}" 25 25 IGCM_debug_Print 1 "Ens_PARAMETRIC ACTIVE = ${ensemble_Ens_PARAMETRIC_active}" 26 26 echo "" 27 27 28 28 IGCM_debug_PopStack "IGCM_ensemble_Init" 29 29 } … … 33 33 { 34 34 IGCM_debug_PushStack "IGCM_ensemble_SetAlpha" 35 35 36 36 set -A Alpha A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 37 37 set -A AlphaMonth a b c d e f g h i j k l … … 54 54 IGCM_sys_Cp ${SUBMIT_DIR}/Qsub.* ${RUN_DIR} 55 55 fi 56 56 if [ -f ${SUBMIT_DIR}/Qclean.* ]; then 57 IGCM_sys_Cp ${SUBMIT_DIR}/Qclean.* ${RUN_DIR} 58 fi 59 57 60 # Useful? 58 61 #if [ -f ${SUBMIT_DIR}/CreatedDir.txt ] ; then … … 60 63 #fi 61 64 # Useful? 62 #if [ -f ${SUBMIT_DIR}/Qsub. txt] ; then63 # IGCM_sys_Cp ${SUBMIT_DIR}/Qsub. txt${RUN_DIR}65 #if [ -f ${SUBMIT_DIR}/Qsub.sh ] ; then 66 # IGCM_sys_Cp ${SUBMIT_DIR}/Qsub.sh ${RUN_DIR} 64 67 #fi 65 66 IGCM_card_DefineVariableFromOption ${FileName} Ens_PERTURB NAME 67 IGCM_card_DefineVariableFromOption ${FileName} Ens_PERTURB BEGIN_INIT 68 IGCM_card_DefineVariableFromOption ${FileName} Ens_PERTURB END_INIT 69 IGCM_card_DefineVariableFromOption ${FileName} Ens_PERTURB PERIODICITY 70 IGCM_card_DefineArrayFromOption ${FileName} Ens_PERTURB NONPERIODIC 71 IGCM_card_DefineVariableFromOption ${FileName} Ens_PERTURB LENGTH 72 IGCM_card_DefineArrayFromOption ${FileName} Ens_PERTURB LENGTH_NONPERIODIC 73 IGCM_card_DefineVariableFromOption ${FileName} Ens_PERTURB MEMBER 74 IGCM_card_DefineArrayFromOption ${FileName} Ens_PERTURB PERTURB_BIN 75 IGCM_card_DefineVariableFromOption ${FileName} Ens_PERTURB INITFROM 76 IGCM_card_DefineVariableFromOption ${FileName} Ens_PERTURB INITPATH 68 IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_PERTURB NAME 69 IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_PERTURB BEGIN_INIT 70 IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_PERTURB END_INIT 71 IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_PERTURB PERIODICITY 72 IGCM_card_DefineArrayFromOption ${F_CFG_ENS} Ens_PERTURB NONPERIODIC 73 IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_PERTURB LENGTH 74 IGCM_card_DefineArrayFromOption ${F_CFG_ENS} Ens_PERTURB LENGTH_NONPERIODIC 75 IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_PERTURB MEMBER 76 IGCM_card_DefineArrayFromOption ${F_CFG_ENS} Ens_PERTURB PERTURB_BIN 77 IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_PERTURB INITFROM 78 IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_PERTURB INITPATH 77 79 IGCM_card_DefineVariableFromOption config.card UserChoices JobName 78 80 IGCM_card_DefineVariableFromOption config.card UserChoices TagName … … 98 100 IGCM_debug_Print 1 "CalendarType = ${config_UserChoices_CalendarType}" 99 101 IGCM_debug_Print 1 "ListOfComponents = ${config_ListOfComponents[*]}" 100 102 101 103 PerturbExe=${ensemble_Ens_PERTURB_PERTURB_BIN[0]} 102 104 PerturbComp=${ensemble_Ens_PERTURB_PERTURB_BIN[1]} … … 110 112 IGCM_debug_Print 1 "PerturbVar = ${PerturbVar}" 111 113 IGCM_debug_Print 1 "PerturbAmp = ${PerturbAmp}" 112 114 113 115 IGCM_ensemble_SetAlpha ${ensemble_Ens_PERTURB_MEMBER} 114 116 115 117 # A few checks Period case: 116 118 … … 252 254 253 255 # Dump command to be lauched 254 echo "cd ${StartDir}/${MemberDir}/ ;" >> ${RUN_DIR}/Qsub.${StartDir}.txt 255 echo "${SUBMIT} ${JobName} ; cd -" >> ${RUN_DIR}/Qsub.${StartDir}.txt 256 257 # * Update files : config.card, Job_, COMP/comp.card 258 IGCM_ensemble_CastFilesUpdate ${DateBegin} ${DateEnd} ${RestartDate} 259 260 # * Apply noise on restart file 261 IGCM_ensemble_CastPerturbFile 256 echo "cd ${StartDir}/${MemberDir}/ ;" >> ${RUN_DIR}/Qsub.${StartDir}.sh 257 echo "${SUBMIT} ${JobName} ; cd -" >> ${RUN_DIR}/Qsub.${StartDir}.sh 258 259 echo "cd ${StartDir}/${MemberDir}/ ;" >> ${RUN_DIR}/Qclean.month.${StartDir}.sh 260 echo "${libIGCM}/clean_month.job ; cd -" >> ${RUN_DIR}/Qclean.month.${StartDir}.sh 261 262 echo "cd ${StartDir}/${MemberDir}/ ;" >> ${RUN_DIR}/Qclean.year.${StartDir}.sh 263 echo "${libIGCM}/clean_year.job ; cd -" >> ${RUN_DIR}/Qclean.year.${StartDir}.sh 264 265 # * Update files : config.card, Job_, COMP/comp.card 266 IGCM_ensemble_CastFilesUpdate ${DateBegin} ${DateEnd} ${RestartDate} 267 268 # * Apply noise on restart file 269 IGCM_ensemble_CastPerturbFile 262 270 fi 263 271 264 272 (( i = i + 1 )) 265 273 done 266 274 267 275 # Done. Save ${StartDir} submission text file 268 IGCM_sys_Cp ${RUN_DIR}/Qsub.${StartDir}.txt ${SUBMIT_DIR} 276 IGCM_sys_Cp ${RUN_DIR}/Qsub.${StartDir}.sh ${SUBMIT_DIR} 277 IGCM_sys_Cp ${RUN_DIR}/Qclean.month.${StartDir}.sh ${SUBMIT_DIR} 278 IGCM_sys_Cp ${RUN_DIR}/Qclean.year.${StartDir}.sh ${SUBMIT_DIR} 269 279 270 280 # - Next DateBegin … … 362 372 363 373 # Dump command to be lauched 364 echo "cd ${StartDir}/${MemberDir}/ ;" >> Qsub.${StartDir}.txt 365 echo "${SUBMIT} ${JobName} ; cd -" >> Qsub.${StartDir}.txt 366 367 # * Update files : config.card, Job_, COMP/comp.card 368 echo "${PeriodDateEnd} ? ${DateEnd}" 369 if [ ${PeriodDateEnd} -gt ${DateEnd} ] ; then 374 echo "cd ${StartDir}/${MemberDir}/ ;" >> Qsub.${StartDir}.sh 375 echo "${SUBMIT} ${JobName} ; cd -" >> Qsub.${StartDir}.sh 376 377 echo "cd ${StartDir}/${MemberDir}/ ;" >> ${RUN_DIR}/Qclean.month.${StartDir}.sh 378 echo "${libIGCM}/clean_month.job ; cd -" >> ${RUN_DIR}/Qclean.month.${StartDir}.sh 379 380 echo "cd ${StartDir}/${MemberDir}/ ;" >> ${RUN_DIR}/Qclean.year.${StartDir}.sh 381 echo "${libIGCM}/clean_year.job ; cd -" >> ${RUN_DIR}/Qclean.year.${StartDir}.sh 382 383 # * Update files : config.card, Job_, COMP/comp.card 384 echo "${PeriodDateEnd} ? ${DateEnd}" 385 if [ ${PeriodDateEnd} -gt ${DateEnd} ] ; then 370 386 DateEnd=${PeriodDateEnd} 371 372 373 374 375 387 fi 388 IGCM_ensemble_CastFilesUpdate ${DateBegin} ${DateEnd} ${RestartDate} 389 390 # * Apply noise on restart file 391 IGCM_ensemble_CastPerturbFile 376 392 fi 377 393 378 394 (( i = i + 1 )) 379 395 done 380 396 381 397 # Done. Save ${StartDir} submission text file 382 IGCM_sys_Cp ${RUN_DIR}/Qsub.${StartDir}.txt ${SUBMIT_DIR} 398 IGCM_sys_Cp ${RUN_DIR}/Qsub.${StartDir}.sh ${SUBMIT_DIR} 399 IGCM_sys_Cp ${RUN_DIR}/Qclean.month.${StartDir}.sh ${SUBMIT_DIR} 400 IGCM_sys_Cp ${RUN_DIR}/Qclean.year.${StartDir}.sh ${SUBMIT_DIR} 383 401 384 402 (( DateNum = DateNum + 1 )) … … 637 655 IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card ${PerturbComp} RestartPath ${RestartDir}/ 638 656 IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card Ensemble EnsembleType "Ens_PERTURB" 639 657 640 658 IGCM_debug_PopStack "IGCM_ensemble_CastPerturbFile" 641 659 } … … 655 673 IGCM_sys_Cp ${SUBMIT_DIR}/Qsub.* ${RUN_DIR} 656 674 fi 657 658 IGCM_card_DefineVariableFromOption ${FileName} Ens_DATE active 659 IGCM_card_DefineVariableFromOption ${FileName} Ens_DATE NAME 660 IGCM_card_DefineVariableFromOption ${FileName} Ens_DATE BEGIN_INIT 661 IGCM_card_DefineVariableFromOption ${FileName} Ens_DATE BEGIN_RESTART 662 IGCM_card_DefineVariableFromOption ${FileName} Ens_DATE END_INIT 663 IGCM_card_DefineVariableFromOption ${FileName} Ens_DATE PERIODICITY 664 IGCM_card_DefineArrayFromOption ${FileName} Ens_DATE NONPERIODIC 665 IGCM_card_DefineArrayFromOption ${FileName} Ens_DATE RESTART_NONPERIODIC 666 IGCM_card_DefineVariableFromOption ${FileName} Ens_DATE LENGTH 667 IGCM_card_DefineArrayFromOption ${FileName} Ens_DATE LENGTH_NONPERIODIC 668 IGCM_card_DefineVariableFromOption ${FileName} Ens_DATE INITFROM 669 IGCM_card_DefineVariableFromOption ${FileName} Ens_DATE INITPATH 675 if [ -f ${SUBMIT_DIR}/Qclean.* ]; then 676 IGCM_sys_Cp ${SUBMIT_DIR}/Qclean.* ${RUN_DIR} 677 fi 678 679 IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_DATE active 680 IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_DATE NAME 681 IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_DATE BEGIN_INIT 682 IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_DATE BEGIN_RESTART 683 IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_DATE END_INIT 684 IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_DATE PERIODICITY 685 IGCM_card_DefineArrayFromOption ${F_CFG_ENS} Ens_DATE NONPERIODIC 686 IGCM_card_DefineArrayFromOption ${F_CFG_ENS} Ens_DATE RESTART_NONPERIODIC 687 IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_DATE LENGTH 688 IGCM_card_DefineArrayFromOption ${F_CFG_ENS} Ens_DATE LENGTH_NONPERIODIC 689 IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_DATE INITFROM 690 IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_DATE INITFROM_NONPERIODIC 691 IGCM_card_DefineVariableFromOption ${F_CFG_ENS} Ens_DATE INITPATH 670 692 IGCM_card_DefineVariableFromOption config.card UserChoices JobName 671 693 IGCM_card_DefineVariableFromOption config.card UserChoices TagName … … 675 697 echo 676 698 IGCM_debug_Print 1 "[Ens_DATE]" 677 IGCM_debug_Print 1 "ACTIVE = ${ensemble_Ens_DATE_active}" 678 IGCM_debug_Print 1 "NAME = ${ensemble_Ens_DATE_NAME}" 679 IGCM_debug_Print 1 "BEGIN_INIT = ${ensemble_Ens_DATE_BEGIN_INIT}" 680 IGCM_debug_Print 1 "END_INIT = ${ensemble_Ens_DATE_END_INIT}" 681 IGCM_debug_Print 1 "PERIODICITY = ${ensemble_Ens_DATE_PERIODICITY}" 682 IGCM_debug_Print 1 "BEGIN_RESTART = ${ensemble_Ens_DATE_BEGIN_RESTART}" 683 IGCM_debug_Print 1 "NONPERIODIC = ${ensemble_Ens_DATE_NONPERIODIC[*]}" 684 IGCM_debug_Print 1 "RESTART_NONPERIODIC= ${ensemble_Ens_DATE_RESTART_NONPERIODIC[*]}" 685 IGCM_debug_Print 1 "LENGTH = ${ensemble_Ens_DATE_LENGTH}" 686 IGCM_debug_Print 1 "LENGTH_NONPERIODIC = ${ensemble_Ens_DATE_LENGTH_NONPERIODIC[*]}" 687 IGCM_debug_Print 1 "INITFROM = ${ensemble_Ens_DATE_INITFROM}" 688 IGCM_debug_Print 1 "INITPATH = ${ensemble_Ens_DATE_INITPATH}" 689 IGCM_debug_Print 1 "JobName = ${config_UserChoices_JobName}" 690 IGCM_debug_Print 1 "TagName = ${config_UserChoices_TagName}" 691 IGCM_debug_Print 1 "CalendarType = ${config_UserChoices_CalendarType}" 692 IGCM_debug_Print 1 "ListOfComponents = ${config_ListOfComponents[*]}" 699 IGCM_debug_Print 1 "ACTIVE = ${ensemble_Ens_DATE_active}" 700 IGCM_debug_Print 1 "NAME = ${ensemble_Ens_DATE_NAME}" 701 IGCM_debug_Print 1 "BEGIN_INIT = ${ensemble_Ens_DATE_BEGIN_INIT}" 702 IGCM_debug_Print 1 "END_INIT = ${ensemble_Ens_DATE_END_INIT}" 703 IGCM_debug_Print 1 "PERIODICITY = ${ensemble_Ens_DATE_PERIODICITY}" 704 IGCM_debug_Print 1 "BEGIN_RESTART = ${ensemble_Ens_DATE_BEGIN_RESTART}" 705 IGCM_debug_Print 1 "NONPERIODIC = ${ensemble_Ens_DATE_NONPERIODIC[*]}" 706 IGCM_debug_Print 1 "RESTART_NONPERIODIC = ${ensemble_Ens_DATE_RESTART_NONPERIODIC[*]}" 707 IGCM_debug_Print 1 "LENGTH = ${ensemble_Ens_DATE_LENGTH}" 708 IGCM_debug_Print 1 "LENGTH_NONPERIODIC = ${ensemble_Ens_DATE_LENGTH_NONPERIODIC[*]}" 709 IGCM_debug_Print 1 "INITFROM = ${ensemble_Ens_DATE_INITFROM}" 710 IGCM_debug_Print 1 "INITFROM_NONPERIODIC = ${ensemble_Ens_DATE_INITFROM_NONPERIODIC[*]}" 711 IGCM_debug_Print 1 "INITPATH = ${ensemble_Ens_DATE_INITPATH}" 712 IGCM_debug_Print 1 "JobName = ${config_UserChoices_JobName}" 713 IGCM_debug_Print 1 "TagName = ${config_UserChoices_TagName}" 714 IGCM_debug_Print 1 "CalendarType = ${config_UserChoices_CalendarType}" 715 IGCM_debug_Print 1 "ListOfComponents = ${config_ListOfComponents[*]}" 693 716 echo "" 694 717 695 718 ensemble_Ens_DATE_MEMBER=1 # actually use only 1 member 696 719 IGCM_ensemble_SetAlpha ${ensemble_Ens_DATE_MEMBER} 697 720 698 721 IGCM_debug_Print 1 "Check args..." 699 722 DatePeriodicStart=false 700 723 DateNonPeriodicStart=false 701 724 702 725 # ... Check LENGTH ... 703 726 case ${ensemble_Ens_DATE_LENGTH} in … … 716 739 totalPeriodArgs=4 717 740 periodFillArgs=0 718 741 719 742 if [[ X${ensemble_Ens_DATE_BEGIN_RESTART} != "X" ]]; then 720 743 (( periodFillArgs = periodFillArgs + 1 )) 721 744 fi 722 745 723 746 if [[ X${ensemble_Ens_DATE_BEGIN_INIT} != "X" ]]; then 724 747 (( periodFillArgs = periodFillArgs + 1 )) … … 731 754 if [[ X${ensemble_Ens_DATE_PERIODICITY} != "X" ]]; then 732 755 (( periodFillArgs = periodFillArgs + 1 )) 733 756 734 757 # ... Check PERIODICITY ... 735 758 case ${ensemble_Ens_DATE_PERIODICITY} in 736 737 738 739 740 741 759 *[Yy]|*[Mm]) 760 IGCM_debug_Print 1 "Periodic length : ${ensemble_Ens_DATE_PERIODICITY}" ;; 761 *) 762 IGCM_debug_Exit "IGCM_ensemble_DateInit ${ensemble_Ens_DATE_PERIODICITY} : invalid PERIODICITY" 763 IGCM_debug_Exit "Choose a value in *Y or *M" 764 IGCM_debug_Verif_Exit ;; 742 765 esac 743 766 fi # if periodicity 744 767 745 768 if [[ ${periodFillArgs} = ${totalPeriodArgs} ]]; then 746 769 DatePeriodicStart=true 747 770 else 748 771 if [[ ${periodFillArgs} = 0 ]]; then 749 750 772 IGCM_debug_Print 1 "Periodic start NOT ACTIVE" 773 DatePeriodicStart=false 751 774 else 752 753 IGCM_debug_Exit "Get only ${periodFillArgs} on ${totalPeriodArgs} args. Check ${FileName} file."754 775 IGCM_debug_Exit "IGCM_ensemble_DateInit missing arguments for Periodic mode!" 776 IGCM_debug_Exit "Get only ${periodFillArgs} on ${totalPeriodArgs} args. Check ${F_CFG_ENS} file." 777 IGCM_debug_Verif_Exit 755 778 fi 756 779 fi 757 780 758 781 # *************************************** 759 782 # A few checks for the Non-Periodic case: … … 763 786 IGCM_debug_Verif_Exit 764 787 fi 765 766 # Use LENGTH if no NONPERIODIC_LENGTH given 788 767 789 if [[ ${#ensemble_Ens_DATE_NONPERIODIC[*]} > 0 ]] && [[ ${ensemble_Ens_DATE_NONPERIODIC[*]} != _0_ ]]; then 768 790 DateNonPeriodicStart=true 769 791 792 # Use LENGTH if no NONPERIODIC_LENGTH given 770 793 if [[ ${#ensemble_Ens_DATE_LENGTH_NONPERIODIC[*]} < ${#ensemble_Ens_DATE_NONPERIODIC[*]} ]] ; then 771 IGCM_debug_Print 1 "WARNING: LENGTH_NONPERIODIC is not fill (or not correctly). Use LENGTH value '${ensemble_Ens_DATE_LENGTH}' for all NONPERIODIC runs" 772 DateNum=0 773 while [ $DateNum -lt ${#ensemble_Ens_DATE_NONPERIODIC[*]} ] ; do 774 ensemble_Ens_DATE_LENGTH_NONPERIODIC[DateNum]=${ensemble_Ens_DATE_LENGTH} 775 (( DateNum = DateNum + 1 )) 776 done 794 IGCM_debug_Print 1 "WARNING: LENGTH_NONPERIODIC is not fill (or not correctly). Use LENGTH value '${ensemble_Ens_DATE_LENGTH}' for all NONPERIODIC runs" 795 DateNum=0 796 while [ $DateNum -lt ${#ensemble_Ens_DATE_NONPERIODIC[*]} ] ; do 797 ensemble_Ens_DATE_LENGTH_NONPERIODIC[DateNum]=${ensemble_Ens_DATE_LENGTH} 798 (( DateNum = DateNum + 1 )) 799 done 800 fi 801 802 # Use INITFROM if no NONPERIODIC_INITFROM given 803 if [[ ${#ensemble_Ens_DATE_INITFROM_NONPERIODIC[*]} < ${#ensemble_Ens_DATE_NONPERIODIC[*]} ]] ; then 804 IGCM_debug_Print 1 "WARNING: INITFROM_NONPERIODIC is not fill (or not correctly). Use INITFROM value '${ensemble_Ens_DATE_INITFROM}' for all NONPERIODIC runs" 805 DateNum=0 806 while [ $DateNum -lt ${#ensemble_Ens_DATE_NONPERIODIC[*]} ] ; do 807 ensemble_Ens_DATE_INITFROM_NONPERIODIC[DateNum]=${ensemble_Ens_DATE_INITFROM} 808 (( DateNum = DateNum + 1 )) 809 done 777 810 fi 778 811 else … … 780 813 DateNonPeriodicStart=false 781 814 fi 782 815 783 816 if [[ ${DateNonPeriodicStart} = true ]]; then 784 817 DateNum=0 785 818 while [ $DateNum -lt ${#ensemble_Ens_DATE_NONPERIODIC[*]} ] ; do 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 819 # - Check LENGTH_NONPERIODIC 820 case ${ensemble_Ens_DATE_LENGTH_NONPERIODIC[$DateNum]} in 821 *[Yy]|*[Mm]) 822 IGCM_debug_Print 1 "Non-periodic duration $DateNum: ${ensemble_Ens_DATE_LENGTH_NONPERIODIC[$DateNum]}" 823 ;; 824 *) 825 IGCM_debug_Exit "IGCM_ensemble_DateInit ${ensemble_Ens_DATE_LENGTH_NONPERIODIC[$DateNum]} : invalid NON PERIODIC LENGTH" 826 IGCM_debug_Exit "choose in *Y or *M" 827 IGCM_debug_Verif_Exit ;; 828 esac 829 830 # - Check RESTART_NONPERIODIC 831 case ${ensemble_Ens_DATE_RESTART_NONPERIODIC[$DateNum]} in 832 _0_) 833 IGCM_debug_Exit "IGCM_ensemble_DateInit ${ensemble_Ens_DATE_RESTART_NONPERIODIC[$DateNum]} : invalid NON PERIODIC RESTART" 834 IGCM_debug_Verif_Exit ;; 835 esac 836 837 (( DateNum = DateNum + 1 )) 805 838 done 806 839 fi # DateNonPeriodicStart = true 807 840 808 841 IGCM_debug_PopStack "IGCM_ensemble_DateInit" 809 842 } … … 823 856 # - Build directory name 824 857 StartDir="${ensemble_Ens_DATE_NAME}" 825 858 826 859 # - Create directory for current DateBegin 827 860 if [ ! -d ${StartDir} ] ; then … … 832 865 IGCM_sys_Cd ${RUN_DIR} 833 866 fi 834 867 835 868 # ... Loop over DateBegin ... 836 869 eval DateBegin=\${ensemble_Ens_DATE_BEGIN_INIT} 837 870 eval RestartDate=\${ensemble_Ens_DATE_BEGIN_RESTART} 838 871 872 DateNum=0 839 873 while [ ${DateBegin} -le ${ensemble_Ens_DATE_END_INIT} ] ; do 840 874 IGCM_date_GetYearMonth ${DateBegin} year month 841 875 842 876 echo "========================================================================" 843 877 echo "New DateBegin = $DateBegin" 844 878 845 879 # - Determine number of day(s) in PERIODICITY 846 880 PeriodLengthInDays=$( IGCM_date_DaysInCurrentPeriod ${DateBegin} ${ensemble_Ens_DATE_PERIODICITY} ) 847 881 848 882 # - Determine number of day(s) in LENGTH 849 883 DureeLengthInDays=$(( $( IGCM_date_DaysInCurrentPeriod ${DateBegin} ${ensemble_Ens_DATE_LENGTH} ) - 1 )) … … 851 885 # - Determine DateEnd 852 886 (( DateEnd = $( IGCM_date_AddDaysToGregorianDate ${DateBegin} ${DureeLengthInDays} ) )) 853 887 854 888 IGCM_debug_Print 2 "${DateBegin} => ${DateEnd} : ${StartDir}" 855 889 echo "${DateBegin} ${DateEnd} ${StartDir}" >> ${RUN_DIR}/CreatedDir.txt 856 890 857 891 # - Loop over members (default =1 no member) 858 892 i=0 859 893 while [ $i -lt ${ensemble_Ens_DATE_MEMBER} ] ; do 860 MemberDir="${ensemble_Ens_DATE_ INITFROM}${RestartDate}${Alpha[$i]}"894 MemberDir="${ensemble_Ens_DATE_NAME}${DateNum}${Alpha[$i]}_per" 861 895 echo 862 896 IGCM_debug_Print 3 "${MemberDir}" 863 897 864 898 JobName="Job_${MemberDir}" 865 899 … … 875 909 IGCM_sys_Cp config.card run.card.init ${SUBMIT_DIR}/${StartDir}/${MemberDir} 876 910 IGCM_sys_Cp Job_${config_UserChoices_JobName} ${SUBMIT_DIR}/${StartDir}/${MemberDir}/${JobName} 877 911 878 912 # Dump command to be lauched 879 echo "cd ${StartDir}/${MemberDir}/ ;" >> ${RUN_DIR}/Qsub.${StartDir}.txt 880 echo "${SUBMIT} ${JobName} ; cd -" >> ${RUN_DIR}/Qsub.${StartDir}.txt 881 882 # * Update files : config.card, Job_, COMP/comp.card 883 IGCM_ensemble_DateFilesUpdate ${DateBegin} ${DateEnd} ${RestartDate} 913 echo "cd ${StartDir}/${MemberDir}/ ;" >> ${RUN_DIR}/Qsub.${StartDir}.sh 914 echo "${SUBMIT} ${JobName} ; cd -" >> ${RUN_DIR}/Qsub.${StartDir}.sh 915 916 echo "cd ${StartDir}/${MemberDir}/ ;" >> ${RUN_DIR}/Qclean.month.${StartDir}.sh 917 echo "${libIGCM}/clean_month.job ; cd -" >> ${RUN_DIR}/Qclean.month.${StartDir}.sh 918 919 echo "cd ${StartDir}/${MemberDir}/ ;" >> ${RUN_DIR}/Qclean.year.${StartDir}.sh 920 echo "${libIGCM}/clean_year.job ; cd -" >> ${RUN_DIR}/Qclean.year.${StartDir}.sh 921 922 # * Update files : config.card, Job_, COMP/comp.card 923 IGCM_ensemble_DateFilesUpdate ${DateBegin} ${DateEnd} ${RestartDate} 884 924 fi 885 925 886 926 (( i = i + 1 )) 887 927 done … … 896 936 esac 897 937 938 (( DateNum = DateNum + 1 )) # increment number of restart date 898 939 done 899 940 900 941 # Done. Save ${StartDir} submission text file 901 IGCM_sys_Cp ${RUN_DIR}/Qsub.${StartDir}.txt ${SUBMIT_DIR} 902 942 IGCM_sys_Cp ${RUN_DIR}/Qsub.${StartDir}.sh ${SUBMIT_DIR} 943 IGCM_sys_Cp ${RUN_DIR}/Qclean.month.${StartDir}.sh ${SUBMIT_DIR} 944 IGCM_sys_Cp ${RUN_DIR}/Qclean.year.${StartDir}.sh ${SUBMIT_DIR} 945 903 946 IGCM_debug_PopStack "IGCM_ensemble_DatePeriodicStarts" 904 947 } … … 930 973 IGCM_sys_Cd ${RUN_DIR} 931 974 fi 932 975 933 976 DateNum=0 934 977 # ... Loop over ensemble_Ens_DATE_NONPERIODIC ... … … 937 980 Duree=${ensemble_Ens_DATE_LENGTH_NONPERIODIC[$DateNum]} 938 981 RestartDate=${ensemble_Ens_DATE_RESTART_NONPERIODIC[$DateNum]} 939 982 InitFrom=${ensemble_Ens_DATE_INITFROM_NONPERIODIC[$DateNum]} 983 940 984 # - Determine number of day(s) in LENGTH_NONPERIODIC 941 985 IGCM_date_GetYearMonth ${DateBegin} year month … … 944 988 # - Determine DateEnd 945 989 (( DateEnd = $( IGCM_date_AddDaysToGregorianDate ${DateBegin} ${DureeLengthInDays} ) )) 946 990 947 991 IGCM_debug_Print 2 "${DateBegin} => ${DateEnd} : ${StartDir}" 948 echo "${DateBegin} ${DateEnd} ${StartDir}" >> ${RUN_DIR}/CreatedDir.txt 949 992 echo "${DateBegin} ${DateEnd} ${StartDir}" >> ${RUN_DIR}/CreatedDir.txt 993 950 994 PeriodDateEnd=$( grep -m1 ${StartDir} ${RUN_DIR}/CreatedDir.txt | cut -f2 -d\ ) 951 995 952 996 # - Loop over members 953 997 i=0 954 998 while [ $i -lt ${ensemble_Ens_DATE_MEMBER} ] ; do 955 MemberDir="${ensemble_Ens_DATE_ INITFROM}${RestartDate}${Alpha[$i]}"999 MemberDir="${ensemble_Ens_DATE_NAME}${DateNum}${Alpha[$i]}" 956 1000 IGCM_debug_Print 3 "${MemberDir}" 957 1001 958 1002 JobName="Job_${MemberDir}" 959 1003 … … 971 1015 972 1016 # Dump command to be lauched 973 echo "cd ${StartDir}/${MemberDir}/ ;" >> ${RUN_DIR}/Qsub.${StartDir}.txt 974 echo "${SUBMIT} ${JobName} ; cd -" >> ${RUN_DIR}/Qsub.${StartDir}.txt 975 976 # * Update files : config.card, Job_, COMP/comp.card 977 IGCM_ensemble_DateFilesUpdate ${DateBegin} ${DateEnd} ${RestartDate} 1017 echo "cd ${StartDir}/${MemberDir}/ ;" >> ${RUN_DIR}/Qsub.${StartDir}.sh 1018 echo "${SUBMIT} ${JobName} ; cd -" >> ${RUN_DIR}/Qsub.${StartDir}.sh 1019 1020 echo "cd ${StartDir}/${MemberDir}/ ;" >> ${RUN_DIR}/Qclean.month.${StartDir}.sh 1021 echo "${libIGCM}/clean_month.job ; cd -" >> ${RUN_DIR}/Qclean.month.${StartDir}.sh 1022 1023 echo "cd ${StartDir}/${MemberDir}/ ;" >> ${RUN_DIR}/Qclean.year.${StartDir}.sh 1024 echo "${libIGCM}/clean_year.job ; cd -" >> ${RUN_DIR}/Qclean.year.${StartDir}.sh 1025 1026 # * Update files : config.card, Job_, COMP/comp.card 1027 IGCM_ensemble_DateFilesUpdate ${DateBegin} ${DateEnd} ${RestartDate} ${InitFrom} 978 1028 fi 979 1029 980 1030 (( i = i + 1 )) 981 1031 done 982 1032 983 1033 # Done. Save ${StartDir} submission text file 984 IGCM_sys_Cp ${RUN_DIR}/Qsub.${StartDir}.txt ${SUBMIT_DIR} 1034 IGCM_sys_Cp ${RUN_DIR}/Qsub.${StartDir}.sh ${SUBMIT_DIR} 1035 IGCM_sys_Cp ${RUN_DIR}/Qclean.month.${StartDir}.sh ${SUBMIT_DIR} 1036 IGCM_sys_Cp ${RUN_DIR}/Qclean.year.${StartDir}.sh ${SUBMIT_DIR} 985 1037 986 1038 (( DateNum = DateNum + 1 )) … … 988 1040 989 1041 # Done. Save ${StartDir} submission text file 990 IGCM_sys_Cp ${RUN_DIR}/Qsub.${StartDir}.txt ${SUBMIT_DIR} 991 1042 IGCM_sys_Cp ${RUN_DIR}/Qsub.${StartDir}.sh ${SUBMIT_DIR} 1043 IGCM_sys_Cp ${RUN_DIR}/Qclean.month.${StartDir}.sh ${SUBMIT_DIR} 1044 IGCM_sys_Cp ${RUN_DIR}/Qclean.year.${StartDir}.sh ${SUBMIT_DIR} 1045 992 1046 IGCM_debug_PopStack "IGCM_ensemble_DateNonPeriodicStarts" 993 1047 } … … 1004 1058 HumanDateEnd=$( IGCM_date_ConvertFormatToHuman ${2} ) 1005 1059 HumanRestartDate=$( IGCM_date_ConvertFormatToHuman ${3} ) 1060 if [[ X${4} != "X" ]]; then 1061 initFrom=${4} # non periodic config (INITFROM could be different between members) 1062 else 1063 initFrom=${ensemble_Ens_DATE_INITFROM} # periodic (same INITFROM value) 1064 fi 1065 1006 1066 # ==> config.card 1007 1067 # [ENSEMBLE] … … 1010 1070 IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card Ensemble EnsembleDate ${HumanDateBegin} 1011 1071 IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card Ensemble EnsembleType "Ens_DATE" 1012 1072 1013 1073 # [UserChoices] 1014 1074 IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card UserChoices JobName ${MemberDir} 1015 1075 IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card UserChoices DateBegin ${HumanDateBegin} 1016 1076 IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card UserChoices DateEnd ${HumanDateEnd} 1017 1077 1018 1078 # [Restarts] 1019 1079 IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card Restarts OverRule "y" 1020 1080 IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card Restarts RestartDate ${HumanRestartDate} 1021 IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card Restarts RestartJobName ${ ensemble_Ens_DATE_INITFROM}1081 IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card Restarts RestartJobName ${initFrom} 1022 1082 IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card Restarts RestartPath ${ensemble_Ens_DATE_INITPATH} 1023 1083 … … 1026 1086 IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card ${comp} Restart "n" 1027 1087 done 1028 1088 unset initFrom 1089 1029 1090 # ==> Job 1030 1091 sed -e "s/\(#.*\)${config_UserChoices_JobName}\( *#.*\)/\1${MemberDir} \2/" \
Note: See TracChangeset
for help on using the changeset viewer.