GCC Code Coverage Report
Directory: ./ Exec Total Coverage
File: phylmd/phys_output_write_mod.F90 Lines: 971 1279 75.9 %
Date: 2023-06-30 12:51:15 Branches: 1130 1554 72.7 %

Line Branch Exec Source
1
!
2
! $Id: phys_output_write_mod.F90 4575 2023-06-14 15:06:15Z fairhead $
3
!
4
MODULE 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, flux_tr_dry
9
10
  ! Author: Abderrahmane IDELKADI (original include file)
11
  ! Author: Laurent FAIRHEAD (transformation to module/subroutine)
12
  ! Author: Ulysse GERARD (effective implementation)
13
14
CONTAINS
15
16
  ! ug Routine pour définir (lors du premier passage) ET sortir les variables
17
17627
  SUBROUTINE phys_output_write(itap, pdtphys, paprs, pphis, &
18
289
       pplay, lmax_th, aerosol_couple,         &
19
       ok_ade, ok_aie, ok_volcan, ivap, iliq, isol, ibs, ok_sync, &
20
       ptconv, read_climoz, clevSTD, ptconvth, &
21
289
       d_u, d_t, qx, d_qx, zmasse, flag_aerosol, flag_aerosol_strat, ok_cdnc)
22
23
    ! This subroutine does the actual writing of diagnostics that were
24
    ! defined and initialised in phys_output_mod.F90
25
26
    USE dimphy, ONLY: klon, klev, klevp1
27
    USE infotrac_phy, ONLY: nbtr, nqtot, nqo, type_trac, tracers, niso, ntiso
28
    USE strings_mod,  ONLY: maxlen
29
    USE mod_phys_lmdz_para, ONLY: is_north_pole_phy,is_south_pole_phy
30
    USE mod_grid_phy_lmdz, ONLY : nbp_lon, nbp_lat
31
    USE time_phylmdz_mod, ONLY: day_step_phy, start_time, itau_phy
32
    USE vertical_layers_mod, ONLY : ap, bp, aps, bps
33
    USE phys_output_ctrlout_mod, ONLY: o_phis, o_aire, is_ter, is_lic, is_oce, &
34
         o_longitude, o_latitude, &
35
         o_Ahyb, o_Bhyb,o_Ahyb_bounds, o_Bhyb_bounds, &
36
         o_Ahyb_mid, o_Bhyb_mid,o_Ahyb_mid_bounds, o_Bhyb_mid_bounds, &
37
         is_ave, is_sic, o_contfracATM, o_contfracOR, &
38
         o_aireTER, o_flat, o_slp, o_ptstar, o_pt0, o_tsol, &
39
         o_t2m, o_t2m_min, o_t2m_max, &
40
         o_t2m_min_mon, o_t2m_max_mon, &
41
         o_nt2mout, o_nt2moutfg, &
42
         o_nq2mout, o_nq2moutfg, &
43
         o_nu2mout, o_nu2moutfg, &
44
         o_q2m, o_ustar, o_u10m, o_v10m, &
45
         o_wind10m, o_wind10max, o_wind100m, o_gusts, o_sicf, &
46
         o_loadfactor_wind_onshore, o_loadfactor_wind_offshore, &
47
         o_psol, o_mass, o_qsurf, o_qsol, &
48
         o_precip, o_rain_fall, o_rain_con, o_ndayrain, o_plul, o_pluc, o_plun, &
49
         o_snow, o_msnow, o_fsnow, o_evap, o_snowerosion, o_ustart_lic, o_rhosnow_lic, o_bsfall, &
50
         o_ep,o_epmax_diag, & ! epmax_cape
51
         o_tops, o_tops0, o_topl, o_topl0, &
52
         o_SWupTOA, o_SWupTOAclr, o_SWupTOAcleanclr, o_SWdnTOA, o_fdiffSWdnSFC, &
53
         o_SWdnTOAclr, o_nettop, o_SWup200, &
54
         o_SWup200clr, o_SWdn200, o_SWdn200clr, &
55
         o_LWup200, o_LWup200clr, o_LWdn200, &
56
         o_LWdn200clr, o_sols, o_sols0, &
57
         o_soll, o_radsol, o_soll0, o_SWupSFC, &
58
         o_SWupSFCclr, o_SWupSFCcleanclr, o_SWdnSFC, o_SWdnSFCclr, o_SWdnSFCcleanclr, &
59
         o_LWupSFC, o_LWdnSFC, o_LWupSFCclr, &
60
         o_LWdnSFCclr, o_LWupTOAcleanclr, o_LWdnSFCcleanclr, o_bils, o_bils_diss, &
61
         o_bils_ec,o_bils_ech, o_bils_tke, o_bils_kinetic, &
62
         o_bils_latent, o_bils_enthalp, o_sens, &
63
         o_fder, o_ffonte, o_fqcalving, o_fqfonte, o_mrroli, o_runofflic, &
64
         o_taux, o_tauy, o_snowsrf, o_qsnow, &
65
         o_snowhgt, o_toice, o_sissnow, o_runoff, &
66
         o_albslw3, o_pourc_srf, o_fract_srf, &
67
         o_taux_srf, o_tauy_srf, o_tsol_srf, &
68
         o_evappot_srf, o_ustar_srf, o_u10m_srf, &
69
         o_v10m_srf, o_t2m_srf, o_evap_srf, &
70
         o_sens_srf, o_lat_srf, o_flw_srf, &
71
         o_fsw_srf, o_wbils_srf, o_wbilo_srf, &
72
         o_wevap_srf, o_wrain_srf, o_wsnow_srf, &
73
         o_tke_srf, o_tke_max_srf,o_dltpbltke_srf, o_wstar, &
74
         o_l_mixmin,o_l_mix, &
75
         o_cdrm, o_cdrh, o_cldl, o_cldm, o_cldh, &
76
         o_cldt, o_JrNt, o_cldljn, o_cldmjn, &
77
         o_cldhjn, o_cldtjn, o_cldq, o_lwp, o_iwp, &
78
         o_ue, o_ve, o_uq, o_vq, o_cape, o_pbase, &
79
         o_uwat, o_vwat, &
80
         o_ptop, o_fbase, o_plcl, o_plfc, &
81
         o_wbeff, o_convoccur, o_cape_max, o_upwd, o_ep,o_epmax_diag, &
82
         o_Mipsh, o_Ma, &
83
         o_dnwd, o_dnwd0, o_ftime_deepcv, o_ftime_con, o_mc, &
84
         o_prw, o_prlw, o_prsw, o_prbsw, o_s_pblh, o_s_pblt, o_s_lcl, &
85
         o_s_therm, o_uSTDlevs, o_vSTDlevs, &
86
         o_wSTDlevs, o_zSTDlevs, o_qSTDlevs, &
87
         o_tSTDlevs, epsfra, o_t_oce_sic, &
88
         o_ale_bl, o_alp_bl, o_ale_wk, o_alp_wk, &
89
         o_dtvdf_x    , o_dtvdf_w    , o_dqvdf_x    , o_dqvdf_w    , &
90
         o_sens_x     , o_sens_w     , o_flat_x     , o_flat_w     , &
91
         o_delta_tsurf, o_delta_tsurf_srf, &
92
         o_cdragh_x   , o_cdragh_w   , o_cdragm_x   , o_cdragm_w   , &
93
         o_kh         , o_kh_x       , o_kh_w       , &
94
         o_ale, o_alp, o_cin, o_WAPE, o_wake_h, o_cv_gen, o_wake_dens, &
95
         o_wake_s, o_wake_deltat, o_wake_deltaq, &
96
         o_wake_omg, o_dtwak, o_dqwak, o_dqwak2d, o_Vprecip, &
97
         o_qtaa, o_Clwaa, &
98
         o_ftd, o_fqd, o_wdtrainA, o_wdtrainS, o_wdtrainM, &
99
         o_n2, o_s2, o_proba_notrig, &
100
         o_random_notrig, o_ale_bl_stat, &
101
         o_ale_bl_trig, o_alp_bl_det, &
102
         o_alp_bl_fluct_m, o_alp_bl_fluct_tke, &
103
         o_alp_bl_conv, o_alp_bl_stat, &
104
         o_slab_qflux, o_tslab, o_slab_bils, &
105
         o_slab_bilg, o_slab_sic, o_slab_tice, &
106
         o_slab_hdiff, o_slab_ekman, o_slab_gm,  &
107
         o_weakinv, o_dthmin, o_cldtau, &
108
         o_cldemi, o_pr_con_l, o_pr_con_i, &
109
         o_pr_lsc_l, o_pr_lsc_i, o_pr_bs, o_re, o_fl, &
110
         o_rh2m, &
111
         o_qsat2m, o_tpot, o_tpote, o_SWnetOR, &
112
         o_LWdownOR, o_snowl, &
113
         o_solldown, o_dtsvdfo, o_dtsvdft, &
114
         o_dtsvdfg, o_dtsvdfi, o_z0m, o_z0h,  o_od443aer, o_od550aer, &
115
         o_dryod550aer, o_od865aer, o_abs550aer, o_od550lt1aer, &
116
         o_sconcso4, o_sconcno3, o_sconcoa, o_sconcbc, &
117
         o_sconcss, o_sconcdust, o_concso4, o_concno3, &
118
         o_concoa, o_concbc, o_concss, o_concdust, &
119
         o_loadso4, o_loadoa, o_loadbc, o_loadss, &
120
         o_loaddust, o_loadno3, o_tausumaero, &
121
         o_drytausumaero, o_tausumaero_lw, &
122
         o_topswad, o_topswad0, o_solswad, o_solswad0, &
123
         o_toplwad, o_toplwad0, o_sollwad, o_sollwad0, &
124
         o_swtoaas_nat, o_swsrfas_nat, &
125
         o_swtoacs_nat, o_swtoaas_ant, &
126
         o_swsrfas_ant, o_swtoacs_ant, &
127
         o_swsrfcs_ant, o_swtoacf_nat, &
128
         o_swsrfcf_nat, o_swtoacf_ant, &
129
         o_swsrfcs_nat, o_swsrfcf_ant, &
130
         o_swtoacf_zero, o_swsrfcf_zero, &
131
         o_topswai, o_solswai, o_toplwai, o_sollwai, o_scdnc, &
132
         o_cldncl, o_reffclws, o_reffclwc, o_solbnd, o_stratomask,&
133
         o_cldnvi, o_lcc, o_lcc3d, o_lcc3dcon, &
134
         o_lcc3dstra, o_icc3dcon, o_icc3dstra, &
135
         o_cldicemxrat, o_cldwatmxrat, o_reffclwtop, o_ec550aer, &
136
         o_lwcon, o_iwcon, o_temp, o_theta, &
137
         o_ovapinit, o_ovap, o_oliq, o_ocond, o_geop,o_qbs, &
138
         o_vitu, o_vitv, o_vitw, o_pres, o_paprs, &
139
         o_zfull, o_zhalf, o_rneb, o_rnebjn, o_rnebcon, &
140
         o_rnebls, o_rneblsvol, o_rhum, o_rhl, o_rhi, o_ozone, o_ozone_light, &
141
         o_pfraclr, o_pfracld, &
142
         o_duphy, o_dtphy, o_dqphy, o_dqphy2d, o_dqlphy, o_dqlphy2d, &
143
         o_dqsphy, o_dqsphy2d, o_dqbsphy, o_dqbsphy2d, o_albe_srf, o_z0m_srf, o_z0h_srf, &
144
         o_ages_srf, o_snow_srf, o_alb1, o_alb2, o_tke, o_tke_dissip, &
145
         o_tke_max, o_kz, o_kz_max, o_clwcon, &
146
         o_dtdyn, o_dqdyn, o_dqdyn2d, o_dqldyn, o_dqldyn2d, &
147
         o_dqsdyn, o_dqsdyn2d, o_dqbsdyn, o_dqbsdyn2d, o_dudyn, o_dvdyn, &
148
         o_dtcon, o_tntc, o_ducon, o_dvcon, &
149
         o_dqcon, o_dqcon2d, o_tnhusc, o_tnhusc, o_dtlsc, &
150
         o_dtlschr, o_dqlsc, o_dqlsc2d, o_beta_prec, &
151
         o_dtlscth, o_dtlscst, o_dqlscth, o_dqlscth2d, &
152
         o_dqlscst, o_dqlscst2d, o_plulth, o_plulst, &
153
         o_ptconvth, o_lmaxth, o_dtvdf, &
154
         o_dtdis, o_dqvdf, o_dqvdf2d, o_dteva, o_dqeva, o_dqeva2d, &
155
         o_dqbsvdf, o_dtbs, o_dqbs, o_dqbsbs, &
156
         o_ptconv, o_ratqs, o_dtthe, &
157
         o_duthe, o_dvthe, o_ftime_th, &
158
         o_f_th, o_e_th, o_w_th, o_q_th, &
159
         o_a_th, o_cloudth_sth, o_cloudth_senv, &
160
         o_cloudth_sigmath, o_cloudth_sigmaenv, &
161
         o_d_th, o_f0_th, o_zmax_th, &
162
         o_dqthe, o_dqthe2d, o_dtajs, o_dqajs, o_dqajs2d, o_dtswr, &
163
         o_dtsw0, o_dtlwr, o_dtlw0, o_dtec, &
164
         o_duvdf, o_dvvdf, o_duoro, o_dvoro, &
165
         o_dtoro, o_dulif, o_dvlif, o_dtlif, &
166
         o_du_gwd_hines, o_dv_gwd_hines, o_dthin, o_dqch4, o_rsu, &
167
         o_du_gwd_front, o_dv_gwd_front, &
168
         o_east_gwstress, o_west_gwstress, &
169
         o_rsd, o_rlu, o_rld, o_rsucs, o_rsdcs, o_rsucsaf, o_rsdcsaf, &
170
         o_rlucs, o_rldcs, o_tnt, o_tntr, &
171
         o_tntscpbl, o_tnhus, o_tnhusscpbl, &
172
         o_evu, o_h2o, o_mcd, o_dmc, o_ref_liq, &
173
         o_ref_ice, o_rsut4co2, o_rlut4co2, &
174
         o_rsutcs4co2, o_rlutcs4co2, o_rsu4co2, &
175
         o_rlu4co2, o_rsucs4co2, o_rlucs4co2, &
176
         o_rsd4co2, o_rld4co2, o_rsdcs4co2, &
177
         o_rldcs4co2, o_tnondef, o_ta, o_zg, &
178
         o_hus, o_hur, o_ua, o_va, o_wap, &
179
         o_psbg, o_tro3, o_tro3_daylight, &
180
         o_uxv, o_vxq, o_vxT, o_wxq, o_vxphi, &
181
         o_wxT, o_uxu, o_vxv, o_TxT, o_trac, &
182
         o_dtr_vdf, o_dtr_the, o_dtr_con, &
183
         o_dtr_lessi_impa, o_dtr_lessi_nucl, &
184
         o_dtr_insc, o_dtr_bcscav, o_dtr_evapls, &
185
         o_dtr_ls, o_dtr_trsp, o_dtr_sscav, o_dtr_dry, &
186
         o_dtr_sat, o_dtr_uscav, o_trac_cum, o_du_gwd_rando, o_dv_gwd_rando, &
187
         o_ustr_gwd_hines,o_vstr_gwd_hines,o_ustr_gwd_rando,o_vstr_gwd_rando, &
188
         o_ustr_gwd_front,o_vstr_gwd_front, &
189
         o_sens_prec_liq_oce, o_sens_prec_liq_sic, &
190
         o_sens_prec_sol_oce, o_sens_prec_sol_sic, &
191
         o_lat_prec_liq_oce, o_lat_prec_liq_sic, &
192
         o_lat_prec_sol_oce, o_lat_prec_sol_sic, &
193
         o_sza, &
194
! Marine
195
         o_map_prop_hc, o_map_prop_hist, o_map_emis_hc, o_map_iwp_hc, &
196
         o_map_deltaz_hc, o_map_pcld_hc, o_map_tcld_hc, &
197
         o_map_emis_hist, o_map_iwp_hist, o_map_deltaz_hist, &
198
         o_map_rad_hist, &
199
         o_map_emis_Cb, o_map_pcld_Cb, o_map_tcld_Cb, &
200
         o_map_emis_ThCi, o_map_pcld_ThCi, o_map_tcld_ThCi, &
201
         o_map_emis_Anv, o_map_pcld_Anv, o_map_tcld_Anv, &
202
         o_map_ntot, o_map_hc,o_map_hist,o_map_Cb,o_map_ThCi,o_map_Anv, &
203
#ifdef ISO
204
! Isotopes
205
         o_xtprecip,o_xtplul,o_xtpluc,o_xtovap,o_xtoliq,o_xtcond, &
206
         o_xtevap,o_dxtdyn,o_dxtldyn,o_dxtcon,o_dxtlsc,o_dxteva, &
207
         o_dxtajs,o_dxtvdf,o_dxtthe, o_dxtch4, &
208
         o_dxtprod_nucl,o_dxtcosmo,o_dxtdecroiss, &
209
         o_xtevap_srf, &
210
#endif
211
! Tropopause
212
         o_alt_tropo, &
213
         o_p_tropopause, o_z_tropopause, o_t_tropopause,  &
214
         o_col_O3_strato, o_col_O3_tropo,                 &
215
!--aviation & supersaturation
216
         o_oclr, o_ocld, o_oss, o_ovc, o_rnebss, o_rnebclr, o_rnebseri, o_gammass, &
217
         o_N1_ss, o_N2_ss, o_qsatl, o_qsats, &
218
         o_drnebsub, o_drnebcon, o_drnebtur, o_drnebavi, o_flight_m, o_flight_h2o, &
219
         o_Tcontr, o_qcontr, o_qcontr2, o_fcontrN, o_fcontrP, &
220
!--interactive CO2
221
         o_flx_co2_ocean, o_flx_co2_ocean_cor, &
222
         o_flx_co2_land, o_flx_co2_land_cor, &
223
         o_flx_co2_ff, o_flx_co2_bb, &
224
         o_delta_sst, o_delta_sal, o_ds_ns, o_dt_ns, o_dter, o_dser, o_tkt, &
225
         o_tks, o_taur, o_sss, &
226
!FC
227
         o_zxfluxt,o_zxfluxq
228
229
#ifdef CPP_StratAer
230
    USE phys_output_ctrlout_mod, ONLY:  &
231
         o_budg_3D_nucl, o_budg_3D_cond_evap, o_budg_3D_ocs_to_so2, o_budg_3D_so2_to_h2so4, &
232
         o_budg_sed_part, o_R2SO4, o_OCS_lifetime, o_SO2_lifetime, &
233
         o_budg_3D_backgr_ocs, o_budg_3D_backgr_so2, &
234
         o_budg_dep_dry_ocs, o_budg_dep_wet_ocs, &
235
         o_budg_dep_dry_so2, o_budg_dep_wet_so2, &
236
         o_budg_dep_dry_h2so4, o_budg_dep_wet_h2so4, &
237
         o_budg_dep_dry_part, o_budg_dep_wet_part, &
238
         o_budg_emi_ocs, o_budg_emi_so2, o_budg_emi_h2so4, o_budg_emi_part, &
239
         o_budg_ocs_to_so2, o_budg_so2_to_h2so4, o_budg_h2so4_to_part, &
240
         o_surf_PM25_sulf, o_ext_strat_550, o_tau_strat_550, &
241
         o_vsed_aer, o_tau_strat_1020, o_ext_strat_1020, o_f_r_wet
242
#endif
243
244
    USE ice_sursat_mod, ONLY: flight_m, flight_h2o
245
246
    USE phys_output_ctrlout_mod, ONLY: o_heat_volc, o_cool_volc !NL
247
    USE phys_state_var_mod, ONLY: heat_volc, cool_volc !NL
248
249
    USE phys_state_var_mod, ONLY: pctsrf, rain_fall, snow_fall, bs_fall,&
250
         qsol, z0m, z0h, fevap, agesno, &
251
         nday_rain, ndayrain_mth, rain_con, snow_con, &
252
         topsw, toplw, toplw0, swup, swdn, solswfdiff, &
253
         topsw0, swupc0, swdnc0, swup0, swdn0, SWup200, SWup200clr, &
254
         SWdn200, SWdn200clr, LWup200, LWup200clr, &
255
         LWdn200, LWdn200clr, solsw, solsw0, sollw, &
256
         radsol, swradcorr, sollw0, sollwdown, sollw, gustiness, &
257
         sollwdownclr, lwdnc0, lwdn0, ftsol, ustar, u10m, &
258
         v10m, pbl_tke, wake_delta_pbl_TKE, &
259
         delta_tsurf, &
260
         wstar, cape, ema_pcb, ema_pct, &
261
         ema_cbmf, Mipsh, Ma, fm_therm, ale_bl, alp_bl, ale, &
262
         alp, cin, wake_pe, wake_dens, cv_gen, wake_s, wake_deltat, &
263
         wake_deltaq, ftd, fqd, ale_bl_trig, albsol1, &
264
         ale_wake, ale_bl_stat, &
265
         rnebcon, wo, falb1, albsol2, coefh, clwcon0, &
266
         ratqs, entr_therm, zqasc, detr_therm, f0, &
267
         lwup, lwdn, lwupc0, lwup0, coefm, &
268
         swupp, lwupp, swupc0p, swup0p, lwupc0p, lwup0p, swdnp, lwdnp, &
269
         swdnc0p, swdn0p, lwdnc0p, lwdn0p, tnondef, O3sumSTD, uvsumSTD, &
270
         vqsumSTD, vTsumSTD, O3daysumSTD, wqsumSTD, &
271
         vphisumSTD, wTsumSTD, u2sumSTD, v2sumSTD, &
272
         T2sumSTD, nlevSTD, du_gwd_rando, du_gwd_front, &
273
         ulevSTD, vlevSTD, wlevSTD, philevSTD, qlevSTD, tlevSTD, &
274
         rhlevSTD, O3STD, O3daySTD, uvSTD, vqSTD, vTSTD, wqSTD, vphiSTD, &
275
         wTSTD, u2STD, v2STD, T2STD, missing_val_nf90, delta_sal, ds_ns, &
276
#ifdef ISO
277
        xtrain_con, xtsnow_con, xtrain_fall, xtsnow_fall, fxtevap, &
278
#endif
279
         dt_ns, delta_sst, dter, dser
280
281
    USE phys_local_var_mod, ONLY: zxfluxlat, slp, ptstar, pt0, zxtsol, zt2m, &
282
         zn2mout, t2m_min_mon, t2m_max_mon, evap, &
283
         snowerosion, zxustartlic, zxrhoslic, &
284
         l_mixmin,l_mix, tke_dissip, &
285
         zu10m, zv10m, zq2m, zustar, zxqsurf, &
286
         rain_lsc, rain_num, snow_lsc, bils, sens, fder, &
287
         zxffonte, zxfqcalving, zxfqfonte, zxrunofflic, fluxu, &
288
         fluxv, zxsnow, qsnow, snowhgt, to_ice, &
289
         sissnow, runoff, albsol3_lic, evap_pot, &
290
         t2m, fluxt, fluxlat, fsollw, fsolsw, &
291
         wfbils, wfbilo, wfevap, wfrain, wfsnow, &
292
         cdragm, cdragh, cldl, cldm, &
293
         cldh, cldt, JrNt,   & ! only output names: cldljn,cldmjn,cldhjn,cldtjn
294
         cldq, flwp, fiwp, ue, ve, uq, vq, &
295
         uwat, vwat, &
296
         rneb_seri, d_rneb_dyn, &
297
         plcl, plfc, wbeff, convoccur, upwd, dnwd, dnwd0, prw, prlw, prsw,prbsw, &
298
         s_pblh, s_pblt, s_lcl, s_therm, uwriteSTD, &
299
         vwriteSTD, wwriteSTD, phiwriteSTD, qwriteSTD, &
300
         twriteSTD, alp_wake, &
301
!!         dtvdf_x    ,dtvdf_w    ,dqvdf_x    ,dqvdf_w    , &
302
         d_t_vdf_x    ,d_t_vdf_w    ,d_q_vdf_x    ,d_q_vdf_w    , &
303
         sens_x     ,sens_w     ,zxfluxlat_x,zxfluxlat_w, &
304
         cdragh_x   ,cdragh_w   ,cdragm_x   ,cdragm_w   , &
305
         kh         ,kh_x       ,kh_w       , &
306
         wake_h, &
307
         wake_omg, d_t_wake, d_q_wake, Vprecip, qtaa, Clw, &
308
         wdtrainA, wdtrainS, wdtrainM, n2, s2, proba_notrig, &
309
         random_notrig, &
310
         qclr, qcld, qss, qvc, rnebclr, rnebss, gamma_ss, &
311
         N1_ss, N2_ss, zqsatl, zqsats, &
312
         Tcontr, qcontr, qcontr2, fcontrN, fcontrP, &
313
         drneb_sub, drneb_con, drneb_tur, drneb_avi, &
314
         alp_bl_det, alp_bl_fluct_m, alp_bl_conv, &
315
         alp_bl_stat, alp_bl_fluct_tke, slab_wfbils, &
316
         weak_inversion, dthmin, cldtau, cldemi, &
317
         pmflxr, pmflxs, prfl, psfl,bsfl, re, fl, rh2m, &
318
         qsat2m, tpote, tpot, d_ts, od443aer, od550aer, dryod550aer, &
319
         od865aer, abs550aer, od550lt1aer, sconcso4, sconcno3, &
320
         sconcoa, sconcbc, sconcss, sconcdust, concso4, concno3, &
321
         concoa, concbc, concss, concdust, loadso4, &
322
         loadoa, loadbc, loadss, loaddust, loadno3, tausum_aero, drytausum_aero, &
323
         topswad_aero, topswad0_aero, solswad_aero, &
324
         solswad0_aero, topsw_aero, solsw_aero, &
325
         topsw0_aero, solsw0_aero, topswcf_aero, &
326
         solswcf_aero, topswai_aero, solswai_aero, &
327
         toplwad_aero, toplwad0_aero, sollwad_aero, &
328
         sollwad0_aero, toplwai_aero, sollwai_aero, &
329
         scdnc, cldncl, reffclws, reffclwc, cldnvi, stratomask,&
330
         lcc, lcc3d, lcc3dcon, lcc3dstra, &
331
         icc3dcon, icc3dstra, zfice, reffclwtop, &
332
         ec550aer, flwc, fiwc, t_seri, theta, q_seri, &
333
         ql_seri, qs_seri, qbs_seri, tr_seri, qbs_seri,&
334
         zphi, u_seri, v_seri, omega, cldfra, &
335
         rneb, rnebjn, rneblsvol, zx_rh, zx_rhl, zx_rhi, &
336
         pfraclr, pfracld, d_t_dyn,  &
337
         d_q_dyn,  d_ql_dyn, d_qs_dyn, d_qbs_dyn,  &
338
         d_q_dyn2d,  d_ql_dyn2d, d_qs_dyn2d, d_qbs_dyn2d, &
339
         d_u_dyn, d_v_dyn, d_t_con, d_t_ajsb, d_t_ajs, &
340
         d_u_ajs, d_v_ajs, &
341
         d_u_con, d_v_con, d_q_con, d_q_ajs, d_t_lsc, &
342
         d_t_lwr,d_t_lw0,d_t_swr,d_t_sw0, &
343
         d_t_eva, d_q_lsc, beta_prec, d_t_lscth, &
344
         d_t_lscst, d_q_lscth, d_q_lscst, plul_th, &
345
         plul_st, d_t_vdf, d_t_diss, d_q_vdf, d_q_eva, &
346
         d_t_bs, d_q_bs, d_qbs_bs, d_qbs_vdf, &
347
         zw2, fraca, zmax_th, d_q_ajsb, d_t_ec, d_u_vdf, &
348
         d_v_vdf, d_u_oro, d_v_oro, d_t_oro, d_u_lif, &
349
         d_v_lif, d_t_lif, du_gwd_hines, dv_gwd_hines, d_t_hin, &
350
         dv_gwd_rando, dv_gwd_front, &
351
         east_gwstress, west_gwstress, &
352
         d_q_ch4, pmfd, pmfu, ref_liq, ref_ice, rhwriteSTD, &
353
#ifdef ISO
354
        xtrain_lsc, xtsnow_lsc, xt_seri, xtl_seri,xts_seri,xtevap, &
355
        d_xt_dyn,d_xtl_dyn,d_xt_con,d_xt_vdf,d_xt_ajsb, &
356
        d_xt_lsc,d_xt_eva,d_xt_ch4, &
357
        d_xt_ajs, d_xt_ajsb, &
358
        d_xt_prod_nucl,d_xt_cosmo,d_xt_decroiss, &
359
#endif
360
         ep, epmax_diag, &  ! epmax_cape
361
         p_tropopause, t_tropopause, z_tropopause, &
362
         zxfluxt,zxfluxq
363
!FC
364
365
#ifdef CPP_StratAer
366
    USE phys_local_var_mod, ONLY:  &
367
         budg_3D_nucl, budg_3D_cond_evap, budg_3D_ocs_to_so2, budg_3D_so2_to_h2so4, &
368
         budg_sed_part, R2SO4, OCS_lifetime, SO2_lifetime, &
369
         budg_3D_backgr_ocs, budg_3D_backgr_so2, &
370
         budg_dep_dry_ocs, budg_dep_wet_ocs, &
371
         budg_dep_dry_so2, budg_dep_wet_so2, &
372
         budg_dep_dry_h2so4, budg_dep_wet_h2so4, &
373
         budg_dep_dry_part, budg_dep_wet_part, &
374
         budg_emi_ocs, budg_emi_so2, budg_emi_h2so4, budg_emi_part, &
375
         budg_ocs_to_so2, budg_so2_to_h2so4, budg_h2so4_to_part, &
376
         surf_PM25_sulf, tau_strat_550, tausum_strat, &
377
         vsed_aer, tau_strat_1020, f_r_wet
378
#endif
379
380
    USE carbon_cycle_mod, ONLY: fco2_ff, fco2_bb, fco2_land, fco2_ocean
381
    USE carbon_cycle_mod, ONLY: fco2_ocean_cor, fco2_land_cor
382
383
    USE phys_output_var_mod, ONLY: vars_defined, snow_o, zfra_o, bils_diss, &
384
         bils_ec,bils_ech, bils_tke, bils_kinetic, bils_latent, bils_enthalp, &
385
         itau_con, nfiles, clef_files, nid_files, dryaod_diag, &
386
         zustr_gwd_hines, zvstr_gwd_hines,zustr_gwd_rando, zvstr_gwd_rando, &
387
         zustr_gwd_front, zvstr_gwd_front, sza_o,    &
388
         sens_prec_liq_o, sens_prec_sol_o, lat_prec_liq_o, lat_prec_sol_o, &
389
         cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv, &
390
! Marine
391
         map_prop_hc, map_prop_hist, &
392
         map_emis_hc,map_iwp_hc,map_deltaz_hc,&
393
         map_pcld_hc,map_tcld_hc,&
394
         map_emis_hist,map_iwp_hist,map_deltaz_hist,&
395
         map_rad_hist,&
396
         map_ntot,map_hc,map_hist,&
397
         map_Cb,map_ThCi,map_Anv,&
398
         map_emis_Cb,map_pcld_Cb,map_tcld_Cb,&
399
         map_emis_ThCi,map_pcld_ThCi,map_tcld_ThCi,&
400
         map_emis_Anv,map_pcld_Anv,map_tcld_Anv, &
401
         alt_tropo, &
402
!Ionela
403
         ok_4xCO2atm, tkt, tks, taur, sss
404
405
    USE ocean_slab_mod, ONLY: nslay, tslab, slab_bilg, tice, seaice, &
406
        slab_ekman,slab_hdiff,slab_gm,dt_ekman, dt_hdiff, dt_gm, dt_qflux
407
    USE pbl_surface_mod, ONLY: snow
408
    USE indice_sol_mod, ONLY: nbsrf
409
#ifdef ISO
410
    USE isotopes_mod, ONLY: iso_HTO
411
#endif
412
    USE geometry_mod, ONLY: cell_area, latitude_deg, longitude_deg
413
    USE surface_data, ONLY: type_ocean, version_ocean, ok_veget, landice_opt
414
    USE aero_mod, ONLY: naero_tot, id_STRAT_phy
415
    USE ioipsl, ONLY: histend, histsync
416
    USE iophy, ONLY: set_itau_iophy, histwrite_phy
417
    USE netcdf, ONLY: nf90_fill_real
418
    USE print_control_mod, ONLY: prt_level,lunout
419
420
421
#ifdef CPP_XIOS
422
    ! ug Pour les sorties XIOS
423
    USE xios
424
    USE wxios, ONLY: wxios_closedef, missing_val, wxios_set_context
425
#endif
426
    USE phys_cal_mod, ONLY : mth_len
427
428
#ifdef CPP_RRTM
429
    USE YOESW, ONLY : RSUN
430
#endif
431
    USE tracinca_mod, ONLY: config_inca
432
    use config_ocean_skin_m, only: activate_ocean_skin
433
434
    USE vertical_layers_mod, ONLY: presnivs
435
436
    IMPLICIT NONE
437
438
    INCLUDE "clesphys.h"
439
    INCLUDE "alpale.h"
440
    INCLUDE "compbl.h"
441
    INCLUDE "YOMCST.h"
442
443
    ! Input
444
    INTEGER :: itap, ivap, iliq, isol, ibs, read_climoz
445
    INTEGER, DIMENSION(klon) :: lmax_th
446
    LOGICAL :: aerosol_couple, ok_sync
447
    LOGICAL :: ok_ade, ok_aie, ok_volcan
448
    LOGICAL, DIMENSION(klon, klev) :: ptconv, ptconvth
449
    REAL :: pdtphys
450
    CHARACTER (LEN=4), DIMENSION(nlevSTD) :: clevSTD
451
578
    REAL, DIMENSION(klon,nlevSTD) :: zx_tmp_fi3d_STD
452
    REAL, DIMENSION(klon) :: pphis
453
    REAL, DIMENSION(klon, klev) :: pplay, d_u, d_t
454
    REAL, DIMENSION(klon, klev+1) :: paprs
455
    REAL, DIMENSION(klon,klev,nqtot) :: qx, d_qx
456
    REAL, DIMENSION(klon, klev) :: zmasse
457
    INTEGER :: flag_aerosol_strat
458
    INTEGER :: flag_aerosol
459
    LOGICAL :: ok_cdnc
460
    REAL, DIMENSION(3) :: freq_moyNMC
461
462
    ! Local
463
    INTEGER :: itau_w
464
    INTEGER :: i, iinit, iinitend=1, iff, iq, nsrf, k, ll, naero
465
578
    REAL, DIMENSION (klon) :: zx_tmp_fi2d, zpt_conv2d, wind100m
466
578
    REAL, DIMENSION (klon,klev) :: zx_tmp_fi3d, zpt_conv
467
578
    REAL, DIMENSION (klon,klev+1) :: zx_tmp_fi3d1
468
    REAL, DIMENSION (klon,NSW) :: zx_tmp_fi3dsp
469
    CHARACTER (LEN=4)              :: bb2
470
578
    INTEGER, DIMENSION(nbp_lon*nbp_lat)  :: ndex2d
471
578
    INTEGER, DIMENSION(nbp_lon*nbp_lat*klev) :: ndex3d
472
    REAL, PARAMETER :: dobson_u = 2.1415e-05 ! Dobson unit, in kg m-2
473
!   REAL, PARAMETER :: missing_val=nf90_fill_real
474
578
    REAL, DIMENSION(klev+1,2) :: Ahyb_bounds, Bhyb_bounds
475
578
    REAL, DIMENSION(klev,2) :: Ahyb_mid_bounds, Bhyb_mid_bounds
476
    INTEGER :: ilev
477
    INTEGER, SAVE :: kmax_100m
478
!$OMP THREADPRIVATE(kmax_100m)
479
    REAL :: x
480
#ifndef CPP_XIOS
481
    REAL :: missing_val
482
#endif
483
    REAL, PARAMETER :: un_jour=86400.
484
    INTEGER :: ISW, itr, ixt, it
485
    CHARACTER*1 ch1
486
    CHARACTER(LEN=maxlen) :: varname, dn
487
488
#ifdef CPP_XIOS
489
    TYPE(xios_fieldgroup) :: group_handle
490
    TYPE(xios_field) :: child
491
#endif
492
#ifdef CPP_StratAer
493
    LOGICAL, PARAMETER :: debug_strataer=.FALSE.
494
    CHARACTER(LEN=maxlen) :: unt
495
#endif
496
578
    REAL,DIMENSION(klon,klev) :: z, dz
497
578
    REAL,DIMENSION(klon)      :: zrho, zt
498
499
    ! On calcul le nouveau tau:
500
289
    itau_w = itau_phy + itap
501
    ! On le donne à iophy pour que les histwrite y aient accès:
502
289
    CALL set_itau_iophy(itau_w)
503
504
 !   IF (.NOT.vars_defined) THEN
505
289
       iinitend = 1
506
 !   ELSE
507
 !      iinitend = 1
508
 !   ENDIF
509
510
#ifdef CPP_XIOS
511
    CALL wxios_set_context
512
#endif
513
514
#ifndef CPP_XIOS
515
    missing_val=missing_val_nf90
516
#endif
517
518
289
    IF (.NOT.vars_defined) THEN
519
1
      kmax_100m=1
520
39
      DO k=1, klev-1
521
39
        IF (presnivs(k).GT.0.97*101325.) kmax_100m = k !--finding out max level for 100 m with a good margin
522
      ENDDO
523
    ENDIF
524
525
289
    Ahyb_bounds(1,1) = 0.
526
289
    Ahyb_bounds(1,2) = aps(1)
527
289
    Bhyb_bounds(1,1) = 1.
528
289
    Bhyb_bounds(1,2) = bps(1)
529
11271
    DO ilev=2,klev
530
10982
      Ahyb_bounds(ilev,1) = aps(ilev-1)
531
10982
      Ahyb_bounds(ilev,2) = aps(ilev)
532
10982
      Bhyb_bounds(ilev,1) = bps(ilev-1)
533
11271
      Bhyb_bounds(ilev,2) = bps(ilev)
534
    ENDDO
535
289
     Ahyb_bounds(klev+1,1) = aps(klev)
536
289
     Ahyb_bounds(klev+1,2) = 0.
537
289
     Bhyb_bounds(klev+1,1) = bps(klev)
538
289
     Bhyb_bounds(klev+1,2) = 0.
539
540
11560
    DO ilev=1, klev
541
11271
      Ahyb_mid_bounds(ilev,1) = ap(ilev)
542
11271
      Ahyb_mid_bounds(ilev,2) = ap(ilev+1)
543
11271
      Bhyb_mid_bounds(ilev,1) = bp(ilev)
544
11560
      Bhyb_mid_bounds(ilev,2) = bp(ilev+1)
545
    END DO
546
547
#ifdef CPP_XIOS
548
#ifdef CPP_StratAer
549
!$OMP MASTER
550
   IF (.NOT.vars_defined) THEN
551
          !On ajoute les variables 3D traceurs par l interface fortran
552
          CALL xios_get_handle("fields_strataer_trac_3D", group_handle)
553
          ! On boucle sur les traceurs pour les ajouter au groupe puis fixer les attributs
554
          DO iq = 1, nqtot
555
            IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE
556
            dn = 'd'//TRIM(tracers(iq)%name)//'_'
557
            WRITE (lunout,*) 'XIOS var=', nqo, iq, nqtot, tracers(iq)%name
558
559
            unt = "kg kg-1"
560
            varname=trim(tracers(iq)%name)
561
            CALL xios_add_child(group_handle, child, varname)
562
            CALL xios_set_attr(child, name=varname, unit=unt)
563
564
            unt = "kg kg-1 s-1"
565
            varname=TRIM(dn)//'vdf'
566
            CALL xios_add_child(group_handle, child, varname)
567
            CALL xios_set_attr(child, name=varname, unit=unt)
568
            varname=TRIM(dn)//'the'
569
            CALL xios_add_child(group_handle, child, varname)
570
            CALL xios_set_attr(child, name=varname, unit=unt)
571
            varname=TRIM(dn)//'con'
572
            CALL xios_add_child(group_handle, child, varname)
573
            CALL xios_set_attr(child, name=varname, unit=unt)
574
            varname=TRIM(dn)//'lessi_impa'
575
            CALL xios_add_child(group_handle, child, varname)
576
            CALL xios_set_attr(child, name=varname, unit=unt)
577
            varname=TRIM(dn)//'lessi_nucl'
578
            CALL xios_add_child(group_handle, child, varname)
579
            CALL xios_set_attr(child, name=varname, unit=unt)
580
            varname=TRIM(dn)//'insc'
581
            CALL xios_add_child(group_handle, child, varname)
582
            CALL xios_set_attr(child, name=varname, unit=unt)
583
            varname=TRIM(dn)//'bcscav'
584
            CALL xios_add_child(group_handle, child, varname)
585
            CALL xios_set_attr(child, name=varname, unit=unt)
586
            varname=TRIM(dn)//'evapls'
587
            CALL xios_add_child(group_handle, child, varname)
588
            CALL xios_set_attr(child, name=varname, unit=unt)
589
            varname=TRIM(dn)//'ls'
590
            CALL xios_add_child(group_handle, child, varname)
591
            CALL xios_set_attr(child, name=varname, unit=unt)
592
            varname=TRIM(dn)//'trsp'
593
            CALL xios_add_child(group_handle, child, varname)
594
            CALL xios_set_attr(child, name=varname, unit=unt)
595
            varname=TRIM(dn)//'sscav'
596
            CALL xios_add_child(group_handle, child, varname)
597
            CALL xios_set_attr(child, name=varname, unit=unt)
598
            varname=TRIM(dn)//'sat'
599
            CALL xios_add_child(group_handle, child, varname)
600
            CALL xios_set_attr(child, name=varname, unit=unt)
601
            varname=TRIM(dn)//'uscav'
602
            CALL xios_add_child(group_handle, child, varname)
603
            CALL xios_set_attr(child, name=varname, unit=unt)
604
          END DO
605
          !On ajoute les variables 2D traceurs par l interface fortran
606
          CALL xios_get_handle("fields_strataer_trac_2D", group_handle)
607
          ! On boucle sur les traceurs pour les ajouter au groupe puis fixer les attributs
608
          DO iq = 1, nqtot
609
            IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE
610
611
            unt = "kg m-2"
612
            varname='cum'//trim(tracers(iq)%name)
613
            WRITE (lunout,*) 'XIOS var=', iq, nqtot, varname
614
            CALL xios_add_child(group_handle, child, varname)
615
            CALL xios_set_attr(child, name=varname, unit=unt)
616
617
            unt = "kg m-2 s-1"
618
            varname='cumd'//trim(tracers(iq)%name)//'_dry'
619
            CALL xios_add_child(group_handle, child, varname)
620
            CALL xios_set_attr(child, name=varname, unit=unt)
621
          ENDDO
622
    ENDIF
623
!$OMP END MASTER
624
#endif
625
#endif
626
627
    ! ug la boucle qui suit ne sert qu'une fois, pour l'initialisation, sinon il n'y a toujours qu'un seul passage:
628
578
    DO iinit=1, iinitend
629
!      print *,'IFF iinit=', iinit, iinitend
630
#ifdef CPP_XIOS
631
       !$OMP MASTER
632
       IF (vars_defined) THEN
633
          IF (prt_level >= 10) then
634
             write(lunout,*)"phys_output_write: call xios_update_calendar, itau_w=",itau_w
635
          ENDIF
636
!          CALL xios_update_calendar(itau_w)
637
          CALL xios_update_calendar(itap)
638
       ENDIF
639
       !$OMP END MASTER
640
       !$OMP BARRIER
641
#endif
642
       ! On procède à l'écriture ou à la définition des nombreuses variables:
643
!!! Champs 1D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
644
289
       CALL histwrite_phy(o_phis, pphis)
645
646
287555
       zx_tmp_fi2d = cell_area
647
289
       IF (is_north_pole_phy) then
648
289
         zx_tmp_fi2d(1) = cell_area(1)/nbp_lon
649
       ENDIF
650
289
       IF (is_south_pole_phy) then
651
289
         zx_tmp_fi2d(klon) = cell_area(klon)/nbp_lon
652
       ENDIf
653
289
       CALL histwrite_phy(o_aire, zx_tmp_fi2d)
654
655
289
       IF (vars_defined) THEN
656
286560
          DO i=1, klon
657
286560
             zx_tmp_fi2d(i)=pctsrf(i,is_ter)+pctsrf(i,is_lic)
658
          ENDDO
659
       ENDIF
660
661
289
       CALL histwrite_phy(o_contfracATM, zx_tmp_fi2d)
662
289
       CALL histwrite_phy(o_contfracOR, pctsrf(:,is_ter))
663
!
664
#ifdef CPP_XIOS
665
       CALL histwrite_phy("R_ecc",R_ecc)
666
       CALL histwrite_phy("R_peri",R_peri)
667
       CALL histwrite_phy("R_incl",R_incl)
668
       CALL histwrite_phy("solaire",solaire)
669
       CALL histwrite_phy(o_Ahyb, ap)
670
       CALL histwrite_phy(o_Bhyb, bp)
671
       CALL histwrite_phy(o_Ahyb_bounds, Ahyb_bounds)
672
       CALL histwrite_phy(o_Bhyb_bounds, Bhyb_bounds)
673
       CALL histwrite_phy(o_Ahyb_mid, aps)
674
       CALL histwrite_phy(o_Bhyb_mid, bps)
675
       CALL histwrite_phy(o_Ahyb_mid_bounds, Ahyb_mid_bounds)
676
       CALL histwrite_phy(o_Bhyb_mid_bounds, Bhyb_mid_bounds)
677
       CALL histwrite_phy(o_longitude, longitude_deg)
678
       CALL histwrite_phy(o_latitude, latitude_deg)
679
!
680
#ifdef CPP_RRTM
681
      IF (iflag_rrtm.EQ.1) THEN
682
        DO ISW=1, NSW
683
          WRITE(ch1,'(i1)') ISW
684
!         zx_tmp_0d=RSUN(ISW)
685
!         CALL histwrite_phy("rsun"//ch1,zx_tmp_0d)
686
          CALL histwrite_phy("rsun"//ch1,RSUN(ISW))
687
        ENDDO
688
      ENDIF
689
#endif
690
!
691
       CALL histwrite_phy("co2_ppm",co2_ppm)
692
       CALL histwrite_phy("CH4_ppb",CH4_ppb)
693
       CALL histwrite_phy("N2O_ppb",N2O_ppb)
694
       CALL histwrite_phy("CFC11_ppt",CFC11_ppt)
695
       CALL histwrite_phy("CFC12_ppt",CFC12_ppt)
696
!
697
#endif
698
699
!!! Champs 2D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
700
! Simulateur AIRS
701
289
     IF (ok_airs) then
702
      CALL histwrite_phy(o_alt_tropo,alt_tropo)
703
704
      CALL histwrite_phy(o_map_prop_hc,map_prop_hc)
705
      CALL histwrite_phy(o_map_prop_hist,map_prop_hist)
706
707
      CALL histwrite_phy(o_map_emis_hc,map_emis_hc)
708
      CALL histwrite_phy(o_map_iwp_hc,map_iwp_hc)
709
      CALL histwrite_phy(o_map_deltaz_hc,map_deltaz_hc)
710
      CALL histwrite_phy(o_map_pcld_hc,map_pcld_hc)
711
      CALL histwrite_phy(o_map_tcld_hc,map_tcld_hc)
712
713
      CALL histwrite_phy(o_map_emis_hist,map_emis_hist)
714
      CALL histwrite_phy(o_map_iwp_hist,map_iwp_hist)
715
      CALL histwrite_phy(o_map_deltaz_hist,map_deltaz_hist)
716
717
      CALL histwrite_phy(o_map_ntot,map_ntot)
718
      CALL histwrite_phy(o_map_hc,map_hc)
719
      CALL histwrite_phy(o_map_hist,map_hist)
720
721
      CALL histwrite_phy(o_map_Cb,map_Cb)
722
      CALL histwrite_phy(o_map_ThCi,map_ThCi)
723
      CALL histwrite_phy(o_map_Anv,map_Anv)
724
725
      CALL histwrite_phy(o_map_emis_Cb,map_emis_Cb)
726
      CALL histwrite_phy(o_map_pcld_Cb,map_pcld_Cb)
727
      CALL histwrite_phy(o_map_tcld_Cb,map_tcld_Cb)
728
729
      CALL histwrite_phy(o_map_emis_ThCi,map_emis_ThCi)
730
      CALL histwrite_phy(o_map_pcld_ThCi,map_pcld_ThCi)
731
      CALL histwrite_phy(o_map_tcld_ThCi,map_tcld_ThCi)
732
733
      CALL histwrite_phy(o_map_emis_Anv,map_emis_Anv)
734
      CALL histwrite_phy(o_map_pcld_Anv,map_pcld_Anv)
735
      CALL histwrite_phy(o_map_tcld_Anv,map_tcld_Anv)
736
     ENDIF
737
738
289
       CALL histwrite_phy(o_sza, sza_o)
739
289
       CALL histwrite_phy(o_flat, zxfluxlat)
740
289
       CALL histwrite_phy(o_ptstar, ptstar)
741
289
       CALL histwrite_phy(o_pt0, pt0)
742
289
       CALL histwrite_phy(o_slp, slp)
743
289
       CALL histwrite_phy(o_tsol, zxtsol)
744
289
       CALL histwrite_phy(o_t2m, zt2m)
745
289
       CALL histwrite_phy(o_t2m_min, zt2m)
746
289
       CALL histwrite_phy(o_t2m_max, zt2m)
747
289
       CALL histwrite_phy(o_t2m_max_mon, t2m_max_mon)
748
289
       CALL histwrite_phy(o_t2m_min_mon, t2m_min_mon)
749
750
289
       IF (vars_defined) THEN
751
286560
          DO i=1, klon
752
286560
             zx_tmp_fi2d(i)=real(zn2mout(i,1))
753
          ENDDO
754
       ENDIF
755
289
       CALL histwrite_phy(o_nt2mout, zx_tmp_fi2d)
756
757
289
       IF (vars_defined) THEN
758
286560
          DO i=1, klon
759
286560
             zx_tmp_fi2d(i)=real(zn2mout(i,2))
760
          ENDDO
761
       ENDIF
762
289
       CALL histwrite_phy(o_nt2moutfg, zx_tmp_fi2d)
763
764
289
       IF (vars_defined) THEN
765
286560
          DO i=1, klon
766
286560
             zx_tmp_fi2d(i)=real(zn2mout(i,3))
767
          ENDDO
768
       ENDIF
769
289
       CALL histwrite_phy(o_nq2mout, zx_tmp_fi2d)
770
771
289
       IF (vars_defined) THEN
772
286560
          DO i=1, klon
773
286560
             zx_tmp_fi2d(i)=real(zn2mout(i,4))
774
          ENDDO
775
       ENDIF
776
289
       CALL histwrite_phy(o_nq2moutfg, zx_tmp_fi2d)
777
778
289
       IF (vars_defined) THEN
779
286560
          DO i=1, klon
780
286560
             zx_tmp_fi2d(i)=real(zn2mout(i,5))
781
          ENDDO
782
       ENDIF
783
289
       CALL histwrite_phy(o_nu2mout, zx_tmp_fi2d)
784
785
289
       IF (vars_defined) THEN
786
286560
          DO i=1, klon
787
286560
             zx_tmp_fi2d(i)=real(zn2mout(i,6))
788
          ENDDO
789
       ENDIF
790
289
       CALL histwrite_phy(o_nu2moutfg, zx_tmp_fi2d)
791
792
289
       IF (vars_defined) THEN
793
286560
          DO i=1, klon
794
286560
             zx_tmp_fi2d(i)=SQRT(zu10m(i)*zu10m(i)+zv10m(i)*zv10m(i))
795
          ENDDO
796
       ENDIF
797
289
       CALL histwrite_phy(o_wind10m, zx_tmp_fi2d)
798
799
289
       IF (vars_defined) THEN
800
286560
          DO i=1, klon
801
286560
             zx_tmp_fi2d(i)=SQRT(zu10m(i)*zu10m(i)+zv10m(i)*zv10m(i))
802
          ENDDO
803
       ENDIF
804
289
       CALL histwrite_phy(o_wind10max, zx_tmp_fi2d)
805
806
289
       CALL histwrite_phy(o_gusts, gustiness)
807
808
289
       IF (vars_defined) THEN
809
1152
          DO k = 1, kmax_100m                                      !--we could stop much lower
810
859680
            zrho(:) = pplay(:,k)/t_seri(:,k)/RD                    ! air density in kg/m3
811
859680
            dz(:,k) = (paprs(:,k)-paprs(:,k+1))/zrho(:)/RG         ! layer thickness in m
812
1152
            IF (k==1) THEN
813
286560
              z(:,1) = (paprs(:,1)-pplay(:,1))/zrho(:)/RG          ! altitude middle of first layer in m
814
286560
              zt(:)  = dz(:,1)                                     ! altitude top of first layer in m
815
            ELSE
816
573120
              z(:,k) = zt(:) + (paprs(:,k)-pplay(:,k))/zrho(:)/RG  ! altitude middle of layer k in m
817
573120
              zt(:)  = zt(:) + dz(:,k)                             ! altitude top of layer k in m
818
            ENDIF
819
          ENDDO
820
286560
          wind100m(:)=missing_val
821
864
          DO k=1, kmax_100m-1                                      !--we could stop much lower
822
573408
            DO i=1,klon
823

573120
              IF (z(i,k).LT.100..AND.z(i,k+1).GE.100.) THEN
824
                wind100m(i)=SQRT( (u_seri(i,k)+(100.-z(i,k))/(z(i,k+1)-z(i,k))*(u_seri(i,k+1)-u_seri(i,k)))**2.0 + &
825
286272
                                  (v_seri(i,k)+(100.-z(i,k))/(z(i,k+1)-z(i,k))*(v_seri(i,k+1)-v_seri(i,k)))**2.0 )
826
              ENDIF
827
            ENDDO
828
          ENDDO
829
       ENDIF
830
289
       CALL histwrite_phy(o_wind100m, wind100m)
831
832
289
       IF (vars_defined) THEN
833
         !--polynomial fit for 14,Vestas,1074,V136/3450 kW windmill - Olivier
834
286560
         DO i=1,klon
835

286560
           IF (pctsrf(i,is_ter).GT.0.05 .AND. wind100m(i).NE.missing_val) THEN
836
             x=wind100m(i)
837

112032
             IF (x.LE.3.0 .OR. x.GE.22.5) THEN
838
32958
               zx_tmp_fi2d(i)=0.0
839
79074
             ELSE IF (x.GE.10.0) THEN
840
1363
               zx_tmp_fi2d(i)=1.0
841
             ELSE
842
               zx_tmp_fi2d(i)= 10.73 + x*(-14.69 + x*(8.339 + x*(-2.59 + x*(0.4893 + x*(-0.05898 + x*(0.004627 + &
843
77711
                               x*(-0.0002352 + x*(7.478e-06 + x*(-1.351e-07 + x*(1.059e-09))))))))))
844
77711
               zx_tmp_fi2d(i)=MIN(MAX(zx_tmp_fi2d(i),0.0),1.0)
845
             ENDIF
846
           ELSE
847
174240
             zx_tmp_fi2d(i)=missing_val
848
           ENDIF
849
         ENDDO
850
       ENDIF
851
289
       CALL histwrite_phy(o_loadfactor_wind_onshore, zx_tmp_fi2d)
852
853
289
       IF (vars_defined) THEN
854
         !--polynomial fit for 14,Vestas,867,V164/8000 kW - Olivier
855
286560
         DO i=1,klon
856

286560
           IF (pctsrf(i,is_oce).GT.0.05 .AND. wind100m(i).NE.missing_val) THEN
857
             x=wind100m(i)
858

195264
             IF (x.LE.3.0 .OR. x.GE.25.5) THEN
859
41858
               zx_tmp_fi2d(i)=0.0
860
153406
             ELSE IF (x.GE.12.5) THEN
861
2100
               zx_tmp_fi2d(i)=1.0
862
             ELSE
863
               zx_tmp_fi2d(i)= 20.59 + x*(-22.39 + x*(10.25 + x*(-2.601 + x*(0.4065 + x*(-0.04099 + x*(0.002716 + &
864
151306
                               x*(-0.0001175 + x*(3.195e-06 + x*(-4.959e-08 + x*(3.352e-10))))))))))
865
151306
               zx_tmp_fi2d(i)=MIN(MAX(zx_tmp_fi2d(i),0.0),1.0)
866
             ENDIF
867
           ELSE
868
91008
             zx_tmp_fi2d(i)=missing_val
869
           ENDIF
870
         ENDDO
871
       ENDIF
872
289
       CALL histwrite_phy(o_loadfactor_wind_offshore, zx_tmp_fi2d)
873
874
289
       IF (vars_defined) THEN
875
286560
          DO i = 1, klon
876
286560
             zx_tmp_fi2d(i) = pctsrf(i,is_sic)
877
          ENDDO
878
       ENDIF
879
289
       CALL histwrite_phy(o_sicf, zx_tmp_fi2d)
880
289
       CALL histwrite_phy(o_q2m, zq2m)
881

286561
       IF (vars_defined) zx_tmp_fi2d = zustar
882
289
       CALL histwrite_phy(o_ustar, zx_tmp_fi2d)
883
289
       CALL histwrite_phy(o_u10m, zu10m)
884
289
       CALL histwrite_phy(o_v10m, zv10m)
885
886
289
       IF (vars_defined) THEN
887
286560
          DO i = 1, klon
888
286560
             zx_tmp_fi2d(i) = paprs(i,1)
889
          ENDDO
890
       ENDIF
891
289
       CALL histwrite_phy(o_psol, zx_tmp_fi2d)
892
289
       CALL histwrite_phy(o_mass, zmasse)
893
289
       CALL histwrite_phy(o_qsurf, zxqsurf)
894
895
289
       IF (.NOT. ok_veget) THEN
896
289
          CALL histwrite_phy(o_qsol, qsol)
897
       ENDIF
898
899
289
       IF (vars_defined) THEN
900
288
          IF (ok_bs) THEN
901
             DO i = 1, klon
902
             zx_tmp_fi2d(i) = rain_fall(i) + snow_fall(i) + bs_fall(i)
903
             ENDDO
904
          ELSE
905
286560
             DO i = 1, klon
906
286560
             zx_tmp_fi2d(i) = rain_fall(i) + snow_fall(i)
907
             ENDDO
908
          ENDIF
909
       ENDIF
910
911
289
       CALL histwrite_phy(o_precip, zx_tmp_fi2d)
912
289
       CALL histwrite_phy(o_rain_fall, rain_fall)
913
289
       CALL histwrite_phy(o_ndayrain, ndayrain_mth)
914
915
       ! epmax_cape:
916
!       CALL histwrite_phy(o_epmax_diag, epmax_diag)
917
289
       CALL histwrite_phy(o_ep, ep)
918
919
289
       IF (vars_defined) THEN
920
286560
          DO i = 1, klon
921
286560
             zx_tmp_fi2d(i) = rain_lsc(i) + snow_lsc(i)
922
          ENDDO
923
       ENDIF
924
289
       CALL histwrite_phy(o_plul, zx_tmp_fi2d)
925
289
       CALL histwrite_phy(o_plun, rain_num)
926
927
289
       IF (vars_defined) THEN
928
286560
          DO i = 1, klon
929
286560
             zx_tmp_fi2d(i) = rain_con(i) + snow_con(i)
930
          ENDDO
931
       ENDIF
932
289
       CALL histwrite_phy(o_pluc, zx_tmp_fi2d)
933
289
       CALL histwrite_phy(o_rain_con, rain_con)
934
289
       CALL histwrite_phy(o_snow, snow_fall)
935
289
       CALL histwrite_phy(o_msnow, zxsnow)
936
289
       CALL histwrite_phy(o_fsnow, zfra_o)
937
289
       CALL histwrite_phy(o_evap, evap)
938
939
289
       IF (ok_bs) THEN
940
           CALL histwrite_phy(o_bsfall, bs_fall)
941
           CALL histwrite_phy(o_snowerosion, snowerosion)
942
           CALL histwrite_phy(o_ustart_lic, zxustartlic)
943
           CALL histwrite_phy(o_rhosnow_lic, zxrhoslic)
944
       ENDIF
945
946
289
       IF (vars_defined) THEN
947
286560
         zx_tmp_fi2d = topsw*swradcorr
948
       ENDIF
949
289
       CALL histwrite_phy(o_tops, zx_tmp_fi2d)
950
951
289
       IF (vars_defined) THEN
952
286560
         zx_tmp_fi2d = topsw0*swradcorr
953
       ENDIF
954
289
       CALL histwrite_phy(o_tops0, zx_tmp_fi2d)
955
956
289
       CALL histwrite_phy(o_topl, toplw)
957
289
       CALL histwrite_phy(o_topl0, toplw0)
958
959
289
       IF (vars_defined) THEN
960
286560
          zx_tmp_fi2d(:) = swup(:,klevp1)*swradcorr(:)
961
       ENDIF
962
289
       CALL histwrite_phy(o_SWupTOA, zx_tmp_fi2d)
963
964
289
       IF (vars_defined) THEN
965
286560
          zx_tmp_fi2d(:) = swup0(:,klevp1)*swradcorr(:)
966
       ENDIF
967
289
       CALL histwrite_phy(o_SWupTOAclr, zx_tmp_fi2d)
968
969

289
       IF (type_trac/='inca' .OR. config_inca=='aeNP') THEN
970
289
          IF (vars_defined) THEN
971
286560
             zx_tmp_fi2d(:) = swupc0(:,klevp1)*swradcorr(:)
972
          ENDIF
973
289
          CALL histwrite_phy(o_SWupTOAcleanclr, zx_tmp_fi2d)
974
       ENDIF
975
976
289
       IF (vars_defined) THEN
977
286560
          zx_tmp_fi2d(:) = swdn(:,klevp1)*swradcorr(:)
978
       ENDIF
979
289
       CALL histwrite_phy(o_SWdnTOA, zx_tmp_fi2d)
980
981
289
       IF (vars_defined) THEN
982
286560
          zx_tmp_fi2d(:) = swdn0(:,klevp1)*swradcorr(:)
983
       ENDIF
984
289
       CALL histwrite_phy(o_SWdnTOAclr, zx_tmp_fi2d)
985
986
289
       IF (vars_defined) THEN
987
286560
          zx_tmp_fi2d(:) = topsw(:)*swradcorr(:)-toplw(:)
988
       ENDIF
989
289
       CALL histwrite_phy(o_nettop, zx_tmp_fi2d)
990
991
289
       IF (vars_defined) THEN
992
286560
          zx_tmp_fi2d = SWup200*swradcorr
993
       ENDIF
994
289
       CALL histwrite_phy(o_SWup200, zx_tmp_fi2d)
995
996
289
       IF (vars_defined) THEN
997
286560
          zx_tmp_fi2d = SWup200clr*swradcorr
998
       ENDIF
999
289
       CALL histwrite_phy(o_SWup200clr, zx_tmp_fi2d)
1000
1001
289
       IF (vars_defined) THEN
1002
286560
          zx_tmp_fi2d = SWdn200*swradcorr
1003
       ENDIF
1004
289
       CALL histwrite_phy(o_SWdn200, zx_tmp_fi2d)
1005
1006
1007
289
       IF (vars_defined) THEN
1008
286560
          zx_tmp_fi2d = SWdn200clr*swradcorr
1009
       ENDIF
1010
289
       CALL histwrite_phy(o_SWdn200clr, zx_tmp_fi2d)
1011
1012
289
       CALL histwrite_phy(o_LWup200, LWup200)
1013
289
       CALL histwrite_phy(o_LWup200clr, LWup200clr)
1014
289
       CALL histwrite_phy(o_LWdn200, LWdn200)
1015
289
       CALL histwrite_phy(o_LWdn200clr, LWdn200clr)
1016
1017
289
       IF (vars_defined) THEN
1018
286560
          zx_tmp_fi2d = solsw*swradcorr
1019
       ENDIF
1020
289
       CALL histwrite_phy(o_sols, zx_tmp_fi2d)
1021
1022
1023
289
       IF (vars_defined) THEN
1024
286560
          zx_tmp_fi2d = solsw0*swradcorr
1025
       ENDIF
1026
289
       CALL histwrite_phy(o_sols0, zx_tmp_fi2d)
1027
289
       CALL histwrite_phy(o_soll, sollw)
1028
289
       CALL histwrite_phy(o_soll0, sollw0)
1029
289
       CALL histwrite_phy(o_radsol, radsol)
1030
1031
289
       IF (vars_defined) THEN
1032
286560
          zx_tmp_fi2d(:) = swup(:,1)*swradcorr(:)
1033
       ENDIF
1034
289
       CALL histwrite_phy(o_SWupSFC, zx_tmp_fi2d)
1035
1036
289
       IF (vars_defined) THEN
1037
286560
          zx_tmp_fi2d(:) = swup0(:,1)*swradcorr(:)
1038
       ENDIF
1039
289
       CALL histwrite_phy(o_SWupSFCclr, zx_tmp_fi2d)
1040
1041

289
       IF (type_trac/='inca' .OR. config_inca=='aeNP') THEN
1042
289
          IF (vars_defined) THEN
1043
286560
             zx_tmp_fi2d(:) = swupc0(:,1)*swradcorr(:)
1044
          ENDIF
1045
289
          CALL histwrite_phy(o_SWupSFCcleanclr, zx_tmp_fi2d)
1046
       ENDIF
1047
1048
289
       IF (vars_defined) THEN
1049
286560
          zx_tmp_fi2d(:) = swdn(:,1)*swradcorr(:)
1050
       ENDIF
1051
289
       CALL histwrite_phy(o_SWdnSFC, zx_tmp_fi2d)
1052
1053
289
       IF (vars_defined) THEN
1054
286560
          zx_tmp_fi2d(:) = swdn0(:,1)*swradcorr(:)
1055
       ENDIF
1056
289
       CALL histwrite_phy(o_SWdnSFCclr, zx_tmp_fi2d)
1057
1058

289
       IF (type_trac/='inca' .OR. config_inca=='aeNP') THEN
1059
289
          IF (vars_defined) THEN
1060
286560
             zx_tmp_fi2d(:) = swdnc0(:,1)*swradcorr(:)
1061
          ENDIF
1062
289
          CALL histwrite_phy(o_SWdnSFCcleanclr, zx_tmp_fi2d)
1063
       ENDIF
1064
1065
289
       CALL histwrite_phy(o_fdiffSWdnSFC, solswfdiff)
1066
1067
289
       IF (vars_defined) THEN
1068
286560
          zx_tmp_fi2d(:)=sollwdown(:)-sollw(:)
1069
       ENDIF
1070
289
       CALL histwrite_phy(o_LWupSFC, zx_tmp_fi2d)
1071
289
       CALL histwrite_phy(o_LWdnSFC, sollwdown)
1072
1073
289
       IF (vars_defined) THEN
1074
286560
          sollwdownclr(1:klon) = -1.*lwdn0(1:klon,1)
1075
286560
          zx_tmp_fi2d(1:klon)=sollwdownclr(1:klon)-sollw0(1:klon)
1076
       ENDIF
1077
289
       CALL histwrite_phy(o_LWupSFCclr, zx_tmp_fi2d)
1078
289
       CALL histwrite_phy(o_LWdnSFCclr, sollwdownclr)
1079
1080

289
       IF (type_trac/='inca' .OR. config_inca=='aeNP') THEN
1081
289
          IF (vars_defined) THEN
1082
286560
             zx_tmp_fi2d(:) = lwupc0(:,klevp1)
1083
          ENDIF
1084
289
          CALL histwrite_phy(o_LWupTOAcleanclr, zx_tmp_fi2d)
1085
       ENDIF
1086
1087

289
       IF (type_trac/='inca' .OR. config_inca=='aeNP') THEN
1088
289
          IF (vars_defined) THEN
1089
286560
             zx_tmp_fi2d(:) = -1.*lwdnc0(:,1)
1090
          ENDIF
1091
289
          CALL histwrite_phy(o_LWdnSFCcleanclr, zx_tmp_fi2d)
1092
       ENDIF
1093
1094
289
       CALL histwrite_phy(o_bils, bils)
1095
289
       CALL histwrite_phy(o_bils_diss, bils_diss)
1096
289
       CALL histwrite_phy(o_bils_ec, bils_ec)
1097
289
       CALL histwrite_phy(o_bils_ech, bils_ech)
1098
289
       CALL histwrite_phy(o_bils_tke, bils_tke)
1099
289
       CALL histwrite_phy(o_bils_kinetic, bils_kinetic)
1100
289
       CALL histwrite_phy(o_bils_latent, bils_latent)
1101
289
       CALL histwrite_phy(o_bils_enthalp, bils_enthalp)
1102
1103
289
       IF (vars_defined) THEN
1104
286560
          zx_tmp_fi2d(1:klon)=-1*sens(1:klon)
1105
       ENDIF
1106
289
       CALL histwrite_phy(o_sens, zx_tmp_fi2d)
1107
289
       CALL histwrite_phy(o_fder, fder)
1108
289
       CALL histwrite_phy(o_ffonte, zxffonte)
1109
289
       CALL histwrite_phy(o_fqcalving, zxfqcalving)
1110
289
       CALL histwrite_phy(o_fqfonte, zxfqfonte)
1111
289
       IF (vars_defined) THEN
1112
286560
          zx_tmp_fi2d(1:klon)=(zxfqfonte(1:klon)+rain_fall(1:klon))*pctsrf(1:klon,is_lic)
1113
       ENDIF
1114
289
       CALL histwrite_phy(o_mrroli, zx_tmp_fi2d)
1115
289
       CALL histwrite_phy(o_runofflic, zxrunofflic)
1116
289
       IF (vars_defined) THEN
1117
286560
          zx_tmp_fi2d=0.
1118
1440
          DO nsrf=1,nbsrf
1119
1146528
             zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxu(:,1,nsrf)
1120
          ENDDO
1121
       ENDIF
1122
289
       CALL histwrite_phy(o_taux, zx_tmp_fi2d)
1123
1124
289
       IF (vars_defined) THEN
1125
286560
          zx_tmp_fi2d=0.
1126
1440
          DO nsrf=1,nbsrf
1127
1146528
             zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxv(:,1,nsrf)
1128
          ENDDO
1129
       ENDIF
1130
289
       CALL histwrite_phy(o_tauy, zx_tmp_fi2d)
1131
1132
1445
       DO nsrf = 1, nbsrf
1133
1134

1146244
          IF (vars_defined)             zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)*100.
1135
1156
          CALL histwrite_phy(o_pourc_srf(nsrf), zx_tmp_fi2d)
1136

1146244
          IF (vars_defined)           zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)
1137
1156
          CALL histwrite_phy(o_fract_srf(nsrf), zx_tmp_fi2d)
1138

1146244
          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxu( 1 : klon, 1, nsrf)
1139
1156
          CALL histwrite_phy(o_taux_srf(nsrf), zx_tmp_fi2d)
1140

1146244
          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxv( 1 : klon, 1, nsrf)
1141
1156
          CALL histwrite_phy(o_tauy_srf(nsrf), zx_tmp_fi2d)
1142

1146244
          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = ftsol( 1 : klon, nsrf)
1143
1156
          CALL histwrite_phy(o_tsol_srf(nsrf), zx_tmp_fi2d)
1144

1146244
          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = evap_pot( 1 : klon, nsrf)
1145
1156
          CALL histwrite_phy(o_evappot_srf(nsrf), zx_tmp_fi2d)
1146

1146244
          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = ustar(1 : klon, nsrf)
1147
1156
          CALL histwrite_phy(o_ustar_srf(nsrf), zx_tmp_fi2d)
1148

1146244
          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = u10m(1 : klon, nsrf)
1149
1156
          CALL histwrite_phy(o_u10m_srf(nsrf), zx_tmp_fi2d)
1150

1146244
          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = v10m(1 : klon, nsrf)
1151
1156
          CALL histwrite_phy(o_v10m_srf(nsrf), zx_tmp_fi2d)
1152

1146244
          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = t2m(1 : klon, nsrf)
1153
1156
          CALL histwrite_phy(o_t2m_srf(nsrf), zx_tmp_fi2d)
1154

1146244
          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = fevap(1 : klon, nsrf)
1155
1156
          CALL histwrite_phy(o_evap_srf(nsrf), zx_tmp_fi2d)
1156

1146244
          IF (vars_defined)        zx_tmp_fi2d(1 : klon) = fluxt( 1 : klon, 1, nsrf)
1157
1156
          CALL histwrite_phy(o_sens_srf(nsrf), zx_tmp_fi2d)
1158

1146244
          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxlat( 1 : klon, nsrf)
1159
1156
          CALL histwrite_phy(o_lat_srf(nsrf), zx_tmp_fi2d)
1160

1146244
          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fsollw( 1 : klon, nsrf)
1161
1156
          CALL histwrite_phy(o_flw_srf(nsrf), zx_tmp_fi2d)
1162

1146244
          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fsolsw( 1 : klon, nsrf)
1163
1156
          CALL histwrite_phy(o_fsw_srf(nsrf), zx_tmp_fi2d)
1164

1146244
          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfbils( 1 : klon, nsrf)
1165
1156
          CALL histwrite_phy(o_wbils_srf(nsrf), zx_tmp_fi2d)
1166

1146244
          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfbilo( 1 : klon, nsrf)
1167
1156
          CALL histwrite_phy(o_wbilo_srf(nsrf), zx_tmp_fi2d)
1168

1146244
          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfevap( 1 : klon, nsrf)
1169
1156
          CALL histwrite_phy(o_wevap_srf(nsrf), zx_tmp_fi2d)
1170

1146244
          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfrain( 1 : klon, nsrf)
1171
1156
          CALL histwrite_phy(o_wrain_srf(nsrf), zx_tmp_fi2d)
1172

1146244
          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfsnow( 1 : klon, nsrf)
1173
1156
          CALL histwrite_phy(o_wsnow_srf(nsrf), zx_tmp_fi2d)
1174
1175
1156
          IF (iflag_pbl > 1) THEN
1176
1156
             CALL histwrite_phy(o_tke_srf(nsrf),  pbl_tke(:,1:klev,nsrf))
1177
             !CALL histwrite_phy(o_l_mix(nsrf),  l_mix(:,1:klev,nsrf))
1178
1156
             CALL histwrite_phy(o_l_mixmin(nsrf),  l_mixmin(:,1:klev,nsrf))
1179
1156
             CALL histwrite_phy(o_tke_max_srf(nsrf),  pbl_tke(:,1:klev,nsrf))
1180
1181
1182
          ENDIF
1183
!jyg<
1184

1445
          IF (iflag_pbl > 1 .AND. iflag_wake>=1  .AND. iflag_pbl_split >=1) THEN
1185
1156
             CALL histwrite_phy(o_dltpbltke_srf(nsrf), wake_delta_pbl_TKE(:,1:klev,nsrf))
1186
          ENDIF
1187
!>jyg
1188
!          IF (iflag_pbl > 1 .AND. ifl_pbltree  >=1 ) THEN
1189
!       CALL histwrite_phy(o_treedrg_srf(nsrf), treedrg(:,1:klev,nsrf))
1190
!            ENDIF
1191
1192
       ENDDO
1193
1194
1195
289
        IF (iflag_pbl > 1) THEN
1196

11214934
          zx_tmp_fi3d=0.
1197
289
          IF (vars_defined) THEN
1198
1440
             DO nsrf=1,nbsrf
1199
46368
                DO k=1,klev
1200
                   zx_tmp_fi3d(:,k)=zx_tmp_fi3d(:,k) &
1201
44704512
                        +pctsrf(:,nsrf)*tke_dissip(:,k,nsrf)
1202
                ENDDO
1203
             ENDDO
1204
          ENDIF
1205
1206
289
          CALL histwrite_phy(o_tke_dissip, zx_tmp_fi3d)
1207
       ENDIF
1208
1209

286561
       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_liq_o(1 : klon, 1)
1210
289
       CALL histwrite_phy(o_sens_prec_liq_oce, zx_tmp_fi2d)
1211

286561
       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_liq_o(1 : klon, 2)
1212
289
       CALL histwrite_phy(o_sens_prec_liq_sic, zx_tmp_fi2d)
1213

286561
       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_sol_o(1 : klon, 1)
1214
289
       CALL histwrite_phy(o_sens_prec_sol_oce, zx_tmp_fi2d)
1215

286561
       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_sol_o(1 : klon, 2)
1216
289
       CALL histwrite_phy(o_sens_prec_sol_sic, zx_tmp_fi2d)
1217
1218

286561
       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_liq_o(1 : klon, 1)
1219
289
       CALL histwrite_phy(o_lat_prec_liq_oce, zx_tmp_fi2d)
1220

286561
       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_liq_o(1 : klon, 2)
1221
289
       CALL histwrite_phy(o_lat_prec_liq_sic, zx_tmp_fi2d)
1222

286561
       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_sol_o(1 : klon, 1)
1223
289
       CALL histwrite_phy(o_lat_prec_sol_oce, zx_tmp_fi2d)
1224

286561
       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_sol_o(1 : klon, 2)
1225
289
       CALL histwrite_phy(o_lat_prec_sol_sic, zx_tmp_fi2d)
1226
1227
1734
       DO nsrf=1,nbsrf+1
1228
1734
          CALL histwrite_phy(o_wstar(nsrf), wstar(1 : klon, nsrf))
1229
       ENDDO
1230
1231
289
       CALL histwrite_phy(o_cdrm, cdragm)
1232
289
       CALL histwrite_phy(o_cdrh, cdragh)
1233
289
       CALL histwrite_phy(o_cldl, cldl)
1234
289
       CALL histwrite_phy(o_cldm, cldm)
1235
289
       CALL histwrite_phy(o_cldh, cldh)
1236
289
       CALL histwrite_phy(o_cldt, cldt)
1237
289
       CALL histwrite_phy(o_JrNt, JrNt)
1238
1239

286561
       IF (vars_defined)  zx_tmp_fi2d=cldl*JrNt
1240
289
       CALL histwrite_phy(o_cldljn, zx_tmp_fi2d)
1241
1242

286561
       IF (vars_defined)  zx_tmp_fi2d=cldm*JrNt
1243
289
       CALL histwrite_phy(o_cldmjn, zx_tmp_fi2d)
1244
1245

286561
       IF (vars_defined)  zx_tmp_fi2d=cldh*JrNt
1246
289
       CALL histwrite_phy(o_cldhjn, zx_tmp_fi2d)
1247
1248

286561
       IF (vars_defined)  zx_tmp_fi2d=cldt*JrNt
1249
289
       CALL histwrite_phy(o_cldtjn, zx_tmp_fi2d)
1250
1251
289
       CALL histwrite_phy(o_cldq, cldq)
1252

286561
       IF (vars_defined)       zx_tmp_fi2d(1:klon) = flwp(1:klon)
1253
289
       CALL histwrite_phy(o_lwp, zx_tmp_fi2d)
1254

286561
       IF (vars_defined)       zx_tmp_fi2d(1:klon) = fiwp(1:klon)
1255
289
       CALL histwrite_phy(o_iwp, zx_tmp_fi2d)
1256
289
       CALL histwrite_phy(o_ue, ue)
1257
289
       CALL histwrite_phy(o_ve, ve)
1258
289
       CALL histwrite_phy(o_uq, uq)
1259
289
       CALL histwrite_phy(o_vq, vq)
1260
289
       CALL histwrite_phy(o_uwat, uwat)
1261
289
       CALL histwrite_phy(o_vwat, vwat)
1262
289
       IF (iflag_con.GE.3) THEN ! sb
1263
289
          CALL histwrite_phy(o_cape, cape)
1264
289
          CALL histwrite_phy(o_pbase, ema_pcb)
1265
289
          CALL histwrite_phy(o_ptop, ema_pct)
1266
289
          CALL histwrite_phy(o_fbase, ema_cbmf)
1267
289
          IF (iflag_con /= 30) THEN
1268
289
             CALL histwrite_phy(o_plcl, plcl)
1269
289
             CALL histwrite_phy(o_plfc, plfc)
1270
289
             CALL histwrite_phy(o_wbeff, wbeff)
1271
289
             CALL histwrite_phy(o_convoccur, convoccur)
1272
          ENDIF
1273
1274
289
          CALL histwrite_phy(o_cape_max, cape)
1275
1276
289
          CALL histwrite_phy(o_upwd, upwd)
1277
289
          CALL histwrite_phy(o_Ma, Ma)
1278
289
          CALL histwrite_phy(o_dnwd, dnwd)
1279
289
          CALL histwrite_phy(o_dnwd0, dnwd0)
1280
          !! The part relative to the frequency of occurence of convection
1281
          !! is now grouped with the part relative to thermals and shallow
1282
          !! convection (output of the 3 fields: ftime_deepcv, ftime_th and
1283
          !!  ftime_con).
1284
289
          IF (vars_defined) THEN
1285
288
             IF (iflag_thermals>=1)THEN
1286

11176128
                zx_tmp_fi3d=dnwd+dnwd0+upwd+fm_therm(:,1:klev)
1287
             ELSE
1288
                zx_tmp_fi3d=dnwd+dnwd0+upwd
1289
             ENDIF
1290
          ENDIF
1291
289
          CALL histwrite_phy(o_mc, zx_tmp_fi3d)
1292
       ENDIF !iflag_con .GE. 3
1293
289
       CALL histwrite_phy(o_prw, prw)
1294
289
       CALL histwrite_phy(o_prlw, prlw)
1295
289
       CALL histwrite_phy(o_prsw, prsw)
1296
289
       IF (ok_bs) THEN
1297
       CALL histwrite_phy(o_prbsw, prbsw)
1298
       ENDIF
1299
289
       CALL histwrite_phy(o_s_pblh, s_pblh)
1300
289
       CALL histwrite_phy(o_s_pblt, s_pblt)
1301
289
       CALL histwrite_phy(o_s_lcl, s_lcl)
1302
289
       CALL histwrite_phy(o_s_therm, s_therm)
1303
       !IM : Les champs suivants (s_capCL, s_oliqCL, s_cteiCL, s_trmb1, s_trmb2, s_trmb3) ne sont pas definis dans HBTM.F
1304
       !       IF (o_s_capCL%flag(iff)<=lev_files(iff)) THEN
1305
       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1306
       !    $o_s_capCL%name,itau_w,s_capCL)
1307
       !       ENDIF
1308
       !       IF (o_s_oliqCL%flag(iff)<=lev_files(iff)) THEN
1309
       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1310
       !    $o_s_oliqCL%name,itau_w,s_oliqCL)
1311
       !       ENDIF
1312
       !       IF (o_s_cteiCL%flag(iff)<=lev_files(iff)) THEN
1313
       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1314
       !    $o_s_cteiCL%name,itau_w,s_cteiCL)
1315
       !       ENDIF
1316
       !       IF (o_s_trmb1%flag(iff)<=lev_files(iff)) THEN
1317
       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1318
       !    $o_s_trmb1%name,itau_w,s_trmb1)
1319
       !       ENDIF
1320
       !       IF (o_s_trmb2%flag(iff)<=lev_files(iff)) THEN
1321
       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1322
       !    $o_s_trmb2%name,itau_w,s_trmb2)
1323
       !       ENDIF
1324
       !       IF (o_s_trmb3%flag(iff)<=lev_files(iff)) THEN
1325
       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1326
       !    $o_s_trmb3%name,itau_w,s_trmb3)
1327
       !       ENDIF
1328
1329
#ifdef CPP_IOIPSL
1330
#ifndef CPP_XIOS
1331
289
  IF (.NOT.ok_all_xml) THEN
1332
       ! ATTENTION, LES ANCIENS HISTWRITE ONT ETES CONSERVES EN ATTENDANT MIEUX:
1333
       ! Champs interpolles sur des niveaux de pression
1334
3179
       DO iff=1, nfiles
1335
          ll=0
1336
52309
          DO k=1, nlevSTD
1337
49130
             bb2=clevSTD(k)
1338
             IF (bb2.EQ."850".OR.bb2.EQ."700".OR. &
1339
                  bb2.EQ."500".OR.bb2.EQ."200".OR. &
1340
                  bb2.EQ."100".OR. &
1341



52020
                  bb2.EQ."50".OR.bb2.EQ."10") THEN
1342
1343
                ! a refaire correctement !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1344
20230
                ll=ll+1
1345
20230
                CALL histwrite_phy(o_uSTDlevs(ll),uwriteSTD(:,k,iff), iff)
1346
20230
                CALL histwrite_phy(o_vSTDlevs(ll),vwriteSTD(:,k,iff), iff)
1347
20230
                CALL histwrite_phy(o_wSTDlevs(ll),wwriteSTD(:,k,iff), iff)
1348
20230
                CALL histwrite_phy(o_zSTDlevs(ll),phiwriteSTD(:,k,iff), iff)
1349
20230
                CALL histwrite_phy(o_qSTDlevs(ll),qwriteSTD(:,k,iff), iff)
1350
20230
                CALL histwrite_phy(o_tSTDlevs(ll),twriteSTD(:,k,iff), iff)
1351
1352
             ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR.
1353
          ENDDO
1354
       ENDDO
1355
  ENDIF
1356
#endif
1357
#endif
1358
#ifdef CPP_XIOS
1359
  IF (ok_all_xml) THEN
1360
!XIOS  CALL xios_get_field_attr("u850",default_value=missing_val)
1361
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1362
          ll=0
1363
          DO k=1, nlevSTD
1364
             bb2=clevSTD(k)
1365
             IF (bb2.EQ."850".OR.bb2.EQ."700".OR. &
1366
                bb2.EQ."500".OR.bb2.EQ."200".OR. &
1367
                bb2.EQ."100".OR. &
1368
                bb2.EQ."50".OR.bb2.EQ."10") THEN
1369
                ll=ll+1
1370
                CALL histwrite_phy(o_uSTDlevs(ll),ulevSTD(:,k))
1371
                CALL histwrite_phy(o_vSTDlevs(ll),vlevSTD(:,k))
1372
                CALL histwrite_phy(o_wSTDlevs(ll),wlevSTD(:,k))
1373
                CALL histwrite_phy(o_zSTDlevs(ll),philevSTD(:,k))
1374
                CALL histwrite_phy(o_qSTDlevs(ll),qlevSTD(:,k))
1375
                CALL histwrite_phy(o_tSTDlevs(ll),tlevSTD(:,k))
1376
             ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR.
1377
          ENDDO
1378
  ENDIF
1379
#endif
1380
289
       IF (vars_defined) THEN
1381
286560
          DO i=1, klon
1382

286272
             IF (pctsrf(i,is_oce).GT.epsfra.OR. &
1383
288
                  pctsrf(i,is_sic).GT.epsfra) THEN
1384
                zx_tmp_fi2d(i) = (ftsol(i, is_oce) * pctsrf(i,is_oce)+ &
1385
                     ftsol(i, is_sic) * pctsrf(i,is_sic))/ &
1386
239616
                     (pctsrf(i,is_oce)+pctsrf(i,is_sic))
1387
             ELSE
1388
46656
                zx_tmp_fi2d(i) = 273.15
1389
             ENDIF
1390
          ENDDO
1391
       ENDIF
1392
289
       CALL histwrite_phy(o_t_oce_sic, zx_tmp_fi2d)
1393
1394
       ! Couplage convection-couche limite
1395
289
       IF (iflag_con.GE.3) THEN
1396
289
          IF (iflag_coupl>=1) THEN
1397
289
             CALL histwrite_phy(o_ale_bl, ale_bl)
1398
289
             CALL histwrite_phy(o_alp_bl, alp_bl)
1399
          ENDIF !iflag_coupl>=1
1400
       ENDIF !(iflag_con.GE.3)
1401
       ! Wakes
1402
289
       IF (iflag_con.EQ.3) THEN
1403
289
          CALL histwrite_phy(o_Mipsh, Mipsh)
1404
289
          IF (iflag_wake>=1) THEN
1405
289
             CALL histwrite_phy(o_ale_wk, ale_wake)
1406
289
             CALL histwrite_phy(o_alp_wk, alp_wake)
1407
289
             IF (iflag_pbl_split>=1) THEN
1408
!!               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dtvdf_x(1:klon,1:klev)/pdtphys
1409
!!               CALL histwrite_phy(o_dtvdf_x    ,zx_tmp_fi3d)
1410
!!               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dtvdf_w(1:klon,1:klev)/pdtphys
1411
!!               CALL histwrite_phy(o_dtvdf_w    ,zx_tmp_fi3d)
1412
!!               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dqvdf_x(1:klon,1:klev)/pdtphys
1413
!!               CALL histwrite_phy(o_dqvdf_x    ,zx_tmp_fi3d)
1414
!!               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dqvdf_w(1:klon,1:klev)/pdtphys
1415
!
1416

11176129
               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf_x(1:klon,1:klev)/pdtphys
1417
289
               CALL histwrite_phy(o_dtvdf_x    ,zx_tmp_fi3d)
1418

11176129
               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf_w(1:klon,1:klev)/pdtphys
1419
289
               CALL histwrite_phy(o_dtvdf_w    ,zx_tmp_fi3d)
1420

11176129
               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf_x(1:klon,1:klev)/pdtphys
1421
289
               CALL histwrite_phy(o_dqvdf_x    ,zx_tmp_fi3d)
1422

11176129
               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf_w(1:klon,1:klev)/pdtphys
1423
!
1424
289
               CALL histwrite_phy(o_dqvdf_w    ,zx_tmp_fi3d)
1425

286561
       IF (vars_defined)  zx_tmp_fi2d(1:klon)=-1*sens_x(1:klon)
1426
289
               CALL histwrite_phy(o_sens_x     ,zx_tmp_fi2d)
1427

286561
       IF (vars_defined)  zx_tmp_fi2d(1:klon)=-1*sens_w(1:klon)
1428
289
               CALL histwrite_phy(o_sens_w     ,zx_tmp_fi2d)
1429
289
               CALL histwrite_phy(o_flat_x     ,zxfluxlat_x)
1430
289
               CALL histwrite_phy(o_flat_w     ,zxfluxlat_w)
1431
287555
          zx_tmp_fi2d=0.
1432
289
          IF (vars_defined) THEN
1433
1440
             DO nsrf=1,nbsrf
1434
                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:) &
1435
1146528
                        +pctsrf(:,nsrf)*delta_tsurf(:,nsrf)
1436
             ENDDO
1437
          ENDIF
1438
289
               CALL histwrite_phy(o_delta_tsurf,zx_tmp_fi2d)
1439
289
               CALL histwrite_phy(o_cdragh_x   ,cdragh_x   )
1440
289
               CALL histwrite_phy(o_cdragh_w   ,cdragh_w   )
1441
289
               CALL histwrite_phy(o_cdragm_x   ,cdragm_x   )
1442
289
               CALL histwrite_phy(o_cdragm_w   ,cdragm_w   )
1443
289
               CALL histwrite_phy(o_kh         ,kh         )
1444
289
               CALL histwrite_phy(o_kh_x       ,kh_x       )
1445
289
               CALL histwrite_phy(o_kh_w       ,kh_w       )
1446
             ENDIF   ! (iflag_pbl_split>=1)
1447
289
             CALL histwrite_phy(o_ale, ale)
1448
289
             CALL histwrite_phy(o_alp, alp)
1449
289
             CALL histwrite_phy(o_cin, cin)
1450
289
             CALL histwrite_phy(o_WAPE, wake_pe)
1451
289
             CALL histwrite_phy(o_cv_gen, cv_gen)
1452
289
             CALL histwrite_phy(o_wake_h, wake_h)
1453
289
             CALL histwrite_phy(o_wake_dens, wake_dens)
1454
289
             CALL histwrite_phy(o_wake_s, wake_s)
1455
289
             CALL histwrite_phy(o_wake_deltat, wake_deltat)
1456
289
             CALL histwrite_phy(o_wake_deltaq, wake_deltaq)
1457
289
             CALL histwrite_phy(o_wake_omg, wake_omg)
1458
289
             IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_wake(1:klon,1:klev) &
1459

11176128
                  /pdtphys
1460
289
             CALL histwrite_phy(o_dtwak, zx_tmp_fi3d)
1461

11176129
             IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_wake(1:klon,1:klev)/pdtphys
1462
289
             CALL histwrite_phy(o_dqwak, zx_tmp_fi3d)
1463
289
             IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1464
289
             CALL histwrite_phy(o_dqwak2d, zx_tmp_fi2d)
1465
          ENDIF ! iflag_wake>=1
1466
289
          CALL histwrite_phy(o_ftd, ftd)
1467
289
          CALL histwrite_phy(o_fqd, fqd)
1468
       ENDIF !(iflag_con.EQ.3)
1469
289
       IF (iflag_con.EQ.3.OR.iflag_con.EQ.30) THEN
1470
          ! sortie RomP convection descente insaturee iflag_con=30
1471
          ! etendue a iflag_con=3 (jyg)
1472
289
          CALL histwrite_phy(o_Vprecip, Vprecip)
1473
289
          CALL histwrite_phy(o_qtaa, qtaa)
1474
289
          CALL histwrite_phy(o_clwaa, clw)
1475
289
          CALL histwrite_phy(o_wdtrainA, wdtrainA)
1476
289
          CALL histwrite_phy(o_wdtrainS, wdtrainS)
1477
289
          CALL histwrite_phy(o_wdtrainM, wdtrainM)
1478
       ENDIF !(iflag_con.EQ.3.or.iflag_con.EQ.30)
1479
!!! nrlmd le 10/04/2012
1480
289
       IF (iflag_trig_bl>=1) THEN
1481
289
          CALL histwrite_phy(o_n2, n2)
1482
289
          CALL histwrite_phy(o_s2, s2)
1483
289
          CALL histwrite_phy(o_proba_notrig, proba_notrig)
1484
289
          CALL histwrite_phy(o_random_notrig, random_notrig)
1485
289
          CALL histwrite_phy(o_ale_bl_stat, ale_bl_stat)
1486
289
          CALL histwrite_phy(o_ale_bl_trig, ale_bl_trig)
1487
       ENDIF  !(iflag_trig_bl>=1)
1488
289
       IF (iflag_clos_bl>=1) THEN
1489
289
          CALL histwrite_phy(o_alp_bl_det, alp_bl_det)
1490
289
          CALL histwrite_phy(o_alp_bl_fluct_m, alp_bl_fluct_m)
1491
          CALL histwrite_phy(o_alp_bl_fluct_tke,  &
1492
289
               alp_bl_fluct_tke)
1493
289
          CALL histwrite_phy(o_alp_bl_conv, alp_bl_conv)
1494
289
          CALL histwrite_phy(o_alp_bl_stat, alp_bl_stat)
1495
       ENDIF  !(iflag_clos_bl>=1)
1496
!!! fin nrlmd le 10/04/2012
1497
       ! Output of slab ocean variables
1498
289
       IF (type_ocean=='slab ') THEN
1499
          CALL histwrite_phy(o_slab_bils, slab_wfbils)
1500
          IF (nslay.EQ.1) THEN
1501
              IF (vars_defined) zx_tmp_fi2d(:)=tslab(:,1)
1502
              CALL histwrite_phy(o_tslab, zx_tmp_fi2d)
1503
              IF (vars_defined) zx_tmp_fi2d(:)=dt_qflux(:,1)
1504
              CALL histwrite_phy(o_slab_qflux, zx_tmp_fi2d)
1505
          ELSE
1506
              CALL histwrite_phy(o_tslab, tslab(:,1:nslay))
1507
              CALL histwrite_phy(o_slab_qflux, dt_qflux(:,1:nslay))
1508
          ENDIF
1509
          IF (version_ocean=='sicINT') THEN
1510
              CALL histwrite_phy(o_slab_bilg, slab_bilg)
1511
              CALL histwrite_phy(o_slab_tice, tice)
1512
              CALL histwrite_phy(o_slab_sic, seaice)
1513
          ENDIF
1514
          IF (slab_gm) THEN
1515
             CALL histwrite_phy(o_slab_gm, dt_gm(:,1:nslay))
1516
          ENDIF
1517
          IF (slab_hdiff) THEN
1518
            IF (nslay.EQ.1) THEN
1519
                IF (vars_defined) zx_tmp_fi2d(:)=dt_hdiff(:,1)
1520
                CALL histwrite_phy(o_slab_hdiff, zx_tmp_fi2d)
1521
            ELSE
1522
                CALL histwrite_phy(o_slab_hdiff, dt_hdiff(:,1:nslay))
1523
            ENDIF
1524
          ENDIF
1525
          IF (slab_ekman.GT.0) THEN
1526
            IF (nslay.EQ.1) THEN
1527
                IF (vars_defined) zx_tmp_fi2d(:)=dt_ekman(:,1)
1528
                CALL histwrite_phy(o_slab_ekman, zx_tmp_fi2d)
1529
            ELSE
1530
                CALL histwrite_phy(o_slab_ekman, dt_ekman(:,1:nslay))
1531
            ENDIF
1532
          ENDIF
1533
       ENDIF !type_ocean == force/slab
1534
289
       CALL histwrite_phy(o_weakinv, weak_inversion)
1535
289
       CALL histwrite_phy(o_dthmin, dthmin)
1536
289
       CALL histwrite_phy(o_cldtau, cldtau)
1537
289
       CALL histwrite_phy(o_cldemi, cldemi)
1538
289
       CALL histwrite_phy(o_pr_con_l, pmflxr(:,1:klev))
1539
289
       CALL histwrite_phy(o_pr_con_i, pmflxs(:,1:klev))
1540
289
       CALL histwrite_phy(o_pr_lsc_l, prfl(:,1:klev))
1541
289
       CALL histwrite_phy(o_pr_lsc_i, psfl(:,1:klev))
1542
289
       CALL histwrite_phy(o_re, re)
1543
289
       CALL histwrite_phy(o_fl, fl)
1544
1545
289
       IF (ok_bs) THEN
1546
         CALL histwrite_phy(o_pr_bs, bsfl(:,1:klev))
1547
       ENDIF
1548
1549
289
       IF (vars_defined) THEN
1550
286560
          DO i=1, klon
1551
286560
             IF (zt2m(i).LE.273.15) then
1552
98422
                zx_tmp_fi2d(i)=MAX(0.,rh2m(i)*100.)
1553
             ELSE
1554
187850
                zx_tmp_fi2d(i)=MAX(0.,MIN(100.,rh2m(i)*100.))
1555
             ENDIF
1556
          ENDDO
1557
       ENDIF
1558
289
       CALL histwrite_phy(o_rh2m, zx_tmp_fi2d)
1559
1560
!       IF (vars_defined) THEN
1561
!          DO i=1, klon
1562
!             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
1563
!          ENDDO
1564
!       ENDIF
1565
!       CALL histwrite_phy(o_rh2m_min, zx_tmp_fi2d)
1566
1567
!       IF (vars_defined) THEN
1568
!          DO i=1, klon
1569
!             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
1570
!          ENDDO
1571
!       ENDIF
1572
!       CALL histwrite_phy(o_rh2m_max, zx_tmp_fi2d)
1573
1574
289
       CALL histwrite_phy(o_qsat2m, qsat2m)
1575
289
       CALL histwrite_phy(o_tpot, tpot)
1576
289
       CALL histwrite_phy(o_tpote, tpote)
1577

286561
       IF (vars_defined) zx_tmp_fi2d(1 : klon) = fsolsw( 1 : klon, is_ter)
1578
289
       CALL histwrite_phy(o_SWnetOR,  zx_tmp_fi2d)
1579
289
       CALL histwrite_phy(o_LWdownOR, sollwdown)
1580
289
       CALL histwrite_phy(o_snowl, snow_lsc)
1581
289
       CALL histwrite_phy(o_solldown, sollwdown)
1582
289
       CALL histwrite_phy(o_dtsvdfo, d_ts(:,is_oce))
1583
289
       CALL histwrite_phy(o_dtsvdft, d_ts(:,is_ter))
1584
289
       CALL histwrite_phy(o_dtsvdfg,  d_ts(:,is_lic))
1585
289
       CALL histwrite_phy(o_dtsvdfi, d_ts(:,is_sic))
1586
289
       CALL histwrite_phy(o_z0m, z0m(:,nbsrf+1))
1587
289
       CALL histwrite_phy(o_z0h, z0h(:,nbsrf+1))
1588
1589
       ! od550 per species
1590
!--OLIVIER
1591
!This is warranted by treating INCA aerosols as offline aerosols
1592
#ifndef CPP_ECRAD
1593
289
       IF (flag_aerosol.GT.0) THEN
1594
          IF (type_trac/='inca' .OR. config_inca=='aeNP') THEN
1595
1596
             CALL histwrite_phy(o_od443aer, od443aer)
1597
             CALL histwrite_phy(o_od550aer, od550aer)
1598
             CALL histwrite_phy(o_od865aer, od865aer)
1599
             CALL histwrite_phy(o_abs550aer, abs550aer)
1600
             CALL histwrite_phy(o_od550lt1aer, od550lt1aer)
1601
             CALL histwrite_phy(o_sconcso4, sconcso4)
1602
             CALL histwrite_phy(o_sconcno3, sconcno3)
1603
             CALL histwrite_phy(o_sconcoa, sconcoa)
1604
             CALL histwrite_phy(o_sconcbc, sconcbc)
1605
             CALL histwrite_phy(o_sconcss, sconcss)
1606
             CALL histwrite_phy(o_sconcdust, sconcdust)
1607
             CALL histwrite_phy(o_concso4, concso4)
1608
             CALL histwrite_phy(o_concno3, concno3)
1609
             CALL histwrite_phy(o_concoa, concoa)
1610
             CALL histwrite_phy(o_concbc, concbc)
1611
             CALL histwrite_phy(o_concss, concss)
1612
             CALL histwrite_phy(o_concdust, concdust)
1613
             CALL histwrite_phy(o_loadso4, loadso4)
1614
             CALL histwrite_phy(o_loadoa, loadoa)
1615
             CALL histwrite_phy(o_loadbc, loadbc)
1616
             CALL histwrite_phy(o_loadss, loadss)
1617
             CALL histwrite_phy(o_loaddust, loaddust)
1618
             CALL histwrite_phy(o_loadno3, loadno3)
1619
             CALL histwrite_phy(o_dryod550aer, dryod550aer)
1620
             DO naero = 1, naero_tot-1
1621
                CALL histwrite_phy(o_drytausumaero(naero),drytausum_aero(:,naero))
1622
             END DO
1623
          ENDIF
1624
       ENDIF
1625
       !--STRAT AER
1626

289
       IF (flag_aerosol.GT.0.OR.flag_aerosol_strat.GT.0) THEN
1627
          DO naero = 1, naero_tot
1628
289
             CALL histwrite_phy(o_tausumaero(naero),tausum_aero(:,2,naero))
1629
          END DO
1630
       ENDIF
1631
289
       IF (flag_aerosol_strat.GT.0) THEN
1632
          CALL histwrite_phy(o_tausumaero_lw,tausum_aero(:,6,id_STRAT_phy))
1633
       ENDIF
1634
1635
289
       CALL histwrite_phy(o_p_tropopause, p_tropopause)
1636
289
       CALL histwrite_phy(o_t_tropopause, t_tropopause)
1637
289
       CALL histwrite_phy(o_z_tropopause, z_tropopause)
1638
1639
! ThL -- In the following, we assume read_climoz == 1
1640
289
       IF (vars_defined) THEN
1641
286560
         zx_tmp_fi2d = 0.0    ! Computation for strato, added ThL
1642
11520
         DO k=1, klev
1643
11176128
            zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + wo(:,k,1) * stratomask(:,k) * 1.e3
1644
         END DO
1645
       ENDIF
1646
289
       CALL histwrite_phy(o_col_O3_strato, zx_tmp_fi2d) ! Added ThL
1647
1648
289
       IF (vars_defined) THEN
1649
286560
         zx_tmp_fi2d = 0.0    ! Computation for tropo, added ThL
1650
11520
         DO k=1, klev
1651
11176128
            zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + wo(:,k,1) * (1.0-stratomask(:,k)) * 1.e3
1652
         END DO
1653
       ENDIF
1654
289
       CALL histwrite_phy(o_col_O3_tropo, zx_tmp_fi2d)   ! Added ThL
1655
! end add ThL
1656
1657
#ifdef CPP_StratAer
1658
       IF (type_trac=='coag') THEN
1659
          CALL histwrite_phy(o_R2SO4, R2SO4)
1660
          CALL histwrite_phy(o_OCS_lifetime, OCS_lifetime)
1661
          CALL histwrite_phy(o_SO2_lifetime, SO2_lifetime)
1662
          CALL histwrite_phy(o_budg_3D_backgr_ocs,   budg_3D_backgr_ocs)
1663
          CALL histwrite_phy(o_budg_3D_backgr_so2,   budg_3D_backgr_so2)
1664
          CALL histwrite_phy(o_budg_3D_ocs_to_so2,   budg_3D_ocs_to_so2)
1665
          CALL histwrite_phy(o_budg_3D_so2_to_h2so4, budg_3D_so2_to_h2so4)
1666
          CALL histwrite_phy(o_budg_3D_nucl,         budg_3D_nucl)
1667
          CALL histwrite_phy(o_budg_3D_cond_evap,    budg_3D_cond_evap)
1668
          CALL histwrite_phy(o_budg_dep_dry_ocs,     budg_dep_dry_ocs)
1669
          CALL histwrite_phy(o_budg_dep_wet_ocs,     budg_dep_wet_ocs)
1670
          CALL histwrite_phy(o_budg_dep_dry_so2,     budg_dep_dry_so2)
1671
          CALL histwrite_phy(o_budg_dep_wet_so2,     budg_dep_wet_so2)
1672
          CALL histwrite_phy(o_budg_dep_dry_h2so4,   budg_dep_dry_h2so4)
1673
          CALL histwrite_phy(o_budg_dep_wet_h2so4,   budg_dep_wet_h2so4)
1674
          CALL histwrite_phy(o_budg_dep_dry_part,    budg_dep_dry_part)
1675
          CALL histwrite_phy(o_budg_dep_wet_part,    budg_dep_wet_part)
1676
          CALL histwrite_phy(o_budg_emi_ocs,         budg_emi_ocs)
1677
          CALL histwrite_phy(o_budg_emi_so2,         budg_emi_so2)
1678
          CALL histwrite_phy(o_budg_emi_h2so4,       budg_emi_h2so4)
1679
          CALL histwrite_phy(o_budg_emi_part,        budg_emi_part)
1680
          CALL histwrite_phy(o_budg_ocs_to_so2,      budg_ocs_to_so2)
1681
          CALL histwrite_phy(o_budg_so2_to_h2so4,    budg_so2_to_h2so4)
1682
          CALL histwrite_phy(o_budg_h2so4_to_part,   budg_h2so4_to_part)
1683
          CALL histwrite_phy(o_budg_sed_part,        budg_sed_part)
1684
          CALL histwrite_phy(o_surf_PM25_sulf, surf_PM25_sulf)
1685
          CALL histwrite_phy(o_vsed_aer, vsed_aer)
1686
          CALL histwrite_phy(o_f_r_wet, f_r_wet)
1687
          CALL histwrite_phy(o_ext_strat_550, tau_strat_550)
1688
          CALL histwrite_phy(o_ext_strat_1020, tau_strat_1020)
1689
          CALL histwrite_phy(o_tau_strat_550, tausum_strat(:,1))
1690
          CALL histwrite_phy(o_tau_strat_1020, tausum_strat(:,2))
1691
       ENDIF
1692
#endif
1693
       !NL
1694

289
       IF (ok_volcan .AND. ok_ade) THEN
1695
          DO k=1, klev
1696
             IF (vars_defined) zx_tmp_fi3d(:,k)=heat_volc(:,k)*swradcorr(:)
1697
          ENDDO
1698
          CALL histwrite_phy(o_heat_volc, zx_tmp_fi3d)
1699
          DO k=1, klev
1700
             IF (vars_defined) zx_tmp_fi3d(:,k)=cool_volc(:,k)
1701
          ENDDO
1702
          CALL histwrite_phy(o_cool_volc, zx_tmp_fi3d)
1703
       ENDIF
1704
289
       IF (ok_ade) THEN
1705
          IF (vars_defined) zx_tmp_fi2d(:)=topswad_aero*swradcorr
1706
          CALL histwrite_phy(o_topswad, zx_tmp_fi2d)
1707
1708
          IF (vars_defined) zx_tmp_fi2d(:)=topswad0_aero*swradcorr
1709
          CALL histwrite_phy(o_topswad0, zx_tmp_fi2d)
1710
1711
          IF (vars_defined) zx_tmp_fi2d(:)=solswad_aero*swradcorr
1712
          CALL histwrite_phy(o_solswad, zx_tmp_fi2d)
1713
1714
          IF (vars_defined) zx_tmp_fi2d(:)=solswad0_aero*swradcorr
1715
          CALL histwrite_phy(o_solswad0, zx_tmp_fi2d)
1716
1717
          IF (type_trac/='inca' .OR. config_inca=='aeNP') THEN
1718
1719
             CALL histwrite_phy(o_toplwad, toplwad_aero)
1720
             CALL histwrite_phy(o_toplwad0, toplwad0_aero)
1721
             CALL histwrite_phy(o_sollwad, sollwad_aero)
1722
             CALL histwrite_phy(o_sollwad0, sollwad0_aero)
1723
          ENDIF
1724
          !====MS forcing diagnostics
1725
          !ym warning : topsw_aero, solsw_aero, topsw0_aero, solsw0_aero are not defined by model
1726
          !ym => init to 0 in radlwsw_m.F90 ztopsw_aero, zsolsw_aero, ztopsw0_aero, zsolsw0_aero
1727
1728
          IF (vars_defined) zx_tmp_fi2d(:)=topsw_aero(:,1)*swradcorr(:)
1729
          CALL histwrite_phy(o_swtoaas_nat,zx_tmp_fi2d)
1730
          IF (vars_defined) zx_tmp_fi2d(:)=solsw_aero(:,1)*swradcorr(:)
1731
          CALL histwrite_phy(o_swsrfas_nat,zx_tmp_fi2d)
1732
          IF (vars_defined) zx_tmp_fi2d(:)=topsw0_aero(:,1)*swradcorr(:)
1733
          CALL histwrite_phy(o_swtoacs_nat,zx_tmp_fi2d)
1734
          IF (vars_defined) zx_tmp_fi2d(:)=solsw0_aero(:,1)*swradcorr(:)
1735
          CALL histwrite_phy(o_swsrfcs_nat,zx_tmp_fi2d)
1736
          !ant
1737
          IF (vars_defined) zx_tmp_fi2d(:)=topsw_aero(:,2)*swradcorr(:)
1738
          CALL histwrite_phy(o_swtoaas_ant,zx_tmp_fi2d)
1739
          IF (vars_defined) zx_tmp_fi2d(:)=solsw_aero(:,2)*swradcorr(:)
1740
          CALL histwrite_phy(o_swsrfas_ant,zx_tmp_fi2d)
1741
          IF (vars_defined) zx_tmp_fi2d(:)=topsw0_aero(:,2)*swradcorr(:)
1742
          CALL histwrite_phy(o_swtoacs_ant,zx_tmp_fi2d)
1743
          IF (vars_defined) zx_tmp_fi2d(:)=solsw0_aero(:,2)*swradcorr(:)
1744
          CALL histwrite_phy(o_swsrfcs_ant,zx_tmp_fi2d)
1745
          !cf
1746
          IF (.not. aerosol_couple) THEN
1747
             IF (vars_defined) zx_tmp_fi2d(:)=topswcf_aero(:,1)*swradcorr(:)
1748
             CALL histwrite_phy(o_swtoacf_nat,zx_tmp_fi2d)
1749
             IF (vars_defined) zx_tmp_fi2d(:)=solswcf_aero(:,1)*swradcorr(:)
1750
             CALL histwrite_phy(o_swsrfcf_nat,zx_tmp_fi2d)
1751
             IF (vars_defined) zx_tmp_fi2d(:)=topswcf_aero(:,2)*swradcorr(:)
1752
             CALL histwrite_phy(o_swtoacf_ant,zx_tmp_fi2d)
1753
             IF (vars_defined) zx_tmp_fi2d(:)=solswcf_aero(:,2)*swradcorr(:)
1754
             CALL histwrite_phy(o_swsrfcf_ant,zx_tmp_fi2d)
1755
             IF (vars_defined) zx_tmp_fi2d(:)=topswcf_aero(:,3)*swradcorr(:)
1756
             CALL histwrite_phy(o_swtoacf_zero,zx_tmp_fi2d)
1757
             IF (vars_defined) zx_tmp_fi2d(:)=solswcf_aero(:,3)*swradcorr(:)
1758
             CALL histwrite_phy(o_swsrfcf_zero,zx_tmp_fi2d)
1759
          ENDIF
1760
          !====MS forcing diagnostics
1761
       ENDIF
1762
289
       IF (ok_aie) THEN
1763
          IF (vars_defined) zx_tmp_fi2d(:)= topswai_aero*swradcorr
1764
          CALL histwrite_phy(o_topswai, zx_tmp_fi2d)
1765
1766
          IF (vars_defined) zx_tmp_fi2d(:)=toplwai_aero*swradcorr
1767
          CALL histwrite_phy(o_toplwai, zx_tmp_fi2d)
1768
1769
          IF (vars_defined) zx_tmp_fi2d(:)=solswai_aero*swradcorr
1770
          CALL histwrite_phy(o_solswai, zx_tmp_fi2d)
1771
1772
          IF (vars_defined) zx_tmp_fi2d(:)=sollwai_aero*swradcorr
1773
          CALL histwrite_phy(o_sollwai, zx_tmp_fi2d)
1774
       ENDIF
1775

289
       IF (flag_aerosol.GT.0.AND.ok_cdnc) THEN
1776
          CALL histwrite_phy(o_scdnc, scdnc)
1777
          CALL histwrite_phy(o_cldncl, cldncl)
1778
          CALL histwrite_phy(o_reffclws, reffclws)
1779
          CALL histwrite_phy(o_reffclwc, reffclwc)
1780
          CALL histwrite_phy(o_cldnvi, cldnvi)
1781
          CALL histwrite_phy(o_lcc, lcc)
1782
          CALL histwrite_phy(o_lcc3d, lcc3d)
1783
          CALL histwrite_phy(o_lcc3dcon, lcc3dcon)
1784
          CALL histwrite_phy(o_lcc3dstra, lcc3dstra)
1785
          CALL histwrite_phy(o_icc3dcon, icc3dcon)
1786
          CALL histwrite_phy(o_icc3dstra, icc3dstra)
1787
          CALL histwrite_phy(o_cldicemxrat, zfice)
1788
          IF (vars_defined) zx_tmp_fi3d(:,:)=1-zfice(:,:)
1789
          CALL histwrite_phy(o_cldwatmxrat, zx_tmp_fi3d)
1790
          CALL histwrite_phy(o_reffclwtop, reffclwtop)
1791
       ENDIF
1792
       ! Champs 3D:
1793

289
       IF (ok_ade .OR. ok_aie) then
1794
          IF (type_trac/='inca' .OR. config_inca=='aeNP') THEN
1795
             CALL histwrite_phy(o_ec550aer, ec550aer)
1796
          ENDIF
1797
       ENDIF
1798
1799
289
       CALL histwrite_phy(o_lwcon, flwc)
1800
289
       CALL histwrite_phy(o_iwcon, fiwc)
1801
289
       CALL histwrite_phy(o_temp, t_seri)
1802
289
       CALL histwrite_phy(o_theta, theta)
1803
289
       CALL histwrite_phy(o_ovapinit, qx(:,:,ivap))
1804
289
       CALL histwrite_phy(o_ovap, q_seri)
1805
289
       CALL histwrite_phy(o_oliq, ql_seri)
1806
       !FC
1807
289
       CALL histwrite_phy(o_zxfluxt, zxfluxt)
1808
289
       CALL histwrite_phy(o_zxfluxq, zx_tmp_fi3d)
1809
       !FC
1810
1811

11176129
       IF (vars_defined) zx_tmp_fi3d = ql_seri+qs_seri
1812
289
       CALL histwrite_phy(o_ocond, zx_tmp_fi3d)
1813
1814
289
       CALL histwrite_phy(o_geop, zphi)
1815
289
       CALL histwrite_phy(o_vitu, u_seri)
1816
289
       CALL histwrite_phy(o_vitv, v_seri)
1817
289
       CALL histwrite_phy(o_vitw, omega)
1818
289
       CALL histwrite_phy(o_pres, pplay)
1819
289
       CALL histwrite_phy(o_paprs, paprs(:,1:klev))
1820
1821

11176129
       IF (vars_defined) zx_tmp_fi3d = zphi/RG
1822
289
       CALL histwrite_phy(o_zfull,zx_tmp_fi3d)
1823
1824
289
       IF (ok_bs) THEN
1825
          CALL histwrite_phy(o_qbs, qbs_seri)
1826
       ENDIF
1827
1828
#ifdef CPP_XIOS
1829
!solbnd begin
1830
#ifdef CPP_RRTM
1831
      IF (iflag_rrtm.EQ.1) THEN
1832
       IF (vars_defined) THEN
1833
        DO ISW=1, NSW
1834
          zx_tmp_fi3dsp(:,ISW) = swdn(:,klevp1)*swradcorr(:)*RSUN(ISW)
1835
        ENDDO
1836
        CALL histwrite_phy(o_solbnd, zx_tmp_fi3dsp)
1837
       ENDIF
1838
      ENDIF
1839
#endif
1840
!solbnd end
1841
#endif
1842
#endif
1843
1844
289
       IF (flag_aerosol_strat.EQ.2) THEN
1845
         CALL histwrite_phy(o_stratomask, stratomask)
1846
       ENDIF
1847
1848
289
       IF (vars_defined)  THEN
1849
286560
        zx_tmp_fi3d(:,1)= pphis(:)/RG
1850
11232
        DO k = 2, klev
1851
10889568
         DO i = 1, klon
1852
            zx_tmp_fi3d(i,k) = zphi(i,k-1)/RG + &
1853
                          (zphi(i,k)-zphi(i,k-1))/RG * &
1854
10889280
                          (paprs(i,k)-pplay(i,k-1))/(pplay(i,k)-pplay(i,k-1))
1855
         ENDDO
1856
        ENDDO
1857
       ENDIF
1858
289
       CALL histwrite_phy(o_zhalf, zx_tmp_fi3d)
1859
289
       CALL histwrite_phy(o_rneb, cldfra)
1860
289
       CALL histwrite_phy(o_rnebcon, rnebcon)
1861
289
       CALL histwrite_phy(o_rnebls, rneb)
1862
289
       CALL histwrite_phy(o_rneblsvol, rneblsvol)
1863
289
       IF (vars_defined)  THEN
1864
11520
          DO k=1, klev
1865
11176128
             DO i=1, klon
1866
11175840
                zx_tmp_fi3d(i,k)=cldfra(i,k)*JrNt(i)
1867
             ENDDO
1868
          ENDDO
1869
       ENDIF
1870
289
       CALL histwrite_phy(o_rnebjn, zx_tmp_fi3d)
1871
289
       CALL histwrite_phy(o_rhum, zx_rh)
1872
289
       IF (iflag_ice_thermo .GT. 0) THEN
1873

11176129
          IF (vars_defined) zx_tmp_fi3d = zx_rhl * 100.
1874
289
          CALL histwrite_phy(o_rhl, zx_tmp_fi3d)
1875

11176129
          IF (vars_defined) zx_tmp_fi3d = zx_rhi * 100.
1876
289
          CALL histwrite_phy(o_rhi, zx_tmp_fi3d)
1877
       ENDIF
1878
1879
289
       IF (ok_new_lscp) THEN
1880
289
           CALL histwrite_phy(o_pfraclr, pfraclr)
1881
289
           CALL histwrite_phy(o_pfracld, pfracld)
1882
       ENDIF
1883
1884
!--aviation & supersaturation
1885
289
       IF (ok_ice_sursat) THEN
1886
         CALL histwrite_phy(o_oclr, qclr)
1887
         CALL histwrite_phy(o_ocld, qcld)
1888
         CALL histwrite_phy(o_oss, qss)
1889
         CALL histwrite_phy(o_ovc, qvc)
1890
         CALL histwrite_phy(o_rnebclr, rnebclr)
1891
         CALL histwrite_phy(o_rnebss, rnebss)
1892
         CALL histwrite_phy(o_rnebseri, rneb_seri)
1893
         CALL histwrite_phy(o_gammass, gamma_ss)
1894
         CALL histwrite_phy(o_N1_ss, N1_ss)
1895
         CALL histwrite_phy(o_N2_ss, N2_ss)
1896
         CALL histwrite_phy(o_drnebsub, drneb_sub)
1897
         CALL histwrite_phy(o_drnebcon, drneb_con)
1898
         CALL histwrite_phy(o_drnebtur, drneb_tur)
1899
         CALL histwrite_phy(o_drnebavi, drneb_avi)
1900
         CALL histwrite_phy(o_qsatl, zqsatl)
1901
         CALL histwrite_phy(o_qsats, zqsats)
1902
         CALL histwrite_phy(o_Tcontr, Tcontr)
1903
         CALL histwrite_phy(o_qcontr, qcontr)
1904
         CALL histwrite_phy(o_qcontr2, qcontr2)
1905
         CALL histwrite_phy(o_fcontrN, fcontrN)
1906
         CALL histwrite_phy(o_fcontrP, fcontrP)
1907
       ENDIF
1908
289
       IF (ok_plane_contrail) THEN
1909
         CALL histwrite_phy(o_flight_m, flight_m)
1910
       ENDIF
1911
289
       IF (ok_plane_h2o) THEN
1912
         CALL histwrite_phy(o_flight_h2o, flight_h2o)
1913
       ENDIF
1914
1915

11176129
       IF (vars_defined) zx_tmp_fi3d = wo(:, :, 1) * dobson_u * 1e3 / zmasse / rmo3 * rmd
1916
289
       CALL histwrite_phy(o_ozone, zx_tmp_fi3d)
1917
1918
289
       IF (read_climoz == 2) THEN
1919
         IF (vars_defined) zx_tmp_fi3d = wo(:, :, 2) * dobson_u * 1e3 / zmasse / rmo3 * rmd
1920
         CALL histwrite_phy(o_ozone_light, zx_tmp_fi3d)
1921
       ENDIF
1922
1923
289
       CALL histwrite_phy(o_duphy, d_u)
1924
1925
289
       CALL histwrite_phy(o_dtphy, d_t)
1926
1927
289
       CALL histwrite_phy(o_dqphy,  d_qx(:,:,ivap))
1928
289
       IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,ivap),zmasse,zx_tmp_fi2d)
1929
289
       CALL histwrite_phy(o_dqphy2d,  zx_tmp_fi2d)
1930
1931
289
       CALL histwrite_phy(o_dqlphy,  d_qx(:,:,iliq))
1932
289
       IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,iliq),zmasse,zx_tmp_fi2d)
1933
289
       CALL histwrite_phy(o_dqlphy2d,  zx_tmp_fi2d)
1934
1935
289
       IF (nqo.EQ.3) THEN
1936
289
       CALL histwrite_phy(o_dqsphy,  d_qx(:,:,isol))
1937
289
       IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,isol),zmasse,zx_tmp_fi2d)
1938
289
       CALL histwrite_phy(o_dqsphy2d,  zx_tmp_fi2d)
1939
       ELSE
1940
       zx_tmp_fi3d=0.0
1941
       CALL histwrite_phy(o_dqsphy,  zx_tmp_fi3d)
1942
       zx_tmp_fi2d=0.0
1943
       CALL histwrite_phy(o_dqsphy2d,  zx_tmp_fi2d)
1944
       ENDIF
1945
1946
1947
289
       IF (ok_bs) THEN
1948
       CALL histwrite_phy(o_dqbsphy,  d_qx(:,:,ibs))
1949
       IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,ibs),zmasse,zx_tmp_fi2d)
1950
       CALL histwrite_phy(o_dqbsphy2d,  zx_tmp_fi2d)
1951
       ELSE
1952

11214934
       zx_tmp_fi3d=0.0
1953
289
       CALL histwrite_phy(o_dqbsphy,  zx_tmp_fi3d)
1954
287555
       zx_tmp_fi2d=0.0
1955
289
       CALL histwrite_phy(o_dqbsphy2d,  zx_tmp_fi2d)
1956
       ENDIF
1957
1958
1445
       DO nsrf=1, nbsrf
1959

1146244
          IF (vars_defined) zx_tmp_fi2d(1 : klon) = falb1( 1 : klon, nsrf)
1960
1156
          CALL histwrite_phy(o_albe_srf(nsrf), zx_tmp_fi2d)
1961

1146244
          IF (vars_defined) zx_tmp_fi2d(1 : klon) = z0m( 1 : klon, nsrf)
1962
1156
          CALL histwrite_phy(o_z0m_srf(nsrf), zx_tmp_fi2d)
1963

1146244
          IF (vars_defined) zx_tmp_fi2d(1 : klon) = z0h( 1 : klon, nsrf)
1964
1156
          CALL histwrite_phy(o_z0h_srf(nsrf), zx_tmp_fi2d)
1965

1146244
          IF (vars_defined) zx_tmp_fi2d(1 : klon) = agesno( 1 : klon, nsrf)
1966
1156
          CALL histwrite_phy(o_ages_srf(nsrf), zx_tmp_fi2d)
1967

1146244
          IF (vars_defined) zx_tmp_fi2d(1 : klon) = snow( 1 : klon, nsrf)
1968
1445
          CALL histwrite_phy(o_snow_srf(nsrf), zx_tmp_fi2d)
1969
       ENDDO !nsrf=1, nbsrf
1970
289
       CALL histwrite_phy(o_alb1, albsol1)
1971
289
       CALL histwrite_phy(o_alb2, albsol2)
1972
       !FH Sorties pour la couche limite
1973
289
       IF (iflag_pbl>1) THEN
1974

11214934
          zx_tmp_fi3d=0.
1975
289
          IF (vars_defined) THEN
1976
1440
             DO nsrf=1,nbsrf
1977
46368
                DO k=1,klev
1978
                   zx_tmp_fi3d(:,k)=zx_tmp_fi3d(:,k) &
1979
44704512
                        +pctsrf(:,nsrf)*pbl_tke(:,k,nsrf)
1980
                ENDDO
1981
             ENDDO
1982
          ENDIF
1983
289
          CALL histwrite_phy(o_tke, zx_tmp_fi3d)
1984
289
          CALL histwrite_phy(o_tke_max, zx_tmp_fi3d)
1985
1986
       ENDIF
1987
1988
289
       CALL histwrite_phy(o_kz, coefh(:,:,is_ave))
1989
1990
289
       CALL histwrite_phy(o_kz_max, coefh(:,:,is_ave))
1991
1992
289
       CALL histwrite_phy(o_clwcon, clwcon0)
1993
289
       CALL histwrite_phy(o_dtdyn, d_t_dyn)
1994
1995
289
       CALL histwrite_phy(o_dqdyn, d_q_dyn)
1996
1997
289
       CALL histwrite_phy(o_dqdyn2d,d_q_dyn2d)
1998
1999
289
       CALL histwrite_phy(o_dqldyn, d_ql_dyn)
2000
2001
289
       CALL histwrite_phy(o_dqldyn2d, d_ql_dyn2d)
2002
2003
289
       CALL histwrite_phy(o_dqsdyn, d_qs_dyn)
2004
2005
289
       CALL histwrite_phy(o_dqsdyn2d, d_qs_dyn2d)
2006
2007
289
       IF (ok_bs) THEN
2008
       CALL histwrite_phy(o_dqbsdyn, d_qbs_dyn)
2009
       CALL histwrite_phy(o_dqbsdyn2d, d_qbs_dyn2d)
2010
       ENDIF
2011
2012
289
       CALL histwrite_phy(o_dudyn, d_u_dyn)
2013
289
       CALL histwrite_phy(o_dvdyn, d_v_dyn)
2014
2015
289
       IF (vars_defined) THEN
2016

11176128
          zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys
2017
       ENDIF
2018
289
       CALL histwrite_phy(o_dtcon, zx_tmp_fi3d)
2019
289
       IF (iflag_thermals.EQ.0) THEN
2020
          IF (vars_defined) THEN
2021
             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
2022
                  d_t_ajsb(1:klon,1:klev)/pdtphys
2023
          ENDIF
2024
          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
2025

289
       ELSE IF(iflag_thermals.GE.1.AND.iflag_wake.EQ.1) THEN
2026
289
          IF (vars_defined) THEN
2027
             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
2028
                  d_t_ajs(1:klon,1:klev)/pdtphys + &
2029

11176128
                  d_t_wake(1:klon,1:klev)/pdtphys
2030
          ENDIF
2031
289
          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
2032
       ENDIF
2033

11176129
       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_con(1:klon,1:klev)/pdtphys
2034
289
       CALL histwrite_phy(o_ducon, zx_tmp_fi3d)
2035

11176129
       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_con(1:klon,1:klev)/pdtphys
2036
289
       CALL histwrite_phy(o_dvcon, zx_tmp_fi3d)
2037

11176129
       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
2038
289
       CALL histwrite_phy(o_dqcon, zx_tmp_fi3d)
2039
289
       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2040
289
       CALL histwrite_phy(o_dqcon2d, zx_tmp_fi2d)
2041
2042
289
       IF (iflag_thermals.EQ.0) THEN
2043
          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
2044
          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
2045

289
       ELSE IF (iflag_thermals.GE.1.AND.iflag_wake.EQ.1) THEN
2046
289
          IF (vars_defined) THEN
2047
             zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys + &
2048
                  d_q_ajs(1:klon,1:klev)/pdtphys + &
2049

11176128
                  d_q_wake(1:klon,1:klev)/pdtphys
2050
          ENDIF
2051
289
          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
2052
       ENDIF
2053
2054

11176129
       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lsc(1:klon,1:klev)/pdtphys
2055
289
       CALL histwrite_phy(o_dtlsc, zx_tmp_fi3d)
2056
289
       IF (vars_defined) zx_tmp_fi3d(1:klon, 1:klev)=(d_t_lsc(1:klon,1:klev)+ &
2057

11176128
            d_t_eva(1:klon,1:klev))/pdtphys
2058
289
       CALL histwrite_phy(o_dtlschr, zx_tmp_fi3d)
2059

11176129
       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys
2060
289
       CALL histwrite_phy(o_dqlsc, zx_tmp_fi3d)
2061
289
       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2062
289
       CALL histwrite_phy(o_dqlsc2d, zx_tmp_fi2d)
2063

11176129
       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=beta_prec(1:klon,1:klev)
2064
289
       CALL histwrite_phy(o_beta_prec, zx_tmp_fi3d)
2065
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2066
       ! Sorties specifiques a la separation thermiques/non thermiques
2067
289
       IF (iflag_thermals>=1) THEN
2068

11176129
          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscth(1:klon,1:klev)/pdtphys
2069
289
          CALL histwrite_phy(o_dtlscth, zx_tmp_fi3d)
2070

11176129
          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscst(1:klon,1:klev)/pdtphys
2071
289
          CALL histwrite_phy(o_dtlscst, zx_tmp_fi3d)
2072

11176129
          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscth(1:klon,1:klev)/pdtphys
2073
289
          CALL histwrite_phy(o_dqlscth, zx_tmp_fi3d)
2074
289
          IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2075
289
          CALL histwrite_phy(o_dqlscth2d, zx_tmp_fi2d)
2076

11176129
          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscst(1:klon,1:klev)/pdtphys
2077
289
          CALL histwrite_phy(o_dqlscst, zx_tmp_fi3d)
2078
289
          IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2079
289
          CALL histwrite_phy(o_dqlscst2d, zx_tmp_fi2d)
2080
289
          CALL histwrite_phy(o_plulth, plul_th)
2081
289
          CALL histwrite_phy(o_plulst, plul_st)
2082
289
          IF (vars_defined) THEN
2083
286560
             DO i=1,klon
2084
284840928
                zx_tmp_fi2d(1:klon)=lmax_th(:)
2085
             ENDDO
2086
          ENDIF
2087
289
          CALL histwrite_phy(o_lmaxth, zx_tmp_fi2d)
2088
289
          IF (vars_defined) THEN
2089
11520
             DO k=1,klev
2090
11176128
                DO i=1,klon
2091
11175840
                   IF (ptconvth(i,k)) THEN
2092
741581
                      zx_tmp_fi3d(i,k)=1.
2093
                   ELSE
2094
10423027
                      zx_tmp_fi3d(i,k)=0.
2095
                   ENDIF
2096
                ENDDO
2097
             ENDDO
2098
          ENDIF
2099
289
          CALL histwrite_phy(o_ptconvth, zx_tmp_fi3d)
2100
       ENDIF ! iflag_thermals>=1
2101
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2102

11214934
       zpt_conv = 0.
2103

11214934
       WHERE (ptconv) zpt_conv = 1.
2104
289
       CALL histwrite_phy(o_ptconv, zpt_conv)
2105
!!       IF (vars_defined)         zx_tmp_fi2d=float(itau_con)/float(itap)
2106
!!       CALL histwrite_phy(o_ftime_con, zx_tmp_fi2d)
2107
289
       IF (vars_defined) THEN
2108
286560
          zpt_conv2d(:) = 0.
2109
11520
          DO k=1,klev
2110

11176128
            WHERE (ptconv(:,k)) zpt_conv2d(:) = 1.
2111
          ENDDO
2112
       ENDIF
2113
289
       CALL histwrite_phy(o_ftime_deepcv, zpt_conv2d)
2114
289
       IF (vars_defined) THEN
2115
286560
          zx_tmp_fi2d(:) = 0.
2116
11520
          DO k=1,klev
2117

11176128
            WHERE (ptconvth(:,k)) zx_tmp_fi2d(:) = 1.
2118
          ENDDO
2119
       ENDIF
2120
289
       CALL histwrite_phy(o_ftime_th, zx_tmp_fi2d)
2121
289
       IF (vars_defined) THEN
2122
286560
           zx_tmp_fi2d(:) = max(zx_tmp_fi2d(:),zpt_conv2d(:))
2123
       ENDIF
2124
289
       CALL histwrite_phy(o_ftime_con, zx_tmp_fi2d)
2125
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2126

11176129
       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf(1:klon,1:klev)/pdtphys
2127
289
       CALL histwrite_phy(o_dtvdf, zx_tmp_fi3d)
2128

11176129
       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_diss(1:klon,1:klev)/pdtphys
2129
289
       CALL histwrite_phy(o_dtdis, zx_tmp_fi3d)
2130

11176129
       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf(1:klon,1:klev)/pdtphys
2131
289
       CALL histwrite_phy(o_dqvdf, zx_tmp_fi3d)
2132
289
       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2133
289
       CALL histwrite_phy(o_dqvdf2d, zx_tmp_fi2d)
2134

11176129
       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_eva(1:klon,1:klev)/pdtphys
2135
289
       CALL histwrite_phy(o_dteva, zx_tmp_fi3d)
2136

11176129
       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_eva(1:klon,1:klev)/pdtphys
2137
289
       CALL histwrite_phy(o_dqeva, zx_tmp_fi3d)
2138
289
       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2139
289
       CALL histwrite_phy(o_dqeva2d, zx_tmp_fi2d)
2140
289
       CALL histwrite_phy(o_ratqs, ratqs)
2141
289
       IF (vars_defined) THEN
2142
          zx_tmp_fi3d(1:klon,1:klev)=d_t_ajs(1:klon,1:klev)/pdtphys - &
2143

11176128
               d_t_ajsb(1:klon,1:klev)/pdtphys
2144
       ENDIF
2145
289
       CALL histwrite_phy(o_dtthe, zx_tmp_fi3d)
2146
289
       IF (vars_defined) THEN
2147

11176128
          zx_tmp_fi3d(1:klon,1:klev)=d_u_ajs(1:klon,1:klev)/pdtphys
2148
       ENDIF
2149
289
       CALL histwrite_phy(o_duthe, zx_tmp_fi3d)
2150
289
       IF (vars_defined) THEN
2151

11176128
          zx_tmp_fi3d(1:klon,1:klev)=d_v_ajs(1:klon,1:klev)/pdtphys
2152
       ENDIF
2153
289
       CALL histwrite_phy(o_dvthe, zx_tmp_fi3d)
2154
2155
289
       IF (ok_bs) THEN
2156
          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_qbs_vdf(1:klon,1:klev)/pdtphys
2157
          CALL histwrite_phy(o_dqbsvdf, zx_tmp_fi3d)
2158
          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_qbs_bs(1:klon,1:klev)/pdtphys
2159
          CALL histwrite_phy(o_dqbsbs, zx_tmp_fi3d)
2160
          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_bs(1:klon,1:klev)/pdtphys
2161
          CALL histwrite_phy(o_dqbs, zx_tmp_fi3d)
2162
          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_bs(1:klon,1:klev)/pdtphys
2163
          CALL histwrite_phy(o_dtbs, zx_tmp_fi3d)
2164
       ENDIF
2165
2166
289
       IF (iflag_thermals>=1) THEN
2167
          ! Pour l instant 0 a y reflichir pour les thermiques
2168
          ! regroupe avec ftime_deepcv et ftime_con
2169
          !!zx_tmp_fi2d=0.
2170
          !!CALL histwrite_phy(o_ftime_th, zx_tmp_fi2d)
2171
289
          CALL histwrite_phy(o_f_th, fm_therm)
2172
289
          CALL histwrite_phy(o_e_th, entr_therm)
2173
289
          CALL histwrite_phy(o_w_th, zw2)
2174
289
          CALL histwrite_phy(o_q_th, zqasc)
2175
289
          CALL histwrite_phy(o_a_th, fraca)
2176
289
          CALL histwrite_phy(o_cloudth_sth, cloudth_sth)
2177
289
          CALL histwrite_phy(o_cloudth_senv, cloudth_senv)
2178
289
          CALL histwrite_phy(o_cloudth_sigmath, cloudth_sigmath)
2179
289
          CALL histwrite_phy(o_cloudth_sigmaenv, cloudth_sigmaenv)
2180
289
          CALL histwrite_phy(o_d_th, detr_therm)
2181
289
          CALL histwrite_phy(o_f0_th, f0)
2182
289
          CALL histwrite_phy(o_zmax_th, zmax_th)
2183
289
          IF (vars_defined) THEN
2184
             zx_tmp_fi3d(1:klon,1:klev)=d_q_ajs(1:klon,1:klev)/pdtphys - &
2185

11176128
                  d_q_ajsb(1:klon,1:klev)/pdtphys
2186
          ENDIF
2187
289
          CALL histwrite_phy(o_dqthe, zx_tmp_fi3d)
2188
289
          IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2189
289
          CALL histwrite_phy(o_dqthe2d, zx_tmp_fi2d)
2190
       ENDIF !iflag_thermals
2191

11176129
       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ajsb(1:klon,1:klev)/pdtphys
2192
289
       CALL histwrite_phy(o_dtajs, zx_tmp_fi3d)
2193

11176129
       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_ajsb(1:klon,1:klev)/pdtphys
2194
289
       CALL histwrite_phy(o_dqajs, zx_tmp_fi3d)
2195
289
       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2196
289
       CALL histwrite_phy(o_dqajs2d, zx_tmp_fi2d)
2197

11176129
       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_swr(1:klon,1:klev)/pdtphys
2198
289
       CALL histwrite_phy(o_dtswr, zx_tmp_fi3d)
2199

11176129
       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_sw0(1:klon,1:klev)/pdtphys
2200
289
       CALL histwrite_phy(o_dtsw0, zx_tmp_fi3d)
2201

11176129
       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lwr(1:klon,1:klev)/pdtphys
2202
289
       CALL histwrite_phy(o_dtlwr, zx_tmp_fi3d)
2203

11176129
       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lw0(1:klon,1:klev)/pdtphys
2204
289
       CALL histwrite_phy(o_dtlw0, zx_tmp_fi3d)
2205

11176129
       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ec(1:klon,1:klev)/pdtphys
2206
289
       CALL histwrite_phy(o_dtec, zx_tmp_fi3d)
2207

11176129
       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_vdf(1:klon,1:klev)/pdtphys
2208
289
       CALL histwrite_phy(o_duvdf, zx_tmp_fi3d)
2209

11176129
       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_vdf(1:klon,1:klev)/pdtphys
2210
289
       CALL histwrite_phy(o_dvvdf, zx_tmp_fi3d)
2211
289
       IF (ok_orodr) THEN
2212

11176129
          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_oro(1:klon,1:klev)/pdtphys
2213
289
          CALL histwrite_phy(o_duoro, zx_tmp_fi3d)
2214

11176129
          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_oro(1:klon,1:klev)/pdtphys
2215
289
          CALL histwrite_phy(o_dvoro, zx_tmp_fi3d)
2216

11176129
          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_oro(1:klon,1:klev)/pdtphys
2217
289
          CALL histwrite_phy(o_dtoro, zx_tmp_fi3d)
2218
       ENDIF
2219
289
       IF (ok_orolf) THEN
2220

11176129
          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_lif(1:klon,1:klev)/pdtphys
2221
289
          CALL histwrite_phy(o_dulif, zx_tmp_fi3d)
2222
2223

11176129
          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_lif(1:klon,1:klev)/pdtphys
2224
289
          CALL histwrite_phy(o_dvlif, zx_tmp_fi3d)
2225
2226

11176129
          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lif(1:klon,1:klev)/pdtphys
2227
289
          CALL histwrite_phy(o_dtlif, zx_tmp_fi3d)
2228
       ENDIF
2229
2230
289
       IF (ok_hines) THEN
2231
          IF (vars_defined) zx_tmp_fi3d=du_gwd_hines/pdtphys
2232
          CALL histwrite_phy(o_du_gwd_hines, zx_tmp_fi3d)
2233
2234
          IF (vars_defined) zx_tmp_fi3d= dv_gwd_hines/pdtphys
2235
          CALL histwrite_phy(o_dv_gwd_hines, zx_tmp_fi3d)
2236
2237
          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_hin(1:klon,1:klev)/pdtphys
2238
          CALL histwrite_phy(o_dthin, zx_tmp_fi3d)
2239
          CALL histwrite_phy(o_ustr_gwd_hines, zustr_gwd_hines)
2240
          CALL histwrite_phy(o_vstr_gwd_hines, zvstr_gwd_hines)
2241
       ENDIF
2242
2243

289
       IF (.not. ok_hines .and. ok_gwd_rando) THEN
2244

11176129
          IF (vars_defined)  zx_tmp_fi3d=du_gwd_front / pdtphys
2245
289
          CALL histwrite_phy(o_du_gwd_front, zx_tmp_fi3d)
2246
2247

11176129
          IF (vars_defined)  zx_tmp_fi3d=dv_gwd_front / pdtphys
2248
289
          CALL histwrite_phy(o_dv_gwd_front, zx_tmp_fi3d)
2249
2250
289
          CALL histwrite_phy(o_ustr_gwd_front, zustr_gwd_front)
2251
289
          CALL histwrite_phy(o_vstr_gwd_front, zvstr_gwd_front)
2252
       ENDIF
2253
2254
289
       IF (ok_gwd_rando) THEN
2255

11176129
          IF (vars_defined)  zx_tmp_fi3d=du_gwd_rando / pdtphys
2256
289
          CALL histwrite_phy(o_du_gwd_rando, zx_tmp_fi3d)
2257
2258

11176129
          IF (vars_defined)  zx_tmp_fi3d=dv_gwd_rando / pdtphys
2259
289
          CALL histwrite_phy(o_dv_gwd_rando, zx_tmp_fi3d)
2260
289
          CALL histwrite_phy(o_ustr_gwd_rando, zustr_gwd_rando)
2261
289
          CALL histwrite_phy(o_vstr_gwd_rando, zvstr_gwd_rando)
2262
289
          CALL histwrite_phy(o_east_gwstress, east_gwstress )
2263
289
          CALL histwrite_phy(o_west_gwstress, west_gwstress )
2264
       ENDIF
2265
2266
289
       IF (ok_qch4) THEN
2267
          IF (vars_defined) zx_tmp_fi3d=d_q_ch4 / pdtphys
2268
          CALL histwrite_phy(o_dqch4, zx_tmp_fi3d)
2269
       ENDIF
2270
2271
289
       IF (vars_defined) THEN
2272
11808
         DO k=1, klevp1
2273
11462688
           zx_tmp_fi3d1(:,k)=swup(:,k)*swradcorr(:)
2274
         ENDDO
2275
       ENDIF
2276
2277
289
       CALL histwrite_phy(o_rsu, zx_tmp_fi3d1)
2278
2279
2280
289
       IF (vars_defined) THEN
2281
11808
         DO k=1, klevp1
2282
11462688
           zx_tmp_fi3d1(:,k)=swdn(:,k)*swradcorr(:)
2283
         ENDDO
2284
       ENDIF
2285
2286
289
       CALL histwrite_phy(o_rsd, zx_tmp_fi3d1)
2287
2288
289
       IF (vars_defined) THEN
2289
11808
         DO k=1, klevp1
2290
11462688
           zx_tmp_fi3d1(:,k)=swup0(:,k)*swradcorr(:)
2291
         ENDDO
2292
       ENDIF
2293
2294
289
       CALL histwrite_phy(o_rsucs, zx_tmp_fi3d1)
2295
2296

289
       IF (type_trac/='inca' .OR. config_inca=='aeNP') THEN
2297
289
          IF (vars_defined) THEN
2298
11808
             DO k=1, klevp1
2299
11462688
                zx_tmp_fi3d1(:,k)=swupc0(:,k)*swradcorr(:)
2300
             ENDDO
2301
          ENDIF
2302
289
          CALL histwrite_phy(o_rsucsaf, zx_tmp_fi3d1)
2303
       ENDIF
2304
2305
289
       IF (vars_defined) THEN
2306
11808
         DO k=1, klevp1
2307
11462688
           zx_tmp_fi3d1(:,k)=swdn0(:,k)*swradcorr(:)
2308
         ENDDO
2309
       ENDIF
2310
289
       CALL histwrite_phy(o_rsdcs, zx_tmp_fi3d1)
2311
2312

289
       IF (type_trac/='inca' .OR. config_inca=='aeNP') THEN
2313
289
          IF (vars_defined) THEN
2314
11808
             DO k=1, klevp1
2315
11462688
                zx_tmp_fi3d1(:,k)=swdnc0(:,k)*swradcorr(:)
2316
             ENDDO
2317
          ENDIF
2318
289
          CALL histwrite_phy(o_rsdcsaf, zx_tmp_fi3d1)
2319
       ENDIF
2320
2321
289
       CALL histwrite_phy(o_rlu, lwup)
2322
289
       CALL histwrite_phy(o_rld, lwdn)
2323
289
       CALL histwrite_phy(o_rlucs, lwup0)
2324
289
       CALL histwrite_phy(o_rldcs, lwdn0)
2325
2326
289
       IF (vars_defined) THEN
2327
          zx_tmp_fi3d(1:klon,1:klev)=d_t(1:klon,1:klev)+ &
2328

11176128
               d_t_dyn(1:klon,1:klev)
2329
       ENDIF
2330
289
       CALL histwrite_phy(o_tnt, zx_tmp_fi3d)
2331
2332
289
       IF (vars_defined) THEN
2333
          zx_tmp_fi3d(1:klon,1:klev)=d_t_swr(1:klon,1:klev)/pdtphys + &
2334

11176128
               d_t_lwr(1:klon,1:klev)/pdtphys
2335
       ENDIF
2336
289
       CALL histwrite_phy(o_tntr, zx_tmp_fi3d)
2337
289
       IF (vars_defined) THEN
2338
          zx_tmp_fi3d(1:klon,1:klev)= (d_t_lsc(1:klon,1:klev)+ &
2339
               d_t_eva(1:klon,1:klev)+ &
2340

11176128
               d_t_vdf(1:klon,1:klev))/pdtphys
2341
       ENDIF
2342
289
       CALL histwrite_phy(o_tntscpbl, zx_tmp_fi3d)
2343
289
       IF (vars_defined) THEN
2344
          zx_tmp_fi3d(1:klon,1:klev)=d_qx(1:klon,1:klev,ivap)+ &
2345

11176128
               d_q_dyn(1:klon,1:klev)
2346
       ENDIF
2347
289
       CALL histwrite_phy(o_tnhus, zx_tmp_fi3d)
2348
289
       IF (vars_defined) THEN
2349
          zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys+ &
2350

11176128
               d_q_eva(1:klon,1:klev)/pdtphys
2351
       ENDIF
2352
289
       CALL histwrite_phy(o_tnhusscpbl, zx_tmp_fi3d)
2353
289
       CALL histwrite_phy(o_evu, coefm(:,:,is_ave))
2354
289
       IF (vars_defined) THEN
2355
          zx_tmp_fi3d(1:klon,1:klev)=q_seri(1:klon,1:klev)+ &
2356

11176128
               ql_seri(1:klon,1:klev)
2357
       ENDIF
2358
289
       CALL histwrite_phy(o_h2o, zx_tmp_fi3d)
2359
289
       IF (iflag_con >= 3) THEN
2360
289
          IF (vars_defined) THEN
2361
             zx_tmp_fi3d(1:klon,1:klev)=-1 * (dnwd(1:klon,1:klev)+ &
2362

11176128
                  dnwd0(1:klon,1:klev))
2363
          ENDIF
2364
289
          CALL histwrite_phy(o_mcd, zx_tmp_fi3d)
2365
289
          IF (vars_defined) THEN
2366
             zx_tmp_fi3d(1:klon,1:klev)=upwd(1:klon,1:klev) + &
2367

11176128
                  dnwd(1:klon,1:klev)+ dnwd0(1:klon,1:klev)
2368
          ENDIF
2369
289
          CALL histwrite_phy(o_dmc, zx_tmp_fi3d)
2370
       ELSE IF (iflag_con == 2) THEN
2371
          CALL histwrite_phy(o_mcd,  pmfd)
2372
          IF (vars_defined) zx_tmp_fi3d = pmfu + pmfd
2373
          CALL histwrite_phy(o_dmc,  zx_tmp_fi3d)
2374
       ENDIF
2375
289
       CALL histwrite_phy(o_ref_liq, ref_liq)
2376
289
       CALL histwrite_phy(o_ref_ice, ref_ice)
2377
!
2378
289
       IF (ok_4xCO2atm) THEN
2379
          IF (vars_defined) zx_tmp_fi2d(:) = swupp(:,klevp1)*swradcorr(:)
2380
          CALL histwrite_phy(o_rsut4co2, zx_tmp_fi2d)
2381
          IF (vars_defined) zx_tmp_fi2d(:) = lwupp(:,klevp1)
2382
          CALL histwrite_phy(o_rlut4co2, zx_tmp_fi2d)
2383
          IF (vars_defined) zx_tmp_fi2d(:) = swup0p(:,klevp1)*swradcorr(:)
2384
          CALL histwrite_phy(o_rsutcs4co2, zx_tmp_fi2d)
2385
          IF (vars_defined) zx_tmp_fi2d(:) = lwup0p(:,klevp1)
2386
          CALL histwrite_phy(o_rlutcs4co2, zx_tmp_fi2d)
2387
          IF (vars_defined) THEN
2388
            DO k=1, klevp1
2389
              zx_tmp_fi3d1(:,k)=swupp(:,k)*swradcorr(:)
2390
            ENDDO
2391
          ENDIF
2392
          CALL histwrite_phy(o_rsu4co2, zx_tmp_fi3d1)
2393
          IF (vars_defined) THEN
2394
            DO k=1, klevp1
2395
              zx_tmp_fi3d1(:,k)=swup0p(:,k)*swradcorr(:)
2396
            ENDDO
2397
          ENDIF
2398
          CALL histwrite_phy(o_rsucs4co2, zx_tmp_fi3d1)
2399
          IF (vars_defined) THEN
2400
            DO k=1, klevp1
2401
              zx_tmp_fi3d1(:,k)=swdnp(:,k)*swradcorr(:)
2402
            ENDDO
2403
          ENDIF
2404
          CALL histwrite_phy(o_rsd4co2, zx_tmp_fi3d1)
2405
          IF (vars_defined) THEN
2406
            DO k=1, klevp1
2407
              zx_tmp_fi3d1(:,k)=swdn0p(:,k)*swradcorr(:)
2408
            ENDDO
2409
          ENDIF
2410
          CALL histwrite_phy(o_rsdcs4co2, zx_tmp_fi3d1)
2411
          CALL histwrite_phy(o_rlu4co2, lwupp)
2412
          CALL histwrite_phy(o_rlucs4co2, lwup0p)
2413
          CALL histwrite_phy(o_rld4co2, lwdnp)
2414
          CALL histwrite_phy(o_rldcs4co2, lwdn0p)
2415
       ENDIF !ok_4xCO2atm
2416
!!!!!!!!!!!! Sorties niveaux de pression NMC !!!!!!!!!!!!!!!!!!!!
2417
#ifdef CPP_IOIPSL
2418
#ifndef CPP_XIOS
2419
289
  IF (.NOT.ok_all_xml) THEN
2420
       ! ATTENTION, LES ANCIENS HISTWRITE ONT ETES CONSERVES EN ATTENDANT MIEUX:
2421
       ! Champs interpolles sur des niveaux de pression
2422
1156
       DO iff=7, nfiles-1 !--OB: here we deal with files 7,8,9
2423
2424
867
          CALL histwrite_phy(o_tnondef,tnondef(:,:,iff-6),iff)
2425
867
          CALL histwrite_phy(o_ta,twriteSTD(:,:,iff-6),iff)
2426
867
          CALL histwrite_phy(o_zg,phiwriteSTD(:,:,iff-6),iff)
2427
867
          CALL histwrite_phy(o_hus,qwriteSTD(:,:,iff-6),iff)
2428
867
          CALL histwrite_phy(o_hur,rhwriteSTD(:,:,iff-6),iff)
2429
867
          CALL histwrite_phy(o_ua,uwriteSTD(:,:,iff-6),iff)
2430
867
          CALL histwrite_phy(o_va,vwriteSTD(:,:,iff-6),iff)
2431
867
          CALL histwrite_phy(o_wap,wwriteSTD(:,:,iff-6),iff)
2432
867
          IF (vars_defined) THEN
2433
15552
             DO k=1, nlevSTD
2434
14615424
                DO i=1, klon
2435
14614560
                   IF (tnondef(i,k,iff-6).NE.missing_val) THEN
2436
14599872
                      IF (freq_outNMC(iff-6).LT.0) THEN
2437
                         freq_moyNMC(iff-6)=(mth_len*un_jour)/freq_calNMC(iff-6)
2438
                      ELSE
2439
14599872
                         freq_moyNMC(iff-6)=freq_outNMC(iff-6)/freq_calNMC(iff-6)
2440
                      ENDIF
2441
14599872
                      zx_tmp_fi3d_STD(i,k) = (100.*tnondef(i,k,iff-6))/freq_moyNMC(iff-6)
2442
                   ELSE
2443
                      zx_tmp_fi3d_STD(i,k) = missing_val
2444
                   ENDIF
2445
                ENDDO
2446
             ENDDO
2447
          ENDIF
2448
867
          CALL histwrite_phy(o_psbg,zx_tmp_fi3d_STD,iff)
2449
867
          IF (vars_defined) THEN
2450
15552
             DO k=1, nlevSTD
2451
14615424
                DO i=1, klon
2452
14614560
                   IF (O3sumSTD(i,k,iff-6).NE.missing_val) THEN
2453
14579172
                      zx_tmp_fi3d_STD(i,k) = O3sumSTD(i,k,iff-6) * 1.e+9
2454
                   ELSE
2455
20700
                      zx_tmp_fi3d_STD(i,k) = missing_val
2456
                   ENDIF
2457
                ENDDO
2458
             ENDDO !k=1, nlevSTD
2459
          ENDIF
2460
867
          CALL histwrite_phy(o_tro3,zx_tmp_fi3d_STD,iff)
2461
867
          IF (read_climoz == 2) THEN
2462
             IF (vars_defined) THEN
2463
                DO k=1, nlevSTD
2464
                   DO i=1, klon
2465
                      IF (O3daysumSTD(i,k,iff-6).NE.missing_val) THEN
2466
                         zx_tmp_fi3d_STD(i,k) = O3daysumSTD(i,k,iff-6) * 1.e+9
2467
                      ELSE
2468
                         zx_tmp_fi3d_STD(i,k) = missing_val
2469
                      ENDIF
2470
                   ENDDO
2471
                ENDDO !k=1, nlevSTD
2472
             ENDIF
2473
             CALL histwrite_phy(o_tro3_daylight,zx_tmp_fi3d_STD,iff)
2474
          endif
2475
867
          CALL histwrite_phy(o_uxv,uvsumSTD(:,:,iff-6),iff)
2476
867
          CALL histwrite_phy(o_vxq,vqsumSTD(:,:,iff-6),iff)
2477
867
          CALL histwrite_phy(o_vxT,vTsumSTD(:,:,iff-6),iff)
2478
867
          CALL histwrite_phy(o_wxq,wqsumSTD(:,:,iff-6),iff)
2479
867
          CALL histwrite_phy(o_vxphi,vphisumSTD(:,:,iff-6),iff)
2480
867
          CALL histwrite_phy(o_wxT,wTsumSTD(:,:,iff-6),iff)
2481
867
          CALL histwrite_phy(o_uxu,u2sumSTD(:,:,iff-6),iff)
2482
867
          CALL histwrite_phy(o_vxv,v2sumSTD(:,:,iff-6),iff)
2483
1156
          CALL histwrite_phy(o_TxT,T2sumSTD(:,:,iff-6),iff)
2484
       ENDDO !nfiles
2485
  ENDIF
2486
#endif
2487
#endif
2488
#ifdef CPP_XIOS
2489
  IF (ok_all_xml) THEN
2490
!      DO iff=7, nfiles
2491
2492
!         CALL histwrite_phy(o_tnondef,tnondef(:,:,3))
2493
          CALL histwrite_phy(o_ta,tlevSTD(:,:))
2494
          CALL histwrite_phy(o_zg,philevSTD(:,:))
2495
          CALL histwrite_phy(o_hus,qlevSTD(:,:))
2496
          CALL histwrite_phy(o_hur,rhlevSTD(:,:))
2497
          CALL histwrite_phy(o_ua,ulevSTD(:,:))
2498
          CALL histwrite_phy(o_va,vlevSTD(:,:))
2499
          CALL histwrite_phy(o_wap,wlevSTD(:,:))
2500
!         IF (vars_defined) THEN
2501
!            DO k=1, nlevSTD
2502
!               DO i=1, klon
2503
!                  IF (tnondef(i,k,3).NE.missing_val) THEN
2504
!                     IF (freq_outNMC(iff-6).LT.0) THEN
2505
!                        freq_moyNMC(iff-6)=(mth_len*un_jour)/freq_calNMC(iff-6)
2506
!                     ELSE
2507
!                        freq_moyNMC(iff-6)=freq_outNMC(iff-6)/freq_calNMC(iff-6)
2508
!                     ENDIF
2509
!                     zx_tmp_fi3d_STD(i,k) = (100.*tnondef(i,k,3))/freq_moyNMC(iff-6)
2510
!                  ELSE
2511
!                     zx_tmp_fi3d_STD(i,k) = missing_val
2512
!                  ENDIF
2513
!               ENDDO
2514
!            ENDDO
2515
!         ENDIF
2516
!         CALL histwrite_phy(o_psbg,zx_tmp_fi3d_STD)
2517
          IF (vars_defined) THEN
2518
             DO k=1, nlevSTD
2519
                DO i=1, klon
2520
                   IF (O3STD(i,k).NE.missing_val) THEN
2521
                      zx_tmp_fi3d_STD(i,k) = O3STD(i,k) * 1.e+9
2522
                   ELSE
2523
                      zx_tmp_fi3d_STD(i,k) = missing_val
2524
                   ENDIF
2525
                ENDDO
2526
             ENDDO !k=1, nlevSTD
2527
          ENDIF
2528
          CALL histwrite_phy(o_tro3,zx_tmp_fi3d_STD)
2529
          IF (read_climoz == 2) THEN
2530
             IF (vars_defined) THEN
2531
                DO k=1, nlevSTD
2532
                   DO i=1, klon
2533
                      IF (O3daySTD(i,k).NE.missing_val) THEN
2534
                         zx_tmp_fi3d_STD(i,k) = O3daySTD(i,k) * 1.e+9
2535
                      ELSE
2536
                         zx_tmp_fi3d_STD(i,k) = missing_val
2537
                      ENDIF
2538
                   ENDDO
2539
                ENDDO !k=1, nlevSTD
2540
             ENDIF
2541
             CALL histwrite_phy(o_tro3_daylight,zx_tmp_fi3d_STD)
2542
          ENDIF
2543
          CALL histwrite_phy(o_uxv,uvSTD(:,:))
2544
          CALL histwrite_phy(o_vxq,vqSTD(:,:))
2545
          CALL histwrite_phy(o_vxT,vTSTD(:,:))
2546
          CALL histwrite_phy(o_wxq,wqSTD(:,:))
2547
          CALL histwrite_phy(o_vxphi,vphiSTD(:,:))
2548
          CALL histwrite_phy(o_wxT,wTSTD(:,:))
2549
          CALL histwrite_phy(o_uxu,u2STD(:,:))
2550
          CALL histwrite_phy(o_vxv,v2STD(:,:))
2551
          CALL histwrite_phy(o_TxT,T2STD(:,:))
2552
!      ENDDO !nfiles
2553
  ENDIF
2554
#endif
2555
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2556
289
       IF (iflag_phytrac == 1 ) then
2557
!
2558
289
         IF (type_trac == 'co2i') THEN
2559
           itr = 0
2560
           DO iq = 1, nqtot
2561
             IF(.NOT.tracers(iq)%isInPhysics) CYCLE
2562
             itr = itr + 1
2563
!            write(*,*) 'phys_output_write_mod 2370: itr=',itr
2564
             !--3D fields
2565
             CALL histwrite_phy(o_trac(itr), tr_seri(:,:,itr))
2566
             CALL histwrite_phy(o_dtr_vdf(itr),d_tr_cl(:,:,itr))
2567
             CALL histwrite_phy(o_dtr_the(itr),d_tr_th(:,:,itr))
2568
             CALL histwrite_phy(o_dtr_con(itr),d_tr_cv(:,:,itr))
2569
             !--2D fields
2570
             !--CO2 burden
2571
             zx_tmp_fi2d=0.
2572
             IF (vars_defined) THEN
2573
                DO k=1,klev
2574
                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,itr)
2575
                ENDDO
2576
             ENDIF
2577
             CALL histwrite_phy(o_trac_cum(itr), zx_tmp_fi2d)
2578
           ENDDO !--iq
2579
           !--CO2 net fluxes
2580
           CALL histwrite_phy(o_flx_co2_land,  fco2_land)
2581
           CALL histwrite_phy(o_flx_co2_ocean, fco2_ocean)
2582
           CALL histwrite_phy(o_flx_co2_ocean_cor, fco2_ocean_cor)
2583
           CALL histwrite_phy(o_flx_co2_land_cor, fco2_land_cor)
2584
           CALL histwrite_phy(o_flx_co2_ff,    fco2_ff)
2585
           CALL histwrite_phy(o_flx_co2_bb,    fco2_bb)
2586
2587
289
         ELSE IF (type_trac == 'inco') THEN
2588
           itr = 0
2589
           DO iq = 1, nqtot
2590
             IF(.NOT.tracers(iq)%isInPhysics) CYCLE
2591
             itr = itr+1
2592
             IF(tracers(iq)%component /= 'co2i') CYCLE
2593
             !--3D fields
2594
             CALL histwrite_phy(o_trac   (itr),tr_seri(:,:,itr))
2595
             CALL histwrite_phy(o_dtr_vdf(itr),d_tr_cl(:,:,itr))
2596
             CALL histwrite_phy(o_dtr_the(itr),d_tr_th(:,:,itr))
2597
             CALL histwrite_phy(o_dtr_con(itr),d_tr_cv(:,:,itr))
2598
             !--2D fields
2599
             !--CO2 burden
2600
             zx_tmp_fi2d=0.
2601
             IF (vars_defined) THEN
2602
                DO k=1,klev
2603
                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,itr)
2604
                ENDDO
2605
             ENDIF
2606
             CALL histwrite_phy(o_trac_cum(itr), zx_tmp_fi2d)
2607
           ENDDO !--iq
2608
           !--CO2 net fluxes
2609
           CALL histwrite_phy(o_flx_co2_land,  fco2_land)
2610
           CALL histwrite_phy(o_flx_co2_ocean, fco2_ocean)
2611
           CALL histwrite_phy(o_flx_co2_ocean_cor, fco2_ocean_cor)
2612
           CALL histwrite_phy(o_flx_co2_land_cor, fco2_land_cor)
2613
           CALL histwrite_phy(o_flx_co2_ff,    fco2_ff)
2614
           CALL histwrite_phy(o_flx_co2_bb,    fco2_bb)
2615
2616

289
         ELSE IF (ANY(type_trac==['lmdz','coag'])) THEN
2617
           itr = 0
2618
1734
           DO iq = 1, nqtot
2619
1445
             IF(.NOT.tracers(iq)%isInPhysics) CYCLE
2620
578
             itr = itr + 1
2621
!            write(*,*) 'phys_output_write_mod 2337: itr=',itr
2622
             !--3D fields
2623
578
             CALL histwrite_phy(o_trac(itr), tr_seri(:,:,itr))
2624
578
             CALL histwrite_phy(o_dtr_vdf(itr),d_tr_cl(:,:,itr))
2625
578
             CALL histwrite_phy(o_dtr_the(itr),d_tr_th(:,:,itr))
2626
578
             CALL histwrite_phy(o_dtr_con(itr),d_tr_cv(:,:,itr))
2627
578
             CALL histwrite_phy(o_dtr_lessi_impa(itr),d_tr_lessi_impa(:,:,itr))
2628
578
             CALL histwrite_phy(o_dtr_lessi_nucl(itr),d_tr_lessi_nucl(:,:,itr))
2629
578
             CALL histwrite_phy(o_dtr_insc(itr),d_tr_insc(:,:,itr))
2630
578
             CALL histwrite_phy(o_dtr_bcscav(itr),d_tr_bcscav(:,:,itr))
2631
578
             CALL histwrite_phy(o_dtr_evapls(itr),d_tr_evapls(:,:,itr))
2632
578
             CALL histwrite_phy(o_dtr_ls(itr),d_tr_ls(:,:,itr))
2633
578
             CALL histwrite_phy(o_dtr_trsp(itr),d_tr_trsp(:,:,itr))
2634
578
             CALL histwrite_phy(o_dtr_sscav(itr),d_tr_sscav(:,:,itr))
2635
578
             CALL histwrite_phy(o_dtr_sat(itr),d_tr_sat(:,:,itr))
2636
578
             CALL histwrite_phy(o_dtr_uscav(itr),d_tr_uscav(:,:,itr))
2637
            !--2D fields
2638
578
             CALL histwrite_phy(o_dtr_dry(itr), flux_tr_dry(:,itr))
2639
575110
             zx_tmp_fi2d=0.
2640
578
             IF (vars_defined) THEN
2641
23040
                DO k=1,klev
2642
22352256
                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,itr)
2643
                ENDDO
2644
             ENDIF
2645
1734
             CALL histwrite_phy(o_trac_cum(itr), zx_tmp_fi2d)
2646
           ENDDO !--iq
2647
         ENDIF   !--type_trac
2648
       ENDIF   !(iflag_phytrac==1)
2649
2650
289
       if (activate_ocean_skin >= 1) then
2651
          CALL histwrite_phy(o_delta_sst, delta_sst)
2652
          CALL histwrite_phy(o_delta_sal, delta_sal)
2653
          CALL histwrite_phy(o_ds_ns, ds_ns)
2654
          CALL histwrite_phy(o_dt_ns, dt_ns)
2655
          CALL histwrite_phy(o_dter, dter)
2656
          CALL histwrite_phy(o_dser, dser)
2657
          CALL histwrite_phy(o_tkt, tkt)
2658
          CALL histwrite_phy(o_tks, tks)
2659
          CALL histwrite_phy(o_taur, taur)
2660
          CALL histwrite_phy(o_sss, sss)
2661
       end if
2662
2663
#ifdef ISO
2664
    do ixt=1,ntiso
2665
!        write(*,*) 'ixt'
2666
        IF (vars_defined) zx_tmp_fi2d(:) = xtrain_fall(ixt,:) + xtsnow_fall(ixt,:)
2667
        CALL histwrite_phy(o_xtprecip(ixt), zx_tmp_fi2d)
2668
2669
        IF (vars_defined) zx_tmp_fi2d(:) = xtrain_lsc(ixt,:) + xtsnow_lsc(ixt,:)
2670
        CALL histwrite_phy(o_xtplul(ixt), zx_tmp_fi2d)
2671
2672
        IF (vars_defined) zx_tmp_fi2d(:) = xtrain_con(ixt,:) + xtsnow_con(ixt,:)
2673
        CALL histwrite_phy(o_xtpluc(ixt), zx_tmp_fi2d)
2674
        CALL histwrite_phy(o_xtevap(ixt),   xtevap(ixt,:))
2675
        CALL histwrite_phy(o_xtovap(ixt),  xt_seri(ixt,:,:))
2676
        CALL histwrite_phy(o_xtoliq(ixt), xtl_seri(ixt,:,:))
2677
2678
        DO nsrf = 1, nbsrf ! ajout Camille 8 mai 2023
2679
        IF (vars_defined)       zx_tmp_fi2d(1 : klon) = fxtevap(ixt,:, nsrf)
2680
        CALL histwrite_phy(o_xtevap_srf(ixt,nsrf), zx_tmp_fi2d)
2681
        ENDDO
2682
2683
        IF (vars_defined) zx_tmp_fi3d(:,:)=xtl_seri(ixt,:,:)+xts_seri(ixt,:,:)
2684
        CALL histwrite_phy(o_xtcond(ixt), zx_tmp_fi3d)
2685
        CALL histwrite_phy(o_dxtdyn(ixt),   d_xt_dyn(ixt,:,:))
2686
        CALL histwrite_phy(o_dxtldyn(ixt), d_xtl_dyn(ixt,:,:))
2687
2688
        IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_con(ixt,:,:)/pdtphys
2689
        CALL histwrite_phy(o_dxtcon(ixt), zx_tmp_fi3d)
2690
2691
        IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_lsc(ixt,:,:)/pdtphys
2692
        CALL histwrite_phy(o_dxtlsc(ixt), zx_tmp_fi3d)
2693
2694
        IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_eva(ixt,:,:)/pdtphys
2695
        CALL histwrite_phy(o_dxteva(ixt), zx_tmp_fi3d)
2696
2697
        IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_vdf(ixt,:,:)/pdtphys
2698
        CALL histwrite_phy(o_dxtvdf(ixt), zx_tmp_fi3d)
2699
2700
        IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_ajsb(ixt,:,:)/pdtphys
2701
        CALL histwrite_phy(o_dxtajs(ixt), zx_tmp_fi3d)
2702
2703
        IF (vars_defined) zx_tmp_fi3d(:,:)=(d_xt_ajs(ixt,:,:)-d_xt_ajsb(ixt,:,:))/pdtphys
2704
        CALL histwrite_phy(o_dxtthe(ixt), zx_tmp_fi3d)
2705
2706
        IF (ok_qch4) THEN
2707
          IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_ch4(ixt,:,:)/pdtphys
2708
          CALL histwrite_phy(o_dxtch4(ixt), zx_tmp_fi3d)
2709
        END IF
2710
2711
        IF (ixt == iso_HTO) THEN
2712
          IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_prod_nucl(ixt,:,:)/pdtphys
2713
          CALL histwrite_phy(o_dxtprod_nucl(ixt), zx_tmp_fi3d)
2714
2715
          IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_cosmo(ixt,:,:)/pdtphys
2716
          CALL histwrite_phy(o_dxtcosmo(ixt), zx_tmp_fi3d)
2717
2718
          IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_decroiss(ixt,:,:)/pdtphys
2719
          CALL histwrite_phy(o_dxtdecroiss(ixt), zx_tmp_fi3d)
2720
        END IF
2721
2722
    !write(*,*) 'phys_output_write_mod 2531'
2723
    enddo
2724
#endif
2725
2726
578
       IF (.NOT.vars_defined) THEN
2727
          !$OMP MASTER
2728
#ifndef CPP_IOIPSL_NO_OUTPUT
2729
11
          DO iff=1,nfiles
2730
11
             IF (clef_files(iff)) THEN
2731
4
                CALL histend(nid_files(iff))
2732
4228
                ndex2d = 0
2733
164740
                ndex3d = 0
2734
             ENDIF ! clef_files
2735
          ENDDO !  iff
2736
#endif
2737
#ifdef CPP_XIOS
2738
          !On finalise l'initialisation:
2739
          CALL wxios_closedef()
2740
#endif
2741
          !$OMP END MASTER
2742
          !$OMP BARRIER
2743
1
          vars_defined = .TRUE.
2744
2745
       ENDIF !--.NOT.vars_defined
2746
2747
    ENDDO
2748
2749
289
    IF (vars_defined) THEN
2750
       ! On synchronise les fichiers pour IOIPSL
2751
#ifndef CPP_IOIPSL_NO_OUTPUT
2752
       !$OMP MASTER
2753
3179
       DO iff=1,nfiles
2754

3179
          IF (ok_sync .AND. clef_files(iff)) THEN
2755
1156
             CALL histsync(nid_files(iff))
2756
          ENDIF
2757
       END DO
2758
       !$OMP END MASTER
2759
#endif
2760
    ENDIF
2761
2762
289
  END SUBROUTINE phys_output_write
2763
2764
END MODULE phys_output_write_mod