source: LMDZ.3.3/trunk/libf/dyn3d/vanleer.F @ 19

Last change on this file since 19 was 2, checked in by lmdz, 25 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 3.1 KB
Line 
1      SUBROUTINE vanleer(numvanle,iapp_tracvl,nq,q,pbaru,pbarv ,
2     *                                    p ,masse,  dq          )
3c
4      IMPLICIT NONE
5c
6c     Auteurs:   F.Hourdin , P.Le Van, F.Forget
7c=======================================================================
8c
9c       Shema de  Van Leer
10c
11c=======================================================================
12
13
14#include "dimensions.h"
15#include "paramet.h"
16#include "comconst.h"
17
18c   Arguments:
19c   ----------
20      INTEGER nq,numvanle,iapp_tracvl
21      REAL pbaru( ip1jmp1,llm ),pbarv( ip1jm,llm),masse(ip1jmp1,llm)
22      REAL p( ip1jmp1,llmp1),q( ip1jmp1,llm,nq),dq( ip1jmp1,llm,nq )
23
24c  ..................................................................
25c
26c  .. dq n'est utilise et dimensionne que pour l'eau  vapeur et liqu.
27c
28c     numvanle est le numero du premier traceur qui appelle le
29c       shema de Van-Leer  (  1<=  numvanle <=  nqmx )  .
30c  ..................................................................
31c
32c   Local:
33c   ------
34
35      EXTERNAL  tracvl,minmaxq, qminimum
36      INTEGER ij,l, iq, iapptrac
37      REAL finmasse(ip1jmp1,llm), dtvrtrac
38cc
39
40
41c .. Si numvanle = 1 , l'eau vapeur et l'eau liq. ont le shema Van-Leer .
42c
43      IF( numvanle.EQ.1 ) THEN
44
45        DO iq = 1, nq
46          DO l = 1, llm
47            DO ij = 1, ip1jmp1
48             dq(ij,l,iq ) = 0.
49            ENDDO
50          ENDDO
51        ENDDO
52
53        CALL SCOPY( 2 * ijp1llm, q, 1, dq, 1 )
54
55c  test des valeurs minmax
56cc        CALL minmaxq(q(1,1,1),1.e33,-1.e33,'Eau vapeur (a) ')
57cc        CALL minmaxq(q(1,1,2),1.e33,-1.e33,'Eau liquide(a) ')
58      ENDIF
59
60c   advection
61
62      CALL tracvl( numvanle,iapp_tracvl,nq,pbaru,pbarv,p , masse,q  ,
63     *                                iapptrac                       )
64
65      IF( numvanle.EQ.1 ) THEN
66c
67
68         IF( iapptrac.EQ.iapp_tracvl ) THEN
69c
70cc          CALL minmaxq(q(1,1,1),1.e33,-1.e33,'Eau vapeur     ')
71cc          CALL minmaxq(q(1,1,2),1.e33,-1.e33,'Eau liquide    ')
72
73cc     ....  Calcul  de deltap  qu'on stocke dans finmasse   ...
74c
75          DO l = 1, llm
76           DO ij = 1, ip1jmp1
77             finmasse(ij,l) =  p(ij,l) - p(ij,l+1)
78           ENDDO
79          ENDDO
80
81          CALL qminimum( q, 2, finmasse )
82
83          CALL SCOPY   ( ip1jmp1*llm, masse, 1, finmasse,       1 )
84          CALL filtreg ( finmasse ,  jjp1,  llm, -2, 2, .TRUE., 1 )
85c
86c   *****  Calcul de dq pour l'eau , pour le passer a la physique ******
87c   ********************************************************************
88c
89          dtvrtrac = iapp_tracvl * dtvr
90c
91           DO iq = 1 , 2
92            DO l = 1 , llm
93             DO ij = 1,ip1jmp1
94             dq(ij,l,iq) = ( q(ij,l,iq) - dq(ij,l,iq) ) * finmasse(ij,l)
95     *                               /  dtvrtrac
96             ENDDO
97            ENDDO
98           ENDDO
99c
100         ELSE
101           DO iq = 1 , 2
102           DO l  = 1, llm
103             DO ij = 1,ip1jmp1
104              dq(ij,l,iq)  = 0.
105             ENDDO
106           ENDDO
107           ENDDO
108
109         ENDIF
110c
111
112      ENDIF
113
114c
115c  ... On appelle  qminimum uniquement  pour l'eau vapeur et liquide  ..
116 
117      RETURN
118      END
Note: See TracBrowser for help on using the repository browser.