/[lmdze]/trunk/libf/dyn3d/caladvtrac.f90
ViewVC logotype

Contents of /trunk/libf/dyn3d/caladvtrac.f90

Parent Directory Parent Directory | Revision Log Revision Log


Revision 44 - (show annotations)
Wed Apr 13 12:29:18 2011 UTC (13 years, 1 month ago) by guez
File size: 1943 byte(s)
Removed argument "pdteta" of "calfis", because it was not used.

Created module "conf_guide_m", containing procedure
"conf_guide". Moved module variables from "guide_m" to "conf_guide_m".

In module "getparam", removed "ini_getparam" and "fin_getparam" from
generic interface "getpar".

Created module variables in "tau2alpha_m" to replace common "comdxdy".

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

  ViewVC Help
Powered by ViewVC 1.1.21