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

Last change on this file since 6 was 6, checked in by slebonnois, 14 years ago

cf commit_v6.log :

  • manipulation traceurs
  • homogeneisation .def
  • bilan_dyn
  • etats initiaux start.nc
  • appels specifiques pour physique
File size: 3.2 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      IF (planet_type.eq."earth") THEN
55! Earth-specific treatment of first 2 tracers (water)
56
57        CALL SCOPY( 2 * ijp1llm, q, 1, dq, 1 )
58
59c  test des valeurs minmax
60cc        CALL minmaxq(q(1,1,1),1.e33,-1.e33,'Eau vapeur (a) ')
61cc        CALL minmaxq(q(1,1,2),1.e33,-1.e33,'Eau liquide(a) ')
62
63c   advection
64
65        CALL advtrac( pbaru,pbarv,
66     *       p,  masse,q,iapptrac, teta,
67     .       flxw, pk)
68c
69
70         IF( iapptrac.EQ.iapp_tracvl ) THEN
71c
72cc          CALL minmaxq(q(1,1,1),1.e33,-1.e33,'Eau vapeur     ')
73cc          CALL minmaxq(q(1,1,2),1.e33,-1.e33,'Eau liquide    ')
74
75cc     ....  Calcul  de deltap  qu'on stocke dans finmasse   ...
76c
77          DO l = 1, llm
78           DO ij = 1, ip1jmp1
79             finmasse(ij,l) =  p(ij,l) - p(ij,l+1)
80           ENDDO
81          ENDDO
82         
83          CALL qminimum( q, 2, finmasse )
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 ! iapptrac VS iapp_tracvl
113
114      ELSE ! not Earth
115
116c   advection
117
118        CALL advtrac( pbaru,pbarv,
119     *       p,  masse,q,iapptrac, teta,
120     .       flxw, pk)
121c
122
123      ENDIF ! planet_type
124
125c
126
127c  ... On appelle  qminimum uniquement  pour l'eau vapeur et liquide  ..
128
129 
130      RETURN
131      END
132
133
Note: See TracBrowser for help on using the repository browser.