source: branches/ORCHIDEE_2_2/ORCHIDEE_OL/SPINUP_ANALYTIC_FG1nd/COMP/stomate.driver @ 7911

Last change on this file since 7911 was 7911, checked in by xiaoni.wang, 16 months ago

Add configuration files for the spinup and transient simulations by using the new driver in tag2.2

File size: 6.4 KB
Line 
1#!/bin/ksh
2## Driver for the component SBG corresponding to the stomate part of ORCHIDEE
3
4#-----------------------------------------------------------------
5function SBG_Initialize
6{
7    IGCM_debug_PushStack "SBG_Initialize"
8
9    IGCM_debug_PopStack "SBG_Initialize"
10}
11
12#-----------------------------------------------------------------
13function SBG_Update
14{
15    IGCM_debug_PushStack "SBG_Update"
16
17    # For IOIPSL: get frequency from config.card
18    # Set default values for stomate output files.
19    # These variables are used only to modify file_def_orchidee.xml if XIOS=y
20    stomate_enabled=.FALSE.
21    stomate_freq=0s
22
23    # Read WriteFrequency set in config.card section SBG.
24    # Only one choice can be set as WriteFrequency. The same choice will be used for
25    # both stomate_history and stomate_ipcc_history files.
26    case ${config_SBG_WriteFrequency} in
27        *Y|*y) 
28            NbYears=$( echo ${config_SBG_WriteFrequency} | awk -F '[yY]' '{print $1}' )
29            NbDaysYear=$( IGCM_date_DaysInYear ${year} )
30            stomate_enabled=.TRUE.
31            stomate_freq=${NbYears}y
32            (( STOMATE_WRITE_STEP = NbYears * NbDaysYear )) 
33        ;;
34        *M|*m) 
35            NbMonths=$( echo ${config_SBG_WriteFrequency} | awk -F '[mM]' '{print $1}' )
36            stomate_enabled=.TRUE.
37            stomate_freq=${NbMonths}mo
38            # Note only 1M possible with IOIPSL!
39            STOMATE_WRITE_STEP=-1. ;;
40        *D|*d)
41            NbDays=$( echo ${config_SBG_WriteFrequency} | awk -F '[dD]' '{print $1}' )
42            stomate_enabled=.TRUE.
43            stomate_freq=${NbDays}d
44            STOMATE_WRITE_STEP=${NbDays} ;;
45    esac
46
47    # Modify file_def_orchidee.def if XIOS is activated using information in stomate.card
48    # Settings in config.card WriteFrequency are not used any more.
49    if [ X${orchideedriver_UserChoices_XIOS} = Xy ] ; then
50
51        # Modify file_def_orchidee.xml file using settings from stomate.card
52        # We here suppose that for each file, in stomate.card UserChoices section, if the parameter
53        # output_level_filename is set, then also output_freq_filename must be set. The existance of output_freq_filename will not be checked.
54        # If output_level_filename=NONE or if it is not set, the corresponding file will be deactivated.
55
56        if [ X${stomate_UserChoices_output_level_stomate_history} = X ] || [ X${stomate_UserChoices_output_level_stomate_history} = XNONE ] ; then
57            # output_level_stomate_history is not set in stomate.card or it is set to NONE.
58            # Deactivate the file.
59            IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml stomate1 enabled .FALSE.
60            IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml stomate1 output_level 0
61            IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml stomate1 output_freq 1mo
62        else
63            IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml stomate1 enabled      .TRUE.
64            IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml stomate1 output_level ${stomate_UserChoices_output_level_stomate_history}
65            IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml stomate1 output_freq  ${stomate_UserChoices_output_freq_stomate_history}
66        fi
67
68        if [ X${stomate_UserChoices_output_level_stomate_ipcc_history} = X ] || [ X${stomate_UserChoices_output_level_stomate_ipcc_history} = XNONE ] ; then
69            # output_level_stomate_ipcc_history is not set in stomate.card or it is set to NONE.
70            # Deactivate the file.
71            IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml stomate2 enabled .FALSE.
72            IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml stomate2 output_level 0
73            IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml stomate2 output_freq 1mo
74        else
75            IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml stomate2 enabled      .TRUE.
76            IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml stomate2 output_level ${stomate_UserChoices_output_level_stomate_ipcc_history}
77            IGCM_comp_modifyXmlFile nonblocker file_def_orchidee.xml stomate2 output_freq  ${stomate_UserChoices_output_freq_stomate_ipcc_history}
78        fi
79
80
81
82        # Deactivate stomate IOIPSL output
83        (( STOMATE_WRITE_STEP = 0 ))
84    fi
85
86
87    if [ X${stomate_UserChoices_SPINUP_ANALYTIC} = Xy ] ; then
88       IGCM_comp_modifyDefFile nonblocker run.def SPINUP_ANALYTIC y
89     
90       # Test if CyclicBegin and CyclicEnd is set in config.card
91       if ( [ X${config_UserChoices_CyclicBegin} = X ] || [ X${config_UserChoices_CyclicEnd} = X ] ) ; then
92           IGCM_debug_Exit "CyclicBegin and CyclicEnd must be set in config.card to run option spinup_analytic."
93       fi
94       # Calculate and set number of years of forcing data
95       CycleNb=$(( ${config_UserChoices_CyclicEnd} - ${config_UserChoices_CyclicBegin} + 1 ))
96       IGCM_comp_modifyDefFile nonblocker run.def SPINUP_PERIOD ${CycleNb}
97    else
98        IGCM_comp_modifyDefFile nonblocker run.def SPINUP_ANALYTIC n
99        IGCM_comp_modifyDefFile nonblocker run.def SPINUP_PERIOD -1
100    fi
101
102    IGCM_comp_modifyDefFile nonblocker run.def STOMATE_HIST_DT ${STOMATE_WRITE_STEP}
103    IGCM_comp_modifyDefFile nonblocker run.def STOMATE_IPCC_HIST_DT ${STOMATE_WRITE_STEP}
104
105    if ( [ ${CumulPeriod} -eq 1 ] && [ "${config_SBG_Restart}" = "n" ] ) ; then
106        echo "STOMATE : without restart"
107        IGCM_comp_modifyDefFile blocker run.def STOMATE_RESTART_FILEIN NONE
108    else
109        IGCM_comp_modifyDefFile blocker run.def STOMATE_RESTART_FILEIN stomate_rest_in.nc
110    fi
111
112
113    # Special case using forcesoil executable
114    if [ -f forcesoil ] ; then
115        # Set STOMATE_CFORCING_NAME
116        IGCM_comp_modifyDefFile nonblocker run.def STOMATE_CFORCING_NAME stomate_Cforcing.nc
117
118        # Check if restart file is missing
119        if ( [ ${CumulPeriod} -eq 1 ] && [ "${config_SBG_Restart}" = "n" ] ) ; then
120            IGCM_debug_Exit "YOU MUST USE OLD STOMATE RESTART FILE WITH THE JOB FORCESOIL."
121            IGCM_debug_Verif_Exit
122        fi
123    else
124        IGCM_comp_modifyDefFile nonblocker run.def STOMATE_CFORCING_NAME NONE
125    fi
126
127    IGCM_debug_PopStack "SBG_Update"
128}
129
130#-----------------------------------------------------------------
131function SBG_Finalize
132{
133    IGCM_debug_PushStack "SBG_Finalize"
134
135#   Check if equilibrium is reached for spinup analytic
136#   and if true stop the simulation in the end of this period.
137    if [ X${stomate_UserChoices_SPINUP_ANALYTIC} = Xy ] ; then
138      CondSpinup=$(grep -a  "Equilibrium for carbon pools is reached"  out_*)
139      if [ X"${CondSpinup}" != X ] ; then
140          IGCM_debug_Print 1 "SPINUP ANALYTIC :  your spinup is successful :"
141          IGCM_debug_Print 1 ${CondSpinup}
142          IGCM_debug_Print 1  "You can now stop the simulation if you want."
143      fi
144    fi
145
146    IGCM_debug_PopStack "SBG_Finalize"
147}
Note: See TracBrowser for help on using the repository browser.