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