1 |
guez |
3 |
SUBROUTINE caladvtrac(q, pbaru, pbarv, p, masse, dq, teta, pk) |
2 |
|
|
|
3 |
|
|
! From dyn3d/caladvtrac.F, version 1.3 2005/04/13 08:58:34 |
4 |
|
|
|
5 |
|
|
! Authors : F. Hourdin, P. Le Van, F. Forget, F. Codron |
6 |
|
|
! F. Codron (10/99) : ajout humidité spécifique pour eau vapeur |
7 |
|
|
! Schéma de Van Leer |
8 |
|
|
|
9 |
|
|
use dimens_m, only: iim, jjm, llm, nqmx |
10 |
|
|
use paramet_m, only: ip1jmp1 |
11 |
|
|
use comconst, only: dtvr |
12 |
|
|
use conf_gcm_m, only: iapp_tracvl |
13 |
|
|
|
14 |
|
|
IMPLICIT NONE |
15 |
|
|
|
16 |
|
|
REAL pbaru(ip1jmp1, llm), pbarv((iim + 1) * jjm, llm), masse(ip1jmp1, llm) |
17 |
guez |
10 |
REAL, intent(in):: p(ip1jmp1, llm + 1) |
18 |
|
|
real q(ip1jmp1, llm, nqmx) |
19 |
guez |
3 |
|
20 |
|
|
real, intent(out):: dq(ip1jmp1, llm, 2) |
21 |
|
|
! (n'est utilisé et dimensionné que pour l'eau vapeur et liquide) |
22 |
|
|
|
23 |
|
|
REAL teta(ip1jmp1, llm), pk(ip1jmp1, llm) |
24 |
|
|
|
25 |
|
|
! Local: |
26 |
|
|
|
27 |
|
|
EXTERNAL advtrac, qminimum |
28 |
|
|
INTEGER l, iq, iapptrac |
29 |
|
|
REAL finmasse(ip1jmp1, llm), dtvrtrac |
30 |
|
|
|
31 |
|
|
!------------------------------------------------ |
32 |
|
|
|
33 |
|
|
dq(:, :, :) = q(:, :, :2) ! initialisation |
34 |
|
|
|
35 |
|
|
! Advection: |
36 |
|
|
CALL advtrac(pbaru, pbarv, p, masse, q, iapptrac, teta, pk) |
37 |
|
|
|
38 |
|
|
IF (iapptrac == iapp_tracvl) THEN |
39 |
|
|
! Calcul de deltap qu'on stocke dans finmasse |
40 |
|
|
forall (l = 1:llm) finmasse(:, l) = p(:, l) - p(:, l+1) |
41 |
|
|
|
42 |
|
|
! On appelle "qminimum" uniquement pour l'eau vapeur et liquide |
43 |
|
|
CALL qminimum(q, 2, finmasse) |
44 |
|
|
|
45 |
|
|
finmasse(:, :) = masse(:, :) |
46 |
|
|
CALL filtreg(finmasse, jjm + 1, llm, -2, 2, .TRUE., 1) |
47 |
|
|
|
48 |
|
|
! Calcul de "dq" pour l'eau, pour le passer à la physique |
49 |
|
|
dtvrtrac = iapp_tracvl * dtvr |
50 |
|
|
DO iq = 1, 2 |
51 |
|
|
dq(:, :, iq) = (q(:, :, iq) - dq(:, :, iq)) * finmasse(:, :) & |
52 |
|
|
/ dtvrtrac |
53 |
|
|
ENDDO |
54 |
|
|
ELSE |
55 |
|
|
dq(:, :, :) = 0. |
56 |
|
|
ENDIF |
57 |
|
|
|
58 |
|
|
END SUBROUTINE caladvtrac |