source: LMDZ4/branches/LMDZ4-dev/libf/phylmd/phys_output_write.h @ 1263

Last change on this file since 1263 was 1263, checked in by lguez, 15 years ago

1) Reactivated ability to read ozone (that was deactivated because of
dependency on version of IOIPSL). Added ability to read a pressure
coordinate in Pa in "regr_lat_time_climoz".

2) Added the ability to read a second ozone climatology, corresponding to
daylight ozone:

-- "read_climoz" is now an integer variable, instead of a logical
variable.

-- Added argument "read_climoz" to "phys_state_var_init",
"phys_output_open" and "regr_lat_time_climoz".

-- Created new variable "ozone_daylight" for "hist*.nc" output files.

-- Added a third dimension to variable "wo" in module
"phys_state_var_mod" and variable "POZON" in "radlwsw": index 1 for
average day-night ozone, index 2 for daylight ozone.

-- Added a fourth dimension to variables "o3_in", "o3_regr_lat" and
"o3_out" in "regr_lat_time_climoz": index 1 for average day-night
ozone, index 2 for daylight ozone.

-- In "physiq", moved call to "conf_phys" before call to
"phys_state_var_init". Thus, "conf_phys" is now inside the block "if
(first)" instead of "IF (debut)". There were definitions of "bl95_b0"
and "bl95_b1" that were useless because the variables were overwritten
by "conf_phys". Removed those definitions.

-- In "radlwsw", we pass the average day-night ozone to "LW_LMDAR4"
and the daylight ozone, if we have it, to "SW_LMDAR4" or
"SW_AEROAR4". If we do not have a specific field for daylight ozone
then "SW_LMDAR4" or "SW_AEROAR4" just get the average day-night ozone.

-- "regr_lat_time_climoz" now manages latitudes where the input ozone
field is missing at all levels (polar night).

-- Encapsulated "radlwsw" in a module.

3) Modifications to make sequential and parallel versions of
"create_etat0_limit" almost identical:

-- In "dyn3dpar/create_etat0_limit.F". No need to call
"phys_state_var_init", removed "use phys_state_var_mod" statement. No
need for "clesphys.h", removed "include" statement.

-- In "dyn3dpar/etat0_netcdf.F". Added argument "tau_ratqs" in call to
"conf_phys" (this bug was already corrected in "dyn3d"). Moved call to
"inifilr" after call to "infotrac_init" (as in "dyn3d").

4) Other peripheral modifications:

-- Added procedures "nf95_get_att" and "nf95_def_var_scalar" in
NetCDF95 interface. Overloaded "nf95_put_var" with three more
procedures: "nf95_put_var_FourByteReal", "nf95_put_var_FourByteInt",
"nf95_put_var_1D_FourByteInt".

-- Overloaded "regr1_step_av" with one more procedure:
"regr14_step_av". Overloaded "regr3_lint" with one more procedure:
"regr34_lint".

-- Corrected call to "Init_Phys_lmdz" in "dyn3d/create_etat0_limit.F":
the last argument should be an array, not a scalar.

-- Encapsulated "conf_phys" in a module.

-- Splitted module "regr_pr" into "regr_pr_av_m" and "regr_pr_int_m".

5) Tests:

This revision was compared to revision 1259, with optimization options
"debug" and "dev", parallelization options "none", "mpi", "omp" and
"mpi_omp", 1 and 2 MPI processes, 1 and 2 OpenMP threads, with the
compiler "FORTRAN90/SX Version 2.0 for SX-8". Both programs
"create_etat0_limit" and "gcm" were tested. In all cases,
parallelization does not change the results. With "read_climoz = 0" in
the ".def" files, the results of revision 1259 and of this revision
are the same.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 43.9 KB
Line 
1      itau_w = itau_phy + itap
2
3      DO iff=1,nfiles
4
5       IF (clef_files(iff)) THEN
6             ndex2d = 0
7             ndex3d = 0
8
9!!! Champs 1D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
10       IF (o_phis%flag(iff)<=lev_files(iff)) THEN
11         CALL histwrite_phy(nid_files(iff),
12     $                      o_phis%name,itau_w,pphis)
13       ENDIF
14
15       IF (o_aire%flag(iff)<=lev_files(iff)) THEN
16       CALL histwrite_phy(nid_files(iff),o_aire%name,itau_w,airephy)
17       ENDIF
18
19       IF (o_contfracATM%flag(iff)<=lev_files(iff)) THEN
20      DO i=1, klon
21       zx_tmp_fi2d(i)=pctsrf(i,is_ter)+pctsrf(i,is_lic)
22      ENDDO
23      CALL histwrite_phy(nid_files(iff),
24     $             o_contfracATM%name,itau_w,zx_tmp_fi2d)
25       ENDIF
26
27       IF (o_contfracOR%flag(iff)<=lev_files(iff)) THEN
28      CALL histwrite_phy(nid_files(iff),o_contfracOR%name,itau_w,
29     $                   pctsrf(:,is_ter))
30       ENDIF
31
32       IF (o_aireTER%flag(iff)<=lev_files(iff)) THEN
33      CALL histwrite_phy(nid_files(iff),
34     $                  o_aireTER%name,itau_w,paire_ter)
35       ENDIF
36
37!!! Champs 2D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
38
39       IF (o_flat%flag(iff)<=lev_files(iff)) THEN
40      CALL histwrite_phy(nid_files(iff),o_flat%name,itau_w,zxfluxlat)
41       ENDIF
42
43       IF (o_slp%flag(iff)<=lev_files(iff)) THEN
44      CALL histwrite_phy(nid_files(iff),o_slp%name,itau_w,slp)
45       ENDIF
46
47       IF (o_tsol%flag(iff)<=lev_files(iff)) THEN
48      CALL histwrite_phy(nid_files(iff),o_tsol%name,itau_w,zxtsol)
49       ENDIF
50
51       IF (o_t2m%flag(iff)<=lev_files(iff)) THEN
52      CALL histwrite_phy(nid_files(iff),o_t2m%name,itau_w,zt2m)
53       ENDIF
54
55       IF (o_t2m_min%flag(iff)<=lev_files(iff)) THEN
56      CALL histwrite_phy(nid_files(iff),o_t2m_min%name,itau_w,zt2m)
57       ENDIF
58
59       IF (o_t2m_max%flag(iff)<=lev_files(iff)) THEN
60      CALL histwrite_phy(nid_files(iff),o_t2m_max%name,itau_w,zt2m)
61       ENDIF
62
63       IF (o_wind10m%flag(iff)<=lev_files(iff)) THEN
64      DO i=1, klon
65       zx_tmp_fi2d(i)=SQRT(zu10m(i)*zu10m(i)+zv10m(i)*zv10m(i))
66      ENDDO
67      CALL histwrite_phy(nid_files(iff),
68     s                  o_wind10m%name,itau_w,zx_tmp_fi2d)
69       ENDIF
70
71       IF (o_wind10max%flag(iff)<=lev_files(iff)) THEN
72      DO i=1, klon
73       zx_tmp_fi2d(i)=SQRT(zu10m(i)*zu10m(i)+zv10m(i)*zv10m(i))
74      ENDDO
75      CALL histwrite_phy(nid_files(iff),o_wind10max%name, 
76     $                   itau_w,zx_tmp_fi2d)
77       ENDIF
78
79       IF (o_sicf%flag(iff)<=lev_files(iff)) THEN
80      DO i = 1, klon
81         zx_tmp_fi2d(i) = pctsrf(i,is_sic)
82      ENDDO
83      CALL histwrite_phy(nid_files(iff),
84     $                   o_sicf%name,itau_w,zx_tmp_fi2d)
85       ENDIF
86
87       IF (o_q2m%flag(iff)<=lev_files(iff)) THEN
88      CALL histwrite_phy(nid_files(iff),o_q2m%name,itau_w,zq2m)
89       ENDIF
90
91       IF (o_u10m%flag(iff)<=lev_files(iff)) THEN
92      CALL histwrite_phy(nid_files(iff),o_u10m%name,itau_w,zu10m)
93       ENDIF
94
95       IF (o_v10m%flag(iff)<=lev_files(iff)) THEN
96      CALL histwrite_phy(nid_files(iff),o_v10m%name,itau_w,zv10m)
97       ENDIF
98
99       IF (o_psol%flag(iff)<=lev_files(iff)) THEN
100      DO i = 1, klon
101         zx_tmp_fi2d(i) = paprs(i,1)
102      ENDDO
103      CALL histwrite_phy(nid_files(iff),
104     s                   o_psol%name,itau_w,zx_tmp_fi2d)
105       ENDIF
106
107       IF (o_qsurf%flag(iff)<=lev_files(iff)) THEN
108      CALL histwrite_phy(nid_files(iff),o_qsurf%name,itau_w,zxqsurf)
109       ENDIF
110
111       if (.not. ok_veget) then
112         IF (o_qsol%flag(iff)<=lev_files(iff)) THEN
113        CALL histwrite_phy(nid_files(iff),o_qsol%name,itau_w,qsol)
114         ENDIF
115       endif
116
117      IF (o_precip%flag(iff)<=lev_files(iff)) THEN
118       DO i = 1, klon
119         zx_tmp_fi2d(i) = rain_fall(i) + snow_fall(i)
120       ENDDO
121      CALL histwrite_phy(nid_files(iff),o_precip%name,
122     s                   itau_w,zx_tmp_fi2d)
123      ENDIF
124
125       IF (o_ndayrain%flag(iff)<=lev_files(iff)) THEN
126      CALL histwrite_phy(nid_files(iff),o_ndayrain%name,
127     s                   itau_w,nday_rain)
128       ENDIF
129
130      IF (o_plul%flag(iff)<=lev_files(iff)) THEN
131       DO i = 1, klon
132         zx_tmp_fi2d(i) = rain_lsc(i) + snow_lsc(i)
133       ENDDO
134      CALL histwrite_phy(nid_files(iff),o_plul%name,itau_w,zx_tmp_fi2d)
135      ENDIF
136
137      IF (o_pluc%flag(iff)<=lev_files(iff)) THEN
138      DO i = 1, klon
139         zx_tmp_fi2d(i) = rain_con(i) + snow_con(i)
140      ENDDO
141      CALL histwrite_phy(nid_files(iff),o_pluc%name,itau_w,zx_tmp_fi2d)
142      ENDIF
143
144       IF (o_snow%flag(iff)<=lev_files(iff)) THEN
145      CALL histwrite_phy(nid_files(iff),o_snow%name,itau_w,snow_fall)
146       ENDIF
147
148       IF (o_evap%flag(iff)<=lev_files(iff)) THEN
149      CALL histwrite_phy(nid_files(iff),o_evap%name,itau_w,evap)
150       ENDIF
151
152       IF (o_tops%flag(iff)<=lev_files(iff)) THEN
153      CALL histwrite_phy(nid_files(iff),o_tops%name,itau_w,topsw)
154       ENDIF
155
156       IF (o_tops0%flag(iff)<=lev_files(iff)) THEN
157      CALL histwrite_phy(nid_files(iff),o_tops0%name,itau_w,topsw0)
158       ENDIF
159
160       IF (o_topl%flag(iff)<=lev_files(iff)) THEN
161      CALL histwrite_phy(nid_files(iff),o_topl%name,itau_w,toplw)
162       ENDIF
163
164       IF (o_topl0%flag(iff)<=lev_files(iff)) THEN
165      CALL histwrite_phy(nid_files(iff),o_topl0%name,itau_w,toplw0)
166       ENDIF
167
168       IF (o_SWupTOA%flag(iff)<=lev_files(iff)) THEN
169      zx_tmp_fi2d(1 : klon) = swup ( 1 : klon, klevp1 )
170      CALL histwrite_phy(nid_files(iff),o_SWupTOA%name,
171     s                     itau_w,zx_tmp_fi2d)
172       ENDIF
173
174       IF (o_SWupTOAclr%flag(iff)<=lev_files(iff)) THEN
175      zx_tmp_fi2d(1 : klon) = swup0 ( 1 : klon, klevp1 )
176      CALL histwrite_phy(nid_files(iff), 
177     $                  o_SWupTOAclr%name,itau_w,zx_tmp_fi2d)
178       ENDIF
179
180       IF (o_SWdnTOA%flag(iff)<=lev_files(iff)) THEN
181      zx_tmp_fi2d(1 : klon) = swdn ( 1 : klon, klevp1 )
182      CALL histwrite_phy(nid_files(iff),
183     s                  o_SWdnTOA%name,itau_w,zx_tmp_fi2d)
184       ENDIF
185
186       IF (o_SWdnTOAclr%flag(iff)<=lev_files(iff)) THEN
187      zx_tmp_fi2d(1 : klon) = swdn0 ( 1 : klon, klevp1 )
188      CALL histwrite_phy(nid_files(iff), 
189     $                  o_SWdnTOAclr%name,itau_w,zx_tmp_fi2d)
190       ENDIF
191
192       IF (o_SWup200%flag(iff)<=lev_files(iff)) THEN
193      CALL histwrite_phy(nid_files(iff),o_SWup200%name,itau_w,SWup200)
194       ENDIF
195
196       IF (o_SWup200clr%flag(iff)<=lev_files(iff)) THEN
197      CALL histwrite_phy(nid_files(iff),
198     s                   o_SWup200clr%name,itau_w,SWup200clr)
199       ENDIF
200
201       IF (o_SWdn200%flag(iff)<=lev_files(iff)) THEN
202      CALL histwrite_phy(nid_files(iff),o_SWdn200%name,itau_w,SWdn200)
203       ENDIF
204
205       IF (o_SWdn200clr%flag(iff)<=lev_files(iff)) THEN
206      CALL histwrite_phy(nid_files(iff),
207     s                o_SWdn200clr%name,itau_w,SWdn200clr)
208       ENDIF
209
210       IF (o_LWup200%flag(iff)<=lev_files(iff)) THEN
211      CALL histwrite_phy(nid_files(iff),o_LWup200%name,itau_w,LWup200)
212       ENDIF
213
214       IF (o_LWup200clr%flag(iff)<=lev_files(iff)) THEN
215      CALL histwrite_phy(nid_files(iff),
216     s                   o_LWup200clr%name,itau_w,LWup200clr)
217       ENDIF
218
219       IF (o_LWdn200%flag(iff)<=lev_files(iff)) THEN
220      CALL histwrite_phy(nid_files(iff),
221     s                   o_LWdn200%name,itau_w,LWdn200)
222       ENDIF
223
224       IF (o_LWdn200clr%flag(iff)<=lev_files(iff)) THEN
225      CALL histwrite_phy(nid_files(iff),
226     s                  o_LWdn200clr%name,itau_w,LWdn200clr)
227       ENDIF
228
229       IF (o_sols%flag(iff)<=lev_files(iff)) THEN
230      CALL histwrite_phy(nid_files(iff),o_sols%name,itau_w,solsw)
231       ENDIF
232
233       IF (o_sols0%flag(iff)<=lev_files(iff)) THEN
234      CALL histwrite_phy(nid_files(iff),o_sols0%name,itau_w,solsw0)
235       ENDIF
236
237       IF (o_soll%flag(iff)<=lev_files(iff)) THEN
238      CALL histwrite_phy(nid_files(iff),o_soll%name,itau_w,sollw)
239       ENDIF
240
241       IF (o_radsol%flag(iff)<=lev_files(iff)) THEN
242      CALL histwrite_phy(nid_files(iff),o_radsol%name,itau_w,radsol)
243       ENDIF
244
245       IF (o_soll0%flag(iff)<=lev_files(iff)) THEN
246      CALL histwrite_phy(nid_files(iff),o_soll0%name,itau_w,sollw0)
247       ENDIF
248
249       IF (o_SWupSFC%flag(iff)<=lev_files(iff)) THEN
250      zx_tmp_fi2d(1 : klon) = swup ( 1 : klon, 1 )
251      CALL histwrite_phy(nid_files(iff),
252     s               o_SWupSFC%name,itau_w,zx_tmp_fi2d)
253       ENDIF
254
255       IF (o_SWupSFCclr%flag(iff)<=lev_files(iff)) THEN
256      zx_tmp_fi2d(1 : klon) = swup0 ( 1 : klon, 1 )
257      CALL histwrite_phy(nid_files(iff), 
258     $                   o_SWupSFCclr%name,itau_w,zx_tmp_fi2d)
259       ENDIF
260
261       IF (o_SWdnSFC%flag(iff)<=lev_files(iff)) THEN
262      zx_tmp_fi2d(1 : klon) = swdn ( 1 : klon, 1 )
263      CALL histwrite_phy(nid_files(iff), 
264     $                   o_SWdnSFC%name,itau_w,zx_tmp_fi2d)
265       ENDIF
266
267       IF (o_SWdnSFCclr%flag(iff)<=lev_files(iff)) THEN
268      zx_tmp_fi2d(1 : klon) = swdn0 ( 1 : klon, 1 )
269      CALL histwrite_phy(nid_files(iff), 
270     $                  o_SWdnSFCclr%name,itau_w,zx_tmp_fi2d)
271       ENDIF
272
273       IF (o_LWupSFC%flag(iff)<=lev_files(iff)) THEN
274      zx_tmp_fi2d(1:klon)=sollwdown(1:klon)-sollw(1:klon)
275      CALL histwrite_phy(nid_files(iff),
276     $                    o_LWupSFC%name,itau_w,zx_tmp_fi2d)
277       ENDIF
278
279       IF (o_LWdnSFC%flag(iff)<=lev_files(iff)) THEN
280      CALL histwrite_phy(nid_files(iff),
281     $                   o_LWdnSFC%name,itau_w,sollwdown)
282       ENDIF
283
284       sollwdownclr(1:klon) = -1.*lwdn0(1:klon,1)
285       IF (o_LWupSFCclr%flag(iff)<=lev_files(iff)) THEN
286      zx_tmp_fi2d(1:klon)=sollwdownclr(1:klon)-sollw0(1:klon)
287      CALL histwrite_phy(nid_files(iff),
288     $                   o_LWupSFCclr%name,itau_w,zx_tmp_fi2d)
289       ENDIF
290
291       IF (o_LWdnSFCclr%flag(iff)<=lev_files(iff)) THEN
292      CALL histwrite_phy(nid_files(iff),
293     $                   o_LWdnSFCclr%name,itau_w,sollwdownclr)
294       ENDIF
295
296       IF (o_bils%flag(iff)<=lev_files(iff)) THEN
297      CALL histwrite_phy(nid_files(iff),o_bils%name,itau_w,bils)
298       ENDIF
299
300       IF (o_sens%flag(iff)<=lev_files(iff)) THEN
301      zx_tmp_fi2d(1:klon)=-1*sens(1:klon)
302      CALL histwrite_phy(nid_files(iff),o_sens%name,itau_w,zx_tmp_fi2d)
303       ENDIF
304
305       IF (o_fder%flag(iff)<=lev_files(iff)) THEN
306      CALL histwrite_phy(nid_files(iff),o_fder%name,itau_w,fder)
307       ENDIF
308
309       IF (o_ffonte%flag(iff)<=lev_files(iff)) THEN
310       CALL histwrite_phy(nid_files(iff),o_ffonte%name,itau_w,zxffonte)
311       ENDIF
312
313       IF (o_fqcalving%flag(iff)<=lev_files(iff)) THEN
314       CALL histwrite_phy(nid_files(iff),
315     $                    o_fqcalving%name,itau_w,zxfqcalving)
316       ENDIF
317
318       IF (o_fqfonte%flag(iff)<=lev_files(iff)) THEN
319       CALL histwrite_phy(nid_files(iff),
320     $                   o_fqfonte%name,itau_w,zxfqfonte)
321       ENDIF
322
323         DO nsrf = 1, nbsrf
324!           IF(nsrf.GE.2) THEN
325            IF (o_pourc_srf(nsrf)%flag(iff)<=lev_files(iff)) THEN
326            zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)*100.
327            CALL histwrite_phy(nid_files(iff),
328     $                     o_pourc_srf(nsrf)%name,itau_w,
329     $                     zx_tmp_fi2d)
330            ENDIF
331
332          IF (o_fract_srf(nsrf)%flag(iff)<=lev_files(iff)) THEN
333          zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)
334          CALL histwrite_phy(nid_files(iff),
335     $                  o_fract_srf(nsrf)%name,itau_w,
336     $                  zx_tmp_fi2d)
337          ENDIF
338!         ENDIF !nsrf.GT.2
339
340        IF (o_taux_srf(nsrf)%flag(iff)<=lev_files(iff)) THEN
341        zx_tmp_fi2d(1 : klon) = fluxu( 1 : klon, 1, nsrf)
342        CALL histwrite_phy(nid_files(iff),
343     $                     o_taux_srf(nsrf)%name,itau_w,
344     $                     zx_tmp_fi2d)
345        ENDIF
346
347        IF (o_tauy_srf(nsrf)%flag(iff)<=lev_files(iff)) THEN           
348        zx_tmp_fi2d(1 : klon) = fluxv( 1 : klon, 1, nsrf)
349        CALL histwrite_phy(nid_files(iff),
350     $                    o_tauy_srf(nsrf)%name,itau_w,
351     $                    zx_tmp_fi2d)
352        ENDIF
353
354        IF (o_tsol_srf(nsrf)%flag(iff)<=lev_files(iff)) THEN
355        zx_tmp_fi2d(1 : klon) = ftsol( 1 : klon, nsrf)
356        CALL histwrite_phy(nid_files(iff),
357     $                   o_tsol_srf(nsrf)%name,itau_w,
358     $      zx_tmp_fi2d)
359        ENDIF
360
361      IF (o_u10m_srf(nsrf)%flag(iff)<=lev_files(iff)) THEN
362      zx_tmp_fi2d(1 : klon) = u10m(1 : klon, nsrf)
363      CALL histwrite_phy(nid_files(iff),o_u10m_srf(nsrf)%name,
364     $                 itau_w,zx_tmp_fi2d)
365      ENDIF
366
367      IF (o_v10m_srf(nsrf)%flag(iff)<=lev_files(iff)) THEN
368      zx_tmp_fi2d(1 : klon) = v10m(1 : klon, nsrf)
369      CALL histwrite_phy(nid_files(iff),o_v10m_srf(nsrf)%name,
370     $              itau_w,zx_tmp_fi2d)
371      ENDIF
372 
373      IF (o_t2m_srf(nsrf)%flag(iff)<=lev_files(iff)) THEN
374      zx_tmp_fi2d(1 : klon) = t2m(1 : klon, nsrf)
375      CALL histwrite_phy(nid_files(iff),o_t2m_srf(nsrf)%name,
376     $           itau_w,zx_tmp_fi2d)
377      ENDIF
378
379       IF (o_sens_srf(nsrf)%flag(iff)<=lev_files(iff)) THEN
380       zx_tmp_fi2d(1 : klon) = fluxt( 1 : klon, 1, nsrf)
381       CALL histwrite_phy(nid_files(iff),
382     $                    o_sens_srf(nsrf)%name,itau_w,
383     $      zx_tmp_fi2d)
384       ENDIF
385
386        IF (o_lat_srf(nsrf)%flag(iff)<=lev_files(iff)) THEN
387        zx_tmp_fi2d(1 : klon) = fluxlat( 1 : klon, nsrf)
388        CALL histwrite_phy(nid_files(iff),
389     $                 o_lat_srf(nsrf)%name,itau_w,
390     $                                   zx_tmp_fi2d)
391          ENDIF
392
393        IF (o_flw_srf(nsrf)%flag(iff)<=lev_files(iff)) THEN
394        zx_tmp_fi2d(1 : klon) = fsollw( 1 : klon, nsrf)
395        CALL histwrite_phy(nid_files(iff),
396     $                     o_flw_srf(nsrf)%name,itau_w,
397     $      zx_tmp_fi2d)
398        ENDIF
399
400        IF (o_fsw_srf(nsrf)%flag(iff)<=lev_files(iff)) THEN
401        zx_tmp_fi2d(1 : klon) = fsolsw( 1 : klon, nsrf)
402        CALL histwrite_phy(nid_files(iff),
403     $                   o_fsw_srf(nsrf)%name,itau_w,
404     $      zx_tmp_fi2d)
405        ENDIF
406
407        IF (o_wbils_srf(nsrf)%flag(iff)<=lev_files(iff)) THEN
408        zx_tmp_fi2d(1 : klon) = wfbils( 1 : klon, nsrf)
409        CALL histwrite_phy(nid_files(iff),
410     $                   o_wbils_srf(nsrf)%name,itau_w,
411     $      zx_tmp_fi2d)
412        ENDIF
413
414        IF (o_wbilo_srf(nsrf)%flag(iff)<=lev_files(iff)) THEN
415        zx_tmp_fi2d(1 : klon) = wfbilo( 1 : klon, nsrf)
416        CALL histwrite_phy(nid_files(iff),
417     $                    o_wbilo_srf(nsrf)%name,itau_w,
418     $      zx_tmp_fi2d)
419        ENDIF
420
421       if (iflag_pbl>1 .and. lev_histday.gt.10 ) then
422        IF (o_tke_srf(nsrf)%flag(iff)<=lev_files(iff)) THEN
423        CALL histwrite_phy(nid_files(iff),
424     $                   o_tke_srf(nsrf)%name,itau_w,
425     $                    pbl_tke(:,1:klev,nsrf))
426       ENDIF
427
428        IF (o_tke_max_srf(nsrf)%flag(iff)<=lev_files(iff)) THEN
429        CALL histwrite_phy(nid_files(iff),
430     $                    o_tke_max_srf(nsrf)%name,itau_w,
431     $      pbl_tke(:,1:klev,nsrf))
432        ENDIF
433       endif
434      ENDDO
435
436        IF (o_cdrm%flag(iff)<=lev_files(iff)) THEN
437      CALL histwrite_phy(nid_files(iff),o_cdrm%name,itau_w,cdragm)
438        ENDIF
439
440        IF (o_cdrh%flag(iff)<=lev_files(iff)) THEN
441      CALL histwrite_phy(nid_files(iff),o_cdrh%name,itau_w,cdragh)
442        ENDIF
443
444        IF (o_cldl%flag(iff)<=lev_files(iff)) THEN
445      CALL histwrite_phy(nid_files(iff),o_cldl%name,itau_w,cldl)
446        ENDIF
447
448        IF (o_cldm%flag(iff)<=lev_files(iff)) THEN
449      CALL histwrite_phy(nid_files(iff),o_cldm%name,itau_w,cldm)
450        ENDIF
451
452        IF (o_cldh%flag(iff)<=lev_files(iff)) THEN
453      CALL histwrite_phy(nid_files(iff),o_cldh%name,itau_w,cldh)
454        ENDIF
455
456        IF (o_cldt%flag(iff)<=lev_files(iff)) THEN
457      CALL histwrite_phy(nid_files(iff),o_cldt%name, 
458     &                   itau_w,cldt*100)
459        ENDIF
460
461        IF (o_cldq%flag(iff)<=lev_files(iff)) THEN
462      CALL histwrite_phy(nid_files(iff),o_cldq%name,itau_w,cldq)
463        ENDIF
464
465        IF (o_lwp%flag(iff)<=lev_files(iff)) THEN
466      zx_tmp_fi2d(1:klon) = flwp(1:klon)
467      CALL histwrite_phy(nid_files(iff),
468     s                   o_lwp%name,itau_w,zx_tmp_fi2d)
469        ENDIF
470
471        IF (o_iwp%flag(iff)<=lev_files(iff)) THEN
472      zx_tmp_fi2d(1:klon) = fiwp(1:klon)
473      CALL histwrite_phy(nid_files(iff),
474     s                    o_iwp%name,itau_w,zx_tmp_fi2d)
475        ENDIF
476
477        IF (o_ue%flag(iff)<=lev_files(iff)) THEN
478      CALL histwrite_phy(nid_files(iff),o_ue%name,itau_w,ue)
479        ENDIF
480
481        IF (o_ve%flag(iff)<=lev_files(iff)) THEN
482      CALL histwrite_phy(nid_files(iff),o_ve%name,itau_w,ve)
483        ENDIF
484
485        IF (o_uq%flag(iff)<=lev_files(iff)) THEN
486      CALL histwrite_phy(nid_files(iff),o_uq%name,itau_w,uq)
487        ENDIF
488
489        IF (o_vq%flag(iff)<=lev_files(iff)) THEN
490      CALL histwrite_phy(nid_files(iff),o_vq%name,itau_w,vq)
491        ENDIF
492
493      IF(iflag_con.GE.3) THEN ! sb
494        IF (o_cape%flag(iff)<=lev_files(iff)) THEN
495      CALL histwrite_phy(nid_files(iff),o_cape%name,itau_w,cape)
496        ENDIF
497
498        IF (o_pbase%flag(iff)<=lev_files(iff)) THEN
499      CALL histwrite_phy(nid_files(iff),o_pbase%name,itau_w,pbase)
500        ENDIF
501
502        IF (o_ptop%flag(iff)<=lev_files(iff)) THEN
503      CALL histwrite_phy(nid_files(iff),o_ptop%name,itau_w,ema_pct)
504        ENDIF
505
506        IF (o_fbase%flag(iff)<=lev_files(iff)) THEN
507      CALL histwrite_phy(nid_files(iff),o_fbase%name,itau_w,ema_cbmf)
508        ENDIF
509
510        IF (o_prw%flag(iff)<=lev_files(iff)) THEN
511      CALL histwrite_phy(nid_files(iff),o_prw%name,itau_w,prw)
512        ENDIF
513
514      IF (o_cape_max%flag(iff)<=lev_files(iff)) THEN
515      CALL histwrite_phy(nid_files(iff),o_cape_max%name,itau_w,cape)
516      ENDIF
517
518       IF (o_upwd%flag(iff)<=lev_files(iff)) THEN
519      CALL histwrite_phy(nid_files(iff),o_upwd%name,itau_w,upwd)
520       ENDIF
521
522       IF (o_Ma%flag(iff)<=lev_files(iff)) THEN
523      CALL histwrite_phy(nid_files(iff),o_Ma%name,itau_w,Ma)
524       ENDIF
525
526       IF (o_dnwd%flag(iff)<=lev_files(iff)) THEN
527      CALL histwrite_phy(nid_files(iff),o_dnwd%name,itau_w,dnwd)
528       ENDIF
529
530       IF (o_dnwd0%flag(iff)<=lev_files(iff)) THEN
531      CALL histwrite_phy(nid_files(iff),o_dnwd0%name,itau_w,dnwd0)
532       ENDIF
533
534      ENDIF !iflag_con .GE. 3
535
536        IF (o_s_pblh%flag(iff)<=lev_files(iff)) THEN
537      CALL histwrite_phy(nid_files(iff),o_s_pblh%name,itau_w,s_pblh)
538        ENDIF
539
540        IF (o_s_pblt%flag(iff)<=lev_files(iff)) THEN
541      CALL histwrite_phy(nid_files(iff),o_s_pblt%name,itau_w,s_pblt)
542        ENDIF
543
544        IF (o_s_lcl%flag(iff)<=lev_files(iff)) THEN
545      CALL histwrite_phy(nid_files(iff),o_s_lcl%name,itau_w,s_lcl)
546        ENDIF
547
548        IF (o_s_capCL%flag(iff)<=lev_files(iff)) THEN
549      CALL histwrite_phy(nid_files(iff),o_s_capCL%name,itau_w,s_capCL)
550        ENDIF
551
552        IF (o_s_oliqCL%flag(iff)<=lev_files(iff)) THEN
553      CALL histwrite_phy(nid_files(iff),o_s_oliqCL%name,itau_w,s_oliqCL)
554        ENDIF
555
556        IF (o_s_cteiCL%flag(iff)<=lev_files(iff)) THEN
557      CALL histwrite_phy(nid_files(iff),o_s_cteiCL%name,itau_w,s_cteiCL)
558        ENDIF
559
560        IF (o_s_therm%flag(iff)<=lev_files(iff)) THEN
561      CALL histwrite_phy(nid_files(iff),o_s_therm%name,itau_w,s_therm)
562        ENDIF
563
564        IF (o_s_trmb1%flag(iff)<=lev_files(iff)) THEN
565      CALL histwrite_phy(nid_files(iff),o_s_trmb1%name,itau_w,s_trmb1)
566        ENDIF
567
568        IF (o_s_trmb2%flag(iff)<=lev_files(iff)) THEN
569      CALL histwrite_phy(nid_files(iff),o_s_trmb2%name,itau_w,s_trmb2)
570        ENDIF
571
572        IF (o_s_trmb3%flag(iff)<=lev_files(iff)) THEN
573      CALL histwrite_phy(nid_files(iff),o_s_trmb3%name,itau_w,s_trmb3)
574        ENDIF
575
576! Champs interpolles sur des niveaux de pression
577
578        ll=0
579        DO k=1, nlevSTD
580!         IF(k.GE.2.AND.k.LE.12) bb2=clevSTD(k)
581!         IF(k.GE.13.AND.k.LE.17) bb3=clevSTD(k)
582         bb2=clevSTD(k) 
583         IF(bb2.EQ."850".OR.bb2.EQ."700".OR.
584     $      bb2.EQ."500".OR.bb2.EQ."200".OR.
585     $      bb2.EQ."50".OR.bb2.EQ."10") THEN
586
587! a refaire correctement !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
588          ll=ll+1
589       IF (o_uSTDlevs(ll)%flag(iff)<=lev_files(iff)) THEN
590       CALL histwrite_phy(nid_files(iff),o_uSTDlevs(ll)%name,
591     &                    itau_w,uwriteSTD(:,k,iff))
592       ENDIF
593
594       IF (o_vSTDlevs(ll)%flag(iff)<=lev_files(iff)) THEN
595      CALL histwrite_phy(nid_files(iff),o_vSTDlevs(ll)%name, 
596     &                   itau_w,vwriteSTD(:,k,iff))
597       ENDIF
598
599       IF (o_wSTDlevs(ll)%flag(iff)<=lev_files(iff)) THEN
600      CALL histwrite_phy(nid_files(iff),o_wSTDlevs(ll)%name,
601     &                    itau_w,wwriteSTD(:,k,iff))
602       ENDIF
603
604       IF (o_phiSTDlevs(ll)%flag(iff)<=lev_files(iff)) THEN
605      CALL histwrite_phy(nid_files(iff),o_phiSTDlevs(ll)%name,
606     &               itau_w,phiwriteSTD(:,k,iff))
607       ENDIF
608
609       IF (o_qSTDlevs(ll)%flag(iff)<=lev_files(iff)) THEN
610      CALL histwrite_phy(nid_files(iff),o_qSTDlevs(ll)%name,
611     &                   itau_w, qwriteSTD(:,k,iff))
612       ENDIF
613
614       IF (o_tSTDlevs(ll)%flag(iff)<=lev_files(iff)) THEN
615      CALL histwrite_phy(nid_files(iff),o_tSTDlevs(ll)%name,
616     &                   itau_w, twriteSTD(:,k,iff))
617       ENDIF
618
619       ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR.
620       ENDDO
621
622      IF (o_t_oce_sic%flag(iff)<=lev_files(iff)) THEN
623      DO i=1, klon
624       IF (pctsrf(i,is_oce).GT.epsfra.OR.
625     $     pctsrf(i,is_sic).GT.epsfra) THEN
626        zx_tmp_fi2d(i) = (ftsol(i, is_oce) * pctsrf(i,is_oce)+
627     $                   ftsol(i, is_sic) * pctsrf(i,is_sic))/
628     $                   (pctsrf(i,is_oce)+pctsrf(i,is_sic))
629       ELSE
630        zx_tmp_fi2d(i) = 273.15
631       ENDIF
632      ENDDO
633      CALL histwrite_phy(nid_files(iff),
634     s                   o_t_oce_sic%name,itau_w,zx_tmp_fi2d)
635      ENDIF
636
637! Couplage convection-couche limite
638      IF (iflag_con.GE.3) THEN
639      IF (iflag_coupl.EQ.1) THEN
640       IF (o_ale_bl%flag(iff)<=lev_files(iff)) THEN
641       CALL histwrite_phy(nid_files(iff),o_ale_bl%name,itau_w,ale_bl)
642       ENDIF
643       IF (o_alp_bl%flag(iff)<=lev_files(iff)) THEN
644       CALL histwrite_phy(nid_files(iff),o_alp_bl%name,itau_w,alp_bl)
645       ENDIF
646      ENDIF !iflag_coupl.EQ.1
647      ENDIF !(iflag_con.GE.3)
648
649! Wakes
650      IF (iflag_con.EQ.3) THEN
651      IF (iflag_wake.EQ.1) THEN
652       IF (o_ale_wk%flag(iff)<=lev_files(iff)) THEN
653       CALL histwrite_phy(nid_files(iff),o_ale_wk%name,itau_w,ale_wake)
654       ENDIF
655       IF (o_alp_wk%flag(iff)<=lev_files(iff)) THEN
656       CALL histwrite_phy(nid_files(iff),o_alp_wk%name,itau_w,alp_wake)
657       ENDIF
658
659       IF (o_ale%flag(iff)<=lev_files(iff)) THEN
660       CALL histwrite_phy(nid_files(iff),o_ale%name,itau_w,ale)
661       ENDIF
662       IF (o_alp%flag(iff)<=lev_files(iff)) THEN
663       CALL histwrite_phy(nid_files(iff),o_alp%name,itau_w,alp)
664       ENDIF
665       IF (o_cin%flag(iff)<=lev_files(iff)) THEN
666       CALL histwrite_phy(nid_files(iff),o_cin%name,itau_w,cin)
667       ENDIF
668       IF (o_wape%flag(iff)<=lev_files(iff)) THEN
669       CALL histwrite_phy(nid_files(iff),o_WAPE%name,itau_w,wake_pe)
670       ENDIF
671       IF (o_wake_h%flag(iff)<=lev_files(iff)) THEN
672      CALL histwrite_phy(nid_files(iff),o_wake_h%name,itau_w,wake_h)
673       ENDIF
674
675       IF (o_wake_s%flag(iff)<=lev_files(iff)) THEN
676      CALL histwrite_phy(nid_files(iff),o_wake_s%name,itau_w,wake_s)
677       ENDIF
678
679        IF (o_wake_deltat%flag(iff)<=lev_files(iff)) THEN
680       CALL histwrite_phy(nid_files(iff),o_wake_deltat%name,
681     $                     itau_w,wake_deltat)
682        ENDIF
683
684        IF (o_wake_deltaq%flag(iff)<=lev_files(iff)) THEN
685       CALL histwrite_phy(nid_files(iff),o_wake_deltaq%name,
686     $                    itau_w,wake_deltaq)
687        ENDIF
688
689        IF (o_wake_omg%flag(iff)<=lev_files(iff)) THEN
690       CALL histwrite_phy(nid_files(iff),
691     s                    o_wake_omg%name,itau_w,wake_omg)
692        ENDIF
693
694         IF (o_dtwak%flag(iff)<=lev_files(iff)) THEN
695           zx_tmp_fi3d(1:klon,1:klev)=d_t_wake(1:klon,1:klev)
696     &                                        /pdtphys
697           CALL histwrite_phy(nid_files(iff),
698     &                       o_dtwak%name,itau_w,zx_tmp_fi3d)
699         ENDIF
700
701        IF (o_dqwak%flag(iff)<=lev_files(iff)) THEN
702        zx_tmp_fi3d(1:klon,1:klev)=d_q_wake(1:klon,1:klev)/pdtphys
703        CALL histwrite_phy(nid_files(iff),
704     &                     o_dqwak%name,itau_w,zx_tmp_fi3d)
705        ENDIF
706      ENDIF ! iflag_wake.EQ.1
707
708        IF (o_Vprecip%flag(iff)<=lev_files(iff)) THEN
709       CALL histwrite_phy(nid_files(iff),o_Vprecip%name,itau_w,Vprecip)
710        ENDIF
711
712        IF (o_ftd%flag(iff)<=lev_files(iff)) THEN
713       CALL histwrite_phy(nid_files(iff),o_ftd%name,itau_w,ftd)
714        ENDIF
715
716        IF (o_fqd%flag(iff)<=lev_files(iff)) THEN
717       CALL histwrite_phy(nid_files(iff),o_fqd%name,itau_w,fqd)
718        ENDIF
719      ENDIF !(iflag_con.EQ.3) 
720 
721      IF (type_ocean=='slab ') THEN
722      IF ( o_slab_bils%flag(iff)<=lev_files(iff)) 
723     $     CALL histwrite_phy(
724     $     nid_files(iff),o_slab_bils%name,itau_w,slab_wfbils)
725
726      ENDIF !type_ocean == force/slab
727
728      IF (o_weakinv%flag(iff)<=lev_files(iff)) THEN
729      CALL histwrite_phy(nid_files(iff),
730     s                  o_weakinv%name,itau_w,weak_inversion)
731      ENDIF
732
733      IF (o_dthmin%flag(iff)<=lev_files(iff)) THEN
734      CALL histwrite_phy(nid_files(iff),o_dthmin%name,itau_w,dthmin)
735      ENDIF
736
737       IF (o_cldtau%flag(iff)<=lev_files(iff)) THEN
738       CALL histwrite_phy(nid_files(iff),o_cldtau%name,itau_w,cldtau)
739       ENDIF
740
741       IF (o_cldemi%flag(iff)<=lev_files(iff)) THEN
742       CALL histwrite_phy(nid_files(iff),o_cldemi%name,itau_w,cldemi)
743       ENDIF
744
745      IF (o_pr_con_l%flag(iff)<=lev_files(iff)) THEN
746      CALL histwrite_phy(nid_files(iff),
747     s         o_pr_con_l%name,itau_w,pmflxr(:,1:klev))
748      ENDIF
749
750      IF (o_pr_con_i%flag(iff)<=lev_files(iff)) THEN
751      CALL histwrite_phy(nid_files(iff),
752     s         o_pr_con_i%name,itau_w,pmflxs(:,1:klev))
753      ENDIF
754
755      IF (o_pr_lsc_l%flag(iff)<=lev_files(iff)) THEN
756      CALL histwrite_phy(nid_files(iff),
757     s        o_pr_lsc_l%name,itau_w,prfl(:,1:klev))
758      ENDIF
759
760      IF (o_pr_lsc_i%flag(iff)<=lev_files(iff)) THEN
761      CALL histwrite_phy(nid_files(iff),
762     s        o_pr_lsc_i%name,itau_w,psfl(:,1:klev))
763      ENDIF
764
765
766      IF (o_rh2m%flag(iff)<=lev_files(iff)) THEN
767      DO i=1, klon
768       zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
769      ENDDO
770      CALL histwrite_phy(nid_files(iff),o_rh2m%name,itau_w,zx_tmp_fi2d)
771      ENDIF
772
773      IF (o_qsat2m%flag(iff)<=lev_files(iff)) THEN
774      CALL histwrite_phy(nid_files(iff),o_qsat2m%name,itau_w,qsat2m)
775      ENDIF
776
777      IF (o_tpot%flag(iff)<=lev_files(iff)) THEN
778      CALL histwrite_phy(nid_files(iff),o_tpot%name,itau_w,tpot)
779      ENDIF
780
781       IF (o_tpote%flag(iff)<=lev_files(iff)) THEN
782      CALL histwrite_phy(nid_files(iff),o_tpote%name,itau_w,tpote)
783       ENDIF
784
785      IF (o_SWnetOR%flag(iff)<=lev_files(iff)) THEN
786      zx_tmp_fi2d(1 : klon) = fsolsw( 1 : klon, is_ter)
787      CALL histwrite_phy(nid_files(iff),
788     s                   o_SWnetOR%name,itau_w, zx_tmp_fi2d)
789      ENDIF
790
791      IF (o_SWdownOR%flag(iff)<=lev_files(iff)) THEN
792      zx_tmp_fi2d(1:klon) = solsw(1:klon)/(1.-albsol1(1:klon))
793      CALL histwrite_phy(nid_files(iff),
794     s                   o_SWdownOR%name,itau_w, zx_tmp_fi2d)
795      ENDIF
796
797      IF (o_LWdownOR%flag(iff)<=lev_files(iff)) THEN
798      CALL histwrite_phy(nid_files(iff),
799     s                  o_LWdownOR%name,itau_w,sollwdown)
800      ENDIF
801
802      IF (o_snowl%flag(iff)<=lev_files(iff)) THEN
803      CALL histwrite_phy(nid_files(iff),o_snowl%name,itau_w,snow_lsc)
804      ENDIF
805
806      IF (o_solldown%flag(iff)<=lev_files(iff)) THEN
807      CALL histwrite_phy(nid_files(iff),
808     s                   o_solldown%name,itau_w,sollwdown)
809      ENDIF
810
811      IF (o_dtsvdfo%flag(iff)<=lev_files(iff)) THEN
812      CALL histwrite_phy(nid_files(iff),
813     s                 o_dtsvdfo%name,itau_w,d_ts(:,is_oce))
814      ENDIF
815
816      IF (o_dtsvdft%flag(iff)<=lev_files(iff)) THEN
817      CALL histwrite_phy(nid_files(iff),
818     s                   o_dtsvdft%name,itau_w,d_ts(:,is_ter))
819      ENDIF
820
821       IF (o_dtsvdfg%flag(iff)<=lev_files(iff)) THEN
822        CALL histwrite_phy(nid_files(iff),
823     $                   o_dtsvdfg%name,itau_w, d_ts(:,is_lic))
824       ENDIF
825
826       IF (o_dtsvdfi%flag(iff)<=lev_files(iff)) THEN
827      CALL histwrite_phy(nid_files(iff),
828     s                   o_dtsvdfi%name,itau_w,d_ts(:,is_sic))
829       ENDIF
830
831       IF (o_rugs%flag(iff)<=lev_files(iff)) THEN
832      CALL histwrite_phy(nid_files(iff),o_rugs%name,itau_w,zxrugs)
833       ENDIF
834
835! OD550 per species
836      IF (new_aod) THEN
837      DO naero = 1, naero_spc
838          IF (o_tausumaero(naero)%flag(iff)<=lev_files(iff)) THEN
839             CALL histwrite_phy(nid_files(iff),
840     $            o_tausumaero(naero)%name,itau_w,
841     $            tausum_aero(:,2,naero) )
842          ENDIF
843      END DO
844      ENDIF
845
846       IF (ok_ade) THEN
847          IF (o_topswad%flag(iff)<=lev_files(iff)) THEN
848             CALL histwrite_phy(nid_files(iff),o_topswad%name,itau_w,
849     $            topswad_aero)
850          ENDIF
851          IF (o_solswad%flag(iff)<=lev_files(iff)) THEN
852             CALL histwrite_phy(nid_files(iff),o_solswad%name,itau_w,
853     $            solswad_aero)
854          ENDIF
855
856!====MS forcing diagnostics
857        if (new_aod) then             
858        IF (o_swtoaas_nat%flag(iff)<=lev_files(iff)) THEN
859        CALL histwrite_phy(nid_files(iff),o_swtoaas_nat%name,itau_w,
860     $      topsw_aero(:,1))
861        ENDIF
862
863        IF (o_swsrfas_nat%flag(iff)<=lev_files(iff)) THEN
864        CALL histwrite_phy(nid_files(iff),o_swsrfas_nat%name,itau_w,
865     $      solsw_aero(:,1))
866        ENDIF
867
868        IF (o_swtoacs_nat%flag(iff)<=lev_files(iff)) THEN
869        CALL histwrite_phy(nid_files(iff),o_swtoacs_nat%name,itau_w,
870     $      topsw0_aero(:,1))
871        ENDIF
872
873        IF (o_swsrfcs_nat%flag(iff)<=lev_files(iff)) THEN
874        CALL histwrite_phy(nid_files(iff),o_swsrfcs_nat%name,itau_w,
875     $      solsw0_aero(:,1))
876        ENDIF
877 
878!ant
879        IF (o_swtoaas_ant%flag(iff)<=lev_files(iff)) THEN
880        CALL histwrite_phy(nid_files(iff),o_swtoaas_ant%name,itau_w,
881     $      topsw_aero(:,2))
882        ENDIF
883
884        IF (o_swsrfas_ant%flag(iff)<=lev_files(iff)) THEN
885        CALL histwrite_phy(nid_files(iff),o_swsrfas_ant%name,itau_w,
886     $      solsw_aero(:,2))
887        ENDIF
888
889        IF (o_swtoacs_ant%flag(iff)<=lev_files(iff)) THEN
890        CALL histwrite_phy(nid_files(iff),o_swtoacs_ant%name,itau_w,
891     $      topsw0_aero(:,2))
892        ENDIF
893
894        IF (o_swsrfcs_ant%flag(iff)<=lev_files(iff)) THEN
895        CALL histwrite_phy(nid_files(iff),o_swsrfcs_ant%name,itau_w,
896     $      solsw0_aero(:,2))
897        ENDIF
898
899!cf
900        IF (o_swtoacf_nat%flag(iff)<=lev_files(iff)) THEN
901        CALL histwrite_phy(nid_files(iff),o_swtoacf_nat%name,itau_w,
902     $      topswcf_aero(:,1))
903        ENDIF
904
905        IF (o_swsrfcf_nat%flag(iff)<=lev_files(iff)) THEN
906        CALL histwrite_phy(nid_files(iff),o_swsrfcf_nat%name,itau_w,
907     $      solswcf_aero(:,1))
908        ENDIF
909
910        IF (o_swtoacf_ant%flag(iff)<=lev_files(iff)) THEN
911        CALL histwrite_phy(nid_files(iff),o_swtoacf_ant%name,itau_w,
912     $      topswcf_aero(:,2))
913        ENDIF
914
915        IF (o_swsrfcf_ant%flag(iff)<=lev_files(iff)) THEN
916        CALL histwrite_phy(nid_files(iff),o_swsrfcf_ant%name,itau_w,
917     $      solswcf_aero(:,2))
918        ENDIF
919
920        IF (o_swtoacf_zero%flag(iff)<=lev_files(iff)) THEN
921        CALL histwrite_phy(nid_files(iff),o_swtoacf_zero%name,itau_w,
922     $      topswcf_aero(:,3))
923        ENDIF
924
925        IF (o_swsrfcf_zero%flag(iff)<=lev_files(iff)) THEN
926        CALL histwrite_phy(nid_files(iff),o_swsrfcf_zero%name,itau_w,
927     $      solswcf_aero(:,3))
928        ENDIF
929
930        endif ! new_aod
931!====MS forcing diagnostics
932
933       ENDIF
934
935       IF (ok_aie) THEN
936          IF (o_topswai%flag(iff)<=lev_files(iff)) THEN
937             CALL histwrite_phy(nid_files(iff),o_topswai%name,itau_w,
938     $            topswai_aero)
939          ENDIF
940          IF (o_solswai%flag(iff)<=lev_files(iff)) THEN
941             CALL histwrite_phy(nid_files(iff),o_solswai%name,itau_w,
942     $            solswai_aero)
943          ENDIF
944       ENDIF
945
946! Champs 3D:
947       IF (o_lwcon%flag(iff)<=lev_files(iff)) THEN
948      CALL histwrite_phy(nid_files(iff),o_lwcon%name,itau_w,flwc)
949       ENDIF
950
951       IF (o_iwcon%flag(iff)<=lev_files(iff)) THEN
952      CALL histwrite_phy(nid_files(iff),o_iwcon%name,itau_w,fiwc)
953       ENDIF
954
955       IF (o_temp%flag(iff)<=lev_files(iff)) THEN
956      CALL histwrite_phy(nid_files(iff),o_temp%name,itau_w,t_seri)
957       ENDIF
958
959       IF (o_theta%flag(iff)<=lev_files(iff)) THEN
960      CALL histwrite_phy(nid_files(iff),o_theta%name,itau_w,theta)
961       ENDIF
962
963       IF (o_ovap%flag(iff)<=lev_files(iff)) THEN
964      CALL histwrite_phy(nid_files(iff),o_ovap%name,itau_w,qx(:,:,ivap))
965       ENDIF
966
967       IF (o_ovapinit%flag(iff)<=lev_files(iff)) THEN
968      CALL histwrite_phy(nid_files(iff),
969     $                   o_ovapinit%name,itau_w,q_seri)
970       ENDIF
971
972       IF (o_geop%flag(iff)<=lev_files(iff)) THEN
973      CALL histwrite_phy(nid_files(iff),o_geop%name,itau_w,zphi)
974       ENDIF
975
976       IF (o_vitu%flag(iff)<=lev_files(iff)) THEN
977      CALL histwrite_phy(nid_files(iff),o_vitu%name,itau_w,u_seri)
978       ENDIF
979
980       IF (o_vitv%flag(iff)<=lev_files(iff)) THEN
981      CALL histwrite_phy(nid_files(iff),o_vitv%name,itau_w,v_seri)
982       ENDIF
983
984       IF (o_vitw%flag(iff)<=lev_files(iff)) THEN
985      CALL histwrite_phy(nid_files(iff),o_vitw%name,itau_w,omega)
986       ENDIF
987
988        IF (o_pres%flag(iff)<=lev_files(iff)) THEN
989      CALL histwrite_phy(nid_files(iff),o_pres%name,itau_w,pplay)
990        ENDIF
991
992       IF (o_rneb%flag(iff)<=lev_files(iff)) THEN
993      CALL histwrite_phy(nid_files(iff),o_rneb%name,itau_w,cldfra)
994       ENDIF
995
996       IF (o_rnebcon%flag(iff)<=lev_files(iff)) THEN
997      CALL histwrite_phy(nid_files(iff),o_rnebcon%name,itau_w,rnebcon)
998       ENDIF
999
1000       IF (o_rhum%flag(iff)<=lev_files(iff)) THEN
1001      CALL histwrite_phy(nid_files(iff),o_rhum%name,itau_w,zx_rh)
1002       ENDIF
1003
1004      IF (o_ozone%flag(iff)<=lev_files(iff)) THEN
1005         CALL histwrite_phy(nid_files(iff), o_ozone%name, itau_w,
1006     $        wo(:, :, 1) * dobson_u * 1e3 / zmasse / rmo3 * rmd)
1007      ENDIF
1008
1009      IF (o_ozone_light%flag(iff)<=lev_files(iff) .and.
1010     $     read_climoz == 2) THEN
1011         CALL histwrite_phy(nid_files(iff), o_ozone_light%name, itau_w,
1012     $        wo(:, :, 2) * dobson_u * 1e3 / zmasse / rmo3 * rmd)
1013      ENDIF
1014
1015       IF (o_dtphy%flag(iff)<=lev_files(iff)) THEN
1016      CALL histwrite_phy(nid_files(iff),o_dtphy%name,itau_w,d_t)
1017       ENDIF
1018
1019       IF (o_dqphy%flag(iff)<=lev_files(iff)) THEN
1020      CALL histwrite_phy(nid_files(iff),
1021     s                  o_dqphy%name,itau_w, d_qx(:,:,ivap))
1022       ENDIF
1023
1024        DO nsrf=1, nbsrf
1025        IF (o_albe_srf(nsrf)%flag(iff)<=lev_files(iff)) THEN
1026        zx_tmp_fi2d(1 : klon) = falb1( 1 : klon, nsrf)
1027        CALL histwrite_phy(nid_files(iff),
1028     s                    o_albe_srf(nsrf)%name,itau_w,
1029     $                     zx_tmp_fi2d)
1030        ENDIF
1031
1032        IF (o_rugs_srf(nsrf)%flag(iff)<=lev_files(iff)) THEN 
1033        zx_tmp_fi2d(1 : klon) = frugs( 1 : klon, nsrf)
1034        CALL histwrite_phy(nid_files(iff),
1035     s                     o_rugs_srf(nsrf)%name,itau_w,
1036     $      zx_tmp_fi2d)
1037        ENDIF
1038
1039        IF (o_ages_srf(nsrf)%flag(iff)<=lev_files(iff)) THEN
1040        zx_tmp_fi2d(1 : klon) = agesno( 1 : klon, nsrf)
1041        CALL histwrite_phy(nid_files(iff),
1042     s                     o_ages_srf(nsrf)%name,itau_w
1043     $    ,zx_tmp_fi2d)
1044        ENDIF
1045        ENDDO !nsrf=1, nbsrf
1046
1047       IF (o_albs%flag(iff)<=lev_files(iff)) THEN
1048      CALL histwrite_phy(nid_files(iff),o_albs%name,itau_w,albsol1)
1049       ENDIF
1050
1051       IF (o_albslw%flag(iff)<=lev_files(iff)) THEN
1052      CALL histwrite_phy(nid_files(iff),o_albslw%name,itau_w,albsol2)
1053       ENDIF
1054
1055!FH Sorties pour la couche limite
1056      if (iflag_pbl>1) then
1057      zx_tmp_fi3d=0.
1058      do nsrf=1,nbsrf
1059         do k=1,klev
1060          zx_tmp_fi3d(:,k)=zx_tmp_fi3d(:,k)
1061     $    +pctsrf(:,nsrf)*pbl_tke(:,k,nsrf)
1062         enddo
1063      enddo
1064       IF (o_tke%flag(iff)<=lev_files(iff)) THEN
1065      CALL histwrite_phy(nid_files(iff),o_tke%name,itau_w,zx_tmp_fi3d)
1066       ENDIF
1067
1068       IF (o_tke_max%flag(iff)<=lev_files(iff)) THEN
1069      CALL histwrite_phy(nid_files(iff),
1070     s                   o_tke_max%name,itau_w,zx_tmp_fi3d)
1071       ENDIF
1072      endif
1073
1074       IF (o_kz%flag(iff)<=lev_files(iff)) THEN
1075      CALL histwrite_phy(nid_files(iff),o_kz%name,itau_w,coefh)
1076       ENDIF
1077
1078       IF (o_kz_max%flag(iff)<=lev_files(iff)) THEN
1079      CALL histwrite_phy(nid_files(iff),o_kz_max%name,itau_w,coefh)
1080       ENDIF
1081
1082       IF (o_clwcon%flag(iff)<=lev_files(iff)) THEN
1083      CALL histwrite_phy(nid_files(iff),o_clwcon%name,itau_w,clwcon0)
1084       ENDIF
1085
1086       IF (o_dtdyn%flag(iff)<=lev_files(iff)) THEN
1087      CALL histwrite_phy(nid_files(iff),o_dtdyn%name,itau_w,d_t_dyn)
1088       ENDIF
1089
1090       IF (o_dqdyn%flag(iff)<=lev_files(iff)) THEN
1091      CALL histwrite_phy(nid_files(iff),o_dqdyn%name,itau_w,d_q_dyn)
1092       ENDIF
1093
1094       IF (o_dudyn%flag(iff)<=lev_files(iff)) THEN
1095      CALL histwrite_phy(nid_files(iff),o_dudyn%name,itau_w,d_u_dyn)
1096       ENDIF                                                   
1097
1098       IF (o_dvdyn%flag(iff)<=lev_files(iff)) THEN                 
1099      CALL histwrite_phy(nid_files(iff),o_dvdyn%name,itau_w,d_v_dyn) 
1100       ENDIF                                                     
1101
1102       IF (o_dtcon%flag(iff)<=lev_files(iff)) THEN
1103      zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys
1104      CALL histwrite_phy(nid_files(iff),o_dtcon%name,itau_w,zx_tmp_fi3d)
1105       ENDIF
1106
1107       IF (o_ducon%flag(iff)<=lev_files(iff)) THEN
1108      zx_tmp_fi3d(1:klon,1:klev)=d_u_con(1:klon,1:klev)/pdtphys
1109      CALL histwrite_phy(nid_files(iff),o_ducon%name,itau_w,zx_tmp_fi3d)
1110       ENDIF
1111
1112       IF (o_dqcon%flag(iff)<=lev_files(iff)) THEN
1113      zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
1114      CALL histwrite_phy(nid_files(iff),o_dqcon%name,itau_w,zx_tmp_fi3d)
1115       ENDIF
1116
1117       IF (o_dtlsc%flag(iff)<=lev_files(iff)) THEN
1118      zx_tmp_fi3d(1:klon,1:klev)=d_t_lsc(1:klon,1:klev)/pdtphys
1119      CALL histwrite_phy(nid_files(iff),o_dtlsc%name,itau_w,zx_tmp_fi3d)
1120       ENDIF
1121
1122       IF (o_dtlschr%flag(iff)<=lev_files(iff)) THEN
1123      zx_tmp_fi3d(1:klon, 1:klev)=(d_t_lsc(1:klon,1:klev)+
1124     $                           d_t_eva(1:klon,1:klev))/pdtphys
1125      CALL histwrite_phy(nid_files(iff),
1126     s                   o_dtlschr%name,itau_w,zx_tmp_fi3d)
1127       ENDIF
1128
1129       IF (o_dqlsc%flag(iff)<=lev_files(iff)) THEN
1130      zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys
1131      CALL histwrite_phy(nid_files(iff),o_dqlsc%name,itau_w,zx_tmp_fi3d)
1132       ENDIF
1133
1134       IF (o_dtvdf%flag(iff)<=lev_files(iff)) THEN
1135      zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf(1:klon,1:klev)/pdtphys
1136      CALL histwrite_phy(nid_files(iff),o_dtvdf%name,itau_w,zx_tmp_fi3d)
1137       ENDIF
1138
1139       IF (o_dqvdf%flag(iff)<=lev_files(iff)) THEN
1140      zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf(1:klon,1:klev)/pdtphys
1141      CALL histwrite_phy(nid_files(iff),o_dqvdf%name,itau_w,zx_tmp_fi3d)
1142       ENDIF
1143
1144       IF (o_dteva%flag(iff)<=lev_files(iff)) THEN
1145      zx_tmp_fi3d(1:klon,1:klev)=d_t_eva(1:klon,1:klev)/pdtphys
1146      CALL histwrite_phy(nid_files(iff),o_dteva%name,itau_w,zx_tmp_fi3d)
1147       ENDIF
1148
1149       IF (o_dqeva%flag(iff)<=lev_files(iff)) THEN
1150      zx_tmp_fi3d(1:klon,1:klev)=d_q_eva(1:klon,1:klev)/pdtphys
1151      CALL histwrite_phy(nid_files(iff),o_dqeva%name,itau_w,zx_tmp_fi3d)
1152       ENDIF
1153
1154       IF (o_ptconv%flag(iff)<=lev_files(iff)) THEN
1155      zpt_conv = 0.
1156      where (ptconv) zpt_conv = 1.
1157      CALL histwrite_phy(nid_files(iff),o_ptconv%name,itau_w,zpt_conv)
1158       ENDIF
1159
1160       IF (o_ratqs%flag(iff)<=lev_files(iff)) THEN
1161      CALL histwrite_phy(nid_files(iff),o_ratqs%name,itau_w,ratqs)
1162       ENDIF
1163
1164       IF (o_dtthe%flag(iff)<=lev_files(iff)) THEN
1165      zx_tmp_fi3d(1:klon,1:klev)=d_t_ajs(1:klon,1:klev)/pdtphys
1166      CALL histwrite_phy(nid_files(iff),o_dtthe%name,itau_w,zx_tmp_fi3d)
1167       ENDIF
1168
1169       IF (iflag_thermals.gt.1) THEN
1170        IF (o_f_th%flag(iff)<=lev_files(iff)) THEN
1171        CALL histwrite_phy(nid_files(iff),o_f_th%name,itau_w,fm_therm)
1172        ENDIF
1173
1174        IF (o_e_th%flag(iff)<=lev_files(iff)) THEN
1175        CALL histwrite_phy(nid_files(iff),o_e_th%name,itau_w,entr_therm)
1176        ENDIF
1177
1178        IF (o_w_th%flag(iff)<=lev_files(iff)) THEN
1179        CALL histwrite_phy(nid_files(iff),o_w_th%name,itau_w,zw2)
1180        ENDIF
1181
1182        IF (o_q_th%flag(iff)<=lev_files(iff)) THEN
1183        CALL histwrite_phy(nid_files(iff),o_q_th%name,itau_w,zqasc)
1184        ENDIF
1185
1186        IF (o_lambda_th%flag(iff)<=lev_files(iff)) THEN
1187        CALL histwrite_phy(nid_files(iff),
1188     s                     o_lambda_th%name,itau_w,lambda_th)
1189        ENDIF
1190
1191        IF (o_a_th%flag(iff)<=lev_files(iff)) THEN
1192        CALL histwrite_phy(nid_files(iff),o_a_th%name,itau_w,fraca)
1193        ENDIF
1194
1195       IF (o_d_th%flag(iff)<=lev_files(iff)) THEN
1196       CALL histwrite_phy(nid_files(iff),o_d_th%name,itau_w,detr_therm)
1197       ENDIF
1198
1199       ENDIF !iflag_thermals
1200
1201       IF (o_f0_th%flag(iff)<=lev_files(iff)) THEN
1202      CALL histwrite_phy(nid_files(iff),o_f0_th%name,itau_w,f0)
1203       ENDIF
1204
1205       IF (o_f0_th%flag(iff)<=lev_files(iff)) THEN
1206      CALL histwrite_phy(nid_files(iff),o_zmax_th%name,itau_w,zmax0)
1207       ENDIF
1208
1209       IF (o_dqthe%flag(iff)<=lev_files(iff)) THEN
1210      zx_tmp_fi3d(1:klon,1:klev)=d_q_ajs(1:klon,1:klev)/pdtphys
1211      CALL histwrite_phy(nid_files(iff),o_dqthe%name,itau_w,zx_tmp_fi3d)
1212       ENDIF
1213
1214       IF (o_dtajs%flag(iff)<=lev_files(iff)) THEN
1215      zx_tmp_fi3d(1:klon,1:klev)=d_t_ajsb(1:klon,1:klev)/pdtphys
1216      CALL histwrite_phy(nid_files(iff),o_dtajs%name,itau_w,zx_tmp_fi3d)
1217       ENDIF
1218
1219       IF (o_dqajs%flag(iff)<=lev_files(iff)) THEN
1220      zx_tmp_fi3d(1:klon,1:klev)=d_q_ajsb(1:klon,1:klev)/pdtphys
1221      CALL histwrite_phy(nid_files(iff),o_dqajs%name,itau_w,zx_tmp_fi3d)
1222       ENDIF
1223
1224       IF (o_dtswr%flag(iff)<=lev_files(iff)) THEN
1225      zx_tmp_fi3d(1:klon,1:klev)=heat(1:klon,1:klev)/RDAY
1226      CALL histwrite_phy(nid_files(iff),o_dtswr%name,itau_w,zx_tmp_fi3d)
1227       ENDIF
1228
1229       IF (o_dtsw0%flag(iff)<=lev_files(iff)) THEN
1230      zx_tmp_fi3d(1:klon,1:klev)=heat0(1:klon,1:klev)/RDAY
1231      CALL histwrite_phy(nid_files(iff),o_dtsw0%name,itau_w,zx_tmp_fi3d)
1232       ENDIF
1233
1234       IF (o_dtlwr%flag(iff)<=lev_files(iff)) THEN
1235      zx_tmp_fi3d(1:klon,1:klev)=-1.*cool(1:klon,1:klev)/RDAY
1236      CALL histwrite_phy(nid_files(iff),o_dtlwr%name,itau_w,zx_tmp_fi3d)
1237       ENDIF
1238
1239       IF (o_dtlw0%flag(iff)<=lev_files(iff)) THEN
1240      zx_tmp_fi3d(1:klon,1:klev)=-1.*cool0(1:klon,1:klev)/RDAY
1241      CALL histwrite_phy(nid_files(iff),o_dtlw0%name,itau_w,zx_tmp_fi3d)
1242       ENDIF
1243
1244       IF (o_dtec%flag(iff)<=lev_files(iff)) THEN
1245      zx_tmp_fi3d(1:klon,1:klev)=d_t_ec(1:klon,1:klev)
1246      CALL histwrite_phy(nid_files(iff),o_dtec%name,itau_w,zx_tmp_fi3d)
1247       ENDIF
1248
1249       IF (o_duvdf%flag(iff)<=lev_files(iff)) THEN
1250      zx_tmp_fi3d(1:klon,1:klev)=d_u_vdf(1:klon,1:klev)/pdtphys
1251      CALL histwrite_phy(nid_files(iff),o_duvdf%name,itau_w,zx_tmp_fi3d)
1252       ENDIF
1253
1254       IF (o_dvvdf%flag(iff)<=lev_files(iff)) THEN
1255      zx_tmp_fi3d(1:klon,1:klev)=d_v_vdf(1:klon,1:klev)/pdtphys
1256      CALL histwrite_phy(nid_files(iff),o_dvvdf%name,itau_w,zx_tmp_fi3d)
1257       ENDIF
1258
1259       IF (ok_orodr) THEN
1260      IF (o_duoro%flag(iff)<=lev_files(iff)) THEN
1261      zx_tmp_fi3d(1:klon,1:klev)=d_u_oro(1:klon,1:klev)/pdtphys
1262      CALL histwrite_phy(nid_files(iff),o_duoro%name,itau_w,zx_tmp_fi3d)
1263       ENDIF
1264
1265      IF (o_dvoro%flag(iff)<=lev_files(iff)) THEN
1266      zx_tmp_fi3d(1:klon,1:klev)=d_v_oro(1:klon,1:klev)/pdtphys
1267      CALL histwrite_phy(nid_files(iff),o_dvoro%name,itau_w,zx_tmp_fi3d)
1268      ENDIF
1269       ENDIF
1270
1271        IF (ok_orolf) THEN
1272       IF (o_dulif%flag(iff)<=lev_files(iff)) THEN
1273      zx_tmp_fi3d(1:klon,1:klev)=d_u_lif(1:klon,1:klev)/pdtphys
1274      CALL histwrite_phy(nid_files(iff),o_dulif%name,itau_w,zx_tmp_fi3d)
1275       ENDIF
1276
1277        IF (o_dvlif%flag(iff)<=lev_files(iff)) THEN
1278      zx_tmp_fi3d(1:klon,1:klev)=d_v_lif(1:klon,1:klev)/pdtphys
1279      CALL histwrite_phy(nid_files(iff),o_dvlif%name,itau_w,zx_tmp_fi3d)
1280       ENDIF
1281        ENDIF
1282
1283!       IF (o_trac%flag(iff)<=lev_files(iff)) THEN
1284         if (nqtot.GE.3) THEN
1285!           DO iq=3,nqtot
1286           DO iq=3,4
1287       IF (o_trac(iq-2)%flag(iff)<=lev_files(iff)) THEN
1288         CALL histwrite_phy(nid_files(iff),
1289     s                  o_trac(iq-2)%name,itau_w,qx(:,:,iq))
1290       ENDIF
1291           ENDDO
1292         endif
1293
1294      if (ok_sync) then
1295c$OMP MASTER
1296        call histsync(nid_files(iff))
1297c$OMP END MASTER
1298      endif
1299
1300       ENDIF ! clef_files
1301
1302      ENDDO ! iff=1,nfiles
Note: See TracBrowser for help on using the repository browser.