LMDZ
caladvtrac.F
Go to the documentation of this file.
1 !
2 ! $Id: caladvtrac.F 2286 2015-05-20 13:27:07Z emillour $
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
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 ! CRisi: il faut gĂ©rer tous les traceurs si on veut pouvoir faire des
56 ! isotopes
57 ! dq(:,:,1:2)=q(:,:,1:2)
58  dq(:,:,1:nqtot)=q(:,:,1:nqtot)
59 
60 c test des valeurs minmax
61 cc CALL minmaxq(q(1,1,1),1.e33,-1.e33,'Eau vapeur (a) ')
62 cc CALL minmaxq(q(1,1,2),1.e33,-1.e33,'Eau liquide(a) ')
63  endif ! of if (planet_type.eq."earth")
64 c advection
65 
66  CALL advtrac( pbaru,pbarv,
67  * p, masse,q,iapptrac, teta,
68  . flxw, pk)
69 
70 c
71 
72  IF( iapptrac.EQ.iapp_tracvl ) THEN
73  if (planet_type.eq."earth") then
74 ! Earth-specific treatment for the first 2 tracers (water)
75 c
76 cc CALL minmaxq(q(1,1,1),1.e33,-1.e33,'Eau vapeur ')
77 cc CALL minmaxq(q(1,1,2),1.e33,-1.e33,'Eau liquide ')
78 
79 cc .... Calcul de deltap qu'on stocke dans finmasse ...
80 c
81  DO l = 1, llm
82  DO ij = 1, ip1jmp1
83  finmasse(ij,l) = p(ij,l) - p(ij,l+1)
84  ENDDO
85  ENDDO
86 
87  !write(*,*) 'caladvtrac 87'
88  CALL qminimum( q, nqtot, finmasse )
89  !write(*,*) 'caladvtrac 89'
90 
91  CALL scopy ( ip1jmp1*llm, masse, 1, finmasse, 1 )
92  CALL filtreg ( finmasse , jjp1, llm, -2, 2, .true., 1 )
93 c
94 c ***** Calcul de dq pour l'eau , pour le passer a la physique ******
95 c ********************************************************************
96 c
97  dtvrtrac = iapp_tracvl * dtvr
98 c
99  DO iq = 1 , nqtot
100  DO l = 1 , llm
101  DO ij = 1,ip1jmp1
102  dq(ij,l,iq) = ( q(ij,l,iq) - dq(ij,l,iq) ) * finmasse(ij,l)
103  * / dtvrtrac
104  ENDDO
105  ENDDO
106  ENDDO
107 c
108  endif ! of if (planet_type.eq."earth")
109  ELSE
110  if (planet_type.eq."earth") then
111 ! Earth-specific treatment for the first 2 tracers (water)
112  dq(:,:,1:nqtot)=0.
113  endif ! of if (planet_type.eq."earth")
114  ENDIF ! of IF( iapptrac.EQ.iapp_tracvl )
115 
116  END
117 
118 
integer, save iapp_tracvl
Definition: control_mod.F90:17
!$Header llmm1 INTEGER ip1jmp1
Definition: paramet.h:14
do llm!au dessus on relaxe vers profil init!on fait l hypothese que dans ce il n y a plus d eau liq au dessus!donc la relaxation en thetal et qt devient relaxation en tempe et qv l dq1 relax dq(l, 1)
!$Header llmp1
Definition: paramet.h:14
character(len=10), save planet_type
Definition: control_mod.F90:32
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref dt_toga u_toga vq_toga w_prof vq_prof llm day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice omega_dice tg_prof vg_profd w_profd omega_profd!do llm!print llm l llm
integer, save nqtot
Definition: infotrac.F90:6
subroutine scopy(n, sx, incx, sy, incy)
Definition: cray.F:9
!$Header llmm1 INTEGER ip1jm
Definition: paramet.h:14
!$Header jjp1
Definition: paramet.h:14
subroutine caladvtrac(q, pbaru, pbarv, p, masse, dq, teta, flxw, pk)
Definition: caladvtrac.F:9
subroutine qminimum(q, nqtot, deltap)
Definition: qminimum.F:5
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL true
!$Id mode_top_bound COMMON comconstr dtvr
Definition: comconst.h:7
subroutine filtreg(champ, nlat, nbniv, ifiltre, iaire, griscal, iter)
Definition: filtreg.F:6
subroutine advtrac(pbaru, pbarv, p, masse, q, iapptrac, teta, flxw, pk)
Definition: advtrac.F90:4
subroutine minmaxq(zq, qmin, qmax, comment)
Definition: vlsplt.F:1078