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

Last change on this file since 2003 was 2003, checked in by Laurent Fairhead, 10 years ago

Nouvelle version qui inclut les effets des aérosols et propose les mêmes diagnostics des effets
directs et indirects que l'ancienne version du rayonnement.
OB


New RRTM version that includes the effects of aerosols and outputs the same direct and indirect effects
diagnostics as the old version
OB

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