/[lmdze]/trunk/dyn3d/addfi.f
ViewVC logotype

Contents of /trunk/dyn3d/addfi.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 37 - (show annotations)
Tue Dec 21 15:45:48 2010 UTC (13 years, 5 months ago) by guez
Original Path: trunk/libf/dyn3d/addfi.f90
File size: 3499 byte(s)
Inlined procedure "pression".

Split "guide.f90" into "guide.f90" and "tau2alpha.f90". Split
"read_reanalyse.f" into single-procedure files in directory
"Read_reanalyse".

Useless copy of variables in "iniphysiq". Directly define module
variables in "gcm" and remove procedure "iniphysiq".

Added "pressure-altitude" in "test_disvert".

1 module addfi_m
2
3 IMPLICIT NONE
4
5 contains
6
7 SUBROUTINE addfi(nq, pdt, pucov, pvcov, pteta, pq, pps, pdufi, pdvfi, pdhfi,&
8 pdqfi, pdpfi)
9
10 ! From dyn3d/addfi.F,v 1.1.1.1 2004/05/19 12:53:06
11
12 ! Addition of the physical tendencies
13
14 ! Interface :
15
16 ! Input :
17
18 ! pdt time step of integration
19 ! pucov(ip1jmp1,llm) first component of the covariant velocity
20 ! pvcov(ip1ip1jm,llm) second component of the covariant velocity
21 ! pteta(ip1jmp1,llm) potential temperature
22 ! pts(ip1jmp1,llm) surface temperature
23 ! pdufi(ip1jmp1,llm) |
24 ! pdvfi(ip1jm,llm) | respective
25 ! pdhfi(ip1jmp1) | tendencies
26 ! pdtsfi(ip1jmp1) |
27
28 ! Output :
29
30 ! pucov
31 ! pvcov
32 ! ph
33 ! pts
34
35 use dimens_m
36 use paramet_m
37 use comconst
38 use comgeom
39 use serre
40
41 ! Arguments :
42
43 INTEGER nq
44
45 REAL pdt
46
47 REAL pvcov(ip1jm,llm),pucov(ip1jmp1,llm)
48 REAL pteta(ip1jmp1,llm),pq(ip1jmp1,llm,nq),pps(ip1jmp1)
49
50 REAL pdvfi(ip1jm,llm),pdufi(ip1jmp1,llm)
51 REAL pdqfi(ip1jmp1,llm,nq),pdhfi(ip1jmp1,llm),pdpfi(ip1jmp1)
52
53 ! Local variables :
54
55 REAL xpn(iim),xps(iim),tpn,tps
56 INTEGER j,k,iq,ij
57 REAL qtestw, qtestt
58 PARAMETER ( qtestw = 1.0e-15 )
59 PARAMETER ( qtestt = 1.0e-40 )
60
61 REAL SSUM
62
63 !-----------------------------------------------------------------------
64
65 DO k = 1,llm
66 DO j = 1,ip1jmp1
67 pteta(j,k)= pteta(j,k) + pdhfi(j,k) * pdt
68 ENDDO
69 ENDDO
70
71 DO k = 1, llm
72 DO ij = 1, iim
73 xpn(ij) = aire( ij ) * pteta( ij ,k)
74 xps(ij) = aire(ij+ip1jm) * pteta(ij+ip1jm,k)
75 ENDDO
76 tpn = SSUM(iim,xpn,1)/ apoln
77 tps = SSUM(iim,xps,1)/ apols
78
79 DO ij = 1, iip1
80 pteta( ij ,k) = tpn
81 pteta(ij+ip1jm,k) = tps
82 ENDDO
83 ENDDO
84
85 DO k = 1,llm
86 DO j = iip2,ip1jm
87 pucov(j,k)= pucov(j,k) + pdufi(j,k) * pdt
88 ENDDO
89 ENDDO
90
91 DO k = 1,llm
92 DO j = 1,ip1jm
93 pvcov(j,k)= pvcov(j,k) + pdvfi(j,k) * pdt
94 ENDDO
95 ENDDO
96
97 DO j = 1,ip1jmp1
98 pps(j) = pps(j) + pdpfi(j) * pdt
99 ENDDO
100
101 DO iq = 1, 2
102 DO k = 1,llm
103 DO j = 1,ip1jmp1
104 pq(j,k,iq)= pq(j,k,iq) + pdqfi(j,k,iq) * pdt
105 pq(j,k,iq)= AMAX1( pq(j,k,iq), qtestw )
106 ENDDO
107 ENDDO
108 ENDDO
109
110 DO iq = 3, nq
111 DO k = 1,llm
112 DO j = 1,ip1jmp1
113 pq(j,k,iq)= pq(j,k,iq) + pdqfi(j,k,iq) * pdt
114 pq(j,k,iq)= AMAX1( pq(j,k,iq), qtestt )
115 ENDDO
116 ENDDO
117 ENDDO
118
119 DO ij = 1, iim
120 xpn(ij) = aire( ij ) * pps( ij )
121 xps(ij) = aire(ij+ip1jm) * pps(ij+ip1jm )
122 ENDDO
123 tpn = SSUM(iim,xpn,1)/apoln
124 tps = SSUM(iim,xps,1)/apols
125
126 DO ij = 1, iip1
127 pps ( ij ) = tpn
128 pps ( ij+ip1jm ) = tps
129 ENDDO
130
131 DO iq = 1, nq
132 DO k = 1, llm
133 DO ij = 1, iim
134 xpn(ij) = aire( ij ) * pq( ij ,k,iq)
135 xps(ij) = aire(ij+ip1jm) * pq(ij+ip1jm,k,iq)
136 ENDDO
137 tpn = SSUM(iim,xpn,1)/apoln
138 tps = SSUM(iim,xps,1)/apols
139
140 DO ij = 1, iip1
141 pq ( ij ,k,iq) = tpn
142 pq (ij+ip1jm,k,iq) = tps
143 ENDDO
144 ENDDO
145 ENDDO
146
147 END SUBROUTINE addfi
148
149 end module addfi_m

  ViewVC Help
Powered by ViewVC 1.1.21