16 |
|
|
17 |
use abort_gcm_m, only: abort_gcm |
use abort_gcm_m, only: abort_gcm |
18 |
use indicesol |
use indicesol |
19 |
|
use netcdf |
20 |
|
|
21 |
integer, intent(IN) :: itime ! numero du pas de temps courant |
integer, intent(IN) :: itime ! numero du pas de temps courant |
22 |
real , intent(IN) :: dtime ! pas de temps de la physique (en s) |
real , intent(IN) :: dtime ! pas de temps de la physique (en s) |
52 |
|
|
53 |
! quelques variables pour netcdf |
! quelques variables pour netcdf |
54 |
|
|
|
include "netcdf.inc" |
|
55 |
integer :: nid, nvarid |
integer :: nid, nvarid |
56 |
integer, dimension(2) :: start, epais |
integer, dimension(2) :: start, epais |
57 |
|
|
76 |
|
|
77 |
! Ouverture du fichier |
! Ouverture du fichier |
78 |
|
|
79 |
ierr = NF_OPEN ('limit.nc', NF_NOWRITE, nid) |
ierr = NF90_OPEN ('limit.nc', NF90_NOWRITE, nid) |
80 |
if (ierr.NE.NF_NOERR) then |
if (ierr.NE.NF90_NOERR) then |
81 |
abort_message & |
abort_message & |
82 |
= 'Pb d''ouverture du fichier de conditions aux limites' |
= 'Pb d''ouverture du fichier de conditions aux limites' |
83 |
call abort_gcm(modname, abort_message, 1) |
call abort_gcm(modname, abort_message, 1) |
94 |
|
|
95 |
! Fraction "ocean" |
! Fraction "ocean" |
96 |
|
|
97 |
ierr = NF_INQ_VARID(nid, 'FOCE', nvarid) |
ierr = NF90_INQ_VARID(nid, 'FOCE', nvarid) |
98 |
if (ierr /= NF_NOERR) then |
if (ierr /= NF90_NOERR) then |
99 |
abort_message = 'Le champ <FOCE> est absent' |
abort_message = 'Le champ <FOCE> est absent' |
100 |
call abort_gcm(modname, abort_message, 1) |
call abort_gcm(modname, abort_message, 1) |
101 |
endif |
endif |
102 |
ierr = NF_GET_VARA_REAL(nid, nvarid, start, epais, pct_tmp(1, is_oce)) |
ierr = NF90_GET_VAR(nid, nvarid, pct_tmp(:, is_oce), start, epais) |
103 |
if (ierr /= NF_NOERR) then |
if (ierr /= NF90_NOERR) then |
104 |
abort_message = 'Lecture echouee pour <FOCE>' |
abort_message = 'Lecture echouee pour <FOCE>' |
105 |
call abort_gcm(modname, abort_message, 1) |
call abort_gcm(modname, abort_message, 1) |
106 |
endif |
endif |
107 |
|
|
108 |
! Fraction "glace de mer" |
! Fraction "glace de mer" |
109 |
|
|
110 |
ierr = NF_INQ_VARID(nid, 'FSIC', nvarid) |
ierr = NF90_INQ_VARID(nid, 'FSIC', nvarid) |
111 |
if (ierr /= NF_NOERR) then |
if (ierr /= NF90_NOERR) then |
112 |
abort_message = 'Le champ <FSIC> est absent' |
abort_message = 'Le champ <FSIC> est absent' |
113 |
call abort_gcm(modname, abort_message, 1) |
call abort_gcm(modname, abort_message, 1) |
114 |
endif |
endif |
115 |
ierr = NF_GET_VARA_REAL(nid, nvarid, start, epais, pct_tmp(1, is_sic)) |
ierr = NF90_GET_VAR(nid, nvarid, pct_tmp(:, is_sic), start, epais) |
116 |
if (ierr /= NF_NOERR) then |
if (ierr /= NF90_NOERR) then |
117 |
abort_message = 'Lecture echouee pour <FSIC>' |
abort_message = 'Lecture echouee pour <FSIC>' |
118 |
call abort_gcm(modname, abort_message, 1) |
call abort_gcm(modname, abort_message, 1) |
119 |
endif |
endif |
120 |
|
|
121 |
! Fraction "terre" |
! Fraction "terre" |
122 |
|
|
123 |
ierr = NF_INQ_VARID(nid, 'FTER', nvarid) |
ierr = NF90_INQ_VARID(nid, 'FTER', nvarid) |
124 |
if (ierr /= NF_NOERR) then |
if (ierr /= NF90_NOERR) then |
125 |
abort_message = 'Le champ <FTER> est absent' |
abort_message = 'Le champ <FTER> est absent' |
126 |
call abort_gcm(modname, abort_message, 1) |
call abort_gcm(modname, abort_message, 1) |
127 |
endif |
endif |
128 |
ierr = NF_GET_VARA_REAL(nid, nvarid, start, epais, pct_tmp(1, is_ter)) |
ierr = NF90_GET_VAR(nid, nvarid, pct_tmp(:, is_ter), start, epais) |
129 |
if (ierr /= NF_NOERR) then |
if (ierr /= NF90_NOERR) then |
130 |
abort_message = 'Lecture echouee pour <FTER>' |
abort_message = 'Lecture echouee pour <FTER>' |
131 |
call abort_gcm(modname, abort_message, 1) |
call abort_gcm(modname, abort_message, 1) |
132 |
endif |
endif |
133 |
|
|
134 |
! Fraction "glacier terre" |
! Fraction "glacier terre" |
135 |
|
|
136 |
ierr = NF_INQ_VARID(nid, 'FLIC', nvarid) |
ierr = NF90_INQ_VARID(nid, 'FLIC', nvarid) |
137 |
if (ierr /= NF_NOERR) then |
if (ierr /= NF90_NOERR) then |
138 |
abort_message = 'Le champ <FLIC> est absent' |
abort_message = 'Le champ <FLIC> est absent' |
139 |
call abort_gcm(modname, abort_message, 1) |
call abort_gcm(modname, abort_message, 1) |
140 |
endif |
endif |
141 |
ierr = NF_GET_VARA_REAL(nid, nvarid, start, epais, pct_tmp(1, is_lic)) |
ierr = NF90_GET_VAR(nid, nvarid, pct_tmp(:, is_lic), start, epais) |
142 |
if (ierr /= NF_NOERR) then |
if (ierr /= NF90_NOERR) then |
143 |
abort_message = 'Lecture echouee pour <FLIC>' |
abort_message = 'Lecture echouee pour <FLIC>' |
144 |
call abort_gcm(modname, abort_message, 1) |
call abort_gcm(modname, abort_message, 1) |
145 |
endif |
endif |
146 |
|
|
147 |
else ! on en est toujours a rnatur |
else ! on en est toujours a rnatur |
148 |
|
|
149 |
ierr = NF_INQ_VARID(nid, 'NAT', nvarid) |
ierr = NF90_INQ_VARID(nid, 'NAT', nvarid) |
150 |
if (ierr /= NF_NOERR) then |
if (ierr /= NF90_NOERR) then |
151 |
abort_message = 'Le champ <NAT> est absent' |
abort_message = 'Le champ <NAT> est absent' |
152 |
call abort_gcm(modname, abort_message, 1) |
call abort_gcm(modname, abort_message, 1) |
153 |
endif |
endif |
154 |
ierr = NF_GET_VARA_REAL(nid, nvarid, start, epais, nat_lu) |
ierr = NF90_GET_VAR(nid, nvarid, nat_lu, start, epais) |
155 |
if (ierr /= NF_NOERR) then |
if (ierr /= NF90_NOERR) then |
156 |
abort_message = 'Lecture echouee pour <NAT>' |
abort_message = 'Lecture echouee pour <NAT>' |
157 |
call abort_gcm(modname, abort_message, 1) |
call abort_gcm(modname, abort_message, 1) |
158 |
endif |
endif |
176 |
|
|
177 |
! Lecture SST |
! Lecture SST |
178 |
|
|
179 |
ierr = NF_INQ_VARID(nid, 'SST', nvarid) |
ierr = NF90_INQ_VARID(nid, 'SST', nvarid) |
180 |
if (ierr /= NF_NOERR) then |
if (ierr /= NF90_NOERR) then |
181 |
abort_message = 'Le champ <SST> est absent' |
abort_message = 'Le champ <SST> est absent' |
182 |
call abort_gcm(modname, abort_message, 1) |
call abort_gcm(modname, abort_message, 1) |
183 |
endif |
endif |
184 |
ierr = NF_GET_VARA_REAL(nid, nvarid, start, epais, sst_lu) |
ierr = NF90_GET_VAR(nid, nvarid, sst_lu, start, epais) |
185 |
if (ierr /= NF_NOERR) then |
if (ierr /= NF90_NOERR) then |
186 |
abort_message = 'Lecture echouee pour <SST>' |
abort_message = 'Lecture echouee pour <SST>' |
187 |
call abort_gcm(modname, abort_message, 1) |
call abort_gcm(modname, abort_message, 1) |
188 |
endif |
endif |
190 |
|
|
191 |
! Fin de lecture |
! Fin de lecture |
192 |
|
|
193 |
ierr = NF_CLOSE(nid) |
ierr = NF90_CLOSE(nid) |
194 |
deja_lu = .true. |
deja_lu = .true. |
195 |
jour_lu = jour |
jour_lu = jour |
196 |
endif |
endif |