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

Annotation of /trunk/dyn3d/caladvtrac.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 40 - (hide annotations)
Tue Feb 22 13:49:36 2011 UTC (13 years, 3 months ago) by guez
Original Path: trunk/libf/dyn3d/caladvtrac.f90
File size: 1921 byte(s)
"alpha" useless, always 0, in "exner_hyb".

1 guez 40 module caladvtrac_m
2 guez 3
3 guez 40 IMPLICIT NONE
4 guez 3
5 guez 40 contains
6 guez 3
7 guez 40 SUBROUTINE caladvtrac(q, pbaru, pbarv, p, masse, dq, teta, pk)
8 guez 3
9 guez 40 ! From dyn3d/caladvtrac.F, version 1.3 2005/04/13 08:58:34
10 guez 3
11 guez 40 ! 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 guez 3
15 guez 40 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 guez 3
22 guez 40 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 guez 3
27 guez 40 real, intent(out):: dq(iim + 1, jjm + 1, llm, 2)
28     ! (n'est utilisé et dimensionné que pour l'eau vapeur et liquide)
29 guez 3
30 guez 40 REAL teta(ip1jmp1, llm), pk(ip1jmp1, llm)
31 guez 3
32 guez 40 ! Local:
33 guez 3
34 guez 40 EXTERNAL qminimum
35     INTEGER l, iq, iapptrac
36     REAL finmasse(iim + 1, jjm + 1, llm), dtvrtrac
37 guez 3
38 guez 40 !------------------------------------------------
39 guez 3
40 guez 40 dq = q(:, :, :, :2) ! initialisation
41 guez 3
42 guez 40 ! Advection:
43     CALL advtrac(pbaru, pbarv, p, masse, q, iapptrac, teta, pk)
44 guez 3
45 guez 40 IF (iapptrac == iapp_tracvl) THEN
46     ! Calcul de deltap qu'on stocke dans finmasse
47     forall (l = 1:llm) finmasse(:, :, l) = p(:, :, l) - p(:, :, l+1)
48 guez 3
49 guez 40 ! On appelle "qminimum" uniquement pour l'eau vapeur et liquide
50     CALL qminimum(q, 2, finmasse)
51 guez 3
52 guez 40 finmasse = masse
53     CALL filtreg(finmasse, jjm + 1, llm, -2, 2, .TRUE., 1)
54    
55     ! Calcul de "dq" pour l'eau, pour le passer à la physique
56     dtvrtrac = iapp_tracvl * dtvr
57     DO iq = 1, 2
58     dq(:, :, :, iq) = (q(:, :, :, iq) - dq(:, :, :, iq)) * finmasse &
59     / dtvrtrac
60     ENDDO
61     ELSE
62     dq = 0.
63     ENDIF
64    
65     END SUBROUTINE caladvtrac
66    
67     end module caladvtrac_m

  ViewVC Help
Powered by ViewVC 1.1.21