source: CONFIG/UNIFORM/v6/IPSLCM6.3/GENERAL/DRIVER/lmdz.driver @ 6628

Last change on this file since 6628 was 6628, checked in by acosce, 9 months ago

Add experiment for coupled model with INCA GES and CO2 coupled between atm and oce
fixe some typo, and try to find the best way to generalize all ESM experiments

File size: 27.9 KB
Line 
1#!/bin/ksh
2#-----------------------------------------------------------------
3function ATM_Initialize
4{
5    IGCM_debug_PushStack "ATM_Initialize"
6
7    # Read the resolution from the variables ResolAtm set in config.card UserChoices section or from .resol file
8    if [ X$ResolAtm != X ] ; then
9        # ResolAtm is set in config.card
10        RESOL_ATM_3D=${ResolAtm}
11    elif [ -f ${SUBMIT_DIR}/../.resol ] ; then
12        # ResolAtm was not set in config.card, try to read .resol file
13        eval $(grep RESOL_ATM_3D ${SUBMIT_DIR}/../.resol) || RESOL_ATM_3D=96x95x39
14    else
15        IGCM_debug_Exit "ResolAtm is not set in config.card and the .resol file does not exist."
16        IGCM_debug_Verif_Exit
17    fi
18   
19    IGCM_debug_Print 1 "The atomsopheric resolution is ${RESOL_ATM_3D} " 
20
21    RESOL_ATM_Z=$( echo ${RESOL_ATM_3D} | awk "-Fx" '{print $3}' )
22    RESOL_ATM_X=$( echo ${RESOL_ATM_3D} | awk "-Fx" '{print $1}' )
23    RESOL_ATM_Y=$( echo ${RESOL_ATM_3D} | awk "-Fx" '{print $2}' )
24    RESOL_ATM_XY="${RESOL_ATM_X}x${RESOL_ATM_Y}"
25    RESOL_ATM=LMD${RESOL_ATM_X}${RESOL_ATM_Y}
26
27    ##- LMDZ physics version
28    ##  Read LMDZ_Physics option in lmdz.card, if not present take default value AP (old physics)
29    if [ ! X${lmdz_UserChoices_LMDZ_Physics} = X ] ; then
30        LMDZ_Physics=${lmdz_UserChoices_LMDZ_Physics}
31    else
32        LMDZ_Physics=AP
33    fi
34    echo LMDZ physics version : ${LMDZ_Physics}
35
36    ##- Create_etat0_limit version
37    ##  Define variable CREATE only if it is set in lmdz.card section UserChoices.
38    ##  This variable is only used in lmdz.card to choose input files.
39    if [ ! X${lmdz_UserChoices_CREATE} = X ] ; then
40        IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/COMP/lmdz.card UserChoices CREATE
41        CREATE=${lmdz_UserChoices_CREATE}
42        echo create_etat0_limit version : ${CREATE}
43    fi
44
45
46    ## - LMDZ choice of config.def file
47    ##   ConfType must be set in lmdz.card
48    ConfType=${lmdz_UserChoices_ConfType}
49
50    IGCM_debug_PopStack "ATM_Initialize"
51}
52
53#-----------------------------------------------------------------
54function ATM_Update
55{
56    IGCM_debug_PushStack "ATM_Update"
57
58    ##-- GHG forcing :
59    ##   If forcing file exist in run directory, read values for the current year
60    ##   and set in config.def. If not use the default value set in config.def
61
62    # Read value for solaire from file SOLARANDVOLCANOES.txt. If file not existing, take DEFAULT value from file.
63    IGCM_debug_Print 1 "Note that the solaire parameter is here below changed but it is only used by LMDZ for old physics(AP and NPv3.2)"
64    IGCM_debug_Print 1 "For newer physics with iflag_rrtm=1 and ok_suntime_rrtm=y, the solar constant is instead taken from solarforcing.nc file"
65    if [ -f SOLARANDVOLCANOES.txt ] ; then
66        value=`grep Annee_${year} SOLARANDVOLCANOES.txt | awk -F= '{print $2}'`
67        if [ X"${value}" = X ] ; then
68            # The grep returned empty variable, stop execution
69            IGCM_debug_Exit "The file SOLARANDVOLCANOES.txt do not contain the current year."
70            IGCM_debug_Verif_Exit
71        fi
72    else
73        value=DEFAULT
74    fi
75    IGCM_comp_modifyDefFile nonblocker config.def solaire $value
76
77    # Read value for eccentricity from file Eccentricity.txt. If file not existing, take DEFAULT value from file.
78    if [ -f Eccentricity.txt ] ; then
79        value=`grep Annee_${year} Eccentricity.txt | awk -F= '{print $2}'`
80        if [ X"${value}" = X ] ; then
81            # The grep returned empty variable, stop execution
82            IGCM_debug_Exit "The file Eccentricity.txt do not contain the current year."
83            IGCM_debug_Verif_Exit
84        fi
85    else
86        value=DEFAULT
87    fi
88    IGCM_comp_modifyDefFile nonblocker config.def R_ecc $value
89
90    # Read value for obliquity from file Obliquity.txt. If file not existing, take DEFAULT value from file.
91    if [ -f Obliquity.txt ] ; then
92        value=`grep Annee_${year} Obliquity.txt | awk -F= '{print $2}'`
93        if [ X"${value}" = X ] ; then
94            # The grep returned empty variable, stop execution
95            IGCM_debug_Exit "The file Obliquity.txt do not contain the current year."
96            IGCM_debug_Verif_Exit
97        fi
98    else
99        value=DEFAULT
100    fi
101    IGCM_comp_modifyDefFile nonblocker config.def R_incl $value
102
103    # Read value for perihelie from file Perihelie.txt. If file not existing, take DEFAULT value from file.
104    if [ -f Perihelie.txt ] ; then
105        value=`grep Annee_${year} Perihelie.txt | awk -F= '{print $2}'`
106        if [ X"${value}" = X ] ; then
107            # The grep returned empty variable, stop execution
108            IGCM_debug_Exit "The file Perihelie.txt do not contain the current year."
109            IGCM_debug_Verif_Exit
110        fi
111    else
112        value=DEFAULT
113    fi
114    IGCM_comp_modifyDefFile nonblocker config.def R_peri $value
115
116    # Read value for co2_ppm from file CO2.txt. If file not existing, take DEFAULT value from file.
117    # Calculate co2_ppm_per as co2_ppm*4.
118    if [ -f CO2.txt ] ; then
119        value=`grep Annee_${year} CO2.txt | awk -F= '{print $2}'`
120        if [ X"${value}" = X ] ; then
121            # The grep returned empty variable, stop execution
122            IGCM_debug_Exit "The file CO2.txt do not contain the current year."
123            IGCM_debug_Verif_Exit
124        fi
125        value4=`grep Annee_${year} CO2.txt | awk -F= '{print $2 * 4}'`
126    else
127        value=DEFAULT
128        value4=DEFAULT
129    fi
130    IGCM_comp_modifyDefFile nonblocker config.def co2_ppm $value
131    IGCM_comp_modifyDefFile nonblocker config.def co2_ppm_per $value4
132
133
134    # Read value for CH4_ppb from file CH4.txt. If file not existing, take DEFAULT value from file.
135    if [ -f CH4.txt ] ; then
136        value=`grep Annee_${year} CH4.txt | awk -F= '{print $2}'`
137        if [ X"${value}" = X ] ; then
138            # The grep returned empty variable, stop execution
139            IGCM_debug_Exit "The file CH4.txt do not contain the current year."
140            IGCM_debug_Verif_Exit
141        fi
142    else
143        value=DEFAULT
144    fi
145    IGCM_comp_modifyDefFile nonblocker config.def CH4_ppb $value
146
147
148    # Read value for N2O_ppb from file N2O.txt. If file not existing, take DEFAULT value from file.
149    if [ -f N2O.txt ] ; then
150        value=`grep Annee_${year} N2O.txt | awk -F= '{print $2}'`
151        if [ X"${value}" = X ] ; then
152            # The grep returned empty variable, stop execution
153            IGCM_debug_Exit "The file N2O.txt do not contain the current year."
154            IGCM_debug_Verif_Exit
155        fi
156    else
157        value=DEFAULT
158    fi
159    IGCM_comp_modifyDefFile nonblocker config.def N2O_ppb $value
160
161    # Read value for CFC11_ppt from file CFC11.txt. If file not existing, take DEFAULT value from file.
162    if [ -f CFC11.txt ] ; then
163        value=`grep Annee_${year} CFC11.txt | awk -F= '{print $2}'`
164        if [ X"${value}" = X ] ; then
165            # The grep returned empty variable, stop execution
166            IGCM_debug_Exit "The file CFC11.txt do not contain the current year."
167            IGCM_debug_Verif_Exit
168        fi
169    else
170        value=DEFAULT
171    fi
172    IGCM_comp_modifyDefFile nonblocker config.def CFC11_ppt $value
173
174
175    # Read value for CFC12_ppt from file CFC12.txt. If file not existing, take DEFAULT value from file.
176    if [ -f CFC12.txt ] ; then
177        value=`grep Annee_${year} CFC12.txt | awk -F= '{print $2}'`
178        if [ X"${value}" = X ] ; then
179            # The grep returned empty variable, stop execution
180            IGCM_debug_Exit "The file CFC12.txt do not contain the current year."
181            IGCM_debug_Verif_Exit
182        fi
183    else
184        value=DEFAULT
185    fi
186    IGCM_comp_modifyDefFile nonblocker config.def CFC12_ppt $value
187
188
189    ## Coupling Time Step : Take value of FreqCoupling set in oasis.card or if it is not set, take default value 86400
190    LMDZ_t_coupl=${oasis_UserChoices_FreqCoupling:-86400}
191    IGCM_debug_Print 3 "LMDZ_t_coupl "   ${LMDZ_t_coupl}
192    IGCM_comp_modifyDefFile nonblocker config.def t_coupl   ${LMDZ_t_coupl} 
193
194
195
196    ## Activate diagnostic output files and set output_level for each file
197
198    # histmth
199    if [ X${lmdz_UserChoices_output_level_histmth} = X ] || [ X${lmdz_UserChoices_output_level_histmth} = XNONE ] ; then
200        IGCM_comp_modifyXmlFile nonblocker file_def_histmth_lmdz.xml histmth enabled FALSE
201        IGCM_comp_modifyXmlFile nonblocker file_def_histmth_lmdz.xml histmth output_level 0
202    else
203        IGCM_comp_modifyXmlFile nonblocker file_def_histmth_lmdz.xml histmth enabled TRUE
204        IGCM_comp_modifyXmlFile nonblocker file_def_histmth_lmdz.xml histmth output_level ${lmdz_UserChoices_output_level_histmth} 
205    fi
206
207    # histday
208    if [ X${lmdz_UserChoices_output_level_histday} = X ] || [ X${lmdz_UserChoices_output_level_histday} = XNONE ] ; then
209        IGCM_comp_modifyXmlFile nonblocker file_def_histday_lmdz.xml histday enabled FALSE
210        IGCM_comp_modifyXmlFile nonblocker file_def_histday_lmdz.xml histday output_level 0
211    else
212        IGCM_comp_modifyXmlFile nonblocker file_def_histday_lmdz.xml histday enabled TRUE
213        IGCM_comp_modifyXmlFile nonblocker file_def_histday_lmdz.xml histday output_level ${lmdz_UserChoices_output_level_histday} 
214    fi
215
216    # histhf
217    if [ X${lmdz_UserChoices_output_level_histhf} = X ] || [ X${lmdz_UserChoices_output_level_histhf} = XNONE ] ; then
218        IGCM_comp_modifyXmlFile nonblocker file_def_histhf_lmdz.xml histhf enabled FALSE
219        IGCM_comp_modifyXmlFile nonblocker file_def_histhf_lmdz.xml histhf output_level 0
220    else
221        IGCM_comp_modifyXmlFile nonblocker file_def_histhf_lmdz.xml histhf enabled TRUE
222        IGCM_comp_modifyXmlFile nonblocker file_def_histhf_lmdz.xml histhf output_level ${lmdz_UserChoices_output_level_histhf} 
223    fi
224
225    # histmthNMC
226    if [ X${lmdz_UserChoices_output_level_histmthNMC} = X ] || [ X${lmdz_UserChoices_output_level_histmthNMC} = XNONE ] ; then
227        IGCM_comp_modifyXmlFile nonblocker file_def_histmthNMC_lmdz.xml histmthNMC enabled FALSE
228        IGCM_comp_modifyXmlFile nonblocker file_def_histmthNMC_lmdz.xml histmthNMC output_level 0
229    else
230        IGCM_comp_modifyXmlFile nonblocker file_def_histmthNMC_lmdz.xml histmthNMC enabled TRUE
231        IGCM_comp_modifyXmlFile nonblocker file_def_histmthNMC_lmdz.xml histmthNMC output_level ${lmdz_UserChoices_output_level_histmthNMC} 
232    fi
233
234    # histdayNMC
235    if [ X${lmdz_UserChoices_output_level_histdayNMC} = X ] || [ X${lmdz_UserChoices_output_level_histdayNMC} = XNONE ] ; then
236        IGCM_comp_modifyXmlFile nonblocker file_def_histdayNMC_lmdz.xml histdayNMC enabled FALSE
237        IGCM_comp_modifyXmlFile nonblocker file_def_histdayNMC_lmdz.xml histdayNMC output_level 0
238    else
239        IGCM_comp_modifyXmlFile nonblocker file_def_histdayNMC_lmdz.xml histdayNMC enabled TRUE
240        IGCM_comp_modifyXmlFile nonblocker file_def_histdayNMC_lmdz.xml histdayNMC output_level ${lmdz_UserChoices_output_level_histdayNMC} 
241    fi
242
243    # histhfNMC
244    if [ X${lmdz_UserChoices_output_level_histhfNMC} = X ] || [ X${lmdz_UserChoices_output_level_histhfNMC} = XNONE ] ; then
245        IGCM_comp_modifyXmlFile nonblocker file_def_histhfNMC_lmdz.xml histhfNMC enabled FALSE
246        IGCM_comp_modifyXmlFile nonblocker file_def_histhfNMC_lmdz.xml histhfNMC output_level 0
247    else
248        IGCM_comp_modifyXmlFile nonblocker file_def_histhfNMC_lmdz.xml histhfNMC enabled TRUE
249        IGCM_comp_modifyXmlFile nonblocker file_def_histhfNMC_lmdz.xml histhfNMC output_level ${lmdz_UserChoices_output_level_histhfNMC} 
250    fi
251
252    # histstrataer
253    if [ X${lmdz_UserChoices_output_level_histstrataer} = X ] || [ X${lmdz_UserChoices_output_level_histstrataer} = XNONE ] ; then
254        IGCM_comp_modifyXmlFile nonblocker file_def_histstrataer_lmdz.xml histstrataer enabled FALSE
255        IGCM_comp_modifyXmlFile nonblocker file_def_histstrataer_lmdz.xml histstrataer output_level 0
256    else
257        IGCM_comp_modifyXmlFile nonblocker file_def_histstrataer_lmdz.xml histstrataer enabled TRUE
258        IGCM_comp_modifyXmlFile nonblocker file_def_histstrataer_lmdz.xml histstrataer output_level ${lmdz_UserChoices_output_level_histstrataer} 
259    fi
260
261    # histdaystrataer
262    if [ X${lmdz_UserChoices_output_level_histdaystrataer} = X ] || [ X${lmdz_UserChoices_output_level_histdaystrataer} = XNONE ] ; then
263        IGCM_comp_modifyXmlFile nonblocker file_def_histdaystrataer_lmdz.xml histdaystrataer enabled FALSE
264        IGCM_comp_modifyXmlFile nonblocker file_def_histdaystrataer_lmdz.xml histdaystrataer output_level 0
265    else
266        IGCM_comp_modifyXmlFile nonblocker file_def_histdaystrataer_lmdz.xml histdaystrataer enabled TRUE
267        IGCM_comp_modifyXmlFile nonblocker file_def_histdaystrataer_lmdz.xml histdaystrataer output_level ${lmdz_UserChoices_output_level_histdaystrataer}
268    fi
269
270    # histstn
271    if [ X${lmdz_UserChoices_output_level_histstn} = X ] || [ X${lmdz_UserChoices_output_level_histstn} = XNONE ] ; then
272        IGCM_comp_modifyXmlFile nonblocker file_def_histstn_lmdz.xml histstn enabled FALSE
273        IGCM_comp_modifyXmlFile nonblocker file_def_histstn_lmdz.xml histstn output_level 0
274    else
275        IGCM_comp_modifyXmlFile nonblocker file_def_histstn_lmdz.xml histstn enabled TRUE
276        IGCM_comp_modifyXmlFile nonblocker file_def_histstn_lmdz.xml histstn output_level ${lmdz_UserChoices_output_level_histstn} 
277    fi
278
279
280    # histmthCOSP
281    if [ X${lmdz_UserChoices_output_level_histmthCOSP} = X ] || [ X${lmdz_UserChoices_output_level_histmthCOSP} = XNONE ] ; then
282        IGCM_comp_modifyXmlFile nonblocker file_def_histmthCOSP_lmdz.xml histmthCOSP enabled FALSE
283        IGCM_comp_modifyXmlFile nonblocker file_def_histmthCOSP_lmdz.xml histmthCOSP output_level 0
284    else
285        IGCM_comp_modifyXmlFile nonblocker file_def_histmthCOSP_lmdz.xml histmthCOSP enabled TRUE
286        IGCM_comp_modifyXmlFile nonblocker file_def_histmthCOSP_lmdz.xml histmthCOSP output_level ${lmdz_UserChoices_output_level_histmthCOSP} 
287    fi
288
289
290    # histdayCOSP
291    if [ X${lmdz_UserChoices_output_level_histdayCOSP} = X ] || [ X${lmdz_UserChoices_output_level_histdayCOSP} = XNONE ] ; then
292        IGCM_comp_modifyXmlFile nonblocker file_def_histdayCOSP_lmdz.xml histdayCOSP enabled FALSE
293        IGCM_comp_modifyXmlFile nonblocker file_def_histdayCOSP_lmdz.xml histdayCOSP output_level 0
294    else
295        IGCM_comp_modifyXmlFile nonblocker file_def_histdayCOSP_lmdz.xml histdayCOSP enabled TRUE
296        IGCM_comp_modifyXmlFile nonblocker file_def_histdayCOSP_lmdz.xml histdayCOSP output_level ${lmdz_UserChoices_output_level_histdayCOSP} 
297    fi
298
299
300    # histhfCOSP
301    if [ X${lmdz_UserChoices_output_level_histhfCOSP} = X ] || [ X${lmdz_UserChoices_output_level_histhfCOSP} = XNONE ] ; then
302        IGCM_comp_modifyXmlFile nonblocker file_def_histhfCOSP_lmdz.xml histhfCOSP enabled FALSE
303        IGCM_comp_modifyXmlFile nonblocker file_def_histhfCOSP_lmdz.xml histhfCOSP output_level 0
304    else
305        IGCM_comp_modifyXmlFile nonblocker file_def_histhfCOSP_lmdz.xml histhfCOSP enabled TRUE
306        IGCM_comp_modifyXmlFile nonblocker file_def_histhfCOSP_lmdz.xml histhfCOSP output_level ${lmdz_UserChoices_output_level_histhfCOSP} 
307    fi
308
309
310    ## run.def parameters
311
312
313    ##-- Remise ou non a zero de la date initiale de LMDZ pour le fichier run.def
314    if [ ${CumulPeriod} -eq 1 ] ; then
315        IGCM_comp_modifyDefFile blocker run.def raz_date  1
316    else
317        IGCM_comp_modifyDefFile blocker run.def raz_date  0
318    fi
319
320    ##-- Calendar type for LMDZ and create_etat0_limit
321    case ${config_UserChoices_CalendarType} in
322        leap|gregorian)
323            IGCM_comp_modifyDefFile blocker run.def calend  gregorian ;;
324        noleap)
325            IGCM_comp_modifyDefFile blocker run.def calend  earth_365d ;;
326        360d)
327            IGCM_comp_modifyDefFile blocker run.def calend  earth_360d ;;
328        *)
329            IGCM_comp_modifyDefFile blocker run.def calend  earth_360d ;;
330    esac
331
332    IGCM_comp_modifyDefFile blocker run.def dayref    ${InitDay}
333    IGCM_comp_modifyDefFile blocker run.def nday      ${PeriodLengthInDays}
334
335    # Set anneeref different for gcm and ce0l
336    # Test if executable create_etat0_limit is present and lmdz.x is not present
337    if [ -f create_etat0_limit* ] || [ -f ce0l* ] && [ ! -f lmdz.x ] ; then
338        # for case ce0l : always take current year
339        IGCM_comp_modifyDefFile blocker run.def anneeref ${year}
340
341        # Temporary, set use_filtre_fft=n because we now use dyn3d for ce0l version where fft is not implemented.
342        # In more recent versions of LMDZ, this will not be needed.
343        IGCM_comp_modifyDefFile force   run.def use_filtre_fft n
344    else
345        # for case gcm : take first year of simulation
346        IGCM_comp_modifyDefFile blocker run.def anneeref ${InitYear}
347    fi
348
349    ## Determine from the variable ListOfComponents in config.card coupling to external models
350    ## and set corresponding parameters in run.def
351    echo ListOfComponents now running : ${config_ListOfComponents[*]}
352
353    if [ X${config_ListOfComponents_SRF} = Xorchidee ] ; then
354        echo "Activate ORCHIDEE, set VEGET=y in run.def"
355        IGCM_comp_modifyDefFile blocker run.def VEGET y
356    else
357        echo "No ORCHIDEE, set VEGET=n in run.def"
358        IGCM_comp_modifyDefFile blocker run.def VEGET n
359    fi
360
361    if [ X${config_ListOfComponents_CPL} = Xoasis ] ; then
362        echo "Activate coupling to ocean, set type_ocean=couple in run.def"
363        IGCM_comp_modifyDefFile blocker run.def type_ocean couple
364    else
365        echo "LMDZ is running in forced mode without ocean model, set type_ocean=force in run.def"
366        IGCM_comp_modifyDefFile nonblocker run.def type_ocean force
367    fi
368
369    if   [ X${config_ListOfComponents_CHM} = Xinca ] && [ X${ConfigType:0:3} = XESM ] ; then
370        echo "ESM config, with INCA and CO2i, set type_trac=inco in run.def"
371        IGCM_comp_modifyDefFile blocker run.def type_trac inco
372        IGCM_comp_modifyDefFile blocker run.def iflag_phytrac 1
373        # Add CO2 in tracer.def to coupled inca and lmdz_co2
374        echo '&co2i' >> tracer.def
375        echo 'default hadv=10 vadv=10 phases=g type=tracer parent=air' >> tracer.def
376        echo 'CO2' >> tracer.def
377
378    elif [ X${config_ListOfComponents_CHM} = Xinca ] ; then
379        echo "Activate coupling to INCA, set type_trac=inca in run.def"
380        IGCM_comp_modifyDefFile blocker run.def type_trac inca
381        IGCM_comp_modifyDefFile blocker run.def iflag_phytrac 1 
382    elif [ X${config_ListOfComponents_CHM} = Xreprobus ] ; then
383        echo "Activate coupling to REPROBUS, set type_trac=repr in run.def"
384        IGCM_comp_modifyDefFile blocker run.def type_trac repr
385        IGCM_comp_modifyDefFile blocker run.def config_inca none
386        IGCM_comp_modifyDefFile blocker run.def iflag_phytrac 1 
387    elif [ X${config_UserChoices_ConfigType} = XESMCO2 ] ; then
388        echo "ESM config, set type_trac=co2i in run.def"
389        IGCM_comp_modifyDefFile blocker run.def type_trac co2i
390        IGCM_comp_modifyDefFile blocker run.def config_inca none
391    IGCM_comp_modifyDefFile blocker run.def iflag_phytrac 1
392    elif [ X${lmdz_UserChoices_LMDZ_strataero} = Xy ] ; then
393        echo "No coupling to chemistry model but it is a LMDZ STRATAER configuration, set type_trac=coag in run.def"
394        IGCM_comp_modifyDefFile blocker run.def type_trac coag
395        IGCM_comp_modifyDefFile blocker run.def config_inca none
396        IGCM_comp_modifyDefFile blocker run.def iflag_phytrac 1 
397    else
398        echo "No coupling to chemistry model, set type_trac=lmdz in run.def"
399        IGCM_comp_modifyDefFile blocker run.def type_trac lmdz
400        IGCM_comp_modifyDefFile blocker run.def config_inca none
401        IGCM_comp_modifyDefFile blocker run.def iflag_phytrac 0
402    fi
403
404    # run.def : Activate the new calving
405    if [ ! X${lmdz_UserChoices_cpl_old_calving} = X ]; then
406        IGCM_comp_modifyDefFile nonblocker run.def cpl_old_calving ${lmdz_UserChoices_cpl_old_calving}
407    else
408        IGCM_comp_modifyDefFile nonblocker run.def cpl_old_calving y
409    fi 
410
411    # physiq.def : Activate the call to phytrac
412    if [ ! X${lmdz_UserChoices_ok_bug_cv_trac} = X ]; then
413        IGCM_comp_modifyDefFile nonblocker physiq.def ok_bug_cv_trac  ${lmdz_UserChoices_ok_bug_cv_trac}
414    else
415        IGCM_comp_modifyDefFile nonblocker physiq.def ok_bug_cv_trac  n
416    fi 
417
418    # config.def : Activate aerosol strato
419    if [ ! X${lmdz_UserChoices_flag_aerosol_strat} = X ]; then
420        IGCM_comp_modifyDefFile nonblocker config.def flag_aerosol_strat ${lmdz_UserChoices_flag_aerosol_strat}
421    else
422        IGCM_comp_modifyDefFile nonblocker config.def flag_aerosol_strat DEFAULT
423    fi 
424
425    # config.def : Activate direct radiative effect if ok_ade=y
426    if [ ! X${lmdz_UserChoices_ok_ade} = X ]; then
427        IGCM_comp_modifyDefFile nonblocker config.def ok_ade ${lmdz_UserChoices_ok_ade}
428    else
429        IGCM_comp_modifyDefFile nonblocker config.def ok_ade n
430    fi 
431
432    # config.def : Activate indirect radiative effect if ok_aie=y
433    if [ ! X${lmdz_UserChoices_ok_aie} = X ]; then
434        IGCM_comp_modifyDefFile nonblocker config.def ok_aie ${lmdz_UserChoices_ok_aie}
435    else
436        IGCM_comp_modifyDefFile nonblocker config.def ok_aie n
437    fi 
438
439    # config.def : Activate online aerosol coupled model if aerosol_couple=y
440    if [ ! X${lmdz_UserChoices_aerosol_couple} = X ]; then
441        IGCM_comp_modifyDefFile nonblocker config.def aerosol_couple ${lmdz_UserChoices_aerosol_couple}
442    else
443        IGCM_comp_modifyDefFile nonblocker config.def aerosol_couple n
444    fi 
445
446    # config.def : Activate online Ozone chemistry coupled model if chemistry_couple=y
447    if [ ! X${lmdz_UserChoices_chemistry_couple} = X ]; then
448        IGCM_comp_modifyDefFile nonblocker config.def chemistry_couple ${lmdz_UserChoices_chemistry_couple}
449    else
450        IGCM_comp_modifyDefFile nonblocker config.def chemistry_couple n
451    fi 
452
453    # config.def : Activate reading of ozone in climatology if read_climoz=2
454    if [ ! X${lmdz_UserChoices_read_climoz} = X ]; then
455        IGCM_comp_modifyDefFile nonblocker config.def read_climoz ${lmdz_UserChoices_read_climoz}
456    else
457        IGCM_comp_modifyDefFile nonblocker config.def read_climoz 0     
458    fi 
459
460    # config.def : Choose aerosol use in radiative effect
461    #  type of coupled aerosol =1 (default) =2 => bc  only =3 => pom only =4 => seasalt only
462    # =5 => dust only =6 => all aerosol   
463    if [ ! X${lmdz_UserChoices_flag_aerosol} = X ]; then
464        IGCM_comp_modifyDefFile nonblocker config.def flag_aerosol ${lmdz_UserChoices_flag_aerosol}
465    else
466        IGCM_comp_modifyDefFile nonblocker config.def flag_aerosol 0
467    fi 
468
469    # config.def : Activate calcul of Cloud droplet number concentration if ok_cdnc=y
470    if [ ! X${lmdz_UserChoices_ok_cdnc} = X ]; then
471        IGCM_comp_modifyDefFile nonblocker config.def ok_cdnc ${lmdz_UserChoices_ok_cdnc}
472    else
473        IGCM_comp_modifyDefFile nonblocker config.def ok_cdnc n
474    fi 
475
476    # config.def : Activate COSP
477    if [ ! X${lmdz_UserChoices_LMDZ_COSP_OK} = X ]; then
478        IGCM_comp_modifyDefFile nonblocker config.def ok_cosp ${lmdz_UserChoices_LMDZ_COSP_OK}
479    else
480        IGCM_comp_modifyDefFile nonblocker config.def ok_cosp n
481    fi 
482
483    # config.def : Modify parameter pmagic if it is set in lmdz.card
484    if [ ! X${lmdz_UserChoices_pmagic} = X ]; then
485        IGCM_comp_modifyDefFile nonblocker config.def pmagic ${lmdz_UserChoices_pmagic}
486    else
487        # Take default value set in config.def
488        IGCM_comp_modifyDefFile nonblocker config.def pmagic DEFAULT
489    fi
490
491    if ( [ X${config_UserChoices_ConfigType} = XESMCO2 ] || [ X${config_UserChoices_ConfigType} = XESMCO2CHEM ] ) ; then
492        # Set carbon cycle parameters according to parmeters in lmdz.card
493        IGCM_comp_modifyDefFile blocker config.def level_coupling_esm 2
494        IGCM_comp_modifyDefFile blocker config.def carbon_cycle_cpl ${lmdz_UserChoices_carbon_cycle_cpl} 
495        IGCM_comp_modifyDefFile blocker config.def carbon_cycle_tr ${lmdz_UserChoices_carbon_cycle_tr}
496        IGCM_comp_modifyDefFile blocker config.def carbon_cycle_rad ${lmdz_UserChoices_carbon_cycle_rad}
497        IGCM_comp_modifyDefFile nonblocker config.def co2_ppm0 ${lmdz_UserChoices_co2_ppm0} 
498    else
499        # Take default value set in config.def
500        IGCM_comp_modifyDefFile nonblocker config.def level_coupling_esm DEFAULT
501        IGCM_comp_modifyDefFile nonblocker config.def carbon_cycle_cpl DEFAULT
502        IGCM_comp_modifyDefFile nonblocker config.def carbon_cycle_tr DEFAULT
503        IGCM_comp_modifyDefFile nonblocker config.def carbon_cycle_rad DEFAULT
504        IGCM_comp_modifyDefFile nonblocker config.def co2_ppm0 DEFAULT
505    fi
506
507    if ( [ X${config_UserChoices_ConfigType} = XESMCO2 ] ) ; then
508        # Set carbon cycle parameters according to parmeters in lmdz.card
509        IGCM_comp_modifyDefFile nonblocker config.def read_fco2_ocean_cor ${lmdz_UserChoices_read_fco2_ocean_cor}
510        IGCM_comp_modifyDefFile nonblocker config.def var_fco2_ocean_cor ${lmdz_UserChoices_var_fco2_ocean_cor}
511        IGCM_comp_modifyDefFile nonblocker config.def read_fco2_land_cor ${lmdz_UserChoices_read_fco2_land_cor}
512        IGCM_comp_modifyDefFile nonblocker config.def var_fco2_land_cor ${lmdz_UserChoices_var_fco2_land_cor}
513    else
514        IGCM_comp_modifyDefFile nonblocker config.def read_fco2_ocean_cor DEFAULT
515        IGCM_comp_modifyDefFile nonblocker config.def var_fco2_ocean_cor DEFAULT
516        IGCM_comp_modifyDefFile nonblocker config.def read_fco2_land_cor DEFAULT
517        IGCM_comp_modifyDefFile nonblocker config.def var_fco2_land_cor DEFAULT
518    fi
519
520    # config.def : Modify parameter ok_volcan if ok_volcan=y or LMDZ_strataero=y in lmdz.card
521    # Note: ok_volcan is a flag allowing a double-call with/without natural forcing (instead of with/without anthro forcing).
522    if [ ! X${lmdz_UserChoices_ok_volcan} = X ] || [ X${lmdz_UserChoices_LMDZ_strataero} = Xy ] ; then
523        IGCM_comp_modifyDefFile nonblocker config.def ok_volcan ${lmdz_UserChoices_ok_volcan}
524    else
525        # Take default value set in config.def
526        IGCM_comp_modifyDefFile nonblocker config.def ok_volcan DEFAULT
527    fi
528
529    # physiq.def : Modify parameter tau_gl if it is set in lmdz.card
530    if [ ! X${lmdz_UserChoices_tau_gl} = X ]; then
531        IGCM_comp_modifyDefFile nonblocker physiq.def tau_gl ${lmdz_UserChoices_tau_gl}
532    else
533        # Take default value set in physiq.def
534        IGCM_comp_modifyDefFile nonblocker physiq.def tau_gl DEFAULT
535    fi
536   
537
538    # guide.def : Activate nudging if ok_guide=y set in lmdz.card
539    if [ ! X${lmdz_UserChoices_ok_guide} = X ] ; then
540        IGCM_comp_modifyDefFile nonblocker guide.def ok_guide  ${lmdz_UserChoices_ok_guide}
541    else
542        IGCM_comp_modifyDefFile nonblocker guide.def ok_guide n
543    fi
544
545
546    ## Read ByPass_hgardfou_teta option in lmdz.card --> divide teta* by 2 if [ $ByPass_hgardfou_teta = 1 ]
547    ByPass_hgardfou_teta=${lmdz_UserChoices_ByPass_hgardfou_teta}
548    if [ X"${ByPass_hgardfou_teta}" = X"y" ] ; then
549        awk '{ if ($0 ~ /^teta.*=/) {split($0,a,"=") ; print a[1]"="a[2]/2"."} else print $0}' gcm.def > gcm.def.tmp
550        IGCM_sys_Mv gcm.def.tmp gcm.def
551        echo
552        IGCM_debug_Print 1 "ByPass_hgardfou_teta : ^teta*/2 in gcm.def"
553        echo
554        cat gcm.def
555        ByPass_hgardfou_teta=n
556    export lmdz_UserChoices_ByPass_hgardfou_teta=n
557        IGCM_card_WriteOption ${SUBMIT_DIR}/COMP/lmdz.card UserChoices ByPass_hgardfou_teta "${ByPass_hgardfou_teta}"
558    fi
559
560    ## Read ByPass_hgardfou_mats option in lmdz.card --> purmats=y 2 if [ $ByPass_hgardfou_mats = 1 ]
561    ByPass_hgardfou_mats=${lmdz_UserChoices_ByPass_hgardfou_mats}
562    if [ X"${ByPass_hgardfou_mats}" = X"y" ] ; then
563        sed -e "s/^purmats=.*/purmats=y/" gcm.def > gcm.def.tmp
564        IGCM_sys_Mv gcm.def.tmp gcm.def
565        echo
566        IGCM_debug_Print 1 "ByPass_hgardfou_mats : purmats=y in gcm.def"
567        echo
568        cat gcm.def
569        ByPass_hgardfou_mats=n
570        export lmdz_UserChoices_ByPass_hgardfou_mats=n
571        IGCM_card_WriteOption ${SUBMIT_DIR}/COMP/lmdz.card UserChoices ByPass_hgardfou_mats "${ByPass_hgardfou_mats}"
572    fi
573
574    # Add include of LMDZ context in iodef.xml
575    # In iodef.xml add on the next line after "COMPONENT CONTEXT"
576    echo '<context id="LMDZ" src="./context_lmdz.xml"/>' > add.tmp
577    # Add inclusion of file context_input_lmdz.xml if this file exists
578    if [ -f context_input_lmdz.xml ] ; then
579        echo '<context id="LMDZ" src="./context_input_lmdz.xml"/>' >> add.tmp
580    fi
581    # Include xml files for output configuration if running with workflow CMIP6
582    if ( [ X"$( echo ${config_UserChoices_ExpType} | grep CMIP6 )" != "X" ] || [ X${config_Post_dr2xmlIPSL} = XTRUE ] ) ; then
583        echo '<context id="LMDZ" src="./ping_lmdz.xml"/>' >> add.tmp
584    echo '<context id="LMDZ" src="./dr2xml_lmdz.xml"/>' >> add.tmp
585    fi
586    cp iodef.xml iodef.xml.tmp
587    sed -e "/COMPONENT CONTEXT/r add.tmp" iodef.xml.tmp > iodef.xml
588    rm iodef.xml.tmp add.tmp
589
590    #Long Name as global attribute (if LongName is not empty)
591    if [ ! "X${config_UserChoices_LongName}" = "X" ] ; then
592        listfile=$(ls file_def*lmdz.xml)
593        echo "<variable id=\"LongName\" type=\"string\">${config_UserChoices_LongName}</variable>" > add.tmp
594        for file in ${listfile}
595        do
596            cp ${file} ${file}.tmp
597            sed -e "/<file id/r add.tmp" \
598                ${file}.tmp > ${file}
599            rm ${file}.tmp
600        done
601        rm add.tmp
602    fi
603
604    # Compression level (if CompressionLevel is not empty)
605    if [ ! "X${config_UserChoices_CompressionLevel}" = "X" ] ; then
606    echo "NetCDF output files compression level is " ${config_UserChoices_CompressionLevel}
607    listfile=$(ls file_def*lmdz.xml)
608    for file in ${listfile} ; do
609        sed -i -e "s/\(compression_level=\"\)[^\"]*\(\"\)/\1${config_UserChoices_CompressionLevel}\2/" ${file}
610    done
611    fi
612
613           
614    IGCM_debug_PopStack "ATM_Update"
615}
616
617#-----------------------------------
618function ATM_Finalize
619{
620    IGCM_debug_PushStack "ATM_Finalize"
621
622    IGCM_debug_Print 1 "FINALIZE ATM !"
623
624    IGCM_debug_PopStack "ATM_Finalize"
625}
626
Note: See TracBrowser for help on using the repository browser.