source: LMDZ6/branches/Amaury_dev/libf/phylmd/Dust/condsurfs.F @ 5088

Last change on this file since 5088 was 5088, checked in by abarral, 2 months ago

Remove all managed netcdf77 usage (excluding external: rrtm, ecrad)
Remove call to netcdf.inc
Replace USE lmdz_netcdf by USE netcdf
Replace lmdz_netcdf.F90 by lmdz_netcdf_format.F90

File size: 7.1 KB
RevLine 
[2630]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
[5088]6       USE netcdf, ONLY:nf90_close,nf90_noerr,nf90_inq_varid,nf90_open,nf90_nowrite,nf90_get_var
[2630]7      IMPLICIT none
8c
9c Lire les conditions aux limites du modele pour la chimie.
10c --------------------------------------------------------
11c
[4593]12      INCLUDE "dimensions.h"
[2630]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
[5073]26      IF (jour<0 .OR. jour>(360-1)) THEN
27         IF ((jour>(360-1)) .AND. (jour<=367)) THEN
[2630]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
[5088]36      ierr = nf90_open ("limitsoufre.nc", nf90_nowrite, nid)
37      if (ierr/=nf90_noerr) then
[2630]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
[5088]49      ierr = nf90_inq_varid (nid, "VOLC", nvarid)
[5073]50      ierr = nf90_get_var(nid, nvarid, lmt_so2volc, debut, epais)
[5088]51      IF (ierr /= nf90_noerr) THEN
[2630]52         PRINT*, 'Pb de lecture pour les sources so2 volcan'
53         CALL exit(1)
54      ENDIF
55c
[5088]56      ierr = nf90_inq_varid (nid, "ALTI", nvarid)
[5073]57      ierr = nf90_get_var(nid, nvarid, lmt_altvolc, debut, epais)
[5088]58      IF (ierr /= nf90_noerr) THEN
[2630]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
[5088]65      ierr = nf90_inq_varid (nid, "SO2ED95L", nvarid)
[5073]66      ierr = nf90_get_var(nid, nvarid, lmt_so2b, debut, epais)
[5088]67      IF (ierr /= nf90_noerr) THEN
[2630]68         PRINT*, 'Pb de lecture pour les sources so2 edgar low'
69         CALL exit(1)
70      ENDIF
71c
[5088]72      ierr = nf90_inq_varid (nid, "SO2ED95H", nvarid)
[5073]73      ierr = nf90_get_var(nid, nvarid, lmt_so2h, debut, epais)
[5088]74      IF (ierr /= nf90_noerr) THEN
[2630]75         PRINT*, 'Pb de lecture pour les sources so2 edgar high'
76         CALL exit(1)
77      ENDIF
78c
79      ELSE  !--GEIA
80c
[5088]81      ierr = nf90_inq_varid (nid, "SO2H", nvarid)
[5073]82      ierr = nf90_get_var(nid, nvarid, lmt_so2h, debut, epais)
[5088]83      IF (ierr /= nf90_noerr) THEN
[2630]84         PRINT*, 'Pb de lecture pour les sources so2 haut'
85         CALL exit(1)
86      ENDIF
87c
[5088]88      ierr = nf90_inq_varid (nid, "SO2B", nvarid)
[5073]89      ierr = nf90_get_var(nid, nvarid, lmt_so2b, debut, epais)
[5088]90      IF (ierr /= nf90_noerr) THEN
[2630]91         PRINT*, 'Pb de lecture pour les sources so2 bas'
92         CALL exit(1)
93      ENDIF
94c
95      ENDIF  !--edgar
96c
[5088]97      ierr = nf90_inq_varid (nid, "SO2BB", nvarid)
[5073]98      ierr = nf90_get_var(nid, nvarid, lmt_so2bb, debut, epais)
[5088]99      IF (ierr /= nf90_noerr) THEN
[2630]100         PRINT*, 'Pb de lecture pour les sources so2 bb'
101         CALL exit(1)
102      ENDIF
103c
[5088]104      ierr = nf90_inq_varid (nid, "SO2BA", nvarid)
[5073]105      ierr = nf90_get_var(nid, nvarid, lmt_so2ba, debut, epais)
[5088]106      IF (ierr /= nf90_noerr) THEN
[2630]107         PRINT*, 'Pb de lecture pour les sources so2 bateau'
108         CALL exit(1)
109      ENDIF
110c
[5088]111      ierr = nf90_inq_varid (nid, "DMSB", nvarid)
[5073]112      ierr = nf90_get_var(nid, nvarid, lmt_dmsbio, debut, epais)
[5088]113      IF (ierr /= nf90_noerr) THEN
[2630]114         PRINT*, 'Pb de lecture pour les sources dms bio'
115         CALL exit(1)
116      ENDIF
117c
[5088]118      ierr = nf90_inq_varid (nid, "H2SB", nvarid)
[5073]119      ierr = nf90_get_var(nid, nvarid, lmt_h2sbio, debut, epais)
[5088]120      IF (ierr /= nf90_noerr) THEN
[2630]121         PRINT*, 'Pb de lecture pour les sources h2s bio'
122         CALL exit(1)
123      ENDIF
124c
[5073]125      IF (flag_dms==1) THEN
[2630]126c
[5088]127      ierr = nf90_inq_varid (nid, "DMSL", nvarid)
[5073]128      ierr = nf90_get_var(nid, nvarid, lmt_dms, debut, epais)
[5088]129      IF (ierr /= nf90_noerr) THEN
[2630]130         PRINT*, 'Pb de lecture pour les sources dms liss'
131         CALL exit(1)
132      ENDIF
133c
[5073]134      ELSEIF (flag_dms==2) THEN
[2630]135c
[5088]136      ierr = nf90_inq_varid (nid, "DMSW", nvarid)
[5073]137      ierr = nf90_get_var(nid, nvarid, lmt_dms, debut, epais)
[5088]138      IF (ierr /= nf90_noerr) THEN
[2630]139         PRINT*, 'Pb de lecture pour les sources dms wann'
140         CALL exit(1)
141      ENDIF
142c
[5073]143      ELSEIF (flag_dms==3) THEN
[2630]144c
[5088]145      ierr = nf90_inq_varid (nid, "DMSC1", nvarid)
[5073]146      ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais)
[5088]147      IF (ierr /= nf90_noerr) THEN
[2630]148         PRINT*, 'Pb de lecture pour les sources dmsconc old'
149         CALL exit(1)
150      ENDIF
151c
[5073]152      ELSEIF (flag_dms==4) THEN
[2630]153c
[5088]154      ierr = nf90_inq_varid (nid, "DMSC2", nvarid)
[5073]155      ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais)
[5088]156      IF (ierr /= nf90_noerr) THEN
[2630]157         PRINT*, 'Pb de lecture pour les sources dms conc 2'
158         CALL exit(1)
159      ENDIF
160c
[5073]161      ELSEIF (flag_dms==5) THEN
[2630]162c
[5088]163      ierr = nf90_inq_varid (nid, "DMSC3", nvarid)
[5073]164      ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais)
[5088]165      IF (ierr /= nf90_noerr) THEN
[2630]166         PRINT*, 'Pb de lecture pour les sources dms conc 3'
167         CALL exit(1)
168      ENDIF
169c
[5073]170      ELSEIF (flag_dms==6) THEN
[2630]171c
[5088]172      ierr = nf90_inq_varid (nid, "DMSC4", nvarid)
[5073]173      ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais)
[5088]174      IF (ierr /= nf90_noerr) THEN
[2630]175         PRINT*, 'Pb de lecture pour les sources dms conc 4'
176         CALL exit(1)
177      ENDIF
178c
[5073]179      ELSEIF (flag_dms==7) THEN
[2630]180c
[5088]181      ierr = nf90_inq_varid (nid, "DMSC5", nvarid)
[5073]182      ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais)
[5088]183      IF (ierr /= nf90_noerr) THEN
[2630]184         PRINT*, 'Pb de lecture pour les sources dms conc 5'
185         CALL exit(1)
186      ENDIF
187c
[5073]188      ELSEIF (flag_dms==8) THEN
[2630]189c
[5088]190      ierr = nf90_inq_varid (nid, "DMSC6", nvarid)
[5073]191      ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais)
[5088]192      IF (ierr /= nf90_noerr) THEN
[2630]193         PRINT*, 'Pb de lecture pour les sources dms conc 6'
194         CALL exit(1)
195      ENDIF
196c
[5073]197      ELSEIF (flag_dms==9) THEN
[2630]198c
[5088]199      ierr = nf90_inq_varid (nid, "DMSC7", nvarid)
[5073]200      ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais)
[5088]201      IF (ierr /= nf90_noerr) THEN
[2630]202         PRINT*, 'Pb de lecture pour les sources dms conc 7'
203         CALL exit(1)
204      ENDIF
205c
[5073]206      ELSEIF (flag_dms==10) THEN
[2630]207c
[5088]208      ierr = nf90_inq_varid (nid, "DMSC8", nvarid)
[5073]209      ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais)
[5088]210      IF (ierr /= nf90_noerr) THEN
[2630]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
[5088]222      ierr = nf90_close(nid)
[2630]223c
[5073]224      IF (flag_dms<=2) THEN
[2630]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.