source: LMDZ.3.3/tags/IPSL-CM4_IPCC/libf/dyn3d/addfi.F @ 601

Last change on this file since 601 was 601, checked in by (none), 19 years ago

This commit was manufactured by cvs2svn to create tag
'IPSL-CM4_IPCC'.

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 3.9 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      DO  k    = 1, llm
85       DO  ij   = 1, iim
86         xpn(ij) = aire(   ij   ) * pteta(  ij    ,k)
87         xps(ij) = aire(ij+ip1jm) * pteta(ij+ip1jm,k)
88       ENDDO
89       tpn      = SSUM(iim,xpn,1)/ apoln
90       tps      = SSUM(iim,xps,1)/ apols
91
92       DO ij   = 1, iip1
93         pteta(   ij   ,k)  = tpn
94         pteta(ij+ip1jm,k)  = tps
95       ENDDO
96      ENDDO
97c
98
99      DO k = 1,llm
100         DO j = iip2,ip1jm
101            pucov(j,k)= pucov(j,k) + pdufi(j,k) * pdt
102         ENDDO
103      ENDDO
104
105      DO k = 1,llm
106         DO j = 1,ip1jm
107            pvcov(j,k)= pvcov(j,k) + pdvfi(j,k) * pdt
108         ENDDO
109      ENDDO
110
111c
112      DO j = 1,ip1jmp1
113         pps(j) = pps(j) + pdpfi(j) * pdt
114      ENDDO
115 
116      DO iq = 1, 2
117         DO k = 1,llm
118            DO j = 1,ip1jmp1
119               pq(j,k,iq)= pq(j,k,iq) + pdqfi(j,k,iq) * pdt
120               pq(j,k,iq)= AMAX1( pq(j,k,iq), qtestw )
121            ENDDO
122         ENDDO
123      ENDDO
124
125      DO iq = 3, nq
126         DO k = 1,llm
127            DO j = 1,ip1jmp1
128               pq(j,k,iq)= pq(j,k,iq) + pdqfi(j,k,iq) * pdt
129               pq(j,k,iq)= AMAX1( pq(j,k,iq), qtestt )
130            ENDDO
131         ENDDO
132      ENDDO
133
134
135      DO  ij   = 1, iim
136        xpn(ij) = aire(   ij   ) * pps(  ij     )
137        xps(ij) = aire(ij+ip1jm) * pps(ij+ip1jm )
138      ENDDO
139      tpn      = SSUM(iim,xpn,1)/apoln
140      tps      = SSUM(iim,xps,1)/apols
141
142      DO ij   = 1, iip1
143        pps (   ij     )  = tpn
144        pps ( ij+ip1jm )  = tps
145      ENDDO
146
147
148      DO iq = 1, nq
149        DO  k    = 1, llm
150          DO  ij   = 1, iim
151            xpn(ij) = aire(   ij   ) * pq(  ij    ,k,iq)
152            xps(ij) = aire(ij+ip1jm) * pq(ij+ip1jm,k,iq)
153          ENDDO
154          tpn      = SSUM(iim,xpn,1)/apoln
155          tps      = SSUM(iim,xps,1)/apols
156
157          DO ij   = 1, iip1
158            pq (   ij   ,k,iq)  = tpn
159            pq (ij+ip1jm,k,iq)  = tps
160          ENDDO
161        ENDDO
162      ENDDO
163
164      RETURN
165      END
Note: See TracBrowser for help on using the repository browser.