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

Last change on this file since 3241 was 3234, checked in by musat, 6 years ago

Correction zhalf

  • 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: 91.0 KB
RevLine 
[1798]1!
[2429]2! $Id: phys_output_write_mod.F90 3234 2018-03-05 13:36:29Z idelkadi $
[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, &
[3219]42         o_precip, o_rain_fall, o_rain_con, 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)
[3216]707       CALL histwrite_phy(o_rain_con, rain_con)
[1898]708       CALL histwrite_phy(o_snow, snow_fall)
[2209]709       CALL histwrite_phy(o_msnow, zxsnow)
[1898]710       CALL histwrite_phy(o_fsnow, zfra_o)
711       CALL histwrite_phy(o_evap, evap)
[2366]712       CALL histwrite_phy(o_tops, topsw*swradcorr)
713       CALL histwrite_phy(o_tops0, topsw0*swradcorr)
[1898]714       CALL histwrite_phy(o_topl, toplw)
715       CALL histwrite_phy(o_topl0, toplw0)
[1813]716
[1898]717       IF (vars_defined) THEN
[2366]718          zx_tmp_fi2d(:) = swup(:,klevp1)*swradcorr(:)
[1898]719       ENDIF
720       CALL histwrite_phy(o_SWupTOA, zx_tmp_fi2d)
[1813]721
[1898]722       IF (vars_defined) THEN
[2366]723          zx_tmp_fi2d(:) = swup0(:,klevp1)*swradcorr(:)
[1898]724       ENDIF
725       CALL histwrite_phy(o_SWupTOAclr, zx_tmp_fi2d)
[1813]726
[1898]727       IF (vars_defined) THEN
[3082]728          zx_tmp_fi2d(:) = swupc0(:,klevp1)*swradcorr(:)
729       ENDIF
730       CALL histwrite_phy(o_SWupTOAcleanclr, zx_tmp_fi2d)
731
732       IF (vars_defined) THEN
[2366]733          zx_tmp_fi2d(:) = swdn(:,klevp1)*swradcorr(:)
[1898]734       ENDIF
735       CALL histwrite_phy(o_SWdnTOA, zx_tmp_fi2d)
[1813]736
[1898]737       IF (vars_defined) THEN
[2366]738          zx_tmp_fi2d(:) = swdn0(:,klevp1)*swradcorr(:)
[1898]739       ENDIF
740       CALL histwrite_phy(o_SWdnTOAclr, zx_tmp_fi2d)
[1813]741
[1898]742       IF (vars_defined) THEN
[2366]743          zx_tmp_fi2d(:) = topsw(:)*swradcorr(:)-toplw(:)
[1898]744       ENDIF
745       CALL histwrite_phy(o_nettop, zx_tmp_fi2d)
[2366]746       CALL histwrite_phy(o_SWup200, SWup200*swradcorr)
747       CALL histwrite_phy(o_SWup200clr, SWup200clr*swradcorr)
748       CALL histwrite_phy(o_SWdn200, SWdn200*swradcorr)
749       CALL histwrite_phy(o_SWdn200clr, SWdn200clr*swradcorr)
[1898]750       CALL histwrite_phy(o_LWup200, LWup200)
751       CALL histwrite_phy(o_LWup200clr, LWup200clr)
752       CALL histwrite_phy(o_LWdn200, LWdn200)
753       CALL histwrite_phy(o_LWdn200clr, LWdn200clr)
[2366]754       CALL histwrite_phy(o_sols, solsw*swradcorr)
755       CALL histwrite_phy(o_sols0, solsw0*swradcorr)
[1898]756       CALL histwrite_phy(o_soll, sollw)
[2366]757       CALL histwrite_phy(o_soll0, sollw0)
[1898]758       CALL histwrite_phy(o_radsol, radsol)
[1813]759
[1898]760       IF (vars_defined) THEN
[2366]761          zx_tmp_fi2d(:) = swup(:,1)*swradcorr(:)
[1898]762       ENDIF
763       CALL histwrite_phy(o_SWupSFC, zx_tmp_fi2d)
[1813]764
[1898]765       IF (vars_defined) THEN
[2366]766          zx_tmp_fi2d(:) = swup0(:,1)*swradcorr(:)
[1898]767       ENDIF
768       CALL histwrite_phy(o_SWupSFCclr, zx_tmp_fi2d)
[1813]769
[1898]770       IF (vars_defined) THEN
[3082]771          zx_tmp_fi2d(:) = swupc0(:,1)*swradcorr(:)
772       ENDIF
773       CALL histwrite_phy(o_SWupSFCcleanclr, zx_tmp_fi2d)
774
775       IF (vars_defined) THEN
[2366]776          zx_tmp_fi2d(:) = swdn(:,1)*swradcorr(:)
[1898]777       ENDIF
778       CALL histwrite_phy(o_SWdnSFC, zx_tmp_fi2d)
[1813]779
[1898]780       IF (vars_defined) THEN
[2366]781          zx_tmp_fi2d(:) = swdn0(:,1)*swradcorr(:)
[1898]782       ENDIF
783       CALL histwrite_phy(o_SWdnSFCclr, zx_tmp_fi2d)
[1813]784
[1898]785       IF (vars_defined) THEN
[3082]786          zx_tmp_fi2d(:) = swdnc0(:,1)*swradcorr(:)
787       ENDIF
788       CALL histwrite_phy(o_SWdnSFCcleanclr, zx_tmp_fi2d)
789
790       IF (vars_defined) THEN
[2366]791          zx_tmp_fi2d(:)=sollwdown(:)-sollw(:)
[1898]792       ENDIF
793       CALL histwrite_phy(o_LWupSFC, zx_tmp_fi2d)
794       CALL histwrite_phy(o_LWdnSFC, sollwdown)
[1813]795
[1898]796       IF (vars_defined) THEN
797          sollwdownclr(1:klon) = -1.*lwdn0(1:klon,1)
798          zx_tmp_fi2d(1:klon)=sollwdownclr(1:klon)-sollw0(1:klon)
799       ENDIF
800       CALL histwrite_phy(o_LWupSFCclr, zx_tmp_fi2d)
801       CALL histwrite_phy(o_LWdnSFCclr, sollwdownclr)
[3106]802
803       IF (vars_defined) THEN
804          zx_tmp_fi2d(:) = lwupc0(:,klevp1)
805       ENDIF
806       CALL histwrite_phy(o_LWupTOAcleanclr, zx_tmp_fi2d)
807       IF (vars_defined) THEN
808          zx_tmp_fi2d(:) = -1.*lwdnc0(:,1)
809       ENDIF
810       CALL histwrite_phy(o_LWdnSFCcleanclr, zx_tmp_fi2d)
811
[1898]812       CALL histwrite_phy(o_bils, bils)
813       CALL histwrite_phy(o_bils_diss, bils_diss)
814       CALL histwrite_phy(o_bils_ec, bils_ec)
[2816]815       CALL histwrite_phy(o_bils_ech, bils_ech)
[1898]816       CALL histwrite_phy(o_bils_tke, bils_tke)
817       CALL histwrite_phy(o_bils_kinetic, bils_kinetic)
818       CALL histwrite_phy(o_bils_latent, bils_latent)
819       CALL histwrite_phy(o_bils_enthalp, bils_enthalp)
[1813]820
[1898]821       IF (vars_defined) THEN
822          zx_tmp_fi2d(1:klon)=-1*sens(1:klon)
823       ENDIF
824       CALL histwrite_phy(o_sens, zx_tmp_fi2d)
825       CALL histwrite_phy(o_fder, fder)
826       CALL histwrite_phy(o_ffonte, zxffonte)
827       CALL histwrite_phy(o_fqcalving, zxfqcalving)
828       CALL histwrite_phy(o_fqfonte, zxfqfonte)
[3095]829       IF (vars_defined) THEN
830          zx_tmp_fi2d(1:klon)=(zxfqfonte(1:klon)+rain_fall(1:klon))*pctsrf(1:klon,is_lic)
831       ENDIF
832       CALL histwrite_phy(o_mrroli, zx_tmp_fi2d)
[2517]833       CALL histwrite_phy(o_runofflic, zxrunofflic)
[1898]834       IF (vars_defined) THEN
835          zx_tmp_fi2d=0.
836          DO nsrf=1,nbsrf
837             zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxu(:,1,nsrf)
838          ENDDO
839       ENDIF
840       CALL histwrite_phy(o_taux, zx_tmp_fi2d)
[1813]841
[1898]842       IF (vars_defined) THEN
843          zx_tmp_fi2d=0.
844          DO nsrf=1,nbsrf
845             zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxv(:,1,nsrf)
846          ENDDO
847       ENDIF
848       CALL histwrite_phy(o_tauy, zx_tmp_fi2d)
[1813]849
[1898]850       IF (ok_snow) THEN
[2209]851          CALL histwrite_phy(o_snowsrf, snow_o)
[1898]852          CALL histwrite_phy(o_qsnow, qsnow)
853          CALL histwrite_phy(o_snowhgt,snowhgt)
854          CALL histwrite_phy(o_toice,to_ice)
855          CALL histwrite_phy(o_sissnow,sissnow)
856          CALL histwrite_phy(o_runoff,runoff)
857          CALL histwrite_phy(o_albslw3,albsol3_lic)
858       ENDIF
[1813]859
[1898]860       DO nsrf = 1, nbsrf
[2670]861
[1898]862          IF (vars_defined)             zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)*100.
863          CALL histwrite_phy(o_pourc_srf(nsrf), zx_tmp_fi2d)
864          IF (vars_defined)           zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)
865          CALL histwrite_phy(o_fract_srf(nsrf), zx_tmp_fi2d)
866          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxu( 1 : klon, 1, nsrf)
867          CALL histwrite_phy(o_taux_srf(nsrf), zx_tmp_fi2d)
868          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxv( 1 : klon, 1, nsrf)
869          CALL histwrite_phy(o_tauy_srf(nsrf), zx_tmp_fi2d)
870          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = ftsol( 1 : klon, nsrf)
871          CALL histwrite_phy(o_tsol_srf(nsrf), zx_tmp_fi2d)
872          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = evap_pot( 1 : klon, nsrf)
873          CALL histwrite_phy(o_evappot_srf(nsrf), zx_tmp_fi2d)
874          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = ustar(1 : klon, nsrf)
875          CALL histwrite_phy(o_ustar_srf(nsrf), zx_tmp_fi2d)
876          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = u10m(1 : klon, nsrf)
877          CALL histwrite_phy(o_u10m_srf(nsrf), zx_tmp_fi2d)
878          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = v10m(1 : klon, nsrf)
879          CALL histwrite_phy(o_v10m_srf(nsrf), zx_tmp_fi2d)
880          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = t2m(1 : klon, nsrf)
881          CALL histwrite_phy(o_t2m_srf(nsrf), zx_tmp_fi2d)
882          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = fevap(1 : klon, nsrf)
883          CALL histwrite_phy(o_evap_srf(nsrf), zx_tmp_fi2d)
884          IF (vars_defined)        zx_tmp_fi2d(1 : klon) = fluxt( 1 : klon, 1, nsrf)
885          CALL histwrite_phy(o_sens_srf(nsrf), zx_tmp_fi2d)
886          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxlat( 1 : klon, nsrf)
887          CALL histwrite_phy(o_lat_srf(nsrf), zx_tmp_fi2d)
888          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fsollw( 1 : klon, nsrf)
889          CALL histwrite_phy(o_flw_srf(nsrf), zx_tmp_fi2d)
890          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fsolsw( 1 : klon, nsrf)
891          CALL histwrite_phy(o_fsw_srf(nsrf), zx_tmp_fi2d)
892          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfbils( 1 : klon, nsrf)
893          CALL histwrite_phy(o_wbils_srf(nsrf), zx_tmp_fi2d)
894          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfbilo( 1 : klon, nsrf)
895          CALL histwrite_phy(o_wbilo_srf(nsrf), zx_tmp_fi2d)
[2670]896          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfevap( 1 : klon, nsrf)
897          CALL histwrite_phy(o_wevap_srf(nsrf), zx_tmp_fi2d)
898          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfrain( 1 : klon, nsrf)
899          CALL histwrite_phy(o_wrain_srf(nsrf), zx_tmp_fi2d)
900          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfsnow( 1 : klon, nsrf)
901          CALL histwrite_phy(o_wsnow_srf(nsrf), zx_tmp_fi2d)
[1865]902
[1898]903          IF (iflag_pbl > 1) THEN
904             CALL histwrite_phy(o_tke_srf(nsrf),  pbl_tke(:,1:klev,nsrf))
[2561]905             CALL histwrite_phy(o_l_mix(nsrf),  l_mix(:,1:klev,nsrf))
906             CALL histwrite_phy(o_l_mixmin(nsrf),  l_mixmin(:,1:klev,nsrf))
[1898]907             CALL histwrite_phy(o_tke_max_srf(nsrf),  pbl_tke(:,1:klev,nsrf))
908          ENDIF
[2159]909!jyg<
[2255]910          IF (iflag_pbl > 1 .AND. iflag_wake>=1  .AND. iflag_pbl_split >=1) THEN
[2159]911             CALL histwrite_phy(o_dltpbltke_srf(nsrf), wake_delta_pbl_TKE(:,1:klev,nsrf))
912          ENDIF
913!>jyg
[2952]914!          IF (iflag_pbl > 1 .AND. ifl_pbltree  >=1 ) THEN
915!       CALL histwrite_phy(o_treedrg_srf(nsrf), treedrg(:,1:klev,nsrf))
916!            ENDIF
[1813]917
[2952]918
[1898]919       ENDDO
[2538]920
921       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_liq_o(1 : klon, 1)
922       CALL histwrite_phy(o_sens_prec_liq_oce, zx_tmp_fi2d)       
923       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_liq_o(1 : klon, 2)
924       CALL histwrite_phy(o_sens_prec_liq_sic, zx_tmp_fi2d)       
925       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_sol_o(1 : klon, 1)
926       CALL histwrite_phy(o_sens_prec_sol_oce, zx_tmp_fi2d)       
927       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_sol_o(1 : klon, 2)
928       CALL histwrite_phy(o_sens_prec_sol_sic, zx_tmp_fi2d)       
929
930       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_liq_o(1 : klon, 1)
931       CALL histwrite_phy(o_lat_prec_liq_oce, zx_tmp_fi2d)       
932       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_liq_o(1 : klon, 2)
933       CALL histwrite_phy(o_lat_prec_liq_sic, zx_tmp_fi2d)       
934       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_sol_o(1 : klon, 1)
935       CALL histwrite_phy(o_lat_prec_sol_oce, zx_tmp_fi2d)       
936       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_sol_o(1 : klon, 2)
937       CALL histwrite_phy(o_lat_prec_sol_sic, zx_tmp_fi2d)       
938
[1898]939       DO nsrf=1,nbsrf+1
940          CALL histwrite_phy(o_wstar(nsrf), wstar(1 : klon, nsrf))
941       ENDDO
[1813]942
[1898]943       CALL histwrite_phy(o_cdrm, cdragm)
944       CALL histwrite_phy(o_cdrh, cdragh)
945       CALL histwrite_phy(o_cldl, cldl)
946       CALL histwrite_phy(o_cldm, cldm)
947       CALL histwrite_phy(o_cldh, cldh)
948       CALL histwrite_phy(o_cldt, cldt)
[1924]949       CALL histwrite_phy(o_JrNt, JrNt)
950       CALL histwrite_phy(o_cldljn, cldl*JrNt)
951       CALL histwrite_phy(o_cldmjn, cldm*JrNt)
952       CALL histwrite_phy(o_cldhjn, cldh*JrNt)
953       CALL histwrite_phy(o_cldtjn, cldt*JrNt)
[1898]954       CALL histwrite_phy(o_cldq, cldq)
955       IF (vars_defined)       zx_tmp_fi2d(1:klon) = flwp(1:klon)
956       CALL histwrite_phy(o_lwp, zx_tmp_fi2d)
957       IF (vars_defined)       zx_tmp_fi2d(1:klon) = fiwp(1:klon)
958       CALL histwrite_phy(o_iwp, zx_tmp_fi2d)
959       CALL histwrite_phy(o_ue, ue)
960       CALL histwrite_phy(o_ve, ve)
961       CALL histwrite_phy(o_uq, uq)
962       CALL histwrite_phy(o_vq, vq)
[2690]963       IF (iflag_con.GE.3) THEN ! sb
[1898]964          CALL histwrite_phy(o_cape, cape)
965          CALL histwrite_phy(o_pbase, ema_pcb)
966          CALL histwrite_phy(o_ptop, ema_pct)
967          CALL histwrite_phy(o_fbase, ema_cbmf)
[2690]968          IF (iflag_con /= 30) THEN
[1898]969             CALL histwrite_phy(o_plcl, plcl)
970             CALL histwrite_phy(o_plfc, plfc)
971             CALL histwrite_phy(o_wbeff, wbeff)
[2824]972             CALL histwrite_phy(o_convoccur, convoccur)
[2690]973          ENDIF
[1816]974
[1898]975          CALL histwrite_phy(o_cape_max, cape)
[1813]976
[1898]977          CALL histwrite_phy(o_upwd, upwd)
978          CALL histwrite_phy(o_Ma, Ma)
979          CALL histwrite_phy(o_dnwd, dnwd)
980          CALL histwrite_phy(o_dnwd0, dnwd0)
[3171]981          !! The part relative to the frequency of occurence of convection
982          !! is now grouped with the part relative to thermals and shallow
983          !! convection (output of the 3 fields: ftime_deepcv, ftime_th and
984          !!  ftime_con).
[3167]985          IF (vars_defined) THEN
[2690]986             IF (iflag_thermals>=1)THEN
[3167]987                zx_tmp_fi3d=-dnwd+dnwd0+upwd+fm_therm(:,1:klev)
[1898]988             ELSE
[3167]989                zx_tmp_fi3d=-dnwd+dnwd0+upwd
[1898]990             ENDIF
991          ENDIF
992          CALL histwrite_phy(o_mc, zx_tmp_fi3d)
993       ENDIF !iflag_con .GE. 3
994       CALL histwrite_phy(o_prw, prw)
[2496]995       CALL histwrite_phy(o_prlw, prlw)
996       CALL histwrite_phy(o_prsw, prsw)
[1898]997       CALL histwrite_phy(o_s_pblh, s_pblh)
998       CALL histwrite_phy(o_s_pblt, s_pblt)
999       CALL histwrite_phy(o_s_lcl, s_lcl)
1000       CALL histwrite_phy(o_s_therm, s_therm)
1001       !IM : Les champs suivants (s_capCL, s_oliqCL, s_cteiCL, s_trmb1, s_trmb2, s_trmb3) ne sont pas definis dans HBTM.F
1002       !       IF (o_s_capCL%flag(iff)<=lev_files(iff)) THEN
1003       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1004       !    $o_s_capCL%name,itau_w,s_capCL)
1005       !       ENDIF
1006       !       IF (o_s_oliqCL%flag(iff)<=lev_files(iff)) THEN
1007       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1008       !    $o_s_oliqCL%name,itau_w,s_oliqCL)
1009       !       ENDIF
1010       !       IF (o_s_cteiCL%flag(iff)<=lev_files(iff)) THEN
1011       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1012       !    $o_s_cteiCL%name,itau_w,s_cteiCL)
1013       !       ENDIF
1014       !       IF (o_s_trmb1%flag(iff)<=lev_files(iff)) THEN
1015       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1016       !    $o_s_trmb1%name,itau_w,s_trmb1)
1017       !       ENDIF
1018       !       IF (o_s_trmb2%flag(iff)<=lev_files(iff)) THEN
1019       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1020       !    $o_s_trmb2%name,itau_w,s_trmb2)
1021       !       ENDIF
1022       !       IF (o_s_trmb3%flag(iff)<=lev_files(iff)) THEN
1023       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1024       !    $o_s_trmb3%name,itau_w,s_trmb3)
1025       !       ENDIF
[1813]1026
[2282]1027#ifdef CPP_IOIPSL
1028#ifndef CPP_XIOS
[2271]1029  IF (.NOT.ok_all_xml) THEN
[1898]1030       ! ATTENTION, LES ANCIENS HISTWRITE ONT ETES CONSERVES EN ATTENDANT MIEUX:
1031       ! Champs interpolles sur des niveaux de pression
[2271]1032       missing_val=missing_val_nf90
[1898]1033       DO iff=1, nfiles
1034          ll=0
1035          DO k=1, nlevSTD
1036             bb2=clevSTD(k)
[2690]1037             IF (bb2.EQ."850".OR.bb2.EQ."700".OR. &
[1898]1038                  bb2.EQ."500".OR.bb2.EQ."200".OR. &
1039                  bb2.EQ."100".OR. &
1040                  bb2.EQ."50".OR.bb2.EQ."10") THEN
[1813]1041
[1898]1042                ! a refaire correctement !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1043                ll=ll+1
1044                CALL histwrite_phy(o_uSTDlevs(ll),uwriteSTD(:,k,iff), iff)
1045                CALL histwrite_phy(o_vSTDlevs(ll),vwriteSTD(:,k,iff), iff)
1046                CALL histwrite_phy(o_wSTDlevs(ll),wwriteSTD(:,k,iff), iff)
1047                CALL histwrite_phy(o_zSTDlevs(ll),phiwriteSTD(:,k,iff), iff)
1048                CALL histwrite_phy(o_qSTDlevs(ll),qwriteSTD(:,k,iff), iff)
1049                CALL histwrite_phy(o_tSTDlevs(ll),twriteSTD(:,k,iff), iff)
[1813]1050
[1898]1051             ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR.
1052          ENDDO
[1813]1053       ENDDO
[2282]1054  ENDIF
1055#endif
1056#endif
1057#ifdef CPP_XIOS
[2690]1058  IF (ok_all_xml) THEN
[2271]1059!XIOS  CALL xios_get_field_attr("u850",default_value=missing_val)
1060!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1061          ll=0
1062          DO k=1, nlevSTD
1063             bb2=clevSTD(k)
[2690]1064             IF (bb2.EQ."850".OR.bb2.EQ."700".OR. &
[2271]1065                bb2.EQ."500".OR.bb2.EQ."200".OR. &
1066                bb2.EQ."100".OR. &
1067                bb2.EQ."50".OR.bb2.EQ."10") THEN
1068                ll=ll+1
[2282]1069                CALL histwrite_phy(o_uSTDlevs(ll),ulevSTD(:,k))
1070                CALL histwrite_phy(o_vSTDlevs(ll),vlevSTD(:,k))
1071                CALL histwrite_phy(o_wSTDlevs(ll),wlevSTD(:,k))
1072                CALL histwrite_phy(o_zSTDlevs(ll),philevSTD(:,k))
1073                CALL histwrite_phy(o_qSTDlevs(ll),qlevSTD(:,k))
1074                CALL histwrite_phy(o_tSTDlevs(ll),tlevSTD(:,k))
[2271]1075             ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR.
1076          ENDDO
1077  ENDIF
[2282]1078#endif
[1898]1079       IF (vars_defined) THEN
1080          DO i=1, klon
1081             IF (pctsrf(i,is_oce).GT.epsfra.OR. &
1082                  pctsrf(i,is_sic).GT.epsfra) THEN
1083                zx_tmp_fi2d(i) = (ftsol(i, is_oce) * pctsrf(i,is_oce)+ &
1084                     ftsol(i, is_sic) * pctsrf(i,is_sic))/ &
1085                     (pctsrf(i,is_oce)+pctsrf(i,is_sic))
1086             ELSE
1087                zx_tmp_fi2d(i) = 273.15
1088             ENDIF
1089          ENDDO
[1813]1090       ENDIF
[1898]1091       CALL histwrite_phy(o_t_oce_sic, zx_tmp_fi2d)
[1813]1092
[1898]1093       ! Couplage convection-couche limite
1094       IF (iflag_con.GE.3) THEN
1095          IF (iflag_coupl>=1) THEN
1096             CALL histwrite_phy(o_ale_bl, ale_bl)
1097             CALL histwrite_phy(o_alp_bl, alp_bl)
1098          ENDIF !iflag_coupl>=1
1099       ENDIF !(iflag_con.GE.3)
1100       ! Wakes
1101       IF (iflag_con.EQ.3) THEN
1102          IF (iflag_wake>=1) THEN
1103             CALL histwrite_phy(o_ale_wk, ale_wake)
1104             CALL histwrite_phy(o_alp_wk, alp_wake)
[2393]1105             IF (iflag_pbl_split>=1) THEN
[3179]1106!!               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dtvdf_x(1:klon,1:klev)/pdtphys
1107!!               CALL histwrite_phy(o_dtvdf_x    ,zx_tmp_fi3d)
1108!!               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dtvdf_w(1:klon,1:klev)/pdtphys
1109!!               CALL histwrite_phy(o_dtvdf_w    ,zx_tmp_fi3d)
1110!!               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dqvdf_x(1:klon,1:klev)/pdtphys
1111!!               CALL histwrite_phy(o_dqvdf_x    ,zx_tmp_fi3d)
1112!!               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dqvdf_w(1:klon,1:klev)/pdtphys
1113!
1114               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf_x(1:klon,1:klev)/pdtphys
[2393]1115               CALL histwrite_phy(o_dtvdf_x    ,zx_tmp_fi3d)
[3179]1116               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf_w(1:klon,1:klev)/pdtphys
[2393]1117               CALL histwrite_phy(o_dtvdf_w    ,zx_tmp_fi3d)
[3179]1118               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf_x(1:klon,1:klev)/pdtphys
[2393]1119               CALL histwrite_phy(o_dqvdf_x    ,zx_tmp_fi3d)
[3179]1120               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf_w(1:klon,1:klev)/pdtphys
1121!
[2393]1122               CALL histwrite_phy(o_dqvdf_w    ,zx_tmp_fi3d)
1123               CALL histwrite_phy(o_sens_x     ,sens_x     )
1124               CALL histwrite_phy(o_sens_w     ,sens_w     )
1125               CALL histwrite_phy(o_flat_x     ,zxfluxlat_x)
1126               CALL histwrite_phy(o_flat_w     ,zxfluxlat_w)
1127               CALL histwrite_phy(o_delta_tsurf,delta_tsurf)
1128               CALL histwrite_phy(o_cdragh_x   ,cdragh_x   )
1129               CALL histwrite_phy(o_cdragh_w   ,cdragh_w   )
1130               CALL histwrite_phy(o_cdragm_x   ,cdragm_x   )
1131               CALL histwrite_phy(o_cdragm_w   ,cdragm_w   )
1132               CALL histwrite_phy(o_kh         ,kh         )
1133               CALL histwrite_phy(o_kh_x       ,kh_x       )
1134               CALL histwrite_phy(o_kh_w       ,kh_w       )
1135             ENDIF   ! (iflag_pbl_split>=1)
[1898]1136             CALL histwrite_phy(o_ale, ale)
1137             CALL histwrite_phy(o_alp, alp)
1138             CALL histwrite_phy(o_cin, cin)
1139             CALL histwrite_phy(o_WAPE, wake_pe)
[3208]1140             CALL histwrite_phy(o_cv_gen, cv_gen)
[1898]1141             CALL histwrite_phy(o_wake_h, wake_h)
[3208]1142             CALL histwrite_phy(o_wake_dens, wake_dens)
[1898]1143             CALL histwrite_phy(o_wake_s, wake_s)
1144             CALL histwrite_phy(o_wake_deltat, wake_deltat)
1145             CALL histwrite_phy(o_wake_deltaq, wake_deltaq)
1146             CALL histwrite_phy(o_wake_omg, wake_omg)
1147             IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_wake(1:klon,1:klev) &
1148                  /pdtphys
1149             CALL histwrite_phy(o_dtwak, zx_tmp_fi3d)
1150             IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_wake(1:klon,1:klev)/pdtphys
1151             CALL histwrite_phy(o_dqwak, zx_tmp_fi3d)
[2486]1152             CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1153             CALL histwrite_phy(o_dqwak2d, zx_tmp_fi2d)
[1898]1154          ENDIF ! iflag_wake>=1
1155          CALL histwrite_phy(o_ftd, ftd)
1156          CALL histwrite_phy(o_fqd, fqd)
[2253]1157       ENDIF !(iflag_con.EQ.3)
1158       IF (iflag_con.EQ.3.OR.iflag_con.EQ.30) THEN
[1898]1159          ! sortie RomP convection descente insaturee iflag_con=30
[2253]1160          ! etendue a iflag_con=3 (jyg)
[1898]1161          CALL histwrite_phy(o_Vprecip, Vprecip)
1162          CALL histwrite_phy(o_wdtrainA, wdtrainA)
1163          CALL histwrite_phy(o_wdtrainM, wdtrainM)
1164       ENDIF !(iflag_con.EQ.3.or.iflag_con.EQ.30)
[1813]1165!!! nrlmd le 10/04/2012
[1898]1166       IF (iflag_trig_bl>=1) THEN
1167          CALL histwrite_phy(o_n2, n2)
1168          CALL histwrite_phy(o_s2, s2)
1169          CALL histwrite_phy(o_proba_notrig, proba_notrig)
1170          CALL histwrite_phy(o_random_notrig, random_notrig)
1171          CALL histwrite_phy(o_ale_bl_stat, ale_bl_stat)
1172          CALL histwrite_phy(o_ale_bl_trig, ale_bl_trig)
[1813]1173       ENDIF  !(iflag_trig_bl>=1)
[1898]1174       IF (iflag_clos_bl>=1) THEN
1175          CALL histwrite_phy(o_alp_bl_det, alp_bl_det)
1176          CALL histwrite_phy(o_alp_bl_fluct_m, alp_bl_fluct_m)
1177          CALL histwrite_phy(o_alp_bl_fluct_tke,  &
1178               alp_bl_fluct_tke)
1179          CALL histwrite_phy(o_alp_bl_conv, alp_bl_conv)
1180          CALL histwrite_phy(o_alp_bl_stat, alp_bl_stat)
[1813]1181       ENDIF  !(iflag_clos_bl>=1)
1182!!! fin nrlmd le 10/04/2012
[2057]1183       ! Output of slab ocean variables
[1898]1184       IF (type_ocean=='slab ') THEN
[3002]1185          CALL histwrite_phy(o_slab_bils, slab_wfbils)
[2057]1186          IF (nslay.EQ.1) THEN
1187              zx_tmp_fi2d(:)=tslab(:,1)
1188              CALL histwrite_phy(o_tslab, zx_tmp_fi2d)
[3002]1189              zx_tmp_fi2d(:)=dt_qflux(:,1)
1190              CALL histwrite_phy(o_slab_qflux, zx_tmp_fi2d)
[2057]1191          ELSE
[2656]1192              CALL histwrite_phy(o_tslab, tslab(:,1:nslay))
[3002]1193              CALL histwrite_phy(o_slab_qflux, dt_qflux(:,1:nslay))
[2690]1194          ENDIF
[2209]1195          IF (version_ocean=='sicINT') THEN
1196              CALL histwrite_phy(o_slab_bilg, slab_bilg)
1197              CALL histwrite_phy(o_slab_tice, tice)
1198              CALL histwrite_phy(o_slab_sic, seaice)
[2690]1199          ENDIF
[3002]1200          IF (slab_gm) THEN
1201             CALL histwrite_phy(o_slab_gm, dt_gm(:,1:nslay))
1202          END IF
[2656]1203          IF (slab_hdiff) THEN
1204            IF (nslay.EQ.1) THEN
1205                zx_tmp_fi2d(:)=dt_hdiff(:,1)
1206                CALL histwrite_phy(o_slab_hdiff, zx_tmp_fi2d)
1207            ELSE
1208                CALL histwrite_phy(o_slab_hdiff, dt_hdiff(:,1:nslay))
[2690]1209            ENDIF
1210          ENDIF
[2656]1211          IF (slab_ekman.GT.0) THEN
1212            IF (nslay.EQ.1) THEN
1213                zx_tmp_fi2d(:)=dt_ekman(:,1)
1214                CALL histwrite_phy(o_slab_ekman, zx_tmp_fi2d)
1215            ELSE
1216                CALL histwrite_phy(o_slab_ekman, dt_ekman(:,1:nslay))
[2690]1217            ENDIF
1218          ENDIF
[1898]1219       ENDIF !type_ocean == force/slab
1220       CALL histwrite_phy(o_weakinv, weak_inversion)
1221       CALL histwrite_phy(o_dthmin, dthmin)
1222       CALL histwrite_phy(o_cldtau, cldtau)
1223       CALL histwrite_phy(o_cldemi, cldemi)
1224       CALL histwrite_phy(o_pr_con_l, pmflxr(:,1:klev))
1225       CALL histwrite_phy(o_pr_con_i, pmflxs(:,1:klev))
1226       CALL histwrite_phy(o_pr_lsc_l, prfl(:,1:klev))
1227       CALL histwrite_phy(o_pr_lsc_i, psfl(:,1:klev))
1228       CALL histwrite_phy(o_re, re)
1229       CALL histwrite_phy(o_fl, fl)
1230       IF (vars_defined) THEN
1231          DO i=1, klon
1232             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
1233          ENDDO
1234       ENDIF
1235       CALL histwrite_phy(o_rh2m, zx_tmp_fi2d)
[1813]1236
[3165]1237!       IF (vars_defined) THEN
1238!          DO i=1, klon
1239!             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
1240!          ENDDO
1241!       ENDIF
1242!       CALL histwrite_phy(o_rh2m_min, zx_tmp_fi2d)
[1813]1243
[3165]1244!       IF (vars_defined) THEN
1245!          DO i=1, klon
1246!             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
1247!          ENDDO
1248!       ENDIF
1249!       CALL histwrite_phy(o_rh2m_max, zx_tmp_fi2d)
[1813]1250
[1898]1251       CALL histwrite_phy(o_qsat2m, qsat2m)
1252       CALL histwrite_phy(o_tpot, tpot)
1253       CALL histwrite_phy(o_tpote, tpote)
1254       IF (vars_defined) zx_tmp_fi2d(1 : klon) = fsolsw( 1 : klon, is_ter)
1255       CALL histwrite_phy(o_SWnetOR,  zx_tmp_fi2d)
1256       IF (vars_defined) zx_tmp_fi2d(1:klon) = solsw(1:klon)/(1.-albsol1(1:klon))
1257       CALL histwrite_phy(o_SWdownOR,  zx_tmp_fi2d)
1258       CALL histwrite_phy(o_LWdownOR, sollwdown)
1259       CALL histwrite_phy(o_snowl, snow_lsc)
1260       CALL histwrite_phy(o_solldown, sollwdown)
1261       CALL histwrite_phy(o_dtsvdfo, d_ts(:,is_oce))
1262       CALL histwrite_phy(o_dtsvdft, d_ts(:,is_ter))
1263       CALL histwrite_phy(o_dtsvdfg,  d_ts(:,is_lic))
1264       CALL histwrite_phy(o_dtsvdfi, d_ts(:,is_sic))
[2243]1265       CALL histwrite_phy(o_z0m, z0m(:,nbsrf+1))
1266       CALL histwrite_phy(o_z0h, z0h(:,nbsrf+1))
[2952]1267
[2854]1268       ! od550 per species
[2146]1269!--OLIVIER
1270!This is warranted by treating INCA aerosols as offline aerosols
1271!       IF (new_aod .and. (.not. aerosol_couple)) THEN
1272       IF (new_aod) THEN
[2003]1273          IF (flag_aerosol.GT.0) THEN
[2806]1274             CALL histwrite_phy(o_od443aer, od443aer)
[1898]1275             CALL histwrite_phy(o_od550aer, od550aer)
1276             CALL histwrite_phy(o_od865aer, od865aer)
[2842]1277             CALL histwrite_phy(o_abs550aer, abs550aer)
[1898]1278             CALL histwrite_phy(o_od550lt1aer, od550lt1aer)
1279             CALL histwrite_phy(o_sconcso4, sconcso4)
[2146]1280             CALL histwrite_phy(o_sconcno3, sconcno3)
[1898]1281             CALL histwrite_phy(o_sconcoa, sconcoa)
1282             CALL histwrite_phy(o_sconcbc, sconcbc)
1283             CALL histwrite_phy(o_sconcss, sconcss)
1284             CALL histwrite_phy(o_sconcdust, sconcdust)
1285             CALL histwrite_phy(o_concso4, concso4)
[2146]1286             CALL histwrite_phy(o_concno3, concno3)
[1898]1287             CALL histwrite_phy(o_concoa, concoa)
1288             CALL histwrite_phy(o_concbc, concbc)
1289             CALL histwrite_phy(o_concss, concss)
1290             CALL histwrite_phy(o_concdust, concdust)
1291             CALL histwrite_phy(o_loadso4, loadso4)
1292             CALL histwrite_phy(o_loadoa, loadoa)
1293             CALL histwrite_phy(o_loadbc, loadbc)
1294             CALL histwrite_phy(o_loadss, loadss)
1295             CALL histwrite_phy(o_loaddust, loaddust)
[2823]1296             CALL histwrite_phy(o_loadno3, loadno3)
[2854]1297             CALL histwrite_phy(o_dryod550aer, dryod550aer)
1298             DO naero = 1, naero_tot-1
1299                CALL histwrite_phy(o_drytausumaero(naero),drytausum_aero(:,naero))
1300             END DO
[1813]1301          ENDIF
[2854]1302          !--STRAT AER
[2530]1303          IF (flag_aerosol.GT.0.OR.flag_aerosol_strat.GT.0) THEN
[2003]1304             DO naero = 1, naero_tot
[2690]1305                CALL histwrite_phy(o_tausumaero(naero),tausum_aero(:,2,naero))
[1898]1306             END DO
[1813]1307          ENDIF
[2530]1308          IF (flag_aerosol_strat.GT.0) THEN
[2690]1309             CALL histwrite_phy(o_tausumaero_lw,tausum_aero(:,6,id_STRAT_phy))
[2146]1310          ENDIF
[1898]1311       ENDIF
[2992]1312
1313       CALL histwrite_phy(o_p_tropopause, p_tropopause)
1314       CALL histwrite_phy(o_t_tropopause, t_tropopause)
1315       CALL histwrite_phy(o_z_tropopause, z_tropopause)
1316
[2993]1317! ThL -- In the following, we assume read_climoz == 1
1318       zx_tmp_fi2d = 0.0    ! Computation for strato, added ThL
1319       DO k=1, klev
1320          zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + wo(:,k,1) * stratomask(:,k) * 1.e3
1321       END DO
1322       CALL histwrite_phy(o_col_O3_strato, zx_tmp_fi2d) ! Added ThL
1323       zx_tmp_fi2d = 0.0    ! Computation for tropo, added ThL
1324       DO k=1, klev
1325          zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + wo(:,k,1) * (1.0-stratomask(:,k)) * 1.e3
1326       END DO
1327       CALL histwrite_phy(o_col_O3_tropo, zx_tmp_fi2d)   ! Added ThL
1328! end add ThL
1329
[2690]1330#ifdef CPP_StratAer
1331       IF (type_trac=='coag') THEN
1332          CALL histwrite_phy(o_R2SO4, R2SO4)
1333          CALL histwrite_phy(o_OCS_lifetime, OCS_lifetime)
1334          CALL histwrite_phy(o_SO2_lifetime, SO2_lifetime)
[2752]1335          CALL histwrite_phy(o_budg_3D_backgr_ocs,   budg_3D_backgr_ocs)
1336          CALL histwrite_phy(o_budg_3D_backgr_so2,   budg_3D_backgr_so2)
1337          CALL histwrite_phy(o_budg_3D_ocs_to_so2,   budg_3D_ocs_to_so2)
1338          CALL histwrite_phy(o_budg_3D_so2_to_h2so4, budg_3D_so2_to_h2so4)
1339          CALL histwrite_phy(o_budg_3D_nucl,         budg_3D_nucl)
1340          CALL histwrite_phy(o_budg_3D_cond_evap,    budg_3D_cond_evap)
[3100]1341          CALL histwrite_phy(o_budg_dep_dry_ocs,     budg_dep_dry_ocs)
1342          CALL histwrite_phy(o_budg_dep_wet_ocs,     budg_dep_wet_ocs)
1343          CALL histwrite_phy(o_budg_dep_dry_so2,     budg_dep_dry_so2)
1344          CALL histwrite_phy(o_budg_dep_wet_so2,     budg_dep_wet_so2)
[2752]1345          CALL histwrite_phy(o_budg_dep_dry_h2so4,   budg_dep_dry_h2so4)
1346          CALL histwrite_phy(o_budg_dep_wet_h2so4,   budg_dep_wet_h2so4)
1347          CALL histwrite_phy(o_budg_dep_dry_part,    budg_dep_dry_part)
1348          CALL histwrite_phy(o_budg_dep_wet_part,    budg_dep_wet_part)
1349          CALL histwrite_phy(o_budg_emi_ocs,         budg_emi_ocs)
1350          CALL histwrite_phy(o_budg_emi_so2,         budg_emi_so2)
1351          CALL histwrite_phy(o_budg_emi_h2so4,       budg_emi_h2so4)
1352          CALL histwrite_phy(o_budg_emi_part,        budg_emi_part)
1353          CALL histwrite_phy(o_budg_ocs_to_so2,      budg_ocs_to_so2)
1354          CALL histwrite_phy(o_budg_so2_to_h2so4,    budg_so2_to_h2so4)
1355          CALL histwrite_phy(o_budg_h2so4_to_part,   budg_h2so4_to_part)
1356          CALL histwrite_phy(o_budg_sed_part,        budg_sed_part)
[2690]1357          CALL histwrite_phy(o_surf_PM25_sulf, surf_PM25_sulf)
1358          CALL histwrite_phy(o_vsed_aer, vsed_aer)
1359          CALL histwrite_phy(o_f_r_wet, f_r_wet)
1360          CALL histwrite_phy(o_ext_strat_550, tau_strat_550)
1361          CALL histwrite_phy(o_ext_strat_1020, tau_strat_1020)
1362          CALL histwrite_phy(o_tau_strat_550, tausum_strat(:,1))
1363          CALL histwrite_phy(o_tau_strat_1020, tausum_strat(:,2))
1364       ENDIF
1365#endif
[1813]1366       IF (ok_ade) THEN
[2366]1367          CALL histwrite_phy(o_topswad, topswad_aero*swradcorr)
1368          CALL histwrite_phy(o_topswad0, topswad0_aero*swradcorr)
1369          CALL histwrite_phy(o_solswad, solswad_aero*swradcorr)
1370          CALL histwrite_phy(o_solswad0, solswad0_aero*swradcorr)
[2966]1371          IF (type_trac .ne. 'inca') THEN
1372             IF (config_inca .ne. 'aeNP') THEN
1373                CALL histwrite_phy(o_toplwad, toplwad_aero)
1374                CALL histwrite_phy(o_toplwad0, toplwad0_aero)
1375                CALL histwrite_phy(o_sollwad, sollwad_aero)
1376                CALL histwrite_phy(o_sollwad0, sollwad0_aero)
1377             ENDIF
1378          ENDIF
[1898]1379          !====MS forcing diagnostics
[2690]1380          IF (new_aod) THEN
[2366]1381             zx_tmp_fi2d(:)=topsw_aero(:,1)*swradcorr(:)
1382             CALL histwrite_phy(o_swtoaas_nat,zx_tmp_fi2d)
1383             zx_tmp_fi2d(:)=solsw_aero(:,1)*swradcorr(:)
1384             CALL histwrite_phy(o_swsrfas_nat,zx_tmp_fi2d)
1385             zx_tmp_fi2d(:)=topsw0_aero(:,1)*swradcorr(:)
1386             CALL histwrite_phy(o_swtoacs_nat,zx_tmp_fi2d)
1387             zx_tmp_fi2d(:)=solsw0_aero(:,1)*swradcorr(:)
1388             CALL histwrite_phy(o_swsrfcs_nat,zx_tmp_fi2d)
[1898]1389             !ant
[2366]1390             zx_tmp_fi2d(:)=topsw_aero(:,2)*swradcorr(:)
1391             CALL histwrite_phy(o_swtoaas_ant,zx_tmp_fi2d)
1392             zx_tmp_fi2d(:)=solsw_aero(:,2)*swradcorr(:)
1393             CALL histwrite_phy(o_swsrfas_ant,zx_tmp_fi2d)
1394             zx_tmp_fi2d(:)=topsw0_aero(:,2)*swradcorr(:)
1395             CALL histwrite_phy(o_swtoacs_ant,zx_tmp_fi2d)
1396             zx_tmp_fi2d(:)=solsw0_aero(:,2)*swradcorr(:)
1397             CALL histwrite_phy(o_swsrfcs_ant,zx_tmp_fi2d)
[1898]1398             !cf
[2690]1399             IF (.not. aerosol_couple) THEN
[2366]1400                zx_tmp_fi2d(:)=topswcf_aero(:,1)*swradcorr(:)
1401                CALL histwrite_phy(o_swtoacf_nat,zx_tmp_fi2d)
1402                zx_tmp_fi2d(:)=solswcf_aero(:,1)*swradcorr(:)
1403                CALL histwrite_phy(o_swsrfcf_nat,zx_tmp_fi2d)
1404                zx_tmp_fi2d(:)=topswcf_aero(:,2)*swradcorr(:)
1405                CALL histwrite_phy(o_swtoacf_ant,zx_tmp_fi2d)
1406                zx_tmp_fi2d(:)=solswcf_aero(:,2)*swradcorr(:)
1407                CALL histwrite_phy(o_swsrfcf_ant,zx_tmp_fi2d)
1408                zx_tmp_fi2d(:)=topswcf_aero(:,3)*swradcorr(:)
1409                CALL histwrite_phy(o_swtoacf_zero,zx_tmp_fi2d)
1410                zx_tmp_fi2d(:)=solswcf_aero(:,3)*swradcorr(:)
1411                CALL histwrite_phy(o_swsrfcf_zero,zx_tmp_fi2d)
[2690]1412             ENDIF
1413          ENDIF ! new_aod
[1898]1414          !====MS forcing diagnostics
[1813]1415       ENDIF
1416       IF (ok_aie) THEN
[2366]1417          CALL histwrite_phy(o_topswai, topswai_aero*swradcorr)
[2780]1418          CALL histwrite_phy(o_toplwai, toplwai_aero*swradcorr)
[2366]1419          CALL histwrite_phy(o_solswai, solswai_aero*swradcorr)
[2780]1420          CALL histwrite_phy(o_sollwai, sollwai_aero*swradcorr)
[2003]1421       ENDIF
1422       IF (flag_aerosol.GT.0.AND.ok_cdnc) THEN
[1898]1423          CALL histwrite_phy(o_scdnc, scdnc)
1424          CALL histwrite_phy(o_cldncl, cldncl)
1425          CALL histwrite_phy(o_reffclws, reffclws)
1426          CALL histwrite_phy(o_reffclwc, reffclwc)
1427          CALL histwrite_phy(o_cldnvi, cldnvi)
1428          CALL histwrite_phy(o_lcc, lcc)
1429          CALL histwrite_phy(o_lcc3d, lcc3d)
1430          CALL histwrite_phy(o_lcc3dcon, lcc3dcon)
1431          CALL histwrite_phy(o_lcc3dstra, lcc3dstra)
[3121]1432          CALL histwrite_phy(o_icc3dcon, icc3dcon)
1433          CALL histwrite_phy(o_icc3dstra, icc3dstra)
[3124]1434          CALL histwrite_phy(o_cldicemxrat, zfice)
1435          zx_tmp_fi3d(:,:)=1-zfice(:,:)
1436          CALL histwrite_phy(o_cldwatmxrat, zx_tmp_fi3d)
[1898]1437          CALL histwrite_phy(o_reffclwtop, reffclwtop)
[1813]1438       ENDIF
[1898]1439       ! Champs 3D:
[1813]1440       IF (ok_ade .OR. ok_aie) then
[1898]1441          CALL histwrite_phy(o_ec550aer, ec550aer)
[1813]1442       ENDIF
[1898]1443       CALL histwrite_phy(o_lwcon, flwc)
1444       CALL histwrite_phy(o_iwcon, fiwc)
1445       CALL histwrite_phy(o_temp, t_seri)
1446       CALL histwrite_phy(o_theta, theta)
1447       CALL histwrite_phy(o_ovapinit, qx(:,:,ivap))
1448       CALL histwrite_phy(o_ovap, q_seri)
1449       CALL histwrite_phy(o_oliq, ql_seri)
[2553]1450       CALL histwrite_phy(o_ocond, ql_seri+qs_seri)
[1898]1451       CALL histwrite_phy(o_geop, zphi)
1452       CALL histwrite_phy(o_vitu, u_seri)
1453       CALL histwrite_phy(o_vitv, v_seri)
1454       CALL histwrite_phy(o_vitw, omega)
1455       CALL histwrite_phy(o_pres, pplay)
1456       CALL histwrite_phy(o_paprs, paprs(:,1:klev))
[2377]1457       CALL histwrite_phy(o_zfull,zphi/RG)
[1813]1458
[3066]1459#ifdef CPP_XIOS
[3048]1460!solbnd begin
1461#ifdef CPP_RRTM
1462      IF (iflag_rrtm.EQ.1) THEN
1463       IF (vars_defined) THEN
1464        DO ISW=1, NSW
1465          zx_tmp_fi3dsp(:,ISW) = swdn(:,klevp1)*swradcorr(:)*RSUN(ISW)
1466        ENDDO
1467        CALL histwrite_phy(o_solbnd, zx_tmp_fi3dsp)
1468       ENDIF
1469      ENDIF
1470#endif
1471!solbnd end
[3066]1472#endif
[3048]1473
[2541]1474       IF (flag_aerosol_strat.EQ.2) THEN
1475         CALL histwrite_phy(o_stratomask, stratomask)
1476       ENDIF
1477     
[1898]1478       IF (vars_defined)  THEN
[2377]1479        zx_tmp_fi3d(:,1)= pphis(:)/RG
1480        DO k = 2, klev
1481         DO i = 1, klon
[3234]1482            zx_tmp_fi3d(i,k) = zphi(i,k-1)/RG + &
[2377]1483                          (zphi(i,k)-zphi(i,k-1))/RG * &
[3234]1484                          (paprs(i,k)-pplay(i,k-1))/(pplay(i,k)-pplay(i,k-1))
[2377]1485         ENDDO
1486        ENDDO
[1898]1487       ENDIF
1488       CALL histwrite_phy(o_zhalf, zx_tmp_fi3d)
1489       CALL histwrite_phy(o_rneb, cldfra)
1490       CALL histwrite_phy(o_rnebcon, rnebcon)
1491       CALL histwrite_phy(o_rnebls, rneb)
[2945]1492       CALL histwrite_phy(o_rneblsvol, rneblsvol)
[1938]1493       IF (vars_defined)  THEN
1494          DO k=1, klev
1495             DO i=1, klon
1496                zx_tmp_fi3d(i,k)=cldfra(i,k)*JrNt(i)
1497             ENDDO
1498          ENDDO
1499       ENDIF
[1924]1500       CALL histwrite_phy(o_rnebjn, zx_tmp_fi3d)
[1898]1501       CALL histwrite_phy(o_rhum, zx_rh)
1502       CALL histwrite_phy(o_ozone, &
1503            wo(:, :, 1) * dobson_u * 1e3 / zmasse / rmo3 * rmd)
[1813]1504
[1898]1505       IF (read_climoz == 2) THEN
1506          CALL histwrite_phy(o_ozone_light, &
1507               wo(:, :, 2) * dobson_u * 1e3 / zmasse / rmo3 * rmd)
1508       ENDIF
[1813]1509
[2665]1510       CALL histwrite_phy(o_duphy, d_u)
1511
[1898]1512       CALL histwrite_phy(o_dtphy, d_t)
[2496]1513
[1898]1514       CALL histwrite_phy(o_dqphy,  d_qx(:,:,ivap))
[2486]1515       CALL water_int(klon,klev,d_qx(:,:,ivap),zmasse,zx_tmp_fi2d)
1516       CALL histwrite_phy(o_dqphy2d,  zx_tmp_fi2d)
[2496]1517
1518       CALL histwrite_phy(o_dqlphy,  d_qx(:,:,iliq))
1519       CALL water_int(klon,klev,d_qx(:,:,iliq),zmasse,zx_tmp_fi2d)
1520       CALL histwrite_phy(o_dqlphy2d,  zx_tmp_fi2d)
1521
1522       IF (nqo.EQ.3) THEN
1523       CALL histwrite_phy(o_dqsphy,  d_qx(:,:,isol))
1524       CALL water_int(klon,klev,d_qx(:,:,isol),zmasse,zx_tmp_fi2d)
1525       CALL histwrite_phy(o_dqsphy2d,  zx_tmp_fi2d)
1526       ELSE
1527       zx_tmp_fi3d=0.0
1528       CALL histwrite_phy(o_dqsphy,  zx_tmp_fi3d)
1529       zx_tmp_fi2d=0.0
1530       CALL histwrite_phy(o_dqsphy2d,  zx_tmp_fi2d)
1531       ENDIF
1532
[1898]1533       DO nsrf=1, nbsrf
1534          IF (vars_defined) zx_tmp_fi2d(1 : klon) = falb1( 1 : klon, nsrf)
1535          CALL histwrite_phy(o_albe_srf(nsrf), zx_tmp_fi2d)
[2243]1536          IF (vars_defined) zx_tmp_fi2d(1 : klon) = z0m( 1 : klon, nsrf)
1537          CALL histwrite_phy(o_z0m_srf(nsrf), zx_tmp_fi2d)
1538          IF (vars_defined) zx_tmp_fi2d(1 : klon) = z0h( 1 : klon, nsrf)
1539          CALL histwrite_phy(o_z0h_srf(nsrf), zx_tmp_fi2d)
[1898]1540          IF (vars_defined) zx_tmp_fi2d(1 : klon) = agesno( 1 : klon, nsrf)
1541          CALL histwrite_phy(o_ages_srf(nsrf), zx_tmp_fi2d)
[2209]1542          IF (vars_defined) zx_tmp_fi2d(1 : klon) = snow( 1 : klon, nsrf)
1543          CALL histwrite_phy(o_snow_srf(nsrf), zx_tmp_fi2d)
[1898]1544       ENDDO !nsrf=1, nbsrf
1545       CALL histwrite_phy(o_alb1, albsol1)
1546       CALL histwrite_phy(o_alb2, albsol2)
1547       !FH Sorties pour la couche limite
[2690]1548       IF (iflag_pbl>1) THEN
[1898]1549          zx_tmp_fi3d=0.
1550          IF (vars_defined) THEN
[2690]1551             DO nsrf=1,nbsrf
1552                DO k=1,klev
[1898]1553                   zx_tmp_fi3d(:,k)=zx_tmp_fi3d(:,k) &
1554                        +pctsrf(:,nsrf)*pbl_tke(:,k,nsrf)
[2690]1555                ENDDO
1556             ENDDO
[1898]1557          ENDIF
1558          CALL histwrite_phy(o_tke, zx_tmp_fi3d)
[1813]1559
[1898]1560          CALL histwrite_phy(o_tke_max, zx_tmp_fi3d)
1561       ENDIF
[1813]1562
[1898]1563       CALL histwrite_phy(o_kz, coefh(:,:,is_ave))
[1813]1564
[1898]1565       CALL histwrite_phy(o_kz_max, coefh(:,:,is_ave))
[1813]1566
[1898]1567       CALL histwrite_phy(o_clwcon, clwcon0)
1568       CALL histwrite_phy(o_dtdyn, d_t_dyn)
[2496]1569
[1898]1570       CALL histwrite_phy(o_dqdyn, d_q_dyn)
[2496]1571
[2499]1572       CALL histwrite_phy(o_dqdyn2d,d_q_dyn2d)
1573
[2496]1574       CALL histwrite_phy(o_dqldyn, d_ql_dyn)
1575
[2499]1576       CALL histwrite_phy(o_dqldyn2d, d_ql_dyn2d)
1577
[2496]1578       CALL histwrite_phy(o_dqsdyn, d_qs_dyn)
1579
[2499]1580       CALL histwrite_phy(o_dqsdyn2d, d_qs_dyn2d)
1581
[1898]1582       CALL histwrite_phy(o_dudyn, d_u_dyn)
1583       CALL histwrite_phy(o_dvdyn, d_v_dyn)
[1813]1584
[1898]1585       IF (vars_defined) THEN
1586          zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys
1587       ENDIF
1588       CALL histwrite_phy(o_dtcon, zx_tmp_fi3d)
[2102]1589       if(iflag_thermals.eq.0)then
[1898]1590          IF (vars_defined) THEN
1591             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
1592                  d_t_ajsb(1:klon,1:klev)/pdtphys
1593          ENDIF
1594          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
[2102]1595       else if(iflag_thermals.ge.1.and.iflag_wake.EQ.1)then
[1898]1596          IF (vars_defined) THEN
1597             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
1598                  d_t_ajs(1:klon,1:klev)/pdtphys + &
1599                  d_t_wake(1:klon,1:klev)/pdtphys
1600          ENDIF
1601          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
1602       endif
1603       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_con(1:klon,1:klev)/pdtphys
1604       CALL histwrite_phy(o_ducon, zx_tmp_fi3d)
1605       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_con(1:klon,1:klev)/pdtphys
1606       CALL histwrite_phy(o_dvcon, zx_tmp_fi3d)
1607       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
1608       CALL histwrite_phy(o_dqcon, zx_tmp_fi3d)
[2486]1609       CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1610       CALL histwrite_phy(o_dqcon2d, zx_tmp_fi2d)
[1813]1611
[2690]1612       IF (iflag_thermals.EQ.0) THEN
[1898]1613          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
1614          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
[2690]1615       ELSE IF (iflag_thermals.GE.1.AND.iflag_wake.EQ.1) THEN
[1898]1616          IF (vars_defined) THEN
1617             zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys + &
1618                  d_q_ajs(1:klon,1:klev)/pdtphys + &
1619                  d_q_wake(1:klon,1:klev)/pdtphys
1620          ENDIF
1621          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
1622       ENDIF
[1813]1623
[1898]1624       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lsc(1:klon,1:klev)/pdtphys
1625       CALL histwrite_phy(o_dtlsc, zx_tmp_fi3d)
1626       IF (vars_defined) zx_tmp_fi3d(1:klon, 1:klev)=(d_t_lsc(1:klon,1:klev)+ &
1627            d_t_eva(1:klon,1:klev))/pdtphys
1628       CALL histwrite_phy(o_dtlschr, zx_tmp_fi3d)
1629       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys
1630       CALL histwrite_phy(o_dqlsc, zx_tmp_fi3d)
[2486]1631       CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1632       CALL histwrite_phy(o_dqlsc2d, zx_tmp_fi2d)
[1898]1633       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=beta_prec(1:klon,1:klev)
1634       CALL histwrite_phy(o_beta_prec, zx_tmp_fi3d)
[1813]1635!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[1898]1636       ! Sorties specifiques a la separation thermiques/non thermiques
[2690]1637       IF (iflag_thermals>=1) THEN
1638          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscth(1:klon,1:klev)/pdtphys
[1898]1639          CALL histwrite_phy(o_dtlscth, zx_tmp_fi3d)
[2690]1640          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscst(1:klon,1:klev)/pdtphys
[1898]1641          CALL histwrite_phy(o_dtlscst, zx_tmp_fi3d)
[2690]1642          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscth(1:klon,1:klev)/pdtphys
[1898]1643          CALL histwrite_phy(o_dqlscth, zx_tmp_fi3d)
[2486]1644          CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1645          CALL histwrite_phy(o_dqlscth2d, zx_tmp_fi2d)
[2690]1646          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscst(1:klon,1:klev)/pdtphys
[1898]1647          CALL histwrite_phy(o_dqlscst, zx_tmp_fi3d)
[2486]1648          CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1649          CALL histwrite_phy(o_dqlscst2d, zx_tmp_fi2d)
[1898]1650          CALL histwrite_phy(o_plulth, plul_th)
1651          CALL histwrite_phy(o_plulst, plul_st)
1652          IF (vars_defined) THEN
[3171]1653             do i=1,klon
1654                zx_tmp_fi2d(1:klon)=lmax_th(:)
1655             enddo
1656          ENDIF
1657          CALL histwrite_phy(o_lmaxth, zx_tmp_fi2d)
1658          IF (vars_defined) THEN
[2690]1659             DO k=1,klev
1660                DO i=1,klon
1661                   IF (ptconvth(i,k)) THEN
[1898]1662                      zx_tmp_fi3d(i,k)=1.
[2690]1663                   ELSE
[1898]1664                      zx_tmp_fi3d(i,k)=0.
[2690]1665                   ENDIF
1666                ENDDO
1667             ENDDO
[1898]1668          ENDIF
1669          CALL histwrite_phy(o_ptconvth, zx_tmp_fi3d)
[2690]1670       ENDIF ! iflag_thermals>=1
[1813]1671!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[3171]1672       zpt_conv = 0.
1673       WHERE (ptconv) zpt_conv = 1.
1674       CALL histwrite_phy(o_ptconv, zpt_conv)
1675!!       IF (vars_defined)         zx_tmp_fi2d=float(itau_con)/float(itap)
1676!!       CALL histwrite_phy(o_ftime_con, zx_tmp_fi2d)
1677       IF (vars_defined) THEN
1678          zpt_conv2d(:) = 0.
1679          DO k=1,klev
1680            WHERE (ptconv(:,k)) zpt_conv2d(:) = 1.
1681          ENDDO
1682       ENDIF
1683       CALL histwrite_phy(o_ftime_deepcv, zpt_conv2d)
1684       IF (vars_defined) THEN
1685          zx_tmp_fi2d(:) = 0.
1686          DO k=1,klev
1687            WHERE (ptconvth(:,k)) zx_tmp_fi2d(:) = 1.
1688          ENDDO
1689       ENDIF
1690       CALL histwrite_phy(o_ftime_th, zx_tmp_fi2d)
1691       IF (vars_defined) THEN
1692           zx_tmp_fi2d(:) = max(zx_tmp_fi2d(:),zpt_conv2d(:))
1693       ENDIF
1694       CALL histwrite_phy(o_ftime_con, zx_tmp_fi2d)
1695!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[1898]1696       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf(1:klon,1:klev)/pdtphys
1697       CALL histwrite_phy(o_dtvdf, zx_tmp_fi3d)
[2690]1698       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_diss(1:klon,1:klev)/pdtphys
[1898]1699       CALL histwrite_phy(o_dtdis, zx_tmp_fi3d)
1700       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf(1:klon,1:klev)/pdtphys
1701       CALL histwrite_phy(o_dqvdf, zx_tmp_fi3d)
[2486]1702       CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1703       CALL histwrite_phy(o_dqvdf2d, zx_tmp_fi2d)
[1898]1704       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_eva(1:klon,1:klev)/pdtphys
1705       CALL histwrite_phy(o_dteva, zx_tmp_fi3d)
1706       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_eva(1:klon,1:klev)/pdtphys
1707       CALL histwrite_phy(o_dqeva, zx_tmp_fi3d)
[2486]1708       CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1709       CALL histwrite_phy(o_dqeva2d, zx_tmp_fi2d)
[1898]1710       CALL histwrite_phy(o_ratqs, ratqs)
1711       IF (vars_defined) THEN
1712          zx_tmp_fi3d(1:klon,1:klev)=d_t_ajs(1:klon,1:klev)/pdtphys - &
1713               d_t_ajsb(1:klon,1:klev)/pdtphys
1714       ENDIF
1715       CALL histwrite_phy(o_dtthe, zx_tmp_fi3d)
[1903]1716       IF (vars_defined) THEN
[1943]1717          zx_tmp_fi3d(1:klon,1:klev)=d_u_ajs(1:klon,1:klev)/pdtphys
[1903]1718       ENDIF
1719       CALL histwrite_phy(o_duthe, zx_tmp_fi3d)
1720       IF (vars_defined) THEN
[1943]1721          zx_tmp_fi3d(1:klon,1:klev)=d_v_ajs(1:klon,1:klev)/pdtphys
[1903]1722       ENDIF
1723       CALL histwrite_phy(o_dvthe, zx_tmp_fi3d)
1724
[1813]1725       IF (iflag_thermals>=1) THEN
[1898]1726          ! Pour l instant 0 a y reflichir pour les thermiques
[3171]1727          ! regroupe avec ftime_deepcv et ftime_con
1728          !!zx_tmp_fi2d=0.
1729          !!CALL histwrite_phy(o_ftime_th, zx_tmp_fi2d)
[1898]1730          CALL histwrite_phy(o_f_th, fm_therm)
1731          CALL histwrite_phy(o_e_th, entr_therm)
1732          CALL histwrite_phy(o_w_th, zw2)
1733          CALL histwrite_phy(o_q_th, zqasc)
1734          CALL histwrite_phy(o_a_th, fraca)
[2958]1735          CALL histwrite_phy(o_cloudth_sth, cloudth_sth)
1736          CALL histwrite_phy(o_cloudth_senv, cloudth_senv)
1737          CALL histwrite_phy(o_cloudth_sigmath, cloudth_sigmath)
1738          CALL histwrite_phy(o_cloudth_sigmaenv, cloudth_sigmaenv)
[1898]1739          CALL histwrite_phy(o_d_th, detr_therm)
1740          CALL histwrite_phy(o_f0_th, f0)
1741          CALL histwrite_phy(o_zmax_th, zmax_th)
1742          IF (vars_defined) THEN
1743             zx_tmp_fi3d(1:klon,1:klev)=d_q_ajs(1:klon,1:klev)/pdtphys - &
1744                  d_q_ajsb(1:klon,1:klev)/pdtphys
1745          ENDIF
1746          CALL histwrite_phy(o_dqthe, zx_tmp_fi3d)
[2486]1747          CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1748          CALL histwrite_phy(o_dqthe2d, zx_tmp_fi2d)
[1898]1749       ENDIF !iflag_thermals
[2690]1750       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ajsb(1:klon,1:klev)/pdtphys
[1898]1751       CALL histwrite_phy(o_dtajs, zx_tmp_fi3d)
[2690]1752       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_ajsb(1:klon,1:klev)/pdtphys
[1898]1753       CALL histwrite_phy(o_dqajs, zx_tmp_fi3d)
[2486]1754       CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1755       CALL histwrite_phy(o_dqajs2d, zx_tmp_fi2d)
[2690]1756       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_swr(1:klon,1:klev)/pdtphys
[1898]1757       CALL histwrite_phy(o_dtswr, zx_tmp_fi3d)
[2690]1758       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_sw0(1:klon,1:klev)/pdtphys
[1898]1759       CALL histwrite_phy(o_dtsw0, zx_tmp_fi3d)
[2690]1760       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lwr(1:klon,1:klev)/pdtphys
[1898]1761       CALL histwrite_phy(o_dtlwr, zx_tmp_fi3d)
[2690]1762       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lw0(1:klon,1:klev)/pdtphys
[1898]1763       CALL histwrite_phy(o_dtlw0, zx_tmp_fi3d)
[2690]1764       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ec(1:klon,1:klev)/pdtphys
[1898]1765       CALL histwrite_phy(o_dtec, zx_tmp_fi3d)
[2690]1766       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_vdf(1:klon,1:klev)/pdtphys
[1898]1767       CALL histwrite_phy(o_duvdf, zx_tmp_fi3d)
[2690]1768       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_vdf(1:klon,1:klev)/pdtphys
[1898]1769       CALL histwrite_phy(o_dvvdf, zx_tmp_fi3d)
[1813]1770       IF (ok_orodr) THEN
[2690]1771          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_oro(1:klon,1:klev)/pdtphys
[1898]1772          CALL histwrite_phy(o_duoro, zx_tmp_fi3d)
[2690]1773          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_oro(1:klon,1:klev)/pdtphys
[1898]1774          CALL histwrite_phy(o_dvoro, zx_tmp_fi3d)
[2690]1775          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_oro(1:klon,1:klev)/pdtphys
[1898]1776          CALL histwrite_phy(o_dtoro, zx_tmp_fi3d)
[1813]1777       ENDIF
[1898]1778       IF (ok_orolf) THEN
[2690]1779          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_lif(1:klon,1:klev)/pdtphys
[1898]1780          CALL histwrite_phy(o_dulif, zx_tmp_fi3d)
[1903]1781
[2690]1782          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_lif(1:klon,1:klev)/pdtphys
[1903]1783          CALL histwrite_phy(o_dvlif, zx_tmp_fi3d)
1784
[2690]1785          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lif(1:klon,1:klev)/pdtphys
[1903]1786          CALL histwrite_phy(o_dtlif, zx_tmp_fi3d)
[1813]1787       ENDIF
1788
1789       IF (ok_hines) THEN
[2333]1790          CALL histwrite_phy(o_du_gwd_hines, du_gwd_hines/pdtphys)
1791          CALL histwrite_phy(o_dv_gwd_hines, dv_gwd_hines/pdtphys)
[2690]1792          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_hin(1:klon,1:klev)/pdtphys
[1898]1793          CALL histwrite_phy(o_dthin, zx_tmp_fi3d)
[2333]1794          CALL histwrite_phy(o_ustr_gwd_hines, zustr_gwd_hines)
1795          CALL histwrite_phy(o_vstr_gwd_hines, zvstr_gwd_hines)
[2690]1796       ENDIF
[2333]1797
[2690]1798       IF (.not. ok_hines .and. ok_gwd_rando) THEN
[2333]1799          CALL histwrite_phy(o_du_gwd_front, du_gwd_front / pdtphys)
1800          CALL histwrite_phy(o_dv_gwd_front, dv_gwd_front / pdtphys)
1801          CALL histwrite_phy(o_ustr_gwd_front, zustr_gwd_front)
1802          CALL histwrite_phy(o_vstr_gwd_front, zvstr_gwd_front)
[1898]1803       ENDIF
[1938]1804
[2690]1805       IF (ok_gwd_rando) THEN
[1938]1806          CALL histwrite_phy(o_du_gwd_rando, du_gwd_rando / pdtphys)
1807          CALL histwrite_phy(o_dv_gwd_rando, dv_gwd_rando / pdtphys)
[2333]1808          CALL histwrite_phy(o_ustr_gwd_rando, zustr_gwd_rando)
[1938]1809          CALL histwrite_phy(o_vstr_gwd_rando, zvstr_gwd_rando)
[2333]1810          CALL histwrite_phy(o_east_gwstress, east_gwstress )
1811          CALL histwrite_phy(o_west_gwstress, west_gwstress )
[2690]1812       ENDIF
[1938]1813
[2690]1814       IF (ok_qch4) THEN
[2136]1815          CALL histwrite_phy(o_dqch4, d_q_ch4 / pdtphys)
1816       ENDIF
1817
[2366]1818       DO k=1, klevp1
1819         zx_tmp_fi3d1(:,k)=swup(:,k)*swradcorr(:)
1820       ENDDO
1821       CALL histwrite_phy(o_rsu, zx_tmp_fi3d1)
1822       DO k=1, klevp1
1823         zx_tmp_fi3d1(:,k)=swdn(:,k)*swradcorr(:)
1824       ENDDO
1825       CALL histwrite_phy(o_rsd, zx_tmp_fi3d1)
1826       DO k=1, klevp1
1827         zx_tmp_fi3d1(:,k)=swup0(:,k)*swradcorr(:)
1828       ENDDO
1829       CALL histwrite_phy(o_rsucs, zx_tmp_fi3d1)
1830       DO k=1, klevp1
[3082]1831         zx_tmp_fi3d1(:,k)=swupc0(:,k)*swradcorr(:)
1832       ENDDO
1833       CALL histwrite_phy(o_rsucsaf, zx_tmp_fi3d1)
1834       DO k=1, klevp1
[2366]1835         zx_tmp_fi3d1(:,k)=swdn0(:,k)*swradcorr(:)
1836       ENDDO
1837       CALL histwrite_phy(o_rsdcs, zx_tmp_fi3d1)
[3082]1838       DO k=1, klevp1
1839         zx_tmp_fi3d1(:,k)=swdnc0(:,k)*swradcorr(:)
1840       ENDDO
1841       CALL histwrite_phy(o_rsdcsaf, zx_tmp_fi3d1)
[2366]1842
[1898]1843       CALL histwrite_phy(o_rlu, lwup)
1844       CALL histwrite_phy(o_rld, lwdn)
1845       CALL histwrite_phy(o_rlucs, lwup0)
1846       CALL histwrite_phy(o_rldcs, lwdn0)
[2366]1847
[2690]1848       IF (vars_defined) THEN
[1898]1849          zx_tmp_fi3d(1:klon,1:klev)=d_t(1:klon,1:klev)+ &
1850               d_t_dyn(1:klon,1:klev)
1851       ENDIF
1852       CALL histwrite_phy(o_tnt, zx_tmp_fi3d)
[2366]1853
[2690]1854       IF (vars_defined) THEN
[2194]1855          zx_tmp_fi3d(1:klon,1:klev)=d_t_swr(1:klon,1:klev)/pdtphys + &
1856               d_t_lwr(1:klon,1:klev)/pdtphys
[1898]1857       ENDIF
1858       CALL histwrite_phy(o_tntr, zx_tmp_fi3d)
[2690]1859       IF (vars_defined) THEN
[1898]1860          zx_tmp_fi3d(1:klon,1:klev)= (d_t_lsc(1:klon,1:klev)+ &
1861               d_t_eva(1:klon,1:klev)+ &
1862               d_t_vdf(1:klon,1:klev))/pdtphys
1863       ENDIF
1864       CALL histwrite_phy(o_tntscpbl, zx_tmp_fi3d)
[2690]1865       IF (vars_defined) THEN
[1898]1866          zx_tmp_fi3d(1:klon,1:klev)=d_qx(1:klon,1:klev,ivap)+ &
1867               d_q_dyn(1:klon,1:klev)
1868       ENDIF
1869       CALL histwrite_phy(o_tnhus, zx_tmp_fi3d)
[2690]1870       IF (vars_defined) THEN
[1898]1871          zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys+ &
1872               d_q_eva(1:klon,1:klev)/pdtphys
1873       ENDIF
1874       CALL histwrite_phy(o_tnhusscpbl, zx_tmp_fi3d)
1875       CALL histwrite_phy(o_evu, coefm(:,:,is_ave))
[2690]1876       IF (vars_defined) THEN
[1898]1877          zx_tmp_fi3d(1:klon,1:klev)=q_seri(1:klon,1:klev)+ &
1878               ql_seri(1:klon,1:klev)
1879       ENDIF
1880       CALL histwrite_phy(o_h2o, zx_tmp_fi3d)
[2690]1881       IF (iflag_con >= 3) THEN
1882          IF (vars_defined) THEN
[1813]1883             zx_tmp_fi3d(1:klon,1:klev)=-1 * (dnwd(1:klon,1:klev)+ &
1884                  dnwd0(1:klon,1:klev))
[1898]1885          ENDIF
1886          CALL histwrite_phy(o_mcd, zx_tmp_fi3d)
[2690]1887          IF (vars_defined) THEN
[1813]1888             zx_tmp_fi3d(1:klon,1:klev)=upwd(1:klon,1:klev) + &
1889                  dnwd(1:klon,1:klev)+ dnwd0(1:klon,1:klev)
[1898]1890          ENDIF
1891          CALL histwrite_phy(o_dmc, zx_tmp_fi3d)
[2690]1892       ELSE IF (iflag_con == 2) THEN
[1898]1893          CALL histwrite_phy(o_mcd,  pmfd)
1894          CALL histwrite_phy(o_dmc,  pmfu + pmfd)
[2690]1895       ENDIF
[1898]1896       CALL histwrite_phy(o_ref_liq, ref_liq)
1897       CALL histwrite_phy(o_ref_ice, ref_ice)
[2989]1898!
1899       IF (ok_4xCO2atm) THEN
[2690]1900          IF (vars_defined) zx_tmp_fi2d(:) = swupp(:,klevp1)*swradcorr(:)
[1898]1901          CALL histwrite_phy(o_rsut4co2, zx_tmp_fi2d)
[2690]1902          IF (vars_defined) zx_tmp_fi2d(:) = lwupp(:,klevp1)
[1898]1903          CALL histwrite_phy(o_rlut4co2, zx_tmp_fi2d)
[2690]1904          IF (vars_defined) zx_tmp_fi2d(:) = swup0p(:,klevp1)*swradcorr(:)
[1898]1905          CALL histwrite_phy(o_rsutcs4co2, zx_tmp_fi2d)
[2690]1906          IF (vars_defined) zx_tmp_fi2d(:) = lwup0p(:,klevp1)
[1898]1907          CALL histwrite_phy(o_rlutcs4co2, zx_tmp_fi2d)
[2366]1908          DO k=1, klevp1
1909            zx_tmp_fi3d1(:,k)=swupp(:,k)*swradcorr(:)
1910          ENDDO
1911          CALL histwrite_phy(o_rsu4co2, zx_tmp_fi3d1)
1912          DO k=1, klevp1
1913            zx_tmp_fi3d1(:,k)=swup0p(:,k)*swradcorr(:)
1914          ENDDO
1915          CALL histwrite_phy(o_rsucs4co2, zx_tmp_fi3d1)
1916          DO k=1, klevp1
1917            zx_tmp_fi3d1(:,k)=swdnp(:,k)*swradcorr(:)
1918          ENDDO
1919          CALL histwrite_phy(o_rsd4co2, zx_tmp_fi3d1)
1920          DO k=1, klevp1
1921            zx_tmp_fi3d1(:,k)=swdn0p(:,k)*swradcorr(:)
1922          ENDDO
1923          CALL histwrite_phy(o_rsdcs4co2, zx_tmp_fi3d1)
[1898]1924          CALL histwrite_phy(o_rlu4co2, lwupp)
1925          CALL histwrite_phy(o_rlucs4co2, lwup0p)
1926          CALL histwrite_phy(o_rld4co2, lwdnp)
1927          CALL histwrite_phy(o_rldcs4co2, lwdn0p)
[2989]1928       ENDIF !ok_4xCO2atm
[1828]1929!!!!!!!!!!!! Sorties niveaux de pression NMC !!!!!!!!!!!!!!!!!!!!
[2282]1930#ifdef CPP_IOIPSL
1931#ifndef CPP_XIOS
1932  IF (.NOT.ok_all_xml) THEN
1933       ! ATTENTION, LES ANCIENS HISTWRITE ONT ETES CONSERVES EN ATTENDANT MIEUX:
1934       ! Champs interpolles sur des niveaux de pression
1935       missing_val=missing_val_nf90
[2754]1936       DO iff=7, nfiles-1 !--OB: here we deal with files 7,8,9
[1828]1937
[1898]1938          CALL histwrite_phy(o_tnondef,tnondef(:,:,iff-6),iff)
1939          CALL histwrite_phy(o_ta,twriteSTD(:,:,iff-6),iff)
1940          CALL histwrite_phy(o_zg,phiwriteSTD(:,:,iff-6),iff)
1941          CALL histwrite_phy(o_hus,qwriteSTD(:,:,iff-6),iff)
1942          CALL histwrite_phy(o_hur,rhwriteSTD(:,:,iff-6),iff)
1943          CALL histwrite_phy(o_ua,uwriteSTD(:,:,iff-6),iff)
1944          CALL histwrite_phy(o_va,vwriteSTD(:,:,iff-6),iff)
1945          CALL histwrite_phy(o_wap,wwriteSTD(:,:,iff-6),iff)
[2690]1946          IF (vars_defined) THEN
[1898]1947             DO k=1, nlevSTD
1948                DO i=1, klon
[2690]1949                   IF (tnondef(i,k,iff-6).NE.missing_val) THEN
1950                      IF (freq_outNMC(iff-6).LT.0) THEN
[1915]1951                         freq_moyNMC(iff-6)=(mth_len*un_jour)/freq_calNMC(iff-6)
1952                      ELSE
1953                         freq_moyNMC(iff-6)=freq_outNMC(iff-6)/freq_calNMC(iff-6)
1954                      ENDIF
[1971]1955                      zx_tmp_fi3d_STD(i,k) = (100.*tnondef(i,k,iff-6))/freq_moyNMC(iff-6)
[1898]1956                   ELSE
[1971]1957                      zx_tmp_fi3d_STD(i,k) = missing_val
[1898]1958                   ENDIF
1959                ENDDO
1960             ENDDO
1961          ENDIF
[1971]1962          CALL histwrite_phy(o_psbg,zx_tmp_fi3d_STD,iff)
[2690]1963          IF (vars_defined) THEN
[1898]1964             DO k=1, nlevSTD
1965                DO i=1, klon
[2690]1966                   IF (O3sumSTD(i,k,iff-6).NE.missing_val) THEN
[1971]1967                      zx_tmp_fi3d_STD(i,k) = O3sumSTD(i,k,iff-6) * 1.e+9
[1898]1968                   ELSE
[1971]1969                      zx_tmp_fi3d_STD(i,k) = missing_val
[1898]1970                   ENDIF
1971                ENDDO
1972             ENDDO !k=1, nlevSTD
1973          ENDIF
[1971]1974          CALL histwrite_phy(o_tro3,zx_tmp_fi3d_STD,iff)
[2690]1975          IF (read_climoz == 2) THEN
1976             IF (vars_defined) THEN
[1898]1977                DO k=1, nlevSTD
1978                   DO i=1, klon
[2690]1979                      IF (O3daysumSTD(i,k,iff-6).NE.missing_val) THEN
[1971]1980                         zx_tmp_fi3d_STD(i,k) = O3daysumSTD(i,k,iff-6) * 1.e+9
[1898]1981                      ELSE
[1971]1982                         zx_tmp_fi3d_STD(i,k) = missing_val
[1898]1983                      ENDIF
1984                   ENDDO
1985                ENDDO !k=1, nlevSTD
1986             ENDIF
[1971]1987             CALL histwrite_phy(o_tro3_daylight,zx_tmp_fi3d_STD,iff)
[1898]1988          endif
1989          CALL histwrite_phy(o_uxv,uvsumSTD(:,:,iff-6),iff)
1990          CALL histwrite_phy(o_vxq,vqsumSTD(:,:,iff-6),iff)
1991          CALL histwrite_phy(o_vxT,vTsumSTD(:,:,iff-6),iff)
1992          CALL histwrite_phy(o_wxq,wqsumSTD(:,:,iff-6),iff)
1993          CALL histwrite_phy(o_vxphi,vphisumSTD(:,:,iff-6),iff)
1994          CALL histwrite_phy(o_wxT,wTsumSTD(:,:,iff-6),iff)
1995          CALL histwrite_phy(o_uxu,u2sumSTD(:,:,iff-6),iff)
1996          CALL histwrite_phy(o_vxv,v2sumSTD(:,:,iff-6),iff)
1997          CALL histwrite_phy(o_TxT,T2sumSTD(:,:,iff-6),iff)
1998       ENDDO !nfiles
[2282]1999  ENDIF
2000#endif
2001#endif
2002#ifdef CPP_XIOS
[2690]2003  IF (ok_all_xml) THEN
[2282]2004!      DO iff=7, nfiles
2005
2006!         CALL histwrite_phy(o_tnondef,tnondef(:,:,3))
2007          CALL histwrite_phy(o_ta,tlevSTD(:,:))
2008          CALL histwrite_phy(o_zg,philevSTD(:,:))
2009          CALL histwrite_phy(o_hus,qlevSTD(:,:))
2010          CALL histwrite_phy(o_hur,rhlevSTD(:,:))
2011          CALL histwrite_phy(o_ua,ulevSTD(:,:))
2012          CALL histwrite_phy(o_va,vlevSTD(:,:))
2013          CALL histwrite_phy(o_wap,wlevSTD(:,:))
[2690]2014!         IF (vars_defined) THEN
[2282]2015!            DO k=1, nlevSTD
2016!               DO i=1, klon
[2690]2017!                  IF (tnondef(i,k,3).NE.missing_val) THEN
2018!                     IF (freq_outNMC(iff-6).LT.0) THEN
[2282]2019!                        freq_moyNMC(iff-6)=(mth_len*un_jour)/freq_calNMC(iff-6)
2020!                     ELSE
2021!                        freq_moyNMC(iff-6)=freq_outNMC(iff-6)/freq_calNMC(iff-6)
2022!                     ENDIF
2023!                     zx_tmp_fi3d_STD(i,k) = (100.*tnondef(i,k,3))/freq_moyNMC(iff-6)
2024!                  ELSE
2025!                     zx_tmp_fi3d_STD(i,k) = missing_val
2026!                  ENDIF
2027!               ENDDO
2028!            ENDDO
2029!         ENDIF
2030!         CALL histwrite_phy(o_psbg,zx_tmp_fi3d_STD)
[2690]2031          IF (vars_defined) THEN
[2282]2032             DO k=1, nlevSTD
2033                DO i=1, klon
[2690]2034                   IF (O3STD(i,k).NE.missing_val) THEN
[2282]2035                      zx_tmp_fi3d_STD(i,k) = O3STD(i,k) * 1.e+9
2036                   ELSE
2037                      zx_tmp_fi3d_STD(i,k) = missing_val
2038                   ENDIF
2039                ENDDO
2040             ENDDO !k=1, nlevSTD
2041          ENDIF
2042          CALL histwrite_phy(o_tro3,zx_tmp_fi3d_STD)
[2690]2043          IF (read_climoz == 2) THEN
2044             IF (vars_defined) THEN
[2282]2045                DO k=1, nlevSTD
2046                   DO i=1, klon
[2690]2047                      IF (O3daySTD(i,k).NE.missing_val) THEN
[2282]2048                         zx_tmp_fi3d_STD(i,k) = O3daySTD(i,k) * 1.e+9
2049                      ELSE
2050                         zx_tmp_fi3d_STD(i,k) = missing_val
2051                      ENDIF
2052                   ENDDO
2053                ENDDO !k=1, nlevSTD
2054             ENDIF
2055             CALL histwrite_phy(o_tro3_daylight,zx_tmp_fi3d_STD)
[2690]2056          ENDIF
[2282]2057          CALL histwrite_phy(o_uxv,uvSTD(:,:))
2058          CALL histwrite_phy(o_vxq,vqSTD(:,:))
2059          CALL histwrite_phy(o_vxT,vTSTD(:,:))
2060          CALL histwrite_phy(o_wxq,wqSTD(:,:))
2061          CALL histwrite_phy(o_vxphi,vphiSTD(:,:))
2062          CALL histwrite_phy(o_wxT,wTSTD(:,:))
2063          CALL histwrite_phy(o_uxu,u2STD(:,:))
2064          CALL histwrite_phy(o_vxv,v2STD(:,:))
2065          CALL histwrite_phy(o_TxT,T2STD(:,:))
2066!      ENDDO !nfiles
2067  ENDIF
2068#endif
[1828]2069!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[2973]2070       IF (iflag_phytrac == 1 ) then
[2704]2071       IF (nqtot.GE.nqo+1) THEN
2072          DO iq=nqo+1, nqtot
[2690]2073            IF (type_trac == 'lmdz' .OR. type_trac == 'repr' .OR. type_trac == 'coag') THEN
[2704]2074             !--3D fields
[2284]2075             CALL histwrite_phy(o_trac(iq-nqo), tr_seri(:,:,iq-nqo))
[2086]2076             CALL histwrite_phy(o_dtr_vdf(iq-nqo),d_tr_cl(:,:,iq-nqo))
2077             CALL histwrite_phy(o_dtr_the(iq-nqo),d_tr_th(:,:,iq-nqo))
2078             CALL histwrite_phy(o_dtr_con(iq-nqo),d_tr_cv(:,:,iq-nqo))
2079             CALL histwrite_phy(o_dtr_lessi_impa(iq-nqo),d_tr_lessi_impa(:,:,iq-nqo))
2080             CALL histwrite_phy(o_dtr_lessi_nucl(iq-nqo),d_tr_lessi_nucl(:,:,iq-nqo))
2081             CALL histwrite_phy(o_dtr_insc(iq-nqo),d_tr_insc(:,:,iq-nqo))
2082             CALL histwrite_phy(o_dtr_bcscav(iq-nqo),d_tr_bcscav(:,:,iq-nqo))
2083             CALL histwrite_phy(o_dtr_evapls(iq-nqo),d_tr_evapls(:,:,iq-nqo))
2084             CALL histwrite_phy(o_dtr_ls(iq-nqo),d_tr_ls(:,:,iq-nqo))
2085             CALL histwrite_phy(o_dtr_trsp(iq-nqo),d_tr_trsp(:,:,iq-nqo))
2086             CALL histwrite_phy(o_dtr_sscav(iq-nqo),d_tr_sscav(:,:,iq-nqo))
2087             CALL histwrite_phy(o_dtr_sat(iq-nqo),d_tr_sat(:,:,iq-nqo))
2088             CALL histwrite_phy(o_dtr_uscav(iq-nqo),d_tr_uscav(:,:,iq-nqo))
[2704]2089             !--2D fields
2090             CALL histwrite_phy(o_dtr_dry(iq-nqo), flux_tr_dry(:,iq-nqo))
[1898]2091             zx_tmp_fi2d=0.
[2690]2092             IF (vars_defined) THEN
[1898]2093                DO k=1,klev
[2284]2094                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,iq-nqo)
[1898]2095                ENDDO
2096             ENDIF
[3125]2097#ifndef REPROBUS
[2086]2098             CALL histwrite_phy(o_trac_cum(iq-nqo), zx_tmp_fi2d)
[3125]2099#endif
[2690]2100            ENDIF
[1898]2101          ENDDO
2102       ENDIF
[3125]2103
2104       IF (type_trac == 'repr') THEN
2105#ifdef REPROBUS
2106           DO iq=1,nbnas
2107             CALL histwrite_phy(o_nas(iq), nas(:,:,iq))
2108           ENDDO
2109#endif
2110       ENDIF
2111
[2973]2112       ENDIF   !(iflag_phytrac==1)
[1813]2113
[2973]2114
[2690]2115       IF (.NOT.vars_defined) THEN
[1898]2116          !$OMP MASTER
[2097]2117#ifndef CPP_IOIPSL_NO_OUTPUT
[1898]2118          DO iff=1,nfiles
2119             IF (clef_files(iff)) THEN
2120                CALL histend(nid_files(iff))
2121                ndex2d = 0
2122                ndex3d = 0
2123             ENDIF ! clef_files
2124          ENDDO !  iff
[1852]2125#endif
[1825]2126#ifdef CPP_XIOS
[1898]2127          !On finalise l'initialisation:
2128          CALL wxios_closedef()
[1825]2129#endif
[1898]2130          !$OMP END MASTER
2131          !$OMP BARRIER
2132          vars_defined = .TRUE.
[1821]2133
[2704]2134       ENDIF !--.NOT.vars_defined
2135
[2690]2136    ENDDO
[1821]2137
[2690]2138    IF (vars_defined) THEN
[1898]2139       ! On synchronise les fichiers pour IOIPSL
[2097]2140#ifndef CPP_IOIPSL_NO_OUTPUT
[1898]2141       !$OMP MASTER
2142       DO iff=1,nfiles
[1798]2143          IF (ok_sync .AND. clef_files(iff)) THEN
[1898]2144             CALL histsync(nid_files(iff))
[1798]2145          ENDIF
[1898]2146       END DO
2147       !$OMP END MASTER
[1852]2148#endif
[1798]2149    ENDIF
2150
[1898]2151  END SUBROUTINE phys_output_write
[1798]2152
[1898]2153END MODULE phys_output_write_mod
Note: See TracBrowser for help on using the repository browser.