source: LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/condsurfs.F @ 5434

Last change on this file since 5434 was 2175, checked in by jescribano, 10 years ago

SPLA code included for first time

File size: 9.5 KB
Line 
1      SUBROUTINE condsurfs(jour, edgar, flag_dms,
2     .                     lmt_so2h, lmt_so2b, lmt_so2bb, lmt_so2ba,
3     .                     lmt_so2volc, lmt_altvolc, 
4     .                     lmt_dmsbio, lmt_h2sbio, lmt_dms, lmt_dmsconc)
5       USE dimphy
6      IMPLICIT none
7c
8c Lire les conditions aux limites du modele pour la chimie.
9c --------------------------------------------------------
10c
11#include "dimensions.h"
12#include "netcdf.inc"
13c #include "../phylmd/dimphy.h"
14c
15      REAL lmt_so2h(klon), lmt_so2b(klon), lmt_so2bb(klon)
16      REAL lmt_dmsbio(klon), lmt_h2sbio(klon), lmt_so2ba(klon)
17      REAL lmt_so2volc(klon), lmt_altvolc(klon)
18      REAL lmt_dms(klon), lmt_dmsconc(klon)
19      LOGICAL edgar
20      INTEGER flag_dms
21c
22      INTEGER jour, i
23      INTEGER ierr
24      INTEGER nid,nvarid
25      INTEGER debut(2),epais(2)
26c
27      IF (jour.LT.0 .OR. jour.GT.(360-1)) THEN
28         IF ((jour.GT.(360-1)) .AND. (jour.LE.367)) THEN
29           jour=360-1
30           print *,'JE: jour changed to jour= ',jour
31         ELSE
32           PRINT*,'Le jour demande n est pas correcte:', jour
33           CALL ABORT
34         ENDIF
35      ENDIF
36c
37      ierr = NF_OPEN ("limitsoufre.nc", NF_NOWRITE, nid)
38      if (ierr.ne.NF_NOERR) then
39        write(6,*)' Pb d''ouverture du fichier limitsoufre.nc'
40        write(6,*)' ierr = ', ierr
41        call exit(1)
42      endif
43c
44c Tranche a lire:
45      debut(1) = 1
46      debut(2) = jour+1
47      epais(1) = klon
48      epais(2) = 1
49c
50      ierr = NF_INQ_VARID (nid, "VOLC", nvarid)
51cnhl #ifdef NC_DOUBLE
52      ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_so2volc)
53cnhl #else
54cnhl       ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_so2volc)
55cnhl #endif
56      IF (ierr .NE. NF_NOERR) THEN
57         PRINT*, 'Pb de lecture pour les sources so2 volcan'
58         CALL exit(1)
59      ENDIF
60c
61      ierr = NF_INQ_VARID (nid, "ALTI", nvarid)
62cnhl #ifdef NC_DOUBLE
63      ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_altvolc)
64cnhl #else
65cnhl       ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_altvolc)
66cnhl #endif
67      IF (ierr .NE. NF_NOERR) THEN
68         PRINT*, 'Pb de lecture pour les altitudes volcan'
69         CALL exit(1)
70      ENDIF
71c
72      IF (edgar) THEN   !--EDGAR w/o ship and biomass burning
73c
74      ierr = NF_INQ_VARID (nid, "SO2ED95L", nvarid)
75cnhl #ifdef NC_DOUBLE
76      ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_so2b)
77cnhl #else
78cnhl       ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_so2b)
79cnhl #endif
80      IF (ierr .NE. NF_NOERR) THEN
81         PRINT*, 'Pb de lecture pour les sources so2 edgar low'
82         CALL exit(1)
83      ENDIF
84c
85      ierr = NF_INQ_VARID (nid, "SO2ED95H", nvarid)
86cnhl #ifdef NC_DOUBLE
87      ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_so2h)
88cnhl #else
89cnhl       ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_so2h)
90cnhl #endif
91      IF (ierr .NE. NF_NOERR) THEN
92         PRINT*, 'Pb de lecture pour les sources so2 edgar high'
93         CALL exit(1)
94      ENDIF
95c
96      ELSE  !--GEIA
97c
98      ierr = NF_INQ_VARID (nid, "SO2H", nvarid)
99cnhl #ifdef NC_DOUBLE
100      ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_so2h)
101cnhl #else
102cnhl       ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_so2h)
103cnhl #endif
104      IF (ierr .NE. NF_NOERR) THEN
105         PRINT*, 'Pb de lecture pour les sources so2 haut'
106         CALL exit(1)
107      ENDIF
108c
109      ierr = NF_INQ_VARID (nid, "SO2B", nvarid)
110cnhl #ifdef NC_DOUBLE
111      ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_so2b)
112cnhl #else
113cnhl       ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_so2b)
114cnhl #endif
115      IF (ierr .NE. NF_NOERR) THEN
116         PRINT*, 'Pb de lecture pour les sources so2 bas'
117         CALL exit(1)
118      ENDIF
119c
120      ENDIF  !--edgar
121c
122      ierr = NF_INQ_VARID (nid, "SO2BB", nvarid)
123cnhl #ifdef NC_DOUBLE
124      ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_so2bb)
125cnhl #else
126cnhl       ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_so2bb)
127cnhl #endif
128      IF (ierr .NE. NF_NOERR) THEN
129         PRINT*, 'Pb de lecture pour les sources so2 bb'
130         CALL exit(1)
131      ENDIF
132c
133      ierr = NF_INQ_VARID (nid, "SO2BA", nvarid)
134cnhl #ifdef NC_DOUBLE
135      ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_so2ba)
136cnhl #else
137cnhl       ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_so2ba)
138cnhl #endif
139      IF (ierr .NE. NF_NOERR) THEN
140         PRINT*, 'Pb de lecture pour les sources so2 bateau'
141         CALL exit(1)
142      ENDIF
143c
144      ierr = NF_INQ_VARID (nid, "DMSB", nvarid)
145cnhl #ifdef NC_DOUBLE
146      ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_dmsbio)
147cnhl #else
148cnhl       ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dmsbio)
149cnhl #endif
150      IF (ierr .NE. NF_NOERR) THEN
151         PRINT*, 'Pb de lecture pour les sources dms bio'
152         CALL exit(1)
153      ENDIF
154c
155      ierr = NF_INQ_VARID (nid, "H2SB", nvarid)
156cnhl #ifdef NC_DOUBLE
157      ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_h2sbio)
158cnhl #else
159cnhl       ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_h2sbio)
160cnhl #endif
161      IF (ierr .NE. NF_NOERR) THEN
162         PRINT*, 'Pb de lecture pour les sources h2s bio'
163         CALL exit(1)
164      ENDIF
165c
166      IF (flag_dms.EQ.1) THEN
167c
168      ierr = NF_INQ_VARID (nid, "DMSL", nvarid)
169cnhl #ifdef NC_DOUBLE
170      ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_dms)
171cnhl #else
172cnhl       ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dms)
173cnhl #endif
174      IF (ierr .NE. NF_NOERR) THEN
175         PRINT*, 'Pb de lecture pour les sources dms liss'
176         CALL exit(1)
177      ENDIF
178c
179      ELSEIF (flag_dms.EQ.2) THEN
180c
181      ierr = NF_INQ_VARID (nid, "DMSW", nvarid)
182cnhl #ifdef NC_DOUBLE
183      ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_dms)
184cnhl #else
185cnhl       ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dms)
186cnhl #endif
187      IF (ierr .NE. NF_NOERR) THEN
188         PRINT*, 'Pb de lecture pour les sources dms wann'
189         CALL exit(1)
190      ENDIF
191c
192      ELSEIF (flag_dms.EQ.3) THEN
193c
194      ierr = NF_INQ_VARID (nid, "DMSC1", nvarid)
195cnhl #ifdef NC_DOUBLE
196      ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut,epais,lmt_dmsconc)
197cnhl #else
198cnhl       ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dmsconc)
199cnhl #endif
200      IF (ierr .NE. NF_NOERR) THEN
201         PRINT*, 'Pb de lecture pour les sources dmsconc old'
202         CALL exit(1)
203      ENDIF
204c
205      ELSEIF (flag_dms.EQ.4) THEN
206c
207      ierr = NF_INQ_VARID (nid, "DMSC2", nvarid)
208cnhl #ifdef NC_DOUBLE
209      ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut,epais,lmt_dmsconc)
210cnhl #else
211cnhl       ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dmsconc)
212cnhl #endif
213      IF (ierr .NE. NF_NOERR) THEN
214         PRINT*, 'Pb de lecture pour les sources dms conc 2'
215         CALL exit(1)
216      ENDIF
217c
218      ELSEIF (flag_dms.EQ.5) THEN
219c
220      ierr = NF_INQ_VARID (nid, "DMSC3", nvarid)
221cnhl #ifdef NC_DOUBLE
222      ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut,epais,lmt_dmsconc)
223cnhl #else
224cnhl       ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dmsconc)
225cnhl #endif
226      IF (ierr .NE. NF_NOERR) THEN
227         PRINT*, 'Pb de lecture pour les sources dms conc 3'
228         CALL exit(1)
229      ENDIF
230c
231      ELSEIF (flag_dms.EQ.6) THEN
232c
233      ierr = NF_INQ_VARID (nid, "DMSC4", nvarid)
234cnhl #ifdef NC_DOUBLE
235      ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut,epais,lmt_dmsconc)
236cnhl #else
237cnhl       ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dmsconc)
238cnhl #endif
239      IF (ierr .NE. NF_NOERR) THEN
240         PRINT*, 'Pb de lecture pour les sources dms conc 4'
241         CALL exit(1)
242      ENDIF
243c
244      ELSEIF (flag_dms.EQ.7) THEN
245c
246      ierr = NF_INQ_VARID (nid, "DMSC5", nvarid)
247cnhl #ifdef NC_DOUBLE
248      ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut,epais,lmt_dmsconc)
249cnhl #else
250cnhl       ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dmsconc)
251cnhl #endif
252      IF (ierr .NE. NF_NOERR) THEN
253         PRINT*, 'Pb de lecture pour les sources dms conc 5'
254         CALL exit(1)
255      ENDIF
256c
257      ELSEIF (flag_dms.EQ.8) THEN
258c
259      ierr = NF_INQ_VARID (nid, "DMSC6", nvarid)
260cnhl #ifdef NC_DOUBLE
261      ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut,epais,lmt_dmsconc)
262cnhl #else
263cnhl       ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dmsconc)
264cnhl #endif
265      IF (ierr .NE. NF_NOERR) THEN
266         PRINT*, 'Pb de lecture pour les sources dms conc 6'
267         CALL exit(1)
268      ENDIF
269c
270      ELSEIF (flag_dms.EQ.9) THEN
271c
272      ierr = NF_INQ_VARID (nid, "DMSC7", nvarid)
273cnhl #ifdef NC_DOUBLE
274      ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut,epais,lmt_dmsconc)
275cnhl #else
276cnhl       ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dmsconc)
277cnhl #endif
278      IF (ierr .NE. NF_NOERR) THEN
279         PRINT*, 'Pb de lecture pour les sources dms conc 7'
280         CALL exit(1)
281      ENDIF
282c
283      ELSEIF (flag_dms.EQ.10) THEN
284c
285      ierr = NF_INQ_VARID (nid, "DMSC8", nvarid)
286cnhl #ifdef NC_DOUBLE
287      ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut,epais,lmt_dmsconc)
288cnhl #else
289cnhl       ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dmsconc)
290cnhl #endif
291      IF (ierr .NE. NF_NOERR) THEN
292         PRINT*, 'Pb de lecture pour les sources dms conc 8'
293         CALL exit(1)
294      ENDIF
295c
296      ELSE
297c
298         PRINT *,'choix non possible pour flag_dms'
299         STOP
300c
301      ENDIF
302c
303      ierr = NF_CLOSE(nid)
304c
305      IF (flag_dms.LE.2) THEN
306      DO i=1, klon
307         lmt_dmsconc(i)=0.0
308      ENDDO
309      ELSE
310      DO i=1, klon
311         lmt_dms(i)=0.0
312      ENDDO
313      ENDIF
314c
315      PRINT*, 'Sources SOUFRE lues pour jour: ', jour
316c
317      RETURN
318      END
Note: See TracBrowser for help on using the repository browser.