source: LMDZ4/trunk/libf/phylmd/phys_output_mod.F90 @ 1117

Last change on this file since 1117 was 1100, checked in by musat, 16 years ago

Homogeneisation flags sorties convection + poches froides
IM

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 46.1 KB
Line 
1! Abderrahmane 12 2007
2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3!!! Ecreture des Sorties du modele dans les fichiers Netcdf :
4! histmth.nc : moyennes mensuelles
5! histday.nc : moyennes journalieres
6! histhf.nc  : moyennes toutes les 3 heures
7! histins.nc : valeurs instantanees
8!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
9
10MODULE phys_output_mod
11
12  IMPLICIT NONE
13
14  private histdef2d, histdef3d
15
16   integer, parameter                           :: nfiles = 5
17   logical, dimension(nfiles), save             :: clef_files
18   integer, dimension(nfiles), save             :: lev_files
19   integer, dimension(nfiles), save             :: nid_files
20
21   integer, dimension(nfiles), private, save :: nhorim, nvertm
22   real, dimension(nfiles), private, save                :: zstophym, zoutm
23   CHARACTER(len=20), dimension(nfiles), private, save   :: type_ecri
24
25!   integer, save                     :: nid_hf3d
26
27!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
28!! Definition pour chaque variable du niveau d ecriture dans chaque fichier
29!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!/ histmth, histday, histhf, histins /)!!!!!!!!!!!!
30!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
31
32  integer, private:: levmin(nfiles) = 1
33  integer, private:: levmax(nfiles)
34
35!!! 1D
36  integer, dimension(nfiles) , save :: flag_phis         = (/ 1, 1, 10, 1, 1 /)
37  integer, dimension(nfiles) , save :: flag_aire         = (/ 1, 1, 10,  1, 1 /)
38  integer, dimension(nfiles) , save :: flag_contfracATM  = (/ 10, 1,  1, 10, 10 /)
39  integer, dimension(nfiles) , save :: flag_contfracOR   = (/ 10, 1,  1, 10, 10 /)
40  integer, dimension(nfiles) , save :: flag_aireTER      = (/ 10, 10, 1, 10, 10 /)
41 
42!!! 2D
43  integer, dimension(nfiles) , save :: flag_flat         = (/ 10, 1, 10, 10, 1 /)
44  integer, dimension(nfiles) , save :: flag_slp          = (/ 1, 1, 1, 10, 1 /)
45  integer, dimension(nfiles) , save :: flag_tsol         = (/ 1, 1, 1, 1, 1 /)
46  integer, dimension(nfiles) , save :: flag_t2m          = (/ 1, 1, 1, 1, 1 /)
47  integer, dimension(nfiles) , save :: flag_t2m_min      = (/ 1, 1, 10, 10, 10 /)
48  integer, dimension(nfiles) , save :: flag_t2m_max      = (/ 1, 1, 10, 10, 10 /)
49  integer, dimension(nfiles) , save :: flag_t2m_sol      = (/ 10, 4, 10, 10, 10 /)
50  integer, dimension(nfiles) , save :: flag_wind10m      = (/ 1, 1, 1, 10, 10 /)
51  integer, dimension(nfiles) , save :: flag_wind10max    = (/ 10, 1, 10, 10, 10 /)
52  integer, dimension(nfiles) , save :: flag_sicf         = (/ 1, 1, 10, 10, 10 /)
53  integer, dimension(nfiles) , save :: flag_q2m          = (/ 1, 1, 1, 1, 1 /)
54  integer, dimension(nfiles) , save :: flag_u10m         = (/ 1, 1, 1, 1, 1 /)
55  integer, dimension(nfiles) , save :: flag_v10m         = (/ 1, 1, 1, 1, 1 /)
56  integer, dimension(nfiles) , save :: flag_psol         = (/ 1, 1, 1, 1, 1 /)
57  integer, dimension(nfiles) , save :: flag_qsurf        = (/ 1, 10, 10, 10, 10 /)
58
59  integer, dimension(nfiles) , save :: flag_u10m_sol     = (/ 10, 4, 10, 10, 10 /)
60  integer, dimension(nfiles) , save :: flag_v10m_sol     = (/ 10, 4, 10, 10, 10 /)
61
62  integer, dimension(nfiles) , save :: flag_qsol         = (/ 1, 10, 10, 1, 1 /)
63
64  integer, dimension(nfiles),save   :: flag_ndayrain     = (/ 1, 10, 10, 10, 10 /)
65  integer, dimension(nfiles),save   :: flag_precip       = (/ 1, 1, 1, 1, 1 /)
66  integer,  dimension(nfiles), save :: flag_plul         = (/ 1, 1, 1, 1, 10 /)
67
68  integer, dimension(nfiles) , save :: flag_pluc         = (/ 1, 1, 1, 1, 10 /)
69  integer, dimension(nfiles) , save :: flag_snow         = (/ 1, 1, 10, 1, 10 /)
70  integer, dimension(nfiles) , save :: flag_evap         = (/ 1, 1, 10, 1, 10 /)
71  integer, dimension(nfiles) , save :: flag_tops         = (/ 1, 1, 10, 10, 10 /)
72  integer, dimension(nfiles) , save :: flag_tops0        = (/ 1, 5, 10, 10, 10 /)
73  integer, dimension(nfiles) , save :: flag_topl         = (/ 1, 1, 10, 1, 10 /)
74  integer, dimension(nfiles) , save :: flag_topl0        = (/ 1, 5, 10, 10, 10 /)
75  integer, dimension(nfiles) , save :: flag_SWupTOA      = (/ 1, 4, 10, 10, 10 /)
76  integer, dimension(nfiles) , save :: flag_SWupTOAclr   = (/ 1, 4, 10, 10, 10 /)
77  integer, dimension(nfiles) , save :: flag_SWdnTOA      = (/ 1, 4, 10, 10, 10 /)
78  integer, dimension(nfiles) , save :: flag_SWdnTOAclr   = (/ 1, 4, 10, 10, 10 /)
79  integer, dimension(nfiles) , save :: flag_SWup200      = (/ 1, 10, 10, 10, 10 /)
80  integer, dimension(nfiles) , save :: flag_SWup200clr   = (/ 10, 1, 10, 10, 10 /)
81  integer, dimension(nfiles) , save :: flag_SWdn200      = (/ 1, 10, 10, 10, 10 /)
82  integer, dimension(nfiles) , save :: flag_SWdn200clr   = (/ 10, 1, 10, 10, 10 /)
83
84! arajouter
85!  integer, dimension(nfiles) , save :: flag_LWupTOA     = (/ 1, 4, 10, 10, 10 /)
86!  integer, dimension(nfiles) , save :: flag_LWupTOAclr  = (/ 1, 4, 10, 10, 10 /)
87!  integer, dimension(nfiles) , save :: flag_LWdnTOA     = (/ 1, 4, 10, 10, 10 /)
88!  integer, dimension(nfiles) , save :: flag_LWdnTOAclr  = (/ 1, 4, 10, 10, 10 /)
89
90  integer, dimension(nfiles) , save :: flag_LWup200      = (/ 1, 10, 10, 10, 10 /)
91  integer, dimension(nfiles) , save :: flag_LWup200clr   = (/ 1, 10, 10, 10, 10 /)
92  integer, dimension(nfiles) , save :: flag_LWdn200      = (/ 1, 10, 10, 10, 10 /)
93  integer, dimension(nfiles) , save :: flag_LWdn200clr   = (/ 1, 10, 10, 10, 10 /)
94  integer, dimension(nfiles) , save :: flag_sols         = (/ 1, 1, 10, 1, 10 /)
95  integer, dimension(nfiles) , save :: flag_sols0        = (/ 1, 5, 10, 10, 10 /)
96  integer, dimension(nfiles) , save :: flag_soll         = (/ 1, 1, 10, 1, 10 /)
97  integer, dimension(nfiles) , save :: flag_soll0        = (/ 1, 5, 10, 10, 10 /)
98  integer, dimension(nfiles) , save :: flag_radsol       = (/ 1, 1, 10, 10, 10 /)
99  integer, dimension(nfiles) , save :: flag_SWupSFC      = (/ 1, 4, 10, 10, 10 /)
100  integer, dimension(nfiles) , save :: flag_SWupSFCclr   = (/ 1, 4, 10, 10, 10 /)
101  integer, dimension(nfiles) , save :: flag_SWdnSFC      = (/ 1, 1, 10, 10, 10 /)
102  integer, dimension(nfiles) , save :: flag_SWdnSFCclr   = (/ 1, 4, 10, 10, 10 /)
103  integer, dimension(nfiles) , save :: flag_LWupSFC      = (/ 1, 4, 10, 10, 10 /)
104  integer, dimension(nfiles) , save :: flag_LWupSFCclr   = (/ 1, 4, 10, 10, 10 /)
105  integer, dimension(nfiles) , save :: flag_LWdnSFC      = (/ 1, 4, 10, 10, 10 /)
106  integer, dimension(nfiles) , save :: flag_LWdnSFCclr   = (/ 1, 4, 10, 10, 10 /)
107  integer, dimension(nfiles) , save :: flag_bils         = (/ 1, 2, 10, 1, 10 /)
108  integer, dimension(nfiles) , save :: flag_sens         = (/ 1, 1, 10, 1, 1 /)
109  integer, dimension(nfiles) , save :: flag_fder         = (/ 1, 2, 10, 1, 10 /)
110  integer, dimension(nfiles) , save :: flag_ffonte       = (/ 1, 10, 10, 10, 10 /)
111  integer, dimension(nfiles) , save :: flag_fqcalving    = (/ 1, 10, 10, 10, 10 /)
112  integer, dimension(nfiles) , save :: flag_fqfonte      = (/ 1, 10, 10, 10, 10 /)
113
114  integer, dimension(nfiles) , save :: flag_taux_sol     = (/ 1, 4, 10, 1, 10 /)
115  integer, dimension(nfiles) , save :: flag_tauy_sol     = (/ 1, 4, 10, 1, 10 /)
116
117  integer, dimension(nfiles) , save :: flag_pourc_sol    = (/ 1, 4, 10, 1, 10 /)
118  integer, dimension(nfiles) , save :: flag_fract_sol    = (/ 1, 4, 10, 1, 10 /)
119  integer, dimension(nfiles) , save :: flag_tsol_sol     = (/ 1, 4, 10, 1, 10 /)
120  integer, dimension(nfiles) , save :: flag_sens_sol     = (/ 1, 4, 10, 1, 10 /)
121  integer, dimension(nfiles) , save :: flag_lat_sol      = (/ 1, 4, 10, 1, 10 /)
122  integer, dimension(nfiles) , save :: flag_flw_sol      = (/ 1, 10, 10, 10, 10 /)
123  integer, dimension(nfiles) , save :: flag_fsw_sol      = (/ 1, 10, 10, 10, 10 /)
124  integer, dimension(nfiles) , save :: flag_wbils_sol    = (/ 1, 10, 10, 10, 10 /)
125  integer, dimension(nfiles) , save :: flag_wbilo_sol    = (/ 1, 10, 10, 10, 10 /)
126
127  integer, dimension(nfiles) , save :: flag_cdrm         = (/ 1, 10, 10, 1, 10 /)
128  integer, dimension(nfiles) , save :: flag_cdrh         = (/ 1, 10, 10, 1, 10 /)
129  integer, dimension(nfiles) , save :: flag_cldl         = (/ 1, 1, 10, 10, 10 /)
130  integer, dimension(nfiles) , save :: flag_cldm         = (/ 1, 1, 10, 10, 10 /)
131  integer, dimension(nfiles) , save :: flag_cldh         = (/ 1, 1, 10, 10, 10 /)
132  integer, dimension(nfiles) , save :: flag_cldt         = (/ 1, 1, 2, 10, 10 /)
133  integer, dimension(nfiles) , save :: flag_cldq         = (/ 1, 1, 10, 10, 10 /)
134  integer, dimension(nfiles) , save :: flag_lwp          = (/ 1, 5, 10, 10, 10 /)
135  integer, dimension(nfiles) , save :: flag_iwp          = (/ 1, 5, 10, 10, 10 /)
136  integer, dimension(nfiles) , save :: flag_ue           = (/ 1, 10, 10, 10, 10 /)
137  integer, dimension(nfiles) , save :: flag_ve           = (/ 1, 10, 10, 10, 10 /)
138  integer, dimension(nfiles) , save :: flag_uq           = (/ 1, 10, 10, 10, 10 /)
139  integer, dimension(nfiles) , save :: flag_vq           = (/ 1, 10, 10, 10, 10 /)
140 
141  integer, dimension(nfiles) , save :: flag_cape         = (/ 1, 10, 10, 10, 10 /)
142  integer, dimension(nfiles) , save :: flag_pbase        = (/ 1, 10, 10, 10, 10 /)
143  integer, dimension(nfiles) , save :: flag_ptop         = (/ 1, 4, 10, 10, 10 /)
144  integer, dimension(nfiles) , save :: flag_fbase        = (/ 1, 10, 10, 10, 10 /)
145  integer, dimension(nfiles) , save :: flag_prw          = (/ 1, 1, 10, 10, 10 /)
146
147  integer, dimension(nfiles) , save :: flag_s_pblh       = (/ 1, 10, 10, 1, 1 /)
148  integer, dimension(nfiles) , save :: flag_s_pblt       = (/ 1, 10, 10, 1, 1 /)
149  integer, dimension(nfiles) , save :: flag_s_lcl       = (/ 1, 10, 10, 1, 10 /)
150  integer, dimension(nfiles) , save :: flag_s_capCL      = (/ 1, 10, 10, 1, 10 /)
151  integer, dimension(nfiles) , save :: flag_s_oliqCL    = (/ 1, 10, 10, 1, 10 /)
152  integer, dimension(nfiles) , save :: flag_s_cteiCL     = (/ 1, 10, 10, 1, 1 /)
153  integer, dimension(nfiles) , save :: flag_s_therm      = (/ 1, 10, 10, 1, 1 /)
154  integer, dimension(nfiles) , save :: flag_s_trmb1      = (/ 1, 10, 10, 1, 10 /)
155  integer, dimension(nfiles) , save :: flag_s_trmb2      = (/ 1, 10, 10, 1, 10 /)
156  integer, dimension(nfiles) , save :: flag_s_trmb3      = (/ 1, 10, 10, 1, 10 /)
157
158  integer, dimension(nfiles) , save :: flag_slab_bils    = (/ 1, 1, 10, 10, 10 /)
159
160  integer, dimension(nfiles) , save :: flag_ale_bl    = (/ 1, 1, 1, 1, 10 /)
161  integer, dimension(nfiles) , save :: flag_alp_bl    = (/ 1, 1, 1, 1, 10 /)
162  integer, dimension(nfiles) , save :: flag_ale_wk    = (/ 1, 1, 1, 1, 10 /)
163  integer, dimension(nfiles) , save :: flag_alp_wk    = (/ 1, 1, 1, 1, 10 /)
164
165  integer, dimension(nfiles) , save :: flag_ale       = (/ 1, 1, 1, 1, 10 /)
166  integer, dimension(nfiles) , save :: flag_alp       = (/ 1, 1, 1, 1, 10 /)
167  integer, dimension(nfiles) , save :: flag_cin       = (/ 1, 1, 1, 1, 10 /)
168  integer, dimension(nfiles) , save :: flag_wape       = (/ 1, 1, 1, 1, 10 /)
169
170
171! Champs interpolles sur des niveaux de pression ??? a faire correctement
172! if=1 on ecrit u v w phi sur 850 700 500 200 au niv 1
173! if=2 on ecrit w et ph 500 seulement au niv 1
174!        et u v sur 850 700 500 200
175! if=3 on ecrit ph a 500 seulement au niv 1
176!      on ecrit u v t q a 850 700 500 200 au niv 3
177!      on ecrit ph  a 500   au niv 3
178
179  integer, dimension(nfiles) , save :: flag_ulevsSTD     = (/ 1, 1, 3, 10, 10 /)
180  integer, dimension(nfiles) , save :: flag_vlevsSTD     = (/ 1, 1, 3, 10, 10 /)
181  integer, dimension(nfiles) , save :: flag_wlevsSTD     = (/ 1, 1, 10, 10, 10 /)
182  integer, dimension(nfiles) , save :: flag_tlevsSTD     = (/ 10, 10, 3, 10, 10 /)
183  integer, dimension(nfiles) , save :: flag_qlevsSTD     = (/ 10, 10, 3, 10, 10 /)
184  integer, dimension(nfiles) , save :: flag_philevsSTD   = (/ 1, 1, 1, 10, 10 /)
185
186  integer, dimension(nfiles) , save :: flag_t_oce_sic    = (/ 1, 10, 10, 10, 10 /)
187
188  integer, dimension(nfiles) , save :: flag_weakinv      = (/ 10, 1, 10, 10, 10 /)
189  integer, dimension(nfiles) , save :: flag_dthmin       = (/ 10, 1, 10, 10, 10 /)
190  integer, dimension(nfiles) , save :: flag_u10_sol      = (/ 10, 4, 10, 10, 10 /)
191  integer, dimension(nfiles) , save :: flag_v10_sol      = (/ 10, 4, 10, 10, 10 /)
192  integer, dimension(nfiles) , save :: flag_cldtau       = (/ 10, 5, 10, 10, 10 /)                     
193  integer, dimension(nfiles) , save :: flag_cldemi       = (/ 10, 5, 10, 10, 10 /)
194  integer, dimension(nfiles) , save :: flag_rh2m         = (/ 10, 5, 10, 10, 10 /)
195  integer, dimension(nfiles) , save :: flag_qsat2m       = (/ 10, 5, 10, 10, 10 /)
196  integer, dimension(nfiles) , save :: flag_tpot         = (/ 10, 5, 10, 10, 10 /)
197  integer, dimension(nfiles) , save :: flag_tpote        = (/ 10, 5, 10, 10, 10 /)
198  integer, dimension(nfiles) , save :: flag_tke          = (/ 4, 10, 10, 10, 10 /)
199  integer, dimension(nfiles) , save :: flag_tke_max      = (/ 4, 10, 10, 10, 10 /)
200  integer, dimension(nfiles) , save :: flag_tke_sol      = (/ 10, 4, 10, 10, 10 /)
201  integer, dimension(nfiles) , save :: flag_tke_max_sol  = (/ 10, 4, 10, 10, 10 /)
202  integer, dimension(nfiles) , save :: flag_kz           = (/ 4, 10, 10, 10, 10 /)
203  integer, dimension(nfiles) , save :: flag_kz_max       = (/ 4, 10, 10, 10, 10 /)
204  integer, dimension(nfiles) , save :: flag_SWnetOR      = (/ 10, 10, 2, 10, 10 /)
205  integer, dimension(nfiles) , save :: flag_SWdownOR     = (/ 10, 10, 2, 10, 10 /)
206  integer, dimension(nfiles) , save :: flag_LWdownOR     = (/ 10, 10, 2, 10, 10 /)
207
208  integer, dimension(nfiles) , save :: flag_snowl         = (/ 10, 1, 10, 10, 10 /)
209  integer, dimension(nfiles) , save :: flag_cape_max      = (/ 10, 1, 10, 10, 10 /)
210  integer, dimension(nfiles) , save :: flag_solldown      = (/ 10, 1, 10, 1, 10 /)
211
212  integer, dimension(nfiles) , save :: flag_dtsvdfo       = (/ 10, 10, 10, 1, 10 /)
213  integer, dimension(nfiles) , save :: flag_dtsvdft       = (/ 10, 10, 10, 1, 10 /)
214  integer, dimension(nfiles) , save :: flag_dtsvdfg       = (/ 10, 10, 10, 1, 10 /)
215  integer, dimension(nfiles) , save :: flag_dtsvdfi       = (/ 10, 10, 10, 1, 10 /)
216  integer, dimension(nfiles) , save :: flag_rugs          = (/ 10, 10, 10, 1, 1 /)
217
218!!!!!!!!!!!!!!!!!!!!!! 3D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
219  integer, dimension(nfiles) , save :: flag_lwcon        = (/ 2, 5, 10, 10, 1 /)
220  integer, dimension(nfiles) , save :: flag_iwcon        = (/ 2, 5, 10, 10, 10 /)
221  integer, dimension(nfiles) , save :: flag_temp         = (/ 2, 3, 4, 1, 1 /)
222  integer, dimension(nfiles) , save :: flag_theta         = (/ 2, 3, 4, 1, 1 /)
223  integer, dimension(nfiles) , save :: flag_ovap         = (/ 2, 3, 4, 1, 1 /)
224  integer, dimension(nfiles) , save :: flag_wvapp        = (/ 2, 10, 10, 10, 10 /)
225  integer, dimension(nfiles) , save :: flag_geop         = (/ 2, 3, 10, 1, 1 /)
226  integer, dimension(nfiles) , save :: flag_vitu         = (/ 2, 3, 4, 1, 1 /)
227  integer, dimension(nfiles) , save :: flag_vitv         = (/ 2, 3, 4, 1, 1 /)
228  integer, dimension(nfiles) , save :: flag_vitw         = (/ 2, 3, 10, 10, 1 /)
229  integer, dimension(nfiles) , save :: flag_pres         = (/ 2, 3, 10, 1, 1 /)
230  integer, dimension(nfiles) , save :: flag_rneb         = (/ 2, 5, 10, 10, 1 /)
231  integer, dimension(nfiles) , save :: flag_rnebcon      = (/ 2, 5, 10, 10, 1 /)
232  integer, dimension(nfiles) , save :: flag_rhum         = (/ 2, 10, 10, 10, 10 /)
233  integer, dimension(nfiles) , save :: flag_ozone        = (/ 2, 10, 10, 10, 10 /)
234  integer, dimension(nfiles) , save :: flag_upwd         = (/ 2, 10, 10, 10, 10 /)
235  integer, dimension(nfiles) , save :: flag_dtphy        = (/ 2, 10, 10, 10, 1 /)
236  integer, dimension(nfiles) , save :: flag_dqphy        = (/ 2, 10, 10, 10, 1 /)
237  integer, dimension(nfiles) , save :: flag_pr_con_l     = (/ 2, 10, 10, 10, 10 /)
238  integer, dimension(nfiles) , save :: flag_pr_con_i     = (/ 2, 10, 10, 10, 10 /)
239  integer, dimension(nfiles) , save :: flag_pr_lsc_l     = (/ 2, 10, 10, 10, 10 /)
240  integer, dimension(nfiles) , save :: flag_pr_lsc_i     = (/ 2, 10, 10, 10, 10 /)
241!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
242
243  integer, dimension(nfiles) , save :: flag_albe_sol     = (/ 3, 4, 10, 1, 10 /)
244  integer, dimension(nfiles) , save :: flag_ages_sol     = (/ 3, 10, 10, 10, 10 /)
245  integer, dimension(nfiles) , save :: flag_rugs_sol     = (/ 3, 4, 10, 1, 10 /)
246
247  integer, dimension(nfiles) , save :: flag_albs         = (/ 3, 10, 10, 1, 10 /)
248  integer, dimension(nfiles) , save :: flag_albslw       = (/ 3, 10, 10, 1, 10 /)
249
250  integer, dimension(nfiles) , save :: flag_clwcon       = (/ 4, 10, 10, 10, 10 /)
251  integer, dimension(nfiles) , save :: flag_Ma           = (/ 4, 10, 10, 10, 10 /)
252  integer, dimension(nfiles) , save :: flag_dnwd         = (/ 4, 10, 10, 10, 10 /)
253  integer, dimension(nfiles) , save :: flag_dnwd0        = (/ 4, 10, 10, 10, 10 /)
254  integer, dimension(nfiles) , save :: flag_dtdyn        = (/ 4, 10, 10, 10, 1 /)
255  integer, dimension(nfiles) , save :: flag_dqdyn        = (/ 4, 10, 10, 10, 1 /)
256  integer, dimension(nfiles) , save :: flag_dudyn        = (/ 4, 10, 10, 10, 1 /) !AXC
257  integer, dimension(nfiles) , save :: flag_dvdyn        = (/ 4, 10, 10, 10, 1 /) !AXC
258  integer, dimension(nfiles) , save :: flag_dtcon        = (/ 4, 5, 10, 10, 10 /)
259  integer, dimension(nfiles) , save :: flag_ducon        = (/ 4, 10, 10, 10, 10 /)
260  integer, dimension(nfiles) , save :: flag_dqcon        = (/ 4, 5, 10, 10, 10 /)
261  integer, dimension(nfiles) , save :: flag_dtwak        = (/ 4, 5, 10, 10, 10 /)
262  integer, dimension(nfiles) , save :: flag_dqwak        = (/ 4, 5, 10, 10, 10 /)
263  integer, dimension(nfiles) , save :: flag_wake_h       = (/ 4, 5, 10, 10, 10 /)
264  integer, dimension(nfiles) , save :: flag_wake_s       = (/ 4, 5, 10, 10, 10 /)
265  integer, dimension(nfiles) , save :: flag_wake_deltat  = (/ 4, 5, 10, 10, 10 /)
266  integer, dimension(nfiles) , save :: flag_wake_deltaq  = (/ 4, 5, 10, 10, 10 /)
267  integer, dimension(nfiles) , save :: flag_wake_omg     = (/ 4, 5, 10, 10, 10 /)
268  integer, dimension(nfiles) , save :: flag_Vprecip      = (/ 4, 5, 10, 10, 10 /)
269  integer, dimension(nfiles) , save :: flag_ftd          = (/ 4, 5, 10, 10, 10 /)
270  integer, dimension(nfiles) , save :: flag_fqd          = (/ 4, 5, 10, 10, 10 /)
271  integer, dimension(nfiles) , save :: flag_dtlsc        = (/ 4, 10, 10, 10, 10 /)
272  integer, dimension(nfiles) , save :: flag_dtlschr      = (/ 4, 10, 10, 10, 10 /)
273  integer, dimension(nfiles) , save :: flag_dqlsc        = (/ 4, 10, 10, 10, 10 /)
274  integer, dimension(nfiles) , save :: flag_dtvdf        = (/ 4, 10, 10, 1, 10 /)
275  integer, dimension(nfiles) , save :: flag_dqvdf        = (/ 4, 10, 10, 1, 10 /)
276  integer, dimension(nfiles) , save :: flag_dteva        = (/ 4, 10, 10, 10, 10 /)
277  integer, dimension(nfiles) , save :: flag_dqeva        = (/ 4, 10, 10, 10, 10 /)
278  integer, dimension(nfiles) , save :: flag_ptconv       = (/ 4, 10, 10, 10, 10 /)
279  integer, dimension(nfiles) , save :: flag_ratqs        = (/ 4, 10, 10, 10, 10 /)
280  integer, dimension(nfiles) , save :: flag_dtthe        = (/ 4, 10, 10, 10, 10 /)
281  integer, dimension(nfiles) , save :: flag_f_th        = (/ 4, 10, 10, 10, 10 /)
282  integer, dimension(nfiles) , save :: flag_e_th        = (/ 4, 10, 10, 10, 10 /)
283  integer, dimension(nfiles) , save :: flag_w_th        = (/ 4, 10, 10, 10, 10 /)
284  integer, dimension(nfiles) , save :: flag_lambda_th        = (/ 4, 10, 10, 10, 10 /)
285  integer, dimension(nfiles) , save :: flag_q_th        = (/ 4, 10, 10, 10, 10 /)
286  integer, dimension(nfiles) , save :: flag_a_th        = (/ 4, 10, 10, 10, 10 /)
287  integer, dimension(nfiles) , save :: flag_d_th        = (/ 4, 10, 10, 10, 10 /)
288  integer, dimension(nfiles) , save :: flag_f0_th        = (/ 4, 10, 10, 10, 10 /)
289  integer, dimension(nfiles) , save :: flag_zmax_th        = (/ 4, 10, 10, 10, 10 /)
290  integer, dimension(nfiles) , save :: flag_dqthe        = (/ 4, 10, 10, 10, 1 /)
291  integer, dimension(nfiles) , save :: flag_dtajs        = (/ 4, 10, 10, 10, 10 /)
292  integer, dimension(nfiles) , save :: flag_dqajs        = (/ 4, 10, 10, 10, 10 /)
293  integer, dimension(nfiles) , save :: flag_dtswr        = (/ 4, 10, 10, 10, 1 /)
294  integer, dimension(nfiles) , save :: flag_dtsw0        = (/ 4, 10, 10, 10, 10 /)
295  integer, dimension(nfiles) , save :: flag_dtlwr        = (/ 4, 10, 10, 10, 1 /)
296  integer, dimension(nfiles) , save :: flag_dtlw0        = (/ 4, 10, 10, 10, 10 /)
297  integer, dimension(nfiles) , save :: flag_dtec         = (/ 4, 10, 10, 10, 10 /)
298  integer, dimension(nfiles) , save :: flag_duvdf        = (/ 4, 10, 10, 10, 10 /)
299  integer, dimension(nfiles) , save :: flag_dvvdf        = (/ 4, 10, 10, 10, 10 /)
300  integer, dimension(nfiles) , save :: flag_duoro        = (/ 4, 10, 10, 10, 10 /)
301  integer, dimension(nfiles) , save :: flag_dvoro        = (/ 4, 10, 10, 10, 10 /)
302  integer, dimension(nfiles) , save :: flag_dulif        = (/ 4, 10, 10, 10, 10 /)
303  integer, dimension(nfiles) , save :: flag_dvlif        = (/ 4, 10, 10, 10, 10 /)
304  integer, dimension(nfiles) , save :: flag_trac         = (/ 4, 10, 10, 10, 10 /)
305
306    CONTAINS
307
308!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
309!!!!!!!!! Ouverture des fichier et definition des variable de sortie !!!!!!!!
310!! histbeg, histvert et histdef
311!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
312 
313  SUBROUTINE phys_output_open(jjmp1,nqmax,nlevSTD,clevSTD,nbteta, &
314                              ctetaSTD,dtime, presnivs, ok_veget, &
315                              ocean, iflag_pbl,ok_mensuel,ok_journe, &
316                              ok_hf,ok_instan,ok_LES)   
317
318  USE iophy
319  USE dimphy
320  USE ioipsl
321  USE mod_phys_lmdz_para
322
323  IMPLICIT NONE
324  include "dimensions.h"
325  include "temps.h"
326  include "indicesol.h"
327  include "advtrac.h"
328  include "clesphys.h"
329  include "thermcell.h"
330
331  integer                               :: jjmp1, nqmax
332  integer                               :: nbteta, nlevSTD, radpas
333  logical                               :: ok_mensuel, ok_journe, ok_hf, ok_instan
334  logical                               :: ok_LES
335  real                                  :: dtime
336  integer                               :: idayref
337  real                                  :: zjulian
338  real, dimension(klev)                 :: presnivs
339  character(len=4), dimension(nlevSTD)  :: clevSTD
340  integer                               :: nsrf, k, iq, iiq, iff, i, j
341  logical                               :: ok_veget
342  integer                               :: iflag_pbl
343  CHARACTER(len=3)                      :: bb2
344  CHARACTER(len=2)                      :: bb3
345  character(len=6)                      :: ocean
346  CHARACTER(len=3)                      :: ctetaSTD(nbteta)
347  real, dimension(nfiles)               :: ecrit_files
348  CHARACTER(len=20), dimension(nfiles)  :: name_files
349  INTEGER, dimension(iim*jjmp1)         ::  ndex2d
350  INTEGER, dimension(iim*jjmp1*klev)    :: ndex3d
351  integer                               :: imin_ins, imax_ins
352  integer                               :: jmin_ins, jmax_ins
353
354!!!!!!!!!! stockage dans une region limitee pour chaque fichier !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
355!                 entre [lonmin_reg,lonmax_reg] et [latmin_reg,latmax_reg]
356
357  logical, dimension(nfiles), save  :: ok_reglim         = (/ .false., .false., .false., .false., .true. /)
358  real, dimension(nfiles), save     :: lonmin_reg        = (/ 0., -45., 0., 0., -162. /)
359  real, dimension(nfiles), save     :: lonmax_reg        = (/ 90., 45., 90., 90., -144. /)
360  real, dimension(nfiles), save     :: latmin_reg        = (/ 0., -45., 0., 0., 7. /)
361  real, dimension(nfiles), save     :: latmax_reg        = (/ 90., 90., 90., 90., 21. /)
362
363   levmax = (/ klev, klev, klev, klev, 17 /)
364
365   name_files(1) = 'histmth'
366   name_files(2) = 'histday'
367   name_files(3) = 'histhf'
368   name_files(4) = 'histins'
369   name_files(5) = 'histLES'
370
371   type_ecri(1) = 'ave(X)'
372   type_ecri(2) = 'ave(X)'
373   type_ecri(3) = 'ave(X)'
374   type_ecri(4) = 'inst(X)'
375   type_ecri(5) = 'ave(X)'
376
377   clef_files(1) = ok_mensuel
378   clef_files(2) = ok_journe
379   clef_files(3) = ok_hf
380   clef_files(4) = ok_instan
381   clef_files(5) = ok_LES
382
383   lev_files(1) = lev_histmth
384   lev_files(2) = lev_histday
385   lev_files(3) = lev_histhf
386   lev_files(4) = 1
387   lev_files(5) = 1
388
389   ecrit_files(1) = ecrit_mth
390   ecrit_files(2) = ecrit_day
391   ecrit_files(3) = ecrit_hf
392   ecrit_files(4) = ecrit_ins
393   ecrit_files(5) = ecrit_LES
394 
395!!!!!!!!!!!!!!!!!!!!!!! Boucle sur les fichiers !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
396! Appel de histbeg et histvert pour creer le fichier et les niveaux verticaux !!
397! Appel des histbeg pour definir les variables (nom, moy ou inst, freq de sortie ..
398!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
399
400 DO iff=1,nfiles
401
402    IF (clef_files(iff)) THEN
403     
404      zstophym(iff) = dtime         ! Frequence ou l on moyenne
405      zoutm(iff) = ecrit_files(iff) ! Frequence ou l on ecrit
406
407      idayref = day_ref
408      CALL ymds2ju(annee_ref, 1, idayref, 0.0, zjulian)
409
410!!!!!!!!!!!!!!!!! Traitement dans le cas ou l'on veut stocker sur un domaine limite !!
411!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
412     if (ok_reglim(iff)) then
413
414        imin_ins=1
415        imax_ins=iim
416        jmin_ins=1
417        jmax_ins=jjmp1
418
419! correction abderr        do i=1,iim-1
420        do i=1,iim
421           print*,'io_lon(i)=',io_lon(i)
422           if (io_lon(i).le.lonmin_reg(iff)) imin_ins=i
423           if (io_lon(i).le.lonmax_reg(iff)) imax_ins=i
424        enddo
425
426        do j=1,jjmp1-1
427            print*,'io_lat(j)=',io_lat(j)
428            if (io_lat(j).ge.latmin_reg(iff)) jmax_ins=j+1
429            if (io_lat(j).ge.latmax_reg(iff)) jmin_ins=j
430        enddo
431
432         print*,'On stoke le fichier hist sur, ', &
433         imin_ins,imax_ins,jmin_ins,jmax_ins
434         print*,'On stoke le fichier instantanne sur, ', &
435         io_lon(imin_ins),io_lon(imax_ins), &
436         io_lat(jmin_ins),io_lat(jmax_ins)
437
438 CALL histbeg(name_files(iff),iim,io_lon,jjmp1,io_lat, &
439              imin_ins,imax_ins-imin_ins+1, &
440              jmin_ins,jmax_ins-jmin_ins+1, &
441              itau_phy,zjulian,dtime,nhorim(iff),nid_files(iff))
442!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
443       else
444 CALL histbeg_phy(name_files(iff),itau_phy,zjulian,dtime,nhorim(iff),nid_files(iff))
445       endif
446 
447      CALL histvert(nid_files(iff), "presnivs", "Vertical levels", "mb", &
448           levmax(iff) - levmin(iff) + 1, &
449           presnivs(levmin(iff):levmax(iff))/100., nvertm(iff))
450
451!!!!!!!!!!!!! Traitement des champs 3D pour histhf !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
452!!!!!!!!!!!!!!! A Revoir plus tard !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
453!          IF (iff.eq.3.and.lev_files(iff).ge.4) THEN
454!          CALL histbeg_phy("histhf3d",itau_phy, &
455!     &                     zjulian, dtime, &
456!     &                     nhorim, nid_hf3d)
457
458!         CALL histvert(nid_hf3d,"presnivs", &
459!     &                 "Vertical levels","mb", &
460!     &                 klev, presnivs/100., nvertm)
461!          ENDIF
462
463!!! Champs 1D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
464 CALL histdef2d(iff,flag_phis,"phis","Surface geop.height","m2/s2")
465   type_ecri(1) = 'once'
466   type_ecri(2) = 'once'
467   type_ecri(3) = 'once'
468   type_ecri(4) = 'once'
469 CALL histdef2d(iff,flag_aire,"aire","Grid area","-")
470 CALL histdef2d(iff,flag_contfracATM,"contfracATM","% sfce ter+lic","-")
471   type_ecri(1) = 'ave(X)'
472   type_ecri(2) = 'ave(X)'
473   type_ecri(3) = 'ave(X)'
474   type_ecri(4) = 'inst(X)'
475
476!!! Champs 2D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
477 CALL histdef2d(iff,flag_contfracOR,"contfracOR","% sfce terre OR","-" )
478 CALL histdef2d(iff,flag_aireTER,"aireTER","Grid area CONT","-" )
479 CALL histdef2d(iff,flag_flat,"flat","Latent heat flux","W/m2")
480 CALL histdef2d(iff,flag_slp,"slp","Sea Level Pressure", "Pa" )
481 CALL histdef2d(iff,flag_tsol,"tsol","Surface Temperature", "K")
482 CALL histdef2d( iff,flag_t2m,"t2m","Temperature 2m", "K" )
483 CALL histdef2d(iff,flag_t2m_min,"t2m_min","Temp 2m min", "K" )
484 CALL histdef2d(iff,flag_t2m_max,"t2m_max", "Temp 2m max", "K" )
485 CALL histdef2d(iff,flag_wind10m,"wind10m","10-m wind speed","m/s")
486 CALL histdef2d(iff,flag_wind10max,"wind10max","10m wind speed max","m/s")
487 CALL histdef2d(iff,flag_sicf,"sicf","Sea-ice fraction", "-" )
488 CALL histdef2d(iff,flag_q2m,"q2m","Specific humidity 2m", "kg/kg")
489 CALL histdef2d(iff,flag_u10m,"u10m","Vent zonal 10m", "m/s" )
490 CALL histdef2d(iff,flag_v10m,"v10m","Vent meridien 10m", "m/s")
491 CALL histdef2d(iff,flag_psol,"psol","Surface Pressure","Pa" )
492 CALL histdef2d(iff,flag_qsurf,"qsurf","Surface Air humidity", "kg/kg")
493
494  if (.not. ok_veget) then
495 CALL histdef2d(iff,flag_qsol,"qsol","Soil watter content", "mm" )
496  endif
497
498 CALL histdef2d(iff,flag_ndayrain,"ndayrain","Number of dayrain(liq+sol)","-")
499 CALL histdef2d(iff,flag_precip,"precip","Precip Totale liq+sol","kg/(s*m2)" )
500 CALL histdef2d(iff,flag_plul,"plul","Large-scale Precip.","kg/(s*m2)")
501 CALL histdef2d(iff,flag_pluc,"pluc","Convective Precip.","kg/(s*m2)")
502 CALL histdef2d(iff,flag_snow,"snow","Snow fall","kg/(s*m2)" )
503 CALL histdef2d(iff,flag_evap,"evap","Evaporat", "kg/(s*m2)" )
504 CALL histdef2d(iff,flag_tops,"tops","Solar rad. at TOA","W/m2")
505 CALL histdef2d(iff,flag_tops0,"tops0","CS Solar rad. at TOA", "W/m2")
506 CALL histdef2d(iff,flag_topl,"topl","IR rad. at TOA", "W/m2" )
507 CALL histdef2d(iff,flag_topl0,"topl0", "IR rad. at TOA","W/m2")
508 CALL histdef2d(iff,flag_SWupTOA,"SWupTOA","SWup at TOA","W/m2")
509 CALL histdef2d(iff,flag_SWupTOAclr,"SWupTOAclr","SWup clear sky at TOA","W/m2")
510 CALL histdef2d(iff,flag_SWdnTOA, "SWdnTOA","SWdn at TOA","W/m2" )
511 CALL histdef2d(iff,flag_SWdnTOAclr,"SWdnTOAclr","SWdn clear sky at TOA","W/m2")
512 CALL histdef2d(iff,flag_SWup200,"SWup200","SWup at 200mb","W/m2" )
513 CALL histdef2d(iff,flag_SWup200clr,"SWup200clr","SWup clear sky at 200mb","W/m2")
514 CALL histdef2d(iff,flag_SWdn200,"SWdn200","SWdn at 200mb","W/m2" )
515 CALL histdef2d(iff,flag_SWdn200clr,"SWdn200clr","SWdn clear sky at 200mb","W/m2")
516 CALL histdef2d(iff,flag_LWup200,"LWup200","LWup at 200mb","W/m2")
517 CALL histdef2d(iff,flag_LWup200clr, "LWup200clr","LWup clear sky at 200mb","W/m2")
518 CALL histdef2d(iff,flag_LWdn200,"LWdn200","LWdn at 200mb","W/m2")
519 CALL histdef2d(iff,flag_LWdn200clr, "LWdn200clr","LWdn clear sky at 200mb","W/m2")
520 CALL histdef2d(iff,flag_sols,"sols","Solar rad. at surf.","W/m2")
521 CALL histdef2d(iff,flag_sols0,"sols0","Solar rad. at surf.","W/m2")
522 CALL histdef2d(iff,flag_soll,"soll","IR rad. at surface","W/m2") 
523 CALL histdef2d(iff,flag_radsol,"radsol","Rayonnement au sol","W/m2")
524 CALL histdef2d(iff,flag_soll0,"soll0","IR rad. at surface","W/m2")
525 CALL histdef2d(iff,flag_SWupSFC,"SWupSFC","SWup at surface","W/m2")
526 CALL histdef2d(iff,flag_SWupSFCclr,"SWupSFCclr","SWup clear sky at surface","W/m2")
527 CALL histdef2d(iff,flag_SWdnSFC,"SWdnSFC","SWdn at surface","W/m2")
528 CALL histdef2d(iff,flag_SWdnSFCclr,"SWdnSFCclr","SWdn clear sky at surface","W/m2")
529 CALL histdef2d(iff,flag_LWupSFC,"LWupSFC","Upwd. IR rad. at surface","W/m2")
530 CALL histdef2d(iff,flag_LWdnSFC,"LWdnSFC","Down. IR rad. at surface","W/m2")
531 CALL histdef2d(iff,flag_LWupSFCclr,"LWupSFCclr","CS Upwd. IR rad. at surface","W/m2")
532 CALL histdef2d(iff,flag_LWdnSFCclr,"LWdnSFCclr","Down. CS IR rad. at surface","W/m2")
533 CALL histdef2d(iff,flag_bils,"bils","Surf. total heat flux","W/m2")
534 CALL histdef2d(iff,flag_sens,"sens","Sensible heat flux","W/m2")
535 CALL histdef2d(iff,flag_fder,"fder","Heat flux derivation","W/m2")
536 CALL histdef2d(iff,flag_ffonte,"ffonte","Thermal flux for snow melting","W/m2")
537 CALL histdef2d(iff,flag_fqcalving,"fqcalving","Ice Calving","kg/m2/s")
538 CALL histdef2d(iff,flag_fqfonte,"fqfonte","Land ice melt","kg/m2/s")
539
540     DO nsrf = 1, nbsrf
541 CALL histdef2d(iff,flag_pourc_sol,"pourc_"//clnsurf(nsrf),"% "//clnsurf(nsrf),"%")
542 CALL histdef2d(iff,flag_fract_sol,"fract_"//clnsurf(nsrf),"Fraction "//clnsurf(nsrf),"1")
543 CALL histdef2d(iff,flag_taux_sol,"taux_"//clnsurf(nsrf),"Zonal wind stress"//clnsurf(nsrf),"Pa")
544 CALL histdef2d(iff,flag_tauy_sol,"tauy_"//clnsurf(nsrf),"Meridional wind stress "//clnsurf(nsrf),"Pa")
545 CALL histdef2d(iff,flag_tsol_sol,"tsol_"//clnsurf(nsrf),"Temperature "//clnsurf(nsrf),"K")
546 CALL histdef2d(iff,flag_u10m_sol,"u10m_"//clnsurf(nsrf),"Vent Zonal 10m "//clnsurf(nsrf),"m/s")
547 CALL histdef2d(iff,flag_v10m_sol,"v10m_"//clnsurf(nsrf),"Vent meredien 10m "//clnsurf(nsrf),"m/s")
548 CALL histdef2d(iff,flag_t2m_sol,"t2m_"//clnsurf(nsrf),"Temp 2m "//clnsurf(nsrf),"K")
549 CALL histdef2d(iff,flag_sens_sol,"sens_"//clnsurf(nsrf),"Sensible heat flux "//clnsurf(nsrf),"W/m2")
550 CALL histdef2d(iff,flag_lat_sol,"lat_"//clnsurf(nsrf),"Latent heat flux "//clnsurf(nsrf),"W/m2")
551 CALL histdef2d(iff,flag_flw_sol,"flw_"//clnsurf(nsrf),"LW "//clnsurf(nsrf),"W/m2")
552 CALL histdef2d(iff,flag_fsw_sol,"fsw_"//clnsurf(nsrf),"SW "//clnsurf(nsrf),"W/m2")
553 CALL histdef2d(iff,flag_wbils_sol,"wbils_"//clnsurf(nsrf),"Bilan sol "//clnsurf(nsrf),"W/m2" )
554 CALL histdef2d(iff,flag_wbilo_sol,"wbilo_"//clnsurf(nsrf),"Bilan eau "//clnsurf(nsrf),"kg/(m2*s)")
555  if (iflag_pbl>1 .and. lev_files(iff).gt.10 ) then
556 CALL histdef2d(iff,flag_tke_sol,"tke_"//clnsurf(nsrf),"Max Turb. Kinetic Energy "//clnsurf(nsrf),"-")
557 CALL histdef2d(iff,flag_tke_max_sol,"tke_max_"//clnsurf(nsrf),"Max Turb. Kinetic Energy "//clnsurf(nsrf),"-")
558  endif
559 CALL histdef2d(iff,flag_albe_sol, "albe_"//clnsurf(nsrf),"Albedo surf. "//clnsurf(nsrf),"-")
560 CALL histdef2d(iff,flag_rugs_sol,"rugs_"//clnsurf(nsrf),"Latent heat flux "//clnsurf(nsrf),"W/m2")
561 CALL histdef2d(iff,flag_ages_sol,"ages_"//clnsurf(nsrf),"Snow age","day")
562     END DO
563
564 CALL histdef2d(iff,flag_albs,"albs","Surface albedo","-")
565 CALL histdef2d(iff,flag_albslw,"albslw","Surface albedo LW","-")
566 CALL histdef2d(iff,flag_cdrm,"cdrm","Momentum drag coef.", "-")
567 CALL histdef2d(iff,flag_cdrh,"cdrh","Heat drag coef.", "-" )
568 CALL histdef2d(iff,flag_cldl,"cldl","Low-level cloudiness", "-")
569 CALL histdef2d(iff,flag_cldm,"cldm","Mid-level cloudiness", "-")
570 CALL histdef2d(iff,flag_cldh,"cldh","High-level cloudiness", "-")
571 CALL histdef2d(iff,flag_cldt,"cldt","Total cloudiness","%")
572 CALL histdef2d(iff,flag_cldq,"cldq","Cloud liquid water path","kg/m2")
573 CALL histdef2d(iff,flag_lwp,"lwp","Cloud water path","kg/m2")
574 CALL histdef2d(iff,flag_iwp,"iwp","Cloud ice water path","kg/m2" )
575 CALL histdef2d(iff,flag_ue,"ue","Zonal energy transport","-")
576 CALL histdef2d(iff,flag_ve,"ve","Merid energy transport", "-")
577 CALL histdef2d(iff,flag_uq,"uq","Zonal humidity transport", "-")
578 CALL histdef2d(iff,flag_vq,"vq","Merid humidity transport", "-")
579
580     IF(iflag_con.GE.3) THEN ! sb
581 CALL histdef2d(iff,flag_cape,"cape","Conv avlbl pot ener","J/kg")
582 CALL histdef2d(iff,flag_pbase,"pbase","Cld base pressure", "mb")
583 CALL histdef2d(iff,flag_ptop,"ptop","Cld top pressure", "mb")
584 CALL histdef2d(iff,flag_fbase,"fbase","Cld base mass flux","kg/m2/s")
585 CALL histdef2d(iff,flag_prw,"prw","Precipitable water","kg/m2")
586 CALL histdef2d(iff,flag_cape_max,"cape_max","CAPE max.", "J/kg")
587 CALL histdef3d(iff,flag_upwd,"upwd","saturated updraft", "kg/m2/s")
588 CALL histdef3d(iff,flag_Ma,"Ma","undilute adiab updraft","kg/m2/s")
589 CALL histdef3d(iff,flag_dnwd,"dnwd","saturated downdraft","kg/m2/s")
590 CALL histdef3d(iff,flag_dnwd0,"dnwd0","unsat. downdraft", "kg/m2/s")
591     ENDIF !iflag_con .GE. 3
592
593 CALL histdef2d(iff,flag_s_pblh,"s_pblh","Boundary Layer Height","m")
594 CALL histdef2d(iff,flag_s_pblt,"s_pblt","t at Boundary Layer Height","K")
595 CALL histdef2d(iff,flag_s_lcl,"s_lcl","Condensation level","m")
596 CALL histdef2d(iff,flag_s_capCL,"s_capCL","Conv avlbl pot enerfor ABL", "J/m2" )
597 CALL histdef2d(iff,flag_s_oliqCL,"s_oliqCL","Liq Water in BL","kg/m2")
598 CALL histdef2d(iff,flag_s_cteiCL,"s_cteiCL","Instability criteria(ABL)","K")
599 CALL histdef2d(iff,flag_s_therm,"s_therm","Exces du thermique", "K")
600 CALL histdef2d(iff,flag_s_trmb1,"s_trmb1","deep_cape(HBTM2)","J/m2")
601 CALL histdef2d(iff,flag_s_trmb2,"s_trmb2","inhibition (HBTM2)","J/m2")
602 CALL histdef2d(iff,flag_s_trmb3,"s_trmb3","Point Omega (HBTM2)","m")
603
604! Champs interpolles sur des niveaux de pression
605! iif=1 on ecrit u v w phi sur 850 700 500 200 au niv 1
606! iif=2 on ecrit w et ph 500 seulement au niv 1
607!        et u v sur 850 700 500 200
608! iif=3 on ecrit ph a 500 seulement au niv 1
609!      on ecrit u v t q a 850 700 500 200 au niv 3
610
611   zstophym(iff) = ecrit_files(iff)
612   type_ecri(1) = 'inst(X)'
613   type_ecri(2) = 'inst(X)'
614   type_ecri(3) = 'inst(X)'
615   type_ecri(4) = 'inst(X)'
616        DO k=1, nlevSTD
617     IF(k.GE.2.AND.k.LE.12) bb2=clevSTD(k)
618     IF(k.GE.13.AND.k.LE.17) bb3=clevSTD(k)
619     IF(bb2.EQ."850".OR.bb2.EQ."700".OR.bb2.EQ."500".OR.bb2.EQ."200")THEN
620 CALL histdef2d(iff,flag_ulevsSTD,"u"//bb2,"Zonal wind "//bb2//"mb","m/s")
621 CALL histdef2d(iff,flag_vlevsSTD,"v"//bb2,"Meridional wind "//bb2//"mb","m/s")
622 CALL histdef2d(iff,flag_wlevsSTD,"w"//bb2,"Vertical wind "//bb2//"mb","m/s")
623 CALL histdef2d(iff,flag_philevsSTD,"phi"//bb2,"Geopotential "//bb2//"mb","m")
624 CALL histdef2d(iff,flag_qlevsSTD,"q"//bb2,"Specific humidity "//bb2//"mb","kg/kg" )
625 CALL histdef2d(iff,flag_tlevsSTD,"t"//bb2,"Temperature "//bb2//"mb","K")
626     ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR.
627       ENDDO
628   zstophym(iff) = dtime
629   type_ecri(1) = 'ave(X)'
630   type_ecri(2) = 'ave(X)'
631   type_ecri(3) = 'ave(X)'
632   type_ecri(4) = 'inst(X)'
633
634 CALL histdef2d(iff,flag_t_oce_sic,"t_oce_sic","Temp mixte oce-sic","K")
635
636 IF (ocean=='slab') &
637      CALL histdef2d(iff,flag_slab_bils, "slab_wbils_oce","Bilan au sol sur ocean slab", "W/m2")
638
639 IF (iflag_con.EQ.3) THEN
640 CALL histdef2d(iff,flag_ale,"ale","ALE","m2/s2")
641 CALL histdef2d(iff,flag_alp,"alp","ALP","W/m2")
642 CALL histdef2d(iff,flag_cin,"cin","Convective INhibition","m2/s2")
643 IF (iflag_coupl.EQ.1) THEN
644  CALL histdef2d(iff,flag_ale_bl,"ale_bl","ALE BL","m2/s2")
645  CALL histdef2d(iff,flag_alp_bl,"alp_bl","ALP BL","m2/s2")
646 ENDIF !iflag_coupl.EQ.1
647 IF (iflag_wake.EQ.1) THEN
648  CALL histdef2d(iff,flag_ale_wk,"ale_wk","ALE WK","m2/s2")
649  CALL histdef2d(iff,flag_alp_wk,"alp_wk","ALP WK","m2/s2")
650  CALL histdef2d(iff,flag_wape,"WAPE","WAPE","m2/s2")
651  CALL histdef2d(iff,flag_wake_h,"wake_h","wake_h", "-")
652  CALL histdef2d(iff,flag_wake_s,"wake_s","wake_s", "-")
653  CALL histdef3d(iff,flag_dtwak,"dtwak","Wake dT","K/s")
654  CALL histdef3d(iff,flag_dqwak,"dqwak","Wake dQ","(kg/kg)/s")
655  CALL histdef3d(iff,flag_wake_deltat,"wake_deltat","wake_deltat", " ")
656  CALL histdef3d(iff,flag_wake_deltaq,"wake_deltaq","wake_deltaq", " ")
657  CALL histdef3d(iff,flag_wake_omg,"wake_omg","wake_omg", " ")
658  CALL histdef3d(iff,flag_ftd,"ftd","tend temp due aux descentes precip","-")
659  CALL histdef3d(iff,flag_fqd,"fqd","tend vap eau due aux descentes precip","-")
660 ENDIF !iflag_wake.EQ.1
661  CALL histdef3d(iff,flag_Vprecip,"Vprecip","precipitation vertical profile","-")
662 ENDIF !(iflag_con.EQ.3)
663
664 CALL histdef2d(iff,flag_weakinv, "weakinv","Weak inversion", "-")
665 CALL histdef2d(iff,flag_dthmin,"dthmin","dTheta mini", "K/m")
666 CALL histdef2d(iff,flag_rh2m,"rh2m","Relative humidity at 2m", "%" )
667 CALL histdef2d(iff,flag_qsat2m,"qsat2m","Saturant humidity at 2m", "%")
668 CALL histdef2d(iff,flag_tpot,"tpot","Surface air potential temperature","K")
669 CALL histdef2d(iff,flag_tpote,"tpote","Surface air equivalent potential temperature","K")
670 CALL histdef2d(iff,flag_SWnetOR,"SWnetOR","Sfce net SW radiation OR", "W/m2")
671 CALL histdef2d(iff,flag_SWdownOR,"SWdownOR","Sfce incident SW radiation OR","W/m2")
672 CALL histdef2d(iff,flag_LWdownOR,"LWdownOR","Sfce incident LW radiation OR","W/m2")
673 CALL histdef2d(iff,flag_snowl,"snowl","Solid Large-scale Precip.","kg/(m2*s)")
674 CALL histdef2d(iff,flag_solldown,"solldown","Down. IR rad. at surface","W/m2")
675 CALL histdef2d(iff,flag_dtsvdfo,"dtsvdfo","Boundary-layer dTs(o)","K/s")
676 CALL histdef2d(iff,flag_dtsvdft,"dtsvdft","Boundary-layer dTs(t)","K/s")
677 CALL histdef2d(iff,flag_dtsvdfg,"dtsvdfg","Boundary-layer dTs(g)","K/s")
678 CALL histdef2d(iff,flag_dtsvdfi,"dtsvdfi","Boundary-layer dTs(g)","K/s")
679 CALL histdef2d(iff,flag_rugs,"rugs","rugosity", "-" )
680
681! Champs 3D:
682 CALL histdef3d(iff,flag_lwcon,"lwcon","Cloud liquid water content","kg/kg")
683 CALL histdef3d(iff,flag_iwcon,"iwcon","Cloud ice water content","kg/kg")
684 CALL histdef3d(iff,flag_temp,"temp","Air temperature","K" )
685 CALL histdef3d(iff,flag_theta,"theta","Potential air temperature","K" )
686 CALL histdef3d(iff,flag_ovap,"ovap","Specific humidity","kg/kg" )
687 CALL histdef3d(iff,flag_geop,"geop","Geopotential height","m2/s2")
688 CALL histdef3d(iff,flag_vitu,"vitu","Zonal wind", "m/s" )
689 CALL histdef3d(iff,flag_vitv,"vitv","Meridional wind","m/s" )
690 CALL histdef3d(iff,flag_vitw,"vitw","Vertical wind","Pa/s" )
691 CALL histdef3d(iff,flag_pres,"pres","Air pressure", "Pa" )
692 CALL histdef3d(iff,flag_rneb,"rneb","Cloud fraction","-")
693 CALL histdef3d(iff,flag_rnebcon,"rnebcon","Convective Cloud Fraction","-")
694 CALL histdef3d(iff,flag_rhum,"rhum","Relative humidity","-")
695 CALL histdef3d(iff,flag_ozone,"ozone","Ozone concentration", "ppmv")
696 CALL histdef3d(iff,flag_dtphy,"dtphy","Physics dT","K/s")
697 CALL histdef3d(iff,flag_dqphy,"dqphy","Physics dQ", "(kg/kg)/s")
698 CALL histdef3d(iff,flag_cldtau,"cldtau","Cloud optical thickness","1")
699 CALL histdef3d(iff,flag_cldemi,"cldemi","Cloud optical emissivity","1")
700!IM: bug ?? dimensionnement variables (klon,klev+1) pmflxr, pmflxs, prfl, psfl
701! CALL histdef3d(iff,flag_pr_con_l,"pmflxr","Convective precipitation lic"," ")
702! CALL histdef3d(iff,flag_pr_con_i,"pmflxs","Convective precipitation ice"," ")
703! CALL histdef3d(iff,flag_pr_lsc_l,"prfl","Large scale precipitation lic"," ")
704! CALL histdef3d(iff,flag_pr_lsc_i,"psfl","Large scale precipitation ice"," ")
705
706!FH Sorties pour la couche limite
707     if (iflag_pbl>1) then
708 CALL histdef3d(iff,flag_tke,"tke","TKE","m2/s2")
709 CALL histdef3d(iff,flag_tke_max,"tke_max","TKE max","m2/s2")
710     endif
711
712 CALL histdef3d(iff,flag_kz,"kz","Kz melange","m2/s")
713 CALL histdef3d(iff,flag_kz_max,"kz_max","Kz melange max","m2/s" )
714 CALL histdef3d(iff,flag_clwcon,"clwcon","Convective Cloud Liquid water content", "kg/kg")
715 CALL histdef3d(iff,flag_dtdyn,"dtdyn","Dynamics dT","K/s")
716 CALL histdef3d(iff,flag_dqdyn,"dqdyn","Dynamics dQ", "(kg/kg)/s")
717 CALL histdef3d(iff,flag_dudyn,"dudyn","Dynamics dU","m/s2")
718 CALL histdef3d(iff,flag_dvdyn,"dvdyn","Dynamics dV","m/s2")
719 CALL histdef3d(iff,flag_dtcon,"dtcon","Convection dT","K/s")
720 CALL histdef3d(iff,flag_ducon,"ducon","Convection du","m/s2")
721 CALL histdef3d(iff,flag_dqcon,"dqcon","Convection dQ", "(kg/kg)/s")
722
723 CALL histdef3d(iff,flag_dtlsc,"dtlsc","Condensation dT", "K/s")
724 CALL histdef3d(iff,flag_dtlschr,"dtlschr","Large-scale condensational heating rate","K/s")
725 CALL histdef3d(iff,flag_dqlsc,"dqlsc","Condensation dQ","(kg/kg)/s")
726 CALL histdef3d(iff,flag_dtvdf,"dtvdf","Boundary-layer dT", "K/s")
727 CALL histdef3d(iff,flag_dqvdf,"dqvdf","Boundary-layer dQ","(kg/kg)/s")
728 CALL histdef3d(iff,flag_dteva,"dteva","Reevaporation dT", "K/s")
729 CALL histdef3d(iff,flag_dqeva,"dqeva","Reevaporation dQ","(kg/kg)/s")
730 CALL histdef3d(iff,flag_ptconv,"ptconv","POINTS CONVECTIFS"," ")
731 CALL histdef3d(iff,flag_ratqs,"ratqs", "RATQS"," ")
732 CALL histdef3d(iff,flag_dtthe,"dtthe","Dry adjust. dT", "K/s")
733
734if(iflag_thermals.gt.1) THEN
735 CALL histdef3d(iff,flag_f_th,"f_th","Thermal plume mass flux", "K/s")
736 CALL histdef3d(iff,flag_e_th,"e_th","Thermal plume entrainment", "K/s")
737 CALL histdef3d(iff,flag_w_th,"w_th","Thermal plume vertical velocity", "m/s")
738 CALL histdef3d(iff,flag_lambda_th,"lambda_th","Thermal plume vertical velocity", "m/s")
739 CALL histdef3d(iff,flag_q_th,"q_th","Thermal plume total humidity", "kg/kg")
740 CALL histdef3d(iff,flag_a_th,"a_th","Thermal plume fraction", "")
741 CALL histdef3d(iff,flag_d_th,"d_th","Thermal plume detrainment", "K/s")
742endif !iflag_thermals.gt.1
743 CALL histdef2d(iff,flag_f0_th,"f0_th","Thermal closure mass flux", "K/s")
744 CALL histdef2d(iff,flag_zmax_th,"zmax_th","Thermal plume height", "K/s")
745 CALL histdef3d(iff,flag_dqthe,"dqthe","Dry adjust. dQ","(kg/kg)/s")
746 CALL histdef3d(iff,flag_dtajs,"dtajs","Dry adjust. dT", "K/s")
747 CALL histdef3d(iff,flag_dqajs,"dqajs","Dry adjust. dQ","(kg/kg)/s")
748 CALL histdef3d(iff,flag_dtswr,"dtswr","SW radiation dT","K/s")
749 CALL histdef3d(iff,flag_dtsw0,"dtsw0","CS SW radiation dT","K/s")
750 CALL histdef3d(iff,flag_dtlwr,"dtlwr","LW radiation dT","K/s")
751 CALL histdef3d(iff,flag_dtlw0,"dtlw0", "CS LW radiation dT","K/s")
752 CALL histdef3d(iff,flag_dtec,"dtec","Cinetic dissip dT","K/s")
753 CALL histdef3d(iff,flag_duvdf,"duvdf","Boundary-layer dU","m/s2")
754 CALL histdef3d(iff,flag_dvvdf,"dvvdf","Boundary-layer dV", "m/s2")
755
756     IF (ok_orodr) THEN
757 CALL histdef3d(iff,flag_duoro,"duoro","Orography dU","m/s2")
758 CALL histdef3d(iff,flag_dvoro,"dvoro","Orography dV", "m/s2")
759     ENDIF
760
761     IF (ok_orolf) THEN
762 CALL histdef3d(iff,flag_dulif,"dulif","Orography dU","m/s2")
763 CALL histdef3d(iff,flag_dvlif,"dvlif","Orography dV", "m/s2")
764     ENDIF
765
766      if (nqmax>=3) THEN
767    DO iq=3,nqmax
768       iiq=niadv(iq)
769 CALL histdef3d ( iff, flag_trac, tnom(iq),ttext(iiq), "-" )
770    ENDDO
771      endif
772
773        CALL histend(nid_files(iff))
774
775         ndex2d = 0
776         ndex3d = 0
777
778         ENDIF ! clef_files
779
780         ENDDO !
781      end subroutine phys_output_open
782
783      SUBROUTINE histdef2d (iff,flag_var,nomvar,titrevar,unitvar)
784     
785       use ioipsl
786       USE dimphy
787       USE mod_phys_lmdz_para
788
789       IMPLICIT NONE
790       
791       include "dimensions.h"
792       include "temps.h"
793       include "indicesol.h"
794       include "advtrac.h"
795       include "clesphys.h"
796
797       integer                          :: iff
798       integer, dimension(nfiles)       :: flag_var
799       character(len=*)                 :: nomvar
800       character(len=*)                 :: titrevar
801       character(len=*)                 :: unitvar
802       
803       if ( flag_var(iff)<=lev_files(iff) ) then
804 call histdef (nid_files(iff),nomvar,titrevar,unitvar, &
805               iim,jj_nb,nhorim(iff), 1,1,1, -99, 32, &
806               type_ecri(iff), zstophym(iff),zoutm(iff))               
807       endif                     
808      end subroutine histdef2d
809
810      SUBROUTINE histdef3d (iff,flag_var,nomvar,titrevar,unitvar)
811
812       use ioipsl
813       USE dimphy
814       USE mod_phys_lmdz_para
815
816       IMPLICIT NONE
817
818       include "dimensions.h"
819       include "temps.h"
820       include "indicesol.h"
821       include "advtrac.h"
822       include "clesphys.h"
823
824       integer                          :: iff
825       integer, dimension(nfiles)       :: flag_var
826       character(len=*)                 :: nomvar
827       character(len=*)                 :: titrevar
828       character(len=*)                 :: unitvar
829
830       if ( flag_var(iff)<=lev_files(iff) ) then
831          call histdef (nid_files(iff), nomvar, titrevar, unitvar, &
832               iim, jj_nb, nhorim(iff), klev, levmin(iff), &
833               levmax(iff)-levmin(iff)+1, nvertm(iff), 32, type_ecri(iff), &
834               zstophym(iff), zoutm(iff))
835       endif
836      end subroutine histdef3d
837
838END MODULE phys_output_mod
839
Note: See TracBrowser for help on using the repository browser.