/[lmdze]/trunk/Sources/dyn3d/caladvtrac.f
ViewVC logotype

Contents of /trunk/Sources/dyn3d/caladvtrac.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3 - (show annotations)
Wed Feb 27 13:16:39 2008 UTC (16 years, 2 months ago) by guez
Original Path: trunk/libf/dyn3d/caladvtrac.f90
File size: 1640 byte(s)
Initial import
1 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 REAL p(ip1jmp1, llm + 1), q(ip1jmp1, llm, nqmx)
18
19 real, intent(out):: dq(ip1jmp1, llm, 2)
20 ! (n'est utilisé et dimensionné que pour l'eau vapeur et liquide)
21
22 REAL teta(ip1jmp1, llm), pk(ip1jmp1, llm)
23
24 ! Local:
25
26 EXTERNAL advtrac, qminimum
27 INTEGER l, iq, iapptrac
28 REAL finmasse(ip1jmp1, llm), dtvrtrac
29
30 !------------------------------------------------
31
32 dq(:, :, :) = q(:, :, :2) ! initialisation
33
34 ! Advection:
35 CALL advtrac(pbaru, pbarv, p, masse, q, iapptrac, teta, pk)
36
37 IF (iapptrac == iapp_tracvl) THEN
38 ! Calcul de deltap qu'on stocke dans finmasse
39 forall (l = 1:llm) finmasse(:, l) = p(:, l) - p(:, l+1)
40
41 ! On appelle "qminimum" uniquement pour l'eau vapeur et liquide
42 CALL qminimum(q, 2, finmasse)
43
44 finmasse(:, :) = masse(:, :)
45 CALL filtreg(finmasse, jjm + 1, llm, -2, 2, .TRUE., 1)
46
47 ! Calcul de "dq" pour l'eau, pour le passer à la physique
48 dtvrtrac = iapp_tracvl * dtvr
49 DO iq = 1, 2
50 dq(:, :, iq) = (q(:, :, iq) - dq(:, :, iq)) * finmasse(:, :) &
51 / dtvrtrac
52 ENDDO
53 ELSE
54 dq(:, :, :) = 0.
55 ENDIF
56
57 END SUBROUTINE caladvtrac

  ViewVC Help
Powered by ViewVC 1.1.21