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

Last change on this file since 3208 was 3208, checked in by jyg, 7 years ago

Implementation of a first crude model of the
dynamic of wake population.

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