source: LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/trconvect.F

Last change on this file was 2175, checked in by jescribano, 10 years ago

SPLA code included for first time

File size: 3.6 KB
RevLine 
[2175]1c Subroutine that computes the convective mixing and transport
2      SUBROUTINE trconvect(pplay,t_seri,pdtphys,pmfu,pmfd,pen_u,pde_u,
3     .          pen_d,pde_d,paprs,zdz,xconv,qmin,qmax,lminmax,masse,
4     .                                                dtrconv,tr_seri)
5
6      USE dimphy
7      USE infotrac
8      USE indice_sol_mod
9
10      IMPLICIT NONE
11
12#include "dimensions.h"
13#include "chem.h"
14#include "../phylmd/YOMCST.h"
15c #include "../phylmd/dimphy.h"
16c #include "../phylmd/indicesol.h"
17#include "paramet.h"
18
19c============================= INPUT ===================================
20      REAL qmin, qmax
21      REAL xconv(nbtr), masse(nbtr)
22      REAL pplay(klon,klev)    ! pression pour le mileu de chaque couche (en Pa)
23      REAL t_seri(klon,klev)   ! temperature       
24      REAL zdz(klon,klev)      ! zdz
25      REAL paprs(klon,klev+1)  ! pression pour chaque inter-couche (en Pa)
26      REAL pmfu(klon,klev)     ! flux de masse dans le panache montant
27      REAL pmfd(klon,klev)     ! flux de masse dans le panache descendant
28      REAL pen_u(klon,klev)    ! flux entraine dans le panache montant
29      REAL pde_u(klon,klev)    ! flux detraine dans le panache montant
30      REAL pen_d(klon,klev)    ! flux entraine dans le panache descendant
31      REAL pde_d(klon,klev)    ! flux detraine dans le panache descendant 
32      LOGICAL lminmax
33      REAL pdtphys
34c============================= OUTPUT ==================================
35      REAL aux_var1(klon,klev)
36      REAL aux_var2(klon,klev)
37      REAL tr_seri(klon,klev,nbtr) ! traceur
38      REAL dtrconv(klon,nbtr) ! traceur
39c========================= LOCAL VARIABLES =============================
40      INTEGER it, k, i, j
41      REAL d_tr(klon,klev,nbtr)
42
43      EXTERNAL nflxtr, tiedqneg, minmaxqfi
44     
45      DO it=1, nbtr
46c
47      DO i=1, klon
48        dtrconv(i,it)=0.0
49      ENDDO
50      DO i=1,klon
51      DO j=1,klev
52        aux_var1(i,j)=tr_seri(i,j,it)
53        aux_var2(i,j)=d_tr(i,j,it)
54      ENDDO
55      ENDDO
56                                                 
57c
58cnhl      CALL nflxtr(pdtphys, pmfu, pmfd, pen_u, pde_u, pen_d, pde_d,
59cnhl     .            pplay, paprs, tr_seri(1,1,it), d_tr(1,1,it) )
60      CALL nflxtr(pdtphys, pmfu, pmfd, pen_u, pde_u, pen_d, pde_d,
61     .            pplay, paprs, aux_var1, aux_var2 )
62c
63      CALL tiedqneg(paprs,aux_var1, aux_var2)
64cnhl      CALL tiedqneg(paprs,tr_seri(1,1,it), d_tr(1,1,it))
65      DO i=1,klon
66      DO j=1,klev
67        tr_seri(i,j,it)=aux_var1(i,j)
68        d_tr(i,j,it)=aux_var2(i,j)
69      ENDDO
70      ENDDO
71c
72      DO k = 1, klev
73      DO i = 1, klon
74        IF (d_tr(i,k,it).LT.0.) THEN
75          tr_seri(i,k,it)=tr_seri(i,k,it)+d_tr(i,k,it)
76        ELSE
77          tr_seri(i,k,it)=tr_seri(i,k,it)+d_tr(i,k,it)*xconv(it)
78        ENDIF
79      ENDDO
80      ENDDO
81c
82cnhl      CALL kg_to_cm3(pplay,t_seri,d_tr(1,1,it))
83      CALL kg_to_cm3(pplay,t_seri,aux_var2)
84      DO i=1,klon
85      DO j=1,klev
86        d_tr(i,j,it)=aux_var2(i,j)
87      ENDDO
88      ENDDO
89
90      DO k = 1, klev
91      DO i = 1, klon
92        IF (d_tr(i,k,it).GE.0.) THEN
93        dtrconv(i,it)=dtrconv(i,it)+(1.-xconv(it))*d_tr(i,k,it)
94     .                /RNAVO*masse(it)*1.e3*1.e6*zdz(i,k)/pdtphys
95        ENDIF
96      ENDDO
97      ENDDO
98
99      IF (lminmax) THEN
100        DO i=1,klon
101        DO j=1,klev
102          aux_var1(i,j)=tr_seri(i,j,it)
103        ENDDO
104        ENDDO
105        CALL minmaxqfi(aux_var1,qmin,qmax,'apr convection')
106cnhl      CALL minmaxqfi(tr_seri(1,1,it),qmin,qmax,'apr convection')
107        DO i=1,klon
108        DO j=1,klev
109          tr_seri(i,j,it)=aux_var1(i,j)
110        ENDDO
111        ENDDO
112      ENDIF
113c
114      ENDDO
115
116      END
Note: See TracBrowser for help on using the repository browser.