14 |
|
|
15 |
contains |
contains |
16 |
|
|
17 |
SUBROUTINE phyetat0(pctsrf, tsol, tsoil, qsurf, qsol, snow, albe, evap, & |
SUBROUTINE phyetat0(pctsrf, ftsol, ftsoil, qsurf, qsol, snow, albe, evap, & |
18 |
rain_fall, snow_fall, solsw, sollw, fder, radsol, frugs, agesno, zmea, & |
rain_fall, snow_fall, solsw, sollw, fder, radsol, frugs, agesno, zmea, & |
19 |
zstd, zsig, zgam, zthe, zpic, zval, t_ancien, q_ancien, ancien_ok, & |
zstd, zsig, zgam, zthe, zpic, zval, t_ancien, q_ancien, ancien_ok, & |
20 |
rnebcon, ratqs, clwcon, run_off_lic_0, sig1, w01, ncid_startphy) |
rnebcon, ratqs, clwcon, run_off_lic_0, sig1, w01, ncid_startphy) |
33 |
nf95_inquire_variable, NF95_OPEN |
nf95_inquire_variable, NF95_OPEN |
34 |
|
|
35 |
REAL, intent(out):: pctsrf(klon, nbsrf) |
REAL, intent(out):: pctsrf(klon, nbsrf) |
36 |
REAL, intent(out):: tsol(klon, nbsrf) |
REAL, intent(out):: ftsol(klon, nbsrf) |
37 |
REAL, intent(out):: tsoil(klon, nsoilmx, nbsrf) |
REAL, intent(out):: ftsoil(klon, nsoilmx, nbsrf) |
38 |
REAL, intent(out):: qsurf(klon, nbsrf) |
REAL, intent(out):: qsurf(klon, nbsrf) |
39 |
REAL, intent(out):: qsol(:) ! (klon) |
REAL, intent(out):: qsol(:) ! (klon) |
40 |
REAL, intent(out):: snow(klon, nbsrf) |
REAL, intent(out):: snow(klon, nbsrf) |
146 |
fractint = pctsrf(:, is_ter) + pctsrf(:, is_lic) |
fractint = pctsrf(:, is_ter) + pctsrf(:, is_lic) |
147 |
DO i = 1 , klon |
DO i = 1 , klon |
148 |
IF ( abs(fractint(i) - zmasq(i) ) > EPSFRA ) THEN |
IF ( abs(fractint(i) - zmasq(i) ) > EPSFRA ) THEN |
149 |
WRITE(*, *) 'phyetat0: attention fraction terre pas ', & |
print *, 'phyetat0: attention fraction terre pas ', & |
150 |
'coherente ', i, zmasq(i), pctsrf(i, is_ter) & |
'coherente ', i, zmasq(i), pctsrf(i, is_ter), pctsrf(i, is_lic) |
|
, pctsrf(i, is_lic) |
|
151 |
ENDIF |
ENDIF |
152 |
END DO |
END DO |
153 |
fractint = pctsrf(:, is_oce) + pctsrf(:, is_sic) |
fractint = pctsrf(:, is_oce) + pctsrf(:, is_sic) |
154 |
DO i = 1 , klon |
DO i = 1 , klon |
155 |
IF ( abs( fractint(i) - (1. - zmasq(i))) > EPSFRA ) THEN |
IF ( abs( fractint(i) - (1. - zmasq(i))) > EPSFRA ) THEN |
156 |
WRITE(*, *) 'phyetat0 attention fraction ocean pas ', & |
print *, 'phyetat0 attention fraction ocean pas ', & |
157 |
'coherente ', i, zmasq(i) , pctsrf(i, is_oce) & |
'coherente ', i, zmasq(i) , pctsrf(i, is_oce), pctsrf(i, is_sic) |
|
, pctsrf(i, is_sic) |
|
158 |
ENDIF |
ENDIF |
159 |
END DO |
END DO |
160 |
|
|
162 |
call NF95_INQ_VARID(ncid_startphy, "TS", varid) |
call NF95_INQ_VARID(ncid_startphy, "TS", varid) |
163 |
call nf95_inquire_variable(ncid_startphy, varid, ndims = ndims) |
call nf95_inquire_variable(ncid_startphy, varid, ndims = ndims) |
164 |
if (ndims == 2) then |
if (ndims == 2) then |
165 |
call NF95_GET_VAR(ncid_startphy, varid, tsol) |
call NF95_GET_VAR(ncid_startphy, varid, ftsol) |
166 |
else |
else |
167 |
print *, "Found only one surface type for soil temperature." |
print *, "Found only one surface type for soil temperature." |
168 |
call nf95_get_var(ncid_startphy, varid, tsol(:, 1)) |
call nf95_get_var(ncid_startphy, varid, ftsol(:, 1)) |
169 |
tsol(:, 2:nbsrf) = spread(tsol(:, 1), dim = 2, ncopies = nbsrf - 1) |
ftsol(:, 2:nbsrf) = spread(ftsol(:, 1), dim = 2, ncopies = nbsrf - 1) |
170 |
end if |
end if |
171 |
|
|
172 |
! Lecture des temperatures du sol profond: |
! Lecture des temperatures du sol profond: |
173 |
|
|
174 |
call NF95_INQ_VARID(ncid_startphy, 'Tsoil', varid) |
call NF95_INQ_VARID(ncid_startphy, 'Tsoil', varid) |
175 |
call NF95_GET_VAR(ncid_startphy, varid, tsoil) |
call NF95_GET_VAR(ncid_startphy, varid, ftsoil) |
176 |
|
|
177 |
! Lecture de l'humidite de l'air juste au dessus du sol: |
! Lecture de l'humidite de l'air juste au dessus du sol: |
178 |
|
|