source: LMDZ.3.3/trunk/libf/dyn3d/addfi.F @ 21

Last change on this file since 21 was 21, checked in by lmdz, 24 years ago

Modif sur le qtest D. Hauglustaine

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 4.1 KB
Line 
1      SUBROUTINE addfi(nq, pdt, leapf, forward,
2     S          pucov, pvcov, pteta, pq   , pps ,
3     S          pdufi, pdvfi, pdhfi,pdqfi, pdpfi  )
4      IMPLICIT NONE
5c
6c=======================================================================
7c
8c    Addition of the physical tendencies
9c
10c    Interface :
11c    -----------
12c
13c      Input :
14c      -------
15c      pdt                    time step of integration
16c      leapf                  logical
17c      forward                logical
18c      pucov(ip1jmp1,llm)     first component of the covariant velocity
19c      pvcov(ip1ip1jm,llm)    second component of the covariant velocity
20c      pteta(ip1jmp1,llm)     potential temperature
21c      pts(ip1jmp1,llm)       surface temperature
22c      pdufi(ip1jmp1,llm)     |
23c      pdvfi(ip1jm,llm)       |   respective
24c      pdhfi(ip1jmp1)         |      tendencies
25c      pdtsfi(ip1jmp1)        |
26c
27c      Output :
28c      --------
29c      pucov
30c      pvcov
31c      ph
32c      pts
33c
34c
35c=======================================================================
36c
37c-----------------------------------------------------------------------
38c
39c    0.  Declarations :
40c    ------------------
41c
42#include "dimensions.h"
43#include "paramet.h"
44#include "comconst.h"
45#include "comgeom.h"
46#include "serre.h"
47c
48c    Arguments :
49c    -----------
50c
51      INTEGER nq
52
53      REAL pdt
54c
55      REAL pvcov(ip1jm,llm),pucov(ip1jmp1,llm)
56      REAL pteta(ip1jmp1,llm),pq(ip1jmp1,llm,nq),pps(ip1jmp1)
57c
58      REAL pdvfi(ip1jm,llm),pdufi(ip1jmp1,llm)
59      REAL pdqfi(ip1jmp1,llm,nq),pdhfi(ip1jmp1,llm),pdpfi(ip1jmp1)
60c
61      LOGICAL leapf,forward
62c
63c
64c    Local variables :
65c    -----------------
66c
67      REAL xpn(iim),xps(iim),tpn,tps
68      INTEGER j,k,iq,ij
69      REAL qtestw, qtestt
70      PARAMETER ( qtestw = 1.0e-15 )
71      PARAMETER ( qtestt = 1.0e-40 )
72
73      REAL SSUM
74      EXTERNAL SSUM
75c
76c-----------------------------------------------------------------------
77
78      DO k = 1,llm
79         DO j = 1,ip1jmp1
80            pteta(j,k)= pteta(j,k) + pdhfi(j,k) * pdt
81         ENDDO
82      ENDDO
83
84      IF( alphax.NE.0. )   THEN
85        DO  k    = 1, llm
86         DO  ij   = 1, iim
87          xpn(ij) = aire(   ij   ) * pteta(  ij    ,k)
88          xps(ij) = aire(ij+ip1jm) * pteta(ij+ip1jm,k)
89         ENDDO
90          tpn      = SSUM(iim,xpn,1)/ apoln
91          tps      = SSUM(iim,xps,1)/ apols
92
93         DO ij   = 1, iip1
94          pteta(   ij   ,k)  = tpn
95          pteta(ij+ip1jm,k)  = tps
96         ENDDO
97        ENDDO
98      ENDIF
99c
100
101      DO k = 1,llm
102         DO j = iip2,ip1jm
103            pucov(j,k)= pucov(j,k) + pdufi(j,k) * pdt
104         ENDDO
105      ENDDO
106
107      DO k = 1,llm
108         DO j = 1,ip1jm
109            pvcov(j,k)= pvcov(j,k) + pdvfi(j,k) * pdt
110         ENDDO
111      ENDDO
112
113c
114      DO j = 1,ip1jmp1
115         pps(j) = pps(j) + pdpfi(j) * pdt
116      ENDDO
117 
118      DO iq = 1, 2
119         DO k = 1,llm
120            DO j = 1,ip1jmp1
121               pq(j,k,iq)= pq(j,k,iq) + pdqfi(j,k,iq) * pdt
122               pq(j,k,iq)= AMAX1( pq(j,k,iq), qtestw )
123            ENDDO
124         ENDDO
125      ENDDO
126
127      DO iq = 3, nq
128         DO k = 1,llm
129            DO j = 1,ip1jmp1
130               pq(j,k,iq)= pq(j,k,iq) + pdqfi(j,k,iq) * pdt
131               pq(j,k,iq)= AMAX1( pq(j,k,iq), qtestt )
132            ENDDO
133         ENDDO
134      ENDDO
135
136      IF( alphax.NE.0. )   THEN
137
138         DO  ij   = 1, iim
139          xpn(ij) = aire(   ij   ) * pps(  ij     )
140          xps(ij) = aire(ij+ip1jm) * pps(ij+ip1jm )
141         ENDDO
142          tpn      = SSUM(iim,xpn,1)/apoln
143          tps      = SSUM(iim,xps,1)/apols
144
145         DO ij   = 1, iip1
146          pps (   ij     )  = tpn
147          pps ( ij+ip1jm )  = tps
148         ENDDO
149
150
151       DO iq = 1, nq
152         DO  k    = 1, llm
153           DO  ij   = 1, iim
154            xpn(ij) = aire(   ij   ) * pq(  ij    ,k,iq)
155            xps(ij) = aire(ij+ip1jm) * pq(ij+ip1jm,k,iq)
156           ENDDO
157            tpn      = SSUM(iim,xpn,1)/apoln
158            tps      = SSUM(iim,xps,1)/apols
159
160           DO ij   = 1, iip1
161            pq (   ij   ,k,iq)  = tpn
162            pq (ij+ip1jm,k,iq)  = tps
163           ENDDO
164         ENDDO
165       ENDDO
166
167      ENDIF
168
169
170      RETURN
171      END
Note: See TracBrowser for help on using the repository browser.