/[MITgcm]/MITgcm/pkg/generic_advdiff/gad_som_adv_r.F
ViewVC logotype

Contents of /MITgcm/pkg/generic_advdiff/gad_som_adv_r.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.9 - (show annotations) (download)
Fri Apr 4 20:29:08 2014 UTC (10 years, 1 month ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64w, checkpoint64v, checkpoint65, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65o, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, HEAD
Changes since 1.8: +2 -2 lines
- Replace ALLOW_AUTODIFF_TAMC by ALLOW_AUTODIFF (except for tape/storage
  which are specific to TAF/TAMC).

1 C $Header: /u/gcmpack/MITgcm/pkg/generic_advdiff/gad_som_adv_r.F,v 1.8 2013/03/02 00:39:47 jmc Exp $
2 C $Name: $
3
4 #include "GAD_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: GAD_SOM_ADV_R
8
9 C !INTERFACE: ==========================================================
10 SUBROUTINE GAD_SOM_ADV_R(
11 I bi,bj,k, kUp, kDw,
12 I deltaTloc, rTrans, maskUp, maskIn,
13 U sm_v, sm_o, sm_x, sm_y, sm_z,
14 U sm_xx, sm_yy, sm_zz, sm_xy, sm_xz, sm_yz,
15 U alp, aln, fp_v, fn_v, fp_o, fn_o,
16 U fp_x, fn_x, fp_y, fn_y, fp_z, fn_z,
17 U fp_xx, fn_xx, fp_yy, fn_yy, fp_zz, fn_zz,
18 U fp_xy, fn_xy, fp_xz, fn_xz, fp_yz, fn_yz,
19 O wT,
20 I myThid )
21
22 C !DESCRIPTION:
23 C Calculates the area integrated vertical flux due to advection
24 C of a tracer using
25 C--
26 C Second-Order Moments Advection of tracer in Z-direction
27 C ref: M.J.Prather, 1986, JGR, 91, D6, pp 6671-6681.
28 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
29 C The 3-D grid has dimension (Nx,Ny,Nz) with corresponding
30 C velocity field (U,V,W). Parallel subroutine calculate
31 C advection in the X- and Y- directions.
32 C The moment [Si] are as defined in the text, Sm refers to
33 C the total mass in each grid box
34 C the moments [Fi] are similarly defined and used as temporary
35 C storage for portions of the grid boxes in transit.
36 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
37
38 C !USES: ===============================================================
39 IMPLICIT NONE
40 #include "SIZE.h"
41 #include "EEPARAMS.h"
42 #include "PARAMS.h"
43 #include "GRID.h"
44 #include "GAD.h"
45
46 C !INPUT PARAMETERS: ===================================================
47 C bi,bj :: tile indices
48 C k :: vertical level
49 C kUp :: index into 2 1/2D array, toggles between 1 and 2
50 C kDw :: index into 2 1/2D array, toggles between 2 and 1
51 C rTrans :: vertical volume transport
52 C maskUp :: 2-D array mask for W points
53 C maskIn :: 2-D array Interior mask
54 C myThid :: my Thread Id. number
55 INTEGER bi,bj,k, kUp, kDw
56 _RL deltaTloc
57 _RL rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
58 _RS maskUp(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
59 _RS maskIn(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
60 INTEGER myThid
61
62 C !OUTPUT PARAMETERS: ==================================================
63 C sm_v :: volume of grid cell
64 C sm_o :: tracer content of grid cell (zero order moment)
65 C sm_x,y,z :: 1rst order moment of tracer distribution, in x,y,z direction
66 C sm_xx,yy,zz :: 2nd order moment of tracer distribution, in x,y,z direction
67 C sm_xy,xz,yz :: 2nd order moment of tracer distr., in cross direction xy,xz,yz
68 C wT :: vertical advective flux
69 _RL sm_v (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
70 _RL sm_o (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
71 _RL sm_x (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
72 _RL sm_y (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
73 _RL sm_z (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
74 _RL sm_xx (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
75 _RL sm_yy (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
76 _RL sm_zz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
77 _RL sm_xy (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
78 _RL sm_xz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
79 _RL sm_yz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
80 _RL alp (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
81 _RL aln (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
82 _RL fp_v (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
83 _RL fn_v (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
84 _RL fp_o (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
85 _RL fn_o (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
86 _RL fp_x (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
87 _RL fn_x (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
88 _RL fp_y (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
89 _RL fn_y (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
90 _RL fp_z (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
91 _RL fn_z (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
92 _RL fp_xx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
93 _RL fn_xx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
94 _RL fp_yy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
95 _RL fn_yy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
96 _RL fp_zz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
97 _RL fn_zz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
98 _RL fp_xy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
99 _RL fn_xy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
100 _RL fp_xz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
101 _RL fn_xz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
102 _RL fp_yz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
103 _RL fn_yz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
104 _RL wT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
105
106 C !LOCAL VARIABLES: ====================================================
107 C i,j :: loop indices
108 C wLoc :: volume transported (per time step)
109 _RL three
110 PARAMETER( three = 3. _d 0 )
111 INTEGER i,j
112 INTEGER km1
113 LOGICAL noFlowAcrossSurf
114 _RL recip_dT
115 _RL wLoc, alf1, alf1q, alpmn
116 _RL alfp, alpq, alp1, locTp
117 _RL alfn, alnq, aln1, locTn
118 CEOP
119
120 #ifdef ALLOW_AUTODIFF
121 alp(1,1,kDw) = alp(1,1,kDw)
122 aln(1,1,kDw) = aln(1,1,kDw)
123 fp_v(1,1,kDw) = fp_v(1,1,kDw)
124 fn_v(1,1,kDw) = fn_v(1,1,kDw)
125 fp_o(1,1,kDw) = fp_o(1,1,kDw)
126 fn_o(1,1,kDw) = fn_o(1,1,kDw)
127 fp_x(1,1,kDw) = fp_x(1,1,kDw)
128 fn_x(1,1,kDw) = fn_x(1,1,kDw)
129 fp_y(1,1,kDw) = fp_y(1,1,kDw)
130 fn_y(1,1,kDw) = fn_y(1,1,kDw)
131 fp_z(1,1,kDw) = fp_z(1,1,kDw)
132 fn_z(1,1,kDw) = fn_z(1,1,kDw)
133 fp_xx(1,1,kDw) = fp_xx(1,1,kDw)
134 fn_xx(1,1,kDw) = fn_xx(1,1,kDw)
135 fp_yy(1,1,kDw) = fp_yy(1,1,kDw)
136 fn_yy(1,1,kDw) = fn_yy(1,1,kDw)
137 fp_zz(1,1,kDw) = fp_zz(1,1,kDw)
138 fn_zz(1,1,kDw) = fn_zz(1,1,kDw)
139 fp_xy(1,1,kDw) = fp_xy(1,1,kDw)
140 fn_xy(1,1,kDw) = fn_xy(1,1,kDw)
141 fp_xz(1,1,kDw) = fp_xz(1,1,kDw)
142 fn_xz(1,1,kDw) = fn_xz(1,1,kDw)
143 fp_yz(1,1,kDw) = fp_yz(1,1,kDw)
144 fn_yz(1,1,kDw) = fn_yz(1,1,kDw)
145 #endif
146
147 recip_dT = zeroRL
148 IF ( deltaTloc.GT.zeroRL ) recip_dT = 1.0 _d 0 / deltaTloc
149 noFlowAcrossSurf = rigidLid .OR. nonlinFreeSurf.GE.1
150 & .OR. select_rStar.NE.0
151
152 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
153 C--- part.1 : calculate flux for all moments
154 DO j=jMinAdvR,jMaxAdvR
155 DO i=iMinAdvR,iMaxAdvR
156 wLoc = rTrans(i,j)*deltaTloc
157 C-- Flux from (k) to (k-1) when W>0 (i.e., take upper side of box k)
158 C- note: Linear free surface case: this takes care of w_surf advection out
159 C of the domain since for this particular case, rTrans is not masked
160 fp_v (i,j,kUp) = MAX( zeroRL, wLoc )
161 alp (i,j,kUp) = fp_v(i,j,kUp)/sm_v(i,j,k)
162 alpq = alp(i,j,kUp)*alp(i,j,kUp)
163 alp1 = 1. _d 0 - alp(i,j,kUp)
164 C- Create temporary moments/masses for partial boxes in transit
165 C use same indexing as velocity, "p" for positive W
166 fp_o (i,j,kUp) = alp(i,j,kUp)*
167 & ( sm_o(i,j, k ) + alp1*sm_z(i,j, k )
168 & + alp1*(alp1-alp(i,j,kUp))*sm_zz(i,j, k )
169 & )
170 fp_z (i,j,kUp) = alpq*
171 & ( sm_z(i,j, k ) + three*alp1*sm_zz(i,j, k ) )
172 fp_zz(i,j,kUp) = alp(i,j,kUp)*alpq*sm_zz(i,j, k )
173 fp_x (i,j,kUp) = alp(i,j,kUp)*
174 & ( sm_x(i,j, k ) + alp1*sm_xz(i,j, k ) )
175 fp_y (i,j,kUp) = alp(i,j,kUp)*
176 & ( sm_y(i,j, k ) + alp1*sm_yz(i,j, k ) )
177 fp_xz(i,j,kUp) = alpq *sm_xz(i,j, k )
178 fp_yz(i,j,kUp) = alpq *sm_yz(i,j, k )
179 fp_xx(i,j,kUp) = alp(i,j,kUp)*sm_xx(i,j, k )
180 fp_yy(i,j,kUp) = alp(i,j,kUp)*sm_yy(i,j, k )
181 fp_xy(i,j,kUp) = alp(i,j,kUp)*sm_xy(i,j, k )
182 ENDDO
183 ENDDO
184 IF ( k.EQ.1 ) THEN
185 C-- Linear free surface, calculate w_surf (<0) advection term
186 km1 = 1
187 DO j=jMinAdvR,jMaxAdvR
188 DO i=iMinAdvR,iMaxAdvR
189 wLoc = rTrans(i,j)*deltaTloc
190 C- Flux from above to (k) when W<0 , surface case:
191 C take box k=1, assuming zero 1rst & 2nd moment in Z dir.
192 fn_v (i,j,kUp) = MAX( zeroRL, -wLoc )
193 aln (i,j,kUp) = fn_v(i,j,kUp)/sm_v(i,j,km1)
194 alnq = aln(i,j,kUp)*aln(i,j,kUp)
195 aln1 = 1. _d 0 - aln(i,j,kUp)
196 C- Create temporary moments/masses for partial boxes in transit
197 C use same indexing as velocity, "n" for negative W
198 fn_o (i,j,kUp) = aln(i,j,kUp)*sm_o(i,j,km1)
199 fn_z (i,j,kUp) = zeroRL
200 fn_zz(i,j,kUp) = zeroRL
201 fn_x (i,j,kUp) = aln(i,j,kUp)*sm_x(i,j,km1)
202 fn_y (i,j,kUp) = aln(i,j,kUp)*sm_y(i,j,km1)
203 fn_xz(i,j,kUp) = zeroRL
204 fn_yz(i,j,kUp) = zeroRL
205 fn_xx(i,j,kUp) = aln(i,j,kUp)*sm_xx(i,j,km1)
206 fn_yy(i,j,kUp) = aln(i,j,kUp)*sm_yy(i,j,km1)
207 fn_xy(i,j,kUp) = aln(i,j,kUp)*sm_xy(i,j,km1)
208 C-- Save zero-order flux:
209 wT(i,j) = ( fp_o(i,j,kUp) - fn_o(i,j,kUp) )*recip_dT
210 ENDDO
211 ENDDO
212 ELSE
213 C-- Interior only: mask rTrans (if not already done)
214 km1 = k-1
215 DO j=jMinAdvR,jMaxAdvR
216 DO i=iMinAdvR,iMaxAdvR
217 wLoc = maskUp(i,j)*rTrans(i,j)*deltaTloc
218 C- Flux from (k-1) to (k) when W<0 (i.e., take lower side of box k-1)
219 fn_v (i,j,kUp) = MAX( zeroRL, -wLoc )
220 aln (i,j,kUp) = fn_v(i,j,kUp)/sm_v(i,j,km1)
221 alnq = aln(i,j,kUp)*aln(i,j,kUp)
222 aln1 = 1. _d 0 - aln(i,j,kUp)
223 C- Create temporary moments/masses for partial boxes in transit
224 C use same indexing as velocity, "n" for negative W
225 fn_o (i,j,kUp) = aln(i,j,kUp)*
226 & ( sm_o(i,j,km1) - aln1*sm_z(i,j,km1)
227 & + aln1*(aln1-aln(i,j,kUp))*sm_zz(i,j,km1)
228 & )
229 fn_z (i,j,kUp) = alnq*
230 & ( sm_z(i,j,km1) - three*aln1*sm_zz(i,j,km1) )
231 fn_zz(i,j,kUp) = aln(i,j,kUp)*alnq*sm_zz(i,j,km1)
232 fn_x (i,j,kUp) = aln(i,j,kUp)*
233 & ( sm_x(i,j,km1) - aln1*sm_xz(i,j,km1) )
234 fn_y (i,j,kUp) = aln(i,j,kUp)*
235 & ( sm_y(i,j,km1) - aln1*sm_yz(i,j,km1) )
236 fn_xz(i,j,kUp) = alnq *sm_xz(i,j,km1)
237 fn_yz(i,j,kUp) = alnq *sm_yz(i,j,km1)
238 fn_xx(i,j,kUp) = aln(i,j,kUp)*sm_xx(i,j,km1)
239 fn_yy(i,j,kUp) = aln(i,j,kUp)*sm_yy(i,j,km1)
240 fn_xy(i,j,kUp) = aln(i,j,kUp)*sm_xy(i,j,km1)
241 C-- Save zero-order flux:
242 wT(i,j) = ( fp_o(i,j,kUp) - fn_o(i,j,kUp) )*recip_dT
243 ENDDO
244 ENDDO
245 C-- end surface/interior cases for W<0 advective fluxes
246 ENDIF
247 IF ( .NOT.uniformFreeSurfLev .AND. k.NE.1 .AND.
248 & .NOT.noFlowAcrossSurf ) THEN
249 C-- Linear free surface, but surface not @ k=1 :
250 C calculate w_surf (<0) advection term from current level
251 C moments assuming zero 1rst & 2nd moment in Z dir. ;
252 C and add to previous fluxes; note: identical to resetting fluxes
253 C since previous fluxes are zero in this case (=> let TAF decide)
254 km1 = k
255 DO j=jMinAdvR,jMaxAdvR
256 DO i=iMinAdvR,iMaxAdvR
257 wLoc = rTrans(i,j)*deltaTloc
258 IF ( k.EQ.kSurfC(i,j,bi,bj) ) THEN
259 C- Flux from (k-1) to (k) when W<0 (special surface case, take box k)
260 fn_v (i,j,kUp) = MAX( zeroRL, -wLoc )
261 aln (i,j,kUp) = fn_v(i,j,kUp)/sm_v(i,j,km1)
262 C- Create temporary moments/masses for partial boxes in transit
263 C use same indexing as velocity, "n" for negative W
264 fn_o (i,j,kUp) = aln(i,j,kUp)*sm_o(i,j,km1)
265 fn_x (i,j,kUp) = aln(i,j,kUp)*sm_x(i,j,km1)
266 fn_y (i,j,kUp) = aln(i,j,kUp)*sm_y(i,j,km1)
267 fn_xx(i,j,kUp) = aln(i,j,kUp)*sm_xx(i,j,km1)
268 fn_yy(i,j,kUp) = aln(i,j,kUp)*sm_yy(i,j,km1)
269 fn_xy(i,j,kUp) = aln(i,j,kUp)*sm_xy(i,j,km1)
270 C-- Save zero-order flux:
271 wT(i,j) = ( fp_o(i,j,kUp) - fn_o(i,j,kUp) )*recip_dT
272 ENDIF
273 ENDDO
274 ENDDO
275 ENDIF
276
277 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
278 C--- part.2 : re-adjust moments remaining in the box
279 C take off from grid box (k): negative W(kDw) and positive W(kUp)
280 DO j=jMinAdvR,jMaxAdvR
281 DO i=iMinAdvR,iMaxAdvR
282 #ifdef ALLOW_OBCS
283 IF ( maskIn(i,j).NE.zeroRS ) THEN
284 #endif /* ALLOW_OBCS */
285 alf1 = 1. _d 0 - aln(i,j,kDw) - alp(i,j,kUp)
286 alf1q = alf1*alf1
287 alpmn = alp(i,j,kUp) - aln(i,j,kDw)
288 sm_v (i,j,k) = sm_v (i,j,k) - fn_v (i,j,kDw) - fp_v (i,j,kUp)
289 sm_o (i,j,k) = sm_o (i,j,k) - fn_o (i,j,kDw) - fp_o (i,j,kUp)
290 sm_z (i,j,k) = alf1q*( sm_z(i,j,k) - three*alpmn*sm_zz(i,j,k) )
291 sm_zz(i,j,k) = alf1*alf1q*sm_zz(i,j,k)
292 sm_xz(i,j,k) = alf1q*sm_xz(i,j,k)
293 sm_yz(i,j,k) = alf1q*sm_yz(i,j,k)
294 sm_x (i,j,k) = sm_x (i,j,k) - fn_x (i,j,kDw) - fp_x (i,j,kUp)
295 sm_xx(i,j,k) = sm_xx(i,j,k) - fn_xx(i,j,kDw) - fp_xx(i,j,kUp)
296 sm_y (i,j,k) = sm_y (i,j,k) - fn_y (i,j,kDw) - fp_y (i,j,kUp)
297 sm_yy(i,j,k) = sm_yy(i,j,k) - fn_yy(i,j,kDw) - fp_yy(i,j,kUp)
298 sm_xy(i,j,k) = sm_xy(i,j,k) - fn_xy(i,j,kDw) - fp_xy(i,j,kUp)
299 #ifdef ALLOW_OBCS
300 ENDIF
301 #endif /* ALLOW_OBCS */
302 ENDDO
303 ENDDO
304
305 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
306 C--- part.3 : Put the temporary moments into appropriate neighboring boxes
307 C add into grid box (k): positive W(kDw) and negative W(kUp)
308 DO j=jMinAdvR,jMaxAdvR
309 DO i=iMinAdvR,iMaxAdvR
310 #ifdef ALLOW_OBCS
311 IF ( maskIn(i,j).NE.zeroRS ) THEN
312 #endif /* ALLOW_OBCS */
313 sm_v (i,j,k) = sm_v (i,j,k) + fp_v (i,j,kDw) + fn_v (i,j,kUp)
314 alfp = fp_v(i,j,kDw)/sm_v(i,j,k)
315 alfn = fn_v(i,j,kUp)/sm_v(i,j,k)
316 alf1 = 1. _d 0 - alfp - alfn
317 alp1 = 1. _d 0 - alfp
318 aln1 = 1. _d 0 - alfn
319 alpmn = alfp - alfn
320 locTp = alfp*sm_o(i,j,k) - alp1*fp_o(i,j,kDw)
321 locTn = alfn*sm_o(i,j,k) - aln1*fn_o(i,j,kUp)
322 sm_zz(i,j,k) = alf1*alf1*sm_zz(i,j,k) + alfp*alfp*fp_zz(i,j,kDw)
323 & + alfn*alfn*fn_zz(i,j,kUp)
324 & - 5. _d 0*(-alpmn*alf1*sm_z(i,j,k) + alfp*alp1*fp_z(i,j,kDw)
325 & - alfn*aln1*fn_z(i,j,kUp)
326 & + twoRL*alfp*alfn*sm_o(i,j,k) + (alp1-alfp)*locTp
327 & + (aln1-alfn)*locTn
328 & )
329 sm_xz(i,j,k) = alf1*sm_xz(i,j,k) + alfp*fp_xz(i,j,kDw)
330 & + alfn*fn_xz(i,j,kUp)
331 & + three*( alpmn*sm_x(i,j,k) - alp1*fp_x(i,j,kDw)
332 & + aln1*fn_x(i,j,kUp)
333 & )
334 sm_yz(i,j,k) = alf1*sm_yz(i,j,k) + alfp*fp_yz(i,j,kDw)
335 & + alfn*fn_yz(i,j,kUp)
336 & + three*( alpmn*sm_y(i,j,k) - alp1*fp_y(i,j,kDw)
337 & + aln1*fn_y(i,j,kUp)
338 & )
339 sm_z (i,j,k) = alf1*sm_z(i,j,k) + alfp*fp_z(i,j,kDw)
340 & + alfn*fn_z(i,j,kUp)
341 & + three*( locTp - locTn )
342 sm_o (i,j,k) = sm_o (i,j,k) + fp_o (i,j,kDw) + fn_o (i,j,kUp)
343 sm_x (i,j,k) = sm_x (i,j,k) + fp_x (i,j,kDw) + fn_x (i,j,kUp)
344 sm_xx(i,j,k) = sm_xx(i,j,k) + fp_xx(i,j,kDw) + fn_xx(i,j,kUp)
345 sm_y (i,j,k) = sm_y (i,j,k) + fp_y (i,j,kDw) + fn_y (i,j,kUp)
346 sm_yy(i,j,k) = sm_yy(i,j,k) + fp_yy(i,j,kDw) + fn_yy(i,j,kUp)
347 sm_xy(i,j,k) = sm_xy(i,j,k) + fp_xy(i,j,kDw) + fn_xy(i,j,kUp)
348 #ifdef ALLOW_OBCS
349 ENDIF
350 #endif /* ALLOW_OBCS */
351 ENDDO
352 ENDDO
353
354 RETURN
355 END

  ViewVC Help
Powered by ViewVC 1.1.22