27 |
USE dynetat0_m, ONLY: day_ini |
USE dynetat0_m, ONLY: day_ini |
28 |
use dynredem1_m, only: dynredem1 |
use dynredem1_m, only: dynredem1 |
29 |
USE exner_hyb_m, ONLY: exner_hyb |
USE exner_hyb_m, ONLY: exner_hyb |
30 |
use filtreg_m, only: filtreg |
use filtreg_scal_m, only: filtreg_scal |
31 |
use fluxstokenc_m, only: fluxstokenc |
use fluxstokenc_m, only: fluxstokenc |
32 |
use geopot_m, only: geopot |
use geopot_m, only: geopot |
33 |
USE guide_m, ONLY: guide |
USE guide_m, ONLY: guide |
108 |
|
|
109 |
! On initialise la pression et la fonction d'Exner : |
! On initialise la pression et la fonction d'Exner : |
110 |
forall (l = 1: llm + 1) p3d(:, :, l) = ap(l) + bp(l) * ps |
forall (l = 1: llm + 1) p3d(:, :, l) = ap(l) + bp(l) * ps |
111 |
CALL exner_hyb(ps, p3d, pks, pk, pkf) |
CALL exner_hyb(ps, p3d, pks, pk) |
112 |
|
pkf = pk |
113 |
|
CALL filtreg_scal(pkf, direct = .true., intensive = .true.) |
114 |
|
|
115 |
time_integration: do itau = 0, itaufin - 1 |
time_integration: do itau = 0, itaufin - 1 |
116 |
leapf = mod(itau, iperiod) /= 0 |
leapf = mod(itau, iperiod) /= 0 |
126 |
massem1 = masse |
massem1 = masse |
127 |
psm1 = ps |
psm1 = ps |
128 |
finvmaold = masse |
finvmaold = masse |
129 |
CALL filtreg(finvmaold, direct = .false., intensive = .false.) |
CALL filtreg_scal(finvmaold, direct = .false., intensive = .false.) |
130 |
end if |
end if |
131 |
|
|
132 |
! Calcul des tendances dynamiques: |
! Calcul des tendances dynamiques: |
147 |
leapf) |
leapf) |
148 |
|
|
149 |
forall (l = 1: llm + 1) p3d(:, :, l) = ap(l) + bp(l) * ps |
forall (l = 1: llm + 1) p3d(:, :, l) = ap(l) + bp(l) * ps |
150 |
CALL exner_hyb(ps, p3d, pks, pk, pkf) |
CALL exner_hyb(ps, p3d, pks, pk) |
151 |
|
pkf = pk |
152 |
|
CALL filtreg_scal(pkf, direct = .true., intensive = .true.) |
153 |
|
|
154 |
if (.not. leapf) then |
if (.not. leapf) then |
155 |
! Matsuno backward |
! Matsuno backward |
164 |
finvmaold, dtvr, leapf=.false.) |
finvmaold, dtvr, leapf=.false.) |
165 |
|
|
166 |
forall (l = 1: llm + 1) p3d(:, :, l) = ap(l) + bp(l) * ps |
forall (l = 1: llm + 1) p3d(:, :, l) = ap(l) + bp(l) * ps |
167 |
CALL exner_hyb(ps, p3d, pks, pk, pkf) |
CALL exner_hyb(ps, p3d, pks, pk) |
168 |
|
pkf = pk |
169 |
|
CALL filtreg_scal(pkf, direct = .true., intensive = .true.) |
170 |
end if |
end if |
171 |
|
|
172 |
IF (MOD(itau + 1, iphysiq) == 0 .AND. iflag_phys /= 0) THEN |
IF (MOD(itau + 1, iphysiq) == 0 .AND. iflag_phys /= 0) THEN |
216 |
|
|
217 |
IF (MOD(itau + 1, iecri * day_step) == 0) THEN |
IF (MOD(itau + 1, iecri * day_step) == 0) THEN |
218 |
CALL geopot(teta, pk, pks, phis, phi) |
CALL geopot(teta, pk, pks, phis, phi) |
219 |
CALL writehist(itau, vcov, ucov, teta, phi, q, masse, ps) |
CALL writehist(itau, vcov, ucov, teta, phi, masse, ps) |
220 |
END IF |
END IF |
221 |
end do time_integration |
end do time_integration |
222 |
|
|