#!/bin/ksh #************************************************************** # Author: Sonia Labetoulle # Contact: Sonia.Labetoulle__at__locean-ipsl.upmc.fr # $Revision::$ Revision of last commit # $Author::$ Author of last commit # $Date::$ Date of last commit # IPSL (2012) # This software is governed by the CeCILL licence see libIGCM/libIGCM_CeCILL.LIC # #************************************************************** function IGCM_ensemble_FilesUpdate { IGCM_debug_PushStack "IGCM_ensemble_FilesUpdate" # set -vx # Debug Print : echo IGCM_debug_Print 1 "IGCM_ensemble_FilesUpdate :" echo HumanDateBegin=$( IGCM_date_ConvertFormatToHuman ${1} ) HumanDateEnd=$( IGCM_date_ConvertFormatToHuman ${2} ) HumanRestartDate=$( IGCM_date_ConvertFormatToHuman ${3} ) # ==> config.card IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card Ensemble EnsembleRun 'y' IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card Ensemble EnsembleName ${ensemble_Ens_PERTURB_NAME} IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card Ensemble EnsembleDate ${StartDir} IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card UserChoices JobName ${MemberDir} IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card UserChoices DateBegin ${HumanDateBegin} IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card UserChoices DateEnd ${HumanDateEnd} IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card Restarts OverRule "n" for Comp in ${config_ListOfComponents[*]} ; do IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card ${Comp} Restart "y" IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card ${Comp} RestartDate ${HumanRestartDate} IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card ${Comp} RestartJobName ${ensemble_Ens_PERTURB_INITFROM} IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card ${Comp} RestartPath ${ensemble_Ens_PERTURB_INITPATH} done # ==> Job # SD : to be encapsulated in a sys function sed -e "s/\(#MSUB -r \)[A-Za-z0-9]*\( *#.*\)/\1 ${MemberDir} \2/" \ -e "s/\(#MSUB -o Script_Output_\)[A-Za-z0-9]*\(\.*\)/\1${MemberDir}\2/" \ -e "s/\(#MSUB -e Script_Output_\)[A-Za-z0-9]*\(\.*\)/\1${MemberDir}\2/" \ ${SUBMIT_DIR}/${StartDir}/${MemberDir}/Job_${MemberDir} > Job_${MemberDir}.tmp IGCM_sys_Mv Job_${MemberDir}.tmp ${SUBMIT_DIR}/${StartDir}/${MemberDir}/Job_${MemberDir} IGCM_debug_PopStack "IGCM_ensemble_FilesUpdate" } function IGCM_ensemble_DirectoryName { IGCM_debug_PushStack "IGCM_ensemble_DirectoryName" #.. Debug Print .. echo IGCM_debug_Print 1 "IGCM_ensemble_DirectoryName :" echo # set -vx Name=$1 Duree=$2 year=$3 month=$4 set -A AlphaMonth a b c d e f g h i j k l # - Build directory name case ${Duree} in *Y|*y) siecle="$( echo $year | cut -c1-2 )" siecle=$( (( $siecle - 18 )) ) StartYear="${siecle}$( echo $year | cut -c3-4 )" StartDir="${Name}${StartYear}" ;; *M|*m) echo $month siecle="$( echo $year | cut -c1-2 )" siecle=$( (( $siecle - 18 )) ) StartYear="${siecle}$( echo $year | cut -c3-4 )" StartMonth="${AlphaMonth[ (( $month - 1 )) ]}" StartDir="${Name}${StartYear}${StartMonth}" ;; esac IGCM_debug_PopStack "IGCM_ensemble_DirectoryName" } function IGCM_ensemble_PerturbFile { IGCM_debug_PushStack "IGCM_ensemble_PerturbFile" #.. Debug Print .. echo IGCM_debug_Print 1 "IGCM_ensemble_PerturbFile :" echo #.. FileIn ? => RestartDate .. DirIn="${ensemble_Ens_PERTURB_INITPATH}/${ensemble_Ens_PERTURB_INITFROM}/${PerturbComp}/Restart" FileIn="${ensemble_Ens_PERTURB_INITFROM}_${RestartDate}_${PerturbFile}.nc" DirOut="${RestartDir}/${MemberDir}/${PerturbComp}/Restart" # FileOut="${ensemble_Ens_PERTURB_INITFROM}_${RestartDate}_${PerturbFile}_${MemberDir}.nc" # FileOut=${FileIn} FileOut="${MemberDir}_${RestartDate}_${PerturbFile}.nc" IGCM_debug_Print 1 "FileIn = ${DirIn}/${FileIn}" IGCM_debug_Print 1 "FileOut = ${DirOut}/${FileOut}" # * Create member restart directory IGCM_sys_TestDirArchive ${DirOut} RET=$? if [ $RET -gt 0 ] ; then IGCM_sys_MkdirArchive ${DirOut} fi IGCM_sys_TestFileArchive ${DirOut}/${FileOut} RET=$? if [ $RET -gt 0 ] ; then # ${PerturbExe} ${DirIn}/${FileIn} ${DirOut}/${FileOut} \ # ${PerturbVar} ${PerturbAmp} # IGCM_sys_Cp ${DirIn}/${FileIn} ${DirOut}/${FileOut} # IGCM_sys_Chmod u+w ${DirOut}/${FileOut} # ${PerturbExe} ${DirOut}/${FileOut} ${PerturbVar} ${PerturbAmp} IGCM_sys_Get ${DirIn}/${FileIn} ${RUN_DIR}/${FileOut} IGCM_sys_Chmod 744 ${RUN_DIR}/${FileOut} ${PerturbExe} ${RUN_DIR}/${FileOut} ${PerturbVar} ${PerturbAmp} if [ $? -ne 0 ] ; then echo "Abend $( basename ${PerturbExe} )" exit fi IGCM_sys_Put_Out ${RUN_DIR}/${FileOut} ${DirOut}/ 744 # IGCM_sys_Cd ${DirOut} # ln -s ${DirIn}/${ensemble_Ens_PERTURB_INITFROM}_${RestartDate}_flxat.nc ${MemberDir}_${RestartDate}_flxat.nc # IGCM_sys_Cd - IGCM_sys_RshArchive "cd ${DirOut} ; ln -s ${DirIn}/${ensemble_Ens_PERTURB_INITFROM}_${RestartDate}_flxat.nc ${MemberDir}_${RestartDate}_flxat.nc" fi #.. Update config.card.. IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card ${PerturbComp} Restart "y" IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card ${PerturbComp} RestartDate ${HumanRestartDate} IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card ${PerturbComp} RestartJobName ${MemberDir} IGCM_card_WriteOption ${SUBMIT_DIR}/${StartDir}/${MemberDir}/config.card ${PerturbComp} RestartPath ${RestartDir}/ IGCM_debug_PopStack "IGCM_ensemble_PerturbFile" }