source: CONFIG/IPSLCM/IPSLCM5-2/Chistorical/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: 15.8 KB
Line 
1#!/bin/ksh
2#-----------------------------------------------------------------
3function LMDZ_sed
4{
5    IGCM_debug_PushStack "LMDZ_sed"
6
7    sed -e "s/^${2}\ *=.*/${2}= ${3}/" ${1} > ${1}.tmp
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
16function ATM_Initialize
17{
18    IGCM_debug_PushStack "ATM_Initialize"
19
20    RESOL_ATM=$( echo $RESOL | awk "-Fx" '{print $2}' | awk "-F-" '{print $1}')
21
22    [ -f ${SUBMIT_DIR}/../.resol ] && eval $(grep RESOL_ATM_3D ${SUBMIT_DIR}/../.resol) || RESOL_ATM_3D=96x95x19
23
24    RESOL_ATM_Z=$( echo ${RESOL_ATM_3D} | awk "-Fx" '{print $3}' )
25
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
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) 
56                ok_hf=y
57                OK_instan=y
58                ;;
59        esac
60    done
61
62    ## Read LMDZ_NbPeriod_adjust option in lmdz.card
63    IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/COMP/lmdz.card UserChoices LMDZ_NbPeriod_adjust
64    LMDZ_NbPeriod_adjust=${lmdz_UserChoices_LMDZ_NbPeriod_adjust}
65
66    if [ ${LMDZ_NbPeriod_adjust} -eq 0 ] ; then
67        IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/COMP/lmdz.card UserChoices LMDZ_Bands_file_name
68        LMDZ_Bands_file_name=${lmdz_UserChoices_LMDZ_Bands_file_name}
69    fi
70
71    ##  Read LMDZ_Freq_aero and LMDZ_Length_aero in lmdz.card
72    LMDZ_Freq_aero=${lmdz_UserChoices_LMDZ_Freq_aero}
73    LMDZ_Length_aero=${lmdz_UserChoices_LMDZ_Length_aero}
74
75    ##  Read LMDZ_COSP_monthly  LMDZ_COSP_daily and LMDZ_COSP_hf in lmdz.card
76    LMDZ_COSP_OK=${lmdz_UserChoices_LMDZ_COSP_OK}
77    LMDZ_COSP_monthly=${lmdz_UserChoices_LMDZ_COSP_monthly}
78    LMDZ_COSP_daily=${lmdz_UserChoices_LMDZ_COSP_daily}
79    LMDZ_COSP_hf=${lmdz_UserChoices_LMDZ_COSP_hf}
80
81    ##  Read LMDZ_NMC_monthly  LMDZ_NMC_daily and LMDZ_NMC_hf in lmdz.card
82    LMDZ_NMC_monthly=${lmdz_UserChoices_LMDZ_NMC_monthly}
83    LMDZ_NMC_daily=${lmdz_UserChoices_LMDZ_NMC_daily}
84    LMDZ_NMC_hf=${lmdz_UserChoices_LMDZ_NMC_hf}
85
86    IGCM_debug_PopStack "ATM_Initialize"
87}
88
89#-----------------------------------------------------------------
90function ATM_Update
91{
92    IGCM_debug_PushStack "ATM_Update"
93
94    typeset InitPeriodCo2 InitDateBeginCo2 InitDateEndCo2
95    typeset CO2SBG CO2MBG CO2LU CO2_ppm CO2_ppm_prec fCO2_ff
96    typeset PathCO2log
97
98    case ${config_UserChoices_PeriodLength} in
99        *Y|*y) 
100               LMDZ_ecrit_mth=30.
101               LMDZ_ecrit_ISCCP=30.
102               LMDZ_periodav=30.
103               if [ "${config_UserChoices_CalendarType}" != "360d" ] ; then
104                  echo Change calendartype in config.card. PeriodLength=1Y allowed only for CalendarType=360d
105                  exit
106               fi
107               ;;
108        *)
109               LMDZ_ecrit_mth=${PeriodLengthInDays}.
110               LMDZ_ecrit_ISCCP=${PeriodLengthInDays}.
111               LMDZ_periodav=${PeriodLengthInDays}.
112               ;;
113    esac
114
115    ##-- Remise ou non a zero de la date initiale de LMDZ pour le fichier run.def
116    if [ ${CumulPeriod} -eq 1 ] ; then
117        RAZ_DATE=1
118    else
119        RAZ_DATE=0
120    fi
121
122    ## To have more variables in output files for aerosols. Parameters are set in lmdz.card
123    #if [ ${CumulPeriod}%${LMDZ_Freq_aero} -le ${LMDZ_Length_aero} ]; then
124    #   if [ ${CumulPeriod}%${LMDZ_Freq_aero} -ne 0 ]; then
125    #      lev_histmth=4
126    #   else
127    #      lev_histmth=2   
128    #   fi
129    #else
130    #   lev_histmth=2
131    #fi   
132
133    ## algo : For CumulPeriod=1 ;
134    ##        IF NbPeriod_Adjust = 0, Get Bands file directly from server, store it with _0 suffix
135    ##        ELSE LMDZ_adjust=y ; save Bands file on file server ;
136    ##        For CumulPeriod=2 to LMDZ_NbPeriod_adjust ; Get Bands file from server (CumulPeriod-1) ; LMDZ_adjust=y ; save Bands file on file server ;
137    ##        For CumulPeriod > LMDZ_NbPeriod_adjust ; LMDZ_adjust=n ; Get Bands file from server (CumulPeriod=LMDZ_NbPeriod_adjust 0 to force it) ; Use Bands ;
138
139    if [ ${CumulPeriod} -eq 1 ] ; then
140        if [ ${LMDZ_NbPeriod_adjust} -eq 0 ] ; then
141            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
142            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
143            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"
144        fi
145    fi
146
147    LMDZ_adjust=n
148    [ ${CumulPeriod} -le ${LMDZ_NbPeriod_adjust} ] && LMDZ_adjust=y
149
150    RefPeriod=${LMDZ_NbPeriod_adjust} #0 to use a Bands file from Restart
151    [ ${CumulPeriod} -le ${LMDZ_NbPeriod_adjust} ] && (( RefPeriod = ${CumulPeriod} - 1 )) 
152
153    [ ${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 )
154
155    ##-- GHG forcing :
156    ##   If forcing file exist in run directory, read values for the current year and modify physiq.def
157    if [ -f SOLARANDVOLCANOES.txt ] ; then
158        IPCC_SOLAR=`grep Annee_${year} SOLARANDVOLCANOES.txt | awk -F= '{print $2}'`
159        LMDZ_sed physiq.def solaire     ${IPCC_SOLAR}
160    fi
161    if [ -f CO2.txt ] ; then
162        IPCC_CO2=`grep Annee_${year} CO2.txt | awk -F= '{print $2}'`
163        LMDZ_sed physiq.def co2_ppm     ${IPCC_CO2}
164    fi
165    if [ -f CH4.txt ] ; then
166        IPCC_CH4=`grep Annee_${year} CH4.txt | awk -F= '{print $2}'`
167        LMDZ_sed physiq.def CH4_ppb     ${IPCC_CH4}
168    fi
169    if [ -f N2O.txt ] ; then
170        IPCC_N2O=`grep Annee_${year} N2O.txt | awk -F= '{print $2}'`
171        LMDZ_sed physiq.def N2O_ppb     ${IPCC_N2O}
172    fi
173    if [ -f CFC11.txt ] ; then
174        IPCC_CFC11=`grep Annee_${year} CFC11.txt | awk -F= '{print $2}'`
175        LMDZ_sed physiq.def CFC11_ppt   ${IPCC_CFC11}
176    fi
177    if [ -f CFC12.txt ] ; then
178        IPCC_CFC12=`grep Annee_${year} CFC12.txt | awk -F= '{print $2}'`
179        LMDZ_sed physiq.def CFC12_ppt   ${IPCC_CFC12}
180    fi
181
182    if ( ${FirstInitialize} && [ X"${config_ATM_Restart}" = X"n" ]) ; then
183        ##--Initialization of fluxes to an undefined value at the first run
184        UndefinedValueCo2=-9999
185        InitPeriodCo2=0
186        InitDateBeginCo2=${UndefinedValueCo2}
187        InitYearCo2=$(( ${year} - 1 )) 
188        InitDateEndCo2=${InitYearCo2}1231
189        fCO2_ff=${UndefinedValueCo2} 
190        CO2SBG=${UndefinedValueCo2}
191        CO2LU=${UndefinedValueCo2}
192        CO2MBG=${UndefinedValueCo2}
193        CO2_ppm_prec=${UndefinedValueCo2}
194        # Get the initial value of atmosp. pco2
195        CO2_ppm=${lmdz_UserChoices_co2_init}
196
197        IGCM_sys_Cp ${SUBMIT_DIR}/co2.log.init ${SUBMIT_DIR}/co2.log
198        IGCM_sys_Chmod u+w ${SUBMIT_DIR}/co2.log
199
200        # Save CO2 values in ExeCpuLog variable contents 5 fields
201        echo "${InitPeriodCo2} ${InitDateBeginCo2} ${InitDateEndCo2} ${CO2_ppm} ${CO2_ppm_prec} ${fCO2_ff} ${CO2MBG} ${CO2SBG} ${CO2LU}" |   \
202             gawk '{printf("  %11d | %15s | %15s | %22.15g | %20.15g | %11.8g | %11.8g | %12.8g | %12.8g \n", \
203                              $1,$2,$3,$4,$5,$6,$7,$8,$9)}' >> ${SUBMIT_DIR}/co2.log
204   
205        # Get the path where the log file co2.log is
206        PathCO2log=${SUBMIT_DIR} 
207        # Get Previous line in co2.log
208        PreviousLinelog=$( tail -1 ${PathCO2log}/co2.log )
209       
210    else
211
212        # NEW parameter in config.card (even for Overule all restarts, you must modify the line after this comment ):
213        # !! NEW for Carbone cycle !! Path where to find old co2.log file for restart CO2.
214        #SubmitRestartPath=
215        if ( ${FirstInitialize} && [ X"${config_ATM_Restart}" = X"y" ]) ; then
216            IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/config.card ATM SubmitRestartPath
217            PathCO2log=${config_ATM_SubmitRestartPath}
218            Date_r=$( IGCM_date_ConvertFormatToGregorian ${config_ATM_RestartDate} )
219            PreviousLinelog=$( grep ${Date_r} ${PathCO2log}/co2.log )
220   
221            IGCM_sys_Cp ${SUBMIT_DIR}/co2.log.init ${SUBMIT_DIR}/co2.log
222            IGCM_sys_Chmod u+w ${SUBMIT_DIR}/co2.log
223   
224            # Save Last Line of control in new co2.log file
225            InitPeriodCo2=0   
226            InitDateBeginCo2=$( echo "${PreviousLinelog[*]}" | gawk -F '|' '{gsub(" ",""); print $2}' )
227            InitDateEndCo2=$( echo "${PreviousLinelog[*]}" | gawk -F '|' '{gsub(" ",""); print $3}' )
228            fCO2_ff=$( echo "${PreviousLinelog[*]}" | gawk -F '|' '{gsub(" ",""); print $6}' )
229            CO2SBG=$( echo "${PreviousLinelog[*]}" | gawk -F '|' '{gsub(" ",""); print $8}' )
230            CO2LU=$( echo "${PreviousLinelog[*]}" | gawk -F '|' '{gsub(" ",""); print $9}' )
231            CO2MBG=$( echo "${PreviousLinelog[*]}" | gawk -F '|' '{gsub(" ",""); print $7}' )
232            CO2_ppm_prec=$( echo "${PreviousLinelog[*]}" | gawk -F '|' '{gsub(" ",""); print $5}' )
233            CO2_ppm=$( echo "${PreviousLinelog[*]}" | gawk -F '|' '{gsub(" ",""); print $4}' )
234
235            echo "${InitPeriodCo2} ${InitDateBeginCo2} ${InitDateEndCo2} ${CO2_ppm} ${CO2_ppm_prec} ${fCO2_ff} ${CO2MBG} ${CO2SBG} ${CO2LU}" |   \
236                  gawk '{printf("  %11d | %15s | %15s | %22.15g | %20.15g | %11.8g | %11.8g | %12.8g | %12.8g \n", \
237                              $1,$2,$3,$4,$5,$6,$7,$8,$9)}' >> ${SUBMIT_DIR}/co2.log
238        else
239           # Get restart line in co2.log
240           PathCO2log=${SUBMIT_DIR}
241           PreviousLinelog=$( tail -1 ${PathCO2log}/co2.log )
242           # Get the value of atmosp. pco2 in co2.log
243           CO2_ppm=$( echo "${PreviousLinelog[*]}" | gawk -F '|' '{gsub(" ",""); print $4}' )
244        fi
245
246    fi
247
248    ##-- For historical daily cosp must be output during 1979-2005 period
249    [ ${year} -ge 1979 ] && LMDZ_COSP_daily=y
250
251    ## physiq.def parameters modified from initial physiq_L${RESOL_ATM_Z}
252    LMDZ_sed physiq.def OK_instan   ${OK_instan}
253    LMDZ_sed physiq.def OK_journe   ${OK_journe}
254    LMDZ_sed physiq.def OK_mensuel  ${OK_mensuel}
255    #LMDZ_sed physiq.def lev_histmth ${lev_histmth}
256    LMDZ_sed physiq.def ok_hf       ${ok_hf}
257    LMDZ_sed physiq.def ecrit_mth   ${LMDZ_ecrit_mth}
258    LMDZ_sed physiq.def ecrit_ISCCP ${LMDZ_ecrit_ISCCP}
259    LMDZ_sed physiq.def ok_cosp     ${LMDZ_COSP_OK}
260    LMDZ_sed physiq.def ok_mensuelCOSP  ${LMDZ_COSP_monthly}
261    LMDZ_sed physiq.def ok_journeCOSP   ${LMDZ_COSP_daily}
262    LMDZ_sed physiq.def ok_hfCOSP   ${LMDZ_COSP_hf}
263    LMDZ_sed physiq.def ok_histNMC  "${LMDZ_NMC_monthly}, ${LMDZ_NMC_daily}, ${LMDZ_NMC_hf}"
264    LMDZ_sed physiq.def co2_ppm     ${CO2_ppm}
265
266    ## gcm.def parameters : no change since gcm.def_${RESOL_ATM_3D} is used and already modified
267
268    ## run.def parameters
269    LMDZ_sed run.def dayref   ${InitDay}
270    LMDZ_sed run.def anneeref ${InitYear}
271    LMDZ_sed run.def calend   ${CalendarTypeForLmdz}
272    LMDZ_sed run.def nday     ${PeriodLengthInDays}
273    LMDZ_sed run.def raz_date ${RAZ_DATE}
274    LMDZ_sed run.def periodav ${LMDZ_periodav}
275    LMDZ_sed run.def adjust   ${LMDZ_adjust}
276
277    ## Read ByPass_hgardfou_teta option in lmdz.card --> divide teta* by 2 if [ $ByPass_hgardfou_teta = 1 ]
278    IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/COMP/lmdz.card UserChoices ByPass_hgardfou_teta
279    ByPass_hgardfou_teta=${lmdz_UserChoices_ByPass_hgardfou_teta}
280    if [ ${ByPass_hgardfou_teta} = y ] ; then
281        awk '{ if ($0 ~ /^teta.*=/) {split($0,a,"=") ; print a[1]"="a[2]/2"."} else print $0}' gcm.def > gcm.def.tmp
282        IGCM_sys_Mv gcm.def.tmp gcm.def
283        echo
284        IGCM_debug_Print 1 "ByPass_hgardfou_teta : ^teta*/2 in gcm.def"
285        echo
286        cat gcm.def
287        ByPass_hgardfou_teta=n
288        IGCM_card_WriteOption ${SUBMIT_DIR}/COMP/lmdz.card UserChoices ByPass_hgardfou_teta "${ByPass_hgardfou_teta}"
289    fi
290
291    ## Read ByPass_hgardfou_mats option in lmdz.card --> purmats=y 2 if [ $ByPass_hgardfou_mats = 1 ]
292    IGCM_card_DefineVariableFromOption ${SUBMIT_DIR}/COMP/lmdz.card UserChoices ByPass_hgardfou_mats
293    ByPass_hgardfou_mats=${lmdz_UserChoices_ByPass_hgardfou_mats}
294    if [ ${ByPass_hgardfou_mats} = y ] ; then
295        sed -e "s/^purmats=.*/purmats=y/" gcm.def > gcm.def.tmp
296        IGCM_sys_Mv gcm.def.tmp gcm.def
297        echo
298        IGCM_debug_Print 1 "ByPass_hgardfou_mats : purmats=y in gcm.def"
299        echo
300        cat gcm.def
301        ByPass_hgardfou_mats=n
302        IGCM_card_WriteOption ${SUBMIT_DIR}/COMP/lmdz.card UserChoices ByPass_hgardfou_mats "${ByPass_hgardfou_mats}"
303    fi
304
305    if ( ${FirstInitialize} ) ; then
306
307        if ( [ "${config_Restarts_OverRule}" = "n" ] && [ "${config_ATM_Restart}" = "n" ] ); then
308            if [ ${DRYRUN} -le 2 ] ; then
309                ##-- suppression of ozone file construction --
310                cp physiq.def physiq.def.save
311                LMDZ_sed physiq.def read_climoz 0
312                IGCM_sys_Cp ${R_EXE}/create_etat0_limit.e ${RUN_DIR}/.
313                if [ ${DRYRUN} -le 1 ] ; then
314                    ${HOST_MPIRUN_COMMAND} -np 1 ./create_etat0_limit.e
315                    IGCM_sys_Put_Out start.nc    ${R_OUT_ATM_R}/${config_UserChoices_JobName}_${PeriodDateBegin}_start.nc
316                    IGCM_sys_Put_Out startphy.nc ${R_OUT_ATM_R}/${config_UserChoices_JobName}_${PeriodDateBegin}_startphy.nc
317                fi
318                IGCM_sys_Mv physiq.def.save physiq.def
319            else
320                echo "EXECUTION of ${HOST_MPIRUN_COMMAND} -np 1 ./create_etat0_limit.e simulated"
321                echo "EXECUTION of ${HOST_MPIRUN_COMMAND} -np 1 ./create_etat0_limit.e simulated for DRYRUN = " $DRYRUN >> stack
322            fi
323        fi
324
325    fi
326
327    IGCM_debug_PopStack "ATM_Update"
328}
329
330#-----------------------------------
331function ATM_Finalize
332{
333    IGCM_debug_PushStack "ATM_Finalize"
334
335    [ ${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}
336
337    typeset CO2SBG_3V CO2SBG CO2MBG CO2SRF CO2LU CO2_ppm CO2_ppm_prec fCO2_ff
338
339#   get the fossile fuel file :
340    fCO2_ff=$( gawk "{if (match(\$0,\"${year}\ *${month}\")) {print \$3}}" ${SUBMIT_DIR}/PARAM/CMIP5_gridcar_CO2_emissions_fossil_fuel_Andres_1751-2007_monthly_SC.txt )
341    echo "Fossil Fuel for historical run  :" ${fCO2_ff}
342
343    # Get the value of ocean carbon flux
344    CO2MBG=$( ${SUBMIT_DIR}/COMP/lmdz_analyse_pisces_out.awk ocean.output )
345    CO2MBG=$( echo ${CO2MBG} | sed -e "s/ *//" )
346    echo "Ocean carbon flux  :" ${CO2MBG}
347   
348    # Get the value of land fluxes
349    set +A CO2SBG_3V -- $( ${SUBMIT_DIR}/COMP/lmdz_analyse_stomate_out.awk out_orchidee_0000 )
350    CO2SRF=$( echo ${CO2SBG_3V[0]} | sed -e "s/ *//" )
351    CO2LU=$( echo ${CO2SBG_3V[1]} | sed -e "s/ *//" )
352    CO2SBG=$( echo ${CO2SBG_3V[2]} | sed -e "s/ *//" )
353    echo "Land carbon flux (NEP)         :" ${CO2SRF}
354    echo "LU flux          (FLUC)        :" ${CO2LU}
355    echo "Total Land carbon flux (NBP)   :" ${CO2SBG}
356
357    # Previous CO2
358    CO2_ppm_prec=$( echo "${PreviousLinelog[*]}" | gawk -F '|' '{gsub(" ",""); print $4}' )
359    echo "Previous CO2  :" ${CO2_ppm_prec}
360
361    # Formula
362    CO2_ppm=$( echo "${CO2_ppm_prec} + (${fCO2_ff} + ${CO2MBG} + ${CO2SBG}) / 2.12" | bc -l )
363    echo "New CO2  :" ${CO2_ppm}
364
365    # Save CO2 values in ExeCpuLog variable contents 5 fields
366    echo "${CumulPeriod} ${PeriodDateBegin} ${PeriodDateEnd} ${CO2_ppm} ${CO2_ppm_prec} ${fCO2_ff} ${CO2MBG} ${CO2SBG} ${CO2LU}" |   \
367         gawk '{printf("  %11d | %15s | %15s | %22.15g | %20.15g | %11.8g | %11.8g | %12.8g | %12.8g \n", \
368                           $1,$2,$3,$4,$5,$6,$7,$8,$9)}' >> ${SUBMIT_DIR}/co2.log
369    echo FINALIZE ATM !
370
371    IGCM_debug_PopStack "ATM_Finalize"
372}
Note: See TracBrowser for help on using the repository browser.