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

Contents of /trunk/dyn3d/addfi.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 44 - (show annotations)
Wed Apr 13 12:29:18 2011 UTC (13 years, 1 month ago) by guez
Original Path: trunk/libf/dyn3d/addfi.f90
File size: 3540 byte(s)
Removed argument "pdteta" of "calfis", because it was not used.

Created module "conf_guide_m", containing procedure
"conf_guide". Moved module variables from "guide_m" to "conf_guide_m".

In module "getparam", removed "ini_getparam" and "fin_getparam" from
generic interface "getpar".

Created module variables in "tau2alpha_m" to replace common "comdxdy".

1 module addfi_m
2
3 IMPLICIT NONE
4
5 contains
6
7 SUBROUTINE addfi(nq, pdt, pucov, pvcov, teta, 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 ! teta(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, intent(inout):: teta(ip1jmp1,llm)
49 real pq(ip1jmp1,llm,nq),pps(ip1jmp1)
50
51 REAL pdvfi(ip1jm,llm),pdufi(ip1jmp1,llm)
52 REAL pdqfi(ip1jmp1,llm,nq), pdpfi(ip1jmp1)
53 real, intent(in):: pdhfi(ip1jmp1,llm)
54
55 ! Local variables :
56
57 REAL xpn(iim),xps(iim),tpn,tps
58 INTEGER j,k,iq,ij
59 REAL qtestw, qtestt
60 PARAMETER ( qtestw = 1.0e-15 )
61 PARAMETER ( qtestt = 1.0e-40 )
62
63 REAL SSUM
64
65 !-----------------------------------------------------------------------
66
67 DO k = 1,llm
68 DO j = 1,ip1jmp1
69 teta(j,k)= teta(j,k) + pdhfi(j,k) * pdt
70 ENDDO
71 ENDDO
72
73 DO k = 1, llm
74 DO ij = 1, iim
75 xpn(ij) = aire( ij ) * teta( ij ,k)
76 xps(ij) = aire(ij+ip1jm) * teta(ij+ip1jm,k)
77 ENDDO
78 tpn = SSUM(iim,xpn,1)/ apoln
79 tps = SSUM(iim,xps,1)/ apols
80
81 DO ij = 1, iip1
82 teta( ij ,k) = tpn
83 teta(ij+ip1jm,k) = tps
84 ENDDO
85 ENDDO
86
87 DO k = 1,llm
88 DO j = iip2,ip1jm
89 pucov(j,k)= pucov(j,k) + pdufi(j,k) * pdt
90 ENDDO
91 ENDDO
92
93 DO k = 1,llm
94 DO j = 1,ip1jm
95 pvcov(j,k)= pvcov(j,k) + pdvfi(j,k) * pdt
96 ENDDO
97 ENDDO
98
99 DO j = 1,ip1jmp1
100 pps(j) = pps(j) + pdpfi(j) * pdt
101 ENDDO
102
103 DO iq = 1, 2
104 DO k = 1,llm
105 DO j = 1,ip1jmp1
106 pq(j,k,iq)= pq(j,k,iq) + pdqfi(j,k,iq) * pdt
107 pq(j,k,iq)= AMAX1( pq(j,k,iq), qtestw )
108 ENDDO
109 ENDDO
110 ENDDO
111
112 DO iq = 3, nq
113 DO k = 1,llm
114 DO j = 1,ip1jmp1
115 pq(j,k,iq)= pq(j,k,iq) + pdqfi(j,k,iq) * pdt
116 pq(j,k,iq)= AMAX1( pq(j,k,iq), qtestt )
117 ENDDO
118 ENDDO
119 ENDDO
120
121 DO ij = 1, iim
122 xpn(ij) = aire( ij ) * pps( ij )
123 xps(ij) = aire(ij+ip1jm) * pps(ij+ip1jm )
124 ENDDO
125 tpn = SSUM(iim,xpn,1)/apoln
126 tps = SSUM(iim,xps,1)/apols
127
128 DO ij = 1, iip1
129 pps ( ij ) = tpn
130 pps ( ij+ip1jm ) = tps
131 ENDDO
132
133 DO iq = 1, nq
134 DO k = 1, llm
135 DO ij = 1, iim
136 xpn(ij) = aire( ij ) * pq( ij ,k,iq)
137 xps(ij) = aire(ij+ip1jm) * pq(ij+ip1jm,k,iq)
138 ENDDO
139 tpn = SSUM(iim,xpn,1)/apoln
140 tps = SSUM(iim,xps,1)/apols
141
142 DO ij = 1, iip1
143 pq ( ij ,k,iq) = tpn
144 pq (ij+ip1jm,k,iq) = tps
145 ENDDO
146 ENDDO
147 ENDDO
148
149 END SUBROUTINE addfi
150
151 end module addfi_m

  ViewVC Help
Powered by ViewVC 1.1.21