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

Last change on this file since 4687 was 4677, checked in by idelkadi, 13 months ago

Implementation in the LMDZ code of the double call of the ECRAD radiative transfer code to estimate the 3D radiative effect of clouds.

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