source: LMDZ5/trunk/libf/phylmd/phys_output_write_mod.F90 @ 2186

Last change on this file since 2186 was 2180, checked in by acozic, 10 years ago

After checking I reload commit 2169 and 2170

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
  • Property svn:keywords set to Id
File size: 57.9 KB
Line 
1!
2! $Id: phys_output_write_mod.F90 2180 2015-01-16 13:15:03Z fairhead $
3!
4MODULE phys_output_write_mod
5
6  USE phytrac_mod, ONLY : d_tr_cl, d_tr_th, d_tr_cv, d_tr_lessi_impa, &
7       d_tr_lessi_nucl, d_tr_insc, d_tr_bcscav, d_tr_evapls, d_tr_ls,  &
8       d_tr_trsp, d_tr_sscav, d_tr_sat, d_tr_uscav
9
10  ! Author: Abderrahmane IDELKADI (original include file)
11  ! Author: Laurent FAIRHEAD (transformation to module/subroutine)
12  ! Author: Ulysse GERARD (effective implementation)
13
14CONTAINS
15
16  ! ug Routine pour définir (los du premier passageà) ET sortir les variables
17  SUBROUTINE phys_output_write(itap, pdtphys, paprs, pphis, &
18       pplay, lmax_th, aerosol_couple,         &
19       ok_ade, ok_aie, ivap, new_aod, ok_sync, &
20       ptconv, read_climoz, clevSTD, ptconvth, &
21       d_t, qx, d_qx, zmasse, flag_aerosol, flag_aerosol_strat, ok_cdnc)
22
23    ! This subroutine does the actual writing of diagnostics that were
24    ! defined and initialised in phys_output_mod.F90
25
26    USE dimphy, only: klon, klev, klevp1, nslay
27    USE control_mod, only: day_step, iphysiq
28    USE phys_output_ctrlout_mod, only: o_phis, o_aire, is_ter, is_lic, is_oce, &
29         is_ave, is_sic, o_contfracATM, o_contfracOR, &
30         o_aireTER, o_flat, o_slp, o_tsol, &
31         o_t2m, o_t2m_min, o_t2m_max, &
32         o_t2m_min_mon, o_t2m_max_mon, &
33         o_q2m, o_ustar, o_u10m, o_v10m, &
34         o_wind10m, o_wind10max, o_sicf, &
35         o_psol, o_mass, o_qsurf, o_qsol, &
36         o_precip, o_ndayrain, o_plul, o_pluc, &
37         o_snow, o_msnow, o_fsnow, o_evap, &
38         o_tops, o_tops0, o_topl, o_topl0, &
39         o_SWupTOA, o_SWupTOAclr, o_SWdnTOA, &
40         o_SWdnTOAclr, o_nettop, o_SWup200, &
41         o_SWup200clr, o_SWdn200, o_SWdn200clr, &
42         o_LWup200, o_LWup200clr, o_LWdn200, &
43         o_LWdn200clr, o_sols, o_sols0, &
44         o_soll, o_radsol, o_soll0, o_SWupSFC, &
45         o_SWupSFCclr, o_SWdnSFC, o_SWdnSFCclr, &
46         o_LWupSFC, o_LWdnSFC, o_LWupSFCclr, &
47         o_LWdnSFCclr, o_bils, o_bils_diss, &
48         o_bils_ec,o_bils_ech, o_bils_tke, o_bils_kinetic, &
49         o_bils_latent, o_bils_enthalp, o_sens, &
50         o_fder, o_ffonte, o_fqcalving, o_fqfonte, &
51         o_taux, o_tauy, o_snowsrf, o_qsnow, &
52         o_snowhgt, o_toice, o_sissnow, o_runoff, &
53         o_albslw3, o_pourc_srf, o_fract_srf, &
54         o_taux_srf, o_tauy_srf, o_tsol_srf, &
55         o_evappot_srf, o_ustar_srf, o_u10m_srf, &
56         o_v10m_srf, o_t2m_srf, o_evap_srf, &
57         o_sens_srf, o_lat_srf, o_flw_srf, &
58         o_fsw_srf, o_wbils_srf, o_wbilo_srf, &
59         o_tke_srf, o_tke_max_srf,o_dltpbltke_srf, o_wstar, &
60         o_cdrm, o_cdrh, o_cldl, o_cldm, o_cldh, &
61         o_cldt, o_JrNt, o_cldljn, o_cldmjn, &
62         o_cldhjn, o_cldtjn, o_cldq, o_lwp, o_iwp, &
63         o_ue, o_ve, o_uq, o_vq, o_cape, o_pbase, &
64         o_ptop, o_fbase, o_plcl, o_plfc, &
65         o_wbeff, o_cape_max, o_upwd, o_Ma, &
66         o_dnwd, o_dnwd0, o_ftime_con, o_mc, &
67         o_prw, o_s_pblh, o_s_pblt, o_s_lcl, &
68         o_s_therm, o_uSTDlevs, o_vSTDlevs, &
69         o_wSTDlevs, o_zSTDlevs, o_qSTDlevs, &
70         o_tSTDlevs, epsfra, o_t_oce_sic, &
71         o_ale_bl, o_alp_bl, o_ale_wk, o_alp_wk, &
72         o_ale, o_alp, o_cin, o_WAPE, o_wake_h, &
73         o_wake_s, o_wake_deltat, o_wake_deltaq, &
74         o_wake_omg, o_dtwak, o_dqwak, o_Vprecip, &
75         o_ftd, o_fqd, o_wdtrainA, o_wdtrainM, &
76         o_n2, o_s2, o_proba_notrig, &
77         o_random_notrig, o_ale_bl_stat, &
78         o_ale_bl_trig, o_alp_bl_det, &
79         o_alp_bl_fluct_m, o_alp_bl_fluct_tke, &
80         o_alp_bl_conv, o_alp_bl_stat, &
81         o_slab_qflux, o_tslab, o_slab_bils, &
82         o_weakinv, o_dthmin, o_cldtau, &
83         o_cldemi, o_pr_con_l, o_pr_con_i, &
84         o_pr_lsc_l, o_pr_lsc_i, o_re, o_fl, &
85         o_rh2m, o_rh2m_min, o_rh2m_max, &
86         o_qsat2m, o_tpot, o_tpote, o_SWnetOR, &
87         o_SWdownOR, o_LWdownOR, o_snowl, &
88         o_solldown, o_dtsvdfo, o_dtsvdft, &
89         o_dtsvdfg, o_dtsvdfi, o_rugs, o_od550aer, &
90         o_od865aer, o_absvisaer, o_od550lt1aer, &
91         o_sconcso4, o_sconcno3, o_sconcoa, o_sconcbc, &
92         o_sconcss, o_sconcdust, o_concso4, o_concno3, &
93         o_concoa, o_concbc, o_concss, o_concdust, &
94         o_loadso4, o_loadoa, o_loadbc, o_loadss, &
95         o_loaddust, o_tausumaero, o_tausumaero_lw, &
96         o_topswad, o_topswad0, o_solswad, o_solswad0, &
97         o_toplwad, o_toplwad0, o_sollwad, o_sollwad0, &
98         o_swtoaas_nat, o_swsrfas_nat, &
99         o_swtoacs_nat, o_swtoaas_ant, &
100         o_swsrfas_ant, o_swtoacs_ant, &
101         o_swsrfcs_ant, o_swtoacf_nat, &
102         o_swsrfcf_nat, o_swtoacf_ant, &
103         o_swsrfcs_nat, o_swsrfcf_ant, &
104         o_swtoacf_zero, o_swsrfcf_zero, &
105         o_topswai, o_solswai, o_scdnc, &
106         o_cldncl, o_reffclws, o_reffclwc, &
107         o_cldnvi, o_lcc, o_lcc3d, o_lcc3dcon, &
108         o_lcc3dstra, o_reffclwtop, o_ec550aer, &
109         o_lwcon, o_iwcon, o_temp, o_theta, &
110         o_ovapinit, o_ovap, o_oliq, o_geop, &
111         o_vitu, o_vitv, o_vitw, o_pres, o_paprs, &
112         o_zfull, o_zhalf, o_rneb, o_rnebjn, o_rnebcon, &
113         o_rnebls, o_rhum, o_ozone, o_ozone_light, &
114         o_dtphy, o_dqphy, o_albe_srf, o_rugs_srf, &
115         o_ages_srf, o_alb1, o_alb2, o_tke, &
116         o_tke_max, o_kz, o_kz_max, o_clwcon, &
117         o_dtdyn, o_dqdyn, o_dudyn, o_dvdyn, &
118         o_dtcon, o_tntc, o_ducon, o_dvcon, &
119         o_dqcon, o_tnhusc, o_tnhusc, o_dtlsc, &
120         o_dtlschr, o_dqlsc, o_beta_prec, &
121         o_dtlscth, o_dtlscst, o_dqlscth, &
122         o_dqlscst, o_plulth, o_plulst, &
123         o_ptconvth, o_lmaxth, o_dtvdf, &
124         o_dtdis, o_dqvdf, o_dteva, o_dqeva, &
125         o_ptconv, o_ratqs, o_dtthe, &
126         o_duthe, o_dvthe, o_ftime_th, &
127         o_f_th, o_e_th, o_w_th, o_q_th, &
128         o_a_th, o_d_th, o_f0_th, o_zmax_th, &
129         o_dqthe, o_dtajs, o_dqajs, o_dtswr, &
130         o_dtsw0, o_dtlwr, o_dtlw0, o_dtec, &
131         o_duvdf, o_dvvdf, o_duoro, o_dvoro, &
132         o_dtoro, o_dulif, o_dvlif, o_dtlif, &
133         o_duhin, o_dvhin, o_dthin, o_dqch4, o_rsu, &
134         o_rsd, o_rlu, o_rld, o_rsucs, o_rsdcs, &
135         o_rlucs, o_rldcs, o_tnt, o_tntr, &
136         o_tntscpbl, o_tnhus, o_tnhusscpbl, &
137         o_evu, o_h2o, o_mcd, o_dmc, o_ref_liq, &
138         o_ref_ice, o_rsut4co2, o_rlut4co2, &
139         o_rsutcs4co2, o_rlutcs4co2, o_rsu4co2, &
140         o_rlu4co2, o_rsucs4co2, o_rlucs4co2, &
141         o_rsd4co2, o_rld4co2, o_rsdcs4co2, &
142         o_rldcs4co2, o_tnondef, o_ta, o_zg, &
143         o_hus, o_hur, o_ua, o_va, o_wap, &
144         o_psbg, o_tro3, o_tro3_daylight, &
145         o_uxv, o_vxq, o_vxT, o_wxq, o_vxphi, &
146         o_wxT, o_uxu, o_vxv, o_TxT, o_trac, &
147         o_dtr_vdf, o_dtr_the, o_dtr_con, &
148         o_dtr_lessi_impa, o_dtr_lessi_nucl, &
149         o_dtr_insc, o_dtr_bcscav, o_dtr_evapls, &
150         o_dtr_ls, o_dtr_trsp, o_dtr_sscav, &
151         o_dtr_sat, o_dtr_uscav, o_trac_cum, o_du_gwd_rando, o_dv_gwd_rando, &
152         o_vstr_gwd_rando
153
154    USE phys_state_var_mod, only: pctsrf, paire_ter, rain_fall, snow_fall, &
155         nday_rain, rain_con, snow_con, &
156         topsw, toplw, toplw0, swup, swdn, &
157         topsw0, swup0, swdn0, SWup200, SWup200clr, &
158         SWdn200, SWdn200clr, LWup200, LWup200clr, &
159         LWdn200, LWdn200clr, solsw, solsw0, sollw, &
160         radsol, sollw0, sollwdown, sollw, &
161         sollwdownclr, lwdn0, ftsol, ustar, u10m, &
162         v10m, pbl_tke, wake_delta_pbl_TKE, &
163         wstar, cape, ema_pcb, ema_pct, &
164         ema_cbmf, Ma, fm_therm, ale_bl, alp_bl, ale, &
165         alp, cin, wake_pe, wake_s, wake_deltat, &
166         wake_deltaq, ftd, fqd, ale_bl_trig, albsol1, &
167         rnebcon, wo, falb1, albsol2, coefh, clwcon0, &
168         ratqs, entr_therm, zqasc, detr_therm, f0, heat, &
169         heat0, cool, cool0, lwup, lwdn, lwup0, coefm, &
170         swupp, lwupp, swup0p, lwup0p, swdnp, lwdnp, &
171         swdn0p, lwdn0p, tnondef, O3sumSTD, uvsumSTD, &
172         vqsumSTD, vTsumSTD, O3daysumSTD, wqsumSTD, &
173         vphisumSTD, wTsumSTD, u2sumSTD, v2sumSTD, &
174         T2sumSTD, nlevSTD, du_gwd_rando, dv_gwd_rando
175
176    USE phys_local_var_mod, only: zxfluxlat, slp, zxtsol, zt2m, &
177         t2m_min_mon, t2m_max_mon, &
178         zu10m, zv10m, zq2m, zustar, zxqsurf, qsol, &
179         rain_lsc, snow_lsc, evap, bils, sens, fder, &
180         zxffonte, zxfqcalving, zxfqfonte, fluxu, &
181         fluxv, zxsnow, qsnow, snowhgt, to_ice, &
182         sissnow, runoff, albsol3_lic, evap_pot, &
183         t2m, fevap, fluxt, fluxlat, fsollw, fsolsw, &
184         wfbils, wfbilo, cdragm, cdragh, cldl, cldm, &
185         cldh, cldt, JrNt, cldljn, cldmjn, cldhjn, &
186         cldtjn, cldq, flwp, fiwp, ue, ve, uq, vq, &
187         plcl, plfc, wbeff, upwd, dnwd, dnwd0, prw, &
188         s_pblh, s_pblt, s_lcl, s_therm, uwriteSTD, &
189         vwriteSTD, wwriteSTD, phiwriteSTD, qwriteSTD, &
190         twriteSTD, ale_wake, alp_wake, wake_h, &
191         wake_omg, d_t_wake, d_q_wake, Vprecip, &
192         wdtrainA, wdtrainM, n2, s2, proba_notrig, &
193         random_notrig, ale_bl_stat, &
194         alp_bl_det, alp_bl_fluct_m, alp_bl_conv, &
195         alp_bl_stat, alp_bl_fluct_tke, slab_wfbils, &
196         weak_inversion, dthmin, cldtau, cldemi, &
197         pmflxr, pmflxs, prfl, psfl, re, fl, rh2m, &
198         qsat2m, tpote, tpot, d_ts, zxrugs, od550aer, &
199         od865aer, absvisaer, od550lt1aer, sconcso4, sconcno3, &
200         sconcoa, sconcbc, sconcss, sconcdust, concso4, concno3, &
201         concoa, concbc, concss, concdust, loadso4, &
202         loadoa, loadbc, loadss, loaddust, tausum_aero, &
203         topswad_aero, topswad0_aero, solswad_aero, &
204         solswad0_aero, topsw_aero, solsw_aero, &
205         topsw0_aero, solsw0_aero, topswcf_aero, &
206         solswcf_aero, topswai_aero, solswai_aero, &
207         toplwad_aero, toplwad0_aero, sollwad_aero, &
208         sollwad0_aero, toplwai_aero, sollwai_aero, &
209         scdnc, cldncl, reffclws, reffclwc, cldnvi, &
210         lcc, lcc3d, lcc3dcon, lcc3dstra, reffclwtop, &
211         ec550aer, flwc, fiwc, t_seri, theta, q_seri, &
212         ql_seri, zphi, u_seri, v_seri, omega, cldfra, &
213         rneb, rnebjn, zx_rh, frugs, agesno, d_t_dyn, d_q_dyn, &
214         d_u_dyn, d_v_dyn, d_t_con, d_t_ajsb, d_t_ajs, &
215         d_u_ajs, d_v_ajs, &
216         d_u_con, d_v_con, d_q_con, d_q_ajs, d_t_lsc, &
217         d_t_eva, d_q_lsc, beta_prec, d_t_lscth, &
218         d_t_lscst, d_q_lscth, d_q_lscst, plul_th, &
219         plul_st, d_t_vdf, d_t_diss, d_q_vdf, d_q_eva, &
220         zw2, fraca, zmax_th, d_q_ajsb, d_t_ec, d_u_vdf, &
221         d_v_vdf, d_u_oro, d_v_oro, d_t_oro, d_u_lif, &
222         d_v_lif, d_t_lif, d_u_hin, d_v_hin, d_t_hin, &
223         d_q_ch4, pmfd, pmfu, ref_liq, ref_ice, rhwriteSTD
224
225    USE phys_output_var_mod, only: vars_defined, snow_o, zfra_o, bils_diss, &
226         bils_ec,bils_ech, bils_tke, bils_kinetic, bils_latent, bils_enthalp, &
227         itau_con, nfiles, clef_files, nid_files, zvstr_gwd_rando
228    USE ocean_slab_mod, only: tslab, slab_bils
229    USE indice_sol_mod, only: nbsrf
230    USE infotrac, only: nqtot, nqo, type_trac
231    USE comgeomphy, only: airephy
232    USE surface_data, only: type_ocean, ok_veget, ok_snow
233!    USE aero_mod, only: naero_spc
234    USE aero_mod, only: naero_tot, id_STRAT_phy
235    USE ioipsl, only: histend, histsync
236    USE iophy, only: set_itau_iophy, histwrite_phy
237    USE netcdf, only: nf90_fill_real
238
239#ifdef CPP_XIOS
240    ! ug Pour les sorties XIOS
241    USE xios, ONLY: xios_update_calendar
242    USE wxios, only: wxios_closedef
243#endif
244    USE phys_cal_mod, only : mth_len
245
246
247    IMPLICIT NONE
248
249
250    INCLUDE "temps.h"
251    INCLUDE "clesphys.h"
252    INCLUDE "thermcell.h"
253    INCLUDE "compbl.h"
254    INCLUDE "YOMCST.h"
255    INCLUDE "dimensions.h"
256    include "iniprint.h"
257
258    ! Input
259    INTEGER :: itap, ivap, read_climoz
260    INTEGER, DIMENSION(klon) :: lmax_th
261    LOGICAL :: aerosol_couple, ok_sync
262    LOGICAL :: ok_ade, ok_aie, new_aod
263    LOGICAL, DIMENSION(klon, klev) :: ptconv, ptconvth
264    REAL :: pdtphys
265    CHARACTER (LEN=4), DIMENSION(nlevSTD) :: clevSTD
266    REAL, DIMENSION(klon,nlevSTD) :: zx_tmp_fi3d_STD
267    REAL, DIMENSION(klon) :: pphis
268    REAL, DIMENSION(klon, klev) :: pplay, d_t
269    REAL, DIMENSION(klon, klev+1) :: paprs
270    REAL, DIMENSION(klon,klev,nqtot) :: qx, d_qx
271    REAL, DIMENSION(klon, llm) :: zmasse
272    LOGICAL :: flag_aerosol_strat
273    INTEGER :: flag_aerosol
274    LOGICAL :: ok_cdnc
275    REAL, DIMENSION(3) :: freq_moyNMC
276
277    ! Local
278    INTEGER, PARAMETER :: jjmp1=jjm+1-1/jjm
279    INTEGER :: itau_w
280    INTEGER :: i, iinit, iinitend=1, iff, iq, nsrf, k, ll, naero
281    REAL, DIMENSION (klon) :: zx_tmp_fi2d
282    REAL, DIMENSION (klon,klev) :: zx_tmp_fi3d, zpt_conv
283    REAL, DIMENSION (klon,klev+1) :: zx_tmp_fi3d1
284    CHARACTER (LEN=4)              :: bb2
285    INTEGER, DIMENSION(iim*jjmp1)  :: ndex2d
286    INTEGER, DIMENSION(iim*jjmp1*klev) :: ndex3d
287    REAL, PARAMETER :: dobson_u = 2.1415e-05 ! Dobson unit, in kg m-2
288    REAL, PARAMETER :: missing_val=nf90_fill_real
289    REAL, PARAMETER :: un_jour=86400.
290
291    ! On calcul le nouveau tau:
292    itau_w = itau_phy + itap + start_time * day_step / iphysiq
293    ! On le donne à iophy pour que les histwrite y aient accès:
294    CALL set_itau_iophy(itau_w)
295
296    IF(.NOT.vars_defined) THEN
297       iinitend = 2
298    ELSE
299       iinitend = 1
300    ENDIF
301
302    ! ug la boucle qui suit ne sert qu'une fois, pour l'initialisation, sinon il n'y a toujours qu'un seul passage:
303    DO iinit=1, iinitend
304#ifdef CPP_XIOS
305       !$OMP MASTER
306       IF (vars_defined) THEN
307          if (prt_level >= 10) then
308             write(lunout,*)"phys_output_write: call xios_update_calendar, itau_w=",itau_w
309          endif
310!          CALL xios_update_calendar(itau_w)
311          CALL xios_update_calendar(itap)
312       END IF
313       !$OMP END MASTER
314       !$OMP BARRIER
315#endif
316       ! On procède à l'écriture ou à la définition des nombreuses variables:
317!!! Champs 1D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
318       CALL histwrite_phy(o_phis, pphis)
319       CALL histwrite_phy(o_aire, airephy)
320
321       IF (vars_defined) THEN
322          DO i=1, klon
323             zx_tmp_fi2d(i)=pctsrf(i,is_ter)+pctsrf(i,is_lic)
324          ENDDO
325       ENDIF
326
327       CALL histwrite_phy(o_contfracATM, zx_tmp_fi2d)
328       CALL histwrite_phy(o_contfracOR, pctsrf(:,is_ter))
329       CALL histwrite_phy(o_aireTER, paire_ter)
330!!! Champs 2D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
331       CALL histwrite_phy(o_flat, zxfluxlat)
332       CALL histwrite_phy(o_slp, slp)
333       CALL histwrite_phy(o_tsol, zxtsol)
334       CALL histwrite_phy(o_t2m, zt2m)
335       CALL histwrite_phy(o_t2m_min, zt2m)
336       CALL histwrite_phy(o_t2m_max, zt2m)
337       CALL histwrite_phy(o_t2m_max_mon, t2m_max_mon)
338       CALL histwrite_phy(o_t2m_min_mon, t2m_min_mon)
339
340       IF (vars_defined) THEN
341          DO i=1, klon
342             zx_tmp_fi2d(i)=SQRT(zu10m(i)*zu10m(i)+zv10m(i)*zv10m(i))
343          ENDDO
344       ENDIF
345       CALL histwrite_phy(o_wind10m, zx_tmp_fi2d)
346
347       IF (vars_defined) THEN
348          DO i=1, klon
349             zx_tmp_fi2d(i)=SQRT(zu10m(i)*zu10m(i)+zv10m(i)*zv10m(i))
350          ENDDO
351       ENDIF
352       CALL histwrite_phy(o_wind10max, zx_tmp_fi2d)
353
354       IF (vars_defined) THEN
355          DO i = 1, klon
356             zx_tmp_fi2d(i) = pctsrf(i,is_sic)
357          ENDDO
358       ENDIF
359       CALL histwrite_phy(o_sicf, zx_tmp_fi2d)
360       CALL histwrite_phy(o_q2m, zq2m)
361       CALL histwrite_phy(o_ustar, zustar)
362       CALL histwrite_phy(o_u10m, zu10m)
363       CALL histwrite_phy(o_v10m, zv10m)
364
365       IF (vars_defined) THEN
366          DO i = 1, klon
367             zx_tmp_fi2d(i) = paprs(i,1)
368          ENDDO
369       ENDIF
370       CALL histwrite_phy(o_psol, zx_tmp_fi2d)
371       CALL histwrite_phy(o_mass, zmasse)
372       CALL histwrite_phy(o_qsurf, zxqsurf)
373
374       IF (.NOT. ok_veget) THEN
375          CALL histwrite_phy(o_qsol, qsol)
376       ENDIF
377
378       IF (vars_defined) THEN
379          DO i = 1, klon
380             zx_tmp_fi2d(i) = rain_fall(i) + snow_fall(i)
381          ENDDO
382       ENDIF
383
384       CALL histwrite_phy(o_precip, zx_tmp_fi2d)
385       CALL histwrite_phy(o_ndayrain, nday_rain)
386
387       IF (vars_defined) THEN
388          DO i = 1, klon
389             zx_tmp_fi2d(i) = rain_lsc(i) + snow_lsc(i)
390          ENDDO
391       ENDIF
392       CALL histwrite_phy(o_plul, zx_tmp_fi2d)
393
394       IF (vars_defined) THEN
395          DO i = 1, klon
396             zx_tmp_fi2d(i) = rain_con(i) + snow_con(i)
397          ENDDO
398       ENDIF
399       CALL histwrite_phy(o_pluc, zx_tmp_fi2d)
400       CALL histwrite_phy(o_snow, snow_fall)
401       CALL histwrite_phy(o_msnow, snow_o)
402       CALL histwrite_phy(o_fsnow, zfra_o)
403       CALL histwrite_phy(o_evap, evap)
404       CALL histwrite_phy(o_tops, topsw)
405       CALL histwrite_phy(o_tops0, topsw0)
406       CALL histwrite_phy(o_topl, toplw)
407       CALL histwrite_phy(o_topl0, toplw0)
408
409       IF (vars_defined) THEN
410          zx_tmp_fi2d(1 : klon) = swup ( 1 : klon, klevp1 )
411       ENDIF
412       CALL histwrite_phy(o_SWupTOA, zx_tmp_fi2d)
413
414       IF (vars_defined) THEN
415          zx_tmp_fi2d(1 : klon) = swup0 ( 1 : klon, klevp1 )
416       ENDIF
417       CALL histwrite_phy(o_SWupTOAclr, zx_tmp_fi2d)
418
419       IF (vars_defined) THEN
420          zx_tmp_fi2d(1 : klon) = swdn ( 1 : klon, klevp1 )
421       ENDIF
422       CALL histwrite_phy(o_SWdnTOA, zx_tmp_fi2d)
423
424       IF (vars_defined) THEN
425          zx_tmp_fi2d(1 : klon) = swdn0 ( 1 : klon, klevp1 )
426       ENDIF
427       CALL histwrite_phy(o_SWdnTOAclr, zx_tmp_fi2d)
428
429       IF (vars_defined) THEN
430          zx_tmp_fi2d(:) = topsw(:)-toplw(:)
431       ENDIF
432       CALL histwrite_phy(o_nettop, zx_tmp_fi2d)
433       CALL histwrite_phy(o_SWup200, SWup200)
434       CALL histwrite_phy(o_SWup200clr, SWup200clr)
435       CALL histwrite_phy(o_SWdn200, SWdn200)
436       CALL histwrite_phy(o_SWdn200clr, SWdn200clr)
437       CALL histwrite_phy(o_LWup200, LWup200)
438       CALL histwrite_phy(o_LWup200clr, LWup200clr)
439       CALL histwrite_phy(o_LWdn200, LWdn200)
440       CALL histwrite_phy(o_LWdn200clr, LWdn200clr)
441       CALL histwrite_phy(o_sols, solsw)
442       CALL histwrite_phy(o_sols0, solsw0)
443       CALL histwrite_phy(o_soll, sollw)
444       CALL histwrite_phy(o_radsol, radsol)
445       CALL histwrite_phy(o_soll0, sollw0)
446
447       IF (vars_defined) THEN
448          zx_tmp_fi2d(1 : klon) = swup ( 1 : klon, 1 )
449       ENDIF
450       CALL histwrite_phy(o_SWupSFC, zx_tmp_fi2d)
451
452       IF (vars_defined) THEN
453          zx_tmp_fi2d(1 : klon) = swup0 ( 1 : klon, 1 )
454       ENDIF
455       CALL histwrite_phy(o_SWupSFCclr, zx_tmp_fi2d)
456
457       IF (vars_defined) THEN
458          zx_tmp_fi2d(1 : klon) = swdn ( 1 : klon, 1 )
459       ENDIF
460       CALL histwrite_phy(o_SWdnSFC, zx_tmp_fi2d)
461
462       IF (vars_defined) THEN
463          zx_tmp_fi2d(1 : klon) = swdn0 ( 1 : klon, 1 )
464       ENDIF
465       CALL histwrite_phy(o_SWdnSFCclr, zx_tmp_fi2d)
466
467       IF (vars_defined) THEN
468          zx_tmp_fi2d(1:klon)=sollwdown(1:klon)-sollw(1:klon)
469       ENDIF
470       CALL histwrite_phy(o_LWupSFC, zx_tmp_fi2d)
471       CALL histwrite_phy(o_LWdnSFC, sollwdown)
472
473       IF (vars_defined) THEN
474          sollwdownclr(1:klon) = -1.*lwdn0(1:klon,1)
475          zx_tmp_fi2d(1:klon)=sollwdownclr(1:klon)-sollw0(1:klon)
476       ENDIF
477       CALL histwrite_phy(o_LWupSFCclr, zx_tmp_fi2d)
478       CALL histwrite_phy(o_LWdnSFCclr, sollwdownclr)
479       CALL histwrite_phy(o_bils, bils)
480       CALL histwrite_phy(o_bils_diss, bils_diss)
481       CALL histwrite_phy(o_bils_ec, bils_ec)
482       IF (iflag_ener_conserv>=1) THEN
483         CALL histwrite_phy(o_bils_ech, bils_ech)
484       ENDIF
485       CALL histwrite_phy(o_bils_tke, bils_tke)
486       CALL histwrite_phy(o_bils_kinetic, bils_kinetic)
487       CALL histwrite_phy(o_bils_latent, bils_latent)
488       CALL histwrite_phy(o_bils_enthalp, bils_enthalp)
489
490       IF (vars_defined) THEN
491          zx_tmp_fi2d(1:klon)=-1*sens(1:klon)
492       ENDIF
493       CALL histwrite_phy(o_sens, zx_tmp_fi2d)
494       CALL histwrite_phy(o_fder, fder)
495       CALL histwrite_phy(o_ffonte, zxffonte)
496       CALL histwrite_phy(o_fqcalving, zxfqcalving)
497       CALL histwrite_phy(o_fqfonte, zxfqfonte)
498       IF (vars_defined) THEN
499          zx_tmp_fi2d=0.
500          DO nsrf=1,nbsrf
501             zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxu(:,1,nsrf)
502          ENDDO
503       ENDIF
504       CALL histwrite_phy(o_taux, zx_tmp_fi2d)
505
506       IF (vars_defined) THEN
507          zx_tmp_fi2d=0.
508          DO nsrf=1,nbsrf
509             zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxv(:,1,nsrf)
510          ENDDO
511       ENDIF
512       CALL histwrite_phy(o_tauy, zx_tmp_fi2d)
513
514       IF (ok_snow) THEN
515          CALL histwrite_phy(o_snowsrf, zxsnow)
516          CALL histwrite_phy(o_qsnow, qsnow)
517          CALL histwrite_phy(o_snowhgt,snowhgt)
518          CALL histwrite_phy(o_toice,to_ice)
519          CALL histwrite_phy(o_sissnow,sissnow)
520          CALL histwrite_phy(o_runoff,runoff)
521          CALL histwrite_phy(o_albslw3,albsol3_lic)
522       ENDIF
523
524       DO nsrf = 1, nbsrf
525          IF (vars_defined)             zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)*100.
526          CALL histwrite_phy(o_pourc_srf(nsrf), zx_tmp_fi2d)
527          IF (vars_defined)           zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)
528          CALL histwrite_phy(o_fract_srf(nsrf), zx_tmp_fi2d)
529          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxu( 1 : klon, 1, nsrf)
530          CALL histwrite_phy(o_taux_srf(nsrf), zx_tmp_fi2d)
531          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxv( 1 : klon, 1, nsrf)
532          CALL histwrite_phy(o_tauy_srf(nsrf), zx_tmp_fi2d)
533          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = ftsol( 1 : klon, nsrf)
534          CALL histwrite_phy(o_tsol_srf(nsrf), zx_tmp_fi2d)
535          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = evap_pot( 1 : klon, nsrf)
536          CALL histwrite_phy(o_evappot_srf(nsrf), zx_tmp_fi2d)
537          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = ustar(1 : klon, nsrf)
538          CALL histwrite_phy(o_ustar_srf(nsrf), zx_tmp_fi2d)
539          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = u10m(1 : klon, nsrf)
540          CALL histwrite_phy(o_u10m_srf(nsrf), zx_tmp_fi2d)
541          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = v10m(1 : klon, nsrf)
542          CALL histwrite_phy(o_v10m_srf(nsrf), zx_tmp_fi2d)
543          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = t2m(1 : klon, nsrf)
544          CALL histwrite_phy(o_t2m_srf(nsrf), zx_tmp_fi2d)
545          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = fevap(1 : klon, nsrf)
546          CALL histwrite_phy(o_evap_srf(nsrf), zx_tmp_fi2d)
547          IF (vars_defined)        zx_tmp_fi2d(1 : klon) = fluxt( 1 : klon, 1, nsrf)
548          CALL histwrite_phy(o_sens_srf(nsrf), zx_tmp_fi2d)
549          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxlat( 1 : klon, nsrf)
550          CALL histwrite_phy(o_lat_srf(nsrf), zx_tmp_fi2d)
551          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fsollw( 1 : klon, nsrf)
552          CALL histwrite_phy(o_flw_srf(nsrf), zx_tmp_fi2d)
553          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fsolsw( 1 : klon, nsrf)
554          CALL histwrite_phy(o_fsw_srf(nsrf), zx_tmp_fi2d)
555          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfbils( 1 : klon, nsrf)
556          CALL histwrite_phy(o_wbils_srf(nsrf), zx_tmp_fi2d)
557          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfbilo( 1 : klon, nsrf)
558          CALL histwrite_phy(o_wbilo_srf(nsrf), zx_tmp_fi2d)
559
560          IF (iflag_pbl > 1) THEN
561             CALL histwrite_phy(o_tke_srf(nsrf),  pbl_tke(:,1:klev,nsrf))
562             CALL histwrite_phy(o_tke_max_srf(nsrf),  pbl_tke(:,1:klev,nsrf))
563          ENDIF
564!jyg<
565          IF (iflag_pbl > 1) THEN
566             CALL histwrite_phy(o_dltpbltke_srf(nsrf), wake_delta_pbl_TKE(:,1:klev,nsrf))
567          ENDIF
568!>jyg
569
570       ENDDO
571       DO nsrf=1,nbsrf+1
572          CALL histwrite_phy(o_wstar(nsrf), wstar(1 : klon, nsrf))
573       ENDDO
574
575       CALL histwrite_phy(o_cdrm, cdragm)
576       CALL histwrite_phy(o_cdrh, cdragh)
577       CALL histwrite_phy(o_cldl, cldl)
578       CALL histwrite_phy(o_cldm, cldm)
579       CALL histwrite_phy(o_cldh, cldh)
580       CALL histwrite_phy(o_cldt, cldt)
581       CALL histwrite_phy(o_JrNt, JrNt)
582       CALL histwrite_phy(o_cldljn, cldl*JrNt)
583       CALL histwrite_phy(o_cldmjn, cldm*JrNt)
584       CALL histwrite_phy(o_cldhjn, cldh*JrNt)
585       CALL histwrite_phy(o_cldtjn, cldt*JrNt)
586       CALL histwrite_phy(o_cldq, cldq)
587       IF (vars_defined)       zx_tmp_fi2d(1:klon) = flwp(1:klon)
588       CALL histwrite_phy(o_lwp, zx_tmp_fi2d)
589       IF (vars_defined)       zx_tmp_fi2d(1:klon) = fiwp(1:klon)
590       CALL histwrite_phy(o_iwp, zx_tmp_fi2d)
591       CALL histwrite_phy(o_ue, ue)
592       CALL histwrite_phy(o_ve, ve)
593       CALL histwrite_phy(o_uq, uq)
594       CALL histwrite_phy(o_vq, vq)
595       IF(iflag_con.GE.3) THEN ! sb
596          CALL histwrite_phy(o_cape, cape)
597          CALL histwrite_phy(o_pbase, ema_pcb)
598          CALL histwrite_phy(o_ptop, ema_pct)
599          CALL histwrite_phy(o_fbase, ema_cbmf)
600          if (iflag_con /= 30) then
601             CALL histwrite_phy(o_plcl, plcl)
602             CALL histwrite_phy(o_plfc, plfc)
603             CALL histwrite_phy(o_wbeff, wbeff)
604          end if
605
606          CALL histwrite_phy(o_cape_max, cape)
607
608          CALL histwrite_phy(o_upwd, upwd)
609          CALL histwrite_phy(o_Ma, Ma)
610          CALL histwrite_phy(o_dnwd, dnwd)
611          CALL histwrite_phy(o_dnwd0, dnwd0)
612          IF (vars_defined)         zx_tmp_fi2d=float(itau_con)/float(itap)
613          CALL histwrite_phy(o_ftime_con, zx_tmp_fi2d)
614          IF (vars_defined) THEN
615             IF(iflag_thermals>=1)THEN
616                zx_tmp_fi3d=dnwd+dnwd0+upwd+fm_therm(:,1:klev)
617             ELSE
618                zx_tmp_fi3d=dnwd+dnwd0+upwd
619             ENDIF
620          ENDIF
621          CALL histwrite_phy(o_mc, zx_tmp_fi3d)
622       ENDIF !iflag_con .GE. 3
623       CALL histwrite_phy(o_prw, prw)
624       CALL histwrite_phy(o_s_pblh, s_pblh)
625       CALL histwrite_phy(o_s_pblt, s_pblt)
626       CALL histwrite_phy(o_s_lcl, s_lcl)
627       CALL histwrite_phy(o_s_therm, s_therm)
628       !IM : Les champs suivants (s_capCL, s_oliqCL, s_cteiCL, s_trmb1, s_trmb2, s_trmb3) ne sont pas definis dans HBTM.F
629       !       IF (o_s_capCL%flag(iff)<=lev_files(iff)) THEN
630       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
631       !    $o_s_capCL%name,itau_w,s_capCL)
632       !       ENDIF
633       !       IF (o_s_oliqCL%flag(iff)<=lev_files(iff)) THEN
634       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
635       !    $o_s_oliqCL%name,itau_w,s_oliqCL)
636       !       ENDIF
637       !       IF (o_s_cteiCL%flag(iff)<=lev_files(iff)) THEN
638       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
639       !    $o_s_cteiCL%name,itau_w,s_cteiCL)
640       !       ENDIF
641       !       IF (o_s_trmb1%flag(iff)<=lev_files(iff)) THEN
642       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
643       !    $o_s_trmb1%name,itau_w,s_trmb1)
644       !       ENDIF
645       !       IF (o_s_trmb2%flag(iff)<=lev_files(iff)) THEN
646       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
647       !    $o_s_trmb2%name,itau_w,s_trmb2)
648       !       ENDIF
649       !       IF (o_s_trmb3%flag(iff)<=lev_files(iff)) THEN
650       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
651       !    $o_s_trmb3%name,itau_w,s_trmb3)
652       !       ENDIF
653
654       ! ATTENTION, LES ANCIENS HISTWRITE ONT ETES CONSERVES EN ATTENDANT MIEUX:
655       ! Champs interpolles sur des niveaux de pression
656       DO iff=1, nfiles
657          ll=0
658          DO k=1, nlevSTD
659             bb2=clevSTD(k)
660             IF(bb2.EQ."850".OR.bb2.EQ."700".OR. &
661                  bb2.EQ."500".OR.bb2.EQ."200".OR. &
662                  bb2.EQ."100".OR. &
663                  bb2.EQ."50".OR.bb2.EQ."10") THEN
664
665                ! a refaire correctement !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
666                ll=ll+1
667                CALL histwrite_phy(o_uSTDlevs(ll),uwriteSTD(:,k,iff), iff)
668                CALL histwrite_phy(o_vSTDlevs(ll),vwriteSTD(:,k,iff), iff)
669                CALL histwrite_phy(o_wSTDlevs(ll),wwriteSTD(:,k,iff), iff)
670                CALL histwrite_phy(o_zSTDlevs(ll),phiwriteSTD(:,k,iff), iff)
671                CALL histwrite_phy(o_qSTDlevs(ll),qwriteSTD(:,k,iff), iff)
672                CALL histwrite_phy(o_tSTDlevs(ll),twriteSTD(:,k,iff), iff)
673
674             ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR.
675          ENDDO
676       ENDDO
677
678       IF (vars_defined) THEN
679          DO i=1, klon
680             IF (pctsrf(i,is_oce).GT.epsfra.OR. &
681                  pctsrf(i,is_sic).GT.epsfra) THEN
682                zx_tmp_fi2d(i) = (ftsol(i, is_oce) * pctsrf(i,is_oce)+ &
683                     ftsol(i, is_sic) * pctsrf(i,is_sic))/ &
684                     (pctsrf(i,is_oce)+pctsrf(i,is_sic))
685             ELSE
686                zx_tmp_fi2d(i) = 273.15
687             ENDIF
688          ENDDO
689       ENDIF
690       CALL histwrite_phy(o_t_oce_sic, zx_tmp_fi2d)
691
692       ! Couplage convection-couche limite
693       IF (iflag_con.GE.3) THEN
694          IF (iflag_coupl>=1) THEN
695             CALL histwrite_phy(o_ale_bl, ale_bl)
696             CALL histwrite_phy(o_alp_bl, alp_bl)
697          ENDIF !iflag_coupl>=1
698       ENDIF !(iflag_con.GE.3)
699       ! Wakes
700       IF (iflag_con.EQ.3) THEN
701          IF (iflag_wake>=1) THEN
702             CALL histwrite_phy(o_ale_wk, ale_wake)
703             CALL histwrite_phy(o_alp_wk, alp_wake)
704             CALL histwrite_phy(o_ale, ale)
705             CALL histwrite_phy(o_alp, alp)
706             CALL histwrite_phy(o_cin, cin)
707             CALL histwrite_phy(o_WAPE, wake_pe)
708             CALL histwrite_phy(o_wake_h, wake_h)
709             CALL histwrite_phy(o_wake_s, wake_s)
710             CALL histwrite_phy(o_wake_deltat, wake_deltat)
711             CALL histwrite_phy(o_wake_deltaq, wake_deltaq)
712             CALL histwrite_phy(o_wake_omg, wake_omg)
713             IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_wake(1:klon,1:klev) &
714                  /pdtphys
715             CALL histwrite_phy(o_dtwak, zx_tmp_fi3d)
716             IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_wake(1:klon,1:klev)/pdtphys
717             CALL histwrite_phy(o_dqwak, zx_tmp_fi3d)
718          ENDIF ! iflag_wake>=1
719          CALL histwrite_phy(o_Vprecip, Vprecip)
720          CALL histwrite_phy(o_ftd, ftd)
721          CALL histwrite_phy(o_fqd, fqd)
722       ELSEIF (iflag_con.EQ.30) THEN
723          ! sortie RomP convection descente insaturee iflag_con=30
724          CALL histwrite_phy(o_Vprecip, Vprecip)
725          CALL histwrite_phy(o_wdtrainA, wdtrainA)
726          CALL histwrite_phy(o_wdtrainM, wdtrainM)
727       ENDIF !(iflag_con.EQ.3.or.iflag_con.EQ.30)
728!!! nrlmd le 10/04/2012
729       IF (iflag_trig_bl>=1) THEN
730          CALL histwrite_phy(o_n2, n2)
731          CALL histwrite_phy(o_s2, s2)
732          CALL histwrite_phy(o_proba_notrig, proba_notrig)
733          CALL histwrite_phy(o_random_notrig, random_notrig)
734          CALL histwrite_phy(o_ale_bl_stat, ale_bl_stat)
735          CALL histwrite_phy(o_ale_bl_trig, ale_bl_trig)
736       ENDIF  !(iflag_trig_bl>=1)
737       IF (iflag_clos_bl>=1) THEN
738          CALL histwrite_phy(o_alp_bl_det, alp_bl_det)
739          CALL histwrite_phy(o_alp_bl_fluct_m, alp_bl_fluct_m)
740          CALL histwrite_phy(o_alp_bl_fluct_tke,  &
741               alp_bl_fluct_tke)
742          CALL histwrite_phy(o_alp_bl_conv, alp_bl_conv)
743          CALL histwrite_phy(o_alp_bl_stat, alp_bl_stat)
744       ENDIF  !(iflag_clos_bl>=1)
745!!! fin nrlmd le 10/04/2012
746       ! Output of slab ocean variables
747       IF (type_ocean=='slab ') THEN
748          CALL histwrite_phy(o_slab_qflux, slab_wfbils)
749          CALL histwrite_phy(o_slab_bils, slab_bils)
750          IF (nslay.EQ.1) THEN
751              zx_tmp_fi2d(:)=tslab(:,1)
752              CALL histwrite_phy(o_tslab, zx_tmp_fi2d)
753          ELSE
754              CALL histwrite_phy(o_tslab, tslab)
755          END IF
756       ENDIF !type_ocean == force/slab
757       CALL histwrite_phy(o_weakinv, weak_inversion)
758       CALL histwrite_phy(o_dthmin, dthmin)
759       CALL histwrite_phy(o_cldtau, cldtau)
760       CALL histwrite_phy(o_cldemi, cldemi)
761       CALL histwrite_phy(o_pr_con_l, pmflxr(:,1:klev))
762       CALL histwrite_phy(o_pr_con_i, pmflxs(:,1:klev))
763       CALL histwrite_phy(o_pr_lsc_l, prfl(:,1:klev))
764       CALL histwrite_phy(o_pr_lsc_i, psfl(:,1:klev))
765       CALL histwrite_phy(o_re, re)
766       CALL histwrite_phy(o_fl, fl)
767       IF (vars_defined) THEN
768          DO i=1, klon
769             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
770          ENDDO
771       ENDIF
772       CALL histwrite_phy(o_rh2m, zx_tmp_fi2d)
773
774       IF (vars_defined) THEN
775          DO i=1, klon
776             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
777          ENDDO
778       ENDIF
779       CALL histwrite_phy(o_rh2m_min, zx_tmp_fi2d)
780
781       IF (vars_defined) THEN
782          DO i=1, klon
783             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
784          ENDDO
785       ENDIF
786       CALL histwrite_phy(o_rh2m_max, zx_tmp_fi2d)
787
788       CALL histwrite_phy(o_qsat2m, qsat2m)
789       CALL histwrite_phy(o_tpot, tpot)
790       CALL histwrite_phy(o_tpote, tpote)
791       IF (vars_defined) zx_tmp_fi2d(1 : klon) = fsolsw( 1 : klon, is_ter)
792       CALL histwrite_phy(o_SWnetOR,  zx_tmp_fi2d)
793       IF (vars_defined) zx_tmp_fi2d(1:klon) = solsw(1:klon)/(1.-albsol1(1:klon))
794       CALL histwrite_phy(o_SWdownOR,  zx_tmp_fi2d)
795       CALL histwrite_phy(o_LWdownOR, sollwdown)
796       CALL histwrite_phy(o_snowl, snow_lsc)
797       CALL histwrite_phy(o_solldown, sollwdown)
798       CALL histwrite_phy(o_dtsvdfo, d_ts(:,is_oce))
799       CALL histwrite_phy(o_dtsvdft, d_ts(:,is_ter))
800       CALL histwrite_phy(o_dtsvdfg,  d_ts(:,is_lic))
801       CALL histwrite_phy(o_dtsvdfi, d_ts(:,is_sic))
802       CALL histwrite_phy(o_rugs, zxrugs)
803       ! OD550 per species
804!--OLIVIER
805!This is warranted by treating INCA aerosols as offline aerosols
806!       IF (new_aod .and. (.not. aerosol_couple)) THEN
807       IF (new_aod) THEN
808          IF (flag_aerosol.GT.0) THEN
809             CALL histwrite_phy(o_od550aer, od550aer)
810             CALL histwrite_phy(o_od865aer, od865aer)
811             CALL histwrite_phy(o_absvisaer, absvisaer)
812             CALL histwrite_phy(o_od550lt1aer, od550lt1aer)
813             CALL histwrite_phy(o_sconcso4, sconcso4)
814             CALL histwrite_phy(o_sconcno3, sconcno3)
815             CALL histwrite_phy(o_sconcoa, sconcoa)
816             CALL histwrite_phy(o_sconcbc, sconcbc)
817             CALL histwrite_phy(o_sconcss, sconcss)
818             CALL histwrite_phy(o_sconcdust, sconcdust)
819             CALL histwrite_phy(o_concso4, concso4)
820             CALL histwrite_phy(o_concno3, concno3)
821             CALL histwrite_phy(o_concoa, concoa)
822             CALL histwrite_phy(o_concbc, concbc)
823             CALL histwrite_phy(o_concss, concss)
824             CALL histwrite_phy(o_concdust, concdust)
825             CALL histwrite_phy(o_loadso4, loadso4)
826             CALL histwrite_phy(o_loadoa, loadoa)
827             CALL histwrite_phy(o_loadbc, loadbc)
828             CALL histwrite_phy(o_loadss, loadss)
829             CALL histwrite_phy(o_loaddust, loaddust)
830             !--STRAT AER
831          ENDIF
832          IF (flag_aerosol.GT.0.OR.flag_aerosol_strat) THEN
833!             DO naero = 1, naero_spc
834!--correction mini bug OB
835             DO naero = 1, naero_tot
836                CALL histwrite_phy(o_tausumaero(naero), &
837                     tausum_aero(:,2,naero) )
838             END DO
839          ENDIF
840          IF (flag_aerosol_strat) THEN
841             CALL histwrite_phy(o_tausumaero_lw, &
842                  tausum_aero(:,6,id_STRAT_phy) )
843          ENDIF
844       ENDIF
845       IF (ok_ade) THEN
846          CALL histwrite_phy(o_topswad, topswad_aero)
847          CALL histwrite_phy(o_topswad0, topswad0_aero)
848          CALL histwrite_phy(o_solswad, solswad_aero)
849          CALL histwrite_phy(o_solswad0, solswad0_aero)
850          CALL histwrite_phy(o_toplwad, toplwad_aero)
851          CALL histwrite_phy(o_toplwad0, toplwad0_aero)
852          CALL histwrite_phy(o_sollwad, sollwad_aero)
853          CALL histwrite_phy(o_sollwad0, sollwad0_aero)
854          !====MS forcing diagnostics
855          if (new_aod) then
856             CALL histwrite_phy(o_swtoaas_nat, topsw_aero(:,1))
857             CALL histwrite_phy(o_swsrfas_nat, solsw_aero(:,1))
858             CALL histwrite_phy(o_swtoacs_nat, topsw0_aero(:,1))
859             CALL histwrite_phy(o_swsrfcs_nat, solsw0_aero(:,1))
860             !ant
861             CALL histwrite_phy(o_swtoaas_ant, topsw_aero(:,2))
862             CALL histwrite_phy(o_swsrfas_ant, solsw_aero(:,2))
863             CALL histwrite_phy(o_swtoacs_ant, topsw0_aero(:,2))
864             CALL histwrite_phy(o_swsrfcs_ant, solsw0_aero(:,2))
865             !cf
866             if (.not. aerosol_couple) then
867                CALL histwrite_phy(o_swtoacf_nat, topswcf_aero(:,1))
868                CALL histwrite_phy(o_swsrfcf_nat, solswcf_aero(:,1))
869                CALL histwrite_phy(o_swtoacf_ant, topswcf_aero(:,2))
870                CALL histwrite_phy(o_swsrfcf_ant, solswcf_aero(:,2))
871                CALL histwrite_phy(o_swtoacf_zero,topswcf_aero(:,3))
872                CALL histwrite_phy(o_swsrfcf_zero,solswcf_aero(:,3))
873             endif
874          endif ! new_aod
875          !====MS forcing diagnostics
876       ENDIF
877       IF (ok_aie) THEN
878          CALL histwrite_phy(o_topswai, topswai_aero)
879          CALL histwrite_phy(o_solswai, solswai_aero)
880       ENDIF
881       IF (flag_aerosol.GT.0.AND.ok_cdnc) THEN
882          CALL histwrite_phy(o_scdnc, scdnc)
883          CALL histwrite_phy(o_cldncl, cldncl)
884          CALL histwrite_phy(o_reffclws, reffclws)
885          CALL histwrite_phy(o_reffclwc, reffclwc)
886          CALL histwrite_phy(o_cldnvi, cldnvi)
887          CALL histwrite_phy(o_lcc, lcc)
888          CALL histwrite_phy(o_lcc3d, lcc3d)
889          CALL histwrite_phy(o_lcc3dcon, lcc3dcon)
890          CALL histwrite_phy(o_lcc3dstra, lcc3dstra)
891          CALL histwrite_phy(o_reffclwtop, reffclwtop)
892       ENDIF
893       ! Champs 3D:
894       IF (ok_ade .OR. ok_aie) then
895          CALL histwrite_phy(o_ec550aer, ec550aer)
896       ENDIF
897       CALL histwrite_phy(o_lwcon, flwc)
898       CALL histwrite_phy(o_iwcon, fiwc)
899       CALL histwrite_phy(o_temp, t_seri)
900       CALL histwrite_phy(o_theta, theta)
901       CALL histwrite_phy(o_ovapinit, qx(:,:,ivap))
902       CALL histwrite_phy(o_ovap, q_seri)
903       CALL histwrite_phy(o_oliq, ql_seri)
904       CALL histwrite_phy(o_geop, zphi)
905       CALL histwrite_phy(o_vitu, u_seri)
906       CALL histwrite_phy(o_vitv, v_seri)
907       CALL histwrite_phy(o_vitw, omega)
908       CALL histwrite_phy(o_pres, pplay)
909       CALL histwrite_phy(o_paprs, paprs(:,1:klev))
910       IF (vars_defined) THEN
911          DO i=1, klon
912             zx_tmp_fi3d1(i,1)= pphis(i)/RG
913             !020611   zx_tmp_fi3d(i,1)= pphis(i)/RG
914          ENDDO
915          DO k=1, klev
916             !020611        DO k=1, klev-1
917             DO i=1, klon
918                !020611         zx_tmp_fi3d(i,k+1)= zx_tmp_fi3d(i,k) - (t_seri(i,k) *RD *
919                zx_tmp_fi3d1(i,k+1)= zx_tmp_fi3d1(i,k) - (t_seri(i,k) *RD *  &
920                     (paprs(i,k+1) - paprs(i,k))) / ( pplay(i,k) * RG )
921             ENDDO
922          ENDDO
923       ENDIF
924       CALL histwrite_phy(o_zfull,zx_tmp_fi3d1(:,2:klevp1))
925       !020611    $o_zfull%name,itau_w,zx_tmp_fi3d)
926
927       IF (vars_defined)  THEN
928          DO i=1, klon
929             zx_tmp_fi3d(i,1)= pphis(i)/RG - ( &
930                  (t_seri(i,1)+zxtsol(i))/2. *RD * &
931                  (pplay(i,1) - paprs(i,1)))/( (paprs(i,1)+pplay(i,1))/2.* RG)
932          ENDDO
933          DO k=1, klev-1
934             DO i=1, klon
935                zx_tmp_fi3d(i,k+1)= zx_tmp_fi3d(i,k) - ( &
936                     (t_seri(i,k)+t_seri(i,k+1))/2. *RD *  &
937                     (pplay(i,k+1) - pplay(i,k))) / ( paprs(i,k) * RG )
938             ENDDO
939          ENDDO
940       ENDIF
941       CALL histwrite_phy(o_zhalf, zx_tmp_fi3d)
942       CALL histwrite_phy(o_rneb, cldfra)
943       CALL histwrite_phy(o_rnebcon, rnebcon)
944       CALL histwrite_phy(o_rnebls, rneb)
945       IF (vars_defined)  THEN
946          DO k=1, klev
947             DO i=1, klon
948                zx_tmp_fi3d(i,k)=cldfra(i,k)*JrNt(i)
949             ENDDO
950          ENDDO
951       ENDIF
952       CALL histwrite_phy(o_rnebjn, zx_tmp_fi3d)
953       CALL histwrite_phy(o_rhum, zx_rh)
954       CALL histwrite_phy(o_ozone, &
955            wo(:, :, 1) * dobson_u * 1e3 / zmasse / rmo3 * rmd)
956
957       IF (read_climoz == 2) THEN
958          CALL histwrite_phy(o_ozone_light, &
959               wo(:, :, 2) * dobson_u * 1e3 / zmasse / rmo3 * rmd)
960       ENDIF
961
962       CALL histwrite_phy(o_dtphy, d_t)
963       CALL histwrite_phy(o_dqphy,  d_qx(:,:,ivap))
964       DO nsrf=1, nbsrf
965          IF (vars_defined) zx_tmp_fi2d(1 : klon) = falb1( 1 : klon, nsrf)
966          CALL histwrite_phy(o_albe_srf(nsrf), zx_tmp_fi2d)
967          IF (vars_defined) zx_tmp_fi2d(1 : klon) = frugs( 1 : klon, nsrf)
968          CALL histwrite_phy(o_rugs_srf(nsrf), zx_tmp_fi2d)
969          IF (vars_defined) zx_tmp_fi2d(1 : klon) = agesno( 1 : klon, nsrf)
970          CALL histwrite_phy(o_ages_srf(nsrf), zx_tmp_fi2d)
971       ENDDO !nsrf=1, nbsrf
972       CALL histwrite_phy(o_alb1, albsol1)
973       CALL histwrite_phy(o_alb2, albsol2)
974       !FH Sorties pour la couche limite
975       if (iflag_pbl>1) then
976          zx_tmp_fi3d=0.
977          IF (vars_defined) THEN
978             do nsrf=1,nbsrf
979                do k=1,klev
980                   zx_tmp_fi3d(:,k)=zx_tmp_fi3d(:,k) &
981                        +pctsrf(:,nsrf)*pbl_tke(:,k,nsrf)
982                enddo
983             enddo
984          ENDIF
985          CALL histwrite_phy(o_tke, zx_tmp_fi3d)
986
987          CALL histwrite_phy(o_tke_max, zx_tmp_fi3d)
988       ENDIF
989
990       CALL histwrite_phy(o_kz, coefh(:,:,is_ave))
991
992       CALL histwrite_phy(o_kz_max, coefh(:,:,is_ave))
993
994       CALL histwrite_phy(o_clwcon, clwcon0)
995       CALL histwrite_phy(o_dtdyn, d_t_dyn)
996       CALL histwrite_phy(o_dqdyn, d_q_dyn)
997       CALL histwrite_phy(o_dudyn, d_u_dyn)
998       CALL histwrite_phy(o_dvdyn, d_v_dyn)
999
1000       IF (vars_defined) THEN
1001          zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys
1002       ENDIF
1003       CALL histwrite_phy(o_dtcon, zx_tmp_fi3d)
1004       if(iflag_thermals.eq.0)then
1005          IF (vars_defined) THEN
1006             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
1007                  d_t_ajsb(1:klon,1:klev)/pdtphys
1008          ENDIF
1009          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
1010       else if(iflag_thermals.ge.1.and.iflag_wake.EQ.1)then
1011          IF (vars_defined) THEN
1012             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
1013                  d_t_ajs(1:klon,1:klev)/pdtphys + &
1014                  d_t_wake(1:klon,1:klev)/pdtphys
1015          ENDIF
1016          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
1017       endif
1018       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_con(1:klon,1:klev)/pdtphys
1019       CALL histwrite_phy(o_ducon, zx_tmp_fi3d)
1020       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_con(1:klon,1:klev)/pdtphys
1021       CALL histwrite_phy(o_dvcon, zx_tmp_fi3d)
1022       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
1023       CALL histwrite_phy(o_dqcon, zx_tmp_fi3d)
1024
1025       IF(iflag_thermals.EQ.0) THEN
1026          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
1027          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
1028       ELSE IF(iflag_thermals.GE.1.AND.iflag_wake.EQ.1) THEN
1029          IF (vars_defined) THEN
1030             zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys + &
1031                  d_q_ajs(1:klon,1:klev)/pdtphys + &
1032                  d_q_wake(1:klon,1:klev)/pdtphys
1033          ENDIF
1034          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
1035       ENDIF
1036
1037       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lsc(1:klon,1:klev)/pdtphys
1038       CALL histwrite_phy(o_dtlsc, zx_tmp_fi3d)
1039       IF (vars_defined) zx_tmp_fi3d(1:klon, 1:klev)=(d_t_lsc(1:klon,1:klev)+ &
1040            d_t_eva(1:klon,1:klev))/pdtphys
1041       CALL histwrite_phy(o_dtlschr, zx_tmp_fi3d)
1042       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys
1043       CALL histwrite_phy(o_dqlsc, zx_tmp_fi3d)
1044       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=beta_prec(1:klon,1:klev)
1045       CALL histwrite_phy(o_beta_prec, zx_tmp_fi3d)
1046!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1047       ! Sorties specifiques a la separation thermiques/non thermiques
1048       if (iflag_thermals>=1) then
1049          IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscth(1:klon,1:klev)/pdtphys
1050          CALL histwrite_phy(o_dtlscth, zx_tmp_fi3d)
1051          IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscst(1:klon,1:klev)/pdtphys
1052          CALL histwrite_phy(o_dtlscst, zx_tmp_fi3d)
1053          IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscth(1:klon,1:klev)/pdtphys
1054          CALL histwrite_phy(o_dqlscth, zx_tmp_fi3d)
1055          IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscst(1:klon,1:klev)/pdtphys
1056          CALL histwrite_phy(o_dqlscst, zx_tmp_fi3d)
1057          CALL histwrite_phy(o_plulth, plul_th)
1058          CALL histwrite_phy(o_plulst, plul_st)
1059          IF (vars_defined) THEN
1060             do k=1,klev
1061                do i=1,klon
1062                   if (ptconvth(i,k)) then
1063                      zx_tmp_fi3d(i,k)=1.
1064                   else
1065                      zx_tmp_fi3d(i,k)=0.
1066                   endif
1067                enddo
1068             enddo
1069          ENDIF
1070          CALL histwrite_phy(o_ptconvth, zx_tmp_fi3d)
1071          IF (vars_defined) THEN
1072             do i=1,klon
1073                zx_tmp_fi2d(1:klon)=lmax_th(:)
1074             enddo
1075          ENDIF
1076          CALL histwrite_phy(o_lmaxth, zx_tmp_fi2d)
1077       endif ! iflag_thermals>=1
1078!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1079       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf(1:klon,1:klev)/pdtphys
1080       CALL histwrite_phy(o_dtvdf, zx_tmp_fi3d)
1081       IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_diss(1:klon,1:klev)/pdtphys
1082       CALL histwrite_phy(o_dtdis, zx_tmp_fi3d)
1083       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf(1:klon,1:klev)/pdtphys
1084       CALL histwrite_phy(o_dqvdf, zx_tmp_fi3d)
1085       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_eva(1:klon,1:klev)/pdtphys
1086       CALL histwrite_phy(o_dteva, zx_tmp_fi3d)
1087       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_eva(1:klon,1:klev)/pdtphys
1088       CALL histwrite_phy(o_dqeva, zx_tmp_fi3d)
1089       zpt_conv = 0.
1090       WHERE (ptconv) zpt_conv = 1.
1091       CALL histwrite_phy(o_ptconv, zpt_conv)
1092       CALL histwrite_phy(o_ratqs, ratqs)
1093       IF (vars_defined) THEN
1094          zx_tmp_fi3d(1:klon,1:klev)=d_t_ajs(1:klon,1:klev)/pdtphys - &
1095               d_t_ajsb(1:klon,1:klev)/pdtphys
1096       ENDIF
1097       CALL histwrite_phy(o_dtthe, zx_tmp_fi3d)
1098       IF (vars_defined) THEN
1099          zx_tmp_fi3d(1:klon,1:klev)=d_u_ajs(1:klon,1:klev)/pdtphys
1100       ENDIF
1101       CALL histwrite_phy(o_duthe, zx_tmp_fi3d)
1102       IF (vars_defined) THEN
1103          zx_tmp_fi3d(1:klon,1:klev)=d_v_ajs(1:klon,1:klev)/pdtphys
1104       ENDIF
1105       CALL histwrite_phy(o_dvthe, zx_tmp_fi3d)
1106
1107       IF (iflag_thermals>=1) THEN
1108          ! Pour l instant 0 a y reflichir pour les thermiques
1109          zx_tmp_fi2d=0.
1110          CALL histwrite_phy(o_ftime_th, zx_tmp_fi2d)
1111          CALL histwrite_phy(o_f_th, fm_therm)
1112          CALL histwrite_phy(o_e_th, entr_therm)
1113          CALL histwrite_phy(o_w_th, zw2)
1114          CALL histwrite_phy(o_q_th, zqasc)
1115          CALL histwrite_phy(o_a_th, fraca)
1116          CALL histwrite_phy(o_d_th, detr_therm)
1117          CALL histwrite_phy(o_f0_th, f0)
1118          CALL histwrite_phy(o_zmax_th, zmax_th)
1119          IF (vars_defined) THEN
1120             zx_tmp_fi3d(1:klon,1:klev)=d_q_ajs(1:klon,1:klev)/pdtphys - &
1121                  d_q_ajsb(1:klon,1:klev)/pdtphys
1122          ENDIF
1123          CALL histwrite_phy(o_dqthe, zx_tmp_fi3d)
1124       ENDIF !iflag_thermals
1125       IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ajsb(1:klon,1:klev)/pdtphys
1126       CALL histwrite_phy(o_dtajs, zx_tmp_fi3d)
1127       IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_ajsb(1:klon,1:klev)/pdtphys
1128       CALL histwrite_phy(o_dqajs, zx_tmp_fi3d)
1129       IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=heat(1:klon,1:klev)/RDAY
1130       CALL histwrite_phy(o_dtswr, zx_tmp_fi3d)
1131       IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=heat0(1:klon,1:klev)/RDAY
1132       CALL histwrite_phy(o_dtsw0, zx_tmp_fi3d)
1133       IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=-1.*cool(1:klon,1:klev)/RDAY
1134       CALL histwrite_phy(o_dtlwr, zx_tmp_fi3d)
1135       IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=-1.*cool0(1:klon,1:klev)/RDAY
1136       CALL histwrite_phy(o_dtlw0, zx_tmp_fi3d)
1137       IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ec(1:klon,1:klev)/pdtphys
1138       CALL histwrite_phy(o_dtec, zx_tmp_fi3d)
1139       IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_vdf(1:klon,1:klev)/pdtphys
1140       CALL histwrite_phy(o_duvdf, zx_tmp_fi3d)
1141       IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_vdf(1:klon,1:klev)/pdtphys
1142       CALL histwrite_phy(o_dvvdf, zx_tmp_fi3d)
1143       IF (ok_orodr) THEN
1144          IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_oro(1:klon,1:klev)/pdtphys
1145          CALL histwrite_phy(o_duoro, zx_tmp_fi3d)
1146          IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_oro(1:klon,1:klev)/pdtphys
1147          CALL histwrite_phy(o_dvoro, zx_tmp_fi3d)
1148          IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_oro(1:klon,1:klev)/pdtphys
1149          CALL histwrite_phy(o_dtoro, zx_tmp_fi3d)
1150       ENDIF
1151       IF (ok_orolf) THEN
1152          IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_lif(1:klon,1:klev)/pdtphys
1153          CALL histwrite_phy(o_dulif, zx_tmp_fi3d)
1154
1155          IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_lif(1:klon,1:klev)/pdtphys
1156          CALL histwrite_phy(o_dvlif, zx_tmp_fi3d)
1157
1158          IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lif(1:klon,1:klev)/pdtphys
1159          CALL histwrite_phy(o_dtlif, zx_tmp_fi3d)
1160       ENDIF
1161
1162       IF (ok_hines) THEN
1163          IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_hin(1:klon,1:klev)/pdtphys
1164          CALL histwrite_phy(o_duhin, zx_tmp_fi3d)
1165          IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_hin(1:klon,1:klev)/pdtphys
1166          CALL histwrite_phy(o_dvhin, zx_tmp_fi3d)
1167          IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_hin(1:klon,1:klev)/pdtphys
1168          CALL histwrite_phy(o_dthin, zx_tmp_fi3d)
1169       ENDIF
1170
1171       IF (ok_gwd_rando) then
1172          CALL histwrite_phy(o_du_gwd_rando, du_gwd_rando / pdtphys)
1173          CALL histwrite_phy(o_dv_gwd_rando, dv_gwd_rando / pdtphys)
1174          CALL histwrite_phy(o_vstr_gwd_rando, zvstr_gwd_rando)
1175       end IF
1176
1177       IF (ok_qch4) then
1178          CALL histwrite_phy(o_dqch4, d_q_ch4 / pdtphys)
1179       ENDIF
1180
1181       CALL histwrite_phy(o_rsu, swup)
1182       CALL histwrite_phy(o_rsd, swdn)
1183       CALL histwrite_phy(o_rlu, lwup)
1184       CALL histwrite_phy(o_rld, lwdn)
1185       CALL histwrite_phy(o_rsucs, swup0)
1186       CALL histwrite_phy(o_rsdcs, swdn0)
1187       CALL histwrite_phy(o_rlucs, lwup0)
1188       CALL histwrite_phy(o_rldcs, lwdn0)
1189       IF(vars_defined) THEN
1190          zx_tmp_fi3d(1:klon,1:klev)=d_t(1:klon,1:klev)+ &
1191               d_t_dyn(1:klon,1:klev)
1192       ENDIF
1193       CALL histwrite_phy(o_tnt, zx_tmp_fi3d)
1194       IF(vars_defined) THEN
1195          zx_tmp_fi3d(1:klon,1:klev)=heat(1:klon,1:klev)/RDAY - &
1196               cool(1:klon,1:klev)/RDAY
1197       ENDIF
1198       CALL histwrite_phy(o_tntr, zx_tmp_fi3d)
1199       IF(vars_defined) THEN
1200          zx_tmp_fi3d(1:klon,1:klev)= (d_t_lsc(1:klon,1:klev)+ &
1201               d_t_eva(1:klon,1:klev)+ &
1202               d_t_vdf(1:klon,1:klev))/pdtphys
1203       ENDIF
1204       CALL histwrite_phy(o_tntscpbl, zx_tmp_fi3d)
1205       IF(vars_defined) THEN
1206          zx_tmp_fi3d(1:klon,1:klev)=d_qx(1:klon,1:klev,ivap)+ &
1207               d_q_dyn(1:klon,1:klev)
1208       ENDIF
1209       CALL histwrite_phy(o_tnhus, zx_tmp_fi3d)
1210       IF(vars_defined) THEN
1211          zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys+ &
1212               d_q_eva(1:klon,1:klev)/pdtphys
1213       ENDIF
1214       CALL histwrite_phy(o_tnhusscpbl, zx_tmp_fi3d)
1215       CALL histwrite_phy(o_evu, coefm(:,:,is_ave))
1216       IF(vars_defined) THEN
1217          zx_tmp_fi3d(1:klon,1:klev)=q_seri(1:klon,1:klev)+ &
1218               ql_seri(1:klon,1:klev)
1219       ENDIF
1220       CALL histwrite_phy(o_h2o, zx_tmp_fi3d)
1221       if (iflag_con >= 3) then
1222          IF(vars_defined) THEN
1223             zx_tmp_fi3d(1:klon,1:klev)=-1 * (dnwd(1:klon,1:klev)+ &
1224                  dnwd0(1:klon,1:klev))
1225          ENDIF
1226          CALL histwrite_phy(o_mcd, zx_tmp_fi3d)
1227          IF(vars_defined) THEN
1228             zx_tmp_fi3d(1:klon,1:klev)=upwd(1:klon,1:klev) + &
1229                  dnwd(1:klon,1:klev)+ dnwd0(1:klon,1:klev)
1230          ENDIF
1231          CALL histwrite_phy(o_dmc, zx_tmp_fi3d)
1232       else if (iflag_con == 2) then
1233          CALL histwrite_phy(o_mcd,  pmfd)
1234          CALL histwrite_phy(o_dmc,  pmfu + pmfd)
1235       end if
1236       CALL histwrite_phy(o_ref_liq, ref_liq)
1237       CALL histwrite_phy(o_ref_ice, ref_ice)
1238       if (RCO2_per.NE.RCO2_act.OR.RCH4_per.NE.RCH4_act.OR. &
1239            RN2O_per.NE.RN2O_act.OR.RCFC11_per.NE.RCFC11_act.OR. &
1240            RCFC12_per.NE.RCFC12_act) THEN
1241          IF(vars_defined) zx_tmp_fi2d(1 : klon) = swupp ( 1 : klon, klevp1 )
1242          CALL histwrite_phy(o_rsut4co2, zx_tmp_fi2d)
1243          IF(vars_defined) zx_tmp_fi2d(1 : klon) = lwupp ( 1 : klon, klevp1 )
1244          CALL histwrite_phy(o_rlut4co2, zx_tmp_fi2d)
1245          IF(vars_defined) zx_tmp_fi2d(1 : klon) = swup0p ( 1 : klon, klevp1 )
1246          CALL histwrite_phy(o_rsutcs4co2, zx_tmp_fi2d)
1247          IF(vars_defined) zx_tmp_fi2d(1 : klon) = lwup0p ( 1 : klon, klevp1 )
1248          CALL histwrite_phy(o_rlutcs4co2, zx_tmp_fi2d)
1249          CALL histwrite_phy(o_rsu4co2, swupp)
1250          CALL histwrite_phy(o_rlu4co2, lwupp)
1251          CALL histwrite_phy(o_rsucs4co2, swup0p)
1252          CALL histwrite_phy(o_rlucs4co2, lwup0p)
1253          CALL histwrite_phy(o_rsd4co2, swdnp)
1254          CALL histwrite_phy(o_rld4co2, lwdnp)
1255          CALL histwrite_phy(o_rsdcs4co2, swdn0p)
1256          CALL histwrite_phy(o_rldcs4co2, lwdn0p)
1257       ENDIF
1258!!!!!!!!!!!! Sorties niveaux de pression NMC !!!!!!!!!!!!!!!!!!!!
1259       DO iff=7, nfiles
1260
1261          CALL histwrite_phy(o_tnondef,tnondef(:,:,iff-6),iff)
1262          CALL histwrite_phy(o_ta,twriteSTD(:,:,iff-6),iff)
1263          CALL histwrite_phy(o_zg,phiwriteSTD(:,:,iff-6),iff)
1264          CALL histwrite_phy(o_hus,qwriteSTD(:,:,iff-6),iff)
1265          CALL histwrite_phy(o_hur,rhwriteSTD(:,:,iff-6),iff)
1266          CALL histwrite_phy(o_ua,uwriteSTD(:,:,iff-6),iff)
1267          CALL histwrite_phy(o_va,vwriteSTD(:,:,iff-6),iff)
1268          CALL histwrite_phy(o_wap,wwriteSTD(:,:,iff-6),iff)
1269          IF(vars_defined) THEN
1270             DO k=1, nlevSTD
1271                DO i=1, klon
1272                   IF(tnondef(i,k,iff-6).NE.missing_val) THEN
1273                      IF(freq_outNMC(iff-6).LT.0) THEN
1274                         freq_moyNMC(iff-6)=(mth_len*un_jour)/freq_calNMC(iff-6)
1275                      ELSE
1276                         freq_moyNMC(iff-6)=freq_outNMC(iff-6)/freq_calNMC(iff-6)
1277                      ENDIF
1278                      zx_tmp_fi3d_STD(i,k) = (100.*tnondef(i,k,iff-6))/freq_moyNMC(iff-6)
1279                   ELSE
1280                      zx_tmp_fi3d_STD(i,k) = missing_val
1281                   ENDIF
1282                ENDDO
1283             ENDDO
1284          ENDIF
1285          CALL histwrite_phy(o_psbg,zx_tmp_fi3d_STD,iff)
1286          IF(vars_defined) THEN
1287             DO k=1, nlevSTD
1288                DO i=1, klon
1289                   IF(O3sumSTD(i,k,iff-6).NE.missing_val) THEN
1290                      zx_tmp_fi3d_STD(i,k) = O3sumSTD(i,k,iff-6) * 1.e+9
1291                   ELSE
1292                      zx_tmp_fi3d_STD(i,k) = missing_val
1293                   ENDIF
1294                ENDDO
1295             ENDDO !k=1, nlevSTD
1296          ENDIF
1297          CALL histwrite_phy(o_tro3,zx_tmp_fi3d_STD,iff)
1298          if (read_climoz == 2) THEN
1299             IF(vars_defined) THEN
1300                DO k=1, nlevSTD
1301                   DO i=1, klon
1302                      IF(O3daysumSTD(i,k,iff-6).NE.missing_val) THEN
1303                         zx_tmp_fi3d_STD(i,k) = O3daysumSTD(i,k,iff-6) * 1.e+9
1304                      ELSE
1305                         zx_tmp_fi3d_STD(i,k) = missing_val
1306                      ENDIF
1307                   ENDDO
1308                ENDDO !k=1, nlevSTD
1309             ENDIF
1310             CALL histwrite_phy(o_tro3_daylight,zx_tmp_fi3d_STD,iff)
1311          endif
1312          CALL histwrite_phy(o_uxv,uvsumSTD(:,:,iff-6),iff)
1313          CALL histwrite_phy(o_vxq,vqsumSTD(:,:,iff-6),iff)
1314          CALL histwrite_phy(o_vxT,vTsumSTD(:,:,iff-6),iff)
1315          CALL histwrite_phy(o_wxq,wqsumSTD(:,:,iff-6),iff)
1316          CALL histwrite_phy(o_vxphi,vphisumSTD(:,:,iff-6),iff)
1317          CALL histwrite_phy(o_wxT,wTsumSTD(:,:,iff-6),iff)
1318          CALL histwrite_phy(o_uxu,u2sumSTD(:,:,iff-6),iff)
1319          CALL histwrite_phy(o_vxv,v2sumSTD(:,:,iff-6),iff)
1320          CALL histwrite_phy(o_TxT,T2sumSTD(:,:,iff-6),iff)
1321       ENDDO !nfiles
1322!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1323        IF (nqtot.GE.nqo+1) THEN
1324            DO iq=nqo+1,nqtot
1325              IF (type_trac == 'lmdz' .OR. type_trac == 'repr') THEN
1326
1327             CALL histwrite_phy(o_trac(iq-nqo), qx(:,:,iq))
1328             CALL histwrite_phy(o_dtr_vdf(iq-nqo),d_tr_cl(:,:,iq-nqo))
1329             CALL histwrite_phy(o_dtr_the(iq-nqo),d_tr_th(:,:,iq-nqo))
1330             CALL histwrite_phy(o_dtr_con(iq-nqo),d_tr_cv(:,:,iq-nqo))
1331             CALL histwrite_phy(o_dtr_lessi_impa(iq-nqo),d_tr_lessi_impa(:,:,iq-nqo))
1332             CALL histwrite_phy(o_dtr_lessi_nucl(iq-nqo),d_tr_lessi_nucl(:,:,iq-nqo))
1333             CALL histwrite_phy(o_dtr_insc(iq-nqo),d_tr_insc(:,:,iq-nqo))
1334             CALL histwrite_phy(o_dtr_bcscav(iq-nqo),d_tr_bcscav(:,:,iq-nqo))
1335             CALL histwrite_phy(o_dtr_evapls(iq-nqo),d_tr_evapls(:,:,iq-nqo))
1336             CALL histwrite_phy(o_dtr_ls(iq-nqo),d_tr_ls(:,:,iq-nqo))
1337             CALL histwrite_phy(o_dtr_trsp(iq-nqo),d_tr_trsp(:,:,iq-nqo))
1338             CALL histwrite_phy(o_dtr_sscav(iq-nqo),d_tr_sscav(:,:,iq-nqo))
1339             CALL histwrite_phy(o_dtr_sat(iq-nqo),d_tr_sat(:,:,iq-nqo))
1340             CALL histwrite_phy(o_dtr_uscav(iq-nqo),d_tr_uscav(:,:,iq-nqo))
1341             zx_tmp_fi2d=0.
1342             IF(vars_defined) THEN
1343                DO k=1,klev
1344                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*qx(:,k,iq)
1345                ENDDO
1346             ENDIF
1347             CALL histwrite_phy(o_trac_cum(iq-nqo), zx_tmp_fi2d)
1348             endif
1349          ENDDO
1350       ENDIF
1351
1352       IF(.NOT.vars_defined) THEN
1353          !$OMP MASTER
1354#ifndef CPP_IOIPSL_NO_OUTPUT
1355          DO iff=1,nfiles
1356             IF (clef_files(iff)) THEN
1357                CALL histend(nid_files(iff))
1358                ndex2d = 0
1359                ndex3d = 0
1360
1361             ENDIF ! clef_files
1362          ENDDO !  iff
1363#endif
1364#ifdef CPP_XIOS
1365          !On finalise l'initialisation:
1366          CALL wxios_closedef()
1367#endif
1368
1369          !$OMP END MASTER
1370          !$OMP BARRIER
1371          vars_defined = .TRUE.
1372
1373       END IF
1374
1375    END DO
1376
1377    IF(vars_defined) THEN
1378       ! On synchronise les fichiers pour IOIPSL
1379#ifndef CPP_IOIPSL_NO_OUTPUT
1380       !$OMP MASTER
1381       DO iff=1,nfiles
1382          IF (ok_sync .AND. clef_files(iff)) THEN
1383             CALL histsync(nid_files(iff))
1384          ENDIF
1385       END DO
1386       !$OMP END MASTER
1387#endif
1388    ENDIF
1389
1390  END SUBROUTINE phys_output_write
1391
1392END MODULE phys_output_write_mod
Note: See TracBrowser for help on using the repository browser.