source: CONFIG/IPSLCM/IPSLCM5-2/piControl/COMP/lmdz.driver @ 1535

Last change on this file since 1535 was 1535, checked in by jgipsl, 13 years ago

Modifications in working configuration :

Modifications in lmdz.card and lmdz.driver

  • GHG forcing files should now be copied in files with standard names such as CO2.txt, CH4.txt, N2O.txt, CFC11.txt and CFC12.txt. Now the

lmdz.driver will update the GHG parameters in physiq.def as soon as one
of theses files are added in lmdz.card.

  • removed CO2_1765_2005.txt from Chistorical/COMP/lmdz.card, the file is not used in this experience

Modifications in pisces.driver and pisces.card

  • add option CARBON_CYCLE=y to be set in pisces.card section UserChoices? for experience Chistorical and CpiControl?. With this option, co2 will

be read from co2.log file as before.

  • modified pisces.driver to read co2 from file CO2.txt if existing. As done in lmdz.driver
  • all pisces.driver are now the same
File size: 9.9 KB
RevLine 
[396]1#!/bin/ksh
2#-----------------------------------------------------------------
[894]3function LMDZ_sed
4{
5    IGCM_debug_PushStack "LMDZ_sed"
6
[911]7    sed -e "s/^${2}\ *=.*/${2}= ${3}/" ${1} > ${1}.tmp
[894]8    RET=$?
9    echo "LMDZ_sed : ${1} ${2} ${3}"
10    \mv ${1}.tmp ${1}
11
12    IGCM_debug_PopStack "LMDZ_sed"
13    return $RET
14}
15
[396]16function ATM_Initialize
17{
18    IGCM_debug_PushStack "ATM_Initialize"
19
[671]20    RESOL_ATM=$( echo $RESOL | awk "-Fx" '{print $2}' | awk "-F-" '{print $1}')
[396]21
[659]22    [ -f ${SUBMIT_DIR}/../.resol ] && eval $(grep RESOL_ATM_3D ${SUBMIT_DIR}/../.resol) || RESOL_ATM_3D=96x95x19
[396]23
[659]24    RESOL_ATM_Z=$( echo ${RESOL_ATM_3D} | awk "-Fx" '{print $3}' )
[649]25
[697]26    ##-- Calendar type for LMDZ
27    case ${config_UserChoices_CalendarType} in
28        leap|gregorian)
29            CalendarTypeForLmdz=earth_366d;;
30        noleap)
31            CalendarTypeForLmdz=earth_365d;;
32        360d)
33            CalendarTypeForLmdz=earth_360d;;
34        *)
35            CalendarTypeForLmdz=earth_360d
36    esac
37
[396]38    ##--Frequency purpose ....
39    ##--  Initialisation  ....
40    OK_instan=n
41    OK_journe=n
42    OK_mensuel=n
43    ok_hf=n
44
45    case ${config_UserChoices_PeriodLength} in
46        1Y|1y|1M|1m) OK_mensuel=y ;;
47        5D|5d|1D|1d) OK_journe=y ;;
48    esac
49
50    for frequency in ${config_ATM_WriteFrequency} ; do
51        case ${frequency} in
52            5D|5d|1D|1d) OK_journe=y ;;
53        esac
54        case ${frequency} in
55            HF|hf) ok_hf=y ;;
56        esac
57    done
58
[902]59    ## Read LMDZ_NbPeriod_adjust option in lmdz.card
60    IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/COMP/lmdz.card UserChoices LMDZ_NbPeriod_adjust
[1172]61    LMDZ_NbPeriod_adjust=${lmdz_UserChoices_LMDZ_NbPeriod_adjust}
[396]62
[815]63    if [ ${LMDZ_NbPeriod_adjust} -eq 0 ] ; then
[902]64        IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/COMP/lmdz.card UserChoices LMDZ_Bands_file_name
[1172]65        LMDZ_Bands_file_name=${lmdz_UserChoices_LMDZ_Bands_file_name}
[815]66    fi
67
[912]68    ##  Read LMDZ_Freq_aero and LMDZ_Length_aero in lmdz.card
[1172]69    LMDZ_Freq_aero=${lmdz_UserChoices_LMDZ_Freq_aero}
70    LMDZ_Length_aero=${lmdz_UserChoices_LMDZ_Length_aero}
[912]71
[1001]72    ##  Read LMDZ_COSP_monthly  LMDZ_COSP_daily and LMDZ_COSP_hf in lmdz.card
[1172]73    LMDZ_COSP_OK=${lmdz_UserChoices_LMDZ_COSP_OK}
74    LMDZ_COSP_monthly=${lmdz_UserChoices_LMDZ_COSP_monthly}
75    LMDZ_COSP_daily=${lmdz_UserChoices_LMDZ_COSP_daily}
76    LMDZ_COSP_hf=${lmdz_UserChoices_LMDZ_COSP_hf}
[1001]77
[1003]78    ##  Read LMDZ_NMC_monthly  LMDZ_NMC_daily and LMDZ_NMC_hf in lmdz.card
[1172]79    LMDZ_NMC_monthly=${lmdz_UserChoices_LMDZ_NMC_monthly}
80    LMDZ_NMC_daily=${lmdz_UserChoices_LMDZ_NMC_daily}
81    LMDZ_NMC_hf=${lmdz_UserChoices_LMDZ_NMC_hf}
[1003]82
[396]83    IGCM_debug_PopStack "ATM_Initialize"
84}
85
86#-----------------------------------------------------------------
87function ATM_Update
88{
89    IGCM_debug_PushStack "ATM_Update"
90
[749]91    case ${config_UserChoices_PeriodLength} in
92        *Y|*y) 
93               LMDZ_ecrit_mth=30.
94               LMDZ_ecrit_ISCCP=30.
95               LMDZ_periodav=30.
[755]96               if [ "${config_UserChoices_CalendarType}" != "360d" ] ; then
[749]97                  echo Change calendartype in config.card. PeriodLength=1Y allowed only for CalendarType=360d
98                  exit
99               fi
100               ;;
101        *)
102               LMDZ_ecrit_mth=${PeriodLengthInDays}.
103               LMDZ_ecrit_ISCCP=${PeriodLengthInDays}.
104               LMDZ_periodav=${PeriodLengthInDays}.
105               ;;
106    esac
[396]107
108    ##-- Remise ou non a zero de la date initiale de LMDZ pour le fichier run.def
109    if [ ${CumulPeriod} -eq 1 ] ; then
110        RAZ_DATE=1
111    else
112        RAZ_DATE=0
113    fi
114
[815]115    ## algo : For CumulPeriod=1 ;
116    ##        IF NbPeriod_Adjust = 0, Get Bands file directly from server, store it with _0 suffix
117    ##        ELSE LMDZ_adjust=y ; save Bands file on file server ;
118    ##        For CumulPeriod=2 to LMDZ_NbPeriod_adjust ; Get Bands file from server (CumulPeriod-1) ; LMDZ_adjust=y ; save Bands file on file server ;
119    ##        For CumulPeriod > LMDZ_NbPeriod_adjust ; LMDZ_adjust=n ; Get Bands file from server (CumulPeriod=LMDZ_NbPeriod_adjust 0 to force it) ; Use Bands ;
120
121    if [ ${CumulPeriod} -eq 1 ] ; then
122        if [ ${LMDZ_NbPeriod_adjust} -eq 0 ] ; then
[902]123            IGCM_sys_Get ${LMDZ_Bands_file_name} Bands_${RESOL_ATM_3D}_${NUM_PROC_ATM}prc.dat ; IGCM_sys_Chmod u+w Bands_${RESOL_ATM_3D}_${NUM_PROC_ATM}prc.dat
[815]124            IGCM_sys_Put_Out Bands_${RESOL_ATM_3D}_${NUM_PROC_ATM}prc.dat ${R_OUT_ATM_D}/${config_UserChoices_JobName}_Bands_${RESOL_ATM_3D}_${NUM_PROC_ATM}prc.dat_0
125            IGCM_debug_Print 1 "Bands file forced to ${LMDZ_Bands_file_name} and stored in ${config_UserChoices_JobName}_Bands_${RESOL_ATM_3D}_${NUM_PROC_ATM}prc.dat_0"
126        fi
127    fi
128
[743]129    LMDZ_adjust=n
130    [ ${CumulPeriod} -le ${LMDZ_NbPeriod_adjust} ] && LMDZ_adjust=y
131
[815]132    RefPeriod=${LMDZ_NbPeriod_adjust} #0 to use a Bands file from Restart
133    [ ${CumulPeriod} -le ${LMDZ_NbPeriod_adjust} ] && (( RefPeriod = ${CumulPeriod} - 1 )) 
[743]134
[902]135    [ ${CumulPeriod} -gt 1 ] && ( IGCM_sys_Get ${R_OUT_ATM_D}/${config_UserChoices_JobName}_Bands_${RESOL_ATM_3D}_${NUM_PROC_ATM}prc.dat_${RefPeriod} Bands_${RESOL_ATM_3D}_${NUM_PROC_ATM}prc.dat ; IGCM_sys_Chmod u+w Bands_${RESOL_ATM_3D}_${NUM_PROC_ATM}prc.dat )
[743]136
[1535]137    ##-- GHG forcing :
138    ##   If forcing file exist in run directory, read values for the current year and modify physiq.def
139    if [ -f SOLARANDVOLCANOES.txt ] ; then
140        IPCC_SOLAR=`grep Annee_${year} SOLARANDVOLCANOES.txt | awk -F= '{print $2}'`
141        LMDZ_sed physiq.def solaire     ${IPCC_SOLAR}
142    fi
143    if [ -f CO2.txt ] ; then
144        IPCC_CO2=`grep Annee_${year} CO2.txt | awk -F= '{print $2}'`
145        LMDZ_sed physiq.def co2_ppm     ${IPCC_CO2}
146    fi
147    if [ -f CH4.txt ] ; then
148        IPCC_CH4=`grep Annee_${year} CH4.txt | awk -F= '{print $2}'`
149        LMDZ_sed physiq.def CH4_ppb     ${IPCC_CH4}
150    fi
151    if [ -f N2O.txt ] ; then
152        IPCC_N2O=`grep Annee_${year} N2O.txt | awk -F= '{print $2}'`
153        LMDZ_sed physiq.def N2O_ppb     ${IPCC_N2O}
154    fi
155    if [ -f CFC11.txt ] ; then
156        IPCC_CFC11=`grep Annee_${year} CFC11.txt | awk -F= '{print $2}'`
157        LMDZ_sed physiq.def CFC11_ppt   ${IPCC_CFC11}
158    fi
159    if [ -f CFC12.txt ] ; then
160        IPCC_CFC12=`grep Annee_${year} CFC12.txt | awk -F= '{print $2}'`
161        LMDZ_sed physiq.def CFC12_ppt   ${IPCC_CFC12}
162    fi
163
[911]164    ## physiq.def parameters modified from initial physiq_L${RESOL_ATM_Z}
165    LMDZ_sed physiq.def OK_instan   ${OK_instan}
166    LMDZ_sed physiq.def OK_journe   ${OK_journe}
167    LMDZ_sed physiq.def OK_mensuel  ${OK_mensuel}
168    LMDZ_sed physiq.def ok_hf       ${ok_hf}
169    LMDZ_sed physiq.def ecrit_mth   ${LMDZ_ecrit_mth}
170    LMDZ_sed physiq.def ecrit_ISCCP ${LMDZ_ecrit_ISCCP}
[1001]171    LMDZ_sed physiq.def ok_cosp     ${LMDZ_COSP_OK}
172    LMDZ_sed physiq.def ok_mensuelCOSP  ${LMDZ_COSP_monthly}
173    LMDZ_sed physiq.def ok_journeCOSP   ${LMDZ_COSP_daily}
174    LMDZ_sed physiq.def ok_hfCOSP   ${LMDZ_COSP_hf}
[1012]175    LMDZ_sed physiq.def ok_histNMC  "${LMDZ_NMC_monthly}, ${LMDZ_NMC_daily}, ${LMDZ_NMC_hf}"
[396]176
[911]177    ## gcm.def parameters : no change since gcm.def_${RESOL_ATM_3D} is used and already modified
[396]178
[911]179    ## run.def parameters
180    LMDZ_sed run.def dayref   ${InitDay}
181    LMDZ_sed run.def anneeref ${InitYear}
182    LMDZ_sed run.def calend   ${CalendarTypeForLmdz}
183    LMDZ_sed run.def nday     ${PeriodLengthInDays}
184    LMDZ_sed run.def raz_date ${RAZ_DATE}
185    LMDZ_sed run.def periodav ${LMDZ_periodav}
186    LMDZ_sed run.def adjust   ${LMDZ_adjust}
[396]187
[902]188    ## Read ByPass_hgardfou_teta option in lmdz.card --> divide teta* by 2 if [ $ByPass_hgardfou_teta = 1 ]
189    IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/COMP/lmdz.card UserChoices ByPass_hgardfou_teta
[1172]190    ByPass_hgardfou_teta=${lmdz_UserChoices_ByPass_hgardfou_teta}
[396]191    if [ ${ByPass_hgardfou_teta} = y ] ; then
192        awk '{ if ($0 ~ /^teta.*=/) {split($0,a,"=") ; print a[1]"="a[2]/2"."} else print $0}' gcm.def > gcm.def.tmp
193        IGCM_sys_Mv gcm.def.tmp gcm.def
194        echo
195        IGCM_debug_Print 1 "ByPass_hgardfou_teta : ^teta*/2 in gcm.def"
196        echo
197        cat gcm.def
198        ByPass_hgardfou_teta=n
[902]199        IGCM_card_WriteOption ${SUBMIT_DIR}/COMP/lmdz.card UserChoices ByPass_hgardfou_teta "${ByPass_hgardfou_teta}"
[396]200    fi
201
[902]202    ## Read ByPass_hgardfou_mats option in lmdz.card --> purmats=y 2 if [ $ByPass_hgardfou_mats = 1 ]
203    IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/COMP/lmdz.card UserChoices ByPass_hgardfou_mats
[1172]204    ByPass_hgardfou_mats=${lmdz_UserChoices_ByPass_hgardfou_mats}
[396]205    if [ ${ByPass_hgardfou_mats} = y ] ; then
206        sed -e "s/^purmats=.*/purmats=y/" gcm.def > gcm.def.tmp
207        IGCM_sys_Mv gcm.def.tmp gcm.def
208        echo
209        IGCM_debug_Print 1 "ByPass_hgardfou_mats : purmats=y in gcm.def"
210        echo
211        cat gcm.def
212        ByPass_hgardfou_mats=n
[902]213        IGCM_card_WriteOption ${SUBMIT_DIR}/COMP/lmdz.card UserChoices ByPass_hgardfou_mats "${ByPass_hgardfou_mats}"
[396]214    fi
215
216    if ( ${FirstInitialize} ) ; then
217
218        if ( [ "${config_Restarts_OverRule}" = "n" ] && [ "${config_ATM_Restart}" = "n" ] ); then
219            if [ ${DRYRUN} -le 2 ] ; then
[894]220                ##-- suppression of ozone file construction --
221                cp physiq.def physiq.def.save
222                LMDZ_sed physiq.def read_climoz 0
[396]223                IGCM_sys_Cp ${R_EXE}/create_etat0_limit.e ${RUN_DIR}/.
224                if [ ${DRYRUN} -le 1 ] ; then
[908]225                    ${HOST_MPIRUN_COMMAND} -np 1 ./create_etat0_limit.e
[894]226                    IGCM_sys_Put_Out start.nc    ${R_OUT_ATM_R}/${config_UserChoices_JobName}_${PeriodDateBegin}_start.nc
227                    IGCM_sys_Put_Out startphy.nc ${R_OUT_ATM_R}/${config_UserChoices_JobName}_${PeriodDateBegin}_startphy.nc
[396]228                fi
[894]229                IGCM_sys_Mv physiq.def.save physiq.def
[396]230            else
[908]231                echo "EXECUTION of ${HOST_MPIRUN_COMMAND} -np 1 ./create_etat0_limit.e simulated"
232                echo "EXECUTION of ${HOST_MPIRUN_COMMAND} -np 1 ./create_etat0_limit.e simulated for DRYRUN = " $DRYRUN >> stack
[396]233            fi
234        fi
235
236    fi
237
238    IGCM_debug_PopStack "ATM_Update"
239}
240
241#-----------------------------------
242function ATM_Finalize
243{
244    IGCM_debug_PushStack "ATM_Finalize"
245
[743]246    [ ${CumulPeriod} -le ${LMDZ_NbPeriod_adjust} ] && IGCM_sys_Put_Out Bands_${RESOL_ATM_3D}_${NUM_PROC_ATM}prc.dat ${R_OUT_ATM_D}/${config_UserChoices_JobName}_Bands_${RESOL_ATM_3D}_${NUM_PROC_ATM}prc.dat_${CumulPeriod}
[396]247
248    echo FINALIZE ATM !
249
250    IGCM_debug_PopStack "ATM_Finalize"
251}
Note: See TracBrowser for help on using the repository browser.