6 |
|
|
7 |
SUBROUTINE leapfrog(ucov, vcov, teta, ps, masse, phis, q, time_0) |
SUBROUTINE leapfrog(ucov, vcov, teta, ps, masse, phis, q, time_0) |
8 |
|
|
9 |
! From dyn3d/leapfrog.F, version 1.6, 2005/04/13 08:58:34 |
! From dyn3d/leapfrog.F, version 1.6, 2005/04/13 08:58:34 revision 616 |
10 |
! Authors: P. Le Van, L. Fairhead, F. Hourdin |
! Authors: P. Le Van, L. Fairhead, F. Hourdin |
11 |
! Matsuno-leapfrog scheme. |
! Matsuno-leapfrog scheme. |
12 |
|
|
43 |
! potential temperature |
! potential temperature |
44 |
|
|
45 |
REAL, intent(inout):: ps(:, :) ! (iim + 1, jjm + 1) pression au sol, en Pa |
REAL, intent(inout):: ps(:, :) ! (iim + 1, jjm + 1) pression au sol, en Pa |
46 |
REAL masse((iim + 1) * (jjm + 1), llm) ! masse d'air |
REAL masse(:, :, :) ! (iim + 1, jjm + 1, llm) masse d'air |
47 |
REAL phis((iim + 1) * (jjm + 1)) ! geopotentiel au sol |
REAL phis(:, :) ! (iim + 1, jjm + 1) geopotentiel au sol |
48 |
|
|
49 |
REAL, intent(inout):: q(:, :, :, :) ! (iim + 1, jjm + 1, llm, nqmx) |
REAL, intent(inout):: q(:, :, :, :) ! (iim + 1, jjm + 1, llm, nqmx) |
50 |
! mass fractions of advected fields |
! mass fractions of advected fields |
68 |
! Variables dynamiques au pas - 1 |
! Variables dynamiques au pas - 1 |
69 |
REAL vcovm1(iim + 1, jjm, llm), ucovm1(iim + 1, jjm + 1, llm) |
REAL vcovm1(iim + 1, jjm, llm), ucovm1(iim + 1, jjm + 1, llm) |
70 |
REAL tetam1(iim + 1, jjm + 1, llm), psm1(iim + 1, jjm + 1) |
REAL tetam1(iim + 1, jjm + 1, llm), psm1(iim + 1, jjm + 1) |
71 |
REAL massem1((iim + 1) * (jjm + 1), llm) |
REAL massem1(iim + 1, jjm + 1, llm) |
72 |
|
|
73 |
! Tendances dynamiques |
! Tendances dynamiques |
74 |
REAL dv((iim + 1) * jjm, llm), dudyn((iim + 1) * (jjm + 1), llm) |
REAL dv((iim + 1) * jjm, llm), dudyn((iim + 1) * (jjm + 1), llm) |
89 |
INTEGER itau ! index of the time step of the dynamics, starts at 0 |
INTEGER itau ! index of the time step of the dynamics, starts at 0 |
90 |
INTEGER itaufin |
INTEGER itaufin |
91 |
REAL time ! time of day, as a fraction of day length |
REAL time ! time of day, as a fraction of day length |
92 |
real finvmaold((iim + 1) * (jjm + 1), llm) |
real finvmaold(iim + 1, jjm + 1, llm) |
93 |
INTEGER l |
INTEGER l |
94 |
REAL rdayvrai, rdaym_ini |
REAL rdayvrai, rdaym_ini |
95 |
|
|
180 |
|
|
181 |
CALL calfis(rdayvrai, time, ucov, vcov, teta, q, masse, ps, pk, & |
CALL calfis(rdayvrai, time, ucov, vcov, teta, q, masse, ps, pk, & |
182 |
phis, phi, dudyn, dv, dq, w, dufi, dvfi, dtetafi, dqfi, dpfi, & |
phis, phi, dudyn, dv, dq, w, dufi, dvfi, dtetafi, dqfi, dpfi, & |
183 |
lafin=itau+1==itaufin) |
lafin = itau + 1 == itaufin) |
184 |
|
|
185 |
! ajout des tendances physiques: |
! ajout des tendances physiques: |
186 |
CALL addfi(nqmx, dtphys, ucov, vcov, teta, q, ps, dufi, dvfi, & |
CALL addfi(nqmx, dtphys, ucov, vcov, teta, q, ps, dufi, dvfi, & |
232 |
end do time_integration |
end do time_integration |
233 |
|
|
234 |
CALL dynredem1("restart.nc", vcov, ucov, teta, q, masse, ps, & |
CALL dynredem1("restart.nc", vcov, ucov, teta, q, masse, ps, & |
235 |
itau=itau_dyn+itaufin) |
itau = itau_dyn + itaufin) |
236 |
|
|
237 |
! Calcul des tendances dynamiques: |
! Calcul des tendances dynamiques: |
238 |
CALL geopot((iim + 1) * (jjm + 1), teta, pk, pks, phis, phi) |
CALL geopot((iim + 1) * (jjm + 1), teta, pk, pks, phis, phi) |
239 |
CALL caldyn(itaufin, ucov, vcov, teta, ps, masse, pk, pkf, phis, phi, & |
CALL caldyn(itaufin, ucov, vcov, teta, ps, masse, pk, pkf, phis, phi, & |
240 |
dudyn, dv, dteta, dp, w, pbaru, pbarv, time_0, & |
dudyn, dv, dteta, dp, w, pbaru, pbarv, time_0, & |
241 |
conser=MOD(itaufin, iconser)==0) |
conser = MOD(itaufin, iconser) == 0) |
242 |
|
|
243 |
END SUBROUTINE leapfrog |
END SUBROUTINE leapfrog |
244 |
|
|