source: LMDZ6/trunk/libf/phylmd/Dust/condsurfs.F @ 5073

Last change on this file since 5073 was 5073, checked in by abarral, 7 weeks ago

Remove all NC_DOUBLE uses outside of lmdz_netcdf.F90 (except in obsolete/, which I hope we'll ditch soon...)
Note: make sure to check convergence at some point, it's possible that we've messed up some when replacing nf_* by nf90_* calls
(lint) replace obsolete logical operators along the way

File size: 7.0 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
14      REAL lmt_so2h(klon), lmt_so2b(klon), lmt_so2bb(klon)
15      REAL lmt_dmsbio(klon), lmt_h2sbio(klon), lmt_so2ba(klon)
16      REAL lmt_so2volc(klon), lmt_altvolc(klon)
17      REAL lmt_dms(klon), lmt_dmsconc(klon)
18      LOGICAL edgar
19      INTEGER flag_dms
20c
21      INTEGER jour, i
22      INTEGER ierr
23      INTEGER nid,nvarid
24      INTEGER debut(2),epais(2)
25c
26      IF (jour<0 .OR. jour>(360-1)) THEN
27         IF ((jour>(360-1)) .AND. (jour<=367)) THEN
28           jour=360-1
29           print *,'JE: jour changed to jour= ',jour
30         ELSE
31           PRINT*,'Le jour demande n est pas correcte:', jour
32           CALL ABORT
33         ENDIF
34      ENDIF
35c
36      ierr = NF_OPEN ("limitsoufre.nc", NF_NOWRITE, nid)
37      if (ierr/=NF_NOERR) then
38        write(6,*)' Pb d''ouverture du fichier limitsoufre.nc'
39        write(6,*)' ierr = ', ierr
40        call exit(1)
41      endif
42c
43c Tranche a lire:
44      debut(1) = 1
45      debut(2) = jour+1
46      epais(1) = klon
47      epais(2) = 1
48c
49      ierr = NF_INQ_VARID (nid, "VOLC", nvarid)
50      ierr = nf90_get_var(nid, nvarid, lmt_so2volc, debut, epais)
51      IF (ierr /= NF_NOERR) THEN
52         PRINT*, 'Pb de lecture pour les sources so2 volcan'
53         CALL exit(1)
54      ENDIF
55c
56      ierr = NF_INQ_VARID (nid, "ALTI", nvarid)
57      ierr = nf90_get_var(nid, nvarid, lmt_altvolc, debut, epais)
58      IF (ierr /= NF_NOERR) THEN
59         PRINT*, 'Pb de lecture pour les altitudes volcan'
60         CALL exit(1)
61      ENDIF
62c
63      IF (edgar) THEN   !--EDGAR w/o ship and biomass burning
64c
65      ierr = NF_INQ_VARID (nid, "SO2ED95L", nvarid)
66      ierr = nf90_get_var(nid, nvarid, lmt_so2b, debut, epais)
67      IF (ierr /= NF_NOERR) THEN
68         PRINT*, 'Pb de lecture pour les sources so2 edgar low'
69         CALL exit(1)
70      ENDIF
71c
72      ierr = NF_INQ_VARID (nid, "SO2ED95H", nvarid)
73      ierr = nf90_get_var(nid, nvarid, lmt_so2h, debut, epais)
74      IF (ierr /= NF_NOERR) THEN
75         PRINT*, 'Pb de lecture pour les sources so2 edgar high'
76         CALL exit(1)
77      ENDIF
78c
79      ELSE  !--GEIA
80c
81      ierr = NF_INQ_VARID (nid, "SO2H", nvarid)
82      ierr = nf90_get_var(nid, nvarid, lmt_so2h, debut, epais)
83      IF (ierr /= NF_NOERR) THEN
84         PRINT*, 'Pb de lecture pour les sources so2 haut'
85         CALL exit(1)
86      ENDIF
87c
88      ierr = NF_INQ_VARID (nid, "SO2B", nvarid)
89      ierr = nf90_get_var(nid, nvarid, lmt_so2b, debut, epais)
90      IF (ierr /= NF_NOERR) THEN
91         PRINT*, 'Pb de lecture pour les sources so2 bas'
92         CALL exit(1)
93      ENDIF
94c
95      ENDIF  !--edgar
96c
97      ierr = NF_INQ_VARID (nid, "SO2BB", nvarid)
98      ierr = nf90_get_var(nid, nvarid, lmt_so2bb, debut, epais)
99      IF (ierr /= NF_NOERR) THEN
100         PRINT*, 'Pb de lecture pour les sources so2 bb'
101         CALL exit(1)
102      ENDIF
103c
104      ierr = NF_INQ_VARID (nid, "SO2BA", nvarid)
105      ierr = nf90_get_var(nid, nvarid, lmt_so2ba, debut, epais)
106      IF (ierr /= NF_NOERR) THEN
107         PRINT*, 'Pb de lecture pour les sources so2 bateau'
108         CALL exit(1)
109      ENDIF
110c
111      ierr = NF_INQ_VARID (nid, "DMSB", nvarid)
112      ierr = nf90_get_var(nid, nvarid, lmt_dmsbio, debut, epais)
113      IF (ierr /= NF_NOERR) THEN
114         PRINT*, 'Pb de lecture pour les sources dms bio'
115         CALL exit(1)
116      ENDIF
117c
118      ierr = NF_INQ_VARID (nid, "H2SB", nvarid)
119      ierr = nf90_get_var(nid, nvarid, lmt_h2sbio, debut, epais)
120      IF (ierr /= NF_NOERR) THEN
121         PRINT*, 'Pb de lecture pour les sources h2s bio'
122         CALL exit(1)
123      ENDIF
124c
125      IF (flag_dms==1) THEN
126c
127      ierr = NF_INQ_VARID (nid, "DMSL", nvarid)
128      ierr = nf90_get_var(nid, nvarid, lmt_dms, debut, epais)
129      IF (ierr /= NF_NOERR) THEN
130         PRINT*, 'Pb de lecture pour les sources dms liss'
131         CALL exit(1)
132      ENDIF
133c
134      ELSEIF (flag_dms==2) THEN
135c
136      ierr = NF_INQ_VARID (nid, "DMSW", nvarid)
137      ierr = nf90_get_var(nid, nvarid, lmt_dms, debut, epais)
138      IF (ierr /= NF_NOERR) THEN
139         PRINT*, 'Pb de lecture pour les sources dms wann'
140         CALL exit(1)
141      ENDIF
142c
143      ELSEIF (flag_dms==3) THEN
144c
145      ierr = NF_INQ_VARID (nid, "DMSC1", nvarid)
146      ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais)
147      IF (ierr /= NF_NOERR) THEN
148         PRINT*, 'Pb de lecture pour les sources dmsconc old'
149         CALL exit(1)
150      ENDIF
151c
152      ELSEIF (flag_dms==4) THEN
153c
154      ierr = NF_INQ_VARID (nid, "DMSC2", nvarid)
155      ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais)
156      IF (ierr /= NF_NOERR) THEN
157         PRINT*, 'Pb de lecture pour les sources dms conc 2'
158         CALL exit(1)
159      ENDIF
160c
161      ELSEIF (flag_dms==5) THEN
162c
163      ierr = NF_INQ_VARID (nid, "DMSC3", nvarid)
164      ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais)
165      IF (ierr /= NF_NOERR) THEN
166         PRINT*, 'Pb de lecture pour les sources dms conc 3'
167         CALL exit(1)
168      ENDIF
169c
170      ELSEIF (flag_dms==6) THEN
171c
172      ierr = NF_INQ_VARID (nid, "DMSC4", nvarid)
173      ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais)
174      IF (ierr /= NF_NOERR) THEN
175         PRINT*, 'Pb de lecture pour les sources dms conc 4'
176         CALL exit(1)
177      ENDIF
178c
179      ELSEIF (flag_dms==7) THEN
180c
181      ierr = NF_INQ_VARID (nid, "DMSC5", nvarid)
182      ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais)
183      IF (ierr /= NF_NOERR) THEN
184         PRINT*, 'Pb de lecture pour les sources dms conc 5'
185         CALL exit(1)
186      ENDIF
187c
188      ELSEIF (flag_dms==8) THEN
189c
190      ierr = NF_INQ_VARID (nid, "DMSC6", nvarid)
191      ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais)
192      IF (ierr /= NF_NOERR) THEN
193         PRINT*, 'Pb de lecture pour les sources dms conc 6'
194         CALL exit(1)
195      ENDIF
196c
197      ELSEIF (flag_dms==9) THEN
198c
199      ierr = NF_INQ_VARID (nid, "DMSC7", nvarid)
200      ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais)
201      IF (ierr /= NF_NOERR) THEN
202         PRINT*, 'Pb de lecture pour les sources dms conc 7'
203         CALL exit(1)
204      ENDIF
205c
206      ELSEIF (flag_dms==10) THEN
207c
208      ierr = NF_INQ_VARID (nid, "DMSC8", nvarid)
209      ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais)
210      IF (ierr /= NF_NOERR) THEN
211         PRINT*, 'Pb de lecture pour les sources dms conc 8'
212         CALL exit(1)
213      ENDIF
214c
215      ELSE
216c
217         PRINT *,'choix non possible pour flag_dms'
218         STOP
219c
220      ENDIF
221c
222      ierr = NF_CLOSE(nid)
223c
224      IF (flag_dms<=2) THEN
225      DO i=1, klon
226         lmt_dmsconc(i)=0.0
227      ENDDO
228      ELSE
229      DO i=1, klon
230         lmt_dms(i)=0.0
231      ENDDO
232      ENDIF
233c
234      PRINT*, 'Sources SOUFRE lues pour jour: ', jour
235c
236      RETURN
237      END
Note: See TracBrowser for help on using the repository browser.