#!/bin/ksh
#D- Driver du script pour ORCHIDEE
#-----------------------------------------------------------------
function SRF_Initialize
{
IGCM_debug_PushStack "SRF_Initialize"
RESOL_SRF=ALL
for frequency in ${config_SRF_WriteFrequency} ; do
case ${frequency} in
HF|hf) SRF_ok_hf=y ;;
esac
done
##- Define variable DefSuffix set in orchidee.card
## This variable is used in orchidee.card to choose
## parameter file(orchidee.def_DefSuffix).
if [ ! X${orchidee_UserChoices_DefSuffix} = X ] ; then
DefSuffix=${orchidee_UserChoices_DefSuffix}
else
DefSuffix=Choi
fi
IGCM_debug_PopStack "SRF_Initialize"
}
#-----------------------------------------------------------------
function SRF_Update
{
IGCM_debug_PushStack "SRF_Update"
# Activate STOMATE if the compontent SBG=stomate is set in config.card
if [ X${config_ListOfComponents_SBG} = Xstomate ] ; then
IGCM_comp_modifyDefFile blocker orchidee.def STOMATE_OK_STOMATE y
else
IGCM_comp_modifyDefFile blocker orchidee.def STOMATE_OK_STOMATE n
fi
typeset SECHIBA_WRITE_STEP
if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
IGCM_comp_modifyXmlFile force file_def_orchidee.xml sechiba1 enabled .FALSE.
IGCM_comp_modifyXmlFile force file_def_orchidee.xml sechiba2 enabled .FALSE.
IGCM_comp_modifyDefFile nonblocker orchidee.def XIOS_ORCHIDEE_OK y
else
IGCM_comp_modifyDefFile nonblocker orchidee.def XIOS_ORCHIDEE_OK n
fi
SRF_WriteFrequency=$( echo ${config_SRF_WriteFrequency} | sed -e 's/\([0-9]*[yYmMdDs]\).*/\1/' )
case ${SRF_WriteFrequency} in
*Y|*y)
WriteInYears=$( echo ${SRF_WriteFrequency} | awk -F '[yY]' '{print $1}' )
PeriodLengthInYears=$( echo ${config_UserChoices_PeriodLength} | awk -F '[yY]' '{print $1}' )
(( SECHIBA_WRITE_STEP = PeriodLengthInDays * WriteInYears / PeriodLengthInYears * 86400 ))
if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
IGCM_comp_modifyXmlFile force file_def_orchidee.xml sechiba1 enabled .TRUE.
IGCM_comp_modifyXmlFile force file_def_orchidee.xml sechiba1 output_freq ${WriteInYears}y
IGCM_comp_modifyXmlFile force file_def_orchidee.xml sechiba1 name sechiba_history
fi
;;
1M)
if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
IGCM_comp_modifyXmlFile force file_def_orchidee.xml sechiba1 enabled .TRUE.
IGCM_comp_modifyXmlFile force file_def_orchidee.xml sechiba1 output_freq 1mo
IGCM_comp_modifyXmlFile force file_def_orchidee.xml sechiba1 name sechiba_history
fi
case ${config_UserChoices_PeriodLength} in
*Y|*y)
SECHIBA_WRITE_STEP=-1.
;;
*M|*m)
SECHIBA_WRITE_STEP=-1.
;;
*)
(( SECHIBA_WRITE_STEP = $( IGCM_date_DaysInMonth $year $month ) * 86400 ))
;;
esac
;;
*M|*m)
WriteInMonths=$( echo ${SRF_WriteFrequency} | awk -F '[mM]' '{print $1}' )
if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
IGCM_comp_modifyXmlFile force file_def_orchidee.xml sechiba1 enabled .TRUE.
IGCM_comp_modifyXmlFile force file_def_orchidee.xml sechiba1 output_freq ${WriteInMonths}mo
IGCM_comp_modifyXmlFile force file_def_orchidee.xml sechiba1 name sechiba_history
fi
case ${config_UserChoices_PeriodLength} in
*Y|*y)
PeriodLengthInYears=$( echo ${config_UserChoices_PeriodLength} | awk -F '[yY]' '{print $1}' )
(( SECHIBA_WRITE_STEP = PeriodLengthInDays * 86400 / PeriodLengthInYears / 12 ))
;;
*M|*m)
PeriodLengthInMonths=$( echo ${config_UserChoices_PeriodLength} | awk -F '[mM]' '{print $1}' )
(( SECHIBA_WRITE_STEP = PeriodLengthInDays * WriteInMonths * 86400 / PeriodLengthInMonths ))
;;
*)
(( SECHIBA_WRITE_STEP = $( IGCM_date_DaysInMonth $year $month ) * 86400 ))
if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
IGCM_comp_modifyXmlFile force file_def_orchidee.xml sechiba1 enabled .TRUE.
IGCM_comp_modifyXmlFile force file_def_orchidee.xml sechiba1 output_freq ${SECHIBA_WRITE_STEP}s
IGCM_comp_modifyXmlFile force file_def_orchidee.xml sechiba1 name sechiba_history
fi
;;
esac
;;
5D|5d)
if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
IGCM_comp_modifyXmlFile force file_def_orchidee.xml sechiba1 enabled .TRUE.
IGCM_comp_modifyXmlFile force file_def_orchidee.xml sechiba1 output_freq 5d
IGCM_comp_modifyXmlFile force file_def_orchidee.xml sechiba1 name sechiba_history
fi
(( SECHIBA_WRITE_STEP = 5 * 86400 ))
;;
1D|1d)
if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
IGCM_comp_modifyXmlFile force file_def_orchidee.xml sechiba1 enabled .TRUE.
IGCM_comp_modifyXmlFile force file_def_orchidee.xml sechiba1 output_freq 1d
IGCM_comp_modifyXmlFile force file_def_orchidee.xml sechiba1 name sechiba_history
fi
(( SECHIBA_WRITE_STEP = 86400 ))
;;
*s)
WriteInSeconds=$( echo ${SRF_WriteFrequency} | awk -F '[s]' '{print $1}' )
if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
IGCM_comp_modifyXmlFile force file_def_orchidee.xml sechiba1 enabled .TRUE.
IGCM_comp_modifyXmlFile force file_def_orchidee.xml sechiba1 output_freq ${WriteInSeconds}s
IGCM_comp_modifyXmlFile force file_def_orchidee.xml sechiba1 name sechiba_history
fi
(( SECHIBA_WRITE_STEP = WriteInSeconds )) ;;
*)
IGCM_debug_Exit "SRF_Update " ${SRF_WriteFrequency} " invalid WriteFrequency : choose in 1Y, 1M, 5D, 1D."
IGCM_debug_Verif_Exit ;;
esac
#Use of XIOS ouputs only
if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
(( SECHIBA_WRITE_STEP = 0 ))
fi
IGCM_comp_modifyDefFile nonblocker orchidee.def WRITE_STEP ${SECHIBA_WRITE_STEP}
IGCM_comp_modifyDefFile nonblocker orchidee.def SECHIBA_HISTLEVEL ${orchidee_UserChoices_sechiba_LEVEL}
# Outputs HF in HISTFILE2 if required
if [ X${SRF_ok_hf} = Xy ] ; then
IGCM_comp_modifyDefFile nonblocker orchidee.def SECHIBA_HISTFILE2 y
if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
IGCM_comp_modifyXmlFile force file_def_orchidee.xml sechiba2 enabled .TRUE.
IGCM_comp_modifyXmlFile force file_def_orchidee.xml sechiba2 output_freq 10800s
IGCM_comp_modifyXmlFile force file_def_orchidee.xml sechiba2 name sechiba_out_2
fi
else
IGCM_comp_modifyDefFile nonblocker orchidee.def SECHIBA_HISTFILE2 n
fi
IGCM_comp_modifyDefFile nonblocker orchidee.def SECHIBA_HISTLEVEL2 1
IGCM_comp_modifyDefFile nonblocker orchidee.def WRITE_STEP2 10800.0
if ( [ ${CumulPeriod} -ne 1 ] || [ "${config_SRF_Restart}" != "n" ] ) ; then
IGCM_comp_modifyDefFile blocker orchidee.def SECHIBA_restart_in sechiba_rest_in.nc
else
IGCM_comp_modifyDefFile blocker orchidee.def SECHIBA_restart_in NONE
fi
# Modify in orchidee.def VEGET_UPDATE and LAND_COVER_CHANGE if they are set in orchidee.card section UserChoices
if [ ! X${orchidee_UserChoices_VEGET_UPDATE} = X ] ; then
IGCM_comp_modifyDefFile blocker orchidee.def VEGET_UPDATE ${orchidee_UserChoices_VEGET_UPDATE}
else
IGCM_comp_modifyDefFile blocker orchidee.def VEGET_UPDATE 0Y
fi
if [ ! X${orchidee_UserChoices_LAND_COVER_CHANGE} = X ] ; then
IGCM_comp_modifyDefFile blocker orchidee.def LAND_COVER_CHANGE ${orchidee_UserChoices_LAND_COVER_CHANGE}
else
IGCM_comp_modifyDefFile blocker orchidee.def LAND_COVER_CHANGE n
fi
#IGCM_sys_Cp ${RUN_DIR}/orchidee.def ${RUN_DIR}/run.def
#IGCM_sys_Put_Out ${RUN_DIR}/run.def ${R_SAVE}/${PREFIX}_run.def
if [ X${orchidee_UserChoices_XIOS} = Xy ] ; then
# Add include of orchidee context in iodef.xml
# In iodef.xml add on next line after "COMPONENT CONTEXT"
#
echo '' > add.tmp
cp iodef.xml iodef.xml.tmp
sed -e "/COMPONENT CONTEXT/r add.tmp" \
iodef.xml.tmp > iodef.xml
rm iodef.xml.tmp add.tmp
fi
IGCM_debug_PopStack "SRF_Update"
}
#-----------------------------------------------------------------
function SRF_Finalize
{
IGCM_debug_PushStack "SRF_Finalize"
#IGCM_sys_Put_Out ${RUN_DIR}/used_run.def ${R_SAVE}/${PREFIX}_used_run.def
echo FINALIZE SRF !!!
IGCM_debug_PopStack "SRF_Finalize"
}