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

Last change on this file since 5022 was 5022, checked in by Sebastien Nguyen, 3 months ago

include ISO keys in pbl_surface and associated routines in phylmd

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