source: LMDZ6/branches/IPSL-CM6A-MR/libf/phylmd/phys_output_write_mod.F90 @ 3842

Last change on this file since 3842 was 3842, checked in by acaubel, 3 years ago

Reported commit [3748] on branch IPSL-CM6A-MR to allow XIOS to detect missing value correctly.

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