6 |
|
|
7 |
contains |
contains |
8 |
|
|
9 |
SUBROUTINE leapfrog(ucov, vcov, teta, ps, masse, phis, nq, q, clesphy0, & |
SUBROUTINE leapfrog(ucov, vcov, teta, ps, masse, phis, nq, q, time_0) |
|
time_0) |
|
10 |
|
|
11 |
! 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 |
12 |
|
|
33 |
use comvert, only: ap, bp |
use comvert, only: ap, bp |
34 |
use conf_gcm_m, only: day_step, iconser, idissip, iphysiq, iperiod, nday, & |
use conf_gcm_m, only: day_step, iconser, idissip, iphysiq, iperiod, nday, & |
35 |
offline, periodav |
offline, periodav |
36 |
use logic, only: ok_guide, apdiss, apphys, conser, forward, iflag_phys, & |
use logic, only: ok_guide, iflag_phys |
|
leapf, statcl |
|
37 |
use comgeom |
use comgeom |
38 |
use serre |
use serre |
39 |
use temps, only: itaufin, day_ini, dt |
use temps, only: itaufin, day_ini, dt |
46 |
use pression_m, only: pression |
use pression_m, only: pression |
47 |
use pressure_var, only: p3d |
use pressure_var, only: p3d |
48 |
|
|
49 |
integer nq |
integer, intent(in):: nq |
|
REAL clesphy0(:) |
|
50 |
|
|
51 |
! Variables dynamiques: |
! Variables dynamiques: |
52 |
REAL vcov(ip1jm, llm), ucov(ip1jmp1, llm) ! vents covariants |
REAL vcov(ip1jm, llm), ucov(ip1jmp1, llm) ! vents covariants |
94 |
|
|
95 |
INTEGER itau, itaufinp1 |
INTEGER itau, itaufinp1 |
96 |
INTEGER iday ! jour julien |
INTEGER iday ! jour julien |
97 |
REAL time ! Heure de la journee en fraction d'1 jour |
REAL time ! time of day, as a fraction of day length |
98 |
|
|
99 |
REAL SSUM |
REAL SSUM |
100 |
real finvmaold(ip1jmp1, llm) |
real finvmaold(ip1jmp1, llm) |
117 |
|
|
118 |
logical:: dissip_conservative = .true. |
logical:: dissip_conservative = .true. |
119 |
LOGICAL:: prem = .true. |
LOGICAL:: prem = .true. |
120 |
|
logical forward, leapf, apphys, conser, apdiss |
121 |
|
|
122 |
!--------------------------------------------------- |
!--------------------------------------------------- |
123 |
|
|
165 |
! gestion des appels de la physique et des dissipations: |
! gestion des appels de la physique et des dissipations: |
166 |
|
|
167 |
apphys = .FALSE. |
apphys = .FALSE. |
|
statcl = .FALSE. |
|
168 |
conser = .FALSE. |
conser = .FALSE. |
169 |
apdiss = .FALSE. |
apdiss = .FALSE. |
170 |
|
|
193 |
|
|
194 |
! integrations dynamique et traceurs: |
! integrations dynamique et traceurs: |
195 |
CALL integrd(2, vcovm1, ucovm1, tetam1, psm1, massem1, dv, du, & |
CALL integrd(2, vcovm1, ucovm1, tetam1, psm1, massem1, dv, du, & |
196 |
dteta, dq, dp, vcov, ucov, teta, q, ps, masse, phis, finvmaold) |
dteta, dq, dp, vcov, ucov, teta, q, ps, masse, phis, & |
197 |
|
finvmaold, leapf) |
198 |
|
|
199 |
! calcul des tendances physiques: |
! calcul des tendances physiques: |
200 |
|
|
218 |
|
|
219 |
CALL calfis(nq, lafin, rdayvrai, time, ucov, vcov, teta, q, & |
CALL calfis(nq, lafin, rdayvrai, time, ucov, vcov, teta, q, & |
220 |
masse, ps, pk, phis, phi, du, dv, dteta, dq, w, & |
masse, ps, pk, phis, phi, du, dv, dteta, dq, w, & |
221 |
clesphy0, dufi, dvfi, dtetafi, dqfi, dpfi) |
dufi, dvfi, dtetafi, dqfi, dpfi) |
222 |
|
|
223 |
! ajout des tendances physiques: |
! ajout des tendances physiques: |
224 |
CALL addfi(nqmx, dtphys, & |
CALL addfi(nqmx, dtphys, & |
335 |
dt = 2. * dtvr |
dt = 2. * dtvr |
336 |
END IF |
END IF |
337 |
ELSE |
ELSE |
338 |
! ...... pas leapfrog ..... |
! pas leapfrog |
339 |
leapf = .TRUE. |
leapf = .TRUE. |
340 |
dt = 2. * dtvr |
dt = 2. * dtvr |
341 |
END IF |
END IF |