source: trunk/libf/dyn3d/caladvtrac.F @ 1

Last change on this file since 1 was 1, checked in by emillour, 14 years ago

Import initial LMDZ5

File size: 3.0 KB
Line 
1!
2! $Id: caladvtrac.F 1403 2010-07-01 09:02:53Z fairhead $
3!
4c
5c
6            SUBROUTINE caladvtrac(q,pbaru,pbarv ,
7     *                   p ,masse, dq ,  teta,
8     *                   flxw, pk)
9c
10      USE infotrac
11      USE control_mod
12 
13      IMPLICIT NONE
14c
15c     Auteurs:   F.Hourdin , P.Le Van, F.Forget, F.Codron 
16c
17c     F.Codron (10/99) : ajout humidite specifique pour eau vapeur
18c=======================================================================
19c
20c       Shema de  Van Leer
21c
22c=======================================================================
23
24
25#include "dimensions.h"
26#include "paramet.h"
27#include "comconst.h"
28
29c   Arguments:
30c   ----------
31      REAL pbaru( ip1jmp1,llm ),pbarv( ip1jm,llm),masse(ip1jmp1,llm)
32      REAL p( ip1jmp1,llmp1),q( ip1jmp1,llm,nqtot),dq( ip1jmp1,llm,2 )
33      REAL teta( ip1jmp1,llm),pk( ip1jmp1,llm)
34      REAL               :: flxw(ip1jmp1,llm)
35
36c  ..................................................................
37c
38c  .. dq n'est utilise et dimensionne que pour l'eau  vapeur et liqu.
39c
40c  ..................................................................
41c
42c   Local:
43c   ------
44
45      EXTERNAL  advtrac,minmaxq, qminimum
46      INTEGER ij,l, iq, iapptrac
47      REAL finmasse(ip1jmp1,llm), dtvrtrac
48
49cc
50c
51C initialisation
52        dq = 0.
53
54        CALL SCOPY( 2 * ijp1llm, q, 1, dq, 1 )
55
56c  test des valeurs minmax
57cc        CALL minmaxq(q(1,1,1),1.e33,-1.e33,'Eau vapeur (a) ')
58cc        CALL minmaxq(q(1,1,2),1.e33,-1.e33,'Eau liquide(a) ')
59
60c   advection
61
62        CALL advtrac( pbaru,pbarv,
63     *       p,  masse,q,iapptrac, teta,
64     .       flxw, pk)
65c
66
67         IF( iapptrac.EQ.iapp_tracvl ) THEN
68c
69cc          CALL minmaxq(q(1,1,1),1.e33,-1.e33,'Eau vapeur     ')
70cc          CALL minmaxq(q(1,1,2),1.e33,-1.e33,'Eau liquide    ')
71
72cc     ....  Calcul  de deltap  qu'on stocke dans finmasse   ...
73c
74          DO l = 1, llm
75           DO ij = 1, ip1jmp1
76             finmasse(ij,l) =  p(ij,l) - p(ij,l+1)
77           ENDDO
78          ENDDO
79         
80          if (planet_type.eq."earth") then
81! Earth-specific treatment of first 2 tracers (water)
82            CALL qminimum( q, 2, finmasse )
83          endif
84
85          CALL SCOPY   ( ip1jmp1*llm, masse, 1, finmasse,       1 )
86          CALL filtreg ( finmasse ,  jjp1,  llm, -2, 2, .TRUE., 1 )
87c
88c   *****  Calcul de dq pour l'eau , pour le passer a la physique ******
89c   ********************************************************************
90c
91          dtvrtrac = iapp_tracvl * dtvr
92c
93           DO iq = 1 , 2
94            DO l = 1 , llm
95             DO ij = 1,ip1jmp1
96             dq(ij,l,iq) = ( q(ij,l,iq) - dq(ij,l,iq) ) * finmasse(ij,l)
97     *                               /  dtvrtrac
98             ENDDO
99            ENDDO
100           ENDDO
101c
102         ELSE
103           DO iq = 1 , 2
104           DO l  = 1, llm
105             DO ij = 1,ip1jmp1
106              dq(ij,l,iq)  = 0.
107             ENDDO
108           ENDDO
109           ENDDO
110
111
112         ENDIF
113
114c
115
116c  ... On appelle  qminimum uniquement  pour l'eau vapeur et liquide  ..
117
118 
119      RETURN
120      END
121
122
Note: See TracBrowser for help on using the repository browser.