source: LMDZ6/trunk/libf/phylmd/Dust/phys_output_write_spl_mod.F90 @ 3630

Last change on this file since 3630 was 3630, checked in by Laurent Fairhead, 5 years ago

Parameter new_aod is not needed anymore as it is assumed to be true
all the time. This means that we cannot replay AR4 simulations with new
LMDZ sources (we probably couldn't anyway)
LF, OB

File size: 70.2 KB
Line 
1!
2! $Id: phys_output_write_mod.F90 2298 2015-06-14 19:13:32Z fairhead $
3!
4MODULE phys_output_write_spl_mod
5
6!JE20150620<<
7!JE20150620>>
8!JE20150620<<
9
10  USE time_phylmdz_mod, ONLY: day_step_phy, start_time, itau_phy
11
12  USE phytracr_spl_mod, ONLY : ok_chimeredust, id_prec, id_fine, id_coss, &
13       id_codu, id_scdu , &
14       d_tr_cl, d_tr_th, d_tr_cv, d_tr_lessi_impa, &
15       d_tr_lessi_nucl, d_tr_insc, d_tr_bcscav, d_tr_evapls, d_tr_ls,  &
16       d_tr_trsp, d_tr_sscav, d_tr_sat, d_tr_uscav ,&
17       diff_aod550_tot,&
18       diag_aod670_tot, diag_aod865_tot, &
19       diff_aod550_tr2, diag_aod670_tr2, diag_aod865_tr2, &
20       diag_aod550_ss, diag_aod670_ss, diag_aod865_ss, &
21       diag_aod550_dust, diag_aod670_dust, diag_aod865_dust , &
22       diag_aod550_dustsco, diag_aod670_dustsco, diag_aod865_dustsco, &
23!       aod550_aqua, aod670_aqua, aod865_aqua, &
24!       aod550_terra, aod670_terra, aod865_terra, &
25       aod550_aqua,aod550_tr2_aqua,aod550_ss_aqua,aod550_dust_aqua,aod550_dustsco_aqua,&
26       aod670_aqua,aod670_tr2_aqua,aod670_ss_aqua,aod670_dust_aqua,aod670_dustsco_aqua,&
27       aod865_aqua,aod865_tr2_aqua,aod865_ss_aqua,aod865_dust_aqua,aod865_dustsco_aqua,&
28       aod550_terra,aod550_tr2_terra,aod550_ss_terra,aod550_dust_terra,aod550_dustsco_terra,&
29       aod670_terra,aod670_tr2_terra,aod670_ss_terra,aod670_dust_terra,aod670_dustsco_terra,&
30       aod865_terra,aod865_tr2_terra,aod865_ss_terra,aod865_dust_terra,aod865_dustsco_terra,&
31       trm01,trm02,trm03,trm04,trm05, &
32       sconc01,sconc02,sconc03,sconc04,sconc05, &
33       flux01,flux02,flux03,flux04,flux05,&
34       ds01,ds02,ds03,ds04,ds05, &
35       dh01,dh02,dh03,dh04,dh05, &
36       dtrconv01,dtrconv02,dtrconv03,dtrconv04,dtrconv05, &
37       dtherm01,dtherm02,dtherm03,dtherm04,dtherm05, &
38       dhkecv01,dhkecv02,dhkecv03,dhkecv04,dhkecv05, &
39       d_tr_ds01,d_tr_ds02,d_tr_ds03,d_tr_ds04,d_tr_ds05, &
40       dhkelsc01,dhkelsc02,dhkelsc03,dhkelsc04,dhkelsc05, &
41       d_tr_cv01,d_tr_cv02,d_tr_cv03,d_tr_cv04,d_tr_cv05, &
42       d_tr_trsp01,d_tr_trsp02,d_tr_trsp03,d_tr_trsp04,d_tr_trsp05, &
43       d_tr_sscav01,d_tr_sscav02,d_tr_sscav03,d_tr_sscav04,d_tr_sscav05, &
44       d_tr_sat01,d_tr_sat02,d_tr_sat03,d_tr_sat04,d_tr_sat05, &
45       d_tr_uscav01,d_tr_uscav02,d_tr_uscav03,d_tr_uscav04,d_tr_uscav05, &
46       d_tr_insc01,d_tr_insc02,d_tr_insc03,d_tr_insc04,d_tr_insc05, &
47       d_tr_bcscav01,d_tr_bcscav02,d_tr_bcscav03,d_tr_bcscav04,d_tr_bcscav05, &
48       d_tr_evapls01,d_tr_evapls02,d_tr_evapls03,d_tr_evapls04,d_tr_evapls05, &
49       d_tr_ls01,d_tr_ls02,d_tr_ls03,d_tr_ls04,d_tr_ls05, &
50       d_tr_dyn01,d_tr_dyn02,d_tr_dyn03,d_tr_dyn04,d_tr_dyn05, &
51       d_tr_cl01,d_tr_cl02,d_tr_cl03,d_tr_cl04,d_tr_cl05, &
52       d_tr_th01,d_tr_th02,d_tr_th03,d_tr_th04,d_tr_th05, &
53       sed_ss,sed_dust,sed_dustsco,his_g2pgas,his_g2paer, &
54       sed_ss3D,sed_dust3D,sed_dustsco3D, &
55       fluxbb, &
56       fluxff,fluxbcbb,fluxbcff,fluxbcnff, &
57       fluxbcba,fluxbc,fluxombb,fluxomff,fluxomnff, &
58       fluxomba,fluxomnat,fluxom,fluxh2sff,fluxh2snff, &
59       fluxso2ff,fluxso2nff,fluxso2bb,fluxso2vol,fluxso2ba, &
60       fluxso2,fluxso4ff,fluxso4nff,fluxso4ba,fluxso4bb, &
61       fluxso4,fluxdms,fluxh2sbio,fluxdustec,&
62       fluxddfine,  &
63       fluxddcoa,fluxddsco,fluxdd, &
64       fluxssfine,fluxsscoa, &
65       fluxss,flux_sparam_ind,flux_sparam_bb,flux_sparam_ff, &
66       flux_sparam_ddfine,flux_sparam_ddcoa, &
67       flux_sparam_ddsco,flux_sparam_ssfine, &
68       flux_sparam_sscoa,u10m_ss,v10m_ss
69
70  USE dustemission_mod, ONLY : m1dflux, m2dflux, m3dflux
71
72!  USE phytrac_mod, ONLY : d_tr_cl, d_tr_th, d_tr_cv, d_tr_lessi_impa, &
73!       d_tr_lessi_nucl, d_tr_insc, d_tr_bcscav, d_tr_evapls, d_tr_ls,  &
74!       d_tr_trsp, d_tr_sscav, d_tr_sat, d_tr_uscav
75
76!JE20150620>>
77
78  ! Author: Abderrahmane IDELKADI (original include file)
79  ! Author: Laurent FAIRHEAD (transformation to module/subroutine)
80  ! Author: Ulysse GERARD (effective implementation)
81
82CONTAINS
83
84  ! ug Routine pour définir (los du premier passageà) ET sortir les variables
85  SUBROUTINE phys_output_write_spl(itap, pdtphys, paprs, pphis, &
86       pplay, lmax_th, aerosol_couple,         &
87       ok_ade, ok_aie, ivap, ok_sync, &
88       ptconv, read_climoz, clevSTD, ptconvth, &
89       d_t, qx, d_qx, d_tr_dyn, zmasse, flag_aerosol, flag_aerosol_strat, ok_cdnc)
90
91    ! This subroutine does the actual writing of diagnostics that were
92    ! defined and initialised in phys_output_mod.F90
93
94    USE dimphy, ONLY: klon, klev, klevp1
95    USE ocean_slab_mod, ONLY: nslay
96    USE control_mod, ONLY: day_step, iphysiq
97    USE phys_output_ctrlout_mod, ONLY: o_phis, o_aire, is_ter, is_lic, is_oce, &
98         is_ave, is_sic, o_contfracATM, o_contfracOR, &
99         o_aireTER, o_flat, o_slp, o_tsol, &
100         o_t2m, o_t2m_min, o_t2m_max, &
101         o_t2m_min_mon, o_t2m_max_mon, &
102         o_q2m, o_ustar, o_u10m, o_v10m, &
103         o_wind10m, o_wind10max, o_gusts, o_sicf, &
104         o_psol, o_mass, o_qsurf, o_qsol, &
105         o_precip, o_ndayrain, o_plul, o_pluc, &
106         o_snow, o_msnow, o_fsnow, o_evap, &
107         o_tops, o_tops0, o_topl, o_topl0, &
108         o_SWupTOA, o_SWupTOAclr, o_SWdnTOA, &
109         o_SWdnTOAclr, o_nettop, o_SWup200, &
110         o_SWup200clr, o_SWdn200, o_SWdn200clr, &
111         o_LWup200, o_LWup200clr, o_LWdn200, &
112         o_LWdn200clr, o_sols, o_sols0, &
113         o_soll, o_radsol, o_soll0, o_SWupSFC, &
114         o_SWupSFCclr, o_SWdnSFC, o_SWdnSFCclr, &
115         o_LWupSFC, o_LWdnSFC, o_LWupSFCclr, &
116         o_LWdnSFCclr, o_bils, o_bils_diss, &
117         o_bils_ec,o_bils_ech, o_bils_tke, o_bils_kinetic, &
118         o_bils_latent, o_bils_enthalp, o_sens, &
119         o_fder, o_ffonte, o_fqcalving, o_fqfonte, &
120         o_taux, o_tauy, o_snowsrf, o_qsnow, &
121         o_snowhgt, o_toice, o_sissnow, o_runoff, &
122         o_albslw3, o_pourc_srf, o_fract_srf, &
123         o_taux_srf, o_tauy_srf, o_tsol_srf, &
124         o_evappot_srf, o_ustar_srf, o_u10m_srf, &
125         o_v10m_srf, o_t2m_srf, o_evap_srf, &
126         o_sens_srf, o_lat_srf, o_flw_srf, &
127         o_fsw_srf, o_wbils_srf, o_wbilo_srf, &
128         o_tke_srf, o_tke_max_srf,o_dltpbltke_srf, o_wstar, &
129         o_cdrm, o_cdrh, o_cldl, o_cldm, o_cldh, &
130         o_cldt, o_JrNt, o_cldljn, o_cldmjn, &
131         o_cldhjn, o_cldtjn, o_cldq, o_lwp, o_iwp, &
132         o_ue, o_ve, o_uq, o_vq, o_cape, o_pbase, &
133         o_ptop, o_fbase, o_plcl, o_plfc, &
134         o_wbeff, o_cape_max, o_upwd, o_Ma, &
135         o_dnwd, o_dnwd0, o_ftime_con, o_mc, &
136         o_prw, o_s_pblh, o_s_pblt, o_s_lcl, &
137         o_s_therm, o_uSTDlevs, o_vSTDlevs, &
138         o_wSTDlevs, o_zSTDlevs, o_qSTDlevs, &
139         o_tSTDlevs, epsfra, o_t_oce_sic, &
140         o_ale_bl, o_alp_bl, o_ale_wk, o_alp_wk, &
141         o_ale, o_alp, o_cin, o_WAPE, o_wake_h, &
142         o_wake_s, o_wake_deltat, o_wake_deltaq, &
143         o_wake_omg, o_dtwak, o_dqwak, o_Vprecip, &
144         o_ftd, o_fqd, o_wdtrainA, o_wdtrainM, &
145         o_n2, o_s2, o_proba_notrig, &
146         o_random_notrig, o_ale_bl_stat, &
147         o_ale_bl_trig, o_alp_bl_det, &
148         o_alp_bl_fluct_m, o_alp_bl_fluct_tke, &
149         o_alp_bl_conv, o_alp_bl_stat, &
150         o_slab_qflux, o_tslab, o_slab_bils, &
151         o_slab_bilg, o_slab_sic, o_slab_tice, &
152         o_weakinv, o_dthmin, o_cldtau, &
153         o_cldemi, o_pr_con_l, o_pr_con_i, &
154         o_pr_lsc_l, o_pr_lsc_i, o_re, o_fl, &
155         o_rh2m, o_rh2m_min, o_rh2m_max, &
156         o_qsat2m, o_tpot, o_tpote, o_SWnetOR, &
157         o_LWdownOR, o_snowl, &
158         o_solldown, o_dtsvdfo, o_dtsvdft, &
159         o_dtsvdfg, o_dtsvdfi, o_z0m, o_z0h, o_od550aer, &
160         o_od865aer, o_absvisaer, o_od550lt1aer, &
161         o_sconcso4, o_sconcno3, o_sconcoa, o_sconcbc, &
162         o_sconcss, o_sconcdust, o_concso4, o_concno3, &
163         o_concoa, o_concbc, o_concss, o_concdust, &
164         o_loadso4, o_loadoa, o_loadbc, o_loadss, &
165         o_loaddust, o_tausumaero, o_tausumaero_lw, &
166         o_topswad, o_topswad0, o_solswad, o_solswad0, &
167         o_toplwad, o_toplwad0, o_sollwad, o_sollwad0, &
168         o_swtoaas_nat, o_swsrfas_nat, &
169         o_swtoacs_nat, o_swtoaas_ant, &
170         o_swsrfas_ant, o_swtoacs_ant, &
171         o_swsrfcs_ant, o_swtoacf_nat, &
172         o_swsrfcf_nat, o_swtoacf_ant, &
173         o_swsrfcs_nat, o_swsrfcf_ant, &
174         o_swtoacf_zero, o_swsrfcf_zero, &
175         o_topswai, o_solswai, o_scdnc, &
176         o_cldncl, o_reffclws, o_reffclwc, &
177         o_cldnvi, o_lcc, o_lcc3d, o_lcc3dcon, &
178         o_lcc3dstra, o_reffclwtop, o_ec550aer, &
179         o_lwcon, o_iwcon, o_temp, o_theta, &
180         o_ovapinit, o_ovap, o_oliq, o_geop, &
181         o_vitu, o_vitv, o_vitw, o_pres, o_paprs, &
182         o_zfull, o_zhalf, o_rneb, o_rnebjn, o_rnebcon, &
183         o_rnebls, o_rhum, o_ozone, o_ozone_light, &
184         o_dtphy, o_dqphy, o_albe_srf, o_z0m_srf, o_z0h_srf, &
185         o_ages_srf, o_snow_srf, o_alb1, o_alb2, o_tke, &
186         o_tke_max, o_kz, o_kz_max, o_clwcon, &
187         o_dtdyn, o_dqdyn, o_dudyn, o_dvdyn, &
188         o_dtcon, o_tntc, o_ducon, o_dvcon, &
189         o_dqcon, o_tnhusc, o_tnhusc, o_dtlsc, &
190         o_dtlschr, o_dqlsc, o_beta_prec, &
191         o_dtlscth, o_dtlscst, o_dqlscth, &
192         o_dqlscst, o_plulth, o_plulst, &
193         o_ptconvth, o_lmaxth, o_dtvdf, &
194         o_dtdis, o_dqvdf, o_dteva, o_dqeva, &
195         o_ptconv, o_ratqs, o_dtthe, &
196         o_duthe, o_dvthe, o_ftime_th, &
197         o_f_th, o_e_th, o_w_th, o_q_th, &
198         o_a_th, o_d_th, o_f0_th, o_zmax_th, &
199         o_dqthe, o_dtajs, o_dqajs, o_dtswr, &
200         o_dtsw0, o_dtlwr, o_dtlw0, o_dtec, &
201         o_duvdf, o_dvvdf, o_duoro, o_dvoro, &
202         o_dtoro, o_dulif, o_dvlif, o_dtlif, &
203 !       o_duhin, o_dvhin, o_dthin, &
204         o_dqch4, o_rsu, &
205         o_rsd, o_rlu, o_rld, o_rsucs, o_rsdcs, &
206         o_rlucs, o_rldcs, o_tnt, o_tntr, &
207         o_tntscpbl, o_tnhus, o_tnhusscpbl, &
208         o_evu, o_h2o, o_mcd, o_dmc, o_ref_liq, &
209         o_ref_ice, o_rsut4co2, o_rlut4co2, &
210         o_rsutcs4co2, o_rlutcs4co2, o_rsu4co2, &
211         o_rlu4co2, o_rsucs4co2, o_rlucs4co2, &
212         o_rsd4co2, o_rld4co2, o_rsdcs4co2, &
213         o_rldcs4co2, o_tnondef, o_ta, o_zg, &
214         o_hus, o_hur, o_ua, o_va, o_wap, &
215         o_psbg, o_tro3, o_tro3_daylight, &
216         o_uxv, o_vxq, o_vxT, o_wxq, o_vxphi, &
217         o_wxT, o_uxu, o_vxv, o_TxT, o_trac, &
218         o_dtr_vdf, o_dtr_the, o_dtr_con, &
219         o_dtr_lessi_impa, o_dtr_lessi_nucl, &
220         o_dtr_insc, o_dtr_bcscav, o_dtr_evapls, &
221!        o_dtr_ls, o_dtr_dyn, o_dtr_cl, o_dtr_trsp, o_dtr_sscav, &
222         o_dtr_ls, o_dtr_trsp, o_dtr_sscav, &
223         o_dtr_sat, o_dtr_uscav, o_trac_cum, o_du_gwd_rando, o_dv_gwd_rando, &
224!JE20150620<<
225!         o_vstr_gwd_rando
226         o_vstr_gwd_rando, &
227         o_m1dflux,o_m2dflux,o_m3dflux, &
228         o_taue550, &
229         o_taue670,o_taue865, &
230         o_taue550_tr2, o_taue670_tr2, o_taue865_tr2, &
231         o_taue550_ss,o_taue670_ss, o_taue865_ss, &
232         o_taue550_dust, o_taue670_dust, o_taue865_dust, &
233         o_taue550_dustsco, o_taue670_dustsco, o_taue865_dustsco, &
234         o_taue550_aqua, o_taue670_aqua, o_taue865_aqua, &
235         o_taue550_terra, o_taue670_terra, o_taue865_terra, &
236         o_taue550_fine_aqua     ,         o_taue670_fine_aqua     ,  &
237         o_taue865_fine_aqua     ,         o_taue550_coss_aqua      ,  &
238         o_taue670_coss_aqua      ,         o_taue865_coss_aqua      ,  &
239         o_taue550_codu_aqua    ,         o_taue670_codu_aqua    ,  &
240         o_taue865_codu_aqua    ,         o_taue670_scdu_aqua ,  &
241         o_taue550_scdu_aqua ,         o_taue865_scdu_aqua ,  &
242         o_taue550_fine_terra     ,         o_taue670_fine_terra     ,&
243         o_taue865_fine_terra     ,         o_taue550_coss_terra      ,&
244         o_taue670_coss_terra      ,         o_taue865_coss_terra      ,&
245         o_taue550_codu_terra    ,         o_taue670_codu_terra    ,&
246         o_taue865_codu_terra    ,         o_taue670_scdu_terra ,&
247         o_taue550_scdu_terra ,         o_taue865_scdu_terra ,&
248         o_trm01,o_trm02,o_trm03,o_trm04,o_trm05,&
249         o_sconc01,o_sconc02,o_sconc03,o_sconc04,o_sconc05, &
250         o_flux01,o_flux02,o_flux03,o_flux04,o_flux05, &
251         o_ds01,o_ds02,o_ds03,o_ds04,o_ds05, &
252         o_dh01,o_dh02,o_dh03,o_dh04,o_dh05, &
253         o_dtrconv01,o_dtrconv02,o_dtrconv03,o_dtrconv04,o_dtrconv05, &
254         o_dtherm01,o_dtherm02,o_dtherm03,o_dtherm04,o_dtherm05, &
255         o_dhkecv01,o_dhkecv02,o_dhkecv03,o_dhkecv04,o_dhkecv05, &
256         o_d_tr_ds01,o_d_tr_ds02,o_d_tr_ds03,o_d_tr_ds04,o_d_tr_ds05, &
257         o_dhkelsc01,o_dhkelsc02,o_dhkelsc03,o_dhkelsc04,o_dhkelsc05, &
258         o_d_tr_sat01,o_d_tr_cv01,o_d_tr_cv02,o_d_tr_cv03,o_d_tr_cv04,o_d_tr_cv05,&
259         o_d_tr_trsp01,o_d_tr_trsp02,o_d_tr_trsp03,o_d_tr_trsp04,o_d_tr_trsp05,&
260         o_d_tr_sscav01,o_d_tr_sscav02,o_d_tr_sscav03,o_d_tr_sscav04,o_d_tr_sscav05,&
261         o_d_tr_sat02,o_d_tr_sat03,o_d_tr_sat04,o_d_tr_sat05,  &
262         o_d_tr_uscav01,o_d_tr_uscav02,o_d_tr_uscav03,o_d_tr_uscav04,o_d_tr_uscav05,&
263         o_d_tr_insc01,o_d_tr_insc02,o_d_tr_insc03,o_d_tr_insc04,o_d_tr_insc05,&
264         o_d_tr_bcscav01,o_d_tr_bcscav02,o_d_tr_bcscav03,o_d_tr_bcscav04,o_d_tr_bcscav05,&
265         o_d_tr_evapls01,o_d_tr_evapls02,o_d_tr_evapls03,o_d_tr_evapls04,o_d_tr_evapls05,&
266         o_d_tr_ls01,o_d_tr_ls02,o_d_tr_ls03,o_d_tr_ls04,o_d_tr_ls05,&
267         o_d_tr_dyn01,o_d_tr_dyn02,o_d_tr_dyn03,o_d_tr_dyn04,o_d_tr_dyn05,&
268         o_d_tr_cl01,o_d_tr_cl02,o_d_tr_cl03,o_d_tr_cl04,o_d_tr_cl05,&
269         o_d_tr_th01,o_d_tr_th02,o_d_tr_th03,o_d_tr_th04,o_d_tr_th05,&
270         o_sed_ss,o_sed_dust,o_sed_dustsco,o_g2p_gas,o_g2p_aer, &
271         o_sed_ss3D,o_sed_dust3D,o_sed_dustsco3D, &
272         o_fluxbb, &
273         o_fluxff    ,o_fluxbcbb  ,o_fluxbcff  ,o_fluxbcnff , &
274         o_fluxbcba  ,o_fluxbc    ,o_fluxombb  ,o_fluxomff  , &
275         o_fluxomnff ,o_fluxomba  ,o_fluxomnat ,o_fluxom    , &
276         o_fluxh2sff ,o_fluxh2snff,o_fluxso2ff ,o_fluxso2nff, &
277         o_fluxso2bb ,o_fluxso2vol,o_fluxso2ba ,o_fluxso2   , &
278         o_fluxso4ff ,o_fluxso4nff,o_fluxso4bb ,o_fluxso4ba , &
279         o_fluxso4   ,o_fluxdms   ,o_fluxh2sbio,o_fluxdustec, &
280         o_fluxddfine,o_fluxddcoa ,o_fluxddsco ,o_fluxdd    ,&
281         o_fluxssfine,o_fluxsscoa, o_fluxss, &
282         o_flux_sparam_ind,o_flux_sparam_bb, &
283         o_flux_sparam_ff ,o_flux_sparam_ddfine  ,o_flux_sparam_ddcoa, &
284         o_flux_sparam_ddsco,o_flux_sparam_ssfine,o_flux_sparam_sscoa, &
285         o_u10m_ss,o_v10m_ss
286
287!JE20150620>>
288
289    USE phys_state_var_mod, ONLY: pctsrf, paire_ter, rain_fall, snow_fall, &
290         qsol, z0m, z0h, fevap, agesno, &
291         nday_rain, rain_con, snow_con, &
292         topsw, toplw, toplw0, swup, swdn, &
293         topsw0, swup0, swdn0, SWup200, SWup200clr, &
294         SWdn200, SWdn200clr, LWup200, LWup200clr, &
295         LWdn200, LWdn200clr, solsw, solsw0, sollw, &
296         radsol, sollw0, sollwdown, sollw, gustiness, &
297         sollwdownclr, lwdn0, ftsol, ustar, u10m, &
298         v10m, pbl_tke, wake_delta_pbl_TKE, &
299         wstar, cape, ema_pcb, ema_pct, &
300         ema_cbmf, Ma, fm_therm, ale_bl, alp_bl, ale, &
301         alp, cin, wake_pe, wake_s, wake_deltat, &
302         wake_deltaq, ftd, fqd, ale_bl_trig, albsol1, &
303         rnebcon, wo, falb1, albsol2, coefh, clwcon0, &
304         ratqs, entr_therm, zqasc, detr_therm, f0, &
305         lwup, lwdn, lwup0, coefm, &
306         swupp, lwupp, swup0p, lwup0p, swdnp, lwdnp, &
307         swdn0p, lwdn0p, tnondef, O3sumSTD, uvsumSTD, &
308         vqsumSTD, vTsumSTD, O3daysumSTD, wqsumSTD, &
309         vphisumSTD, wTsumSTD, u2sumSTD, v2sumSTD, &
310         T2sumSTD, nlevSTD, &
311!        du_gwd_rando, dv_gwd_rando, &
312         ulevSTD, vlevSTD, wlevSTD, philevSTD, qlevSTD, tlevSTD, &
313         rhlevSTD, O3STD, O3daySTD, uvSTD, vqSTD, vTSTD, wqSTD, &
314         vphiSTD, wTSTD, u2STD, v2STD, T2STD, missing_val_nf90
315
316    USE phys_local_var_mod, ONLY: zxfluxlat, slp, zxtsol, zt2m, &
317         t2m_min_mon, t2m_max_mon, evap, &
318         zu10m, zv10m, zq2m, zustar, zxqsurf, &
319         rain_lsc, snow_lsc, bils, sens, fder, &
320         zxffonte, zxfqcalving, zxfqfonte, fluxu, &
321         fluxv, zxsnow, qsnow, snowhgt, to_ice, &
322         sissnow, runoff, albsol3_lic, evap_pot, &
323         t2m, fluxt, fluxlat, fsollw, fsolsw, &
324         wfbils, wfbilo, cdragm, cdragh, cldl, cldm, &
325         cldh, cldt, JrNt, cldljn, cldmjn, cldhjn, &
326         cldtjn, cldq, flwp, fiwp, ue, ve, uq, vq, &
327         plcl, plfc, wbeff, upwd, dnwd, dnwd0, prw, &
328         s_pblh, s_pblt, s_lcl, s_therm, uwriteSTD, &
329         vwriteSTD, wwriteSTD, phiwriteSTD, qwriteSTD, &
330         twriteSTD, ale_wake, alp_wake, wake_h, &
331         wake_omg, d_t_wake, d_q_wake, Vprecip, &
332         wdtrainA, wdtrainM, n2, s2, proba_notrig, &
333         random_notrig, ale_bl_stat, &
334         alp_bl_det, alp_bl_fluct_m, alp_bl_conv, &
335         alp_bl_stat, alp_bl_fluct_tke, slab_wfbils, &
336         weak_inversion, dthmin, cldtau, cldemi, &
337         pmflxr, pmflxs, prfl, psfl, re, fl, rh2m, &
338         qsat2m, tpote, tpot, d_ts, od550aer, &
339         od865aer, absvisaer, od550lt1aer, sconcso4, sconcno3, &
340         sconcoa, sconcbc, sconcss, sconcdust, concso4, concno3, &
341         concoa, concbc, concss, concdust, loadso4, &
342         loadoa, loadbc, loadss, loaddust, tausum_aero, &
343         topswad_aero, topswad0_aero, solswad_aero, &
344         solswad0_aero, topsw_aero, solsw_aero, &
345         topsw0_aero, solsw0_aero, topswcf_aero, &
346         solswcf_aero, topswai_aero, solswai_aero, &
347         toplwad_aero, toplwad0_aero, sollwad_aero, &
348         sollwad0_aero, toplwai_aero, sollwai_aero, &
349         scdnc, cldncl, reffclws, reffclwc, cldnvi, &
350         lcc, lcc3d, lcc3dcon, lcc3dstra, reffclwtop, &
351         ec550aer, flwc, fiwc, t_seri, theta, q_seri, &
352!jyg<
353!!         ql_seri, zphi, u_seri, v_seri, omega, cldfra, &
354         ql_seri, tr_seri, &
355         zphi, u_seri, v_seri, omega, cldfra, &
356!>jyg
357         rneb, rnebjn, zx_rh, d_t_dyn, d_q_dyn, &
358         d_u_dyn, d_v_dyn, d_t_con, d_t_ajsb, d_t_ajs, &
359         d_u_ajs, d_v_ajs, &
360         d_u_con, d_v_con, d_q_con, d_q_ajs, d_t_lsc, &
361         d_t_lwr,d_t_lw0,d_t_swr,d_t_sw0, &
362         d_t_eva, d_q_lsc, beta_prec, d_t_lscth, &
363         d_t_lscst, d_q_lscth, d_q_lscst, plul_th, &
364         plul_st, d_t_vdf, d_t_diss, d_q_vdf, d_q_eva, &
365         zw2, fraca, zmax_th, d_q_ajsb, d_t_ec, d_u_vdf, &
366         d_v_vdf, d_u_oro, d_v_oro, d_t_oro, d_u_lif, &
367         d_v_lif, d_t_lif, &
368!        d_u_hin, d_v_hin, d_t_hin, &
369         d_q_ch4, pmfd, pmfu, ref_liq, ref_ice, rhwriteSTD
370
371    USE phys_output_var_mod, ONLY: vars_defined, snow_o, zfra_o, bils_diss, &
372         bils_ec,bils_ech, bils_tke, bils_kinetic, bils_latent, bils_enthalp, &
373         itau_con, nfiles, clef_files, nid_files, zvstr_gwd_rando
374    USE ocean_slab_mod, ONLY: tslab, slab_bils, slab_bilg, tice, seaice
375    USE pbl_surface_mod, ONLY: snow
376    USE indice_sol_mod, ONLY: nbsrf
377    USE infotrac, ONLY: nqtot, nqo, nbtr, type_trac
378    USE geometry_mod, ONLY: cell_area
379    USE surface_data, ONLY: type_ocean, version_ocean, ok_veget, ok_snow
380!    USE aero_mod, ONLY: naero_spc
381    USE aero_mod, ONLY: naero_tot, id_STRAT_phy
382    USE ioipsl, ONLY: histend, histsync
383    USE iophy, ONLY: set_itau_iophy, histwrite_phy
384    USE netcdf, ONLY: nf90_fill_real
385
386#ifdef CPP_XIOS
387    ! ug Pour les sorties XIOS
388    USE xios, ONLY: xios_update_calendar
389    USE wxios, ONLY: wxios_closedef, missing_val
390#endif
391    USE phys_cal_mod, ONLY : mth_len
392
393    IMPLICIT NONE
394
395!   INCLUDE "temps.h"
396    INCLUDE "clesphys.h"
397    INCLUDE "thermcell.h"
398    INCLUDE "compbl.h"
399    INCLUDE "YOMCST.h"
400    INCLUDE "dimensions.h"
401    include "iniprint.h"
402
403    ! Input
404    INTEGER :: itap, ivap, read_climoz
405    INTEGER, DIMENSION(klon) :: lmax_th
406    LOGICAL :: aerosol_couple, ok_sync
407    LOGICAL, DIMENSION(klon, klev) :: ptconv, ptconvth
408    REAL :: pdtphys
409    CHARACTER (LEN=4), DIMENSION(nlevSTD) :: clevSTD
410    REAL, DIMENSION(klon,nlevSTD) :: zx_tmp_fi3d_STD
411    REAL, DIMENSION(klon) :: pphis
412    REAL, DIMENSION(klon, klev) :: pplay, d_t
413    REAL, DIMENSION(klon, klev+1) :: paprs
414    REAL, DIMENSION(klon,klev,nqtot) :: qx, d_qx
415    REAL,DIMENSION(klon,klev,nbtr),INTENT(IN)    :: d_tr_dyn
416    REAL, DIMENSION(klon, llm) :: zmasse
417    INTEGER :: flag_aerosol_strat
418    INTEGER :: flag_aerosol
419    LOGICAL :: ok_cdnc
420    REAL, DIMENSION(3) :: freq_moyNMC
421
422    ! Local
423    INTEGER, PARAMETER :: jjmp1=jjm+1-1/jjm
424    INTEGER :: itau_w
425    INTEGER :: i, iinit, iinitend=1, iff, iq, nsrf, k, ll, naero
426    REAL, DIMENSION (klon) :: zx_tmp_fi2d
427    REAL, DIMENSION (klon,klev) :: zx_tmp_fi3d, zpt_conv
428    REAL, DIMENSION (klon,klev+1) :: zx_tmp_fi3d1
429    CHARACTER (LEN=4)              :: bb2
430    INTEGER, DIMENSION(iim*jjmp1)  :: ndex2d
431    INTEGER, DIMENSION(iim*jjmp1*klev) :: ndex3d
432    REAL, PARAMETER :: dobson_u = 2.1415e-05 ! Dobson unit, in kg m-2
433!   REAL, PARAMETER :: missing_val=nf90_fill_real
434#ifndef CPP_XIOS
435    REAL :: missing_val
436#endif
437    REAL, PARAMETER :: un_jour=86400.
438
439    ! On calcul le nouveau tau:
440    itau_w = itau_phy + itap
441    ! On le donne à iophy pour que les histwrite y aient accès:
442    CALL set_itau_iophy(itau_w)
443
444    IF (.NOT.vars_defined) THEN
445       iinitend = 2
446    ELSE
447       iinitend = 1
448    ENDIF
449
450    ! ug la boucle qui suit ne sert qu'une fois, pour l'initialisation, sinon il n'y a toujours qu'un seul passage:
451    DO iinit=1, iinitend
452#ifdef CPP_XIOS
453       !$OMP MASTER
454       IF (vars_defined) THEN
455          IF (prt_level >= 10) THEN
456             write(lunout,*)"phys_output_write: call xios_update_calendar, itau_w=",itau_w
457          ENDIF
458!          CALL xios_update_calendar(itau_w)
459          CALL xios_update_calendar(itap)
460       ENDIF
461       !$OMP END MASTER
462       !$OMP BARRIER
463#endif
464       ! On procède à l'écriture ou à la définition des nombreuses variables:
465!!! Champs 1D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
466       CALL histwrite_phy(o_phis, pphis)
467       CALL histwrite_phy(o_aire, cell_area)
468
469       IF (vars_defined) THEN
470          DO i=1, klon
471             zx_tmp_fi2d(i)=pctsrf(i,is_ter)+pctsrf(i,is_lic)
472          ENDDO
473       ENDIF
474
475       CALL histwrite_phy(o_contfracATM, zx_tmp_fi2d)
476       CALL histwrite_phy(o_contfracOR, pctsrf(:,is_ter))
477       CALL histwrite_phy(o_aireTER, paire_ter)
478
479!!! Champs 2D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
480! JE20141223 <<
481#include "spla_output_write.h"
482! JE20141223 >>
483
484       CALL histwrite_phy(o_flat, zxfluxlat)
485       CALL histwrite_phy(o_slp, slp)
486       CALL histwrite_phy(o_tsol, zxtsol)
487       CALL histwrite_phy(o_t2m, zt2m)
488       CALL histwrite_phy(o_t2m_min, zt2m)
489       CALL histwrite_phy(o_t2m_max, zt2m)
490       CALL histwrite_phy(o_t2m_max_mon, t2m_max_mon)
491       CALL histwrite_phy(o_t2m_min_mon, t2m_min_mon)
492
493       IF (vars_defined) THEN
494          DO i=1, klon
495             zx_tmp_fi2d(i)=SQRT(zu10m(i)*zu10m(i)+zv10m(i)*zv10m(i))
496          ENDDO
497       ENDIF
498       CALL histwrite_phy(o_wind10m, zx_tmp_fi2d)
499
500       IF (vars_defined) THEN
501          DO i=1, klon
502             zx_tmp_fi2d(i)=SQRT(zu10m(i)*zu10m(i)+zv10m(i)*zv10m(i))
503          ENDDO
504       ENDIF
505       CALL histwrite_phy(o_wind10max, zx_tmp_fi2d)
506
507       CALL histwrite_phy(o_gusts, gustiness)
508
509       IF (vars_defined) THEN
510          DO i = 1, klon
511             zx_tmp_fi2d(i) = pctsrf(i,is_sic)
512          ENDDO
513       ENDIF
514       CALL histwrite_phy(o_sicf, zx_tmp_fi2d)
515       CALL histwrite_phy(o_q2m, zq2m)
516       CALL histwrite_phy(o_ustar, zustar)
517       CALL histwrite_phy(o_u10m, zu10m)
518       CALL histwrite_phy(o_v10m, zv10m)
519
520       IF (vars_defined) THEN
521          DO i = 1, klon
522             zx_tmp_fi2d(i) = paprs(i,1)
523          ENDDO
524       ENDIF
525       CALL histwrite_phy(o_psol, zx_tmp_fi2d)
526       CALL histwrite_phy(o_mass, zmasse)
527       CALL histwrite_phy(o_qsurf, zxqsurf)
528
529       IF (.NOT. ok_veget) THEN
530          CALL histwrite_phy(o_qsol, qsol)
531       ENDIF
532
533       IF (vars_defined) THEN
534          DO i = 1, klon
535             zx_tmp_fi2d(i) = rain_fall(i) + snow_fall(i)
536          ENDDO
537       ENDIF
538
539       CALL histwrite_phy(o_precip, zx_tmp_fi2d)
540       CALL histwrite_phy(o_ndayrain, nday_rain)
541
542       IF (vars_defined) THEN
543          DO i = 1, klon
544             zx_tmp_fi2d(i) = rain_lsc(i) + snow_lsc(i)
545          ENDDO
546       ENDIF
547       CALL histwrite_phy(o_plul, zx_tmp_fi2d)
548
549       IF (vars_defined) THEN
550          DO i = 1, klon
551             zx_tmp_fi2d(i) = rain_con(i) + snow_con(i)
552          ENDDO
553       ENDIF
554       CALL histwrite_phy(o_pluc, zx_tmp_fi2d)
555       CALL histwrite_phy(o_snow, snow_fall)
556       CALL histwrite_phy(o_msnow, zxsnow)
557       CALL histwrite_phy(o_fsnow, zfra_o)
558       CALL histwrite_phy(o_evap, evap)
559       CALL histwrite_phy(o_tops, topsw)
560       CALL histwrite_phy(o_tops0, topsw0)
561       CALL histwrite_phy(o_topl, toplw)
562       CALL histwrite_phy(o_topl0, toplw0)
563
564       IF (vars_defined) THEN
565          zx_tmp_fi2d(1 : klon) = swup ( 1 : klon, klevp1 )
566       ENDIF
567       CALL histwrite_phy(o_SWupTOA, zx_tmp_fi2d)
568
569       IF (vars_defined) THEN
570          zx_tmp_fi2d(1 : klon) = swup0 ( 1 : klon, klevp1 )
571       ENDIF
572       CALL histwrite_phy(o_SWupTOAclr, zx_tmp_fi2d)
573
574       IF (vars_defined) THEN
575          zx_tmp_fi2d(1 : klon) = swdn ( 1 : klon, klevp1 )
576       ENDIF
577       CALL histwrite_phy(o_SWdnTOA, zx_tmp_fi2d)
578
579       IF (vars_defined) THEN
580          zx_tmp_fi2d(1 : klon) = swdn0 ( 1 : klon, klevp1 )
581       ENDIF
582       CALL histwrite_phy(o_SWdnTOAclr, zx_tmp_fi2d)
583
584       IF (vars_defined) THEN
585          zx_tmp_fi2d(:) = topsw(:)-toplw(:)
586       ENDIF
587       CALL histwrite_phy(o_nettop, zx_tmp_fi2d)
588       CALL histwrite_phy(o_SWup200, SWup200)
589       CALL histwrite_phy(o_SWup200clr, SWup200clr)
590       CALL histwrite_phy(o_SWdn200, SWdn200)
591       CALL histwrite_phy(o_SWdn200clr, SWdn200clr)
592       CALL histwrite_phy(o_LWup200, LWup200)
593       CALL histwrite_phy(o_LWup200clr, LWup200clr)
594       CALL histwrite_phy(o_LWdn200, LWdn200)
595       CALL histwrite_phy(o_LWdn200clr, LWdn200clr)
596       CALL histwrite_phy(o_sols, solsw)
597       CALL histwrite_phy(o_sols0, solsw0)
598       CALL histwrite_phy(o_soll, sollw)
599       CALL histwrite_phy(o_radsol, radsol)
600       CALL histwrite_phy(o_soll0, sollw0)
601
602       IF (vars_defined) THEN
603          zx_tmp_fi2d(1 : klon) = swup ( 1 : klon, 1 )
604       ENDIF
605       CALL histwrite_phy(o_SWupSFC, zx_tmp_fi2d)
606
607       IF (vars_defined) THEN
608          zx_tmp_fi2d(1 : klon) = swup0 ( 1 : klon, 1 )
609       ENDIF
610       CALL histwrite_phy(o_SWupSFCclr, zx_tmp_fi2d)
611
612       IF (vars_defined) THEN
613          zx_tmp_fi2d(1 : klon) = swdn ( 1 : klon, 1 )
614       ENDIF
615       CALL histwrite_phy(o_SWdnSFC, zx_tmp_fi2d)
616
617       IF (vars_defined) THEN
618          zx_tmp_fi2d(1 : klon) = swdn0 ( 1 : klon, 1 )
619       ENDIF
620       CALL histwrite_phy(o_SWdnSFCclr, zx_tmp_fi2d)
621
622       IF (vars_defined) THEN
623          zx_tmp_fi2d(1:klon)=sollwdown(1:klon)-sollw(1:klon)
624       ENDIF
625       CALL histwrite_phy(o_LWupSFC, zx_tmp_fi2d)
626       CALL histwrite_phy(o_LWdnSFC, sollwdown)
627
628       IF (vars_defined) THEN
629          sollwdownclr(1:klon) = -1.*lwdn0(1:klon,1)
630          zx_tmp_fi2d(1:klon)=sollwdownclr(1:klon)-sollw0(1:klon)
631       ENDIF
632       CALL histwrite_phy(o_LWupSFCclr, zx_tmp_fi2d)
633       CALL histwrite_phy(o_LWdnSFCclr, sollwdownclr)
634       CALL histwrite_phy(o_bils, bils)
635       CALL histwrite_phy(o_bils_diss, bils_diss)
636       CALL histwrite_phy(o_bils_ec, bils_ec)
637       IF (iflag_ener_conserv>=1) THEN
638         CALL histwrite_phy(o_bils_ech, bils_ech)
639       ENDIF
640       CALL histwrite_phy(o_bils_tke, bils_tke)
641       CALL histwrite_phy(o_bils_kinetic, bils_kinetic)
642       CALL histwrite_phy(o_bils_latent, bils_latent)
643       CALL histwrite_phy(o_bils_enthalp, bils_enthalp)
644
645       IF (vars_defined) THEN
646          zx_tmp_fi2d(1:klon)=-1*sens(1:klon)
647       ENDIF
648       CALL histwrite_phy(o_sens, zx_tmp_fi2d)
649       CALL histwrite_phy(o_fder, fder)
650       CALL histwrite_phy(o_ffonte, zxffonte)
651       CALL histwrite_phy(o_fqcalving, zxfqcalving)
652       CALL histwrite_phy(o_fqfonte, zxfqfonte)
653       IF (vars_defined) THEN
654          zx_tmp_fi2d=0.
655          DO nsrf=1,nbsrf
656             zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxu(:,1,nsrf)
657          ENDDO
658       ENDIF
659       CALL histwrite_phy(o_taux, zx_tmp_fi2d)
660
661       IF (vars_defined) THEN
662          zx_tmp_fi2d=0.
663          DO nsrf=1,nbsrf
664             zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxv(:,1,nsrf)
665          ENDDO
666       ENDIF
667       CALL histwrite_phy(o_tauy, zx_tmp_fi2d)
668
669       IF (ok_snow) THEN
670          CALL histwrite_phy(o_snowsrf, snow_o)
671          CALL histwrite_phy(o_qsnow, qsnow)
672          CALL histwrite_phy(o_snowhgt,snowhgt)
673          CALL histwrite_phy(o_toice,to_ice)
674          CALL histwrite_phy(o_sissnow,sissnow)
675          CALL histwrite_phy(o_runoff,runoff)
676          CALL histwrite_phy(o_albslw3,albsol3_lic)
677       ENDIF
678
679       DO nsrf = 1, nbsrf
680          IF (vars_defined)             zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)*100.
681          CALL histwrite_phy(o_pourc_srf(nsrf), zx_tmp_fi2d)
682          IF (vars_defined)           zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)
683          CALL histwrite_phy(o_fract_srf(nsrf), zx_tmp_fi2d)
684          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxu( 1 : klon, 1, nsrf)
685          CALL histwrite_phy(o_taux_srf(nsrf), zx_tmp_fi2d)
686          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxv( 1 : klon, 1, nsrf)
687          CALL histwrite_phy(o_tauy_srf(nsrf), zx_tmp_fi2d)
688          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = ftsol( 1 : klon, nsrf)
689          CALL histwrite_phy(o_tsol_srf(nsrf), zx_tmp_fi2d)
690          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = evap_pot( 1 : klon, nsrf)
691          CALL histwrite_phy(o_evappot_srf(nsrf), zx_tmp_fi2d)
692          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = ustar(1 : klon, nsrf)
693          CALL histwrite_phy(o_ustar_srf(nsrf), zx_tmp_fi2d)
694          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = u10m(1 : klon, nsrf)
695          CALL histwrite_phy(o_u10m_srf(nsrf), zx_tmp_fi2d)
696          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = v10m(1 : klon, nsrf)
697          CALL histwrite_phy(o_v10m_srf(nsrf), zx_tmp_fi2d)
698          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = t2m(1 : klon, nsrf)
699          CALL histwrite_phy(o_t2m_srf(nsrf), zx_tmp_fi2d)
700          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = fevap(1 : klon, nsrf)
701          CALL histwrite_phy(o_evap_srf(nsrf), zx_tmp_fi2d)
702          IF (vars_defined)        zx_tmp_fi2d(1 : klon) = fluxt( 1 : klon, 1, nsrf)
703          CALL histwrite_phy(o_sens_srf(nsrf), zx_tmp_fi2d)
704          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxlat( 1 : klon, nsrf)
705          CALL histwrite_phy(o_lat_srf(nsrf), zx_tmp_fi2d)
706          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fsollw( 1 : klon, nsrf)
707          CALL histwrite_phy(o_flw_srf(nsrf), zx_tmp_fi2d)
708          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fsolsw( 1 : klon, nsrf)
709          CALL histwrite_phy(o_fsw_srf(nsrf), zx_tmp_fi2d)
710          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfbils( 1 : klon, nsrf)
711          CALL histwrite_phy(o_wbils_srf(nsrf), zx_tmp_fi2d)
712          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfbilo( 1 : klon, nsrf)
713          CALL histwrite_phy(o_wbilo_srf(nsrf), zx_tmp_fi2d)
714
715          IF (iflag_pbl > 1) THEN
716             CALL histwrite_phy(o_tke_srf(nsrf),  pbl_tke(:,1:klev,nsrf))
717             CALL histwrite_phy(o_tke_max_srf(nsrf),  pbl_tke(:,1:klev,nsrf))
718          ENDIF
719!jyg<
720          IF (iflag_pbl > 1 .AND. iflag_wake>=1  .AND. iflag_pbl_split >=1) THEN
721             CALL histwrite_phy(o_dltpbltke_srf(nsrf), wake_delta_pbl_TKE(:,1:klev,nsrf))
722          ENDIF
723!>jyg
724
725       ENDDO
726       DO nsrf=1,nbsrf+1
727          CALL histwrite_phy(o_wstar(nsrf), wstar(1 : klon, nsrf))
728       ENDDO
729
730       CALL histwrite_phy(o_cdrm, cdragm)
731       CALL histwrite_phy(o_cdrh, cdragh)
732       CALL histwrite_phy(o_cldl, cldl)
733       CALL histwrite_phy(o_cldm, cldm)
734       CALL histwrite_phy(o_cldh, cldh)
735       CALL histwrite_phy(o_cldt, cldt)
736       CALL histwrite_phy(o_JrNt, JrNt)
737       CALL histwrite_phy(o_cldljn, cldl*JrNt)
738       CALL histwrite_phy(o_cldmjn, cldm*JrNt)
739       CALL histwrite_phy(o_cldhjn, cldh*JrNt)
740       CALL histwrite_phy(o_cldtjn, cldt*JrNt)
741       CALL histwrite_phy(o_cldq, cldq)
742       IF (vars_defined)       zx_tmp_fi2d(1:klon) = flwp(1:klon)
743       CALL histwrite_phy(o_lwp, zx_tmp_fi2d)
744       IF (vars_defined)       zx_tmp_fi2d(1:klon) = fiwp(1:klon)
745       CALL histwrite_phy(o_iwp, zx_tmp_fi2d)
746       CALL histwrite_phy(o_ue, ue)
747       CALL histwrite_phy(o_ve, ve)
748       CALL histwrite_phy(o_uq, uq)
749       CALL histwrite_phy(o_vq, vq)
750       IF (iflag_con.GE.3) THEN ! sb
751          CALL histwrite_phy(o_cape, cape)
752          CALL histwrite_phy(o_pbase, ema_pcb)
753          CALL histwrite_phy(o_ptop, ema_pct)
754          CALL histwrite_phy(o_fbase, ema_cbmf)
755          IF (iflag_con /= 30) THEN
756             CALL histwrite_phy(o_plcl, plcl)
757             CALL histwrite_phy(o_plfc, plfc)
758             CALL histwrite_phy(o_wbeff, wbeff)
759          ENDIF
760
761          CALL histwrite_phy(o_cape_max, cape)
762
763          CALL histwrite_phy(o_upwd, upwd)
764          CALL histwrite_phy(o_Ma, Ma)
765          CALL histwrite_phy(o_dnwd, dnwd)
766          CALL histwrite_phy(o_dnwd0, dnwd0)
767          IF (vars_defined)         zx_tmp_fi2d=float(itau_con)/float(itap)
768          CALL histwrite_phy(o_ftime_con, zx_tmp_fi2d)
769          IF (vars_defined) THEN
770             IF (iflag_thermals>=1)THEN
771                zx_tmp_fi3d=dnwd+dnwd0+upwd+fm_therm(:,1:klev)
772             ELSE
773                zx_tmp_fi3d=dnwd+dnwd0+upwd
774             ENDIF
775          ENDIF
776          CALL histwrite_phy(o_mc, zx_tmp_fi3d)
777       ENDIF !iflag_con .GE. 3
778       CALL histwrite_phy(o_prw, prw)
779       CALL histwrite_phy(o_s_pblh, s_pblh)
780       CALL histwrite_phy(o_s_pblt, s_pblt)
781       CALL histwrite_phy(o_s_lcl, s_lcl)
782       CALL histwrite_phy(o_s_therm, s_therm)
783       !IM : Les champs suivants (s_capCL, s_oliqCL, s_cteiCL, s_trmb1, s_trmb2, s_trmb3) ne sont pas definis dans HBTM.F
784       !       IF (o_s_capCL%flag(iff)<=lev_files(iff)) THEN
785       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
786       !    $o_s_capCL%name,itau_w,s_capCL)
787       !       ENDIF
788       !       IF (o_s_oliqCL%flag(iff)<=lev_files(iff)) THEN
789       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
790       !    $o_s_oliqCL%name,itau_w,s_oliqCL)
791       !       ENDIF
792       !       IF (o_s_cteiCL%flag(iff)<=lev_files(iff)) THEN
793       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
794       !    $o_s_cteiCL%name,itau_w,s_cteiCL)
795       !       ENDIF
796       !       IF (o_s_trmb1%flag(iff)<=lev_files(iff)) THEN
797       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
798       !    $o_s_trmb1%name,itau_w,s_trmb1)
799       !       ENDIF
800       !       IF (o_s_trmb2%flag(iff)<=lev_files(iff)) THEN
801       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
802       !    $o_s_trmb2%name,itau_w,s_trmb2)
803       !       ENDIF
804       !       IF (o_s_trmb3%flag(iff)<=lev_files(iff)) THEN
805       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
806       !    $o_s_trmb3%name,itau_w,s_trmb3)
807       !       ENDIF
808
809#ifdef CPP_IOIPSL
810#ifndef CPP_XIOS
811  IF (.NOT.ok_all_xml) THEN
812       ! ATTENTION, LES ANCIENS HISTWRITE ONT ETES CONSERVES EN ATTENDANT MIEUX:
813       ! Champs interpolles sur des niveaux de pression
814       missing_val=missing_val_nf90
815       DO iff=1, nfiles
816          ll=0
817          DO k=1, nlevSTD
818             bb2=clevSTD(k)
819             IF (bb2.EQ."850".OR.bb2.EQ."700".OR. &
820                  bb2.EQ."500".OR.bb2.EQ."200".OR. &
821                  bb2.EQ."100".OR. &
822                  bb2.EQ."50".OR.bb2.EQ."10") THEN
823
824                ! a refaire correctement !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
825                ll=ll+1
826                CALL histwrite_phy(o_uSTDlevs(ll),uwriteSTD(:,k,iff), iff)
827                CALL histwrite_phy(o_vSTDlevs(ll),vwriteSTD(:,k,iff), iff)
828                CALL histwrite_phy(o_wSTDlevs(ll),wwriteSTD(:,k,iff), iff)
829                CALL histwrite_phy(o_zSTDlevs(ll),phiwriteSTD(:,k,iff), iff)
830                CALL histwrite_phy(o_qSTDlevs(ll),qwriteSTD(:,k,iff), iff)
831                CALL histwrite_phy(o_tSTDlevs(ll),twriteSTD(:,k,iff), iff)
832
833             ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR.
834          ENDDO
835       ENDDO
836  ENDIF
837#endif
838#endif
839
840#ifdef CPP_XIOS
841  IF (ok_all_xml) THEN
842!XIOS  CALL xios_get_field_attr("u850",default_value=missing_val)
843!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
844          ll=0
845          DO k=1, nlevSTD
846             bb2=clevSTD(k)
847             IF (bb2.EQ."850".OR.bb2.EQ."700".OR. &
848                bb2.EQ."500".OR.bb2.EQ."200".OR. &
849                bb2.EQ."100".OR. &
850                bb2.EQ."50".OR.bb2.EQ."10") THEN
851                ll=ll+1
852                CALL histwrite_phy(o_uSTDlevs(ll),ulevSTD(:,k))
853                CALL histwrite_phy(o_vSTDlevs(ll),vlevSTD(:,k))
854                CALL histwrite_phy(o_wSTDlevs(ll),wlevSTD(:,k))
855                CALL histwrite_phy(o_zSTDlevs(ll),philevSTD(:,k))
856                CALL histwrite_phy(o_qSTDlevs(ll),qlevSTD(:,k))
857                CALL histwrite_phy(o_tSTDlevs(ll),tlevSTD(:,k))
858             ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR.
859          ENDDO
860  ENDIF
861#endif
862       IF (vars_defined) THEN
863          DO i=1, klon
864             IF (pctsrf(i,is_oce).GT.epsfra.OR. &
865                  pctsrf(i,is_sic).GT.epsfra) THEN
866                zx_tmp_fi2d(i) = (ftsol(i, is_oce) * pctsrf(i,is_oce)+ &
867                     ftsol(i, is_sic) * pctsrf(i,is_sic))/ &
868                     (pctsrf(i,is_oce)+pctsrf(i,is_sic))
869             ELSE
870                zx_tmp_fi2d(i) = 273.15
871             ENDIF
872          ENDDO
873       ENDIF
874       CALL histwrite_phy(o_t_oce_sic, zx_tmp_fi2d)
875
876       ! Couplage convection-couche limite
877       IF (iflag_con.GE.3) THEN
878          IF (iflag_coupl>=1) THEN
879             CALL histwrite_phy(o_ale_bl, ale_bl)
880             CALL histwrite_phy(o_alp_bl, alp_bl)
881          ENDIF !iflag_coupl>=1
882       ENDIF !(iflag_con.GE.3)
883       ! Wakes
884       IF (iflag_con.EQ.3) THEN
885          IF (iflag_wake>=1) THEN
886             CALL histwrite_phy(o_ale_wk, ale_wake)
887             CALL histwrite_phy(o_alp_wk, alp_wake)
888             CALL histwrite_phy(o_ale, ale)
889             CALL histwrite_phy(o_alp, alp)
890             CALL histwrite_phy(o_cin, cin)
891             CALL histwrite_phy(o_WAPE, wake_pe)
892             CALL histwrite_phy(o_wake_h, wake_h)
893             CALL histwrite_phy(o_wake_s, wake_s)
894             CALL histwrite_phy(o_wake_deltat, wake_deltat)
895             CALL histwrite_phy(o_wake_deltaq, wake_deltaq)
896             CALL histwrite_phy(o_wake_omg, wake_omg)
897             IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_wake(1:klon,1:klev) &
898                  /pdtphys
899             CALL histwrite_phy(o_dtwak, zx_tmp_fi3d)
900             IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_wake(1:klon,1:klev)/pdtphys
901             CALL histwrite_phy(o_dqwak, zx_tmp_fi3d)
902          ENDIF ! iflag_wake>=1
903          CALL histwrite_phy(o_ftd, ftd)
904          CALL histwrite_phy(o_fqd, fqd)
905       ENDIF !(iflag_con.EQ.3)
906       IF (iflag_con.EQ.3.OR.iflag_con.EQ.30) THEN
907          ! sortie RomP convection descente insaturee iflag_con=30
908          ! etendue a iflag_con=3 (jyg)
909          CALL histwrite_phy(o_Vprecip, Vprecip)
910          CALL histwrite_phy(o_wdtrainA, wdtrainA)
911          CALL histwrite_phy(o_wdtrainM, wdtrainM)
912       ENDIF !(iflag_con.EQ.3.or.iflag_con.EQ.30)
913!!! nrlmd le 10/04/2012
914       IF (iflag_trig_bl>=1) THEN
915          CALL histwrite_phy(o_n2, n2)
916          CALL histwrite_phy(o_s2, s2)
917          CALL histwrite_phy(o_proba_notrig, proba_notrig)
918          CALL histwrite_phy(o_random_notrig, random_notrig)
919          CALL histwrite_phy(o_ale_bl_stat, ale_bl_stat)
920          CALL histwrite_phy(o_ale_bl_trig, ale_bl_trig)
921       ENDIF  !(iflag_trig_bl>=1)
922       IF (iflag_clos_bl>=1) THEN
923          CALL histwrite_phy(o_alp_bl_det, alp_bl_det)
924          CALL histwrite_phy(o_alp_bl_fluct_m, alp_bl_fluct_m)
925          CALL histwrite_phy(o_alp_bl_fluct_tke,  &
926               alp_bl_fluct_tke)
927          CALL histwrite_phy(o_alp_bl_conv, alp_bl_conv)
928          CALL histwrite_phy(o_alp_bl_stat, alp_bl_stat)
929       ENDIF  !(iflag_clos_bl>=1)
930!!! fin nrlmd le 10/04/2012
931       ! Output of slab ocean variables
932       IF (type_ocean=='slab ') THEN
933          CALL histwrite_phy(o_slab_qflux, slab_wfbils)
934          CALL histwrite_phy(o_slab_bils, slab_bils)
935          IF (nslay.EQ.1) THEN
936              zx_tmp_fi2d(:)=tslab(:,1)
937              CALL histwrite_phy(o_tslab, zx_tmp_fi2d)
938          ELSE
939              CALL histwrite_phy(o_tslab, tslab)
940          ENDIF
941          IF (version_ocean=='sicINT') THEN
942              CALL histwrite_phy(o_slab_bilg, slab_bilg)
943              CALL histwrite_phy(o_slab_tice, tice)
944              CALL histwrite_phy(o_slab_sic, seaice)
945          ENDIF
946       ENDIF !type_ocean == force/slab
947       CALL histwrite_phy(o_weakinv, weak_inversion)
948       CALL histwrite_phy(o_dthmin, dthmin)
949       CALL histwrite_phy(o_cldtau, cldtau)
950       CALL histwrite_phy(o_cldemi, cldemi)
951       CALL histwrite_phy(o_pr_con_l, pmflxr(:,1:klev))
952       CALL histwrite_phy(o_pr_con_i, pmflxs(:,1:klev))
953       CALL histwrite_phy(o_pr_lsc_l, prfl(:,1:klev))
954       CALL histwrite_phy(o_pr_lsc_i, psfl(:,1:klev))
955       CALL histwrite_phy(o_re, re)
956       CALL histwrite_phy(o_fl, fl)
957       IF (vars_defined) THEN
958          DO i=1, klon
959             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
960          ENDDO
961       ENDIF
962       CALL histwrite_phy(o_rh2m, zx_tmp_fi2d)
963
964       IF (vars_defined) THEN
965          DO i=1, klon
966             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
967          ENDDO
968       ENDIF
969       CALL histwrite_phy(o_rh2m_min, zx_tmp_fi2d)
970
971       IF (vars_defined) THEN
972          DO i=1, klon
973             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
974          ENDDO
975       ENDIF
976       CALL histwrite_phy(o_rh2m_max, zx_tmp_fi2d)
977
978       CALL histwrite_phy(o_qsat2m, qsat2m)
979       CALL histwrite_phy(o_tpot, tpot)
980       CALL histwrite_phy(o_tpote, tpote)
981       IF (vars_defined) zx_tmp_fi2d(1 : klon) = fsolsw( 1 : klon, is_ter)
982       CALL histwrite_phy(o_SWnetOR,  zx_tmp_fi2d)
983       CALL histwrite_phy(o_LWdownOR, sollwdown)
984       CALL histwrite_phy(o_snowl, snow_lsc)
985       CALL histwrite_phy(o_solldown, sollwdown)
986       CALL histwrite_phy(o_dtsvdfo, d_ts(:,is_oce))
987       CALL histwrite_phy(o_dtsvdft, d_ts(:,is_ter))
988       CALL histwrite_phy(o_dtsvdfg,  d_ts(:,is_lic))
989       CALL histwrite_phy(o_dtsvdfi, d_ts(:,is_sic))
990       CALL histwrite_phy(o_z0m, z0m(:,nbsrf+1))
991       CALL histwrite_phy(o_z0h, z0h(:,nbsrf+1))
992       ! OD550 per species
993!--OLIVIER
994!This is warranted by treating INCA aerosols as offline aerosols
995       IF (flag_aerosol.GT.0) THEN
996          CALL histwrite_phy(o_od550aer, od550aer)
997          CALL histwrite_phy(o_od865aer, od865aer)
998          CALL histwrite_phy(o_absvisaer, absvisaer)
999          CALL histwrite_phy(o_od550lt1aer, od550lt1aer)
1000          CALL histwrite_phy(o_sconcso4, sconcso4)
1001          CALL histwrite_phy(o_sconcno3, sconcno3)
1002          CALL histwrite_phy(o_sconcoa, sconcoa)
1003          CALL histwrite_phy(o_sconcbc, sconcbc)
1004          CALL histwrite_phy(o_sconcss, sconcss)
1005          CALL histwrite_phy(o_sconcdust, sconcdust)
1006          CALL histwrite_phy(o_concso4, concso4)
1007          CALL histwrite_phy(o_concno3, concno3)
1008          CALL histwrite_phy(o_concoa, concoa)
1009          CALL histwrite_phy(o_concbc, concbc)
1010          CALL histwrite_phy(o_concss, concss)
1011          CALL histwrite_phy(o_concdust, concdust)
1012          CALL histwrite_phy(o_loadso4, loadso4)
1013          CALL histwrite_phy(o_loadoa, loadoa)
1014          CALL histwrite_phy(o_loadbc, loadbc)
1015          CALL histwrite_phy(o_loadss, loadss)
1016          CALL histwrite_phy(o_loaddust, loaddust)
1017          !--STRAT AER
1018       ENDIF
1019       IF (flag_aerosol.GT.0.OR.flag_aerosol_strat>=1) THEN
1020!          DO naero = 1, naero_spc
1021!--correction mini bug OB
1022          DO naero = 1, naero_tot
1023             CALL histwrite_phy(o_tausumaero(naero), &
1024                  tausum_aero(:,2,naero) )
1025          ENDDO
1026       ENDIF
1027       IF (flag_aerosol_strat>=1) THEN
1028          CALL histwrite_phy(o_tausumaero_lw, &
1029               tausum_aero(:,6,id_STRAT_phy) )
1030       ENDIF
1031       IF (ok_ade) THEN
1032          CALL histwrite_phy(o_topswad, topswad_aero)
1033          CALL histwrite_phy(o_topswad0, topswad0_aero)
1034          CALL histwrite_phy(o_solswad, solswad_aero)
1035          CALL histwrite_phy(o_solswad0, solswad0_aero)
1036          CALL histwrite_phy(o_toplwad, toplwad_aero)
1037          CALL histwrite_phy(o_toplwad0, toplwad0_aero)
1038          CALL histwrite_phy(o_sollwad, sollwad_aero)
1039          CALL histwrite_phy(o_sollwad0, sollwad0_aero)
1040          !====MS forcing diagnostics
1041          CALL histwrite_phy(o_swtoaas_nat, topsw_aero(:,1))
1042          CALL histwrite_phy(o_swsrfas_nat, solsw_aero(:,1))
1043          CALL histwrite_phy(o_swtoacs_nat, topsw0_aero(:,1))
1044          CALL histwrite_phy(o_swsrfcs_nat, solsw0_aero(:,1))
1045          !ant
1046          CALL histwrite_phy(o_swtoaas_ant, topsw_aero(:,2))
1047          CALL histwrite_phy(o_swsrfas_ant, solsw_aero(:,2))
1048          CALL histwrite_phy(o_swtoacs_ant, topsw0_aero(:,2))
1049          CALL histwrite_phy(o_swsrfcs_ant, solsw0_aero(:,2))
1050          !cf
1051          IF (.not. aerosol_couple) THEN
1052             CALL histwrite_phy(o_swtoacf_nat, topswcf_aero(:,1))
1053             CALL histwrite_phy(o_swsrfcf_nat, solswcf_aero(:,1))
1054             CALL histwrite_phy(o_swtoacf_ant, topswcf_aero(:,2))
1055             CALL histwrite_phy(o_swsrfcf_ant, solswcf_aero(:,2))
1056             CALL histwrite_phy(o_swtoacf_zero,topswcf_aero(:,3))
1057             CALL histwrite_phy(o_swsrfcf_zero,solswcf_aero(:,3))
1058          ENDIF
1059          !====MS forcing diagnostics
1060       ENDIF
1061       IF (ok_aie) THEN
1062          CALL histwrite_phy(o_topswai, topswai_aero)
1063          CALL histwrite_phy(o_solswai, solswai_aero)
1064       ENDIF
1065       IF (flag_aerosol.GT.0.AND.ok_cdnc) THEN
1066          CALL histwrite_phy(o_scdnc, scdnc)
1067          CALL histwrite_phy(o_cldncl, cldncl)
1068          CALL histwrite_phy(o_reffclws, reffclws)
1069          CALL histwrite_phy(o_reffclwc, reffclwc)
1070          CALL histwrite_phy(o_cldnvi, cldnvi)
1071          CALL histwrite_phy(o_lcc, lcc)
1072          CALL histwrite_phy(o_lcc3d, lcc3d)
1073          CALL histwrite_phy(o_lcc3dcon, lcc3dcon)
1074          CALL histwrite_phy(o_lcc3dstra, lcc3dstra)
1075          CALL histwrite_phy(o_reffclwtop, reffclwtop)
1076       ENDIF
1077       ! Champs 3D:
1078       IF (ok_ade .OR. ok_aie) THEN
1079          CALL histwrite_phy(o_ec550aer, ec550aer)
1080       ENDIF
1081       CALL histwrite_phy(o_lwcon, flwc)
1082       CALL histwrite_phy(o_iwcon, fiwc)
1083       CALL histwrite_phy(o_temp, t_seri)
1084       CALL histwrite_phy(o_theta, theta)
1085       CALL histwrite_phy(o_ovapinit, qx(:,:,ivap))
1086       CALL histwrite_phy(o_ovap, q_seri)
1087       CALL histwrite_phy(o_oliq, ql_seri)
1088       CALL histwrite_phy(o_geop, zphi)
1089       CALL histwrite_phy(o_vitu, u_seri)
1090       CALL histwrite_phy(o_vitv, v_seri)
1091       CALL histwrite_phy(o_vitw, omega)
1092       CALL histwrite_phy(o_pres, pplay)
1093       CALL histwrite_phy(o_paprs, paprs(:,1:klev))
1094       IF (vars_defined) THEN
1095          DO i=1, klon
1096             zx_tmp_fi3d1(i,1)= pphis(i)/RG
1097             !020611   zx_tmp_fi3d(i,1)= pphis(i)/RG
1098          ENDDO
1099          DO k=1, klev
1100             !020611        DO k=1, klev-1
1101             DO i=1, klon
1102                !020611         zx_tmp_fi3d(i,k+1)= zx_tmp_fi3d(i,k) - (t_seri(i,k) *RD *
1103                zx_tmp_fi3d1(i,k+1)= zx_tmp_fi3d1(i,k) - (t_seri(i,k) *RD *  &
1104                     (paprs(i,k+1) - paprs(i,k))) / ( pplay(i,k) * RG )
1105             ENDDO
1106          ENDDO
1107       ENDIF
1108       CALL histwrite_phy(o_zfull,zx_tmp_fi3d1(:,2:klevp1))
1109       !020611    $o_zfull%name,itau_w,zx_tmp_fi3d)
1110
1111       IF (vars_defined)  THEN
1112          DO i=1, klon
1113             zx_tmp_fi3d(i,1)= pphis(i)/RG - ( &
1114                  (t_seri(i,1)+zxtsol(i))/2. *RD * &
1115                  (pplay(i,1) - paprs(i,1)))/( (paprs(i,1)+pplay(i,1))/2.* RG)
1116          ENDDO
1117          DO k=1, klev-1
1118             DO i=1, klon
1119                zx_tmp_fi3d(i,k+1)= zx_tmp_fi3d(i,k) - ( &
1120                     (t_seri(i,k)+t_seri(i,k+1))/2. *RD *  &
1121                     (pplay(i,k+1) - pplay(i,k))) / ( paprs(i,k) * RG )
1122             ENDDO
1123          ENDDO
1124       ENDIF
1125       CALL histwrite_phy(o_zhalf, zx_tmp_fi3d)
1126       CALL histwrite_phy(o_rneb, cldfra)
1127       CALL histwrite_phy(o_rnebcon, rnebcon)
1128       CALL histwrite_phy(o_rnebls, rneb)
1129       IF (vars_defined)  THEN
1130          DO k=1, klev
1131             DO i=1, klon
1132                zx_tmp_fi3d(i,k)=cldfra(i,k)*JrNt(i)
1133             ENDDO
1134          ENDDO
1135       ENDIF
1136       CALL histwrite_phy(o_rnebjn, zx_tmp_fi3d)
1137       CALL histwrite_phy(o_rhum, zx_rh)
1138       CALL histwrite_phy(o_ozone, &
1139            wo(:, :, 1) * dobson_u * 1e3 / zmasse / rmo3 * rmd)
1140
1141       IF (read_climoz == 2) THEN
1142          CALL histwrite_phy(o_ozone_light, &
1143               wo(:, :, 2) * dobson_u * 1e3 / zmasse / rmo3 * rmd)
1144       ENDIF
1145
1146       CALL histwrite_phy(o_dtphy, d_t)
1147       CALL histwrite_phy(o_dqphy,  d_qx(:,:,ivap))
1148       DO nsrf=1, nbsrf
1149          IF (vars_defined) zx_tmp_fi2d(1 : klon) = falb1( 1 : klon, nsrf)
1150          CALL histwrite_phy(o_albe_srf(nsrf), zx_tmp_fi2d)
1151          IF (vars_defined) zx_tmp_fi2d(1 : klon) = z0m( 1 : klon, nsrf)
1152          CALL histwrite_phy(o_z0m_srf(nsrf), zx_tmp_fi2d)
1153          IF (vars_defined) zx_tmp_fi2d(1 : klon) = z0h( 1 : klon, nsrf)
1154          CALL histwrite_phy(o_z0h_srf(nsrf), zx_tmp_fi2d)
1155          IF (vars_defined) zx_tmp_fi2d(1 : klon) = agesno( 1 : klon, nsrf)
1156          CALL histwrite_phy(o_ages_srf(nsrf), zx_tmp_fi2d)
1157          IF (vars_defined) zx_tmp_fi2d(1 : klon) = snow( 1 : klon, nsrf)
1158          CALL histwrite_phy(o_snow_srf(nsrf), zx_tmp_fi2d)
1159       ENDDO !nsrf=1, nbsrf
1160       CALL histwrite_phy(o_alb1, albsol1)
1161       CALL histwrite_phy(o_alb2, albsol2)
1162       !FH Sorties pour la couche limite
1163       IF (iflag_pbl>1) THEN
1164          zx_tmp_fi3d=0.
1165          IF (vars_defined) THEN
1166             DO nsrf=1,nbsrf
1167                DO k=1,klev
1168                   zx_tmp_fi3d(:,k)=zx_tmp_fi3d(:,k) &
1169                        +pctsrf(:,nsrf)*pbl_tke(:,k,nsrf)
1170                enddo
1171             enddo
1172          ENDIF
1173          CALL histwrite_phy(o_tke, zx_tmp_fi3d)
1174
1175          CALL histwrite_phy(o_tke_max, zx_tmp_fi3d)
1176       ENDIF
1177
1178       CALL histwrite_phy(o_kz, coefh(:,:,is_ave))
1179
1180       CALL histwrite_phy(o_kz_max, coefh(:,:,is_ave))
1181
1182       CALL histwrite_phy(o_clwcon, clwcon0)
1183       CALL histwrite_phy(o_dtdyn, d_t_dyn)
1184       CALL histwrite_phy(o_dqdyn, d_q_dyn)
1185       CALL histwrite_phy(o_dudyn, d_u_dyn)
1186       CALL histwrite_phy(o_dvdyn, d_v_dyn)
1187
1188       IF (vars_defined) THEN
1189          zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys
1190       ENDIF
1191       CALL histwrite_phy(o_dtcon, zx_tmp_fi3d)
1192       IF (iflag_thermals.eq.0)THEN
1193          IF (vars_defined) THEN
1194             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
1195                  d_t_ajsb(1:klon,1:klev)/pdtphys
1196          ENDIF
1197          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
1198       ELSEIF (iflag_thermals.ge.1.and.iflag_wake.EQ.1)THEN
1199          IF (vars_defined) THEN
1200             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
1201                  d_t_ajs(1:klon,1:klev)/pdtphys + &
1202                  d_t_wake(1:klon,1:klev)/pdtphys
1203          ENDIF
1204          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
1205       ENDIF
1206       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_con(1:klon,1:klev)/pdtphys
1207       CALL histwrite_phy(o_ducon, zx_tmp_fi3d)
1208       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_con(1:klon,1:klev)/pdtphys
1209       CALL histwrite_phy(o_dvcon, zx_tmp_fi3d)
1210       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
1211       CALL histwrite_phy(o_dqcon, zx_tmp_fi3d)
1212
1213       IF (iflag_thermals.EQ.0) THEN
1214          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
1215          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
1216       ELSEIF (iflag_thermals.GE.1.AND.iflag_wake.EQ.1) THEN
1217          IF (vars_defined) THEN
1218             zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys + &
1219                  d_q_ajs(1:klon,1:klev)/pdtphys + &
1220                  d_q_wake(1:klon,1:klev)/pdtphys
1221          ENDIF
1222          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
1223       ENDIF
1224
1225       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lsc(1:klon,1:klev)/pdtphys
1226       CALL histwrite_phy(o_dtlsc, zx_tmp_fi3d)
1227       IF (vars_defined) zx_tmp_fi3d(1:klon, 1:klev)=(d_t_lsc(1:klon,1:klev)+ &
1228            d_t_eva(1:klon,1:klev))/pdtphys
1229       CALL histwrite_phy(o_dtlschr, zx_tmp_fi3d)
1230       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys
1231       CALL histwrite_phy(o_dqlsc, zx_tmp_fi3d)
1232       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=beta_prec(1:klon,1:klev)
1233       CALL histwrite_phy(o_beta_prec, zx_tmp_fi3d)
1234!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1235       ! Sorties specifiques a la separation thermiques/non thermiques
1236       IF (iflag_thermals>=1) THEN
1237          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscth(1:klon,1:klev)/pdtphys
1238          CALL histwrite_phy(o_dtlscth, zx_tmp_fi3d)
1239          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscst(1:klon,1:klev)/pdtphys
1240          CALL histwrite_phy(o_dtlscst, zx_tmp_fi3d)
1241          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscth(1:klon,1:klev)/pdtphys
1242          CALL histwrite_phy(o_dqlscth, zx_tmp_fi3d)
1243          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscst(1:klon,1:klev)/pdtphys
1244          CALL histwrite_phy(o_dqlscst, zx_tmp_fi3d)
1245          CALL histwrite_phy(o_plulth, plul_th)
1246          CALL histwrite_phy(o_plulst, plul_st)
1247          IF (vars_defined) THEN
1248             DO k=1,klev
1249                DO i=1,klon
1250                   IF (ptconvth(i,k)) THEN
1251                      zx_tmp_fi3d(i,k)=1.
1252                   ELSE
1253                      zx_tmp_fi3d(i,k)=0.
1254                   ENDIF
1255                enddo
1256             enddo
1257          ENDIF
1258          CALL histwrite_phy(o_ptconvth, zx_tmp_fi3d)
1259          IF (vars_defined) THEN
1260             DO i=1,klon
1261                zx_tmp_fi2d(1:klon)=lmax_th(:)
1262             enddo
1263          ENDIF
1264          CALL histwrite_phy(o_lmaxth, zx_tmp_fi2d)
1265       ENDIF ! iflag_thermals>=1
1266!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1267       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf(1:klon,1:klev)/pdtphys
1268       CALL histwrite_phy(o_dtvdf, zx_tmp_fi3d)
1269       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_diss(1:klon,1:klev)/pdtphys
1270       CALL histwrite_phy(o_dtdis, zx_tmp_fi3d)
1271       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf(1:klon,1:klev)/pdtphys
1272       CALL histwrite_phy(o_dqvdf, zx_tmp_fi3d)
1273       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_eva(1:klon,1:klev)/pdtphys
1274       CALL histwrite_phy(o_dteva, zx_tmp_fi3d)
1275       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_eva(1:klon,1:klev)/pdtphys
1276       CALL histwrite_phy(o_dqeva, zx_tmp_fi3d)
1277       zpt_conv = 0.
1278       WHERE (ptconv) zpt_conv = 1.
1279       CALL histwrite_phy(o_ptconv, zpt_conv)
1280       CALL histwrite_phy(o_ratqs, ratqs)
1281       IF (vars_defined) THEN
1282          zx_tmp_fi3d(1:klon,1:klev)=d_t_ajs(1:klon,1:klev)/pdtphys - &
1283               d_t_ajsb(1:klon,1:klev)/pdtphys
1284       ENDIF
1285       CALL histwrite_phy(o_dtthe, zx_tmp_fi3d)
1286       IF (vars_defined) THEN
1287          zx_tmp_fi3d(1:klon,1:klev)=d_u_ajs(1:klon,1:klev)/pdtphys
1288       ENDIF
1289       CALL histwrite_phy(o_duthe, zx_tmp_fi3d)
1290       IF (vars_defined) THEN
1291          zx_tmp_fi3d(1:klon,1:klev)=d_v_ajs(1:klon,1:klev)/pdtphys
1292       ENDIF
1293       CALL histwrite_phy(o_dvthe, zx_tmp_fi3d)
1294
1295       IF (iflag_thermals>=1) THEN
1296          ! Pour l instant 0 a y reflichir pour les thermiques
1297          zx_tmp_fi2d=0.
1298          CALL histwrite_phy(o_ftime_th, zx_tmp_fi2d)
1299          CALL histwrite_phy(o_f_th, fm_therm)
1300          CALL histwrite_phy(o_e_th, entr_therm)
1301          CALL histwrite_phy(o_w_th, zw2)
1302          CALL histwrite_phy(o_q_th, zqasc)
1303          CALL histwrite_phy(o_a_th, fraca)
1304          CALL histwrite_phy(o_d_th, detr_therm)
1305          CALL histwrite_phy(o_f0_th, f0)
1306          CALL histwrite_phy(o_zmax_th, zmax_th)
1307          IF (vars_defined) THEN
1308             zx_tmp_fi3d(1:klon,1:klev)=d_q_ajs(1:klon,1:klev)/pdtphys - &
1309                  d_q_ajsb(1:klon,1:klev)/pdtphys
1310          ENDIF
1311          CALL histwrite_phy(o_dqthe, zx_tmp_fi3d)
1312       ENDIF !iflag_thermals
1313       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ajsb(1:klon,1:klev)/pdtphys
1314       CALL histwrite_phy(o_dtajs, zx_tmp_fi3d)
1315       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_ajsb(1:klon,1:klev)/pdtphys
1316       CALL histwrite_phy(o_dqajs, zx_tmp_fi3d)
1317       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_swr(1:klon,1:klev)/pdtphys
1318       CALL histwrite_phy(o_dtswr, zx_tmp_fi3d)
1319       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_sw0(1:klon,1:klev)/pdtphys
1320       CALL histwrite_phy(o_dtsw0, zx_tmp_fi3d)
1321       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lwr(1:klon,1:klev)/pdtphys
1322       CALL histwrite_phy(o_dtlwr, zx_tmp_fi3d)
1323       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lw0(1:klon,1:klev)/pdtphys
1324       CALL histwrite_phy(o_dtlw0, zx_tmp_fi3d)
1325       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ec(1:klon,1:klev)/pdtphys
1326       CALL histwrite_phy(o_dtec, zx_tmp_fi3d)
1327       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_vdf(1:klon,1:klev)/pdtphys
1328       CALL histwrite_phy(o_duvdf, zx_tmp_fi3d)
1329       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_vdf(1:klon,1:klev)/pdtphys
1330       CALL histwrite_phy(o_dvvdf, zx_tmp_fi3d)
1331       IF (ok_orodr) THEN
1332          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_oro(1:klon,1:klev)/pdtphys
1333          CALL histwrite_phy(o_duoro, zx_tmp_fi3d)
1334          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_oro(1:klon,1:klev)/pdtphys
1335          CALL histwrite_phy(o_dvoro, zx_tmp_fi3d)
1336          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_oro(1:klon,1:klev)/pdtphys
1337          CALL histwrite_phy(o_dtoro, zx_tmp_fi3d)
1338       ENDIF
1339       IF (ok_orolf) THEN
1340          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_lIF (1:klon,1:klev)/pdtphys
1341          CALL histwrite_phy(o_dulif, zx_tmp_fi3d)
1342
1343          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_lIF (1:klon,1:klev)/pdtphys
1344          CALL histwrite_phy(o_dvlif, zx_tmp_fi3d)
1345
1346          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lIF (1:klon,1:klev)/pdtphys
1347          CALL histwrite_phy(o_dtlif, zx_tmp_fi3d)
1348       ENDIF
1349
1350!      IF (ok_hines) THEN
1351!         IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_hin(1:klon,1:klev)/pdtphys
1352!         CALL histwrite_phy(o_duhin, zx_tmp_fi3d)
1353!         IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_hin(1:klon,1:klev)/pdtphys
1354!         CALL histwrite_phy(o_dvhin, zx_tmp_fi3d)
1355!         IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_hin(1:klon,1:klev)/pdtphys
1356!         CALL histwrite_phy(o_dthin, zx_tmp_fi3d)
1357!      ENDIF
1358
1359!      IF (ok_gwd_rando) THEN
1360!         CALL histwrite_phy(o_du_gwd_rando, du_gwd_ranDO / pdtphys)
1361!         CALL histwrite_phy(o_dv_gwd_rando, dv_gwd_ranDO / pdtphys)
1362!         CALL histwrite_phy(o_vstr_gwd_rando, zvstr_gwd_rando)
1363!      ENDIF
1364
1365       IF (ok_qch4) THEN
1366          CALL histwrite_phy(o_dqch4, d_q_ch4 / pdtphys)
1367       ENDIF
1368
1369       CALL histwrite_phy(o_rsu, swup)
1370       CALL histwrite_phy(o_rsd, swdn)
1371       CALL histwrite_phy(o_rlu, lwup)
1372       CALL histwrite_phy(o_rld, lwdn)
1373       CALL histwrite_phy(o_rsucs, swup0)
1374       CALL histwrite_phy(o_rsdcs, swdn0)
1375       CALL histwrite_phy(o_rlucs, lwup0)
1376       CALL histwrite_phy(o_rldcs, lwdn0)
1377       IF (vars_defined) THEN
1378          zx_tmp_fi3d(1:klon,1:klev)=d_t(1:klon,1:klev)+ &
1379               d_t_dyn(1:klon,1:klev)
1380       ENDIF
1381       CALL histwrite_phy(o_tnt, zx_tmp_fi3d)
1382       IF (vars_defined) THEN
1383          zx_tmp_fi3d(1:klon,1:klev)=d_t_swr(1:klon,1:klev)/pdtphys + &
1384               d_t_lwr(1:klon,1:klev)/pdtphys
1385       ENDIF
1386       CALL histwrite_phy(o_tntr, zx_tmp_fi3d)
1387       IF (vars_defined) THEN
1388          zx_tmp_fi3d(1:klon,1:klev)= (d_t_lsc(1:klon,1:klev)+ &
1389               d_t_eva(1:klon,1:klev)+ &
1390               d_t_vdf(1:klon,1:klev))/pdtphys
1391       ENDIF
1392       CALL histwrite_phy(o_tntscpbl, zx_tmp_fi3d)
1393       IF (vars_defined) THEN
1394          zx_tmp_fi3d(1:klon,1:klev)=d_qx(1:klon,1:klev,ivap)+ &
1395               d_q_dyn(1:klon,1:klev)
1396       ENDIF
1397       CALL histwrite_phy(o_tnhus, zx_tmp_fi3d)
1398       IF (vars_defined) THEN
1399          zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys+ &
1400               d_q_eva(1:klon,1:klev)/pdtphys
1401       ENDIF
1402       CALL histwrite_phy(o_tnhusscpbl, zx_tmp_fi3d)
1403       CALL histwrite_phy(o_evu, coefm(:,:,is_ave))
1404       IF (vars_defined) THEN
1405          zx_tmp_fi3d(1:klon,1:klev)=q_seri(1:klon,1:klev)+ &
1406               ql_seri(1:klon,1:klev)
1407       ENDIF
1408       CALL histwrite_phy(o_h2o, zx_tmp_fi3d)
1409       IF (iflag_con >= 3) THEN
1410          IF (vars_defined) THEN
1411             zx_tmp_fi3d(1:klon,1:klev)=-1 * (dnwd(1:klon,1:klev)+ &
1412                  dnwd0(1:klon,1:klev))
1413          ENDIF
1414          CALL histwrite_phy(o_mcd, zx_tmp_fi3d)
1415          IF (vars_defined) THEN
1416             zx_tmp_fi3d(1:klon,1:klev)=upwd(1:klon,1:klev) + &
1417                  dnwd(1:klon,1:klev)+ dnwd0(1:klon,1:klev)
1418          ENDIF
1419          CALL histwrite_phy(o_dmc, zx_tmp_fi3d)
1420       ELSEIF (iflag_con == 2) THEN
1421          CALL histwrite_phy(o_mcd,  pmfd)
1422          CALL histwrite_phy(o_dmc,  pmfu + pmfd)
1423       ENDIF
1424       CALL histwrite_phy(o_ref_liq, ref_liq)
1425       CALL histwrite_phy(o_ref_ice, ref_ice)
1426       IF (RCO2_per.NE.RCO2_act.OR.RCH4_per.NE.RCH4_act.OR. &
1427            RN2O_per.NE.RN2O_act.OR.RCFC11_per.NE.RCFC11_act.OR. &
1428            RCFC12_per.NE.RCFC12_act) THEN
1429          IF (vars_defined) zx_tmp_fi2d(1 : klon) = swupp ( 1 : klon, klevp1 )
1430          CALL histwrite_phy(o_rsut4co2, zx_tmp_fi2d)
1431          IF (vars_defined) zx_tmp_fi2d(1 : klon) = lwupp ( 1 : klon, klevp1 )
1432          CALL histwrite_phy(o_rlut4co2, zx_tmp_fi2d)
1433          IF (vars_defined) zx_tmp_fi2d(1 : klon) = swup0p ( 1 : klon, klevp1 )
1434          CALL histwrite_phy(o_rsutcs4co2, zx_tmp_fi2d)
1435          IF (vars_defined) zx_tmp_fi2d(1 : klon) = lwup0p ( 1 : klon, klevp1 )
1436          CALL histwrite_phy(o_rlutcs4co2, zx_tmp_fi2d)
1437          CALL histwrite_phy(o_rsu4co2, swupp)
1438          CALL histwrite_phy(o_rlu4co2, lwupp)
1439          CALL histwrite_phy(o_rsucs4co2, swup0p)
1440          CALL histwrite_phy(o_rlucs4co2, lwup0p)
1441          CALL histwrite_phy(o_rsd4co2, swdnp)
1442          CALL histwrite_phy(o_rld4co2, lwdnp)
1443          CALL histwrite_phy(o_rsdcs4co2, swdn0p)
1444          CALL histwrite_phy(o_rldcs4co2, lwdn0p)
1445       ENDIF
1446!!!!!!!!!!!! Sorties niveaux de pression NMC !!!!!!!!!!!!!!!!!!!!
1447#ifdef CPP_IOIPSL
1448#ifndef CPP_XIOS
1449  IF (.NOT.ok_all_xml) THEN
1450       ! ATTENTION, LES ANCIENS HISTWRITE ONT ETES CONSERVES EN ATTENDANT MIEUX:
1451       ! Champs interpolles sur des niveaux de pression
1452       missing_val=missing_val_nf90
1453       DO iff=7, nfiles-1 !--here we deal with files 7,8 and 9
1454
1455          CALL histwrite_phy(o_tnondef,tnondef(:,:,iff-6),iff)
1456          CALL histwrite_phy(o_ta,twriteSTD(:,:,iff-6),iff)
1457          CALL histwrite_phy(o_zg,phiwriteSTD(:,:,iff-6),iff)
1458          CALL histwrite_phy(o_hus,qwriteSTD(:,:,iff-6),iff)
1459          CALL histwrite_phy(o_hur,rhwriteSTD(:,:,iff-6),iff)
1460          CALL histwrite_phy(o_ua,uwriteSTD(:,:,iff-6),iff)
1461          CALL histwrite_phy(o_va,vwriteSTD(:,:,iff-6),iff)
1462          CALL histwrite_phy(o_wap,wwriteSTD(:,:,iff-6),iff)
1463          IF (vars_defined) THEN
1464             DO k=1, nlevSTD
1465                DO i=1, klon
1466                   IF (tnondef(i,k,iff-6).NE.missing_val) THEN
1467                      IF (freq_outNMC(iff-6).LT.0) THEN
1468                         freq_moyNMC(iff-6)=(mth_len*un_jour)/freq_calNMC(iff-6)
1469                      ELSE
1470                         freq_moyNMC(iff-6)=freq_outNMC(iff-6)/freq_calNMC(iff-6)
1471                      ENDIF
1472                      zx_tmp_fi3d_STD(i,k) = (100.*tnondef(i,k,iff-6))/freq_moyNMC(iff-6)
1473                   ELSE
1474                      zx_tmp_fi3d_STD(i,k) = missing_val
1475                   ENDIF
1476                ENDDO
1477             ENDDO
1478          ENDIF
1479          CALL histwrite_phy(o_psbg,zx_tmp_fi3d_STD,iff)
1480          IF (vars_defined) THEN
1481             DO k=1, nlevSTD
1482                DO i=1, klon
1483                   IF (O3sumSTD(i,k,iff-6).NE.missing_val) THEN
1484                      zx_tmp_fi3d_STD(i,k) = O3sumSTD(i,k,iff-6) * 1.e+9
1485                   ELSE
1486                      zx_tmp_fi3d_STD(i,k) = missing_val
1487                   ENDIF
1488                ENDDO
1489             ENDDO !k=1, nlevSTD
1490          ENDIF
1491          CALL histwrite_phy(o_tro3,zx_tmp_fi3d_STD,iff)
1492          IF (read_climoz == 2) THEN
1493             IF (vars_defined) THEN
1494                DO k=1, nlevSTD
1495                   DO i=1, klon
1496                      IF (O3daysumSTD(i,k,iff-6).NE.missing_val) THEN
1497                         zx_tmp_fi3d_STD(i,k) = O3daysumSTD(i,k,iff-6) * 1.e+9
1498                      ELSE
1499                         zx_tmp_fi3d_STD(i,k) = missing_val
1500                      ENDIF
1501                   ENDDO
1502                ENDDO !k=1, nlevSTD
1503             ENDIF
1504             CALL histwrite_phy(o_tro3_daylight,zx_tmp_fi3d_STD,iff)
1505          ENDIF
1506          CALL histwrite_phy(o_uxv,uvsumSTD(:,:,iff-6),iff)
1507          CALL histwrite_phy(o_vxq,vqsumSTD(:,:,iff-6),iff)
1508          CALL histwrite_phy(o_vxT,vTsumSTD(:,:,iff-6),iff)
1509          CALL histwrite_phy(o_wxq,wqsumSTD(:,:,iff-6),iff)
1510          CALL histwrite_phy(o_vxphi,vphisumSTD(:,:,iff-6),iff)
1511          CALL histwrite_phy(o_wxT,wTsumSTD(:,:,iff-6),iff)
1512          CALL histwrite_phy(o_uxu,u2sumSTD(:,:,iff-6),iff)
1513          CALL histwrite_phy(o_vxv,v2sumSTD(:,:,iff-6),iff)
1514          CALL histwrite_phy(o_TxT,T2sumSTD(:,:,iff-6),iff)
1515       ENDDO !nfiles
1516  ENDIF
1517#endif
1518#endif
1519#ifdef CPP_XIOS
1520  IF (ok_all_xml) THEN
1521!      DO iff=7, nfiles
1522
1523!         CALL histwrite_phy(o_tnondef,tnondef(:,:,3))
1524          CALL histwrite_phy(o_ta,tlevSTD(:,:))
1525          CALL histwrite_phy(o_zg,philevSTD(:,:))
1526          CALL histwrite_phy(o_hus,qlevSTD(:,:))
1527          CALL histwrite_phy(o_hur,rhlevSTD(:,:))
1528          CALL histwrite_phy(o_ua,ulevSTD(:,:))
1529          CALL histwrite_phy(o_va,vlevSTD(:,:))
1530          CALL histwrite_phy(o_wap,wlevSTD(:,:))
1531!         IF (vars_defined) THEN
1532!            DO k=1, nlevSTD
1533!               DO i=1, klon
1534!                  IF (tnondef(i,k,3).NE.missing_val) THEN
1535!                     IF (freq_outNMC(iff-6).LT.0) THEN
1536!                        freq_moyNMC(iff-6)=(mth_len*un_jour)/freq_calNMC(iff-6)
1537!                     ELSE
1538!                        freq_moyNMC(iff-6)=freq_outNMC(iff-6)/freq_calNMC(iff-6)
1539!                     ENDIF
1540!                     zx_tmp_fi3d_STD(i,k) = (100.*tnondef(i,k,3))/freq_moyNMC(iff-6)
1541!                  ELSE
1542!                     zx_tmp_fi3d_STD(i,k) = missing_val
1543!                  ENDIF
1544!               ENDDO
1545!            ENDDO
1546!         ENDIF
1547!         CALL histwrite_phy(o_psbg,zx_tmp_fi3d_STD)
1548          IF (vars_defined) THEN
1549             DO k=1, nlevSTD
1550                DO i=1, klon
1551                   IF (O3STD(i,k).NE.missing_val) THEN
1552                      zx_tmp_fi3d_STD(i,k) = O3STD(i,k) * 1.e+9
1553                   ELSE
1554                      zx_tmp_fi3d_STD(i,k) = missing_val
1555                   ENDIF
1556                ENDDO
1557             ENDDO !k=1, nlevSTD
1558          ENDIF
1559          CALL histwrite_phy(o_tro3,zx_tmp_fi3d_STD)
1560          IF (read_climoz == 2) THEN
1561             IF (vars_defined) THEN
1562                DO k=1, nlevSTD
1563                   DO i=1, klon
1564                      IF (O3daySTD(i,k).NE.missing_val) THEN
1565                         zx_tmp_fi3d_STD(i,k) = O3daySTD(i,k) * 1.e+9
1566                      ELSE
1567                         zx_tmp_fi3d_STD(i,k) = missing_val
1568                      ENDIF
1569                   ENDDO
1570                ENDDO !k=1, nlevSTD
1571             ENDIF
1572             CALL histwrite_phy(o_tro3_daylight,zx_tmp_fi3d_STD)
1573          ENDIF
1574          CALL histwrite_phy(o_uxv,uvSTD(:,:))
1575          CALL histwrite_phy(o_vxq,vqSTD(:,:))
1576          CALL histwrite_phy(o_vxT,vTSTD(:,:))
1577          CALL histwrite_phy(o_wxq,wqSTD(:,:))
1578          CALL histwrite_phy(o_vxphi,vphiSTD(:,:))
1579          CALL histwrite_phy(o_wxT,wTSTD(:,:))
1580          CALL histwrite_phy(o_uxu,u2STD(:,:))
1581          CALL histwrite_phy(o_vxv,v2STD(:,:))
1582          CALL histwrite_phy(o_TxT,T2STD(:,:))
1583!      ENDDO !nfiles
1584  ENDIF
1585#endif
1586!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1587        IF (nqtot.GE.nqo+1) THEN
1588            DO iq=nqo+1,nqtot
1589              IF (type_trac == 'lmdz' .OR. type_trac == 'repr') THEN
1590
1591             CALL histwrite_phy(o_trac(iq-nqo), tr_seri(:,:,iq-nqo))
1592             CALL histwrite_phy(o_dtr_vdf(iq-nqo),d_tr_cl(:,:,iq-nqo))
1593             CALL histwrite_phy(o_dtr_the(iq-nqo),d_tr_th(:,:,iq-nqo))
1594             CALL histwrite_phy(o_dtr_con(iq-nqo),d_tr_cv(:,:,iq-nqo))
1595             CALL histwrite_phy(o_dtr_lessi_impa(iq-nqo),d_tr_lessi_impa(:,:,iq-nqo))
1596             CALL histwrite_phy(o_dtr_lessi_nucl(iq-nqo),d_tr_lessi_nucl(:,:,iq-nqo))
1597             CALL histwrite_phy(o_dtr_insc(iq-nqo),d_tr_insc(:,:,iq-nqo))
1598             CALL histwrite_phy(o_dtr_bcscav(iq-nqo),d_tr_bcscav(:,:,iq-nqo))
1599             CALL histwrite_phy(o_dtr_evapls(iq-nqo),d_tr_evapls(:,:,iq-nqo))
1600             CALL histwrite_phy(o_dtr_ls(iq-nqo),d_tr_ls(:,:,iq-nqo))
1601!            CALL histwrite_phy(o_dtr_dyn(iq-nqo),d_tr_dyn(:,:,iq-nqo))
1602!            CALL histwrite_phy(o_dtr_cl(iq-nqo),d_tr_cl(:,:,iq-nqo))
1603             CALL histwrite_phy(o_dtr_trsp(iq-nqo),d_tr_trsp(:,:,iq-nqo))
1604             CALL histwrite_phy(o_dtr_sscav(iq-nqo),d_tr_sscav(:,:,iq-nqo))
1605             CALL histwrite_phy(o_dtr_sat(iq-nqo),d_tr_sat(:,:,iq-nqo))
1606             CALL histwrite_phy(o_dtr_uscav(iq-nqo),d_tr_uscav(:,:,iq-nqo))
1607             zx_tmp_fi2d=0.
1608             IF (vars_defined) THEN
1609                DO k=1,klev
1610                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,iq-nqo)
1611                ENDDO
1612             ENDIF
1613             CALL histwrite_phy(o_trac_cum(iq-nqo), zx_tmp_fi2d)
1614             ENDIF
1615          ENDDO
1616       ENDIF
1617
1618       IF (.NOT.vars_defined) THEN
1619          !$OMP MASTER
1620#ifndef CPP_IOIPSL_NO_OUTPUT
1621          DO iff=1,nfiles
1622             IF (clef_files(iff)) THEN
1623                CALL histend(nid_files(iff))
1624                ndex2d = 0
1625                ndex3d = 0
1626
1627             ENDIF ! clef_files
1628          ENDDO !  iff
1629#endif
1630#ifdef CPP_XIOS
1631          !On finalise l'initialisation:
1632          CALL wxios_closedef()
1633#endif
1634
1635          !$OMP END MASTER
1636          !$OMP BARRIER
1637          vars_defined = .TRUE.
1638
1639       ENDIF
1640
1641    ENDDO
1642
1643    IF (vars_defined) THEN
1644       ! On synchronise les fichiers pour IOIPSL
1645#ifndef CPP_IOIPSL_NO_OUTPUT
1646       !$OMP MASTER
1647       DO iff=1,nfiles
1648          IF (ok_sync .AND. clef_files(iff)) THEN
1649             CALL histsync(nid_files(iff))
1650          ENDIF
1651       ENDDO
1652       !$OMP END MASTER
1653#endif
1654    ENDIF
1655
1656  END SUBROUTINE phys_output_write_spl
1657
1658END MODULE phys_output_write_spl_mod
Note: See TracBrowser for help on using the repository browser.