source: LMDZ6/branches/IPSL-CM6A-MR/libf/phylmd/phys_output_write_mod.F90 @ 3823

Last change on this file since 3823 was 3823, checked in by musat, 3 years ago

Nouveaux calculs a 2m et 10m

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