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

Last change on this file since 3756 was 3756, checked in by oboucher, 4 years ago

The fraction of SW down radiation that is diffuse is extracted from radlwsw.F90 and passed on to pbl_surface for inclusion in fields_out for transfer to ORCHIDEE if it requested in input file coupling_fields.def. Hence there is nothing automatic here. The fraction of SW down radiation is also added as a diagnostic. To satisfy the case when this new quantity is used in ORCHIDEE, then it is added in the restart (and read in case it is there).

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