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

Last change on this file since 4046 was 4046, checked in by dcugnet, 3 years ago

First commit for new tracers.

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