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

Last change on this file since 3669 was 3666, checked in by lfalletti, 5 years ago

Adding changes for Reprobus

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