/[lmdze]/trunk/Sources/dyn3d/advtrac.f
ViewVC logotype

Diff of /trunk/Sources/dyn3d/advtrac.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/libf/dyn3d/advtrac.f90 revision 40 by guez, Tue Feb 22 13:49:36 2011 UTC trunk/dyn3d/advtrac.f revision 104 by guez, Thu Sep 4 10:05:52 2014 UTC
# Line 9  contains Line 9  contains
9      ! From dyn3d/advtrac.F, version 1.4 2005/04/13 08:58:34      ! From dyn3d/advtrac.F, version 1.4 2005/04/13 08:58:34
10      ! Author: F. Hourdin      ! Author: F. Hourdin
11    
     USE dimens_m, ONLY : iim, jjm, llm, nqmx  
     USE paramet_m, ONLY : iip1, iip2, ijmllm, ijp1llm, ip1jm, ip1jmp1, jjp1, &  
          llmp1  
12      USE comconst, ONLY : dtvr      USE comconst, ONLY : dtvr
13      USE conf_gcm_m, ONLY : iapp_tracvl      USE conf_gcm_m, ONLY : iapp_tracvl
14        USE dimens_m, ONLY : iim, jjm, llm, nqmx
15      USE iniadvtrac_m, ONLY : iadv      USE iniadvtrac_m, ONLY : iadv
16        use massbar_m, only: massbar
17        USE paramet_m, ONLY : iip1, iip2, ijmllm, ijp1llm, ip1jm, ip1jmp1, jjp1, &
18             llmp1
19    
20      ! Arguments      REAL, intent(in):: pbaru(ip1jmp1, llm), pbarv(ip1jm, llm)
   
     INTEGER iapptrac  
     REAL pbaru(ip1jmp1, llm), pbarv(ip1jm, llm)  
     REAL, intent(inout):: q(ip1jmp1, llm, nqmx)  
     real masse(ip1jmp1, llm)  
21      REAL, intent(in):: p(ip1jmp1, llmp1)      REAL, intent(in):: p(ip1jmp1, llmp1)
22      real teta(ip1jmp1, llm)      real, intent(in):: masse(ip1jmp1, llm)
23      REAL pk(ip1jmp1, llm)      REAL, intent(inout):: q(ip1jmp1, llm, nqmx)
24        INTEGER, intent(out):: iapptrac
25        real, intent(in):: teta(ip1jmp1, llm)
26        REAL, intent(in):: pk(ip1jmp1, llm)
27    
28      ! Variables locales      ! Variables locales
29    
# Line 33  contains Line 32  contains
32      REAL, save:: massem(ip1jmp1, llm)      REAL, save:: massem(ip1jmp1, llm)
33      real zdp(ip1jmp1)      real zdp(ip1jmp1)
34      REAL pbarug(ip1jmp1, llm), pbarvg(ip1jm, llm), wg(ip1jmp1, llm)      REAL pbarug(ip1jmp1, llm), pbarvg(ip1jm, llm), wg(ip1jmp1, llm)
     REAL cpuadv(nqmx)  
35    
36      INTEGER:: iadvtr = 0      INTEGER:: iadvtr = 0
37      INTEGER ij, l, iq      INTEGER ij, l, iq
# Line 72  contains Line 70  contains
70      END DO      END DO
71    
72      ! selection de la masse instantannee des mailles avant le transport.      ! selection de la masse instantannee des mailles avant le transport.
73      IF (iadvtr==0) THEN      IF (iadvtr==0) massem = masse
        CALL scopy(ip1jmp1*llm, masse, 1, massem, 1)  
     END IF  
74    
75      iadvtr = iadvtr + 1      iadvtr = iadvtr + 1
76      iapptrac = iadvtr      iapptrac = iadvtr
77    
78      ! Test pour savoir si on advecte a ce pas de temps      ! Test pour savoir si on advecte a ce pas de temps
79      IF (iadvtr==iapp_tracvl) THEN      IF (iadvtr == iapp_tracvl) THEN
80         ! traitement des flux de masse avant advection.         ! traitement des flux de masse avant advection.
81         ! 1. calcul de w         ! 1. calcul de w
82         ! 2. groupement des mailles pres du pole.         ! 2. groupement des mailles pres du pole.
# Line 127  contains Line 123  contains
123               ! Schema de Frederic Hourdin               ! Schema de Frederic Hourdin
124            ELSE IF (iadv(iq)==12) THEN            ELSE IF (iadv(iq)==12) THEN
125               ! Pas de temps adaptatif               ! Pas de temps adaptatif
126               CALL adaptdt(iadv(iq), dtbon, n, pbarug, massem)               CALL adaptdt(dtbon, n, pbarug, massem)
127               IF (n>1) THEN               IF (n>1) THEN
128                  WRITE (*, *) 'WARNING horizontal dt=', dtbon, 'dtvr=', dtvr, &                  WRITE (*, *) 'WARNING horizontal dt=', dtbon, 'dtvr=', dtvr, &
129                       'n=', n                       'n=', n
# Line 137  contains Line 133  contains
133               END DO               END DO
134            ELSE IF (iadv(iq)==13) THEN            ELSE IF (iadv(iq)==13) THEN
135               ! Pas de temps adaptatif               ! Pas de temps adaptatif
136               CALL adaptdt(iadv(iq), dtbon, n, pbarug, massem)               CALL adaptdt(dtbon, n, pbarug, massem)
137               IF (n>1) THEN               IF (n>1) THEN
138                  WRITE (*, *) 'WARNING horizontal dt=', dtbon, 'dtvr=', dtvr, &                  WRITE (*, *) 'WARNING horizontal dt=', dtbon, 'dtvr=', dtvr, &
139                       'n=', n                       'n=', n
# Line 151  contains Line 147  contains
147               ! Schema de Prather               ! Schema de Prather
148            ELSE IF (iadv(iq)==30) THEN            ELSE IF (iadv(iq)==30) THEN
149               ! Pas de temps adaptatif               ! Pas de temps adaptatif
150               CALL adaptdt(iadv(iq), dtbon, n, pbarug, massem)               CALL adaptdt(dtbon, n, pbarug, massem)
151               IF (n>1) THEN               IF (n>1) THEN
152                  WRITE (*, *) 'WARNING horizontal dt=', dtbon, 'dtvr=', dtvr, &                  WRITE (*, *) 'WARNING horizontal dt=', dtbon, 'dtvr=', dtvr, &
153                       'n=', n                       'n=', n
# Line 161  contains Line 157  contains
157            ELSE IF (iadv(iq)==11 .OR. (iadv(iq)>=16 .AND. iadv(iq)<=18)) THEN            ELSE IF (iadv(iq)==11 .OR. (iadv(iq)>=16 .AND. iadv(iq)<=18)) THEN
158               ! Test sur le flux horizontal               ! Test sur le flux horizontal
159               ! Pas de temps adaptatif               ! Pas de temps adaptatif
160               CALL adaptdt(iadv(iq), dtbon, n, pbarug, massem)               CALL adaptdt(dtbon, n, pbarug, massem)
161               IF (n>1) THEN               IF (n>1) THEN
162                  WRITE (*, *) 'WARNING horizontal dt=', dtbon, 'dtvr=', dtvr, &                  WRITE (*, *) 'WARNING horizontal dt=', dtbon, 'dtvr=', dtvr, &
163                       'n=', n                       'n=', n

Legend:
Removed from v.40  
changed lines
  Added in v.104

  ViewVC Help
Powered by ViewVC 1.1.21