#!/bin/ksh #D- Driver du script pour ORCHIDEE function ORCHIDEE_sed { IGCM_debug_PushStack "ORCHIDEE_sed" sed -e "s/^${1}\ *=.*/${1}= ${2}/" \ orchidee.def > orchidee.def.tmp RET=$? echo "ORCHIDEE_sed : ${1} ${2}" \mv orchidee.def.tmp orchidee.def IGCM_debug_PopStack "ORCHIDEE_sed" return $RET } #----------------------------------------------------------------- function SBG_Initialize { IGCM_debug_PushStack "SBG_Initialize" RESOL=${forcesoil_UserChoices_RESOL} IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/config.card SBG RestartDate Date_Restarts=$( IGCM_date_ConvertFormatToGregorian ${config_SBG_RestartDate} ) IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/config.card SBG RestartJobName IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/config.card SBG RestartPath NUM_PROC=1 #D- Number of processors used for lmdz and oasis coupler computed from PBS variable if [ X"${BATCH_NUM_PROC_TOT}" != X ] ; then NUM_PROC=${BATCH_NUM_PROC_TOT} fi echo BATCH_NUM_PROC_TOT=${BATCH_NUM_PROC_TOT} echo NUM_PROC=${NUM_PROC} if ( [ X${BATCH_NUM_PROC_TOT} != X ] && [ "${BATCH_NUM_PROC_TOT}" -gt 1 ] ) ; then MPIRUN_COMMAND=${HOST_MPIRUN_COMMAND} fi echo "ORCHIDEE Tag : " ${config_UserChoices_TagName} IGCM_debug_PopStack "SBG_Initialize" } #----------------------------------------------------------------- function SBG_Update { IGCM_debug_PushStack "SBG_Update" typeset SECHIBA_WRITE_STEP STOMATE_WRITE_STEP case ${config_SBG_WriteFrequency} in *Y|*y) WriteInYears=$( echo ${1} | awk -F '[yY]' "{print ${config_SBG_WriteFrequency}}" ) PeriodLengthInYears=$( echo ${1} | awk -F '[yY]' "{print ${config_UserChoices_PeriodLength}}" ) (( STOMATE_WRITE_STEP = PeriodLengthInDays * WriteInYears / PeriodLengthInYears )) ;; *M|*m) WriteInMonths=$( echo ${1} | awk -F '[mM]' "{print ${config_SBG_WriteFrequency}}" ) case ${config_UserChoices_PeriodLength} in *Y|*y) PeriodLengthInYears=$( echo ${1} | awk -F '[yY]' "{print ${config_UserChoices_PeriodLength}}" ) (( STOMATE_WRITE_STEP = 30 )) ;; *M|*m) PeriodLengthInMonths=$( echo ${1} | awk -F '[mM]' "{print ${config_UserChoices_PeriodLength}}" ) (( STOMATE_WRITE_STEP = PeriodLengthInDays * WriteInMonths / PeriodLengthInMonths )) ;; *) (( STOMATE_WRITE_STEP = $( IGCM_date_DaysInMonth $year $month ) )) ;; esac ;; 5D|5d) (( STOMATE_WRITE_STEP = 5 )) ;; 1D|1d) (( STOMATE_WRITE_STEP = 1 )) ;; *s) WriteInSeconds=$( echo ${1} | awk -F '[s]' "{print ${config_SBG_WriteFrequency}}" ) (( STOMATE_WRITE_STEP = 1 )) ;; *) IGCM_debug_Exit "SBG_Update " ${config_SBG_WriteFrequency} " invalid WriteFrequency : choose in 1Y, 1M, 5D, 1D." IGCM_debug_Verif_Exit ;; esac ORCHIDEE_sed STOMATE_HIST_DT ${STOMATE_WRITE_STEP} ORCHIDEE_sed STOMATE_HISTLEVEL ${stomate_UserChoices_stomate_LEVEL} if ( [ ${CumulPeriod} -eq 1 ] && [ "${config_SBG_Restart}" = "n" ] ) ; then echo "Error in forcesoil !" echo "You must use some old restarts with this job." echo "We will stop here." IGCM_debug_Exit "YOU MUST USE SOME OLD RESTARTS WITH THE JOB FORCESOIL." IGCM_debug_Verif_Exit else ORCHIDEE_sed STOMATE_RESTART_FILEIN stomate_rest_in.nc ORCHIDEE_sed STOMATE_CFORCING_NAME stomate_Cforcing.nc ORCHIDEE_sed STOMATE_HIST_DT ${STOMATE_WRITE_STEP} ORCHIDEE_sed STOMATE_HISTLEVEL 6 fi ORCHIDEE_sed TIME_LENGTH ${PeriodLengthInDays}D # ORCHIDEE_sed TIME_SKIP ${OldSimulationLengthInDays}D IGCM_sys_Mv orchidee.def run.def # IGCM_sys_Put_Out run.def ${R_OUT_FOR}/${PREFIX}_run.def # FileToBeDeleted[${#FileToBeDeleted[@]}]=run.def IGCM_debug_PopStack "SBG_Update" } #----------------------------------------------------------------- function SBG_Finalize { IGCM_debug_PushStack "SBG_Finalize" echo FINALIZE SBG !!! IGCM_debug_PopStack "SBG_Finalize" }