source: LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90 @ 3822

Last change on this file since 3822 was 3817, checked in by musat, 4 years ago

Nouvelle formulation des calculs a 2m

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