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

Last change on this file since 936 was 932, checked in by lmdzadmin, 17 years ago

Sorties globales par defaut et correction choix domaine en latitude AI/IM

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