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

Last change on this file since 3712 was 3003, checked in by Laurent Fairhead, 7 years ago

Modifications to the code and xml files to output Ap and B, the coefficients
of the hybrid coordinates as requested by the CMIP6 DataRequest?
LF (with guidance from A. Caubel and S. Senesi)

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
  • Property svn:keywords set to Id
File size: 86.0 KB
RevLine 
[1798]1!
[2429]2! $Id: phys_output_write_mod.F90 3003 2017-10-03 14:45:26Z adurocher $
[1798]3!
4MODULE phys_output_write_mod
5
[1898]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,  &
[2704]8       d_tr_trsp, d_tr_sscav, d_tr_sat, d_tr_uscav, flux_tr_dry
[1813]9
[1898]10  ! Author: Abderrahmane IDELKADI (original include file)
11  ! Author: Laurent FAIRHEAD (transformation to module/subroutine)
12  ! Author: Ulysse GERARD (effective implementation)
[1813]13
[1898]14CONTAINS
[1798]15
[1898]16  ! ug Routine pour définir (los du premier passageà) ET sortir les variables
17  SUBROUTINE phys_output_write(itap, pdtphys, paprs, pphis, &
18       pplay, lmax_th, aerosol_couple,         &
[2496]19       ok_ade, ok_aie, ivap, iliq, isol, new_aod, ok_sync, &
[1915]20       ptconv, read_climoz, clevSTD, ptconvth, &
[2665]21       d_u, d_t, qx, d_qx, zmasse, flag_aerosol, flag_aerosol_strat, ok_cdnc)
[1798]22
[1898]23    ! This subroutine does the actual writing of diagnostics that were
24    ! defined and initialised in phys_output_mod.F90
[1798]25
[2704]26    USE dimphy, ONLY: klon, klev, klevp1
[2733]27    USE infotrac_phy, ONLY: nbtr
[2429]28    USE mod_phys_lmdz_para, ONLY: is_north_pole_phy,is_south_pole_phy
[2344]29    USE mod_grid_phy_lmdz, ONLY : nbp_lon, nbp_lat
[2704]30    USE time_phylmdz_mod, ONLY: day_step_phy, start_time, itau_phy
[3003]31    USE vertical_layers_mod, ONLY : ap, bp, aps, bps
[2704]32    USE phys_output_ctrlout_mod, ONLY: o_phis, o_aire, is_ter, is_lic, is_oce, &
[3003]33         o_Ahyb, o_Bhyb,o_Ahyb_inter, o_Bhyb_inter, &
[1898]34         is_ave, is_sic, o_contfracATM, o_contfracOR, &
[2385]35         o_aireTER, o_flat, o_slp, o_ptstar, o_pt0, o_tsol, &
[1898]36         o_t2m, o_t2m_min, o_t2m_max, &
[2103]37         o_t2m_min_mon, o_t2m_max_mon, &
[1898]38         o_q2m, o_ustar, o_u10m, o_v10m, &
[2240]39         o_wind10m, o_wind10max, o_gusts, o_sicf, &
[1898]40         o_psol, o_mass, o_qsurf, o_qsol, &
[2516]41         o_precip, o_ndayrain, o_plul, o_pluc, o_plun, &
[2481]42         o_snow, o_msnow, o_fsnow, o_evap, o_ep,o_epmax_diag, & ! epmax_cape
[1898]43         o_tops, o_tops0, o_topl, o_topl0, &
44         o_SWupTOA, o_SWupTOAclr, o_SWdnTOA, &
45         o_SWdnTOAclr, o_nettop, o_SWup200, &
46         o_SWup200clr, o_SWdn200, o_SWdn200clr, &
47         o_LWup200, o_LWup200clr, o_LWdn200, &
48         o_LWdn200clr, o_sols, o_sols0, &
49         o_soll, o_radsol, o_soll0, o_SWupSFC, &
50         o_SWupSFCclr, o_SWdnSFC, o_SWdnSFCclr, &
51         o_LWupSFC, o_LWdnSFC, o_LWupSFCclr, &
52         o_LWdnSFCclr, o_bils, o_bils_diss, &
[2042]53         o_bils_ec,o_bils_ech, o_bils_tke, o_bils_kinetic, &
[1898]54         o_bils_latent, o_bils_enthalp, o_sens, &
[2517]55         o_fder, o_ffonte, o_fqcalving, o_fqfonte, o_runofflic, &
[1898]56         o_taux, o_tauy, o_snowsrf, o_qsnow, &
57         o_snowhgt, o_toice, o_sissnow, o_runoff, &
58         o_albslw3, o_pourc_srf, o_fract_srf, &
59         o_taux_srf, o_tauy_srf, o_tsol_srf, &
60         o_evappot_srf, o_ustar_srf, o_u10m_srf, &
61         o_v10m_srf, o_t2m_srf, o_evap_srf, &
62         o_sens_srf, o_lat_srf, o_flw_srf, &
63         o_fsw_srf, o_wbils_srf, o_wbilo_srf, &
[2670]64         o_wevap_srf, o_wrain_srf, o_wsnow_srf, &
[2159]65         o_tke_srf, o_tke_max_srf,o_dltpbltke_srf, o_wstar, &
[2561]66         o_l_mixmin,o_l_mix, &
[1898]67         o_cdrm, o_cdrh, o_cldl, o_cldm, o_cldh, &
[1924]68         o_cldt, o_JrNt, o_cldljn, o_cldmjn, &
69         o_cldhjn, o_cldtjn, o_cldq, o_lwp, o_iwp, &
70         o_ue, o_ve, o_uq, o_vq, o_cape, o_pbase, &
[1898]71         o_ptop, o_fbase, o_plcl, o_plfc, &
[2824]72         o_wbeff, o_convoccur, o_cape_max, o_upwd, o_ep,o_epmax_diag, o_Ma, &
[1898]73         o_dnwd, o_dnwd0, o_ftime_con, o_mc, &
[2496]74         o_prw, o_prlw, o_prsw, o_s_pblh, o_s_pblt, o_s_lcl, &
[1898]75         o_s_therm, o_uSTDlevs, o_vSTDlevs, &
76         o_wSTDlevs, o_zSTDlevs, o_qSTDlevs, &
77         o_tSTDlevs, epsfra, o_t_oce_sic, &
78         o_ale_bl, o_alp_bl, o_ale_wk, o_alp_wk, &
[2393]79         o_dtvdf_x    , o_dtvdf_w    , o_dqvdf_x    , o_dqvdf_w    , &
80         o_sens_x     , o_sens_w     , o_flat_x     , o_flat_w     , &
81         o_delta_tsurf, &
82         o_cdragh_x   , o_cdragh_w   , o_cdragm_x   , o_cdragm_w   , &
83         o_kh         , o_kh_x       , o_kh_w       , &
[1898]84         o_ale, o_alp, o_cin, o_WAPE, o_wake_h, &
85         o_wake_s, o_wake_deltat, o_wake_deltaq, &
[2486]86         o_wake_omg, o_dtwak, o_dqwak, o_dqwak2d, o_Vprecip, &
[1898]87         o_ftd, o_fqd, o_wdtrainA, o_wdtrainM, &
88         o_n2, o_s2, o_proba_notrig, &
89         o_random_notrig, o_ale_bl_stat, &
90         o_ale_bl_trig, o_alp_bl_det, &
91         o_alp_bl_fluct_m, o_alp_bl_fluct_tke, &
[2057]92         o_alp_bl_conv, o_alp_bl_stat, &
93         o_slab_qflux, o_tslab, o_slab_bils, &
[2209]94         o_slab_bilg, o_slab_sic, o_slab_tice, &
[3002]95         o_slab_hdiff, o_slab_ekman, o_slab_gm,  &
[1898]96         o_weakinv, o_dthmin, o_cldtau, &
97         o_cldemi, o_pr_con_l, o_pr_con_i, &
98         o_pr_lsc_l, o_pr_lsc_i, o_re, o_fl, &
99         o_rh2m, o_rh2m_min, o_rh2m_max, &
100         o_qsat2m, o_tpot, o_tpote, o_SWnetOR, &
101         o_SWdownOR, o_LWdownOR, o_snowl, &
102         o_solldown, o_dtsvdfo, o_dtsvdft, &
[2952]103         o_dtsvdfg, o_dtsvdfi, o_z0m, o_z0h,  o_od443aer, o_od550aer, &
[2854]104         o_dryod550aer, o_od865aer, o_abs550aer, o_od550lt1aer, &
[2146]105         o_sconcso4, o_sconcno3, o_sconcoa, o_sconcbc, &
106         o_sconcss, o_sconcdust, o_concso4, o_concno3, &
[1898]107         o_concoa, o_concbc, o_concss, o_concdust, &
108         o_loadso4, o_loadoa, o_loadbc, o_loadss, &
[2854]109         o_loaddust, o_loadno3, o_tausumaero, &
110         o_drytausumaero, o_tausumaero_lw, &
[2146]111         o_topswad, o_topswad0, o_solswad, o_solswad0, &
112         o_toplwad, o_toplwad0, o_sollwad, o_sollwad0, &
[1898]113         o_swtoaas_nat, o_swsrfas_nat, &
114         o_swtoacs_nat, o_swtoaas_ant, &
115         o_swsrfas_ant, o_swtoacs_ant, &
116         o_swsrfcs_ant, o_swtoacf_nat, &
117         o_swsrfcf_nat, o_swtoacf_ant, &
118         o_swsrfcs_nat, o_swsrfcf_ant, &
119         o_swtoacf_zero, o_swsrfcf_zero, &
[2780]120         o_topswai, o_solswai, o_toplwai, o_sollwai, o_scdnc, &
[2536]121         o_cldncl, o_reffclws, o_reffclwc, o_stratomask,&
[1898]122         o_cldnvi, o_lcc, o_lcc3d, o_lcc3dcon, &
123         o_lcc3dstra, o_reffclwtop, o_ec550aer, &
124         o_lwcon, o_iwcon, o_temp, o_theta, &
[2553]125         o_ovapinit, o_ovap, o_oliq, o_ocond, o_geop, &
[1898]126         o_vitu, o_vitv, o_vitw, o_pres, o_paprs, &
[1924]127         o_zfull, o_zhalf, o_rneb, o_rnebjn, o_rnebcon, &
[2945]128         o_rnebls, o_rneblsvol, o_rhum, o_ozone, o_ozone_light, &
[2665]129         o_duphy, o_dtphy, o_dqphy, o_dqphy2d, o_dqlphy, o_dqlphy2d, &
[2496]130         o_dqsphy, o_dqsphy2d, o_albe_srf, o_z0m_srf, o_z0h_srf, &
[2209]131         o_ages_srf, o_snow_srf, o_alb1, o_alb2, o_tke, &
[1898]132         o_tke_max, o_kz, o_kz_max, o_clwcon, &
[2496]133         o_dtdyn, o_dqdyn, o_dqdyn2d, o_dqldyn, o_dqldyn2d, &
134         o_dqsdyn, o_dqsdyn2d, o_dudyn, o_dvdyn, &
[1898]135         o_dtcon, o_tntc, o_ducon, o_dvcon, &
[2486]136         o_dqcon, o_dqcon2d, o_tnhusc, o_tnhusc, o_dtlsc, &
137         o_dtlschr, o_dqlsc, o_dqlsc2d, o_beta_prec, &
138         o_dtlscth, o_dtlscst, o_dqlscth, o_dqlscth2d, &
139         o_dqlscst, o_dqlscst2d, o_plulth, o_plulst, &
[1898]140         o_ptconvth, o_lmaxth, o_dtvdf, &
[2486]141         o_dtdis, o_dqvdf, o_dqvdf2d, o_dteva, o_dqeva, o_dqeva2d, &
[1903]142         o_ptconv, o_ratqs, o_dtthe, &
143         o_duthe, o_dvthe, o_ftime_th, &
[1898]144         o_f_th, o_e_th, o_w_th, o_q_th, &
[2958]145         o_a_th, o_cloudth_sth, o_cloudth_senv, &
146         o_cloudth_sigmath, o_cloudth_sigmaenv, &
147         o_d_th, o_f0_th, o_zmax_th, &
[2486]148         o_dqthe, o_dqthe2d, o_dtajs, o_dqajs, o_dqajs2d, o_dtswr, &
[1898]149         o_dtsw0, o_dtlwr, o_dtlw0, o_dtec, &
150         o_duvdf, o_dvvdf, o_duoro, o_dvoro, &
151         o_dtoro, o_dulif, o_dvlif, o_dtlif, &
[2333]152         o_du_gwd_hines, o_dv_gwd_hines, o_dthin, o_dqch4, o_rsu, &
153         o_du_gwd_front, o_dv_gwd_front, &
154         o_east_gwstress, o_west_gwstress, &
[1898]155         o_rsd, o_rlu, o_rld, o_rsucs, o_rsdcs, &
156         o_rlucs, o_rldcs, o_tnt, o_tntr, &
157         o_tntscpbl, o_tnhus, o_tnhusscpbl, &
158         o_evu, o_h2o, o_mcd, o_dmc, o_ref_liq, &
159         o_ref_ice, o_rsut4co2, o_rlut4co2, &
160         o_rsutcs4co2, o_rlutcs4co2, o_rsu4co2, &
161         o_rlu4co2, o_rsucs4co2, o_rlucs4co2, &
162         o_rsd4co2, o_rld4co2, o_rsdcs4co2, &
163         o_rldcs4co2, o_tnondef, o_ta, o_zg, &
164         o_hus, o_hur, o_ua, o_va, o_wap, &
165         o_psbg, o_tro3, o_tro3_daylight, &
166         o_uxv, o_vxq, o_vxT, o_wxq, o_vxphi, &
167         o_wxT, o_uxu, o_vxv, o_TxT, o_trac, &
168         o_dtr_vdf, o_dtr_the, o_dtr_con, &
169         o_dtr_lessi_impa, o_dtr_lessi_nucl, &
170         o_dtr_insc, o_dtr_bcscav, o_dtr_evapls, &
[2704]171         o_dtr_ls, o_dtr_trsp, o_dtr_sscav, o_dtr_dry, &
[1938]172         o_dtr_sat, o_dtr_uscav, o_trac_cum, o_du_gwd_rando, o_dv_gwd_rando, &
[2333]173         o_ustr_gwd_hines,o_vstr_gwd_hines,o_ustr_gwd_rando,o_vstr_gwd_rando, &
[2538]174         o_ustr_gwd_front,o_vstr_gwd_front, &
175         o_sens_prec_liq_oce, o_sens_prec_liq_sic, &
176         o_sens_prec_sol_oce, o_sens_prec_sol_sic, &
177         o_lat_prec_liq_oce, o_lat_prec_liq_sic, &
[2580]178         o_lat_prec_sol_oce, o_lat_prec_sol_sic, &
179! Marine
180         o_map_prop_hc, o_map_prop_hist, o_map_emis_hc, o_map_iwp_hc, &
181         o_map_deltaz_hc, o_map_pcld_hc, o_map_tcld_hc, &
182         o_map_emis_hist, o_map_iwp_hist, o_map_deltaz_hist, &
183         o_map_rad_hist, &
184         o_map_emis_Cb, o_map_pcld_Cb, o_map_tcld_Cb, &
185         o_map_emis_ThCi, o_map_pcld_ThCi, o_map_tcld_ThCi, &
186         o_map_emis_Anv, o_map_pcld_Anv, o_map_tcld_Anv, &
187         o_map_ntot, o_map_hc,o_map_hist,o_map_Cb,o_map_ThCi,o_map_Anv, &
[2992]188         o_alt_tropo, &
189! Tropopause
[2993]190         o_p_tropopause, o_z_tropopause, o_t_tropopause,  &
191         o_col_O3_strato, o_col_O3_tropo               ! Added ThL
[1798]192
[2993]193
[2690]194#ifdef CPP_StratAer
[2704]195    USE phys_output_ctrlout_mod, ONLY:  &
[2752]196         o_budg_3D_nucl, o_budg_3D_cond_evap, o_budg_3D_ocs_to_so2, o_budg_3D_so2_to_h2so4, &
197         o_budg_sed_part, o_R2SO4, o_OCS_lifetime, o_SO2_lifetime, &
198         o_budg_3D_backgr_ocs, o_budg_3D_backgr_so2, &
199         o_budg_dep_dry_h2so4, o_budg_dep_wet_h2so4, &
200         o_budg_dep_dry_part, o_budg_dep_wet_part, &
201         o_budg_emi_ocs, o_budg_emi_so2, o_budg_emi_h2so4, o_budg_emi_part, &
202         o_budg_ocs_to_so2, o_budg_so2_to_h2so4, o_budg_h2so4_to_part, &
[2690]203         o_surf_PM25_sulf, o_ext_strat_550, o_tau_strat_550, &
[2992]204         o_vsed_aer, o_tau_strat_1020, o_ext_strat_1020, o_f_r_wet
[2690]205#endif
[2580]206
[2825]207    USE phys_state_var_mod, ONLY: pctsrf, rain_fall, snow_fall, &
[2243]208         qsol, z0m, z0h, fevap, agesno, &
[1898]209         nday_rain, rain_con, snow_con, &
210         topsw, toplw, toplw0, swup, swdn, &
211         topsw0, swup0, swdn0, SWup200, SWup200clr, &
212         SWdn200, SWdn200clr, LWup200, LWup200clr, &
213         LWdn200, LWdn200clr, solsw, solsw0, sollw, &
[2366]214         radsol, swradcorr, sollw0, sollwdown, sollw, gustiness, &
[1898]215         sollwdownclr, lwdn0, ftsol, ustar, u10m, &
[2159]216         v10m, pbl_tke, wake_delta_pbl_TKE, &
[2393]217         delta_tsurf, &
[2159]218         wstar, cape, ema_pcb, ema_pct, &
[1898]219         ema_cbmf, Ma, fm_therm, ale_bl, alp_bl, ale, &
220         alp, cin, wake_pe, wake_s, wake_deltat, &
221         wake_deltaq, ftd, fqd, ale_bl_trig, albsol1, &
222         rnebcon, wo, falb1, albsol2, coefh, clwcon0, &
[2194]223         ratqs, entr_therm, zqasc, detr_therm, f0, &
224         lwup, lwdn, lwup0, coefm, &
[1898]225         swupp, lwupp, swup0p, lwup0p, swdnp, lwdnp, &
226         swdn0p, lwdn0p, tnondef, O3sumSTD, uvsumSTD, &
227         vqsumSTD, vTsumSTD, O3daysumSTD, wqsumSTD, &
228         vphisumSTD, wTsumSTD, u2sumSTD, v2sumSTD, &
[2333]229         T2sumSTD, nlevSTD, du_gwd_rando, du_gwd_front, &
[2271]230         ulevSTD, vlevSTD, wlevSTD, philevSTD, qlevSTD, tlevSTD, &
[2282]231         rhlevSTD, O3STD, O3daySTD, uvSTD, vqSTD, vTSTD, wqSTD, &
232         vphiSTD, wTSTD, u2STD, v2STD, T2STD, missing_val_nf90
[1898]233
[2704]234    USE phys_local_var_mod, ONLY: zxfluxlat, slp, ptstar, pt0, zxtsol, zt2m, &
[2243]235         t2m_min_mon, t2m_max_mon, evap, &
[2561]236         l_mixmin,l_mix, &
[2243]237         zu10m, zv10m, zq2m, zustar, zxqsurf, &
[2516]238         rain_lsc, rain_num, snow_lsc, bils, sens, fder, &
[2517]239         zxffonte, zxfqcalving, zxfqfonte, zxrunofflic, fluxu, &
[1898]240         fluxv, zxsnow, qsnow, snowhgt, to_ice, &
241         sissnow, runoff, albsol3_lic, evap_pot, &
[2243]242         t2m, fluxt, fluxlat, fsollw, fsolsw, &
[2670]243         wfbils, wfbilo, wfevap, wfrain, wfsnow, &
244         cdragm, cdragh, cldl, cldm, &
[1924]245         cldh, cldt, JrNt, cldljn, cldmjn, cldhjn, &
246         cldtjn, cldq, flwp, fiwp, ue, ve, uq, vq, &
[2824]247         plcl, plfc, wbeff, convoccur, upwd, dnwd, dnwd0, prw, prlw, prsw, &
[1898]248         s_pblh, s_pblt, s_lcl, s_therm, uwriteSTD, &
249         vwriteSTD, wwriteSTD, phiwriteSTD, qwriteSTD, &
[2393]250         twriteSTD, ale_wake, alp_wake, &
251         dtvdf_x    ,dtvdf_w    ,dqvdf_x    ,dqvdf_w    , &
252         sens_x     ,sens_w     ,zxfluxlat_x,zxfluxlat_w, &
253         cdragh_x   ,cdragh_w   ,cdragm_x   ,cdragm_w   , &
254         kh         ,kh_x       ,kh_w       , &
255         wake_h, &
[1898]256         wake_omg, d_t_wake, d_q_wake, Vprecip, &
257         wdtrainA, wdtrainM, n2, s2, proba_notrig, &
258         random_notrig, ale_bl_stat, &
259         alp_bl_det, alp_bl_fluct_m, alp_bl_conv, &
260         alp_bl_stat, alp_bl_fluct_tke, slab_wfbils, &
261         weak_inversion, dthmin, cldtau, cldemi, &
262         pmflxr, pmflxs, prfl, psfl, re, fl, rh2m, &
[2854]263         qsat2m, tpote, tpot, d_ts, od443aer, od550aer, dryod550aer, &
[2842]264         od865aer, abs550aer, od550lt1aer, sconcso4, sconcno3, &
[2146]265         sconcoa, sconcbc, sconcss, sconcdust, concso4, concno3, &
[1898]266         concoa, concbc, concss, concdust, loadso4, &
[2854]267         loadoa, loadbc, loadss, loaddust, loadno3, tausum_aero, drytausum_aero, &
[1898]268         topswad_aero, topswad0_aero, solswad_aero, &
269         solswad0_aero, topsw_aero, solsw_aero, &
270         topsw0_aero, solsw0_aero, topswcf_aero, &
271         solswcf_aero, topswai_aero, solswai_aero, &
[2146]272         toplwad_aero, toplwad0_aero, sollwad_aero, &
273         sollwad0_aero, toplwai_aero, sollwai_aero, &
[2536]274         scdnc, cldncl, reffclws, reffclwc, cldnvi, stratomask,&
[1898]275         lcc, lcc3d, lcc3dcon, lcc3dstra, reffclwtop, &
276         ec550aer, flwc, fiwc, t_seri, theta, q_seri, &
[2553]277         ql_seri, qs_seri, tr_seri, &
[2284]278         zphi, u_seri, v_seri, omega, cldfra, &
[2945]279         rneb, rnebjn, rneblsvol, zx_rh, d_t_dyn,  &
[2499]280         d_q_dyn,  d_ql_dyn, d_qs_dyn, &
281         d_q_dyn2d,  d_ql_dyn2d, d_qs_dyn2d, &
[1898]282         d_u_dyn, d_v_dyn, d_t_con, d_t_ajsb, d_t_ajs, &
[1943]283         d_u_ajs, d_v_ajs, &
[1898]284         d_u_con, d_v_con, d_q_con, d_q_ajs, d_t_lsc, &
[2194]285         d_t_lwr,d_t_lw0,d_t_swr,d_t_sw0, &
[1898]286         d_t_eva, d_q_lsc, beta_prec, d_t_lscth, &
287         d_t_lscst, d_q_lscth, d_q_lscst, plul_th, &
288         plul_st, d_t_vdf, d_t_diss, d_q_vdf, d_q_eva, &
289         zw2, fraca, zmax_th, d_q_ajsb, d_t_ec, d_u_vdf, &
290         d_v_vdf, d_u_oro, d_v_oro, d_t_oro, d_u_lif, &
[2333]291         d_v_lif, d_t_lif, du_gwd_hines, dv_gwd_hines, d_t_hin, &
292         dv_gwd_rando, dv_gwd_front, &
293         east_gwstress, west_gwstress, &
[2481]294         d_q_ch4, pmfd, pmfu, ref_liq, ref_ice, rhwriteSTD, &
[2992]295         ep, epmax_diag, &  ! epmax_cape
296         p_tropopause, t_tropopause, z_tropopause
[1898]297
[2690]298#ifdef CPP_StratAer
[2704]299    USE phys_local_var_mod, ONLY:  &
[2752]300         budg_3D_nucl, budg_3D_cond_evap, budg_3D_ocs_to_so2, budg_3D_so2_to_h2so4, &
301         budg_sed_part, R2SO4, OCS_lifetime, SO2_lifetime, &
302         budg_3D_backgr_ocs, budg_3D_backgr_so2, &
303         budg_dep_dry_h2so4, budg_dep_wet_h2so4, &
304         budg_dep_dry_part, budg_dep_wet_part, &
305         budg_emi_ocs, budg_emi_so2, budg_emi_h2so4, budg_emi_part, &
306         budg_ocs_to_so2, budg_so2_to_h2so4, budg_h2so4_to_part, &
[2992]307         surf_PM25_sulf, tau_strat_550, tausum_strat, &
[2690]308         vsed_aer, tau_strat_1020, f_r_wet
309#endif
310
[2704]311    USE phys_output_var_mod, ONLY: vars_defined, snow_o, zfra_o, bils_diss, &
[2042]312         bils_ec,bils_ech, bils_tke, bils_kinetic, bils_latent, bils_enthalp, &
[2854]313         itau_con, nfiles, clef_files, nid_files, dryaod_diag, &
[2333]314         zustr_gwd_hines, zvstr_gwd_hines,zustr_gwd_rando, zvstr_gwd_rando, &
[2538]315         zustr_gwd_front, zvstr_gwd_front,     &
[2580]316         sens_prec_liq_o, sens_prec_sol_o, lat_prec_liq_o, lat_prec_sol_o, &
[2958]317         cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv, &
[2580]318! Marine
319         map_prop_hc, map_prop_hist, &
320         map_emis_hc,map_iwp_hc,map_deltaz_hc,&
321         map_pcld_hc,map_tcld_hc,&
322         map_emis_hist,map_iwp_hist,map_deltaz_hist,&
323         map_rad_hist,&
324         map_ntot,map_hc,map_hist,&
325         map_Cb,map_ThCi,map_Anv,&
326         map_emis_Cb,map_pcld_Cb,map_tcld_Cb,&
327         map_emis_ThCi,map_pcld_ThCi,map_tcld_ThCi,&
328         map_emis_Anv,map_pcld_Anv,map_tcld_Anv, &
[2989]329         alt_tropo, &
330!Ionela
331         ok_4xCO2atm
[2580]332
[3002]333    USE ocean_slab_mod, ONLY: nslay, tslab, slab_bilg, tice, seaice, &
334        slab_ekman,slab_hdiff,slab_gm,dt_ekman, dt_hdiff, dt_gm, dt_qflux
[2704]335    USE pbl_surface_mod, ONLY: snow
336    USE indice_sol_mod, ONLY: nbsrf
337    USE infotrac_phy, ONLY: nqtot, nqo, type_trac, tname, niadv
338    USE geometry_mod, ONLY: cell_area
339    USE surface_data, ONLY: type_ocean, version_ocean, ok_veget, ok_snow
340    USE aero_mod, ONLY: naero_tot, id_STRAT_phy
341    USE ioipsl, ONLY: histend, histsync
342    USE iophy, ONLY: set_itau_iophy, histwrite_phy
343    USE netcdf, ONLY: nf90_fill_real
[2319]344    USE print_control_mod, ONLY: prt_level,lunout
[1897]345
[2319]346
[1825]347#ifdef CPP_XIOS
348    ! ug Pour les sorties XIOS
[2704]349    USE xios
350    USE wxios, ONLY: wxios_closedef, missing_val
[1825]351#endif
[2704]352    USE phys_cal_mod, ONLY : mth_len
[1825]353
[2645]354#ifdef CPP_RRTM
355    USE YOESW, ONLY : RSUN
356#endif
[2966]357    USE tracinca_mod, ONLY: config_inca
[2114]358
[1798]359    IMPLICIT NONE
360
361    INCLUDE "clesphys.h"
362    INCLUDE "thermcell.h"
363    INCLUDE "compbl.h"
364    INCLUDE "YOMCST.h"
365
[1898]366    ! Input
[2496]367    INTEGER :: itap, ivap, iliq, isol, read_climoz
[1798]368    INTEGER, DIMENSION(klon) :: lmax_th
369    LOGICAL :: aerosol_couple, ok_sync
370    LOGICAL :: ok_ade, ok_aie, new_aod
371    LOGICAL, DIMENSION(klon, klev) :: ptconv, ptconvth
372    REAL :: pdtphys
373    CHARACTER (LEN=4), DIMENSION(nlevSTD) :: clevSTD
[1971]374    REAL, DIMENSION(klon,nlevSTD) :: zx_tmp_fi3d_STD
[1798]375    REAL, DIMENSION(klon) :: pphis
[2665]376    REAL, DIMENSION(klon, klev) :: pplay, d_u, d_t
[1798]377    REAL, DIMENSION(klon, klev+1) :: paprs
378    REAL, DIMENSION(klon,klev,nqtot) :: qx, d_qx
[2344]379    REAL, DIMENSION(klon, klev) :: zmasse
[2530]380    INTEGER :: flag_aerosol_strat
[2003]381    INTEGER :: flag_aerosol
382    LOGICAL :: ok_cdnc
[1828]383    REAL, DIMENSION(3) :: freq_moyNMC
[1798]384
[1898]385    ! Local
[1798]386    INTEGER :: itau_w
[2704]387    INTEGER :: i, iinit, iinitend=1, iff, iq, iiq, nsrf, k, ll, naero
[1798]388    REAL, DIMENSION (klon) :: zx_tmp_fi2d
389    REAL, DIMENSION (klon,klev) :: zx_tmp_fi3d, zpt_conv
390    REAL, DIMENSION (klon,klev+1) :: zx_tmp_fi3d1
391    CHARACTER (LEN=4)              :: bb2
[2344]392    INTEGER, DIMENSION(nbp_lon*nbp_lat)  :: ndex2d
393    INTEGER, DIMENSION(nbp_lon*nbp_lat*klev) :: ndex3d
[1798]394    REAL, PARAMETER :: dobson_u = 2.1415e-05 ! Dobson unit, in kg m-2
[2271]395!   REAL, PARAMETER :: missing_val=nf90_fill_real
[3003]396    REAL, DIMENSION(klev,2) :: Ahyb_bounds, Bhyb_bounds
397    INTEGER :: ilev
[2271]398#ifndef CPP_XIOS
399    REAL :: missing_val
400#endif
[1915]401    REAL, PARAMETER :: un_jour=86400.
[2645]402    INTEGER ISW
403    CHARACTER*1 ch1
[2704]404    CHARACTER*20 varname
[1798]405
[2704]406#ifdef CPP_XIOS
407    TYPE(xios_fieldgroup) :: group_handle
408    TYPE(xios_field) :: child
409#endif
[2752]410#ifdef CPP_StratAer
411    LOGICAL, PARAMETER :: debug_strataer=.FALSE.
412#endif
[2704]413
[1898]414    ! On calcul le nouveau tau:
[2551]415    itau_w = itau_phy + itap
[1898]416    ! On le donne à iophy pour que les histwrite y aient accès:
417    CALL set_itau_iophy(itau_w)
418
[2690]419    IF (.NOT.vars_defined) THEN
[1898]420       iinitend = 2
[1821]421    ELSE
[1898]422       iinitend = 1
[1798]423    ENDIF
[1898]424
[3003]425    DO ilev=1,klev
426      Ahyb_bounds(ilev,1) = ap(ilev)
427      Ahyb_bounds(ilev,2) = ap(ilev+1)
428      Bhyb_bounds(ilev,1) = bp(ilev)
429      Bhyb_bounds(ilev,2) = bp(ilev+1)
430    END DO
431
[2704]432#ifdef CPP_XIOS
433#ifdef CPP_StratAer
[2830]434!$OMP MASTER
435   IF (.NOT.vars_defined) THEN
[2704]436          !On ajoute les variables 3D traceurs par l interface fortran
437          CALL xios_get_handle("fields_strataer_trac_3D", group_handle)
438          ! On boucle sur les traceurs pour les ajouter au groupe puis fixer les attributs
439          DO iq=nqo+1, nqtot
440            iiq=niadv(iq)
441            varname=trim(tname(iiq))
[2752]442            WRITE (lunout,*) 'XIOS var=', nqo, iq, nqtot, varname
[2704]443            CALL xios_add_child(group_handle, child, varname)
444            CALL xios_set_attr(child, name=varname, unit="kg kg-1")
445            varname='d'//trim(tname(iiq))//'_vdf'
446            CALL xios_add_child(group_handle, child, varname)
447            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
448            varname='d'//trim(tname(iiq))//'_the'
449            CALL xios_add_child(group_handle, child, varname)
450            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
451            varname='d'//trim(tname(iiq))//'_con'
452            CALL xios_add_child(group_handle, child, varname)
453            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
454            varname='d'//trim(tname(iiq))//'_lessi_impa'
455            CALL xios_add_child(group_handle, child, varname)
456            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
457            varname='d'//trim(tname(iiq))//'_lessi_nucl'
458            CALL xios_add_child(group_handle, child, varname)
459            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
460            varname='d'//trim(tname(iiq))//'_insc'
461            CALL xios_add_child(group_handle, child, varname)
462            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
463            varname='d'//trim(tname(iiq))//'_bcscav'
464            CALL xios_add_child(group_handle, child, varname)
465            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
466            varname='d'//trim(tname(iiq))//'_evapls'
467            CALL xios_add_child(group_handle, child, varname)
468            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
469            varname='d'//trim(tname(iiq))//'_ls'
470            CALL xios_add_child(group_handle, child, varname)
471            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
472            varname='d'//trim(tname(iiq))//'_trsp'
473            CALL xios_add_child(group_handle, child, varname)
474            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
475            varname='d'//trim(tname(iiq))//'_sscav'
476            CALL xios_add_child(group_handle, child, varname)
477            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
478            varname='d'//trim(tname(iiq))//'_sat'
479            CALL xios_add_child(group_handle, child, varname)
480            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
481            varname='d'//trim(tname(iiq))//'_uscav'
482            CALL xios_add_child(group_handle, child, varname)
483            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
484          ENDDO
485          !On ajoute les variables 2D traceurs par l interface fortran
486          CALL xios_get_handle("fields_strataer_trac_2D", group_handle)
487          ! On boucle sur les traceurs pour les ajouter au groupe puis fixer les attributs
488          DO iq=nqo+1, nqtot
489            iiq=niadv(iq)
490            varname='cum'//trim(tname(iiq))
[2752]491            WRITE (lunout,*) 'XIOS var=', iq, nqtot, varname
[2704]492            CALL xios_add_child(group_handle, child, varname)
493            CALL xios_set_attr(child, name=varname, unit="kg m-2")
494            varname='cumd'//trim(tname(iiq))//'_dry'
495            CALL xios_add_child(group_handle, child, varname)
496            CALL xios_set_attr(child, name=varname, unit="kg m-2 s-1")
497          ENDDO
498    ENDIF
[2830]499!$OMP END MASTER
[2704]500#endif
501#endif
[1898]502    ! ug la boucle qui suit ne sert qu'une fois, pour l'initialisation, sinon il n'y a toujours qu'un seul passage:
503    DO iinit=1, iinitend
[2780]504!      print *,'IFF iinit=', iinit, iinitend
[1825]505#ifdef CPP_XIOS
[1898]506       !$OMP MASTER
507       IF (vars_defined) THEN
[2690]508          IF (prt_level >= 10) then
[2002]509             write(lunout,*)"phys_output_write: call xios_update_calendar, itau_w=",itau_w
[2690]510          ENDIF
[2095]511!          CALL xios_update_calendar(itau_w)
512          CALL xios_update_calendar(itap)
[2690]513       ENDIF
[1898]514       !$OMP END MASTER
515       !$OMP BARRIER
[1825]516#endif
[1898]517       ! On procède à l'écriture ou à la définition des nombreuses variables:
[1813]518!!! Champs 1D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[1898]519       CALL histwrite_phy(o_phis, pphis)
[1798]520
[2429]521       zx_tmp_fi2d = cell_area
[2690]522       IF (is_north_pole_phy) then
[2429]523         zx_tmp_fi2d(1) = cell_area(1)/nbp_lon
[2690]524       ENDIF
525       IF (is_south_pole_phy) then
[2429]526         zx_tmp_fi2d(klon) = cell_area(klon)/nbp_lon
[2690]527       ENDIf
[2429]528       CALL histwrite_phy(o_aire, zx_tmp_fi2d)
529
[1898]530       IF (vars_defined) THEN
531          DO i=1, klon
532             zx_tmp_fi2d(i)=pctsrf(i,is_ter)+pctsrf(i,is_lic)
533          ENDDO
534       ENDIF
[1813]535
[1898]536       CALL histwrite_phy(o_contfracATM, zx_tmp_fi2d)
537       CALL histwrite_phy(o_contfracOR, pctsrf(:,is_ter))
[2645]538!
539#ifdef CPP_XIOS
540       CALL histwrite_phy("R_ecc",R_ecc)
541       CALL histwrite_phy("R_peri",R_peri)
542       CALL histwrite_phy("R_incl",R_incl)
543       CALL histwrite_phy("solaire",solaire)
[3003]544       CALL histwrite_phy(o_Ahyb, aps)
545       CALL histwrite_phy(o_Bhyb, bps)
546       CALL histwrite_phy(o_Ahyb_inter, Ahyb_bounds)
547       CALL histwrite_phy(o_Bhyb_inter, Bhyb_bounds)
[2645]548!
549#ifdef CPP_RRTM
550      IF (iflag_rrtm.EQ.1) THEN
551        DO ISW=1, NSW
552          WRITE(ch1,'(i1)') ISW
553!         zx_tmp_0d=RSUN(ISW)
554!         CALL histwrite_phy("rsun"//ch1,zx_tmp_0d)
555          CALL histwrite_phy("rsun"//ch1,RSUN(ISW))
556        ENDDO
557      ENDIF
558#endif
559!
560       CALL histwrite_phy("co2_ppm",co2_ppm)
561       CALL histwrite_phy("CH4_ppb",CH4_ppb)
562       CALL histwrite_phy("N2O_ppb",N2O_ppb)
563       CALL histwrite_phy("CFC11_ppt",CFC11_ppt)
564       CALL histwrite_phy("CFC12_ppt",CFC12_ppt)
565!
566#endif
567
[1813]568!!! Champs 2D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[2580]569! Simulateur AIRS
570     IF (ok_airs) then
571      CALL histwrite_phy(o_alt_tropo,alt_tropo)
572 
573      CALL histwrite_phy(o_map_prop_hc,map_prop_hc)
574      CALL histwrite_phy(o_map_prop_hist,map_prop_hist)
575
576      CALL histwrite_phy(o_map_emis_hc,map_emis_hc)
577      CALL histwrite_phy(o_map_iwp_hc,map_iwp_hc)
578      CALL histwrite_phy(o_map_deltaz_hc,map_deltaz_hc)
579      CALL histwrite_phy(o_map_pcld_hc,map_pcld_hc)
580      CALL histwrite_phy(o_map_tcld_hc,map_tcld_hc)
581
582      CALL histwrite_phy(o_map_emis_hist,map_emis_hist)
583      CALL histwrite_phy(o_map_iwp_hist,map_iwp_hist)
584      CALL histwrite_phy(o_map_deltaz_hist,map_deltaz_hist)
585
586      CALL histwrite_phy(o_map_ntot,map_ntot)
587      CALL histwrite_phy(o_map_hc,map_hc)
588      CALL histwrite_phy(o_map_hist,map_hist)
589
590      CALL histwrite_phy(o_map_Cb,map_Cb)
591      CALL histwrite_phy(o_map_ThCi,map_ThCi)
592      CALL histwrite_phy(o_map_Anv,map_Anv)
593
594      CALL histwrite_phy(o_map_emis_Cb,map_emis_Cb)
595      CALL histwrite_phy(o_map_pcld_Cb,map_pcld_Cb)
596      CALL histwrite_phy(o_map_tcld_Cb,map_tcld_Cb)
597
598      CALL histwrite_phy(o_map_emis_ThCi,map_emis_ThCi)
599      CALL histwrite_phy(o_map_pcld_ThCi,map_pcld_ThCi)
600      CALL histwrite_phy(o_map_tcld_ThCi,map_tcld_ThCi)
601
602      CALL histwrite_phy(o_map_emis_Anv,map_emis_Anv)
603      CALL histwrite_phy(o_map_pcld_Anv,map_pcld_Anv)
604      CALL histwrite_phy(o_map_tcld_Anv,map_tcld_Anv)
605     ENDIF
606
[1898]607       CALL histwrite_phy(o_flat, zxfluxlat)
[2385]608       CALL histwrite_phy(o_ptstar, ptstar)
609       CALL histwrite_phy(o_pt0, pt0)
[1898]610       CALL histwrite_phy(o_slp, slp)
611       CALL histwrite_phy(o_tsol, zxtsol)
612       CALL histwrite_phy(o_t2m, zt2m)
613       CALL histwrite_phy(o_t2m_min, zt2m)
614       CALL histwrite_phy(o_t2m_max, zt2m)
[2146]615       CALL histwrite_phy(o_t2m_max_mon, t2m_max_mon)
616       CALL histwrite_phy(o_t2m_min_mon, t2m_min_mon)
[1813]617
[1898]618       IF (vars_defined) THEN
619          DO i=1, klon
620             zx_tmp_fi2d(i)=SQRT(zu10m(i)*zu10m(i)+zv10m(i)*zv10m(i))
621          ENDDO
622       ENDIF
623       CALL histwrite_phy(o_wind10m, zx_tmp_fi2d)
[1813]624
[1898]625       IF (vars_defined) THEN
626          DO i=1, klon
627             zx_tmp_fi2d(i)=SQRT(zu10m(i)*zu10m(i)+zv10m(i)*zv10m(i))
628          ENDDO
629       ENDIF
630       CALL histwrite_phy(o_wind10max, zx_tmp_fi2d)
[1813]631
[2240]632       CALL histwrite_phy(o_gusts, gustiness)
633
[1898]634       IF (vars_defined) THEN
635          DO i = 1, klon
636             zx_tmp_fi2d(i) = pctsrf(i,is_sic)
637          ENDDO
638       ENDIF
639       CALL histwrite_phy(o_sicf, zx_tmp_fi2d)
640       CALL histwrite_phy(o_q2m, zq2m)
641       CALL histwrite_phy(o_ustar, zustar)
642       CALL histwrite_phy(o_u10m, zu10m)
643       CALL histwrite_phy(o_v10m, zv10m)
[1813]644
[1898]645       IF (vars_defined) THEN
646          DO i = 1, klon
647             zx_tmp_fi2d(i) = paprs(i,1)
648          ENDDO
649       ENDIF
650       CALL histwrite_phy(o_psol, zx_tmp_fi2d)
651       CALL histwrite_phy(o_mass, zmasse)
652       CALL histwrite_phy(o_qsurf, zxqsurf)
[1813]653
[1898]654       IF (.NOT. ok_veget) THEN
655          CALL histwrite_phy(o_qsol, qsol)
656       ENDIF
[1813]657
[1898]658       IF (vars_defined) THEN
659          DO i = 1, klon
660             zx_tmp_fi2d(i) = rain_fall(i) + snow_fall(i)
661          ENDDO
662       ENDIF
[1813]663
[1898]664       CALL histwrite_phy(o_precip, zx_tmp_fi2d)
665       CALL histwrite_phy(o_ndayrain, nday_rain)
[1813]666
[2481]667       ! epmax_cape:
[2483]668!       CALL histwrite_phy(o_epmax_diag, epmax_diag)
[2481]669       CALL histwrite_phy(o_ep, ep)
670
[1898]671       IF (vars_defined) THEN
672          DO i = 1, klon
673             zx_tmp_fi2d(i) = rain_lsc(i) + snow_lsc(i)
674          ENDDO
675       ENDIF
676       CALL histwrite_phy(o_plul, zx_tmp_fi2d)
[2516]677       CALL histwrite_phy(o_plun, rain_num)
[1813]678
[1898]679       IF (vars_defined) THEN
680          DO i = 1, klon
681             zx_tmp_fi2d(i) = rain_con(i) + snow_con(i)
682          ENDDO
683       ENDIF
684       CALL histwrite_phy(o_pluc, zx_tmp_fi2d)
685       CALL histwrite_phy(o_snow, snow_fall)
[2209]686       CALL histwrite_phy(o_msnow, zxsnow)
[1898]687       CALL histwrite_phy(o_fsnow, zfra_o)
688       CALL histwrite_phy(o_evap, evap)
[2366]689       CALL histwrite_phy(o_tops, topsw*swradcorr)
690       CALL histwrite_phy(o_tops0, topsw0*swradcorr)
[1898]691       CALL histwrite_phy(o_topl, toplw)
692       CALL histwrite_phy(o_topl0, toplw0)
[1813]693
[1898]694       IF (vars_defined) THEN
[2366]695          zx_tmp_fi2d(:) = swup(:,klevp1)*swradcorr(:)
[1898]696       ENDIF
697       CALL histwrite_phy(o_SWupTOA, zx_tmp_fi2d)
[1813]698
[1898]699       IF (vars_defined) THEN
[2366]700          zx_tmp_fi2d(:) = swup0(:,klevp1)*swradcorr(:)
[1898]701       ENDIF
702       CALL histwrite_phy(o_SWupTOAclr, zx_tmp_fi2d)
[1813]703
[1898]704       IF (vars_defined) THEN
[2366]705          zx_tmp_fi2d(:) = swdn(:,klevp1)*swradcorr(:)
[1898]706       ENDIF
707       CALL histwrite_phy(o_SWdnTOA, zx_tmp_fi2d)
[1813]708
[1898]709       IF (vars_defined) THEN
[2366]710          zx_tmp_fi2d(:) = swdn0(:,klevp1)*swradcorr(:)
[1898]711       ENDIF
712       CALL histwrite_phy(o_SWdnTOAclr, zx_tmp_fi2d)
[1813]713
[1898]714       IF (vars_defined) THEN
[2366]715          zx_tmp_fi2d(:) = topsw(:)*swradcorr(:)-toplw(:)
[1898]716       ENDIF
717       CALL histwrite_phy(o_nettop, zx_tmp_fi2d)
[2366]718       CALL histwrite_phy(o_SWup200, SWup200*swradcorr)
719       CALL histwrite_phy(o_SWup200clr, SWup200clr*swradcorr)
720       CALL histwrite_phy(o_SWdn200, SWdn200*swradcorr)
721       CALL histwrite_phy(o_SWdn200clr, SWdn200clr*swradcorr)
[1898]722       CALL histwrite_phy(o_LWup200, LWup200)
723       CALL histwrite_phy(o_LWup200clr, LWup200clr)
724       CALL histwrite_phy(o_LWdn200, LWdn200)
725       CALL histwrite_phy(o_LWdn200clr, LWdn200clr)
[2366]726       CALL histwrite_phy(o_sols, solsw*swradcorr)
727       CALL histwrite_phy(o_sols0, solsw0*swradcorr)
[1898]728       CALL histwrite_phy(o_soll, sollw)
[2366]729       CALL histwrite_phy(o_soll0, sollw0)
[1898]730       CALL histwrite_phy(o_radsol, radsol)
[1813]731
[1898]732       IF (vars_defined) THEN
[2366]733          zx_tmp_fi2d(:) = swup(:,1)*swradcorr(:)
[1898]734       ENDIF
735       CALL histwrite_phy(o_SWupSFC, zx_tmp_fi2d)
[1813]736
[1898]737       IF (vars_defined) THEN
[2366]738          zx_tmp_fi2d(:) = swup0(:,1)*swradcorr(:)
[1898]739       ENDIF
740       CALL histwrite_phy(o_SWupSFCclr, zx_tmp_fi2d)
[1813]741
[1898]742       IF (vars_defined) THEN
[2366]743          zx_tmp_fi2d(:) = swdn(:,1)*swradcorr(:)
[1898]744       ENDIF
745       CALL histwrite_phy(o_SWdnSFC, zx_tmp_fi2d)
[1813]746
[1898]747       IF (vars_defined) THEN
[2366]748          zx_tmp_fi2d(:) = swdn0(:,1)*swradcorr(:)
[1898]749       ENDIF
750       CALL histwrite_phy(o_SWdnSFCclr, zx_tmp_fi2d)
[1813]751
[1898]752       IF (vars_defined) THEN
[2366]753          zx_tmp_fi2d(:)=sollwdown(:)-sollw(:)
[1898]754       ENDIF
755       CALL histwrite_phy(o_LWupSFC, zx_tmp_fi2d)
756       CALL histwrite_phy(o_LWdnSFC, sollwdown)
[1813]757
[1898]758       IF (vars_defined) THEN
759          sollwdownclr(1:klon) = -1.*lwdn0(1:klon,1)
760          zx_tmp_fi2d(1:klon)=sollwdownclr(1:klon)-sollw0(1:klon)
761       ENDIF
762       CALL histwrite_phy(o_LWupSFCclr, zx_tmp_fi2d)
763       CALL histwrite_phy(o_LWdnSFCclr, sollwdownclr)
764       CALL histwrite_phy(o_bils, bils)
765       CALL histwrite_phy(o_bils_diss, bils_diss)
766       CALL histwrite_phy(o_bils_ec, bils_ec)
[2816]767       CALL histwrite_phy(o_bils_ech, bils_ech)
[1898]768       CALL histwrite_phy(o_bils_tke, bils_tke)
769       CALL histwrite_phy(o_bils_kinetic, bils_kinetic)
770       CALL histwrite_phy(o_bils_latent, bils_latent)
771       CALL histwrite_phy(o_bils_enthalp, bils_enthalp)
[1813]772
[1898]773       IF (vars_defined) THEN
774          zx_tmp_fi2d(1:klon)=-1*sens(1:klon)
775       ENDIF
776       CALL histwrite_phy(o_sens, zx_tmp_fi2d)
777       CALL histwrite_phy(o_fder, fder)
778       CALL histwrite_phy(o_ffonte, zxffonte)
779       CALL histwrite_phy(o_fqcalving, zxfqcalving)
780       CALL histwrite_phy(o_fqfonte, zxfqfonte)
[2517]781       CALL histwrite_phy(o_runofflic, zxrunofflic)
[1898]782       IF (vars_defined) THEN
783          zx_tmp_fi2d=0.
784          DO nsrf=1,nbsrf
785             zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxu(:,1,nsrf)
786          ENDDO
787       ENDIF
788       CALL histwrite_phy(o_taux, zx_tmp_fi2d)
[1813]789
[1898]790       IF (vars_defined) THEN
791          zx_tmp_fi2d=0.
792          DO nsrf=1,nbsrf
793             zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxv(:,1,nsrf)
794          ENDDO
795       ENDIF
796       CALL histwrite_phy(o_tauy, zx_tmp_fi2d)
[1813]797
[1898]798       IF (ok_snow) THEN
[2209]799          CALL histwrite_phy(o_snowsrf, snow_o)
[1898]800          CALL histwrite_phy(o_qsnow, qsnow)
801          CALL histwrite_phy(o_snowhgt,snowhgt)
802          CALL histwrite_phy(o_toice,to_ice)
803          CALL histwrite_phy(o_sissnow,sissnow)
804          CALL histwrite_phy(o_runoff,runoff)
805          CALL histwrite_phy(o_albslw3,albsol3_lic)
806       ENDIF
[1813]807
[1898]808       DO nsrf = 1, nbsrf
[2670]809
[1898]810          IF (vars_defined)             zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)*100.
811          CALL histwrite_phy(o_pourc_srf(nsrf), zx_tmp_fi2d)
812          IF (vars_defined)           zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)
813          CALL histwrite_phy(o_fract_srf(nsrf), zx_tmp_fi2d)
814          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxu( 1 : klon, 1, nsrf)
815          CALL histwrite_phy(o_taux_srf(nsrf), zx_tmp_fi2d)
816          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxv( 1 : klon, 1, nsrf)
817          CALL histwrite_phy(o_tauy_srf(nsrf), zx_tmp_fi2d)
818          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = ftsol( 1 : klon, nsrf)
819          CALL histwrite_phy(o_tsol_srf(nsrf), zx_tmp_fi2d)
820          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = evap_pot( 1 : klon, nsrf)
821          CALL histwrite_phy(o_evappot_srf(nsrf), zx_tmp_fi2d)
822          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = ustar(1 : klon, nsrf)
823          CALL histwrite_phy(o_ustar_srf(nsrf), zx_tmp_fi2d)
824          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = u10m(1 : klon, nsrf)
825          CALL histwrite_phy(o_u10m_srf(nsrf), zx_tmp_fi2d)
826          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = v10m(1 : klon, nsrf)
827          CALL histwrite_phy(o_v10m_srf(nsrf), zx_tmp_fi2d)
828          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = t2m(1 : klon, nsrf)
829          CALL histwrite_phy(o_t2m_srf(nsrf), zx_tmp_fi2d)
830          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = fevap(1 : klon, nsrf)
831          CALL histwrite_phy(o_evap_srf(nsrf), zx_tmp_fi2d)
832          IF (vars_defined)        zx_tmp_fi2d(1 : klon) = fluxt( 1 : klon, 1, nsrf)
833          CALL histwrite_phy(o_sens_srf(nsrf), zx_tmp_fi2d)
834          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxlat( 1 : klon, nsrf)
835          CALL histwrite_phy(o_lat_srf(nsrf), zx_tmp_fi2d)
836          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fsollw( 1 : klon, nsrf)
837          CALL histwrite_phy(o_flw_srf(nsrf), zx_tmp_fi2d)
838          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fsolsw( 1 : klon, nsrf)
839          CALL histwrite_phy(o_fsw_srf(nsrf), zx_tmp_fi2d)
840          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfbils( 1 : klon, nsrf)
841          CALL histwrite_phy(o_wbils_srf(nsrf), zx_tmp_fi2d)
842          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfbilo( 1 : klon, nsrf)
843          CALL histwrite_phy(o_wbilo_srf(nsrf), zx_tmp_fi2d)
[2670]844          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfevap( 1 : klon, nsrf)
845          CALL histwrite_phy(o_wevap_srf(nsrf), zx_tmp_fi2d)
846          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfrain( 1 : klon, nsrf)
847          CALL histwrite_phy(o_wrain_srf(nsrf), zx_tmp_fi2d)
848          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfsnow( 1 : klon, nsrf)
849          CALL histwrite_phy(o_wsnow_srf(nsrf), zx_tmp_fi2d)
[1865]850
[1898]851          IF (iflag_pbl > 1) THEN
852             CALL histwrite_phy(o_tke_srf(nsrf),  pbl_tke(:,1:klev,nsrf))
[2561]853             CALL histwrite_phy(o_l_mix(nsrf),  l_mix(:,1:klev,nsrf))
854             CALL histwrite_phy(o_l_mixmin(nsrf),  l_mixmin(:,1:klev,nsrf))
[1898]855             CALL histwrite_phy(o_tke_max_srf(nsrf),  pbl_tke(:,1:klev,nsrf))
856          ENDIF
[2159]857!jyg<
[2255]858          IF (iflag_pbl > 1 .AND. iflag_wake>=1  .AND. iflag_pbl_split >=1) THEN
[2159]859             CALL histwrite_phy(o_dltpbltke_srf(nsrf), wake_delta_pbl_TKE(:,1:klev,nsrf))
860          ENDIF
861!>jyg
[2952]862!          IF (iflag_pbl > 1 .AND. ifl_pbltree  >=1 ) THEN
863!       CALL histwrite_phy(o_treedrg_srf(nsrf), treedrg(:,1:klev,nsrf))
864!            ENDIF
[1813]865
[2952]866
[1898]867       ENDDO
[2538]868
869       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_liq_o(1 : klon, 1)
870       CALL histwrite_phy(o_sens_prec_liq_oce, zx_tmp_fi2d)       
871       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_liq_o(1 : klon, 2)
872       CALL histwrite_phy(o_sens_prec_liq_sic, zx_tmp_fi2d)       
873       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_sol_o(1 : klon, 1)
874       CALL histwrite_phy(o_sens_prec_sol_oce, zx_tmp_fi2d)       
875       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_sol_o(1 : klon, 2)
876       CALL histwrite_phy(o_sens_prec_sol_sic, zx_tmp_fi2d)       
877
878       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_liq_o(1 : klon, 1)
879       CALL histwrite_phy(o_lat_prec_liq_oce, zx_tmp_fi2d)       
880       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_liq_o(1 : klon, 2)
881       CALL histwrite_phy(o_lat_prec_liq_sic, zx_tmp_fi2d)       
882       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_sol_o(1 : klon, 1)
883       CALL histwrite_phy(o_lat_prec_sol_oce, zx_tmp_fi2d)       
884       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_sol_o(1 : klon, 2)
885       CALL histwrite_phy(o_lat_prec_sol_sic, zx_tmp_fi2d)       
886
[1898]887       DO nsrf=1,nbsrf+1
888          CALL histwrite_phy(o_wstar(nsrf), wstar(1 : klon, nsrf))
889       ENDDO
[1813]890
[1898]891       CALL histwrite_phy(o_cdrm, cdragm)
892       CALL histwrite_phy(o_cdrh, cdragh)
893       CALL histwrite_phy(o_cldl, cldl)
894       CALL histwrite_phy(o_cldm, cldm)
895       CALL histwrite_phy(o_cldh, cldh)
896       CALL histwrite_phy(o_cldt, cldt)
[1924]897       CALL histwrite_phy(o_JrNt, JrNt)
898       CALL histwrite_phy(o_cldljn, cldl*JrNt)
899       CALL histwrite_phy(o_cldmjn, cldm*JrNt)
900       CALL histwrite_phy(o_cldhjn, cldh*JrNt)
901       CALL histwrite_phy(o_cldtjn, cldt*JrNt)
[1898]902       CALL histwrite_phy(o_cldq, cldq)
903       IF (vars_defined)       zx_tmp_fi2d(1:klon) = flwp(1:klon)
904       CALL histwrite_phy(o_lwp, zx_tmp_fi2d)
905       IF (vars_defined)       zx_tmp_fi2d(1:klon) = fiwp(1:klon)
906       CALL histwrite_phy(o_iwp, zx_tmp_fi2d)
907       CALL histwrite_phy(o_ue, ue)
908       CALL histwrite_phy(o_ve, ve)
909       CALL histwrite_phy(o_uq, uq)
910       CALL histwrite_phy(o_vq, vq)
[2690]911       IF (iflag_con.GE.3) THEN ! sb
[1898]912          CALL histwrite_phy(o_cape, cape)
913          CALL histwrite_phy(o_pbase, ema_pcb)
914          CALL histwrite_phy(o_ptop, ema_pct)
915          CALL histwrite_phy(o_fbase, ema_cbmf)
[2690]916          IF (iflag_con /= 30) THEN
[1898]917             CALL histwrite_phy(o_plcl, plcl)
918             CALL histwrite_phy(o_plfc, plfc)
919             CALL histwrite_phy(o_wbeff, wbeff)
[2824]920             CALL histwrite_phy(o_convoccur, convoccur)
[2690]921          ENDIF
[1816]922
[1898]923          CALL histwrite_phy(o_cape_max, cape)
[1813]924
[1898]925          CALL histwrite_phy(o_upwd, upwd)
926          CALL histwrite_phy(o_Ma, Ma)
927          CALL histwrite_phy(o_dnwd, dnwd)
928          CALL histwrite_phy(o_dnwd0, dnwd0)
929          IF (vars_defined)         zx_tmp_fi2d=float(itau_con)/float(itap)
930          CALL histwrite_phy(o_ftime_con, zx_tmp_fi2d)
931          IF (vars_defined) THEN
[2690]932             IF (iflag_thermals>=1)THEN
[1898]933                zx_tmp_fi3d=dnwd+dnwd0+upwd+fm_therm(:,1:klev)
934             ELSE
935                zx_tmp_fi3d=dnwd+dnwd0+upwd
936             ENDIF
937          ENDIF
938          CALL histwrite_phy(o_mc, zx_tmp_fi3d)
939       ENDIF !iflag_con .GE. 3
940       CALL histwrite_phy(o_prw, prw)
[2496]941       CALL histwrite_phy(o_prlw, prlw)
942       CALL histwrite_phy(o_prsw, prsw)
[1898]943       CALL histwrite_phy(o_s_pblh, s_pblh)
944       CALL histwrite_phy(o_s_pblt, s_pblt)
945       CALL histwrite_phy(o_s_lcl, s_lcl)
946       CALL histwrite_phy(o_s_therm, s_therm)
947       !IM : Les champs suivants (s_capCL, s_oliqCL, s_cteiCL, s_trmb1, s_trmb2, s_trmb3) ne sont pas definis dans HBTM.F
948       !       IF (o_s_capCL%flag(iff)<=lev_files(iff)) THEN
949       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
950       !    $o_s_capCL%name,itau_w,s_capCL)
951       !       ENDIF
952       !       IF (o_s_oliqCL%flag(iff)<=lev_files(iff)) THEN
953       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
954       !    $o_s_oliqCL%name,itau_w,s_oliqCL)
955       !       ENDIF
956       !       IF (o_s_cteiCL%flag(iff)<=lev_files(iff)) THEN
957       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
958       !    $o_s_cteiCL%name,itau_w,s_cteiCL)
959       !       ENDIF
960       !       IF (o_s_trmb1%flag(iff)<=lev_files(iff)) THEN
961       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
962       !    $o_s_trmb1%name,itau_w,s_trmb1)
963       !       ENDIF
964       !       IF (o_s_trmb2%flag(iff)<=lev_files(iff)) THEN
965       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
966       !    $o_s_trmb2%name,itau_w,s_trmb2)
967       !       ENDIF
968       !       IF (o_s_trmb3%flag(iff)<=lev_files(iff)) THEN
969       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
970       !    $o_s_trmb3%name,itau_w,s_trmb3)
971       !       ENDIF
[1813]972
[2282]973#ifdef CPP_IOIPSL
974#ifndef CPP_XIOS
[2271]975  IF (.NOT.ok_all_xml) THEN
[1898]976       ! ATTENTION, LES ANCIENS HISTWRITE ONT ETES CONSERVES EN ATTENDANT MIEUX:
977       ! Champs interpolles sur des niveaux de pression
[2271]978       missing_val=missing_val_nf90
[1898]979       DO iff=1, nfiles
980          ll=0
981          DO k=1, nlevSTD
982             bb2=clevSTD(k)
[2690]983             IF (bb2.EQ."850".OR.bb2.EQ."700".OR. &
[1898]984                  bb2.EQ."500".OR.bb2.EQ."200".OR. &
985                  bb2.EQ."100".OR. &
986                  bb2.EQ."50".OR.bb2.EQ."10") THEN
[1813]987
[1898]988                ! a refaire correctement !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
989                ll=ll+1
990                CALL histwrite_phy(o_uSTDlevs(ll),uwriteSTD(:,k,iff), iff)
991                CALL histwrite_phy(o_vSTDlevs(ll),vwriteSTD(:,k,iff), iff)
992                CALL histwrite_phy(o_wSTDlevs(ll),wwriteSTD(:,k,iff), iff)
993                CALL histwrite_phy(o_zSTDlevs(ll),phiwriteSTD(:,k,iff), iff)
994                CALL histwrite_phy(o_qSTDlevs(ll),qwriteSTD(:,k,iff), iff)
995                CALL histwrite_phy(o_tSTDlevs(ll),twriteSTD(:,k,iff), iff)
[1813]996
[1898]997             ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR.
998          ENDDO
[1813]999       ENDDO
[2282]1000  ENDIF
1001#endif
1002#endif
1003#ifdef CPP_XIOS
[2690]1004  IF (ok_all_xml) THEN
[2271]1005!XIOS  CALL xios_get_field_attr("u850",default_value=missing_val)
1006!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1007          ll=0
1008          DO k=1, nlevSTD
1009             bb2=clevSTD(k)
[2690]1010             IF (bb2.EQ."850".OR.bb2.EQ."700".OR. &
[2271]1011                bb2.EQ."500".OR.bb2.EQ."200".OR. &
1012                bb2.EQ."100".OR. &
1013                bb2.EQ."50".OR.bb2.EQ."10") THEN
1014                ll=ll+1
[2282]1015                CALL histwrite_phy(o_uSTDlevs(ll),ulevSTD(:,k))
1016                CALL histwrite_phy(o_vSTDlevs(ll),vlevSTD(:,k))
1017                CALL histwrite_phy(o_wSTDlevs(ll),wlevSTD(:,k))
1018                CALL histwrite_phy(o_zSTDlevs(ll),philevSTD(:,k))
1019                CALL histwrite_phy(o_qSTDlevs(ll),qlevSTD(:,k))
1020                CALL histwrite_phy(o_tSTDlevs(ll),tlevSTD(:,k))
[2271]1021             ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR.
1022          ENDDO
1023  ENDIF
[2282]1024#endif
[1898]1025       IF (vars_defined) THEN
1026          DO i=1, klon
1027             IF (pctsrf(i,is_oce).GT.epsfra.OR. &
1028                  pctsrf(i,is_sic).GT.epsfra) THEN
1029                zx_tmp_fi2d(i) = (ftsol(i, is_oce) * pctsrf(i,is_oce)+ &
1030                     ftsol(i, is_sic) * pctsrf(i,is_sic))/ &
1031                     (pctsrf(i,is_oce)+pctsrf(i,is_sic))
1032             ELSE
1033                zx_tmp_fi2d(i) = 273.15
1034             ENDIF
1035          ENDDO
[1813]1036       ENDIF
[1898]1037       CALL histwrite_phy(o_t_oce_sic, zx_tmp_fi2d)
[1813]1038
[1898]1039       ! Couplage convection-couche limite
1040       IF (iflag_con.GE.3) THEN
1041          IF (iflag_coupl>=1) THEN
1042             CALL histwrite_phy(o_ale_bl, ale_bl)
1043             CALL histwrite_phy(o_alp_bl, alp_bl)
1044          ENDIF !iflag_coupl>=1
1045       ENDIF !(iflag_con.GE.3)
1046       ! Wakes
1047       IF (iflag_con.EQ.3) THEN
1048          IF (iflag_wake>=1) THEN
1049             CALL histwrite_phy(o_ale_wk, ale_wake)
1050             CALL histwrite_phy(o_alp_wk, alp_wake)
[2393]1051             IF (iflag_pbl_split>=1) THEN
1052               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dtvdf_x(1:klon,1:klev)/pdtphys
1053               CALL histwrite_phy(o_dtvdf_x    ,zx_tmp_fi3d)
1054               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dtvdf_w(1:klon,1:klev)/pdtphys
1055               CALL histwrite_phy(o_dtvdf_w    ,zx_tmp_fi3d)
1056               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dqvdf_x(1:klon,1:klev)/pdtphys
1057               CALL histwrite_phy(o_dqvdf_x    ,zx_tmp_fi3d)
1058               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dqvdf_w(1:klon,1:klev)/pdtphys
1059               CALL histwrite_phy(o_dqvdf_w    ,zx_tmp_fi3d)
1060               CALL histwrite_phy(o_sens_x     ,sens_x     )
1061               CALL histwrite_phy(o_sens_w     ,sens_w     )
1062               CALL histwrite_phy(o_flat_x     ,zxfluxlat_x)
1063               CALL histwrite_phy(o_flat_w     ,zxfluxlat_w)
1064               CALL histwrite_phy(o_delta_tsurf,delta_tsurf)
1065               CALL histwrite_phy(o_cdragh_x   ,cdragh_x   )
1066               CALL histwrite_phy(o_cdragh_w   ,cdragh_w   )
1067               CALL histwrite_phy(o_cdragm_x   ,cdragm_x   )
1068               CALL histwrite_phy(o_cdragm_w   ,cdragm_w   )
1069               CALL histwrite_phy(o_kh         ,kh         )
1070               CALL histwrite_phy(o_kh_x       ,kh_x       )
1071               CALL histwrite_phy(o_kh_w       ,kh_w       )
1072             ENDIF   ! (iflag_pbl_split>=1)
[1898]1073             CALL histwrite_phy(o_ale, ale)
1074             CALL histwrite_phy(o_alp, alp)
1075             CALL histwrite_phy(o_cin, cin)
1076             CALL histwrite_phy(o_WAPE, wake_pe)
1077             CALL histwrite_phy(o_wake_h, wake_h)
1078             CALL histwrite_phy(o_wake_s, wake_s)
1079             CALL histwrite_phy(o_wake_deltat, wake_deltat)
1080             CALL histwrite_phy(o_wake_deltaq, wake_deltaq)
1081             CALL histwrite_phy(o_wake_omg, wake_omg)
1082             IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_wake(1:klon,1:klev) &
1083                  /pdtphys
1084             CALL histwrite_phy(o_dtwak, zx_tmp_fi3d)
1085             IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_wake(1:klon,1:klev)/pdtphys
1086             CALL histwrite_phy(o_dqwak, zx_tmp_fi3d)
[2486]1087             CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1088             CALL histwrite_phy(o_dqwak2d, zx_tmp_fi2d)
[1898]1089          ENDIF ! iflag_wake>=1
1090          CALL histwrite_phy(o_ftd, ftd)
1091          CALL histwrite_phy(o_fqd, fqd)
[2253]1092       ENDIF !(iflag_con.EQ.3)
1093       IF (iflag_con.EQ.3.OR.iflag_con.EQ.30) THEN
[1898]1094          ! sortie RomP convection descente insaturee iflag_con=30
[2253]1095          ! etendue a iflag_con=3 (jyg)
[1898]1096          CALL histwrite_phy(o_Vprecip, Vprecip)
1097          CALL histwrite_phy(o_wdtrainA, wdtrainA)
1098          CALL histwrite_phy(o_wdtrainM, wdtrainM)
1099       ENDIF !(iflag_con.EQ.3.or.iflag_con.EQ.30)
[1813]1100!!! nrlmd le 10/04/2012
[1898]1101       IF (iflag_trig_bl>=1) THEN
1102          CALL histwrite_phy(o_n2, n2)
1103          CALL histwrite_phy(o_s2, s2)
1104          CALL histwrite_phy(o_proba_notrig, proba_notrig)
1105          CALL histwrite_phy(o_random_notrig, random_notrig)
1106          CALL histwrite_phy(o_ale_bl_stat, ale_bl_stat)
1107          CALL histwrite_phy(o_ale_bl_trig, ale_bl_trig)
[1813]1108       ENDIF  !(iflag_trig_bl>=1)
[1898]1109       IF (iflag_clos_bl>=1) THEN
1110          CALL histwrite_phy(o_alp_bl_det, alp_bl_det)
1111          CALL histwrite_phy(o_alp_bl_fluct_m, alp_bl_fluct_m)
1112          CALL histwrite_phy(o_alp_bl_fluct_tke,  &
1113               alp_bl_fluct_tke)
1114          CALL histwrite_phy(o_alp_bl_conv, alp_bl_conv)
1115          CALL histwrite_phy(o_alp_bl_stat, alp_bl_stat)
[1813]1116       ENDIF  !(iflag_clos_bl>=1)
1117!!! fin nrlmd le 10/04/2012
[2057]1118       ! Output of slab ocean variables
[1898]1119       IF (type_ocean=='slab ') THEN
[3002]1120          CALL histwrite_phy(o_slab_bils, slab_wfbils)
[2057]1121          IF (nslay.EQ.1) THEN
1122              zx_tmp_fi2d(:)=tslab(:,1)
1123              CALL histwrite_phy(o_tslab, zx_tmp_fi2d)
[3002]1124              zx_tmp_fi2d(:)=dt_qflux(:,1)
1125              CALL histwrite_phy(o_slab_qflux, zx_tmp_fi2d)
[2057]1126          ELSE
[2656]1127              CALL histwrite_phy(o_tslab, tslab(:,1:nslay))
[3002]1128              CALL histwrite_phy(o_slab_qflux, dt_qflux(:,1:nslay))
[2690]1129          ENDIF
[2209]1130          IF (version_ocean=='sicINT') THEN
1131              CALL histwrite_phy(o_slab_bilg, slab_bilg)
1132              CALL histwrite_phy(o_slab_tice, tice)
1133              CALL histwrite_phy(o_slab_sic, seaice)
[2690]1134          ENDIF
[3002]1135          IF (slab_gm) THEN
1136             CALL histwrite_phy(o_slab_gm, dt_gm(:,1:nslay))
1137          END IF
[2656]1138          IF (slab_hdiff) THEN
1139            IF (nslay.EQ.1) THEN
1140                zx_tmp_fi2d(:)=dt_hdiff(:,1)
1141                CALL histwrite_phy(o_slab_hdiff, zx_tmp_fi2d)
1142            ELSE
1143                CALL histwrite_phy(o_slab_hdiff, dt_hdiff(:,1:nslay))
[2690]1144            ENDIF
1145          ENDIF
[2656]1146          IF (slab_ekman.GT.0) THEN
1147            IF (nslay.EQ.1) THEN
1148                zx_tmp_fi2d(:)=dt_ekman(:,1)
1149                CALL histwrite_phy(o_slab_ekman, zx_tmp_fi2d)
1150            ELSE
1151                CALL histwrite_phy(o_slab_ekman, dt_ekman(:,1:nslay))
[2690]1152            ENDIF
1153          ENDIF
[1898]1154       ENDIF !type_ocean == force/slab
1155       CALL histwrite_phy(o_weakinv, weak_inversion)
1156       CALL histwrite_phy(o_dthmin, dthmin)
1157       CALL histwrite_phy(o_cldtau, cldtau)
1158       CALL histwrite_phy(o_cldemi, cldemi)
1159       CALL histwrite_phy(o_pr_con_l, pmflxr(:,1:klev))
1160       CALL histwrite_phy(o_pr_con_i, pmflxs(:,1:klev))
1161       CALL histwrite_phy(o_pr_lsc_l, prfl(:,1:klev))
1162       CALL histwrite_phy(o_pr_lsc_i, psfl(:,1:klev))
1163       CALL histwrite_phy(o_re, re)
1164       CALL histwrite_phy(o_fl, fl)
1165       IF (vars_defined) THEN
1166          DO i=1, klon
1167             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
1168          ENDDO
1169       ENDIF
1170       CALL histwrite_phy(o_rh2m, zx_tmp_fi2d)
[1813]1171
[1898]1172       IF (vars_defined) THEN
1173          DO i=1, klon
1174             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
1175          ENDDO
1176       ENDIF
1177       CALL histwrite_phy(o_rh2m_min, zx_tmp_fi2d)
[1813]1178
[1898]1179       IF (vars_defined) THEN
1180          DO i=1, klon
1181             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
1182          ENDDO
1183       ENDIF
1184       CALL histwrite_phy(o_rh2m_max, zx_tmp_fi2d)
[1813]1185
[1898]1186       CALL histwrite_phy(o_qsat2m, qsat2m)
1187       CALL histwrite_phy(o_tpot, tpot)
1188       CALL histwrite_phy(o_tpote, tpote)
1189       IF (vars_defined) zx_tmp_fi2d(1 : klon) = fsolsw( 1 : klon, is_ter)
1190       CALL histwrite_phy(o_SWnetOR,  zx_tmp_fi2d)
1191       IF (vars_defined) zx_tmp_fi2d(1:klon) = solsw(1:klon)/(1.-albsol1(1:klon))
1192       CALL histwrite_phy(o_SWdownOR,  zx_tmp_fi2d)
1193       CALL histwrite_phy(o_LWdownOR, sollwdown)
1194       CALL histwrite_phy(o_snowl, snow_lsc)
1195       CALL histwrite_phy(o_solldown, sollwdown)
1196       CALL histwrite_phy(o_dtsvdfo, d_ts(:,is_oce))
1197       CALL histwrite_phy(o_dtsvdft, d_ts(:,is_ter))
1198       CALL histwrite_phy(o_dtsvdfg,  d_ts(:,is_lic))
1199       CALL histwrite_phy(o_dtsvdfi, d_ts(:,is_sic))
[2243]1200       CALL histwrite_phy(o_z0m, z0m(:,nbsrf+1))
1201       CALL histwrite_phy(o_z0h, z0h(:,nbsrf+1))
[2952]1202
[2854]1203       ! od550 per species
[2146]1204!--OLIVIER
1205!This is warranted by treating INCA aerosols as offline aerosols
1206!       IF (new_aod .and. (.not. aerosol_couple)) THEN
1207       IF (new_aod) THEN
[2003]1208          IF (flag_aerosol.GT.0) THEN
[2806]1209             CALL histwrite_phy(o_od443aer, od443aer)
[1898]1210             CALL histwrite_phy(o_od550aer, od550aer)
1211             CALL histwrite_phy(o_od865aer, od865aer)
[2842]1212             CALL histwrite_phy(o_abs550aer, abs550aer)
[1898]1213             CALL histwrite_phy(o_od550lt1aer, od550lt1aer)
1214             CALL histwrite_phy(o_sconcso4, sconcso4)
[2146]1215             CALL histwrite_phy(o_sconcno3, sconcno3)
[1898]1216             CALL histwrite_phy(o_sconcoa, sconcoa)
1217             CALL histwrite_phy(o_sconcbc, sconcbc)
1218             CALL histwrite_phy(o_sconcss, sconcss)
1219             CALL histwrite_phy(o_sconcdust, sconcdust)
1220             CALL histwrite_phy(o_concso4, concso4)
[2146]1221             CALL histwrite_phy(o_concno3, concno3)
[1898]1222             CALL histwrite_phy(o_concoa, concoa)
1223             CALL histwrite_phy(o_concbc, concbc)
1224             CALL histwrite_phy(o_concss, concss)
1225             CALL histwrite_phy(o_concdust, concdust)
1226             CALL histwrite_phy(o_loadso4, loadso4)
1227             CALL histwrite_phy(o_loadoa, loadoa)
1228             CALL histwrite_phy(o_loadbc, loadbc)
1229             CALL histwrite_phy(o_loadss, loadss)
1230             CALL histwrite_phy(o_loaddust, loaddust)
[2823]1231             CALL histwrite_phy(o_loadno3, loadno3)
[2854]1232             CALL histwrite_phy(o_dryod550aer, dryod550aer)
1233             DO naero = 1, naero_tot-1
1234                CALL histwrite_phy(o_drytausumaero(naero),drytausum_aero(:,naero))
1235             END DO
[1813]1236          ENDIF
[2854]1237          !--STRAT AER
[2530]1238          IF (flag_aerosol.GT.0.OR.flag_aerosol_strat.GT.0) THEN
[2003]1239             DO naero = 1, naero_tot
[2690]1240                CALL histwrite_phy(o_tausumaero(naero),tausum_aero(:,2,naero))
[1898]1241             END DO
[1813]1242          ENDIF
[2530]1243          IF (flag_aerosol_strat.GT.0) THEN
[2690]1244             CALL histwrite_phy(o_tausumaero_lw,tausum_aero(:,6,id_STRAT_phy))
[2146]1245          ENDIF
[1898]1246       ENDIF
[2992]1247
1248       CALL histwrite_phy(o_p_tropopause, p_tropopause)
1249       CALL histwrite_phy(o_t_tropopause, t_tropopause)
1250       CALL histwrite_phy(o_z_tropopause, z_tropopause)
1251
[2993]1252! ThL -- In the following, we assume read_climoz == 1
1253       zx_tmp_fi2d = 0.0    ! Computation for strato, added ThL
1254       DO k=1, klev
1255          zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + wo(:,k,1) * stratomask(:,k) * 1.e3
1256       END DO
1257       CALL histwrite_phy(o_col_O3_strato, zx_tmp_fi2d) ! Added ThL
1258       zx_tmp_fi2d = 0.0    ! Computation for tropo, added ThL
1259       DO k=1, klev
1260          zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + wo(:,k,1) * (1.0-stratomask(:,k)) * 1.e3
1261       END DO
1262       CALL histwrite_phy(o_col_O3_tropo, zx_tmp_fi2d)   ! Added ThL
1263! end add ThL
1264
[2690]1265#ifdef CPP_StratAer
1266       IF (type_trac=='coag') THEN
1267          CALL histwrite_phy(o_R2SO4, R2SO4)
1268          CALL histwrite_phy(o_OCS_lifetime, OCS_lifetime)
1269          CALL histwrite_phy(o_SO2_lifetime, SO2_lifetime)
[2752]1270          CALL histwrite_phy(o_budg_3D_backgr_ocs,   budg_3D_backgr_ocs)
1271          CALL histwrite_phy(o_budg_3D_backgr_so2,   budg_3D_backgr_so2)
1272          CALL histwrite_phy(o_budg_3D_ocs_to_so2,   budg_3D_ocs_to_so2)
1273          CALL histwrite_phy(o_budg_3D_so2_to_h2so4, budg_3D_so2_to_h2so4)
1274          CALL histwrite_phy(o_budg_3D_nucl,         budg_3D_nucl)
1275          CALL histwrite_phy(o_budg_3D_cond_evap,    budg_3D_cond_evap)
1276          CALL histwrite_phy(o_budg_dep_dry_h2so4,   budg_dep_dry_h2so4)
1277          CALL histwrite_phy(o_budg_dep_wet_h2so4,   budg_dep_wet_h2so4)
1278          CALL histwrite_phy(o_budg_dep_dry_part,    budg_dep_dry_part)
1279          CALL histwrite_phy(o_budg_dep_wet_part,    budg_dep_wet_part)
1280          CALL histwrite_phy(o_budg_emi_ocs,         budg_emi_ocs)
1281          CALL histwrite_phy(o_budg_emi_so2,         budg_emi_so2)
1282          CALL histwrite_phy(o_budg_emi_h2so4,       budg_emi_h2so4)
1283          CALL histwrite_phy(o_budg_emi_part,        budg_emi_part)
1284          CALL histwrite_phy(o_budg_ocs_to_so2,      budg_ocs_to_so2)
1285          CALL histwrite_phy(o_budg_so2_to_h2so4,    budg_so2_to_h2so4)
1286          CALL histwrite_phy(o_budg_h2so4_to_part,   budg_h2so4_to_part)
1287          CALL histwrite_phy(o_budg_sed_part,        budg_sed_part)
[2690]1288          CALL histwrite_phy(o_surf_PM25_sulf, surf_PM25_sulf)
1289          CALL histwrite_phy(o_vsed_aer, vsed_aer)
1290          CALL histwrite_phy(o_f_r_wet, f_r_wet)
1291          CALL histwrite_phy(o_ext_strat_550, tau_strat_550)
1292          CALL histwrite_phy(o_ext_strat_1020, tau_strat_1020)
1293          CALL histwrite_phy(o_tau_strat_550, tausum_strat(:,1))
1294          CALL histwrite_phy(o_tau_strat_1020, tausum_strat(:,2))
1295       ENDIF
1296#endif
[1813]1297       IF (ok_ade) THEN
[2366]1298          CALL histwrite_phy(o_topswad, topswad_aero*swradcorr)
1299          CALL histwrite_phy(o_topswad0, topswad0_aero*swradcorr)
1300          CALL histwrite_phy(o_solswad, solswad_aero*swradcorr)
1301          CALL histwrite_phy(o_solswad0, solswad0_aero*swradcorr)
[2966]1302          IF (type_trac .ne. 'inca') THEN
1303             IF (config_inca .ne. 'aeNP') THEN
1304                CALL histwrite_phy(o_toplwad, toplwad_aero)
1305                CALL histwrite_phy(o_toplwad0, toplwad0_aero)
1306                CALL histwrite_phy(o_sollwad, sollwad_aero)
1307                CALL histwrite_phy(o_sollwad0, sollwad0_aero)
1308             ENDIF
1309          ENDIF
[1898]1310          !====MS forcing diagnostics
[2690]1311          IF (new_aod) THEN
[2366]1312             zx_tmp_fi2d(:)=topsw_aero(:,1)*swradcorr(:)
1313             CALL histwrite_phy(o_swtoaas_nat,zx_tmp_fi2d)
1314             zx_tmp_fi2d(:)=solsw_aero(:,1)*swradcorr(:)
1315             CALL histwrite_phy(o_swsrfas_nat,zx_tmp_fi2d)
1316             zx_tmp_fi2d(:)=topsw0_aero(:,1)*swradcorr(:)
1317             CALL histwrite_phy(o_swtoacs_nat,zx_tmp_fi2d)
1318             zx_tmp_fi2d(:)=solsw0_aero(:,1)*swradcorr(:)
1319             CALL histwrite_phy(o_swsrfcs_nat,zx_tmp_fi2d)
[1898]1320             !ant
[2366]1321             zx_tmp_fi2d(:)=topsw_aero(:,2)*swradcorr(:)
1322             CALL histwrite_phy(o_swtoaas_ant,zx_tmp_fi2d)
1323             zx_tmp_fi2d(:)=solsw_aero(:,2)*swradcorr(:)
1324             CALL histwrite_phy(o_swsrfas_ant,zx_tmp_fi2d)
1325             zx_tmp_fi2d(:)=topsw0_aero(:,2)*swradcorr(:)
1326             CALL histwrite_phy(o_swtoacs_ant,zx_tmp_fi2d)
1327             zx_tmp_fi2d(:)=solsw0_aero(:,2)*swradcorr(:)
1328             CALL histwrite_phy(o_swsrfcs_ant,zx_tmp_fi2d)
[1898]1329             !cf
[2690]1330             IF (.not. aerosol_couple) THEN
[2366]1331                zx_tmp_fi2d(:)=topswcf_aero(:,1)*swradcorr(:)
1332                CALL histwrite_phy(o_swtoacf_nat,zx_tmp_fi2d)
1333                zx_tmp_fi2d(:)=solswcf_aero(:,1)*swradcorr(:)
1334                CALL histwrite_phy(o_swsrfcf_nat,zx_tmp_fi2d)
1335                zx_tmp_fi2d(:)=topswcf_aero(:,2)*swradcorr(:)
1336                CALL histwrite_phy(o_swtoacf_ant,zx_tmp_fi2d)
1337                zx_tmp_fi2d(:)=solswcf_aero(:,2)*swradcorr(:)
1338                CALL histwrite_phy(o_swsrfcf_ant,zx_tmp_fi2d)
1339                zx_tmp_fi2d(:)=topswcf_aero(:,3)*swradcorr(:)
1340                CALL histwrite_phy(o_swtoacf_zero,zx_tmp_fi2d)
1341                zx_tmp_fi2d(:)=solswcf_aero(:,3)*swradcorr(:)
1342                CALL histwrite_phy(o_swsrfcf_zero,zx_tmp_fi2d)
[2690]1343             ENDIF
1344          ENDIF ! new_aod
[1898]1345          !====MS forcing diagnostics
[1813]1346       ENDIF
1347       IF (ok_aie) THEN
[2366]1348          CALL histwrite_phy(o_topswai, topswai_aero*swradcorr)
[2780]1349          CALL histwrite_phy(o_toplwai, toplwai_aero*swradcorr)
[2366]1350          CALL histwrite_phy(o_solswai, solswai_aero*swradcorr)
[2780]1351          CALL histwrite_phy(o_sollwai, sollwai_aero*swradcorr)
[2003]1352       ENDIF
1353       IF (flag_aerosol.GT.0.AND.ok_cdnc) THEN
[1898]1354          CALL histwrite_phy(o_scdnc, scdnc)
1355          CALL histwrite_phy(o_cldncl, cldncl)
1356          CALL histwrite_phy(o_reffclws, reffclws)
1357          CALL histwrite_phy(o_reffclwc, reffclwc)
1358          CALL histwrite_phy(o_cldnvi, cldnvi)
1359          CALL histwrite_phy(o_lcc, lcc)
1360          CALL histwrite_phy(o_lcc3d, lcc3d)
1361          CALL histwrite_phy(o_lcc3dcon, lcc3dcon)
1362          CALL histwrite_phy(o_lcc3dstra, lcc3dstra)
1363          CALL histwrite_phy(o_reffclwtop, reffclwtop)
[1813]1364       ENDIF
[1898]1365       ! Champs 3D:
[1813]1366       IF (ok_ade .OR. ok_aie) then
[1898]1367          CALL histwrite_phy(o_ec550aer, ec550aer)
[1813]1368       ENDIF
[1898]1369       CALL histwrite_phy(o_lwcon, flwc)
1370       CALL histwrite_phy(o_iwcon, fiwc)
1371       CALL histwrite_phy(o_temp, t_seri)
1372       CALL histwrite_phy(o_theta, theta)
1373       CALL histwrite_phy(o_ovapinit, qx(:,:,ivap))
1374       CALL histwrite_phy(o_ovap, q_seri)
1375       CALL histwrite_phy(o_oliq, ql_seri)
[2553]1376       CALL histwrite_phy(o_ocond, ql_seri+qs_seri)
[1898]1377       CALL histwrite_phy(o_geop, zphi)
1378       CALL histwrite_phy(o_vitu, u_seri)
1379       CALL histwrite_phy(o_vitv, v_seri)
1380       CALL histwrite_phy(o_vitw, omega)
1381       CALL histwrite_phy(o_pres, pplay)
1382       CALL histwrite_phy(o_paprs, paprs(:,1:klev))
[2377]1383       CALL histwrite_phy(o_zfull,zphi/RG)
[1813]1384
[2541]1385       IF (flag_aerosol_strat.EQ.2) THEN
1386         CALL histwrite_phy(o_stratomask, stratomask)
1387       ENDIF
1388     
[1898]1389       IF (vars_defined)  THEN
[2377]1390        zx_tmp_fi3d(:,1)= pphis(:)/RG
1391        DO k = 2, klev
1392         DO i = 1, klon
1393            zx_tmp_fi3d(i,k) = zphi(i,k)/RG + &
1394                          (zphi(i,k)-zphi(i,k-1))/RG * &
1395                          (paprs(i,k)-pplay(i,k))/(pplay(i,k)-pplay(i,k-1))
1396         ENDDO
1397        ENDDO
[1898]1398       ENDIF
1399       CALL histwrite_phy(o_zhalf, zx_tmp_fi3d)
1400       CALL histwrite_phy(o_rneb, cldfra)
1401       CALL histwrite_phy(o_rnebcon, rnebcon)
1402       CALL histwrite_phy(o_rnebls, rneb)
[2945]1403       CALL histwrite_phy(o_rneblsvol, rneblsvol)
[1938]1404       IF (vars_defined)  THEN
1405          DO k=1, klev
1406             DO i=1, klon
1407                zx_tmp_fi3d(i,k)=cldfra(i,k)*JrNt(i)
1408             ENDDO
1409          ENDDO
1410       ENDIF
[1924]1411       CALL histwrite_phy(o_rnebjn, zx_tmp_fi3d)
[1898]1412       CALL histwrite_phy(o_rhum, zx_rh)
1413       CALL histwrite_phy(o_ozone, &
1414            wo(:, :, 1) * dobson_u * 1e3 / zmasse / rmo3 * rmd)
[1813]1415
[1898]1416       IF (read_climoz == 2) THEN
1417          CALL histwrite_phy(o_ozone_light, &
1418               wo(:, :, 2) * dobson_u * 1e3 / zmasse / rmo3 * rmd)
1419       ENDIF
[1813]1420
[2665]1421       CALL histwrite_phy(o_duphy, d_u)
1422
[1898]1423       CALL histwrite_phy(o_dtphy, d_t)
[2496]1424
[1898]1425       CALL histwrite_phy(o_dqphy,  d_qx(:,:,ivap))
[2486]1426       CALL water_int(klon,klev,d_qx(:,:,ivap),zmasse,zx_tmp_fi2d)
1427       CALL histwrite_phy(o_dqphy2d,  zx_tmp_fi2d)
[2496]1428
1429       CALL histwrite_phy(o_dqlphy,  d_qx(:,:,iliq))
1430       CALL water_int(klon,klev,d_qx(:,:,iliq),zmasse,zx_tmp_fi2d)
1431       CALL histwrite_phy(o_dqlphy2d,  zx_tmp_fi2d)
1432
1433       IF (nqo.EQ.3) THEN
1434       CALL histwrite_phy(o_dqsphy,  d_qx(:,:,isol))
1435       CALL water_int(klon,klev,d_qx(:,:,isol),zmasse,zx_tmp_fi2d)
1436       CALL histwrite_phy(o_dqsphy2d,  zx_tmp_fi2d)
1437       ELSE
1438       zx_tmp_fi3d=0.0
1439       CALL histwrite_phy(o_dqsphy,  zx_tmp_fi3d)
1440       zx_tmp_fi2d=0.0
1441       CALL histwrite_phy(o_dqsphy2d,  zx_tmp_fi2d)
1442       ENDIF
1443
[1898]1444       DO nsrf=1, nbsrf
1445          IF (vars_defined) zx_tmp_fi2d(1 : klon) = falb1( 1 : klon, nsrf)
1446          CALL histwrite_phy(o_albe_srf(nsrf), zx_tmp_fi2d)
[2243]1447          IF (vars_defined) zx_tmp_fi2d(1 : klon) = z0m( 1 : klon, nsrf)
1448          CALL histwrite_phy(o_z0m_srf(nsrf), zx_tmp_fi2d)
1449          IF (vars_defined) zx_tmp_fi2d(1 : klon) = z0h( 1 : klon, nsrf)
1450          CALL histwrite_phy(o_z0h_srf(nsrf), zx_tmp_fi2d)
[1898]1451          IF (vars_defined) zx_tmp_fi2d(1 : klon) = agesno( 1 : klon, nsrf)
1452          CALL histwrite_phy(o_ages_srf(nsrf), zx_tmp_fi2d)
[2209]1453          IF (vars_defined) zx_tmp_fi2d(1 : klon) = snow( 1 : klon, nsrf)
1454          CALL histwrite_phy(o_snow_srf(nsrf), zx_tmp_fi2d)
[1898]1455       ENDDO !nsrf=1, nbsrf
1456       CALL histwrite_phy(o_alb1, albsol1)
1457       CALL histwrite_phy(o_alb2, albsol2)
1458       !FH Sorties pour la couche limite
[2690]1459       IF (iflag_pbl>1) THEN
[1898]1460          zx_tmp_fi3d=0.
1461          IF (vars_defined) THEN
[2690]1462             DO nsrf=1,nbsrf
1463                DO k=1,klev
[1898]1464                   zx_tmp_fi3d(:,k)=zx_tmp_fi3d(:,k) &
1465                        +pctsrf(:,nsrf)*pbl_tke(:,k,nsrf)
[2690]1466                ENDDO
1467             ENDDO
[1898]1468          ENDIF
1469          CALL histwrite_phy(o_tke, zx_tmp_fi3d)
[1813]1470
[1898]1471          CALL histwrite_phy(o_tke_max, zx_tmp_fi3d)
1472       ENDIF
[1813]1473
[1898]1474       CALL histwrite_phy(o_kz, coefh(:,:,is_ave))
[1813]1475
[1898]1476       CALL histwrite_phy(o_kz_max, coefh(:,:,is_ave))
[1813]1477
[1898]1478       CALL histwrite_phy(o_clwcon, clwcon0)
1479       CALL histwrite_phy(o_dtdyn, d_t_dyn)
[2496]1480
[1898]1481       CALL histwrite_phy(o_dqdyn, d_q_dyn)
[2496]1482
[2499]1483       CALL histwrite_phy(o_dqdyn2d,d_q_dyn2d)
1484
[2496]1485       CALL histwrite_phy(o_dqldyn, d_ql_dyn)
1486
[2499]1487       CALL histwrite_phy(o_dqldyn2d, d_ql_dyn2d)
1488
[2496]1489       CALL histwrite_phy(o_dqsdyn, d_qs_dyn)
1490
[2499]1491       CALL histwrite_phy(o_dqsdyn2d, d_qs_dyn2d)
1492
[1898]1493       CALL histwrite_phy(o_dudyn, d_u_dyn)
1494       CALL histwrite_phy(o_dvdyn, d_v_dyn)
[1813]1495
[1898]1496       IF (vars_defined) THEN
1497          zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys
1498       ENDIF
1499       CALL histwrite_phy(o_dtcon, zx_tmp_fi3d)
[2102]1500       if(iflag_thermals.eq.0)then
[1898]1501          IF (vars_defined) THEN
1502             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
1503                  d_t_ajsb(1:klon,1:klev)/pdtphys
1504          ENDIF
1505          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
[2102]1506       else if(iflag_thermals.ge.1.and.iflag_wake.EQ.1)then
[1898]1507          IF (vars_defined) THEN
1508             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
1509                  d_t_ajs(1:klon,1:klev)/pdtphys + &
1510                  d_t_wake(1:klon,1:klev)/pdtphys
1511          ENDIF
1512          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
1513       endif
1514       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_con(1:klon,1:klev)/pdtphys
1515       CALL histwrite_phy(o_ducon, zx_tmp_fi3d)
1516       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_con(1:klon,1:klev)/pdtphys
1517       CALL histwrite_phy(o_dvcon, zx_tmp_fi3d)
1518       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
1519       CALL histwrite_phy(o_dqcon, zx_tmp_fi3d)
[2486]1520       CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1521       CALL histwrite_phy(o_dqcon2d, zx_tmp_fi2d)
[1813]1522
[2690]1523       IF (iflag_thermals.EQ.0) THEN
[1898]1524          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
1525          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
[2690]1526       ELSE IF (iflag_thermals.GE.1.AND.iflag_wake.EQ.1) THEN
[1898]1527          IF (vars_defined) THEN
1528             zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys + &
1529                  d_q_ajs(1:klon,1:klev)/pdtphys + &
1530                  d_q_wake(1:klon,1:klev)/pdtphys
1531          ENDIF
1532          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
1533       ENDIF
[1813]1534
[1898]1535       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lsc(1:klon,1:klev)/pdtphys
1536       CALL histwrite_phy(o_dtlsc, zx_tmp_fi3d)
1537       IF (vars_defined) zx_tmp_fi3d(1:klon, 1:klev)=(d_t_lsc(1:klon,1:klev)+ &
1538            d_t_eva(1:klon,1:klev))/pdtphys
1539       CALL histwrite_phy(o_dtlschr, zx_tmp_fi3d)
1540       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys
1541       CALL histwrite_phy(o_dqlsc, zx_tmp_fi3d)
[2486]1542       CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1543       CALL histwrite_phy(o_dqlsc2d, zx_tmp_fi2d)
[1898]1544       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=beta_prec(1:klon,1:klev)
1545       CALL histwrite_phy(o_beta_prec, zx_tmp_fi3d)
[1813]1546!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[1898]1547       ! Sorties specifiques a la separation thermiques/non thermiques
[2690]1548       IF (iflag_thermals>=1) THEN
1549          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscth(1:klon,1:klev)/pdtphys
[1898]1550          CALL histwrite_phy(o_dtlscth, zx_tmp_fi3d)
[2690]1551          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscst(1:klon,1:klev)/pdtphys
[1898]1552          CALL histwrite_phy(o_dtlscst, zx_tmp_fi3d)
[2690]1553          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscth(1:klon,1:klev)/pdtphys
[1898]1554          CALL histwrite_phy(o_dqlscth, zx_tmp_fi3d)
[2486]1555          CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1556          CALL histwrite_phy(o_dqlscth2d, zx_tmp_fi2d)
[2690]1557          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscst(1:klon,1:klev)/pdtphys
[1898]1558          CALL histwrite_phy(o_dqlscst, zx_tmp_fi3d)
[2486]1559          CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1560          CALL histwrite_phy(o_dqlscst2d, zx_tmp_fi2d)
[1898]1561          CALL histwrite_phy(o_plulth, plul_th)
1562          CALL histwrite_phy(o_plulst, plul_st)
1563          IF (vars_defined) THEN
[2690]1564             DO k=1,klev
1565                DO i=1,klon
1566                   IF (ptconvth(i,k)) THEN
[1898]1567                      zx_tmp_fi3d(i,k)=1.
[2690]1568                   ELSE
[1898]1569                      zx_tmp_fi3d(i,k)=0.
[2690]1570                   ENDIF
1571                ENDDO
1572             ENDDO
[1898]1573          ENDIF
1574          CALL histwrite_phy(o_ptconvth, zx_tmp_fi3d)
1575          IF (vars_defined) THEN
1576             do i=1,klon
1577                zx_tmp_fi2d(1:klon)=lmax_th(:)
1578             enddo
1579          ENDIF
1580          CALL histwrite_phy(o_lmaxth, zx_tmp_fi2d)
[2690]1581       ENDIF ! iflag_thermals>=1
[1813]1582!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[1898]1583       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf(1:klon,1:klev)/pdtphys
1584       CALL histwrite_phy(o_dtvdf, zx_tmp_fi3d)
[2690]1585       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_diss(1:klon,1:klev)/pdtphys
[1898]1586       CALL histwrite_phy(o_dtdis, zx_tmp_fi3d)
1587       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf(1:klon,1:klev)/pdtphys
1588       CALL histwrite_phy(o_dqvdf, zx_tmp_fi3d)
[2486]1589       CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1590       CALL histwrite_phy(o_dqvdf2d, zx_tmp_fi2d)
[1898]1591       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_eva(1:klon,1:klev)/pdtphys
1592       CALL histwrite_phy(o_dteva, zx_tmp_fi3d)
1593       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_eva(1:klon,1:klev)/pdtphys
1594       CALL histwrite_phy(o_dqeva, zx_tmp_fi3d)
[2486]1595       CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1596       CALL histwrite_phy(o_dqeva2d, zx_tmp_fi2d)
[1898]1597       zpt_conv = 0.
1598       WHERE (ptconv) zpt_conv = 1.
1599       CALL histwrite_phy(o_ptconv, zpt_conv)
1600       CALL histwrite_phy(o_ratqs, ratqs)
1601       IF (vars_defined) THEN
1602          zx_tmp_fi3d(1:klon,1:klev)=d_t_ajs(1:klon,1:klev)/pdtphys - &
1603               d_t_ajsb(1:klon,1:klev)/pdtphys
1604       ENDIF
1605       CALL histwrite_phy(o_dtthe, zx_tmp_fi3d)
[1903]1606       IF (vars_defined) THEN
[1943]1607          zx_tmp_fi3d(1:klon,1:klev)=d_u_ajs(1:klon,1:klev)/pdtphys
[1903]1608       ENDIF
1609       CALL histwrite_phy(o_duthe, zx_tmp_fi3d)
1610       IF (vars_defined) THEN
[1943]1611          zx_tmp_fi3d(1:klon,1:klev)=d_v_ajs(1:klon,1:klev)/pdtphys
[1903]1612       ENDIF
1613       CALL histwrite_phy(o_dvthe, zx_tmp_fi3d)
1614
[1813]1615       IF (iflag_thermals>=1) THEN
[1898]1616          ! Pour l instant 0 a y reflichir pour les thermiques
1617          zx_tmp_fi2d=0.
1618          CALL histwrite_phy(o_ftime_th, zx_tmp_fi2d)
1619          CALL histwrite_phy(o_f_th, fm_therm)
1620          CALL histwrite_phy(o_e_th, entr_therm)
1621          CALL histwrite_phy(o_w_th, zw2)
1622          CALL histwrite_phy(o_q_th, zqasc)
1623          CALL histwrite_phy(o_a_th, fraca)
[2958]1624          CALL histwrite_phy(o_cloudth_sth, cloudth_sth)
1625          CALL histwrite_phy(o_cloudth_senv, cloudth_senv)
1626          CALL histwrite_phy(o_cloudth_sigmath, cloudth_sigmath)
1627          CALL histwrite_phy(o_cloudth_sigmaenv, cloudth_sigmaenv)
[1898]1628          CALL histwrite_phy(o_d_th, detr_therm)
1629          CALL histwrite_phy(o_f0_th, f0)
1630          CALL histwrite_phy(o_zmax_th, zmax_th)
1631          IF (vars_defined) THEN
1632             zx_tmp_fi3d(1:klon,1:klev)=d_q_ajs(1:klon,1:klev)/pdtphys - &
1633                  d_q_ajsb(1:klon,1:klev)/pdtphys
1634          ENDIF
1635          CALL histwrite_phy(o_dqthe, zx_tmp_fi3d)
[2486]1636          CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1637          CALL histwrite_phy(o_dqthe2d, zx_tmp_fi2d)
[1898]1638       ENDIF !iflag_thermals
[2690]1639       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ajsb(1:klon,1:klev)/pdtphys
[1898]1640       CALL histwrite_phy(o_dtajs, zx_tmp_fi3d)
[2690]1641       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_ajsb(1:klon,1:klev)/pdtphys
[1898]1642       CALL histwrite_phy(o_dqajs, zx_tmp_fi3d)
[2486]1643       CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1644       CALL histwrite_phy(o_dqajs2d, zx_tmp_fi2d)
[2690]1645       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_swr(1:klon,1:klev)/pdtphys
[1898]1646       CALL histwrite_phy(o_dtswr, zx_tmp_fi3d)
[2690]1647       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_sw0(1:klon,1:klev)/pdtphys
[1898]1648       CALL histwrite_phy(o_dtsw0, zx_tmp_fi3d)
[2690]1649       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lwr(1:klon,1:klev)/pdtphys
[1898]1650       CALL histwrite_phy(o_dtlwr, zx_tmp_fi3d)
[2690]1651       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lw0(1:klon,1:klev)/pdtphys
[1898]1652       CALL histwrite_phy(o_dtlw0, zx_tmp_fi3d)
[2690]1653       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ec(1:klon,1:klev)/pdtphys
[1898]1654       CALL histwrite_phy(o_dtec, zx_tmp_fi3d)
[2690]1655       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_vdf(1:klon,1:klev)/pdtphys
[1898]1656       CALL histwrite_phy(o_duvdf, zx_tmp_fi3d)
[2690]1657       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_vdf(1:klon,1:klev)/pdtphys
[1898]1658       CALL histwrite_phy(o_dvvdf, zx_tmp_fi3d)
[1813]1659       IF (ok_orodr) THEN
[2690]1660          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_oro(1:klon,1:klev)/pdtphys
[1898]1661          CALL histwrite_phy(o_duoro, zx_tmp_fi3d)
[2690]1662          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_oro(1:klon,1:klev)/pdtphys
[1898]1663          CALL histwrite_phy(o_dvoro, zx_tmp_fi3d)
[2690]1664          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_oro(1:klon,1:klev)/pdtphys
[1898]1665          CALL histwrite_phy(o_dtoro, zx_tmp_fi3d)
[1813]1666       ENDIF
[1898]1667       IF (ok_orolf) THEN
[2690]1668          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_lif(1:klon,1:klev)/pdtphys
[1898]1669          CALL histwrite_phy(o_dulif, zx_tmp_fi3d)
[1903]1670
[2690]1671          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_lif(1:klon,1:klev)/pdtphys
[1903]1672          CALL histwrite_phy(o_dvlif, zx_tmp_fi3d)
1673
[2690]1674          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lif(1:klon,1:klev)/pdtphys
[1903]1675          CALL histwrite_phy(o_dtlif, zx_tmp_fi3d)
[1813]1676       ENDIF
1677
1678       IF (ok_hines) THEN
[2333]1679          CALL histwrite_phy(o_du_gwd_hines, du_gwd_hines/pdtphys)
1680          CALL histwrite_phy(o_dv_gwd_hines, dv_gwd_hines/pdtphys)
[2690]1681          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_hin(1:klon,1:klev)/pdtphys
[1898]1682          CALL histwrite_phy(o_dthin, zx_tmp_fi3d)
[2333]1683          CALL histwrite_phy(o_ustr_gwd_hines, zustr_gwd_hines)
1684          CALL histwrite_phy(o_vstr_gwd_hines, zvstr_gwd_hines)
[2690]1685       ENDIF
[2333]1686
[2690]1687       IF (.not. ok_hines .and. ok_gwd_rando) THEN
[2333]1688          CALL histwrite_phy(o_du_gwd_front, du_gwd_front / pdtphys)
1689          CALL histwrite_phy(o_dv_gwd_front, dv_gwd_front / pdtphys)
1690          CALL histwrite_phy(o_ustr_gwd_front, zustr_gwd_front)
1691          CALL histwrite_phy(o_vstr_gwd_front, zvstr_gwd_front)
[1898]1692       ENDIF
[1938]1693
[2690]1694       IF (ok_gwd_rando) THEN
[1938]1695          CALL histwrite_phy(o_du_gwd_rando, du_gwd_rando / pdtphys)
1696          CALL histwrite_phy(o_dv_gwd_rando, dv_gwd_rando / pdtphys)
[2333]1697          CALL histwrite_phy(o_ustr_gwd_rando, zustr_gwd_rando)
[1938]1698          CALL histwrite_phy(o_vstr_gwd_rando, zvstr_gwd_rando)
[2333]1699          CALL histwrite_phy(o_east_gwstress, east_gwstress )
1700          CALL histwrite_phy(o_west_gwstress, west_gwstress )
[2690]1701       ENDIF
[1938]1702
[2690]1703       IF (ok_qch4) THEN
[2136]1704          CALL histwrite_phy(o_dqch4, d_q_ch4 / pdtphys)
1705       ENDIF
1706
[2366]1707       DO k=1, klevp1
1708         zx_tmp_fi3d1(:,k)=swup(:,k)*swradcorr(:)
1709       ENDDO
1710       CALL histwrite_phy(o_rsu, zx_tmp_fi3d1)
1711       DO k=1, klevp1
1712         zx_tmp_fi3d1(:,k)=swdn(:,k)*swradcorr(:)
1713       ENDDO
1714       CALL histwrite_phy(o_rsd, zx_tmp_fi3d1)
1715       DO k=1, klevp1
1716         zx_tmp_fi3d1(:,k)=swup0(:,k)*swradcorr(:)
1717       ENDDO
1718       CALL histwrite_phy(o_rsucs, zx_tmp_fi3d1)
1719       DO k=1, klevp1
1720         zx_tmp_fi3d1(:,k)=swdn0(:,k)*swradcorr(:)
1721       ENDDO
1722       CALL histwrite_phy(o_rsdcs, zx_tmp_fi3d1)
1723
[1898]1724       CALL histwrite_phy(o_rlu, lwup)
1725       CALL histwrite_phy(o_rld, lwdn)
1726       CALL histwrite_phy(o_rlucs, lwup0)
1727       CALL histwrite_phy(o_rldcs, lwdn0)
[2366]1728
[2690]1729       IF (vars_defined) THEN
[1898]1730          zx_tmp_fi3d(1:klon,1:klev)=d_t(1:klon,1:klev)+ &
1731               d_t_dyn(1:klon,1:klev)
1732       ENDIF
1733       CALL histwrite_phy(o_tnt, zx_tmp_fi3d)
[2366]1734
[2690]1735       IF (vars_defined) THEN
[2194]1736          zx_tmp_fi3d(1:klon,1:klev)=d_t_swr(1:klon,1:klev)/pdtphys + &
1737               d_t_lwr(1:klon,1:klev)/pdtphys
[1898]1738       ENDIF
1739       CALL histwrite_phy(o_tntr, zx_tmp_fi3d)
[2690]1740       IF (vars_defined) THEN
[1898]1741          zx_tmp_fi3d(1:klon,1:klev)= (d_t_lsc(1:klon,1:klev)+ &
1742               d_t_eva(1:klon,1:klev)+ &
1743               d_t_vdf(1:klon,1:klev))/pdtphys
1744       ENDIF
1745       CALL histwrite_phy(o_tntscpbl, zx_tmp_fi3d)
[2690]1746       IF (vars_defined) THEN
[1898]1747          zx_tmp_fi3d(1:klon,1:klev)=d_qx(1:klon,1:klev,ivap)+ &
1748               d_q_dyn(1:klon,1:klev)
1749       ENDIF
1750       CALL histwrite_phy(o_tnhus, zx_tmp_fi3d)
[2690]1751       IF (vars_defined) THEN
[1898]1752          zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys+ &
1753               d_q_eva(1:klon,1:klev)/pdtphys
1754       ENDIF
1755       CALL histwrite_phy(o_tnhusscpbl, zx_tmp_fi3d)
1756       CALL histwrite_phy(o_evu, coefm(:,:,is_ave))
[2690]1757       IF (vars_defined) THEN
[1898]1758          zx_tmp_fi3d(1:klon,1:klev)=q_seri(1:klon,1:klev)+ &
1759               ql_seri(1:klon,1:klev)
1760       ENDIF
1761       CALL histwrite_phy(o_h2o, zx_tmp_fi3d)
[2690]1762       IF (iflag_con >= 3) THEN
1763          IF (vars_defined) THEN
[1813]1764             zx_tmp_fi3d(1:klon,1:klev)=-1 * (dnwd(1:klon,1:klev)+ &
1765                  dnwd0(1:klon,1:klev))
[1898]1766          ENDIF
1767          CALL histwrite_phy(o_mcd, zx_tmp_fi3d)
[2690]1768          IF (vars_defined) THEN
[1813]1769             zx_tmp_fi3d(1:klon,1:klev)=upwd(1:klon,1:klev) + &
1770                  dnwd(1:klon,1:klev)+ dnwd0(1:klon,1:klev)
[1898]1771          ENDIF
1772          CALL histwrite_phy(o_dmc, zx_tmp_fi3d)
[2690]1773       ELSE IF (iflag_con == 2) THEN
[1898]1774          CALL histwrite_phy(o_mcd,  pmfd)
1775          CALL histwrite_phy(o_dmc,  pmfu + pmfd)
[2690]1776       ENDIF
[1898]1777       CALL histwrite_phy(o_ref_liq, ref_liq)
1778       CALL histwrite_phy(o_ref_ice, ref_ice)
[2989]1779!
1780       IF (ok_4xCO2atm) THEN
[2690]1781          IF (vars_defined) zx_tmp_fi2d(:) = swupp(:,klevp1)*swradcorr(:)
[1898]1782          CALL histwrite_phy(o_rsut4co2, zx_tmp_fi2d)
[2690]1783          IF (vars_defined) zx_tmp_fi2d(:) = lwupp(:,klevp1)
[1898]1784          CALL histwrite_phy(o_rlut4co2, zx_tmp_fi2d)
[2690]1785          IF (vars_defined) zx_tmp_fi2d(:) = swup0p(:,klevp1)*swradcorr(:)
[1898]1786          CALL histwrite_phy(o_rsutcs4co2, zx_tmp_fi2d)
[2690]1787          IF (vars_defined) zx_tmp_fi2d(:) = lwup0p(:,klevp1)
[1898]1788          CALL histwrite_phy(o_rlutcs4co2, zx_tmp_fi2d)
[2366]1789          DO k=1, klevp1
1790            zx_tmp_fi3d1(:,k)=swupp(:,k)*swradcorr(:)
1791          ENDDO
1792          CALL histwrite_phy(o_rsu4co2, zx_tmp_fi3d1)
1793          DO k=1, klevp1
1794            zx_tmp_fi3d1(:,k)=swup0p(:,k)*swradcorr(:)
1795          ENDDO
1796          CALL histwrite_phy(o_rsucs4co2, zx_tmp_fi3d1)
1797          DO k=1, klevp1
1798            zx_tmp_fi3d1(:,k)=swdnp(:,k)*swradcorr(:)
1799          ENDDO
1800          CALL histwrite_phy(o_rsd4co2, zx_tmp_fi3d1)
1801          DO k=1, klevp1
1802            zx_tmp_fi3d1(:,k)=swdn0p(:,k)*swradcorr(:)
1803          ENDDO
1804          CALL histwrite_phy(o_rsdcs4co2, zx_tmp_fi3d1)
[1898]1805          CALL histwrite_phy(o_rlu4co2, lwupp)
1806          CALL histwrite_phy(o_rlucs4co2, lwup0p)
1807          CALL histwrite_phy(o_rld4co2, lwdnp)
1808          CALL histwrite_phy(o_rldcs4co2, lwdn0p)
[2989]1809       ENDIF !ok_4xCO2atm
[1828]1810!!!!!!!!!!!! Sorties niveaux de pression NMC !!!!!!!!!!!!!!!!!!!!
[2282]1811#ifdef CPP_IOIPSL
1812#ifndef CPP_XIOS
1813  IF (.NOT.ok_all_xml) THEN
1814       ! ATTENTION, LES ANCIENS HISTWRITE ONT ETES CONSERVES EN ATTENDANT MIEUX:
1815       ! Champs interpolles sur des niveaux de pression
1816       missing_val=missing_val_nf90
[2754]1817       DO iff=7, nfiles-1 !--OB: here we deal with files 7,8,9
[1828]1818
[1898]1819          CALL histwrite_phy(o_tnondef,tnondef(:,:,iff-6),iff)
1820          CALL histwrite_phy(o_ta,twriteSTD(:,:,iff-6),iff)
1821          CALL histwrite_phy(o_zg,phiwriteSTD(:,:,iff-6),iff)
1822          CALL histwrite_phy(o_hus,qwriteSTD(:,:,iff-6),iff)
1823          CALL histwrite_phy(o_hur,rhwriteSTD(:,:,iff-6),iff)
1824          CALL histwrite_phy(o_ua,uwriteSTD(:,:,iff-6),iff)
1825          CALL histwrite_phy(o_va,vwriteSTD(:,:,iff-6),iff)
1826          CALL histwrite_phy(o_wap,wwriteSTD(:,:,iff-6),iff)
[2690]1827          IF (vars_defined) THEN
[1898]1828             DO k=1, nlevSTD
1829                DO i=1, klon
[2690]1830                   IF (tnondef(i,k,iff-6).NE.missing_val) THEN
1831                      IF (freq_outNMC(iff-6).LT.0) THEN
[1915]1832                         freq_moyNMC(iff-6)=(mth_len*un_jour)/freq_calNMC(iff-6)
1833                      ELSE
1834                         freq_moyNMC(iff-6)=freq_outNMC(iff-6)/freq_calNMC(iff-6)
1835                      ENDIF
[1971]1836                      zx_tmp_fi3d_STD(i,k) = (100.*tnondef(i,k,iff-6))/freq_moyNMC(iff-6)
[1898]1837                   ELSE
[1971]1838                      zx_tmp_fi3d_STD(i,k) = missing_val
[1898]1839                   ENDIF
1840                ENDDO
1841             ENDDO
1842          ENDIF
[1971]1843          CALL histwrite_phy(o_psbg,zx_tmp_fi3d_STD,iff)
[2690]1844          IF (vars_defined) THEN
[1898]1845             DO k=1, nlevSTD
1846                DO i=1, klon
[2690]1847                   IF (O3sumSTD(i,k,iff-6).NE.missing_val) THEN
[1971]1848                      zx_tmp_fi3d_STD(i,k) = O3sumSTD(i,k,iff-6) * 1.e+9
[1898]1849                   ELSE
[1971]1850                      zx_tmp_fi3d_STD(i,k) = missing_val
[1898]1851                   ENDIF
1852                ENDDO
1853             ENDDO !k=1, nlevSTD
1854          ENDIF
[1971]1855          CALL histwrite_phy(o_tro3,zx_tmp_fi3d_STD,iff)
[2690]1856          IF (read_climoz == 2) THEN
1857             IF (vars_defined) THEN
[1898]1858                DO k=1, nlevSTD
1859                   DO i=1, klon
[2690]1860                      IF (O3daysumSTD(i,k,iff-6).NE.missing_val) THEN
[1971]1861                         zx_tmp_fi3d_STD(i,k) = O3daysumSTD(i,k,iff-6) * 1.e+9
[1898]1862                      ELSE
[1971]1863                         zx_tmp_fi3d_STD(i,k) = missing_val
[1898]1864                      ENDIF
1865                   ENDDO
1866                ENDDO !k=1, nlevSTD
1867             ENDIF
[1971]1868             CALL histwrite_phy(o_tro3_daylight,zx_tmp_fi3d_STD,iff)
[1898]1869          endif
1870          CALL histwrite_phy(o_uxv,uvsumSTD(:,:,iff-6),iff)
1871          CALL histwrite_phy(o_vxq,vqsumSTD(:,:,iff-6),iff)
1872          CALL histwrite_phy(o_vxT,vTsumSTD(:,:,iff-6),iff)
1873          CALL histwrite_phy(o_wxq,wqsumSTD(:,:,iff-6),iff)
1874          CALL histwrite_phy(o_vxphi,vphisumSTD(:,:,iff-6),iff)
1875          CALL histwrite_phy(o_wxT,wTsumSTD(:,:,iff-6),iff)
1876          CALL histwrite_phy(o_uxu,u2sumSTD(:,:,iff-6),iff)
1877          CALL histwrite_phy(o_vxv,v2sumSTD(:,:,iff-6),iff)
1878          CALL histwrite_phy(o_TxT,T2sumSTD(:,:,iff-6),iff)
1879       ENDDO !nfiles
[2282]1880  ENDIF
1881#endif
1882#endif
1883#ifdef CPP_XIOS
[2690]1884  IF (ok_all_xml) THEN
[2282]1885!      DO iff=7, nfiles
1886
1887!         CALL histwrite_phy(o_tnondef,tnondef(:,:,3))
1888          CALL histwrite_phy(o_ta,tlevSTD(:,:))
1889          CALL histwrite_phy(o_zg,philevSTD(:,:))
1890          CALL histwrite_phy(o_hus,qlevSTD(:,:))
1891          CALL histwrite_phy(o_hur,rhlevSTD(:,:))
1892          CALL histwrite_phy(o_ua,ulevSTD(:,:))
1893          CALL histwrite_phy(o_va,vlevSTD(:,:))
1894          CALL histwrite_phy(o_wap,wlevSTD(:,:))
[2690]1895!         IF (vars_defined) THEN
[2282]1896!            DO k=1, nlevSTD
1897!               DO i=1, klon
[2690]1898!                  IF (tnondef(i,k,3).NE.missing_val) THEN
1899!                     IF (freq_outNMC(iff-6).LT.0) THEN
[2282]1900!                        freq_moyNMC(iff-6)=(mth_len*un_jour)/freq_calNMC(iff-6)
1901!                     ELSE
1902!                        freq_moyNMC(iff-6)=freq_outNMC(iff-6)/freq_calNMC(iff-6)
1903!                     ENDIF
1904!                     zx_tmp_fi3d_STD(i,k) = (100.*tnondef(i,k,3))/freq_moyNMC(iff-6)
1905!                  ELSE
1906!                     zx_tmp_fi3d_STD(i,k) = missing_val
1907!                  ENDIF
1908!               ENDDO
1909!            ENDDO
1910!         ENDIF
1911!         CALL histwrite_phy(o_psbg,zx_tmp_fi3d_STD)
[2690]1912          IF (vars_defined) THEN
[2282]1913             DO k=1, nlevSTD
1914                DO i=1, klon
[2690]1915                   IF (O3STD(i,k).NE.missing_val) THEN
[2282]1916                      zx_tmp_fi3d_STD(i,k) = O3STD(i,k) * 1.e+9
1917                   ELSE
1918                      zx_tmp_fi3d_STD(i,k) = missing_val
1919                   ENDIF
1920                ENDDO
1921             ENDDO !k=1, nlevSTD
1922          ENDIF
1923          CALL histwrite_phy(o_tro3,zx_tmp_fi3d_STD)
[2690]1924          IF (read_climoz == 2) THEN
1925             IF (vars_defined) THEN
[2282]1926                DO k=1, nlevSTD
1927                   DO i=1, klon
[2690]1928                      IF (O3daySTD(i,k).NE.missing_val) THEN
[2282]1929                         zx_tmp_fi3d_STD(i,k) = O3daySTD(i,k) * 1.e+9
1930                      ELSE
1931                         zx_tmp_fi3d_STD(i,k) = missing_val
1932                      ENDIF
1933                   ENDDO
1934                ENDDO !k=1, nlevSTD
1935             ENDIF
1936             CALL histwrite_phy(o_tro3_daylight,zx_tmp_fi3d_STD)
[2690]1937          ENDIF
[2282]1938          CALL histwrite_phy(o_uxv,uvSTD(:,:))
1939          CALL histwrite_phy(o_vxq,vqSTD(:,:))
1940          CALL histwrite_phy(o_vxT,vTSTD(:,:))
1941          CALL histwrite_phy(o_wxq,wqSTD(:,:))
1942          CALL histwrite_phy(o_vxphi,vphiSTD(:,:))
1943          CALL histwrite_phy(o_wxT,wTSTD(:,:))
1944          CALL histwrite_phy(o_uxu,u2STD(:,:))
1945          CALL histwrite_phy(o_vxv,v2STD(:,:))
1946          CALL histwrite_phy(o_TxT,T2STD(:,:))
1947!      ENDDO !nfiles
1948  ENDIF
1949#endif
[1828]1950!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[2973]1951       IF (iflag_phytrac == 1 ) then
[2704]1952       IF (nqtot.GE.nqo+1) THEN
1953          DO iq=nqo+1, nqtot
[2690]1954            IF (type_trac == 'lmdz' .OR. type_trac == 'repr' .OR. type_trac == 'coag') THEN
[2704]1955             !--3D fields
[2284]1956             CALL histwrite_phy(o_trac(iq-nqo), tr_seri(:,:,iq-nqo))
[2086]1957             CALL histwrite_phy(o_dtr_vdf(iq-nqo),d_tr_cl(:,:,iq-nqo))
1958             CALL histwrite_phy(o_dtr_the(iq-nqo),d_tr_th(:,:,iq-nqo))
1959             CALL histwrite_phy(o_dtr_con(iq-nqo),d_tr_cv(:,:,iq-nqo))
1960             CALL histwrite_phy(o_dtr_lessi_impa(iq-nqo),d_tr_lessi_impa(:,:,iq-nqo))
1961             CALL histwrite_phy(o_dtr_lessi_nucl(iq-nqo),d_tr_lessi_nucl(:,:,iq-nqo))
1962             CALL histwrite_phy(o_dtr_insc(iq-nqo),d_tr_insc(:,:,iq-nqo))
1963             CALL histwrite_phy(o_dtr_bcscav(iq-nqo),d_tr_bcscav(:,:,iq-nqo))
1964             CALL histwrite_phy(o_dtr_evapls(iq-nqo),d_tr_evapls(:,:,iq-nqo))
1965             CALL histwrite_phy(o_dtr_ls(iq-nqo),d_tr_ls(:,:,iq-nqo))
1966             CALL histwrite_phy(o_dtr_trsp(iq-nqo),d_tr_trsp(:,:,iq-nqo))
1967             CALL histwrite_phy(o_dtr_sscav(iq-nqo),d_tr_sscav(:,:,iq-nqo))
1968             CALL histwrite_phy(o_dtr_sat(iq-nqo),d_tr_sat(:,:,iq-nqo))
1969             CALL histwrite_phy(o_dtr_uscav(iq-nqo),d_tr_uscav(:,:,iq-nqo))
[2704]1970             !--2D fields
1971             CALL histwrite_phy(o_dtr_dry(iq-nqo), flux_tr_dry(:,iq-nqo))
[1898]1972             zx_tmp_fi2d=0.
[2690]1973             IF (vars_defined) THEN
[1898]1974                DO k=1,klev
[2284]1975                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,iq-nqo)
[1898]1976                ENDDO
1977             ENDIF
[2086]1978             CALL histwrite_phy(o_trac_cum(iq-nqo), zx_tmp_fi2d)
[2690]1979            ENDIF
[1898]1980          ENDDO
1981       ENDIF
[2973]1982       ENDIF   !(iflag_phytrac==1)
[1813]1983
[2973]1984
[2690]1985       IF (.NOT.vars_defined) THEN
[1898]1986          !$OMP MASTER
[2097]1987#ifndef CPP_IOIPSL_NO_OUTPUT
[1898]1988          DO iff=1,nfiles
1989             IF (clef_files(iff)) THEN
1990                CALL histend(nid_files(iff))
1991                ndex2d = 0
1992                ndex3d = 0
1993             ENDIF ! clef_files
1994          ENDDO !  iff
[1852]1995#endif
[1825]1996#ifdef CPP_XIOS
[1898]1997          !On finalise l'initialisation:
1998          CALL wxios_closedef()
[1825]1999#endif
[1898]2000          !$OMP END MASTER
2001          !$OMP BARRIER
2002          vars_defined = .TRUE.
[1821]2003
[2704]2004       ENDIF !--.NOT.vars_defined
2005
[2690]2006    ENDDO
[1821]2007
[2690]2008    IF (vars_defined) THEN
[1898]2009       ! On synchronise les fichiers pour IOIPSL
[2097]2010#ifndef CPP_IOIPSL_NO_OUTPUT
[1898]2011       !$OMP MASTER
2012       DO iff=1,nfiles
[1798]2013          IF (ok_sync .AND. clef_files(iff)) THEN
[1898]2014             CALL histsync(nid_files(iff))
[1798]2015          ENDIF
[1898]2016       END DO
2017       !$OMP END MASTER
[1852]2018#endif
[1798]2019    ENDIF
2020
[1898]2021  END SUBROUTINE phys_output_write
[1798]2022
[1898]2023END MODULE phys_output_write_mod
Note: See TracBrowser for help on using the repository browser.