source: dynamico_lmdz/aquaplanet/LMDZ5/libf/phylmd/phys_output_write_mod.F90 @ 3825

Last change on this file since 3825 was 3825, checked in by ymipsl, 10 years ago

Reorganize geometry and grid modules. Prepare physics for unstructutured grid support. Simplify initialization of physics from dynamic.
Compiled only with dynd3dmem, but not tested for moment.

YM

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