source: LMDZ5/trunk/libf/phylmd/phys_output_mod.F90 @ 1742

Last change on this file since 1742 was 1742, checked in by idelkadi, 11 years ago

1- Inclusion des developpements de la these de Romain Pilon sur le
lessivage des aerosols :

a/ par les pluies convectives (modifs cv30_routines et cv3_routines pour

sortir les champs nécessaires au calcul off-line ; modif cvltr)

b/ par les pluies stratiformes (modifs phytrac et introduction

lsc_scav).

2- Choix entre plusieurs schemas pour les pluies stratiformes, commande
par iflag_lscav.

3- Quelques corrections dans la convection "Nouvelle Physique" pour
assurer la conservation des traceurs (cv3p1_mixing et cva_driver) (travail
de Robin Locatelli).

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 114.0 KB
Line 
1! $Id: phys_output_mod.F90 1742 2013-04-05 11:49:35Z idelkadi $
2!
3! Abderrahmane 12 2007
4!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
5!!! Ecreture des Sorties du modele dans les fichiers Netcdf :
6! histmth.nc : moyennes mensuelles
7! histday.nc : moyennes journalieres
8! histhf.nc  : moyennes toutes les 3 heures
9! histins.nc : valeurs instantanees
10!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
11
12MODULE phys_output_mod
13
14  IMPLICIT NONE
15
16  private histdef2d, histdef3d, conf_physoutputs
17
18
19  integer, parameter                           :: nfiles = 6
20  logical, dimension(nfiles), save             :: clef_files
21  logical, dimension(nfiles), save             :: clef_stations
22  integer, dimension(nfiles), save             :: lev_files
23  integer, dimension(nfiles), save             :: nid_files
24  integer, dimension(nfiles), save  :: nnid_files
25!!$OMP THREADPRIVATE(clef_files, clef_stations, lev_files,nid_files,nnid_files)
26  integer, dimension(nfiles), private, save :: nnhorim
27
28  integer, dimension(nfiles), private, save :: nhorim, nvertm
29  integer, dimension(nfiles), private, save :: nvertap, nvertbp, nvertAlt
30  !   integer, dimension(nfiles), private, save :: nvertp0
31  real, dimension(nfiles), private, save                :: zoutm
32  real,                    private, save                :: zdtime
33  CHARACTER(len=20), dimension(nfiles), private, save   :: type_ecri
34  !$OMP THREADPRIVATE(nhorim, nvertm, zoutm,zdtime,type_ecri)
35 ! swaero_diag : flag indicates if it is necessary to do calculation for some aerosol diagnostics
36  logical, save                                :: swaero_diag=.FALSE.
37
38
39  !   integer, save                     :: nid_hf3d
40
41!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
42  !! Definition pour chaque variable du niveau d ecriture dans chaque fichier
43!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!/ histmth, histday, histhf, histins /),'!!!!!!!!!!!!
44!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
45
46  integer, private:: levmin(nfiles) = 1
47  integer, private:: levmax(nfiles)
48
49  TYPE ctrl_out
50     integer,dimension(6) :: flag
51     character(len=20)     :: name
52  END TYPE ctrl_out
53
54!!! Comosentes de la coordonnee sigma-hybride
55!!! Ap et Bp
56  type(ctrl_out),save :: o_Ahyb         = ctrl_out((/ 1, 1, 1, 1, 1, 1 /), 'Ap')
57  type(ctrl_out),save :: o_Bhyb         = ctrl_out((/ 1, 1, 1, 1, 1, 1 /), 'Bp')
58  type(ctrl_out),save :: o_Alt          = ctrl_out((/ 1, 1, 1, 1, 1, 1 /), 'Alt')
59
60!!! 1D
61  type(ctrl_out),save :: o_phis         = ctrl_out((/ 1, 1, 10, 5, 1, 1 /), 'phis')
62  type(ctrl_out),save :: o_aire         = ctrl_out((/ 1, 1, 10,  10, 1, 1 /),'aire')
63  type(ctrl_out),save :: o_contfracATM  = ctrl_out((/ 10, 1,  1, 10, 10, 10 /),'contfracATM')
64  type(ctrl_out),save :: o_contfracOR   = ctrl_out((/ 10, 1,  1, 10, 10, 10 /),'contfracOR')
65  type(ctrl_out),save :: o_aireTER      = ctrl_out((/ 10, 10, 1, 10, 10, 10 /),'aireTER')
66
67!!! 2D
68  type(ctrl_out),save :: o_flat         = ctrl_out((/ 5, 1, 10, 10, 5, 10 /),'flat')
69  type(ctrl_out),save :: o_slp          = ctrl_out((/ 1, 1, 1, 10, 10, 10 /),'slp')
70  type(ctrl_out),save :: o_tsol         = ctrl_out((/ 1, 1, 1, 5, 10, 10 /),'tsol')
71  type(ctrl_out),save :: o_t2m          = ctrl_out((/ 1, 1, 1, 5, 10, 10 /),'t2m')
72  type(ctrl_out),save :: o_t2m_min      = ctrl_out((/ 1, 1, 10, 10, 10, 10 /),'t2m_min')
73  type(ctrl_out),save :: o_t2m_max      = ctrl_out((/ 1, 1, 10, 10, 10, 10 /),'t2m_max')
74  type(ctrl_out),save,dimension(4) :: o_t2m_srf      = (/ ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'t2m_ter'), &
75       ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'t2m_lic'), &
76       ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'t2m_oce'), &
77       ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'t2m_sic') /)
78
79  type(ctrl_out),save :: o_wind10m      = ctrl_out((/ 1, 1, 1, 10, 10, 10 /),'wind10m')
80  type(ctrl_out),save :: o_wind10max    = ctrl_out((/ 10, 1, 10, 10, 10, 10 /),'wind10max')
81  type(ctrl_out),save :: o_sicf         = ctrl_out((/ 1, 1, 10, 10, 10, 10 /),'sicf')
82  type(ctrl_out),save :: o_q2m          = ctrl_out((/ 1, 1, 1, 5, 10, 10 /),'q2m')
83  type(ctrl_out),save :: o_ustar        = ctrl_out((/ 1, 1, 1, 5, 10, 10 /),'ustar')
84  type(ctrl_out),save :: o_u10m         = ctrl_out((/ 1, 1, 1, 5, 10, 10 /),'u10m')
85  type(ctrl_out),save :: o_v10m         = ctrl_out((/ 1, 1, 1, 5, 10, 10 /),'v10m')
86  type(ctrl_out),save :: o_psol         = ctrl_out((/ 1, 1, 1, 5, 10, 10 /),'psol')
87  type(ctrl_out),save :: o_qsurf        = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'qsurf')
88
89  type(ctrl_out),save,dimension(4) :: o_ustar_srf     = (/ ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'ustar_ter'), &
90       ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'ustar_lic'), &
91       ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'ustar_oce'), &
92       ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'ustar_sic') /)
93  type(ctrl_out),save,dimension(4) :: o_u10m_srf     = (/ ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'u10m_ter'), &
94       ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'u10m_lic'), &
95       ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'u10m_oce'), &
96       ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'u10m_sic') /)
97
98  type(ctrl_out),save,dimension(4) :: o_v10m_srf     = (/ ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'v10m_ter'), &
99       ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'v10m_lic'), &
100       ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'v10m_oce'), &
101       ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'v10m_sic') /)
102
103  type(ctrl_out),save :: o_qsol         = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'qsol')
104
105  type(ctrl_out),save :: o_ndayrain     = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'ndayrain')
106  type(ctrl_out),save :: o_precip       = ctrl_out((/ 1, 1, 1, 10, 5, 10 /),'precip')
107  type(ctrl_out),save :: o_plul         = ctrl_out((/ 1, 1, 1, 10, 10, 10 /),'plul')
108
109  type(ctrl_out),save :: o_pluc         = ctrl_out((/ 1, 1, 1, 10, 5, 10 /),'pluc')
110  type(ctrl_out),save :: o_snow         = ctrl_out((/ 1, 1, 10, 10, 5, 10 /),'snow')
111  type(ctrl_out),save :: o_evap         = ctrl_out((/ 1, 1, 10, 10, 10, 10 /),'evap')
112  type(ctrl_out),save,dimension(4) :: o_evap_srf     = (/ ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'evap_ter'), &
113       ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'evap_lic'), &
114       ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'evap_oce'), &
115       ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'evap_sic') /)
116  type(ctrl_out),save :: o_msnow       = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'msnow')
117  type(ctrl_out),save :: o_fsnow       = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'fsnow')
118
119  type(ctrl_out),save :: o_tops         = ctrl_out((/ 1, 1, 10, 10, 10, 10 /),'tops')
120  type(ctrl_out),save :: o_tops0        = ctrl_out((/ 1, 5, 10, 10, 10, 10 /),'tops0')
121  type(ctrl_out),save :: o_topl         = ctrl_out((/ 1, 1, 10, 5, 10, 10 /),'topl')
122  type(ctrl_out),save :: o_topl0        = ctrl_out((/ 1, 5, 10, 10, 10, 10 /),'topl0')
123  type(ctrl_out),save :: o_SWupTOA      = ctrl_out((/ 1, 4, 10, 10, 10, 10 /),'SWupTOA')
124  type(ctrl_out),save :: o_SWupTOAclr   = ctrl_out((/ 1, 4, 10, 10, 10, 10 /),'SWupTOAclr')
125  type(ctrl_out),save :: o_SWdnTOA      = ctrl_out((/ 1, 4, 10, 10, 10, 10 /),'SWdnTOA')
126  type(ctrl_out),save :: o_SWdnTOAclr   = ctrl_out((/ 1, 4, 10, 10, 10, 10 /),'SWdnTOAclr')
127  type(ctrl_out),save :: o_nettop       = ctrl_out((/ 1, 4, 10, 10, 10, 10 /),'nettop')
128
129  type(ctrl_out),save :: o_SWup200      = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'SWup200')
130  type(ctrl_out),save :: o_SWup200clr   = ctrl_out((/ 10, 1, 10, 10, 10, 10 /),'SWup200clr')
131  type(ctrl_out),save :: o_SWdn200      = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'SWdn200')
132  type(ctrl_out),save :: o_SWdn200clr   = ctrl_out((/ 10, 1, 10, 10, 10, 10 /),'SWdn200clr')
133
134  ! arajouter
135  !  type(ctrl_out),save :: o_LWupTOA     = ctrl_out((/ 1, 4, 10, 10, 10, 10 /),'LWupTOA')
136  !  type(ctrl_out),save :: o_LWupTOAclr  = ctrl_out((/ 1, 4, 10, 10, 10, 10 /),'LWupTOAclr')
137  !  type(ctrl_out),save :: o_LWdnTOA     = ctrl_out((/ 1, 4, 10, 10, 10, 10 /),'LWdnTOA')
138  !  type(ctrl_out),save :: o_LWdnTOAclr  = ctrl_out((/ 1, 4, 10, 10, 10, 10 /),'LWdnTOAclr')
139
140  type(ctrl_out),save :: o_LWup200      = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'LWup200')
141  type(ctrl_out),save :: o_LWup200clr   = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'LWup200clr')
142  type(ctrl_out),save :: o_LWdn200      = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'LWdn200')
143  type(ctrl_out),save :: o_LWdn200clr   = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'LWdn200clr')
144  type(ctrl_out),save :: o_sols         = ctrl_out((/ 1, 1, 10, 10, 10, 10 /),'sols')
145  type(ctrl_out),save :: o_sols0        = ctrl_out((/ 1, 5, 10, 10, 10, 10 /),'sols0')
146  type(ctrl_out),save :: o_soll         = ctrl_out((/ 1, 1, 10, 10, 10, 10 /),'soll')
147  type(ctrl_out),save :: o_soll0        = ctrl_out((/ 1, 5, 10, 10, 10, 10 /),'soll0')
148  type(ctrl_out),save :: o_radsol       = ctrl_out((/ 1, 7, 10, 10, 10, 10 /),'radsol')
149  type(ctrl_out),save :: o_SWupSFC      = ctrl_out((/ 1, 4, 10, 10, 5, 10 /),'SWupSFC')
150  type(ctrl_out),save :: o_SWupSFCclr   = ctrl_out((/ 1, 4, 10, 10, 5, 10 /),'SWupSFCclr')
151  type(ctrl_out),save :: o_SWdnSFC      = ctrl_out((/ 1, 1, 10, 10, 5, 10 /),'SWdnSFC')
152  type(ctrl_out),save :: o_SWdnSFCclr   = ctrl_out((/ 1, 4, 10, 10, 5, 10 /),'SWdnSFCclr')
153  type(ctrl_out),save :: o_LWupSFC      = ctrl_out((/ 1, 4, 10, 10, 5, 10 /),'LWupSFC')
154  type(ctrl_out),save :: o_LWupSFCclr   = ctrl_out((/ 1, 4, 10, 10, 5, 10 /),'LWupSFCclr')
155  type(ctrl_out),save :: o_LWdnSFC      = ctrl_out((/ 1, 4, 10, 10, 5, 10 /),'LWdnSFC')
156  type(ctrl_out),save :: o_LWdnSFCclr   = ctrl_out((/ 1, 4, 10, 10, 5, 10 /),'LWdnSFCclr')
157  type(ctrl_out),save :: o_bils         = ctrl_out((/ 1, 2, 10, 5, 10, 10 /),'bils')
158  type(ctrl_out),save :: o_sens         = ctrl_out((/ 1, 1, 10, 10, 5, 10 /),'sens')
159  type(ctrl_out),save :: o_fder         = ctrl_out((/ 1, 2, 10, 10, 10, 10 /),'fder')
160  type(ctrl_out),save :: o_ffonte       = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'ffonte')
161  type(ctrl_out),save :: o_fqcalving    = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'fqcalving')
162  type(ctrl_out),save :: o_fqfonte      = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'fqfonte')
163
164  type(ctrl_out),save :: o_taux         = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'taux')
165  type(ctrl_out),save :: o_tauy         = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'tauy')
166  type(ctrl_out),save,dimension(4) :: o_taux_srf     = (/ ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'taux_ter'), &
167       ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'taux_lic'), &
168       ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'taux_oce'), &
169       ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'taux_sic') /)
170
171  type(ctrl_out),save,dimension(4) :: o_tauy_srf     = (/ ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'tauy_ter'), &
172       ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'tauy_lic'), &
173       ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'tauy_oce'), &
174       ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'tauy_sic') /)
175
176
177  type(ctrl_out),save,dimension(4) :: o_pourc_srf    = (/ ctrl_out((/ 1, 7, 10, 10, 10, 10 /),'pourc_ter'), &
178       ctrl_out((/ 1, 7, 10, 10, 10, 10 /),'pourc_lic'), &
179       ctrl_out((/ 1, 7, 10, 10, 10, 10 /),'pourc_oce'), &
180       ctrl_out((/ 1, 7, 10, 10, 10, 10 /),'pourc_sic') /)     
181
182  type(ctrl_out),save,dimension(4) :: o_fract_srf    = (/ ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'fract_ter'), &
183       ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'fract_lic'), &
184       ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'fract_oce'), &
185       ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'fract_sic') /)
186
187  type(ctrl_out),save,dimension(4) :: o_tsol_srf     = (/ ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'tsol_ter'), &
188       ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'tsol_lic'), &
189       ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'tsol_oce'), &
190       ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'tsol_sic') /)
191
192  type(ctrl_out),save,dimension(4) :: o_evappot_srf  = (/ ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'evappot_ter'), &
193       ctrl_out((/ 4, 6, 10, 10, 10, 10 /),'evappot_lic'), &
194       ctrl_out((/ 4, 6, 10, 10, 10, 10 /),'evappot_oce'), &
195       ctrl_out((/ 4, 6, 10, 10, 10, 10 /),'evappot_sic') /)
196
197  type(ctrl_out),save,dimension(4) :: o_sens_srf     = (/ ctrl_out((/ 1, 6, 10, 7, 10, 10 /),'sens_ter'), &
198       ctrl_out((/ 1, 6, 10, 7, 10, 10 /),'sens_lic'), &
199       ctrl_out((/ 1, 6, 10, 7, 10, 10 /),'sens_oce'), &
200       ctrl_out((/ 1, 6, 10, 7, 10, 10 /),'sens_sic') /)
201
202  type(ctrl_out),save,dimension(4) :: o_lat_srf      = (/ ctrl_out((/ 1, 6, 10, 7, 10, 10 /),'lat_ter'), &
203       ctrl_out((/ 1, 6, 10, 7, 10, 10 /),'lat_lic'), &
204       ctrl_out((/ 1, 6, 10, 7, 10, 10 /),'lat_oce'), &
205       ctrl_out((/ 1, 6, 10, 7, 10, 10 /),'lat_sic') /)
206
207  type(ctrl_out),save,dimension(4) :: o_flw_srf      = (/ ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'flw_ter'), &
208       ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'flw_lic'), &
209       ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'flw_oce'), &
210       ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'flw_sic') /)
211
212  type(ctrl_out),save,dimension(4) :: o_fsw_srf      = (/ ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'fsw_ter'), &
213       ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'fsw_lic'), &
214       ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'fsw_oce'), &
215       ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'fsw_sic') /)
216
217  type(ctrl_out),save,dimension(4) :: o_wbils_srf    = (/ ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'wbils_ter'), &
218       ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'wbils_lic'), &
219       ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'wbils_oce'), &
220       ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'wbils_sic') /)
221
222  type(ctrl_out),save,dimension(4) :: o_wbilo_srf    = (/ ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'wbilo_ter'), &
223       ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'wbilo_lic'), &
224       ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'wbilo_oce'), &
225       ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'wbilo_sic') /)
226
227
228  type(ctrl_out),save :: o_cdrm         = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'cdrm')
229  type(ctrl_out),save :: o_cdrh         = ctrl_out((/ 1, 10, 10, 7, 10, 10 /),'cdrh')
230  type(ctrl_out),save :: o_cldl         = ctrl_out((/ 1, 1, 10, 10, 10, 10 /),'cldl')
231  type(ctrl_out),save :: o_cldm         = ctrl_out((/ 1, 1, 10, 10, 10, 10 /),'cldm')
232  type(ctrl_out),save :: o_cldh         = ctrl_out((/ 1, 1, 10, 10, 10, 10 /),'cldh')
233  type(ctrl_out),save :: o_cldt         = ctrl_out((/ 1, 1, 2, 10, 5, 10 /),'cldt')
234  type(ctrl_out),save :: o_cldq         = ctrl_out((/ 1, 1, 10, 10, 10, 10 /),'cldq')
235  type(ctrl_out),save :: o_lwp          = ctrl_out((/ 1, 5, 10, 10, 10, 10 /),'lwp')
236  type(ctrl_out),save :: o_iwp          = ctrl_out((/ 1, 5, 10, 10, 10, 10 /),'iwp')
237  type(ctrl_out),save :: o_ue           = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'ue')
238  type(ctrl_out),save :: o_ve           = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'ve')
239  type(ctrl_out),save :: o_uq           = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'uq')
240  type(ctrl_out),save :: o_vq           = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'vq')
241
242  type(ctrl_out),save :: o_cape         = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'cape')
243  type(ctrl_out),save :: o_pbase        = ctrl_out((/ 1, 5, 10, 10, 10, 10 /),'pbase')
244  type(ctrl_out),save :: o_ptop         = ctrl_out((/ 1, 5, 10, 10, 10, 10 /),'ptop')
245  type(ctrl_out),save :: o_fbase        = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'fbase')
246  type(ctrl_out),save :: o_plcl        = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'plcl')
247  type(ctrl_out),save :: o_plfc        = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'plfc')
248  type(ctrl_out),save :: o_wbeff        = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'wbeff')
249  type(ctrl_out),save :: o_prw          = ctrl_out((/ 1, 1, 10, 10, 10, 10 /),'prw')
250
251  type(ctrl_out),save :: o_s_pblh       = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'s_pblh')
252  type(ctrl_out),save :: o_s_pblt       = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'s_pblt')
253  type(ctrl_out),save :: o_s_lcl        = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'s_lcl')
254  type(ctrl_out),save :: o_s_therm      = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'s_therm')
255  !IM : Les champs suivants (s_capCL, s_oliqCL, s_cteiCL, s_trmb1, s_trmb2, s_trmb3) ne sont pas definis dans HBTM.F
256  ! type(ctrl_out),save :: o_s_capCL      = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'s_capCL')
257  ! type(ctrl_out),save :: o_s_oliqCL     = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'s_oliqCL')
258  ! type(ctrl_out),save :: o_s_cteiCL     = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'s_cteiCL')
259  ! type(ctrl_out),save :: o_s_trmb1      = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'s_trmb1')
260  ! type(ctrl_out),save :: o_s_trmb2      = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'s_trmb2')
261  ! type(ctrl_out),save :: o_s_trmb3      = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'s_trmb3')
262
263  type(ctrl_out),save :: o_slab_bils    = ctrl_out((/ 1, 1, 10, 10, 10, 10 /),'slab_bils_oce')
264
265  type(ctrl_out),save :: o_ale_bl       = ctrl_out((/ 1, 1, 1, 10, 10, 10 /),'ale_bl')
266  type(ctrl_out),save :: o_alp_bl       = ctrl_out((/ 1, 1, 1, 10, 10, 10 /),'alp_bl')
267  type(ctrl_out),save :: o_ale_wk       = ctrl_out((/ 1, 1, 1, 10, 10, 10 /),'ale_wk')
268  type(ctrl_out),save :: o_alp_wk       = ctrl_out((/ 1, 1, 1, 10, 10, 10 /),'alp_wk')
269
270  type(ctrl_out),save :: o_ale          = ctrl_out((/ 1, 1, 1, 10, 10, 10 /),'ale')
271  type(ctrl_out),save :: o_alp          = ctrl_out((/ 1, 1, 1, 10, 10, 10 /),'alp')
272  type(ctrl_out),save :: o_cin          = ctrl_out((/ 1, 1, 1, 10, 10, 10 /),'cin')
273  type(ctrl_out),save :: o_wape         = ctrl_out((/ 1, 1, 1, 10, 10, 10 /),'wape')
274
275!!! nrlmd le 10/04/2012
276
277!-------Spectre de thermiques de type 2 au LCL
278  type(ctrl_out),save :: o_n2                = ctrl_out((/ 1, 1, 1, 6, 10, 10 /),'n2')
279  type(ctrl_out),save :: o_s2                = ctrl_out((/ 1, 1, 1, 6, 10, 10 /),'s2')
280                                                                             
281!-------Déclenchement stochastique                                           
282  type(ctrl_out),save :: o_proba_notrig      = ctrl_out((/ 1, 1, 1, 6, 10, 10 /),'proba_notrig')
283  type(ctrl_out),save :: o_random_notrig     = ctrl_out((/ 1, 1, 1, 6, 10, 10 /),'random_notrig')
284  type(ctrl_out),save :: o_ale_bl_stat       = ctrl_out((/ 1, 1, 1, 6, 10, 10 /),'ale_bl_stat')
285  type(ctrl_out),save :: o_ale_bl_trig       = ctrl_out((/ 1, 1, 1, 6, 10, 10 /),'ale_bl_trig')
286
287!-------Fermeture statistique
288  type(ctrl_out),save :: o_alp_bl_det        = ctrl_out((/ 1, 1, 1, 10, 10, 10 /),'alp_bl_det')
289  type(ctrl_out),save :: o_alp_bl_fluct_m    = ctrl_out((/ 1, 1, 1, 10, 10, 10 /),'alp_bl_fluct_m')
290  type(ctrl_out),save :: o_alp_bl_fluct_tke  = ctrl_out((/ 1, 1, 1, 10, 10, 10 /),'alp_bl_fluct_tke')
291  type(ctrl_out),save :: o_alp_bl_conv       = ctrl_out((/ 1, 1, 1, 10, 10, 10 /),'alp_bl_conv')
292  type(ctrl_out),save :: o_alp_bl_stat       = ctrl_out((/ 1, 1, 1, 10, 10, 10 /),'alp_bl_stat')
293
294!!! fin nrlmd le 10/04/2012
295
296  ! Champs interpolles sur des niveaux de pression ??? a faire correctement
297
298  type(ctrl_out),save,dimension(7) :: o_uSTDlevs     = (/ ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'u850'), &
299       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'u700'), &
300       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'u500'), &
301       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'u200'), &
302       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'u100'), &
303       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'u50'), &
304       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'u10') /)
305
306
307  type(ctrl_out),save,dimension(7) :: o_vSTDlevs     = (/ ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'v850'), &
308       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'v700'), &
309       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'v500'), &
310       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'v200'), &
311       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'v100'), &
312       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'v50'), &
313       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'v10') /)
314
315  type(ctrl_out),save,dimension(7) :: o_wSTDlevs     = (/ ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'w850'), &
316       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'w700'), &
317       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'w500'), &
318       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'w200'), &
319       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'w100'), &
320       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'w50'), &
321       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'w10') /)
322
323  type(ctrl_out),save,dimension(7) :: o_tSTDlevs     = (/ ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'t850'), &
324       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'t700'), &
325       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'t500'), &
326       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'t200'), &
327       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'t100'), &
328       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'t50'), &
329       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'t10') /)
330
331  type(ctrl_out),save,dimension(7) :: o_qSTDlevs     = (/ ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'q850'), &
332       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'q700'), &
333       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'q500'), &
334       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'q200'), &
335       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'q100'), &
336       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'q50'), &
337       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'q10') /)
338
339  type(ctrl_out),save,dimension(7) :: o_zSTDlevs   = (/ ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'z850'), &
340       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'z700'), &
341       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'z500'), &
342       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'z200'), &
343       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'z100'), &
344       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'z50'), &
345       ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'z10') /)
346
347
348  type(ctrl_out),save :: o_t_oce_sic    = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'t_oce_sic')
349
350  type(ctrl_out),save :: o_weakinv      = ctrl_out((/ 10, 1, 10, 10, 10, 10 /),'weakinv')
351  type(ctrl_out),save :: o_dthmin       = ctrl_out((/ 10, 1, 10, 10, 10, 10 /),'dthmin')
352  type(ctrl_out),save,dimension(4) :: o_u10_srf      = (/ ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'u10_ter'), &
353       ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'u10_lic'), &
354       ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'u10_oce'), &
355       ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'u10_sic') /)
356
357  type(ctrl_out),save,dimension(4) :: o_v10_srf      = (/ ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'v10_ter'), &
358       ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'v10_lic'), &
359       ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'v10_oce'), &
360       ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'v10_sic') /)
361
362  type(ctrl_out),save :: o_cldtau       = ctrl_out((/ 10, 5, 10, 10, 10, 10 /),'cldtau')                     
363  type(ctrl_out),save :: o_cldemi       = ctrl_out((/ 10, 5, 10, 10, 10, 10 /),'cldemi')
364  type(ctrl_out),save :: o_rh2m         = ctrl_out((/ 5, 5, 10, 10, 10, 10 /),'rh2m')
365  type(ctrl_out),save :: o_rh2m_min     = ctrl_out((/ 10, 5, 10, 10, 10, 10 /),'rh2m_min')
366  type(ctrl_out),save :: o_rh2m_max     = ctrl_out((/ 10, 5, 10, 10, 10, 10 /),'rh2m_max')
367  type(ctrl_out),save :: o_qsat2m       = ctrl_out((/ 10, 5, 10, 10, 10, 10 /),'qsat2m')
368  type(ctrl_out),save :: o_tpot         = ctrl_out((/ 10, 5, 10, 10, 10, 10 /),'tpot')
369  type(ctrl_out),save :: o_tpote        = ctrl_out((/ 10, 5, 10, 10, 10, 10 /),'tpote')
370  type(ctrl_out),save :: o_tke          = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'tke ')
371  type(ctrl_out),save :: o_tke_max      = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'tke_max')
372
373  type(ctrl_out),save,dimension(4) :: o_tke_srf      = (/ ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'tke_ter'), &
374       ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'tke_lic'), &
375       ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'tke_oce'), &
376       ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'tke_sic') /)
377
378  type(ctrl_out),save,dimension(4) :: o_tke_max_srf  = (/ ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'tke_max_ter'), &
379       ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'tke_max_lic'), &
380       ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'tke_max_oce'), &
381       ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'tke_max_sic') /)
382
383  type(ctrl_out),save :: o_kz           = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'kz')
384  type(ctrl_out),save :: o_kz_max       = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'kz_max')
385  type(ctrl_out),save :: o_SWnetOR      = ctrl_out((/ 10, 10, 2, 10, 10, 10 /),'SWnetOR')
386  type(ctrl_out),save :: o_SWdownOR     = ctrl_out((/ 10, 10, 2, 10, 10, 10 /),'SWdownOR')
387  type(ctrl_out),save :: o_LWdownOR     = ctrl_out((/ 10, 10, 2, 10, 10, 10 /),'LWdownOR')
388
389  type(ctrl_out),save :: o_snowl        = ctrl_out((/ 10, 1, 10, 10, 10, 10 /),'snowl')
390  type(ctrl_out),save :: o_cape_max     = ctrl_out((/ 10, 1, 10, 10, 10, 10 /),'cape_max')
391  type(ctrl_out),save :: o_solldown     = ctrl_out((/ 10, 1, 10, 10, 10, 10 /),'solldown')
392
393  type(ctrl_out),save :: o_dtsvdfo      = ctrl_out((/ 10, 10, 10, 10, 10, 10 /),'dtsvdfo')
394  type(ctrl_out),save :: o_dtsvdft      = ctrl_out((/ 10, 10, 10, 10, 10, 10 /),'dtsvdft')
395  type(ctrl_out),save :: o_dtsvdfg      = ctrl_out((/ 10, 10, 10, 10, 10, 10 /),'dtsvdfg')
396  type(ctrl_out),save :: o_dtsvdfi      = ctrl_out((/ 10, 10, 10, 10, 10, 10 /),'dtsvdfi')
397  type(ctrl_out),save :: o_rugs         = ctrl_out((/ 10, 10, 10, 10, 10, 10 /),'rugs')
398
399  type(ctrl_out),save :: o_topswad      = ctrl_out((/ 2, 10, 10, 10, 10, 10 /),'topswad')
400  type(ctrl_out),save :: o_topswad0     = ctrl_out((/ 2, 10, 10, 10, 10, 10 /),'topswad0')
401  type(ctrl_out),save :: o_topswai      = ctrl_out((/ 2, 10, 10, 10, 10, 10 /),'topswai')
402  type(ctrl_out),save :: o_solswad      = ctrl_out((/ 2, 10, 10, 10, 10, 10 /),'solswad')
403  type(ctrl_out),save :: o_solswad0     = ctrl_out((/ 2, 10, 10, 10, 10, 10 /),'solswad0')
404  type(ctrl_out),save :: o_solswai      = ctrl_out((/ 2, 10, 10, 10, 10, 10 /),'solswai')
405
406  type(ctrl_out),save,dimension(10) :: o_tausumaero  = (/ ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_ASBCM'), &
407       ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_ASPOMM'), &
408       ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_ASSO4M'), &
409       ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_CSSO4M'), &
410       ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_SSSSM'), &
411       ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_ASSSM'), &
412       ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_CSSSM'), &
413       ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_CIDUSTM'), &
414       ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_AIBCM'), &
415       ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_AIPOMM') /)
416
417  type(ctrl_out),save :: o_od550aer     = ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'od550aer')
418  type(ctrl_out),save :: o_od865aer     = ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'od865aer')
419  type(ctrl_out),save :: o_absvisaer    = ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'absvisaer')
420  type(ctrl_out),save :: o_od550lt1aer  = ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'od550lt1aer')
421
422  type(ctrl_out),save :: o_sconcso4     = ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'sconcso4')
423  type(ctrl_out),save :: o_sconcoa      = ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'sconcoa')
424  type(ctrl_out),save :: o_sconcbc      = ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'sconcbc')
425  type(ctrl_out),save :: o_sconcss      = ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'sconcss')
426  type(ctrl_out),save :: o_sconcdust    = ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'sconcdust')
427  type(ctrl_out),save :: o_concso4      = ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'concso4')
428  type(ctrl_out),save :: o_concoa       = ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'concoa')
429  type(ctrl_out),save :: o_concbc       = ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'concbc')
430  type(ctrl_out),save :: o_concss       = ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'concss')
431  type(ctrl_out),save :: o_concdust     = ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'concdust')
432  type(ctrl_out),save :: o_loadso4      = ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'loadso4')
433  type(ctrl_out),save :: o_loadoa       = ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'loadoa')
434  type(ctrl_out),save :: o_loadbc       = ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'loadbc')
435  type(ctrl_out),save :: o_loadss       = ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'loadss')
436  type(ctrl_out),save :: o_loaddust     = ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'loaddust')
437
438  type(ctrl_out),save :: o_swtoaas_nat  = ctrl_out((/ 4, 6, 10, 10, 10, 10 /),'swtoaas_nat')
439  type(ctrl_out),save :: o_swsrfas_nat  = ctrl_out((/ 4, 6, 10, 10, 10, 10 /),'swsrfas_nat')
440  type(ctrl_out),save :: o_swtoacs_nat  = ctrl_out((/ 4, 6, 10, 10, 10, 10 /),'swtoacs_nat')
441  type(ctrl_out),save :: o_swsrfcs_nat  = ctrl_out((/ 4, 6, 10, 10, 10, 10 /),'swsrfcs_nat')
442
443  type(ctrl_out),save :: o_swtoaas_ant  = ctrl_out((/ 4, 6, 10, 10, 10, 10 /),'swtoaas_ant')
444  type(ctrl_out),save :: o_swsrfas_ant  = ctrl_out((/ 4, 6, 10, 10, 10, 10 /),'swsrfas_ant')
445  type(ctrl_out),save :: o_swtoacs_ant  = ctrl_out((/ 4, 6, 10, 10, 10, 10 /),'swtoacs_ant')
446  type(ctrl_out),save :: o_swsrfcs_ant  = ctrl_out((/ 4, 6, 10, 10, 10, 10 /),'swsrfcs_ant')
447
448  type(ctrl_out),save :: o_swtoacf_nat  = ctrl_out((/ 4, 6, 10, 10, 10, 10 /),'swtoacf_nat')
449  type(ctrl_out),save :: o_swsrfcf_nat  = ctrl_out((/ 4, 6, 10, 10, 10, 10 /),'swsrfcf_nat')
450  type(ctrl_out),save :: o_swtoacf_ant  = ctrl_out((/ 4, 6, 10, 10, 10, 10 /),'swtoacf_ant')
451  type(ctrl_out),save :: o_swsrfcf_ant  = ctrl_out((/ 4, 6, 10, 10, 10, 10 /),'swsrfcf_ant')
452  type(ctrl_out),save :: o_swtoacf_zero = ctrl_out((/ 4, 6, 10, 10, 10, 10 /),'swtoacf_zero')
453  type(ctrl_out),save :: o_swsrfcf_zero = ctrl_out((/ 4, 6, 10, 10, 10, 10 /),'swsrfcf_zero')
454
455  type(ctrl_out),save :: o_cldncl       = ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'cldncl')
456  type(ctrl_out),save :: o_reffclwtop   = ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'reffclwtop')
457  type(ctrl_out),save :: o_cldnvi       = ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'cldnvi')
458  type(ctrl_out),save :: o_lcc          = ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'lcc')
459
460
461!!!!!!!!!!!!!!!!!!!!!! 3D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
462  type(ctrl_out),save :: o_ec550aer     = ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'ec550aer')
463  type(ctrl_out),save :: o_lwcon        = ctrl_out((/ 2, 5, 10, 10, 10, 10 /),'lwcon')
464  type(ctrl_out),save :: o_iwcon        = ctrl_out((/ 2, 5, 10, 10, 10, 10 /),'iwcon')
465  type(ctrl_out),save :: o_temp         = ctrl_out((/ 2, 3, 4, 10, 10, 10 /),'temp')
466  type(ctrl_out),save :: o_theta        = ctrl_out((/ 2, 3, 4, 10, 10, 10 /),'theta')
467  type(ctrl_out),save :: o_ovap         = ctrl_out((/ 2, 3, 4, 10, 10, 10 /),'ovap')
468  type(ctrl_out),save :: o_ovapinit     = ctrl_out((/ 2, 10, 10, 10, 10, 10 /),'ovapinit')
469  type(ctrl_out),save :: o_oliq         = ctrl_out((/ 2, 3, 4, 10, 10, 10 /),'oliq')
470  type(ctrl_out),save :: o_wvapp        = ctrl_out((/ 2, 10, 10, 10, 10, 10 /),'wvapp')
471  type(ctrl_out),save :: o_geop         = ctrl_out((/ 2, 3, 10, 10, 10, 10 /),'geop')
472  type(ctrl_out),save :: o_vitu         = ctrl_out((/ 2, 3, 4, 6, 10, 10 /),'vitu')
473  type(ctrl_out),save :: o_vitv         = ctrl_out((/ 2, 3, 4, 6, 10, 10 /),'vitv')
474  type(ctrl_out),save :: o_vitw         = ctrl_out((/ 2, 3, 10, 6, 10, 10 /),'vitw')
475  type(ctrl_out),save :: o_pres         = ctrl_out((/ 2, 3, 10, 10, 10, 10 /),'pres')
476  type(ctrl_out),save :: o_paprs        = ctrl_out((/ 2, 3, 10, 10, 10, 10 /),'paprs')
477  type(ctrl_out),save :: o_mass        = ctrl_out((/ 2, 3, 10, 10, 10, 10 /),'mass')
478  type(ctrl_out),save :: o_zfull       = ctrl_out((/ 2, 3, 10, 10, 10, 10 /),'zfull')
479  type(ctrl_out),save :: o_zhalf       = ctrl_out((/ 2, 3, 10, 10, 10, 10 /),'zhalf')
480  type(ctrl_out),save :: o_rneb         = ctrl_out((/ 2, 5, 10, 10, 10, 10 /),'rneb')
481  type(ctrl_out),save :: o_rnebcon      = ctrl_out((/ 2, 5, 10, 10, 10, 10 /),'rnebcon')
482  type(ctrl_out),save :: o_rnebls       = ctrl_out((/ 2, 5, 10, 10, 10, 10 /),'rnebls')
483  type(ctrl_out),save :: o_rhum         = ctrl_out((/ 2, 5, 10, 10, 10, 10 /),'rhum')
484  type(ctrl_out),save :: o_ozone        = ctrl_out((/ 2, 10, 10, 10, 10, 10 /),'ozone')
485  type(ctrl_out),save :: o_ozone_light  = ctrl_out((/ 2, 10, 10, 10, 10, 10 /),'ozone_daylight')
486  type(ctrl_out),save :: o_upwd         = ctrl_out((/ 2, 10, 10, 10, 10, 10 /),'upwd')
487  type(ctrl_out),save :: o_dtphy        = ctrl_out((/ 2, 10, 10, 10, 10, 10 /),'dtphy')
488  type(ctrl_out),save :: o_dqphy        = ctrl_out((/ 2, 10, 10, 10, 10, 10 /),'dqphy')
489  type(ctrl_out),save :: o_pr_con_l     = ctrl_out((/ 2, 10, 10, 10, 10, 10 /),'pr_con_l')
490  type(ctrl_out),save :: o_pr_con_i     = ctrl_out((/ 2, 10, 10, 10, 10, 10 /),'pr_con_i')
491  type(ctrl_out),save :: o_pr_lsc_l     = ctrl_out((/ 2, 10, 10, 10, 10, 10 /),'pr_lsc_l')
492  type(ctrl_out),save :: o_pr_lsc_i     = ctrl_out((/ 2, 10, 10, 10, 10, 10 /),'pr_lsc_i')
493  type(ctrl_out),save :: o_re           = ctrl_out((/ 5, 10, 10, 10, 10, 10 /),'re')
494  type(ctrl_out),save :: o_fl           = ctrl_out((/ 5, 10, 10, 10, 10, 10 /),'fl')
495  type(ctrl_out),save :: o_scdnc        = ctrl_out((/ 2,  6, 10, 10, 10, 10 /),'scdnc')
496  type(ctrl_out),save :: o_reffclws     = ctrl_out((/ 2,  6, 10, 10, 10, 10 /),'reffclws')
497  type(ctrl_out),save :: o_reffclwc     = ctrl_out((/ 2,  6, 10, 10, 10, 10 /),'reffclwc')
498  type(ctrl_out),save :: o_lcc3d        = ctrl_out((/ 2,  6, 10, 10, 10, 10 /),'lcc3d')
499  type(ctrl_out),save :: o_lcc3dcon     = ctrl_out((/ 2,  6, 10, 10, 10, 10 /),'lcc3dcon')
500  type(ctrl_out),save :: o_lcc3dstra    = ctrl_out((/ 2,  6, 10, 10, 10, 10 /),'lcc3dstra')
501!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
502
503  type(ctrl_out),save,dimension(4) :: o_albe_srf     = (/ ctrl_out((/ 3, 7, 10, 7, 10, 10 /),'albe_ter'), &
504       ctrl_out((/ 3, 7, 10, 7, 10, 10 /),'albe_lic'), &
505       ctrl_out((/ 3, 7, 10, 7, 10, 10 /),'albe_oce'), &
506       ctrl_out((/ 3, 7, 10, 7, 10, 10 /),'albe_sic') /)
507
508  type(ctrl_out),save,dimension(4) :: o_ages_srf     = (/ ctrl_out((/ 10, 10, 10, 10, 10, 10 /),'ages_ter'), &
509       ctrl_out((/ 3, 10, 10, 10, 10, 10 /),'ages_lic'), &
510       ctrl_out((/ 10, 10, 10, 10, 10, 10 /),'ages_oce'), &
511       ctrl_out((/ 3, 10, 10, 10, 10, 10 /),'ages_sic') /)
512
513  type(ctrl_out),save,dimension(4) :: o_rugs_srf     = (/ ctrl_out((/ 3, 6, 10, 10, 10, 10 /),'rugs_ter'), &
514       ctrl_out((/ 3, 6, 10, 10, 10, 10 /),'rugs_lic'), &
515       ctrl_out((/ 3, 6, 10, 10, 10, 10 /),'rugs_oce'), &
516       ctrl_out((/ 3, 6, 10, 10, 10, 10 /),'rugs_sic') /)
517
518  type(ctrl_out),save :: o_alb1         = ctrl_out((/ 3, 10, 10, 10, 10, 10 /),'alb1')
519  type(ctrl_out),save :: o_alb2       = ctrl_out((/ 3, 10, 10, 10, 10, 10 /),'alb2')
520
521  type(ctrl_out),save :: o_clwcon       = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'clwcon')
522  type(ctrl_out),save :: o_Ma           = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'Ma')
523  type(ctrl_out),save :: o_dnwd         = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dnwd')
524  type(ctrl_out),save :: o_dnwd0        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dnwd0')
525  type(ctrl_out),save :: o_mc           = ctrl_out((/ 4, 5, 10, 10, 10, 10 /),'mc')
526  type(ctrl_out),save :: o_ftime_con    = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'ftime_con')
527  type(ctrl_out),save :: o_dtdyn        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dtdyn')
528  type(ctrl_out),save :: o_dqdyn        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dqdyn')
529  type(ctrl_out),save :: o_dudyn        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dudyn')  !AXC
530  type(ctrl_out),save :: o_dvdyn        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dvdyn')  !AXC
531  type(ctrl_out),save :: o_dtcon        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dtcon')
532  type(ctrl_out),save :: o_ducon        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'ducon')
533  type(ctrl_out),save :: o_dvcon        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dvcon')
534  type(ctrl_out),save :: o_dqcon        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dqcon')
535  type(ctrl_out),save :: o_dtwak        = ctrl_out((/ 4, 5, 10, 10, 10, 10 /),'dtwak')
536  type(ctrl_out),save :: o_dqwak        = ctrl_out((/ 4, 5, 10, 10, 10, 10 /),'dqwak')
537  type(ctrl_out),save :: o_wake_h       = ctrl_out((/ 4, 5, 10, 10, 10, 10 /),'wake_h')
538  type(ctrl_out),save :: o_wake_s       = ctrl_out((/ 4, 5, 10, 10, 10, 10 /),'wake_s')
539  type(ctrl_out),save :: o_wake_deltat  = ctrl_out((/ 4, 5, 10, 10, 10, 10 /),'wake_deltat')
540  type(ctrl_out),save :: o_wake_deltaq  = ctrl_out((/ 4, 5, 10, 10, 10, 10 /),'wake_deltaq')
541  type(ctrl_out),save :: o_wake_omg     = ctrl_out((/ 4, 5, 10, 10, 10, 10 /),'wake_omg')
542  type(ctrl_out),save :: o_wdtrainA     = ctrl_out((/ 4, 1, 10,  4,  1, 10 /),'wdtrainA') !<<RomP
543  type(ctrl_out),save :: o_wdtrainM     = ctrl_out((/ 4, 1, 10,  4,  1, 10 /),'wdtrainM') !<<RomP
544  type(ctrl_out),save :: o_Vprecip      = ctrl_out((/ 10, 10, 10, 10, 10, 10 /),'Vprecip')
545  type(ctrl_out),save :: o_ftd          = ctrl_out((/ 4, 5, 10, 10, 10, 10 /),'ftd')
546  type(ctrl_out),save :: o_fqd          = ctrl_out((/ 4, 5, 10, 10, 10, 10 /),'fqd')
547  type(ctrl_out),save :: o_dtlsc        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dtlsc')
548  type(ctrl_out),save :: o_dtlschr      = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dtlschr')
549  type(ctrl_out),save :: o_dqlsc        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dqlsc')
550  type(ctrl_out),save :: o_beta_prec    = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'beta_prec')
551  type(ctrl_out),save :: o_dtvdf        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dtvdf')
552  type(ctrl_out),save :: o_dqvdf        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dqvdf')
553  type(ctrl_out),save :: o_dteva        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dteva')
554  type(ctrl_out),save :: o_dqeva        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dqeva')
555
556!!!!!!!!!!!!!!!! Specifique thermiques
557  type(ctrl_out),save :: o_dqlscth        = ctrl_out((/ 10, 10, 10, 10, 10, 10 /),'dqlscth')
558  type(ctrl_out),save :: o_dqlscst        = ctrl_out((/ 10, 10, 10, 10, 10, 10 /),'dqlscst')
559  type(ctrl_out),save :: o_dtlscth        = ctrl_out((/ 10, 10, 10, 10, 10, 10 /),'dtlscth')
560  type(ctrl_out),save :: o_dtlscst        = ctrl_out((/ 10, 10, 10, 10, 10, 10 /),'dtlscst')
561  type(ctrl_out),save :: o_plulth        = ctrl_out((/ 10, 10, 10, 10, 10, 10 /),'plulth')
562  type(ctrl_out),save :: o_plulst        = ctrl_out((/ 10, 10, 10, 10, 10, 10 /),'plulst')
563  type(ctrl_out),save :: o_lmaxth        = ctrl_out((/ 10, 10, 10, 10, 10, 10 /),'lmaxth')
564  type(ctrl_out),save :: o_ptconvth        = ctrl_out((/ 10, 10, 10, 10, 10, 10 /),'ptconvth')
565!!!!!!!!!!!!!!!!!!!!!!!!
566
567
568  type(ctrl_out),save :: o_ptconv       = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'ptconv')
569  type(ctrl_out),save :: o_ratqs        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'ratqs')
570  type(ctrl_out),save :: o_dtthe        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dtthe')
571  type(ctrl_out),save :: o_f_th         = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'f_th')
572  type(ctrl_out),save :: o_e_th         = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'e_th')
573  type(ctrl_out),save :: o_w_th         = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'w_th')
574  type(ctrl_out),save :: o_ftime_th     = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'ftime_th')
575  type(ctrl_out),save :: o_q_th         = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'q_th')
576  type(ctrl_out),save :: o_a_th         = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'a_th')
577  type(ctrl_out),save :: o_d_th         = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'d_th')
578  type(ctrl_out),save :: o_f0_th        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'f0_th')
579  type(ctrl_out),save :: o_zmax_th      = ctrl_out((/ 4,  4,  4,  5, 10, 10 /),'zmax_th')
580  type(ctrl_out),save :: o_dqthe        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dqthe')
581  type(ctrl_out),save :: o_dtajs        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dtajs')
582  type(ctrl_out),save :: o_dqajs        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dqajs')
583  type(ctrl_out),save :: o_dtswr        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dtswr')
584  type(ctrl_out),save :: o_dtsw0        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dtsw0')
585  type(ctrl_out),save :: o_dtlwr        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dtlwr')
586  type(ctrl_out),save :: o_dtlw0        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dtlw0')
587  type(ctrl_out),save :: o_dtec         = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dtec')
588  type(ctrl_out),save :: o_duvdf        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'duvdf')
589  type(ctrl_out),save :: o_dvvdf        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dvvdf')
590  type(ctrl_out),save :: o_duoro        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'duoro')
591  type(ctrl_out),save :: o_dvoro        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dvoro')
592  type(ctrl_out),save :: o_dulif        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dulif')
593  type(ctrl_out),save :: o_dvlif        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dvlif')
594  type(ctrl_out),save :: o_duhin        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'duhin')
595  type(ctrl_out),save :: o_dvhin        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dvhin')
596  type(ctrl_out),save :: o_dtoro        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dtoro')
597  type(ctrl_out),save :: o_dtlif        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dtlif')
598  type(ctrl_out),save :: o_dthin        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dthin')
599
600  type(ctrl_out),save,allocatable :: o_trac(:)
601  type(ctrl_out),save,allocatable :: o_trac_cum(:)
602
603  type(ctrl_out),save :: o_rsu        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'rsu')
604  type(ctrl_out),save :: o_rsd        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'rsd')
605  type(ctrl_out),save :: o_rlu        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'rlu')
606  type(ctrl_out),save :: o_rld        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'rld')
607  type(ctrl_out),save :: o_rsucs      = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'rsucs')
608  type(ctrl_out),save :: o_rsdcs      = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'rsdcs')
609  type(ctrl_out),save :: o_rlucs      = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'rlucs')
610  type(ctrl_out),save :: o_rldcs      = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'rldcs')
611
612  type(ctrl_out),save :: o_tnt          = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'tnt')
613  type(ctrl_out),save :: o_tntc         = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'tntc')
614  type(ctrl_out),save :: o_tntr        = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'tntr')
615  type(ctrl_out),save :: o_tntscpbl          = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'tntscpbl')
616
617  type(ctrl_out),save :: o_tnhus          = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'tnhus')
618  type(ctrl_out),save :: o_tnhusc         = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'tnhusc')
619  type(ctrl_out),save :: o_tnhusscpbl     = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'tnhusscpbl')
620
621  type(ctrl_out),save :: o_evu          = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'evu')
622
623  type(ctrl_out),save :: o_h2o          = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'h2o')
624
625  type(ctrl_out),save :: o_mcd          = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'mcd')
626  type(ctrl_out),save :: o_dmc          = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'dmc')
627  type(ctrl_out),save :: o_ref_liq      = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'ref_liq')
628  type(ctrl_out),save :: o_ref_ice      = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'ref_ice')
629
630  type(ctrl_out),save :: o_rsut4co2     = ctrl_out((/ 5, 10, 10, 10, 10, 10 /),'rsut4co2')
631  type(ctrl_out),save :: o_rlut4co2     = ctrl_out((/ 5, 10, 10, 10, 10, 10 /),'rlut4co2')
632  type(ctrl_out),save :: o_rsutcs4co2   = ctrl_out((/ 5, 10, 10, 10, 10, 10 /),'rsutcs4co2')
633  type(ctrl_out),save :: o_rlutcs4co2   = ctrl_out((/ 5, 10, 10, 10, 10, 10 /),'rlutcs4co2')
634
635  type(ctrl_out),save :: o_rsu4co2     = ctrl_out((/ 5, 10, 10, 10, 10, 10 /),'rsu4co2')
636  type(ctrl_out),save :: o_rlu4co2     = ctrl_out((/ 5, 10, 10, 10, 10, 10 /),'rlu4co2')
637  type(ctrl_out),save :: o_rsucs4co2   = ctrl_out((/ 5, 10, 10, 10, 10, 10 /),'rsucs4co2')
638  type(ctrl_out),save :: o_rlucs4co2   = ctrl_out((/ 5, 10, 10, 10, 10, 10 /),'rlucs4co2')
639  type(ctrl_out),save :: o_rsd4co2     = ctrl_out((/ 5, 10, 10, 10, 10, 10 /),'rsd4co2')
640  type(ctrl_out),save :: o_rld4co2     = ctrl_out((/ 5, 10, 10, 10, 10, 10 /),'rld4co2')
641  type(ctrl_out),save :: o_rsdcs4co2   = ctrl_out((/ 5, 10, 10, 10, 10, 10 /),'rsdcs4co2')
642  type(ctrl_out),save :: o_rldcs4co2   = ctrl_out((/ 5, 10, 10, 10, 10, 10 /),'rldcs4co2')
643
644
645CONTAINS
646
647!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
648!!!!!!!!! Ouverture des fichier et definition des variable de sortie !!!!!!!!
649  !! histbeg, histvert et histdef
650!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
651
652  SUBROUTINE phys_output_open(rlon,rlat,pim,tabij,ipt,jpt,plon,plat, &
653       jjmp1,nlevSTD,clevSTD,nbteta, &
654       ctetaSTD, dtime, ok_veget, &
655       type_ocean, iflag_pbl,ok_mensuel,ok_journe, &
656       ok_hf,ok_instan,ok_LES,ok_ade,ok_aie, read_climoz, &
657       phys_out_filestations, &
658       new_aod, aerosol_couple)   
659
660    USE iophy
661    USE dimphy
662    USE infotrac
663    USE ioipsl
664    USE phys_cal_mod, only : hour
665    USE mod_phys_lmdz_para
666    USE aero_mod, only : naero_spc,name_aero
667
668    IMPLICIT NONE
669    include "dimensions.h"
670    include "temps.h"
671    include "indicesol.h"
672    include "clesphys.h"
673    include "thermcell.h"
674    include "comvert.h"
675    include "iniprint.h"
676
677    real,dimension(klon),intent(in) :: rlon
678    real,dimension(klon),intent(in) :: rlat
679    integer, intent(in)             :: pim
680    INTEGER, DIMENSION(pim)            :: tabij
681    INTEGER,dimension(pim), intent(in) :: ipt, jpt
682    REAL,dimension(pim), intent(in) :: plat, plon
683    REAL,dimension(pim,2) :: plat_bounds, plon_bounds
684
685    integer                               :: jjmp1
686    integer                               :: nbteta, nlevSTD, radpas
687    logical                               :: ok_mensuel, ok_journe, ok_hf, ok_instan
688    logical                               :: ok_LES,ok_ade,ok_aie
689    logical                               :: new_aod, aerosol_couple
690    integer, intent(in)::  read_climoz ! read ozone climatology
691    !     Allowed values are 0, 1 and 2
692    !     0: do not read an ozone climatology
693    !     1: read a single ozone climatology that will be used day and night
694    !     2: read two ozone climatologies, the average day and night
695    !     climatology and the daylight climatology
696
697    real                                  :: dtime
698    integer                               :: idayref
699    real                                  :: zjulian
700    real, dimension(klev)                 :: Ahyb, Bhyb, Alt
701    character(len=4), dimension(nlevSTD)  :: clevSTD
702    integer                               :: nsrf, k, iq, iiq, iff, i, j, ilev
703    integer                               :: naero
704    logical                               :: ok_veget
705    integer                               :: iflag_pbl
706    CHARACTER(len=4)                      :: bb2
707    CHARACTER(len=2)                      :: bb3
708    character(len=6)                      :: type_ocean
709    CHARACTER(len=3)                      :: ctetaSTD(nbteta)
710    real, dimension(nfiles)               :: ecrit_files
711    CHARACTER(len=20), dimension(nfiles)  :: phys_out_filenames
712    INTEGER, dimension(iim*jjmp1)         ::  ndex2d
713    INTEGER, dimension(iim*jjmp1*klev)    :: ndex3d
714    integer                               :: imin_ins, imax_ins
715    integer                               :: jmin_ins, jmax_ins
716    integer, dimension(nfiles)            :: phys_out_levmin, phys_out_levmax
717    integer, dimension(nfiles)            :: phys_out_filelevels
718    CHARACTER(len=20), dimension(nfiles)  :: type_ecri_files, phys_out_filetypes
719    character(len=20), dimension(nfiles)  :: chtimestep   = (/ 'DefFreq', 'DefFreq','DefFreq', 'DefFreq', 'DefFreq', 'DefFreq' /)
720    logical, dimension(nfiles)            :: phys_out_filekeys
721    logical, dimension(nfiles)            :: phys_out_filestations
722
723!!!!!!!!!! stockage dans une region limitee pour chaque fichier !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
724    !                 entre [phys_out_lonmin,phys_out_lonmax] et [phys_out_latmin,phys_out_latmax]
725
726    logical, dimension(nfiles), save  :: phys_out_regfkey       = (/ .false., .false., .false.,  .false., .false., .false. /)
727    real, dimension(nfiles), save     :: phys_out_lonmin        = (/   -180.,   -180.,   -180.,    -180.,   -180.,   -180. /)
728    real, dimension(nfiles), save     :: phys_out_lonmax        = (/    180.,    180.,    180.,     180.,    180.,    180. /)
729    real, dimension(nfiles), save     :: phys_out_latmin        = (/    -90.,    -90.,    -90.,     -90.,    -90.,    -90. /)
730    real, dimension(nfiles), save     :: phys_out_latmax        = (/     90.,     90.,     90.,     90.,     90.,     90. /)
731
732    write(lunout,*) 'Debut phys_output_mod.F90'
733    ! Initialisations (Valeurs par defaut
734
735    if (.not. allocated(o_trac)) ALLOCATE(o_trac(nqtot))
736    if (.not. allocated(o_trac_cum)) ALLOCATE(o_trac_cum(nqtot))
737
738    levmax = (/ klev, klev, klev, klev, klev, klev /)
739
740    phys_out_filenames(1) = 'histmth'
741    phys_out_filenames(2) = 'histday'
742    phys_out_filenames(3) = 'histhf'
743    phys_out_filenames(4) = 'histins'
744    phys_out_filenames(5) = 'histLES'
745    phys_out_filenames(6) = 'histstn'
746
747    type_ecri(1) = 'ave(X)'
748    type_ecri(2) = 'ave(X)'
749    type_ecri(3) = 'ave(X)'
750    type_ecri(4) = 'inst(X)'
751    type_ecri(5) = 'ave(X)'
752    type_ecri(6) = 'inst(X)'
753
754    clef_files(1) = ok_mensuel
755    clef_files(2) = ok_journe
756    clef_files(3) = ok_hf
757    clef_files(4) = ok_instan
758    clef_files(5) = ok_LES
759    clef_files(6) = ok_instan
760
761    !sortir des fichiers "stations" si clef_stations(:)=.TRUE.
762    clef_stations(1) = .FALSE.
763    clef_stations(2) = .FALSE.
764    clef_stations(3) = .FALSE.
765    clef_stations(4) = .FALSE.
766    clef_stations(5) = .FALSE.
767    clef_stations(6) = .FALSE.
768
769    lev_files(1) = lev_histmth
770    lev_files(2) = lev_histday
771    lev_files(3) = lev_histhf
772    lev_files(4) = lev_histins
773    lev_files(5) = lev_histLES
774    lev_files(6) = lev_histins
775
776    ecrit_files(1) = ecrit_mth
777    ecrit_files(2) = ecrit_day
778    ecrit_files(3) = ecrit_hf
779    ecrit_files(4) = ecrit_ins
780    ecrit_files(5) = ecrit_LES
781    ecrit_files(6) = ecrit_ins
782
783    !! Lectures des parametres de sorties dans physiq.def
784
785    call getin('phys_out_regfkey',phys_out_regfkey)
786    call getin('phys_out_lonmin',phys_out_lonmin)
787    call getin('phys_out_lonmax',phys_out_lonmax)
788    call getin('phys_out_latmin',phys_out_latmin)
789    call getin('phys_out_latmax',phys_out_latmax)
790    phys_out_levmin(:)=levmin(:)
791    call getin('phys_out_levmin',levmin)
792    phys_out_levmax(:)=levmax(:)
793    call getin('phys_out_levmax',levmax)
794    call getin('phys_out_filenames',phys_out_filenames)
795    phys_out_filekeys(:)=clef_files(:)
796    call getin('phys_out_filekeys',clef_files)
797    phys_out_filestations(:)=clef_stations(:)
798    call getin('phys_out_filestations',clef_stations)
799    phys_out_filelevels(:)=lev_files(:)
800    call getin('phys_out_filelevels',lev_files)
801    call getin('phys_out_filetimesteps',chtimestep)
802    phys_out_filetypes(:)=type_ecri(:)
803    call getin('phys_out_filetypes',type_ecri)
804
805    type_ecri_files(:)=type_ecri(:)
806
807    write(lunout,*)'phys_out_lonmin=',phys_out_lonmin
808    write(lunout,*)'phys_out_lonmax=',phys_out_lonmax
809    write(lunout,*)'phys_out_latmin=',phys_out_latmin
810    write(lunout,*)'phys_out_latmax=',phys_out_latmax
811    write(lunout,*)'phys_out_filenames=',phys_out_filenames
812    write(lunout,*)'phys_out_filetypes=',type_ecri
813    write(lunout,*)'phys_out_filekeys=',clef_files
814    write(lunout,*)'phys_out_filestations=',clef_stations
815    write(lunout,*)'phys_out_filelevels=',lev_files
816
817!!!!!!!!!!!!!!!!!!!!!!! Boucle sur les fichiers !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
818    ! Appel de histbeg et histvert pour creer le fichier et les niveaux verticaux !!
819    ! Appel des histbeg pour definir les variables (nom, moy ou inst, freq de sortie ..
820!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
821
822    zdtime = dtime         ! Frequence ou l on moyenne
823
824    ! Calcul des Ahyb, Bhyb et Alt
825    do k=1,klev
826       Ahyb(k)=(ap(k)+ap(k+1))/2.
827       Bhyb(k)=(bp(k)+bp(k+1))/2.
828       Alt(k)=log(preff/presnivs(k))*8.
829    enddo
830    !          if(prt_level.ge.1) then
831    write(lunout,*)'Ap Hybrid = ',Ahyb(1:klev)
832    write(lunout,*)'Bp Hybrid = ',Bhyb(1:klev)
833    write(lunout,*)'Alt approx des couches pour une haut d echelle de 8km = ',Alt(1:klev)
834    !          endif
835    DO iff=1,nfiles
836
837       ! Calculate ecrit_files for all files
838       if ( chtimestep(iff).eq.'DefFreq' ) then
839          ! Par defaut ecrit_files = (ecrit_mensuel ecrit_jour ecrit_hf ...)*86400.
840          ecrit_files(iff)=ecrit_files(iff)*86400.
841       else
842          call convers_timesteps(chtimestep(iff),dtime,ecrit_files(iff))
843       endif
844       write(lunout,*)'ecrit_files(',iff,')= ',ecrit_files(iff)
845
846       zoutm(iff) = ecrit_files(iff) ! Frequence ou l on ecrit en seconde
847
848       IF (clef_files(iff)) THEN
849
850          idayref = day_ref
851!          CALL ymds2ju(annee_ref, 1, idayref, 0.0, zjulian)       
852! correction pour l heure initiale                               !jyg
853!                                                                !jyg
854          CALL ymds2ju(annee_ref, 1, idayref, hour, zjulian)         !jyg
855! correction pour l heure initiale                               !jyg
856!                                                                !jyg
857!!!      CALL ymds2ju(annee_ref, 1, idayref, 0.0, zjulian)       !jyg
858! correction pour l heure initiale                               !jyg
859!                                                                !jyg
860!      CALL ymds2ju(annee_ref, 1, idayref, hour, zjulian)         !jyg
861
862!!!!!!!!!!!!!!!!! Traitement dans le cas ou l'on veut stocker sur un domaine limite !!
863!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
864          if (phys_out_regfkey(iff)) then
865
866             imin_ins=1
867             imax_ins=iim
868             jmin_ins=1
869             jmax_ins=jjmp1
870
871             ! correction abderr       
872             do i=1,iim
873                write(lunout,*)'io_lon(i)=',io_lon(i)
874                if (io_lon(i).le.phys_out_lonmin(iff)) imin_ins=i
875                if (io_lon(i).le.phys_out_lonmax(iff)) imax_ins=i+1
876             enddo
877
878             do j=1,jjmp1
879                write(lunout,*)'io_lat(j)=',io_lat(j)
880                if (io_lat(j).ge.phys_out_latmin(iff)) jmax_ins=j+1
881                if (io_lat(j).ge.phys_out_latmax(iff)) jmin_ins=j
882             enddo
883
884             write(lunout,*)'On stoke le fichier histoire numero ',iff,' sur ', &
885                  imin_ins,imax_ins,jmin_ins,jmax_ins
886             write(lunout,*)'longitudes : ', &
887                  io_lon(imin_ins),io_lon(imax_ins), &
888                  'latitudes : ', &
889                  io_lat(jmax_ins),io_lat(jmin_ins)
890
891             CALL histbeg(phys_out_filenames(iff),iim,io_lon,jjmp1,io_lat, &
892                  imin_ins,imax_ins-imin_ins+1, &
893                  jmin_ins,jmax_ins-jmin_ins+1, &
894                  itau_phy,zjulian,dtime,nhorim(iff),nid_files(iff))
895!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
896             !IM fichiers stations
897          else if (clef_stations(iff)) THEN
898
899             write(lunout,*)'phys_output_mod phys_out_filenames=',phys_out_filenames(iff)
900
901             call histbeg_phy_all(rlon,rlat,pim,tabij,ipt,jpt,plon,plat,plon_bounds,plat_bounds, &
902                  phys_out_filenames(iff), &
903                  itau_phy,zjulian,dtime,nhorim(iff),nid_files(iff))
904          else
905             CALL histbeg_phy(phys_out_filenames(iff),itau_phy,zjulian,dtime,nhorim(iff),nid_files(iff))
906          endif
907
908          CALL histvert(nid_files(iff), "presnivs", "Vertical levels", "Pa", &
909               levmax(iff) - levmin(iff) + 1, &
910               presnivs(levmin(iff):levmax(iff)), nvertm(iff),"down")
911
912!!!!!!!!!!!!! Traitement des champs 3D pour histhf !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
913!!!!!!!!!!!!!!! A Revoir plus tard !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
914          !          IF (iff.eq.3.and.lev_files(iff).ge.4) THEN
915          !          CALL histbeg_phy("histhf3d",itau_phy, &
916          !     &                     zjulian, dtime, &
917          !     &                     nhorim, nid_hf3d)
918
919          !         CALL histvert(nid_hf3d, "presnivs", &
920          !     &                 "Vertical levels", "mb", &
921          !     &                 klev, presnivs/100., nvertm)
922          !          ENDIF
923          !
924!!!! Composentes de la coordonnee sigma-hybride
925          CALL histvert(nid_files(iff), "Ahyb","Ahyb comp of Hyb Cord ", "Pa", &
926               levmax(iff) - levmin(iff) + 1,Ahyb,nvertap(iff))
927
928          CALL histvert(nid_files(iff), "Bhyb","Bhyb comp of Hyb Cord", " ", &
929               levmax(iff) - levmin(iff) + 1,Bhyb,nvertbp(iff))
930
931          CALL histvert(nid_files(iff), "Alt","Height approx for scale heigh of 8km at levels", "Km", &
932               levmax(iff) - levmin(iff) + 1,Alt,nvertAlt(iff))
933
934          !   CALL histvert(nid_files(iff), "preff","Reference pressure", "Pa", &
935          !                 1,preff,nvertp0(iff))
936!!! Champs 1D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
937          IF (.NOT.clef_stations(iff)) THEN
938             !
939             !IM: there is no way to have one single value in a netcdf file
940             !
941             type_ecri(1) = 'once'
942             type_ecri(2) = 'once'
943             type_ecri(3) = 'once'
944             type_ecri(4) = 'once'
945             type_ecri(5) = 'once'
946             type_ecri(6) = 'once'
947             CALL histdef2d(iff,clef_stations(iff),o_aire%flag,o_aire%name,"Grid area", "-")
948             CALL histdef2d(iff,clef_stations(iff),o_contfracATM%flag,o_contfracATM%name,"% sfce ter+lic", "-")
949          ENDIF
950          type_ecri(:) = type_ecri_files(:)
951
952!!! Champs 2D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
953          CALL histdef2d(iff,clef_stations(iff),o_phis%flag,o_phis%name,"Surface geop.height", "m2/s2" )
954          CALL histdef2d(iff,clef_stations(iff),o_contfracOR%flag,o_contfracOR%name,"% sfce terre OR", "-" )
955          CALL histdef2d(iff,clef_stations(iff),o_aireTER%flag,o_aireTER%name,"Grid area CONT", "-" )
956          CALL histdef2d(iff,clef_stations(iff),o_flat%flag,o_flat%name, "Latent heat flux", "W/m2")
957          CALL histdef2d(iff,clef_stations(iff),o_slp%flag,o_slp%name, "Sea Level Pressure", "Pa" )
958          CALL histdef2d(iff,clef_stations(iff),o_tsol%flag,o_tsol%name, "Surface Temperature", "K")
959          CALL histdef2d(iff,clef_stations(iff),o_t2m%flag,o_t2m%name, "Temperature 2m", "K" )
960          IF (.NOT.clef_stations(iff)) THEN
961             !
962             !IM: there is no way to have one single value in a netcdf file
963             !
964             type_ecri(1) = 't_min(X)'
965             type_ecri(2) = 't_min(X)'
966             type_ecri(3) = 't_min(X)'
967             type_ecri(4) = 't_min(X)'
968             type_ecri(5) = 't_min(X)'
969             type_ecri(6) = 't_min(X)'
970             CALL histdef2d(iff,clef_stations(iff),o_t2m_min%flag,o_t2m_min%name, "Temp 2m min", "K" )
971             type_ecri(1) = 't_max(X)'
972             type_ecri(2) = 't_max(X)'
973             type_ecri(3) = 't_max(X)'
974             type_ecri(4) = 't_max(X)'
975             type_ecri(5) = 't_max(X)'
976             type_ecri(6) = 't_max(X)'
977             CALL histdef2d(iff,clef_stations(iff),o_t2m_max%flag,o_t2m_max%name, "Temp 2m max", "K" )
978          ENDIF
979          type_ecri(:) = type_ecri_files(:)
980          CALL histdef2d(iff,clef_stations(iff),o_wind10m%flag,o_wind10m%name, "10-m wind speed", "m/s")
981          CALL histdef2d(iff,clef_stations(iff),o_wind10max%flag,o_wind10max%name, "10m wind speed max", "m/s")
982          CALL histdef2d(iff,clef_stations(iff),o_sicf%flag,o_sicf%name, "Sea-ice fraction", "-" )
983          CALL histdef2d(iff,clef_stations(iff),o_q2m%flag,o_q2m%name, "Specific humidity 2m", "kg/kg")
984          CALL histdef2d(iff,clef_stations(iff),o_ustar%flag,o_ustar%name, "Friction velocity", "m/s" )
985          CALL histdef2d(iff,clef_stations(iff),o_u10m%flag,o_u10m%name, "Vent zonal 10m", "m/s" )
986          CALL histdef2d(iff,clef_stations(iff),o_v10m%flag,o_v10m%name, "Vent meridien 10m", "m/s")
987          CALL histdef2d(iff,clef_stations(iff),o_psol%flag,o_psol%name, "Surface Pressure", "Pa" )
988          CALL histdef2d(iff,clef_stations(iff),o_qsurf%flag,o_qsurf%name, "Surface Air humidity", "kg/kg")
989
990          if (.not. ok_veget) then
991             CALL histdef2d(iff,clef_stations(iff),o_qsol%flag,o_qsol%name, "Soil watter content", "mm" )
992          endif
993
994             type_ecri(1) = 'inst(X)'
995             type_ecri(2) = 'inst(X)'
996             type_ecri(3) = 'inst(X)'
997             type_ecri(4) = 'inst(X)'
998             type_ecri(5) = 'inst(X)'
999             type_ecri(6) = 'inst(X)'
1000          CALL histdef2d(iff,clef_stations(iff),o_ndayrain%flag,o_ndayrain%name, "Number of dayrain(liq+sol)", "-")
1001             type_ecri(:) = type_ecri_files(:)
1002          CALL histdef2d(iff,clef_stations(iff),o_precip%flag,o_precip%name, "Precip Totale liq+sol", "kg/(s*m2)" )
1003          CALL histdef2d(iff,clef_stations(iff),o_plul%flag,o_plul%name, "Large-scale Precip.", "kg/(s*m2)")
1004          CALL histdef2d(iff,clef_stations(iff),o_pluc%flag,o_pluc%name, "Convective Precip.", "kg/(s*m2)")
1005          CALL histdef2d(iff,clef_stations(iff),o_snow%flag,o_snow%name, "Snow fall", "kg/(s*m2)" )
1006          CALL histdef2d(iff,clef_stations(iff),o_msnow%flag,o_msnow%name, "Surface snow amount", "kg/m2" )
1007          CALL histdef2d(iff,clef_stations(iff),o_fsnow%flag,o_fsnow%name, "Surface snow area fraction", "-" )
1008          CALL histdef2d(iff,clef_stations(iff),o_evap%flag,o_evap%name, "Evaporat", "kg/(s*m2)" )
1009          CALL histdef2d(iff,clef_stations(iff),o_tops%flag,o_tops%name, "Solar rad. at TOA", "W/m2")
1010          CALL histdef2d(iff,clef_stations(iff),o_tops0%flag,o_tops0%name, "CS Solar rad. at TOA", "W/m2")
1011          CALL histdef2d(iff,clef_stations(iff),o_topl%flag,o_topl%name, "IR rad. at TOA", "W/m2" )
1012          CALL histdef2d(iff,clef_stations(iff),o_topl0%flag,o_topl0%name, "IR rad. at TOA", "W/m2")
1013          CALL histdef2d(iff,clef_stations(iff),o_SWupTOA%flag,o_SWupTOA%name, "SWup at TOA", "W/m2")
1014          CALL histdef2d(iff,clef_stations(iff),o_SWupTOAclr%flag,o_SWupTOAclr%name, "SWup clear sky at TOA", "W/m2")
1015          CALL histdef2d(iff,clef_stations(iff),o_SWdnTOA%flag,o_SWdnTOA%name, "SWdn at TOA", "W/m2" )
1016          CALL histdef2d(iff,clef_stations(iff),o_SWdnTOAclr%flag,o_SWdnTOAclr%name, "SWdn clear sky at TOA", "W/m2")
1017          CALL histdef2d(iff,clef_stations(iff),o_nettop%flag,o_nettop%name, "Net dn radiatif flux at TOA", "W/m2")
1018          CALL histdef2d(iff,clef_stations(iff),o_SWup200%flag,o_SWup200%name, "SWup at 200mb", "W/m2" )
1019          CALL histdef2d(iff,clef_stations(iff),o_SWup200clr%flag,o_SWup200clr%name, "SWup clear sky at 200mb", "W/m2")
1020          CALL histdef2d(iff,clef_stations(iff),o_SWdn200%flag,o_SWdn200%name, "SWdn at 200mb", "W/m2" )
1021          CALL histdef2d(iff,clef_stations(iff),o_SWdn200clr%flag,o_SWdn200clr%name, "SWdn clear sky at 200mb", "W/m2")
1022          CALL histdef2d(iff,clef_stations(iff),o_LWup200%flag,o_LWup200%name, "LWup at 200mb", "W/m2")
1023          CALL histdef2d(iff,clef_stations(iff),o_LWup200clr%flag,o_LWup200clr%name, "LWup clear sky at 200mb", "W/m2")
1024          CALL histdef2d(iff,clef_stations(iff),o_LWdn200%flag,o_LWdn200%name, "LWdn at 200mb", "W/m2")
1025          CALL histdef2d(iff,clef_stations(iff),o_LWdn200clr%flag,o_LWdn200clr%name, "LWdn clear sky at 200mb", "W/m2")
1026          CALL histdef2d(iff,clef_stations(iff),o_sols%flag,o_sols%name, "Solar rad. at surf.", "W/m2")
1027          CALL histdef2d(iff,clef_stations(iff),o_sols0%flag,o_sols0%name, "Solar rad. at surf.", "W/m2")
1028          CALL histdef2d(iff,clef_stations(iff),o_soll%flag,o_soll%name, "IR rad. at surface", "W/m2") 
1029          CALL histdef2d(iff,clef_stations(iff),o_radsol%flag,o_radsol%name, "Rayonnement au sol", "W/m2")
1030          CALL histdef2d(iff,clef_stations(iff),o_soll0%flag,o_soll0%name, "IR rad. at surface", "W/m2")
1031          CALL histdef2d(iff,clef_stations(iff),o_SWupSFC%flag,o_SWupSFC%name, "SWup at surface", "W/m2")
1032          CALL histdef2d(iff,clef_stations(iff),o_SWupSFCclr%flag,o_SWupSFCclr%name, "SWup clear sky at surface", "W/m2")
1033          CALL histdef2d(iff,clef_stations(iff),o_SWdnSFC%flag,o_SWdnSFC%name, "SWdn at surface", "W/m2")
1034          CALL histdef2d(iff,clef_stations(iff),o_SWdnSFCclr%flag,o_SWdnSFCclr%name, "SWdn clear sky at surface", "W/m2")
1035          CALL histdef2d(iff,clef_stations(iff),o_LWupSFC%flag,o_LWupSFC%name, "Upwd. IR rad. at surface", "W/m2")
1036          CALL histdef2d(iff,clef_stations(iff),o_LWdnSFC%flag,o_LWdnSFC%name, "Down. IR rad. at surface", "W/m2")
1037          CALL histdef2d(iff,clef_stations(iff),o_LWupSFCclr%flag,o_LWupSFCclr%name, "CS Upwd. IR rad. at surface", "W/m2")
1038          CALL histdef2d(iff,clef_stations(iff),o_LWdnSFCclr%flag,o_LWdnSFCclr%name, "Down. CS IR rad. at surface", "W/m2")
1039          CALL histdef2d(iff,clef_stations(iff),o_bils%flag,o_bils%name, "Surf. total heat flux", "W/m2")
1040          CALL histdef2d(iff,clef_stations(iff),o_sens%flag,o_sens%name, "Sensible heat flux", "W/m2")
1041          CALL histdef2d(iff,clef_stations(iff),o_fder%flag,o_fder%name, "Heat flux derivation", "W/m2")
1042          CALL histdef2d(iff,clef_stations(iff),o_ffonte%flag,o_ffonte%name, "Thermal flux for snow melting", "W/m2")
1043          CALL histdef2d(iff,clef_stations(iff),o_fqcalving%flag,o_fqcalving%name, "Ice Calving", "kg/m2/s")
1044          CALL histdef2d(iff,clef_stations(iff),o_fqfonte%flag,o_fqfonte%name, "Land ice melt", "kg/m2/s")
1045
1046          CALL histdef2d(iff,clef_stations(iff),o_taux%flag,o_taux%name, "Zonal wind stress","Pa")
1047          CALL histdef2d(iff,clef_stations(iff),o_tauy%flag,o_tauy%name, "Meridional wind stress","Pa")
1048
1049          DO nsrf = 1, nbsrf
1050             CALL histdef2d(iff,clef_stations(iff),o_pourc_srf(nsrf)%flag,o_pourc_srf(nsrf)%name,"% "//clnsurf(nsrf),"%")
1051             CALL histdef2d(iff,clef_stations(iff),o_fract_srf(nsrf)%flag,o_fract_srf(nsrf)%name,"Fraction "//clnsurf(nsrf),"1")
1052             CALL histdef2d(iff,clef_stations(iff), &
1053                  o_taux_srf(nsrf)%flag,o_taux_srf(nsrf)%name,"Zonal wind stress"//clnsurf(nsrf),"Pa")
1054             CALL histdef2d(iff,clef_stations(iff), &
1055                  o_tauy_srf(nsrf)%flag,o_tauy_srf(nsrf)%name,"Meridional wind stress "//clnsurf(nsrf),"Pa")
1056             CALL histdef2d(iff,clef_stations(iff), &
1057                  o_tsol_srf(nsrf)%flag,o_tsol_srf(nsrf)%name,"Temperature "//clnsurf(nsrf),"K")
1058             CALL histdef2d(iff,clef_stations(iff), &
1059                  o_evappot_srf(nsrf)%flag,o_evappot_srf(nsrf)%name,"Temperature"//clnsurf(nsrf),"K")
1060             CALL histdef2d(iff,clef_stations(iff), &
1061                  o_ustar_srf(nsrf)%flag,o_ustar_srf(nsrf)%name,"Friction velocity "//clnsurf(nsrf),"m/s")
1062             CALL histdef2d(iff,clef_stations(iff), &
1063                  o_u10m_srf(nsrf)%flag,o_u10m_srf(nsrf)%name,"Vent Zonal 10m "//clnsurf(nsrf),"m/s")
1064             CALL histdef2d(iff,clef_stations(iff), &
1065                  o_evap_srf(nsrf)%flag,o_evap_srf(nsrf)%name,"evaporation at surface "//clnsurf(nsrf),"kg/(s*m2)")
1066             CALL histdef2d(iff,clef_stations(iff), &
1067                  o_v10m_srf(nsrf)%flag,o_v10m_srf(nsrf)%name,"Vent meredien 10m "//clnsurf(nsrf),"m/s")
1068             CALL histdef2d(iff,clef_stations(iff), &
1069                  o_t2m_srf(nsrf)%flag,o_t2m_srf(nsrf)%name,"Temp 2m "//clnsurf(nsrf),"K")
1070             CALL histdef2d(iff,clef_stations(iff), &
1071                  o_sens_srf(nsrf)%flag,o_sens_srf(nsrf)%name,"Sensible heat flux "//clnsurf(nsrf),"W/m2")
1072             CALL histdef2d(iff,clef_stations(iff), &
1073                  o_lat_srf(nsrf)%flag,o_lat_srf(nsrf)%name,"Latent heat flux "//clnsurf(nsrf),"W/m2")
1074             CALL histdef2d(iff,clef_stations(iff), &
1075                  o_flw_srf(nsrf)%flag,o_flw_srf(nsrf)%name,"LW "//clnsurf(nsrf),"W/m2")
1076             CALL histdef2d(iff,clef_stations(iff), &
1077                  o_fsw_srf(nsrf)%flag,o_fsw_srf(nsrf)%name,"SW "//clnsurf(nsrf),"W/m2")
1078             CALL histdef2d(iff,clef_stations(iff), &
1079                  o_wbils_srf(nsrf)%flag,o_wbils_srf(nsrf)%name,"Bilan sol "//clnsurf(nsrf),"W/m2" )
1080             CALL histdef2d(iff,clef_stations(iff), &
1081                  o_wbilo_srf(nsrf)%flag,o_wbilo_srf(nsrf)%name,"Bilan eau "//clnsurf(nsrf),"kg/(m2*s)")
1082             if (iflag_pbl>1 .and. lev_files(iff).gt.10 ) then
1083                CALL histdef2d(iff,clef_stations(iff), &
1084                     o_tke_srf(nsrf)%flag,o_tke_srf(nsrf)%name,"Max Turb. Kinetic Energy "//clnsurf(nsrf),"-")
1085
1086                IF (.NOT.clef_stations(iff)) THEN
1087                   !
1088                   !IM: there is no way to have one single value in a netcdf file
1089                   !
1090                   type_ecri(1) = 't_max(X)'
1091                   type_ecri(2) = 't_max(X)'
1092                   type_ecri(3) = 't_max(X)'
1093                   type_ecri(4) = 't_max(X)'
1094                   type_ecri(5) = 't_max(X)'
1095                   type_ecri(6) = 't_max(X)'
1096                   CALL histdef2d(iff,clef_stations(iff), &
1097                        o_tke_max_srf(nsrf)%flag,o_tke_max_srf(nsrf)%name,"Max Turb. Kinetic Energy "//clnsurf(nsrf),"-")
1098                   type_ecri(:) = type_ecri_files(:)
1099                ENDIF
1100
1101             endif
1102
1103             CALL histdef2d(iff,clef_stations(iff), &
1104                  o_albe_srf(nsrf)%flag,o_albe_srf(nsrf)%name,"Albedo VIS surf. "//clnsurf(nsrf),"-")
1105             CALL histdef2d(iff,clef_stations(iff), &
1106                  o_rugs_srf(nsrf)%flag,o_rugs_srf(nsrf)%name,"Surface roughness "//clnsurf(nsrf),"m")
1107             CALL histdef2d(iff,clef_stations(iff), &
1108                  o_ages_srf(nsrf)%flag,o_ages_srf(nsrf)%name,"Snow age", "day")
1109          END DO
1110
1111          IF (new_aod .AND. (.NOT. aerosol_couple)) THEN
1112             IF (ok_ade.OR.ok_aie) THEN
1113
1114                CALL histdef2d(iff,clef_stations(iff), &
1115                     o_od550aer%flag,o_od550aer%name, "Total aerosol optical depth at 550nm", "-")
1116                CALL histdef2d(iff,clef_stations(iff), &
1117                     o_od865aer%flag,o_od865aer%name, "Total aerosol optical depth at 870nm", "-")
1118                CALL histdef2d(iff,clef_stations(iff), &
1119                     o_absvisaer%flag,o_absvisaer%name, "Absorption aerosol visible optical depth", "-")
1120                CALL histdef2d(iff,clef_stations(iff), &
1121                     o_od550lt1aer%flag,o_od550lt1aer%name, "Fine mode optical depth", "-")
1122
1123
1124                CALL histdef2d(iff,clef_stations(iff), &
1125                     o_sconcso4%flag,o_sconcso4%name,"Surface Concentration of Sulfate ","kg/m3")
1126                CALL histdef2d(iff,clef_stations(iff), &
1127                     o_sconcoa%flag,o_sconcoa%name,"Surface Concentration of Organic Aerosol ","kg/m3")
1128                CALL histdef2d(iff,clef_stations(iff), &
1129                     o_sconcbc%flag,o_sconcbc%name,"Surface Concentration of Black Carbon ","kg/m3")
1130                CALL histdef2d(iff,clef_stations(iff), &
1131                     o_sconcss%flag,o_sconcss%name,"Surface Concentration of Sea Salt ","kg/m3")
1132                CALL histdef2d(iff,clef_stations(iff), &
1133                     o_sconcdust%flag,o_sconcdust%name,"Surface Concentration of Dust ","kg/m3")
1134                CALL histdef3d(iff,clef_stations(iff), &
1135                     o_concso4%flag,o_concso4%name,"Concentration of Sulfate ","kg/m3")
1136                CALL histdef3d(iff,clef_stations(iff), &
1137                     o_concoa%flag,o_concoa%name,"Concentration of Organic Aerosol ","kg/m3")
1138                CALL histdef3d(iff,clef_stations(iff), &
1139                     o_concbc%flag,o_concbc%name,"Concentration of Black Carbon ","kg/m3")
1140                CALL histdef3d(iff,clef_stations(iff), &
1141                     o_concss%flag,o_concss%name,"Concentration of Sea Salt ","kg/m3")
1142                CALL histdef3d(iff,clef_stations(iff), &
1143                     o_concdust%flag,o_concdust%name,"Concentration of Dust ","kg/m3")
1144                CALL histdef2d(iff,clef_stations(iff), &
1145                     o_loadso4%flag,o_loadso4%name,"Column Load of Sulfate ","kg/m2")
1146                CALL histdef2d(iff,clef_stations(iff), &
1147                     o_loadoa%flag,o_loadoa%name,"Column Load of Organic Aerosol ","kg/m2")
1148                CALL histdef2d(iff,clef_stations(iff), &
1149                     o_loadbc%flag,o_loadbc%name,"Column Load of Black Carbon ","kg/m2")
1150                CALL histdef2d(iff,clef_stations(iff), &
1151                     o_loadss%flag,o_loadss%name,"Column Load of Sea Salt ","kg/m2")
1152                CALL histdef2d(iff,clef_stations(iff), &
1153                     o_loaddust%flag,o_loaddust%name,"Column Load of Dust ","kg/m2")
1154
1155                DO naero = 1, naero_spc
1156                   CALL histdef2d(iff,clef_stations(iff), &
1157                        o_tausumaero(naero)%flag,o_tausumaero(naero)%name,"Aerosol Optical depth at 550 nm "//name_aero(naero),"1")
1158                END DO
1159             ENDIF
1160          ENDIF
1161
1162          IF (ok_ade) THEN
1163             CALL histdef2d(iff,clef_stations(iff), &
1164                  o_topswad%flag,o_topswad%name, "ADE at TOA", "W/m2")
1165             CALL histdef2d(iff,clef_stations(iff), &
1166                  o_topswad0%flag,o_topswad0%name, "ADE clear-sky at TOA", "W/m2")
1167             CALL histdef2d(iff,clef_stations(iff), &
1168                  o_solswad%flag,o_solswad%name, "ADE at SRF", "W/m2")
1169             CALL histdef2d(iff,clef_stations(iff), &
1170                  o_solswad0%flag,o_solswad0%name, "ADE clear-sky at SRF", "W/m2")
1171
1172             CALL histdef2d(iff,clef_stations(iff), &
1173                  o_swtoaas_nat%flag,o_swtoaas_nat%name, "Natural aerosol radiative forcing all-sky at TOA", "W/m2")
1174             CALL histdef2d(iff,clef_stations(iff), &
1175                  o_swsrfas_nat%flag,o_swsrfas_nat%name, "Natural aerosol radiative forcing all-sky at SRF", "W/m2")
1176             CALL histdef2d(iff,clef_stations(iff), &
1177                  o_swtoacs_nat%flag,o_swtoacs_nat%name, "Natural aerosol radiative forcing clear-sky at TOA", "W/m2")
1178             CALL histdef2d(iff,clef_stations(iff), &
1179                  o_swsrfcs_nat%flag,o_swsrfcs_nat%name, "Natural aerosol radiative forcing clear-sky at SRF", "W/m2")
1180
1181             CALL histdef2d(iff,clef_stations(iff), &
1182                  o_swtoaas_ant%flag,o_swtoaas_ant%name, "Anthropogenic aerosol radiative forcing all-sky at TOA", "W/m2")
1183             CALL histdef2d(iff,clef_stations(iff), &
1184                  o_swsrfas_ant%flag,o_swsrfas_ant%name, "Anthropogenic aerosol radiative forcing all-sky at SRF", "W/m2")
1185             CALL histdef2d(iff,clef_stations(iff), &
1186                  o_swtoacs_ant%flag,o_swtoacs_ant%name, "Anthropogenic aerosol radiative forcing clear-sky at TOA", "W/m2")
1187             CALL histdef2d(iff,clef_stations(iff), &
1188                  o_swsrfcs_ant%flag,o_swsrfcs_ant%name, "Anthropogenic aerosol radiative forcing clear-sky at SRF", "W/m2")
1189
1190             IF (.NOT. aerosol_couple) THEN
1191                CALL histdef2d(iff,clef_stations(iff), &
1192                     o_swtoacf_nat%flag,o_swtoacf_nat%name, "Natural aerosol impact on cloud radiative forcing at TOA", "W/m2")
1193                CALL histdef2d(iff,clef_stations(iff), &
1194                     o_swsrfcf_nat%flag,o_swsrfcf_nat%name, "Natural aerosol impact on cloud radiative forcing  at SRF", "W/m2")
1195                CALL histdef2d(iff, clef_stations(iff), o_swtoacf_ant%flag, &
1196                     o_swtoacf_ant%name, &
1197                     "Anthropogenic aerosol impact on cloud radiative forcing at TOA", &
1198                     "W/m2")
1199                CALL histdef2d(iff, clef_stations(iff), o_swsrfcf_ant%flag, &
1200                     o_swsrfcf_ant%name, &
1201                     "Anthropogenic aerosol impact on cloud radiative forcing at SRF", &
1202                     "W/m2")
1203                CALL histdef2d(iff,clef_stations(iff), &
1204                     o_swtoacf_zero%flag,o_swtoacf_zero%name, "Cloud radiative forcing (allsky-clearsky fluxes) at TOA", "W/m2")
1205                CALL histdef2d(iff,clef_stations(iff), &
1206                     o_swsrfcf_zero%flag,o_swsrfcf_zero%name, "Cloud radiative forcing (allsky-clearsky fluxes) at SRF", "W/m2")
1207             ENDIF
1208          ENDIF
1209
1210          IF (ok_aie) THEN
1211             CALL histdef2d(iff,clef_stations(iff), &
1212                  o_topswai%flag,o_topswai%name, "AIE at TOA", "W/m2")
1213             CALL histdef2d(iff,clef_stations(iff), &
1214                  o_solswai%flag,o_solswai%name, "AIE at SFR", "W/m2")
1215             !Cloud droplet number concentration
1216             CALL histdef3d(iff,clef_stations(iff), &
1217                  o_scdnc%flag,o_scdnc%name, "Cloud droplet number concentration","m-3")
1218             CALL histdef2d(iff,clef_stations(iff), &
1219                  o_cldncl%flag,o_cldncl%name, "CDNC at top of liquid water cloud", "m-3")
1220             CALL histdef3d(iff,clef_stations(iff), &
1221                  o_reffclws%flag,o_reffclws%name, "Stratiform Cloud Droplet Effective Radius (aerosol diags.)","m")
1222             CALL histdef3d(iff,clef_stations(iff), &
1223                  o_reffclwc%flag,o_reffclwc%name, "Convective Cloud Droplet Effective Radius (aerosol diags.)","m")
1224             CALL histdef2d(iff,clef_stations(iff), &
1225                  o_cldnvi%flag,o_cldnvi%name, "Column Integrated Cloud Droplet Number", "m-2")
1226             CALL histdef3d(iff,clef_stations(iff), &
1227                  o_lcc3d%flag,o_lcc3d%name, "Cloud liquid fraction","1")
1228             CALL histdef3d(iff,clef_stations(iff), &
1229                  o_lcc3dcon%flag,o_lcc3dcon%name, "Convective cloud liquid fraction","1")
1230             CALL histdef3d(iff,clef_stations(iff), &
1231                  o_lcc3dstra%flag,o_lcc3dstra%name, "Stratiform cloud liquid fraction","1")
1232             CALL histdef2d(iff,clef_stations(iff), &
1233                  o_lcc%flag,o_lcc%name, "Cloud liquid fraction at top of cloud","1")
1234             CALL histdef2d(iff,clef_stations(iff), &
1235                  o_reffclwtop%flag,o_reffclwtop%name, "Droplet effective radius at top of liquid water cloud", "m")
1236          ENDIF
1237
1238
1239          CALL histdef2d(iff,clef_stations(iff), &
1240               o_alb1%flag,o_alb1%name, "Surface VIS albedo", "-")
1241          CALL histdef2d(iff,clef_stations(iff), &
1242               o_alb2%flag,o_alb2%name, "Surface Near IR albedo", "-")
1243          CALL histdef2d(iff,clef_stations(iff), &
1244               o_cdrm%flag,o_cdrm%name, "Momentum drag coef.", "-")
1245          CALL histdef2d(iff,clef_stations(iff), &
1246               o_cdrh%flag,o_cdrh%name, "Heat drag coef.", "-" )
1247          CALL histdef2d(iff,clef_stations(iff), &
1248               o_cldl%flag,o_cldl%name, "Low-level cloudiness", "-")
1249          CALL histdef2d(iff,clef_stations(iff), &
1250               o_cldm%flag,o_cldm%name, "Mid-level cloudiness", "-")
1251          CALL histdef2d(iff,clef_stations(iff), &
1252               o_cldh%flag,o_cldh%name, "High-level cloudiness", "-")
1253          CALL histdef2d(iff,clef_stations(iff), &
1254               o_cldt%flag,o_cldt%name, "Total cloudiness", "-")
1255          CALL histdef2d(iff,clef_stations(iff), &
1256               o_cldq%flag,o_cldq%name, "Cloud liquid water path", "kg/m2")
1257          CALL histdef2d(iff,clef_stations(iff), &
1258               o_lwp%flag,o_lwp%name, "Cloud water path", "kg/m2")
1259          CALL histdef2d(iff,clef_stations(iff), &
1260               o_iwp%flag,o_iwp%name, "Cloud ice water path", "kg/m2" )
1261          CALL histdef2d(iff,clef_stations(iff), &
1262               o_ue%flag,o_ue%name, "Zonal energy transport", "-")
1263          CALL histdef2d(iff,clef_stations(iff), &
1264               o_ve%flag,o_ve%name, "Merid energy transport", "-")
1265          CALL histdef2d(iff,clef_stations(iff), &
1266               o_uq%flag,o_uq%name, "Zonal humidity transport", "-")
1267          CALL histdef2d(iff,clef_stations(iff), &
1268               o_vq%flag,o_vq%name, "Merid humidity transport", "-")
1269
1270          IF(iflag_con.GE.3) THEN ! sb
1271             CALL histdef2d(iff,clef_stations(iff), &
1272                  o_cape%flag,o_cape%name, "Conv avlbl pot ener", "J/kg")
1273             CALL histdef2d(iff,clef_stations(iff), &
1274                  o_pbase%flag,o_pbase%name, "Cld base pressure", "Pa")
1275             CALL histdef2d(iff,clef_stations(iff), &
1276                  o_ptop%flag,o_ptop%name, "Cld top pressure", "Pa")
1277             CALL histdef2d(iff,clef_stations(iff), &
1278                  o_fbase%flag,o_fbase%name, "Cld base mass flux", "kg/m2/s")
1279             if (iflag_con /= 30) then
1280                CALL histdef2d(iff,clef_stations(iff), &
1281                     o_plcl%flag,o_plcl%name, "Lifting Condensation Level", "hPa")
1282                CALL histdef2d(iff,clef_stations(iff), &
1283                     o_plfc%flag,o_plfc%name, "Level of Free Convection", "hPa")
1284                CALL histdef2d(iff,clef_stations(iff), &
1285                     o_wbeff%flag,o_wbeff%name, "Conv. updraft velocity at LFC (<100)", "m/s")
1286             end if
1287             IF (.NOT.clef_stations(iff)) THEN
1288                !
1289                !IM: there is no way to have one single value in a netcdf file
1290                !
1291                type_ecri(1) = 't_max(X)'
1292                type_ecri(2) = 't_max(X)'
1293                type_ecri(3) = 't_max(X)'
1294                type_ecri(4) = 't_max(X)'
1295                type_ecri(5) = 't_max(X)'
1296                type_ecri(6) = 't_max(X)'
1297                CALL histdef2d(iff,clef_stations(iff), &
1298                     o_cape_max%flag,o_cape_max%name, "CAPE max.", "J/kg")
1299             ENDIF
1300             type_ecri(:) = type_ecri_files(:)
1301             CALL histdef3d(iff,clef_stations(iff), &
1302                  o_upwd%flag,o_upwd%name, "saturated updraft", "kg/m2/s")
1303             CALL histdef3d(iff,clef_stations(iff), &
1304                  o_Ma%flag,o_Ma%name, "undilute adiab updraft", "kg/m2/s")
1305             CALL histdef3d(iff,clef_stations(iff), &
1306                  o_dnwd%flag,o_dnwd%name, "saturated downdraft", "kg/m2/s")
1307             CALL histdef3d(iff,clef_stations(iff), &
1308                  o_dnwd0%flag,o_dnwd0%name, "unsat. downdraft", "kg/m2/s")
1309             CALL histdef3d(iff,clef_stations(iff), &
1310                  o_mc%flag,o_mc%name, "Convective mass flux", "kg/m2/s")
1311             type_ecri(1) = 'inst(X)'
1312             type_ecri(2) = 'inst(X)'
1313             type_ecri(3) = 'inst(X)'
1314             type_ecri(4) = 'inst(X)'
1315             type_ecri(5) = 'inst(X)'
1316             type_ecri(6) = 'inst(X)'
1317             CALL histdef2d(iff,clef_stations(iff), &
1318                  o_ftime_con%flag,o_ftime_con%name, "Fraction of time convection Occurs", " ")
1319             type_ecri(:) = type_ecri_files(:)
1320          ENDIF !iflag_con .GE. 3
1321
1322          CALL histdef2d(iff,clef_stations(iff), &
1323               o_prw%flag,o_prw%name, "Precipitable water", "kg/m2")
1324          CALL histdef2d(iff,clef_stations(iff), &
1325               o_s_pblh%flag,o_s_pblh%name, "Boundary Layer Height", "m")
1326          CALL histdef2d(iff,clef_stations(iff), &
1327               o_s_pblt%flag,o_s_pblt%name, "t at Boundary Layer Height", "K")
1328          CALL histdef2d(iff,clef_stations(iff), &
1329               o_s_lcl%flag,o_s_lcl%name, "Condensation level", "m")
1330          CALL histdef2d(iff,clef_stations(iff), &
1331               o_s_therm%flag,o_s_therm%name, "Exces du thermique", "K")
1332          !IM : Les champs suivants (s_oliqCL, s_cteiCL, s_trmb1, s_trmb2, s_trmb3) ne sont pas definis dans HBTM.F
1333          !CALL histdef2d(iff,clef_stations(iff), &
1334          !o_s_capCL%flag,o_s_capCL%name, "Conv avlbl pot enerfor ABL", "J/m2" )
1335          !CALL histdef2d(iff,clef_stations(iff), &
1336          !o_s_oliqCL%flag,o_s_oliqCL%name, "Liq Water in BL", "kg/m2")
1337          !CALL histdef2d(iff,clef_stations(iff), &
1338          !o_s_cteiCL%flag,o_s_cteiCL%name, "Instability criteria(ABL)", "K")
1339          !CALL histdef2d(iff,clef_stations(iff), &
1340          !o_s_trmb1%flag,o_s_trmb1%name, "deep_cape(HBTM2)", "J/m2")
1341          !CALL histdef2d(iff,clef_stations(iff), &
1342          !o_s_trmb2%flag,o_s_trmb2%name, "inhibition (HBTM2)", "J/m2")
1343          !CALL histdef2d(iff,clef_stations(iff), &
1344          !o_s_trmb3%flag,o_s_trmb3%name, "Point Omega (HBTM2)", "m")
1345
1346          ! Champs interpolles sur des niveaux de pression
1347
1348          type_ecri(1) = 'inst(X)'
1349          type_ecri(2) = 'inst(X)'
1350          type_ecri(3) = 'inst(X)'
1351          type_ecri(4) = 'inst(X)'
1352          type_ecri(5) = 'inst(X)'
1353          type_ecri(6) = 'inst(X)'
1354
1355          ! Attention a reverifier
1356
1357          ilev=0       
1358          DO k=1, nlevSTD
1359             bb2=clevSTD(k)
1360             IF(bb2.EQ."850".OR.bb2.EQ."700".OR.bb2.EQ."500".OR.bb2.EQ."200" &
1361                  .OR.bb2.EQ."100".OR.bb2.EQ."50".OR.bb2.EQ."10")THEN
1362                ilev=ilev+1
1363                !     print*,'ilev k bb2 flag name ',ilev,k, bb2,o_uSTDlevs(ilev)%flag,o_uSTDlevs(ilev)%name
1364                CALL histdef2d(iff,clef_stations(iff), &
1365                     o_uSTDlevs(ilev)%flag,o_uSTDlevs(ilev)%name,"Zonal wind "//bb2//"hPa", "m/s")
1366                CALL histdef2d(iff,clef_stations(iff), &
1367                     o_vSTDlevs(ilev)%flag,o_vSTDlevs(ilev)%name,"Meridional wind "//bb2//"hPa", "m/s")
1368                CALL histdef2d(iff,clef_stations(iff), &
1369                     o_wSTDlevs(ilev)%flag,o_wSTDlevs(ilev)%name,"Vertical wind "//bb2//"hPa", "Pa/s")
1370                CALL histdef2d(iff,clef_stations(iff), &
1371                     o_zSTDlevs(ilev)%flag,o_zSTDlevs(ilev)%name,"Geopotential height "//bb2//"hPa", "m")
1372                CALL histdef2d(iff,clef_stations(iff), &
1373                     o_qSTDlevs(ilev)%flag,o_qSTDlevs(ilev)%name,"Specific humidity "//bb2//"hPa", "kg/kg" )
1374                CALL histdef2d(iff,clef_stations(iff), &
1375                     o_tSTDlevs(ilev)%flag,o_tSTDlevs(ilev)%name,"Temperature "//bb2//"hPa", "K")
1376             ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR."500".OR.bb2.EQ."200".OR.bb2.EQ."50".OR.bb2.EQ."10")
1377          ENDDO
1378          type_ecri(:) = type_ecri_files(:)
1379
1380          CALL histdef2d(iff,clef_stations(iff), &
1381               o_t_oce_sic%flag,o_t_oce_sic%name, "Temp mixte oce-sic", "K")
1382
1383          IF (type_ocean=='slab') &
1384               CALL histdef2d(iff,clef_stations(iff), &
1385               o_slab_bils%flag, o_slab_bils%name,"Bilan au sol sur ocean slab", "W/m2")
1386
1387          ! Couplage conv-CL
1388          IF (iflag_con.GE.3) THEN
1389             IF (iflag_coupl>=1) THEN
1390                CALL histdef2d(iff,clef_stations(iff), &
1391                     o_ale_bl%flag,o_ale_bl%name, "ALE BL", "m2/s2")
1392                CALL histdef2d(iff,clef_stations(iff), &
1393                     o_alp_bl%flag,o_alp_bl%name, "ALP BL", "m2/s2")
1394             ENDIF
1395          ENDIF !(iflag_con.GE.3)
1396
1397          CALL histdef2d(iff,clef_stations(iff), &
1398               o_weakinv%flag,o_weakinv%name, "Weak inversion", "-")
1399          CALL histdef2d(iff,clef_stations(iff), &
1400               o_dthmin%flag,o_dthmin%name, "dTheta mini", "K/m")
1401          CALL histdef2d(iff,clef_stations(iff), &
1402               o_rh2m%flag,o_rh2m%name, "Relative humidity at 2m", "%" )
1403
1404          IF (.NOT.clef_stations(iff)) THEN
1405             !
1406             !IM: there is no way to have one single value in a netcdf file
1407             !
1408             type_ecri(1) = 't_min(X)'
1409             type_ecri(2) = 't_min(X)'
1410             type_ecri(3) = 't_min(X)'
1411             type_ecri(4) = 't_min(X)'
1412             type_ecri(5) = 't_min(X)'
1413             type_ecri(6) = 't_min(X)'
1414             CALL histdef2d(iff,clef_stations(iff),o_rh2m_min%flag,o_rh2m_min%name, "Min Relative humidity at 2m", "%" )
1415             type_ecri(1) = 't_max(X)'
1416             type_ecri(2) = 't_max(X)'
1417             type_ecri(3) = 't_max(X)'
1418             type_ecri(4) = 't_max(X)'
1419             type_ecri(5) = 't_max(X)'
1420             type_ecri(6) = 't_max(X)'
1421             CALL histdef2d(iff,clef_stations(iff),o_rh2m_max%flag,o_rh2m_max%name, "Max Relative humidity at 2m", "%" )
1422          ENDIF
1423
1424          type_ecri(:) = type_ecri_files(:)
1425          CALL histdef2d(iff,clef_stations(iff),o_qsat2m%flag,o_qsat2m%name, "Saturant humidity at 2m", "%")
1426          CALL histdef2d(iff,clef_stations(iff),o_tpot%flag,o_tpot%name, "Surface air potential temperature", "K")
1427          CALL histdef2d(iff,clef_stations(iff), &
1428               o_tpote%flag,o_tpote%name, "Surface air equivalent potential temperature", "K")
1429          CALL histdef2d(iff,clef_stations(iff),o_SWnetOR%flag,o_SWnetOR%name, "Sfce net SW radiation OR", "W/m2")
1430          CALL histdef2d(iff,clef_stations(iff),o_SWdownOR%flag,o_SWdownOR%name, "Sfce incident SW radiation OR", "W/m2")
1431          CALL histdef2d(iff,clef_stations(iff),o_LWdownOR%flag,o_LWdownOR%name, "Sfce incident LW radiation OR", "W/m2")
1432          CALL histdef2d(iff,clef_stations(iff),o_snowl%flag,o_snowl%name, "Solid Large-scale Precip.", "kg/(m2*s)")
1433
1434          CALL histdef2d(iff,clef_stations(iff),o_solldown%flag,o_solldown%name, "Down. IR rad. at surface", "W/m2")
1435          CALL histdef2d(iff,clef_stations(iff),o_dtsvdfo%flag,o_dtsvdfo%name, "Boundary-layer dTs(o)", "K/s")
1436          CALL histdef2d(iff,clef_stations(iff),o_dtsvdft%flag,o_dtsvdft%name, "Boundary-layer dTs(t)", "K/s")
1437          CALL histdef2d(iff,clef_stations(iff),o_dtsvdfg%flag,o_dtsvdfg%name, "Boundary-layer dTs(g)", "K/s")
1438          CALL histdef2d(iff,clef_stations(iff),o_dtsvdfi%flag,o_dtsvdfi%name, "Boundary-layer dTs(g)", "K/s")
1439          CALL histdef2d(iff,clef_stations(iff),o_rugs%flag,o_rugs%name, "rugosity", "-" )
1440
1441          ! Champs 3D:
1442          CALL histdef3d(iff,clef_stations(iff),o_ec550aer%flag,o_ec550aer%name, "Extinction at 550nm", "m^-1")
1443          CALL histdef3d(iff,clef_stations(iff),o_lwcon%flag,o_lwcon%name, "Cloud liquid water content", "kg/kg")
1444          CALL histdef3d(iff,clef_stations(iff),o_iwcon%flag,o_iwcon%name, "Cloud ice water content", "kg/kg")
1445          CALL histdef3d(iff,clef_stations(iff),o_temp%flag,o_temp%name, "Air temperature", "K" )
1446          CALL histdef3d(iff,clef_stations(iff),o_theta%flag,o_theta%name, "Potential air temperature", "K" )
1447          CALL histdef3d(iff,clef_stations(iff),o_ovap%flag,o_ovap%name, "Specific humidity", "kg/kg" )
1448          CALL histdef3d(iff,clef_stations(iff),o_oliq%flag,o_oliq%name, "Condensed water", "kg/kg" )
1449          CALL histdef3d(iff,clef_stations(iff), &
1450               o_ovapinit%flag,o_ovapinit%name, "Specific humidity (begin of timestep)", "kg/kg" )
1451          CALL histdef3d(iff,clef_stations(iff), &
1452               o_geop%flag,o_geop%name, "Geopotential height", "m2/s2")
1453          CALL histdef3d(iff,clef_stations(iff), &
1454               o_vitu%flag,o_vitu%name, "Zonal wind", "m/s" )
1455          CALL histdef3d(iff,clef_stations(iff), &
1456               o_vitv%flag,o_vitv%name, "Meridional wind", "m/s" )
1457          CALL histdef3d(iff,clef_stations(iff), &
1458               o_vitw%flag,o_vitw%name, "Vertical wind", "Pa/s" )
1459          CALL histdef3d(iff,clef_stations(iff), &
1460               o_pres%flag,o_pres%name, "Air pressure", "Pa" )
1461          CALL histdef3d(iff,clef_stations(iff), &
1462               o_paprs%flag,o_paprs%name, "Air pressure Inter-Couches", "Pa" )
1463          CALL histdef3d(iff,clef_stations(iff), &
1464               o_mass%flag,o_mass%name, "Masse Couches", "kg/m2" )
1465          CALL histdef3d(iff,clef_stations(iff), &
1466               o_zfull%flag,o_zfull%name, "Altitude of full pressure levels", "m" )
1467          CALL histdef3d(iff,clef_stations(iff), &
1468               o_zhalf%flag,o_zhalf%name, "Altitude of half pressure levels", "m" )
1469          CALL histdef3d(iff,clef_stations(iff), &
1470               o_rneb%flag,o_rneb%name, "Cloud fraction", "-")
1471          CALL histdef3d(iff,clef_stations(iff), &
1472               o_rnebcon%flag,o_rnebcon%name, "Convective Cloud Fraction", "-")
1473          CALL histdef3d(iff,clef_stations(iff), &
1474               o_rnebls%flag,o_rnebls%name, "LS Cloud fraction", "-")
1475          CALL histdef3d(iff,clef_stations(iff), &
1476               o_rhum%flag,o_rhum%name, "Relative humidity", "-")
1477          CALL histdef3d(iff,clef_stations(iff), &
1478               o_ozone%flag,o_ozone%name, "Ozone mole fraction", "-")
1479          if (read_climoz == 2) &
1480               CALL histdef3d(iff,clef_stations(iff), &
1481               o_ozone_light%flag,o_ozone_light%name, &
1482               "Daylight ozone mole fraction", "-")
1483          CALL histdef3d(iff,clef_stations(iff), &
1484               o_dtphy%flag,o_dtphy%name, "Physics dT", "K/s")
1485          CALL histdef3d(iff,clef_stations(iff), &
1486               o_dqphy%flag,o_dqphy%name, "Physics dQ", "(kg/kg)/s")
1487          CALL histdef3d(iff,clef_stations(iff), &
1488               o_cldtau%flag,o_cldtau%name, "Cloud optical thickness", "1")
1489          CALL histdef3d(iff,clef_stations(iff), &
1490               o_cldemi%flag,o_cldemi%name, "Cloud optical emissivity", "1")
1491          !IM: bug ?? dimensionnement variables (klon,klev+1) pmflxr, pmflxs, prfl, psfl
1492          CALL histdef3d(iff,clef_stations(iff), &
1493               o_pr_con_l%flag,o_pr_con_l%name, "Convective precipitation lic", " ")
1494          CALL histdef3d(iff,clef_stations(iff), &
1495               o_pr_con_i%flag,o_pr_con_i%name, "Convective precipitation ice", " ")
1496          CALL histdef3d(iff,clef_stations(iff), &
1497               o_pr_lsc_l%flag,o_pr_lsc_l%name, "Large scale precipitation lic", " ")
1498          CALL histdef3d(iff,clef_stations(iff), &
1499               o_pr_lsc_i%flag,o_pr_lsc_i%name, "Large scale precipitation ice", " ")
1500          !Cloud droplet effective radius
1501          CALL histdef3d(iff,clef_stations(iff), &
1502               o_re%flag,o_re%name, "Cloud droplet effective radius","um")
1503          CALL histdef3d(iff,clef_stations(iff), &
1504               o_fl%flag,o_fl%name, "Denominator of Cloud droplet effective radius"," ")
1505          !FH Sorties pour la couche limite
1506          if (iflag_pbl>1) then
1507             CALL histdef3d(iff,clef_stations(iff), &
1508                  o_tke%flag,o_tke%name, "TKE", "m2/s2")
1509             IF (.NOT.clef_stations(iff)) THEN
1510                !
1511                !IM: there is no way to have one single value in a netcdf file
1512                !
1513                type_ecri(1) = 't_max(X)'
1514                type_ecri(2) = 't_max(X)'
1515                type_ecri(3) = 't_max(X)'
1516                type_ecri(4) = 't_max(X)'
1517                type_ecri(5) = 't_max(X)'
1518                type_ecri(6) = 't_max(X)'
1519                CALL histdef3d(iff,clef_stations(iff), &
1520                     o_tke_max%flag,o_tke_max%name, "TKE max", "m2/s2")
1521             ENDIF
1522             type_ecri(:) = type_ecri_files(:)
1523          endif
1524
1525          CALL histdef3d(iff,clef_stations(iff), &
1526               o_kz%flag,o_kz%name, "Kz melange", "m2/s")
1527          IF (.NOT.clef_stations(iff)) THEN
1528             !
1529             !IM: there is no way to have one single value in a netcdf file
1530             !
1531             type_ecri(1) = 't_max(X)'
1532             type_ecri(2) = 't_max(X)'
1533             type_ecri(3) = 't_max(X)'
1534             type_ecri(4) = 't_max(X)'
1535             type_ecri(5) = 't_max(X)'
1536             type_ecri(6) = 't_max(X)'
1537             CALL histdef3d(iff,clef_stations(iff), &
1538                  o_kz_max%flag,o_kz_max%name, "Kz melange max", "m2/s" )
1539          ENDIF
1540          type_ecri(:) = type_ecri_files(:)
1541          CALL histdef3d(iff,clef_stations(iff), &
1542               o_clwcon%flag,o_clwcon%name, "Convective Cloud Liquid water content", "kg/kg")
1543          CALL histdef3d(iff,clef_stations(iff), &
1544               o_dtdyn%flag,o_dtdyn%name, "Dynamics dT", "K/s")
1545          CALL histdef3d(iff,clef_stations(iff), &
1546               o_dqdyn%flag,o_dqdyn%name, "Dynamics dQ", "(kg/kg)/s")
1547          CALL histdef3d(iff,clef_stations(iff), &
1548               o_dudyn%flag,o_dudyn%name, "Dynamics dU", "m/s2")
1549          CALL histdef3d(iff,clef_stations(iff), &
1550               o_dvdyn%flag,o_dvdyn%name, "Dynamics dV", "m/s2")
1551          CALL histdef3d(iff,clef_stations(iff), &
1552               o_dtcon%flag,o_dtcon%name, "Convection dT", "K/s")
1553          CALL histdef3d(iff,clef_stations(iff), &
1554               o_ducon%flag,o_ducon%name, "Convection du", "m/s2")
1555          CALL histdef3d(iff,clef_stations(iff), &
1556               o_dvcon%flag,o_dvcon%name, "Convection dv", "m/s2")
1557          CALL histdef3d(iff,clef_stations(iff), &
1558               o_dqcon%flag,o_dqcon%name, "Convection dQ", "(kg/kg)/s")
1559
1560          ! Wakes
1561          IF(iflag_con.EQ.3) THEN
1562             IF (iflag_wake >= 1) THEN
1563                CALL histdef2d(iff,clef_stations(iff), &
1564                     o_ale_wk%flag,o_ale_wk%name, "ALE WK", "m2/s2")
1565                CALL histdef2d(iff,clef_stations(iff), &
1566                     o_alp_wk%flag,o_alp_wk%name, "ALP WK", "m2/s2")
1567                CALL histdef2d(iff,clef_stations(iff), &
1568                     o_ale%flag,o_ale%name, "ALE", "m2/s2")
1569                CALL histdef2d(iff,clef_stations(iff), &
1570                     o_alp%flag,o_alp%name, "ALP", "W/m2")
1571                CALL histdef2d(iff,clef_stations(iff),o_cin%flag,o_cin%name, "Convective INhibition", "m2/s2")
1572                CALL histdef2d(iff,clef_stations(iff),o_wape%flag,o_WAPE%name, "WAPE", "m2/s2")
1573                CALL histdef2d(iff,clef_stations(iff),o_wake_h%flag,o_wake_h%name, "wake_h", "-")
1574                CALL histdef2d(iff,clef_stations(iff),o_wake_s%flag,o_wake_s%name, "wake_s", "-")
1575                CALL histdef3d(iff,clef_stations(iff),o_dtwak%flag,o_dtwak%name, "Wake dT", "K/s")
1576                CALL histdef3d(iff,clef_stations(iff),o_dqwak%flag,o_dqwak%name, "Wake dQ", "(kg/kg)/s")
1577                CALL histdef3d(iff,clef_stations(iff),o_wake_deltat%flag,o_wake_deltat%name, "wake_deltat", " ")
1578                CALL histdef3d(iff,clef_stations(iff),o_wake_deltaq%flag,o_wake_deltaq%name, "wake_deltaq", " ")
1579                CALL histdef3d(iff,clef_stations(iff),o_wake_omg%flag,o_wake_omg%name, "wake_omg", " ")
1580             ENDIF
1581!!! RomP             CALL histdef3d(iff,clef_stations(iff),o_Vprecip%flag,o_Vprecip%name, "precipitation vertical profile", "-")
1582             CALL histdef3d(iff,clef_stations(iff),o_ftd%flag,o_ftd%name, "tend temp due aux descentes precip", "-")
1583             CALL histdef3d(iff,clef_stations(iff),o_fqd%flag,o_fqd%name,"tend vap eau due aux descentes precip", "-")
1584          ENDIF !(iflag_con.EQ.3)
1585
1586          IF(iflag_con.GE.3) THEN   !  RomP >>>
1587            CALL histdef3d(iff,clef_stations(iff),o_wdtrainA%flag,o_wdtrainA%name, "precipitation from AA", "-")
1588            CALL histdef3d(iff,clef_stations(iff),o_wdtrainM%flag,o_wdtrainM%name, "precipitation from mixture", "-")
1589            CALL histdef3d(iff,clef_stations(iff),o_Vprecip%flag,o_Vprecip%name, "precipitation vertical profile", "-")
1590          ENDIF !(iflag_con.GE.3)   ! <<< RomP
1591
1592!!! nrlmd le 10/04/2012
1593
1594        IF (iflag_trig_bl>=1) THEN
1595 CALL histdef2d(iff,clef_stations(iff),o_n2%flag,o_n2%name, "Nombre de panaches de type 2", " ")
1596 CALL histdef2d(iff,clef_stations(iff),o_s2%flag,o_s2%name, "Surface moyenne des panaches de type 2", "m2")
1597
1598 CALL histdef2d(iff,clef_stations(iff),o_proba_notrig%flag,o_proba_notrig%name, "Probabilité de non-déclenchement", " ")
1599 CALL histdef2d(iff,clef_stations(iff),o_random_notrig%flag,o_random_notrig%name, "Tirage aléatoire de non-déclenchement", " ")
1600 CALL histdef2d(iff,clef_stations(iff),o_ale_bl_trig%flag,o_ale_bl_trig%name, "ALE_BL_STAT + Condition P>Pseuil", "m2/s2")
1601 CALL histdef2d(iff,clef_stations(iff),o_ale_bl_stat%flag,o_ale_bl_stat%name, "ALE_BL_STAT", "m2/s2")
1602       ENDIF  !(iflag_trig_bl>=1)
1603
1604        IF (iflag_clos_bl>=1) THEN
1605 CALL histdef2d(iff,clef_stations(iff),o_alp_bl_det%flag,o_alp_bl_det%name, "ALP_BL_DET", "W/m2")
1606 CALL histdef2d(iff,clef_stations(iff),o_alp_bl_fluct_m%flag,o_alp_bl_fluct_m%name, "ALP_BL_FLUCT_M", "W/m2")
1607 CALL histdef2d(iff,clef_stations(iff),o_alp_bl_fluct_tke%flag,o_alp_bl_fluct_tke%name, "ALP_BL_FLUCT_TKE", "W/m2")
1608 CALL histdef2d(iff,clef_stations(iff),o_alp_bl_conv%flag,o_alp_bl_conv%name, "ALP_BL_CONV", "W/m2")
1609 CALL histdef2d(iff,clef_stations(iff),o_alp_bl_stat%flag,o_alp_bl_stat%name, "ALP_BL_STAT", "W/m2")
1610       ENDIF  !(iflag_clos_bl>=1)
1611
1612!!! fin nrlmd le 10/04/2012
1613
1614          CALL histdef3d(iff,clef_stations(iff),o_dtlsc%flag,o_dtlsc%name, "Condensation dT", "K/s")
1615          CALL histdef3d(iff,clef_stations(iff),o_dtlschr%flag,o_dtlschr%name,"Large-scale condensational heating rate","K/s")
1616          CALL histdef3d(iff,clef_stations(iff),o_dqlsc%flag,o_dqlsc%name, "Condensation dQ", "(kg/kg)/s")
1617          CALL histdef3d(iff,clef_stations(iff),o_beta_prec%flag,o_beta_prec%name, "LS Conversion rate to prec", "(kg/kg)/s")
1618          CALL histdef3d(iff,clef_stations(iff),o_dtvdf%flag,o_dtvdf%name, "Boundary-layer dT", "K/s")
1619          CALL histdef3d(iff,clef_stations(iff),o_dqvdf%flag,o_dqvdf%name, "Boundary-layer dQ", "(kg/kg)/s")
1620          CALL histdef3d(iff,clef_stations(iff),o_dteva%flag,o_dteva%name, "Reevaporation dT", "K/s")
1621          CALL histdef3d(iff,clef_stations(iff),o_dqeva%flag,o_dqeva%name, "Reevaporation dQ", "(kg/kg)/s")
1622          CALL histdef3d(iff,clef_stations(iff),o_ptconv%flag,o_ptconv%name, "POINTS CONVECTIFS", " ")
1623          CALL histdef3d(iff,clef_stations(iff),o_ratqs%flag,o_ratqs%name, "RATQS", " ")
1624          CALL histdef3d(iff,clef_stations(iff),o_dtthe%flag,o_dtthe%name, "Thermal dT", "K/s")
1625
1626          if(iflag_thermals.ge.1) THEN
1627             CALL histdef3d(iff,clef_stations(iff),o_dqlscth%flag,o_dqlscth%name, "dQ therm.", "(kg/kg)/s")
1628             CALL histdef3d(iff,clef_stations(iff),o_dqlscst%flag,o_dqlscst%name, "dQ strat.", "(kg/kg)/s")
1629             CALL histdef3d(iff,clef_stations(iff),o_dtlscth%flag,o_dtlscth%name, "dQ therm.", "K/s")
1630             CALL histdef3d(iff,clef_stations(iff),o_dtlscst%flag,o_dtlscst%name, "dQ strat.", "K/s")
1631             CALL histdef2d(iff,clef_stations(iff),o_plulth%flag,o_plulth%name, "Rainfall therm.", "K/s")
1632             CALL histdef2d(iff,clef_stations(iff),o_plulst%flag,o_plulst%name, "Rainfall strat.", "K/s")
1633             CALL histdef2d(iff,clef_stations(iff),o_lmaxth%flag,o_lmaxth%name, "Upper level thermals", "")
1634             CALL histdef3d(iff,clef_stations(iff),o_ptconvth%flag,o_ptconvth%name, "POINTS CONVECTIFS therm.", " ")
1635             CALL histdef3d(iff,clef_stations(iff),o_f_th%flag,o_f_th%name, "Thermal plume mass flux", "kg/(m2*s)")
1636             CALL histdef3d(iff,clef_stations(iff),o_e_th%flag,o_e_th%name,"Thermal plume entrainment","K/s")
1637             CALL histdef3d(iff,clef_stations(iff),o_w_th%flag,o_w_th%name,"Thermal plume vertical velocity","m/s")
1638             CALL histdef2d(iff,clef_stations(iff), &
1639                  o_ftime_th%flag,o_ftime_th%name,"Fraction of time Shallow convection occurs"," ")
1640             CALL histdef3d(iff,clef_stations(iff), &
1641                  o_q_th%flag,o_q_th%name, "Thermal plume total humidity", "kg/kg")
1642             CALL histdef3d(iff,clef_stations(iff), &
1643                  o_a_th%flag,o_a_th%name, "Thermal plume fraction", "")
1644             CALL histdef3d(iff,clef_stations(iff), &
1645                  o_d_th%flag,o_d_th%name, "Thermal plume detrainment", "K/s")
1646
1647             CALL histdef2d(iff,clef_stations(iff), &
1648                  o_f0_th%flag,o_f0_th%name, "Thermal closure mass flux", "K/s")
1649             CALL histdef2d(iff,clef_stations(iff), &
1650                  o_zmax_th%flag,o_zmax_th%name, "Thermal plume height", "K/s")
1651             CALL histdef3d(iff,clef_stations(iff), &
1652                  o_dqthe%flag,o_dqthe%name, "Thermal dQ", "(kg/kg)/s")
1653          endif !iflag_thermals.ge.1
1654          CALL histdef3d(iff,clef_stations(iff), &
1655               o_dtajs%flag,o_dtajs%name, "Dry adjust. dT", "K/s")
1656          CALL histdef3d(iff,clef_stations(iff), &
1657               o_dqajs%flag,o_dqajs%name, "Dry adjust. dQ", "(kg/kg)/s")
1658          CALL histdef3d(iff,clef_stations(iff), &
1659               o_dtswr%flag,o_dtswr%name, "SW radiation dT", "K/s")
1660          CALL histdef3d(iff,clef_stations(iff), &
1661               o_dtsw0%flag,o_dtsw0%name, "CS SW radiation dT", "K/s")
1662          CALL histdef3d(iff,clef_stations(iff), &
1663               o_dtlwr%flag,o_dtlwr%name, "LW radiation dT", "K/s")
1664          CALL histdef3d(iff,clef_stations(iff), &
1665               o_dtlw0%flag,o_dtlw0%name, "CS LW radiation dT", "K/s")
1666          CALL histdef3d(iff,clef_stations(iff), &
1667               o_dtec%flag,o_dtec%name, "Cinetic dissip dT", "K/s")
1668          CALL histdef3d(iff,clef_stations(iff), &
1669               o_duvdf%flag,o_duvdf%name, "Boundary-layer dU", "m/s2")
1670          CALL histdef3d(iff,clef_stations(iff), &
1671               o_dvvdf%flag,o_dvvdf%name, "Boundary-layer dV", "m/s2")
1672
1673          IF (ok_orodr) THEN
1674             CALL histdef3d(iff,clef_stations(iff), &
1675                  o_duoro%flag,o_duoro%name, "Orography dU", "m/s2")
1676             CALL histdef3d(iff,clef_stations(iff), &
1677                  o_dvoro%flag,o_dvoro%name, "Orography dV", "m/s2")
1678             CALL histdef3d(iff,clef_stations(iff), &
1679                  o_dtoro%flag,o_dtoro%name, "Orography dT", "K/s")
1680          ENDIF
1681
1682          IF (ok_orolf) THEN
1683             CALL histdef3d(iff,clef_stations(iff), &
1684                  o_dulif%flag,o_dulif%name, "Orography dU", "m/s2")
1685             CALL histdef3d(iff,clef_stations(iff), &
1686                  o_dvlif%flag,o_dvlif%name, "Orography dV", "m/s2")
1687             CALL histdef3d(iff,clef_stations(iff), &
1688                  o_dtlif%flag,o_dtlif%name, "Orography dT", "K/s")
1689          ENDIF
1690
1691          IF (ok_hines) then
1692             CALL histdef3d(iff,clef_stations(iff), &
1693                  o_duhin%flag,o_duhin%name, "Hines GWD dU", "m/s2")
1694             CALL histdef3d(iff,clef_stations(iff), &
1695                  o_dvhin%flag,o_dvhin%name, "Hines GWD dV", "m/s2")
1696
1697             CALL histdef3d(iff,clef_stations(iff), &
1698                  o_dthin%flag,o_dthin%name, "Hines GWD dT", "K/s")
1699          ENDIF
1700
1701          CALL histdef3d(iff,clef_stations(iff), &
1702               o_rsu%flag,o_rsu%name, "SW upward radiation", "W m-2")
1703          CALL histdef3d(iff,clef_stations(iff), &
1704               o_rsd%flag,o_rsd%name, "SW downward radiation", "W m-2")
1705          CALL histdef3d(iff,clef_stations(iff), &
1706               o_rlu%flag,o_rlu%name, "LW upward radiation", "W m-2")
1707          CALL histdef3d(iff,clef_stations(iff), &
1708               o_rld%flag,o_rld%name, "LW downward radiation", "W m-2")
1709
1710          CALL histdef3d(iff,clef_stations(iff), &
1711               o_rsucs%flag,o_rsucs%name, "SW CS upward radiation", "W m-2")
1712          CALL histdef3d(iff,clef_stations(iff), &
1713               o_rsdcs%flag,o_rsdcs%name, "SW CS downward radiation", "W m-2")
1714          CALL histdef3d(iff,clef_stations(iff), &
1715               o_rlucs%flag,o_rlucs%name, "LW CS upward radiation", "W m-2")
1716          CALL histdef3d(iff,clef_stations(iff), &
1717               o_rldcs%flag,o_rldcs%name, "LW CS downward radiation", "W m-2")
1718
1719          CALL histdef3d(iff,clef_stations(iff), &
1720               o_tnt%flag,o_tnt%name, "Tendency of air temperature", "K s-1")
1721
1722          CALL histdef3d(iff,clef_stations(iff), &
1723               o_tntc%flag,o_tntc%name, "Tendency of air temperature due to Moist Convection", &
1724               "K s-1")
1725
1726          CALL histdef3d(iff,clef_stations(iff), &
1727               o_tntr%flag,o_tntr%name, "Air temperature tendency due to Radiative heating", &
1728               "K s-1")
1729
1730          CALL histdef3d(iff,clef_stations(iff), &
1731               o_tntscpbl%flag,o_tntscpbl%name, "Air temperature tendency due to St cloud and precipitation and BL mixing", &
1732               "K s-1")
1733
1734          CALL histdef3d(iff,clef_stations(iff), &
1735               o_tnhus%flag,o_tnhus%name, "Tendency of specific humidity", "s-1")
1736
1737          CALL histdef3d(iff,clef_stations(iff), &
1738               o_tnhusc%flag,o_tnhusc%name, "Tendency of specific humidity due to convection", "s-1")
1739
1740          CALL histdef3d(iff,clef_stations(iff), &
1741               o_tnhusscpbl%flag,o_tnhusscpbl%name, "Tendency of Specific humidity due to ST cl, precip and BL mixing", &
1742               "s-1")
1743
1744          CALL histdef3d(iff,clef_stations(iff), &
1745               o_evu%flag,o_evu%name, "Eddy viscosity coefficient for Momentum Variables", "m2 s-1")
1746
1747          CALL histdef3d(iff,clef_stations(iff), &
1748               o_h2o%flag,o_h2o%name, "Mass Fraction of Water", "1")
1749
1750          CALL histdef3d(iff,clef_stations(iff), &
1751               o_mcd%flag,o_mcd%name, "Downdraft COnvective Mass Flux", "kg/(m2*s)")
1752
1753          CALL histdef3d(iff,clef_stations(iff), &
1754               o_dmc%flag,o_dmc%name, "Deep COnvective Mass Flux", "kg/(m2*s)")
1755
1756          CALL histdef3d(iff,clef_stations(iff), &
1757               o_ref_liq%flag,o_ref_liq%name, "Effective radius of convective cloud liquid water particle", "m")
1758
1759          CALL histdef3d(iff,clef_stations(iff), &
1760               o_ref_ice%flag,o_ref_ice%name, "Effective radius of startiform cloud ice particle", "m")
1761
1762          if (RCO2_per.NE.RCO2_act.OR.RCH4_per.NE.RCH4_act.OR. &
1763               RN2O_per.NE.RN2O_act.OR.RCFC11_per.NE.RCFC11_act.OR. &
1764               RCFC12_per.NE.RCFC12_act) THEN
1765
1766             CALL histdef2d(iff,clef_stations(iff),o_rsut4co2%flag,o_rsut4co2%name, &
1767                  "TOA Out SW in 4xCO2 atmosphere", "W/m2")
1768             CALL histdef2d(iff,clef_stations(iff),o_rlut4co2%flag,o_rlut4co2%name, &
1769                  "TOA Out LW in 4xCO2 atmosphere", "W/m2")
1770             CALL histdef2d(iff,clef_stations(iff),o_rsutcs4co2%flag,o_rsutcs4co2%name, &
1771                  "TOA Out CS SW in 4xCO2 atmosphere", "W/m2")
1772             CALL histdef2d(iff,clef_stations(iff),o_rlutcs4co2%flag,o_rlutcs4co2%name, &
1773                  "TOA Out CS LW in 4xCO2 atmosphere", "W/m2")
1774
1775             CALL histdef3d(iff,clef_stations(iff),o_rsu4co2%flag,o_rsu4co2%name, &
1776                  "Upwelling SW 4xCO2 atmosphere", "W/m2")
1777             CALL histdef3d(iff,clef_stations(iff),o_rlu4co2%flag,o_rlu4co2%name, &
1778                  "Upwelling LW 4xCO2 atmosphere", "W/m2")
1779             CALL histdef3d(iff,clef_stations(iff),o_rsucs4co2%flag,o_rsucs4co2%name, &
1780                  "Upwelling CS SW 4xCO2 atmosphere", "W/m2")
1781             CALL histdef3d(iff,clef_stations(iff),o_rlucs4co2%flag,o_rlucs4co2%name, &
1782                  "Upwelling CS LW 4xCO2 atmosphere", "W/m2")
1783
1784             CALL histdef3d(iff,clef_stations(iff),o_rsd4co2%flag,o_rsd4co2%name, &
1785                  "Downwelling SW 4xCO2 atmosphere", "W/m2")
1786             CALL histdef3d(iff,clef_stations(iff),o_rld4co2%flag,o_rld4co2%name, &
1787                  "Downwelling LW 4xCO2 atmosphere", "W/m2")
1788             CALL histdef3d(iff,clef_stations(iff),o_rsdcs4co2%flag,o_rsdcs4co2%name, &
1789                  "Downwelling CS SW 4xCO2 atmosphere", "W/m2")
1790             CALL histdef3d(iff,clef_stations(iff),o_rldcs4co2%flag,o_rldcs4co2%name, &
1791                  "Downwelling CS LW 4xCO2 atmosphere", "W/m2")
1792
1793          endif
1794
1795
1796          IF (nqtot>=3) THEN
1797             DO iq=3,nqtot 
1798                iiq=niadv(iq)
1799                o_trac(iq-2) = ctrl_out((/ 4, 5, 1, 1, 1, 10 /),tname(iiq))
1800                CALL histdef3d (iff,clef_stations(iff), &
1801                o_trac(iq-2)%flag,o_trac(iq-2)%name,'Tracer '//ttext(iiq), "-" )
1802                o_trac_cum(iq-2) = ctrl_out((/ 3, 4, 10, 10, 10, 10 /),'cum'//tname(iiq))
1803                CALL histdef2d (iff,clef_stations(iff), &
1804                o_trac_cum(iq-2)%flag,o_trac_cum(iq-2)%name,'Cumulated tracer '//ttext(iiq), "-" )
1805             ENDDO
1806          ENDIF
1807
1808          CALL histend(nid_files(iff))
1809
1810          ndex2d = 0
1811          ndex3d = 0
1812
1813       ENDIF ! clef_files
1814
1815    ENDDO !  iff
1816
1817    ! Updated write frequencies due to phys_out_filetimesteps.
1818    ! Write frequencies are now in seconds. 
1819    ecrit_mth = ecrit_files(1)
1820    ecrit_day = ecrit_files(2)
1821    ecrit_hf  = ecrit_files(3)
1822    ecrit_ins = ecrit_files(4)
1823    ecrit_LES = ecrit_files(5)
1824    ecrit_ins = ecrit_files(6)
1825
1826    write(lunout,*)'swaero_diag=',swaero_diag
1827    write(lunout,*)'Fin phys_output_mod.F90'
1828  end subroutine phys_output_open
1829
1830  SUBROUTINE histdef2d (iff,lpoint,flag_var,nomvar,titrevar,unitvar)
1831
1832    use ioipsl
1833    USE dimphy
1834    USE mod_phys_lmdz_para
1835    USE iophy
1836
1837    IMPLICIT NONE
1838
1839    include "dimensions.h"
1840    include "temps.h"
1841    include "indicesol.h"
1842    include "clesphys.h"
1843
1844    integer                          :: iff
1845    logical                          :: lpoint
1846    integer, dimension(nfiles)       :: flag_var
1847    character(len=20)                 :: nomvar
1848    character(len=*)                 :: titrevar
1849    character(len=*)                 :: unitvar
1850
1851    real zstophym
1852
1853    if (type_ecri(iff)=='inst(X)'.OR.type_ecri(iff)=='once') then
1854       zstophym=zoutm(iff)
1855    else
1856       zstophym=zdtime
1857    endif
1858
1859    ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def
1860    call conf_physoutputs(nomvar,flag_var)
1861
1862    if(.NOT.lpoint) THEN 
1863       if ( flag_var(iff)<=lev_files(iff) ) then
1864          call histdef (nid_files(iff),nomvar,titrevar,unitvar, &
1865               iim,jj_nb,nhorim(iff), 1,1,1, -99, 32, &
1866               type_ecri(iff), zstophym,zoutm(iff))               
1867       endif
1868    else
1869       if ( flag_var(iff)<=lev_files(iff) ) then
1870          call histdef (nid_files(iff),nomvar,titrevar,unitvar, &
1871               npstn,1,nhorim(iff), 1,1,1, -99, 32, &
1872               type_ecri(iff), zstophym,zoutm(iff))               
1873       endif
1874    endif
1875
1876    ! Set swaero_diag=true if at least one of the concerned variables are defined
1877    if (nomvar=='topswad' .OR. nomvar=='topswai' .OR. nomvar=='solswad' .OR. nomvar=='solswai' ) THEN
1878       if  ( flag_var(iff)<=lev_files(iff) ) then
1879          swaero_diag=.TRUE.
1880       end if
1881    end if
1882  end subroutine histdef2d
1883
1884  SUBROUTINE histdef3d (iff,lpoint,flag_var,nomvar,titrevar,unitvar)
1885
1886    use ioipsl
1887    USE dimphy
1888    USE mod_phys_lmdz_para
1889    USE iophy
1890
1891    IMPLICIT NONE
1892
1893    include "dimensions.h"
1894    include "temps.h"
1895    include "indicesol.h"
1896    include "clesphys.h"
1897
1898    integer                          :: iff
1899    logical                          :: lpoint
1900    integer, dimension(nfiles)       :: flag_var
1901    character(len=20)                 :: nomvar
1902    character(len=*)                 :: titrevar
1903    character(len=*)                 :: unitvar
1904
1905    real zstophym
1906
1907    ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def
1908    call conf_physoutputs(nomvar,flag_var)
1909
1910    if (type_ecri(iff)=='inst(X)'.OR.type_ecri(iff)=='once') then
1911       zstophym=zoutm(iff)
1912    else
1913       zstophym=zdtime
1914    endif
1915
1916    if(.NOT.lpoint) THEN
1917       if ( flag_var(iff)<=lev_files(iff) ) then
1918          call histdef (nid_files(iff), nomvar, titrevar, unitvar, &
1919               iim, jj_nb, nhorim(iff), klev, levmin(iff), &
1920               levmax(iff)-levmin(iff)+1, nvertm(iff), 32, type_ecri(iff), &
1921               zstophym, zoutm(iff))
1922       endif
1923    else
1924       if ( flag_var(iff)<=lev_files(iff) ) then
1925          call histdef (nid_files(iff), nomvar, titrevar, unitvar, &
1926               npstn,1,nhorim(iff), klev, levmin(iff), &
1927               levmax(iff)-levmin(iff)+1, nvertm(iff), 32, &
1928               type_ecri(iff), zstophym,zoutm(iff))
1929       endif
1930    endif
1931  end subroutine histdef3d
1932
1933  SUBROUTINE conf_physoutputs(nam_var,flag_var)
1934!!! Lecture des noms et niveau de sortie des variables dans output.def
1935    !   en utilisant les routines getin de IOIPSL 
1936    use ioipsl
1937
1938    IMPLICIT NONE
1939
1940    include 'iniprint.h'
1941
1942    character(len=20)                :: nam_var
1943    integer, dimension(nfiles)      :: flag_var
1944
1945    IF(prt_level>10) WRITE(lunout,*)'Avant getin: nam_var flag_var ',nam_var,flag_var(:)
1946    call getin('flag_'//nam_var,flag_var)
1947    call getin('name_'//nam_var,nam_var)
1948    IF(prt_level>10) WRITE(lunout,*)'Apres getin: nam_var flag_var ',nam_var,flag_var(:)
1949
1950  END SUBROUTINE conf_physoutputs
1951
1952  SUBROUTINE convers_timesteps(str,dtime,timestep)
1953
1954    use ioipsl
1955    USE phys_cal_mod
1956
1957    IMPLICIT NONE
1958
1959    character(len=20)   :: str
1960    character(len=10)   :: type
1961    integer             :: ipos,il
1962    real                :: ttt,xxx,timestep,dayseconde,dtime
1963    parameter (dayseconde=86400.)
1964    include "temps.h"
1965    include "comconst.h"
1966    include "iniprint.h"
1967
1968    ipos=scan(str,'0123456789.',.true.)
1969    ! 
1970    il=len_trim(str)
1971    write(lunout,*)ipos,il
1972    read(str(1:ipos),*) ttt
1973    write(lunout,*)ttt
1974    type=str(ipos+1:il)
1975
1976
1977    if ( il == ipos ) then
1978       type='day'
1979    endif
1980
1981    if ( type == 'day'.or.type == 'days'.or.type == 'jours'.or.type == 'jour' ) timestep = ttt * dayseconde
1982    if ( type == 'mounths'.or.type == 'mth'.or.type == 'mois' ) then
1983       write(lunout,*)'annee_ref,day_ref mon_len',annee_ref,day_ref,mth_len
1984       timestep = ttt * dayseconde * mth_len
1985    endif
1986    if ( type == 'hours'.or.type == 'hr'.or.type == 'heurs') timestep = ttt * dayseconde / 24.
1987    if ( type == 'mn'.or.type == 'minutes'  ) timestep = ttt * 60.
1988    if ( type == 's'.or.type == 'sec'.or.type == 'secondes'   ) timestep = ttt
1989    if ( type == 'TS' ) timestep = ttt * dtime
1990
1991    write(lunout,*)'type =      ',type
1992    write(lunout,*)'nb j/h/m =  ',ttt
1993    write(lunout,*)'timestep(s)=',timestep
1994
1995  END SUBROUTINE convers_timesteps
1996
1997END MODULE phys_output_mod
1998
Note: See TracBrowser for help on using the repository browser.