149 |
print *, ' nisurf = ', nisurf, ' /= is_ter = ', is_ter |
print *, ' nisurf = ', nisurf, ' /= is_ter = ', is_ter |
150 |
print *, 'or on doit commencer par les surfaces continentales' |
print *, 'or on doit commencer par les surfaces continentales' |
151 |
abort_message='voir ci-dessus' |
abort_message='voir ci-dessus' |
152 |
call abort_gcm(modname, abort_message, 1) |
call abort_gcm(modname, abort_message) |
153 |
endif |
endif |
154 |
if (is_oce > is_sic) then |
if (is_oce > is_sic) then |
155 |
print *, 'Warning:' |
print *, 'Warning:' |
157 |
print *, ' l''ocean doit etre traite avant la banquise' |
print *, ' l''ocean doit etre traite avant la banquise' |
158 |
print *, ' or is_oce = ', is_oce, '> is_sic = ', is_sic |
print *, ' or is_oce = ', is_oce, '> is_sic = ', is_sic |
159 |
abort_message='voir ci-dessus' |
abort_message='voir ci-dessus' |
160 |
call abort_gcm(modname, abort_message, 1) |
call abort_gcm(modname, abort_message) |
161 |
endif |
endif |
162 |
endif |
endif |
163 |
first_call = .false. |
first_call = .false. |
182 |
|
|
183 |
select case (nisurf) |
select case (nisurf) |
184 |
case (is_ter) |
case (is_ter) |
185 |
! Surface "terre" appel a l'interface avec les sols continentaux |
! Surface "terre", appel \`a l'interface avec les sols continentaux |
186 |
|
|
187 |
! allocation du run-off |
! allocation du run-off |
188 |
if (.not. allocated(run_off)) then |
if (.not. allocated(run_off)) then |
189 |
allocate(run_off(knon)) |
allocate(run_off(knon)) |
190 |
run_off = 0. |
run_off = 0. |
191 |
else if (size(run_off) /= knon) then |
else if (size(run_off) /= knon) then |
192 |
print *, 'Bizarre, le nombre de points continentaux' |
call abort_gcm(modname, 'Something is wrong: the number of ' & |
193 |
print *, 'a change entre deux appels. J''arrete ' |
// 'continental points has changed since last call.') |
|
abort_message='voir ci-dessus' |
|
|
call abort_gcm(modname, abort_message, 1) |
|
194 |
endif |
endif |
195 |
|
|
196 |
! Calcul age de la neige |
! Calcul age de la neige |
210 |
ELSE |
ELSE |
211 |
cal = RCPD * capsol |
cal = RCPD * capsol |
212 |
ENDIF |
ENDIF |
213 |
CALL calcul_fluxs(nisurf, dtime, tsurf, p1lay(:knon), cal(:knon), & |
|
214 |
|
CALL calcul_fluxs(dtime, tsurf, p1lay(:knon), cal(:knon), & |
215 |
beta(:knon), tq_cdrag(:knon), ps(:knon), qsurf(:knon), & |
beta(:knon), tq_cdrag(:knon), ps(:knon), qsurf(:knon), & |
216 |
radsol(:knon), dif_grnd(:knon), temp_air(:knon), spechum(:knon), & |
radsol(:knon), dif_grnd(:knon), temp_air(:knon), spechum(:knon), & |
217 |
u1_lay(:knon), v1_lay(:knon), petAcoef(:knon), peqAcoef(:knon), & |
u1_lay(:knon), v1_lay(:knon), petAcoef(:knon), peqAcoef(:knon), & |
245 |
dif_grnd = 0. |
dif_grnd = 0. |
246 |
alb_neig = 0. |
alb_neig = 0. |
247 |
agesno = 0. |
agesno = 0. |
248 |
call calcul_fluxs(nisurf, dtime, tsurf_temp, p1lay(:knon), & |
call calcul_fluxs(dtime, tsurf_temp, p1lay(:knon), & |
249 |
cal(:knon), beta(:knon), tq_cdrag(:knon), ps(:knon), & |
cal(:knon), beta(:knon), tq_cdrag(:knon), ps(:knon), & |
250 |
qsurf(:knon), radsol(:knon), dif_grnd(:knon), temp_air(:knon), & |
qsurf(:knon), radsol(:knon), dif_grnd(:knon), temp_air(:knon), & |
251 |
spechum(:knon), u1_lay(:knon), v1_lay(:knon), petAcoef(:knon), & |
spechum(:knon), u1_lay(:knon), v1_lay(:knon), petAcoef(:knon), & |
299 |
tsurf_temp = tsurf_new |
tsurf_temp = tsurf_new |
300 |
beta = 1.0 |
beta = 1.0 |
301 |
|
|
302 |
CALL calcul_fluxs(nisurf, dtime, tsurf_temp, p1lay(:knon), cal(:knon), & |
CALL calcul_fluxs(dtime, tsurf_temp, p1lay(:knon), cal(:knon), & |
303 |
beta(:knon), tq_cdrag(:knon), ps(:knon), qsurf(:knon), & |
beta(:knon), tq_cdrag(:knon), ps(:knon), qsurf(:knon), & |
304 |
radsol(:knon), dif_grnd(:knon), temp_air(:knon), spechum(:knon), & |
radsol(:knon), dif_grnd(:knon), temp_air(:knon), spechum(:knon), & |
305 |
u1_lay(:knon), v1_lay(:knon), petAcoef(:knon), peqAcoef(:knon), & |
u1_lay(:knon), v1_lay(:knon), petAcoef(:knon), peqAcoef(:knon), & |
352 |
beta = 1.0 |
beta = 1.0 |
353 |
dif_grnd = 0.0 |
dif_grnd = 0.0 |
354 |
|
|
355 |
call calcul_fluxs(nisurf, dtime, tsurf, p1lay(:knon), cal(:knon), & |
call calcul_fluxs(dtime, tsurf, p1lay(:knon), cal(:knon), & |
356 |
beta(:knon), tq_cdrag(:knon), ps(:knon), qsurf(:knon), & |
beta(:knon), tq_cdrag(:knon), ps(:knon), qsurf(:knon), & |
357 |
radsol(:knon), dif_grnd(:knon), temp_air(:knon), spechum(:knon), & |
radsol(:knon), dif_grnd(:knon), temp_air(:knon), spechum(:knon), & |
358 |
u1_lay(:knon), v1_lay(:knon), petAcoef(:knon), peqAcoef(:knon), & |
u1_lay(:knon), v1_lay(:knon), petAcoef(:knon), peqAcoef(:knon), & |
381 |
case default |
case default |
382 |
print *, 'Index surface = ', nisurf |
print *, 'Index surface = ', nisurf |
383 |
abort_message = 'Index surface non valable' |
abort_message = 'Index surface non valable' |
384 |
call abort_gcm(modname, abort_message, 1) |
call abort_gcm(modname, abort_message) |
385 |
end select |
end select |
386 |
|
|
387 |
END SUBROUTINE interfsurf_hq |
END SUBROUTINE interfsurf_hq |