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

Last change on this file since 2194 was 2194, checked in by fhourdin, 9 years ago

Use of add_phys_tend to add the tendencies from radiation.
In order to control temperature range after radiation.

Utilisation de add_phys_tend pour ajouter les tendances
du rayonnement, de façon à contrôler les températures après
cet ajout.

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