57
58
59
60#include "implicit_f.inc"
61#include "comlock.inc"
62
63
64
65#include "com01_c.inc"
66#include "com04_c.inc"
67#include "impl1_c.inc"
68#include "param_c.inc"
69#include "task_c.inc"
70#include "sms_c.inc"
71
72
73
74 INTEGER LPRW(*), NPRW(*), FR_WALL(NSPMD+2,*), WEIGHT(*),IRWL_WORK(*), NRWL_SMS(*), IFLAG
75 my_real x(3,*), v(3,*),rwbuf(nrwlp,*),rwsav(*),ms(*),fsav(nthvki,*), fopt(6,*),a(3,*), res(3,*), r(3,*), frea(3,*)
76 DOUBLE PRECISION FRWL6(7,6,NRWALL)
77 DOUBLE PRECISION,INTENT(INOUT) :: WFEXT
78
79
80
81 INTEGER K, N, ITYP, ISL, IFQ, N2, N3, N4, N5,
82
83 isl = 1
84 k=1
85
86
87
88 DO n = 1, nrwall
89 kind(n) = k
90 islind(n) = isl
91
92 n2=n +nrwall
93 n3=n2+nrwall
94 n4=n3+nrwall
95 n5=n4+nrwall
96 n6=n5+nrwall
97
98 k=k+nprw(n)
99 ifq = nint(rwbuf(15,n))
100 IF (ifq>0) isl=isl+nprw(n)*3
101 IF(nprw(n4)==-1)k=k+nint(rwbuf(8,n))
102 END DO
103
104
105 SELECT CASE (iflag)
106
107 CASE(0)
108 ifricw=0
109
111
112
113 DO n=1,nrwall
114 k = kind(n)
115 isl = islind(n)
116
117 n2=n +nrwall
118 n3=n2+nrwall
119 n4=n3+nrwall
120 n5=n4+nrwall
121 n6=n5+nrwall
122 n7=n6+nrwall
123 n8=n7+nrwall
124
125 ityp= nprw(n4)
126
127 nsms= nprw(n7)
128 IF(ityp==1.AND.nsms/=0)THEN
130 + x ,a ,v ,rwbuf(1,n),lprw(k),
131 + nprw(n) ,nprw(n2) ,nprw(n3) ,ms ,weight ,
132 + rwsav(isl),nprw(n8),irwl_work(k),nsms ,nrwl_sms(k))
133 ELSEIF(ityp==2.AND.nsms/=0)THEN
135 + x ,a ,v ,rwbuf(1,n),lprw(k),
136 + nprw(n) ,nprw(n2) ,nprw(n3) ,ms ,weight ,
137 + nprw(n8),irwl_work(k),nsms ,nrwl_sms(k))
138 ELSEIF(ityp==3.AND.nsms/=0)THEN
140 + x ,a ,v ,rwbuf(1,n),lprw(k),
141 + nprw(n) ,nprw(n2) ,nprw(n3) ,ms ,weight ,
142 + nprw(n8),irwl_work(k),nsms ,nrwl_sms(k))
143 ELSEIF(ityp==4.AND.nsms/=0)THEN
145 + x ,a ,v ,rwbuf(1,n),lprw(k),
146 + nprw(n) ,nprw(n2) ,nprw(n3) ,ms ,weight ,
147 + nprw(n8),irwl_work(k),nsms ,nrwl_sms(k))
148 ENDIF
149 END DO
150
151
153
154
155
156 CASE(1)
157
158 DO n=1,nrwall
159 k = kind(n)
160 isl = islind(n)
161
162 n2=n +nrwall
163 n3=n2+nrwall
164 n4=n3+nrwall
165 n5=n4+nrwall
166 n6=n5+nrwall
167 n7=n6+nrwall
168 n8=n7+nrwall
169
170 ityp= nprw(n4)
171
172 nsms= nprw(n7)
173 IF(ityp==1.AND.nsms/=0)THEN
175 + x ,a ,v ,rwbuf(1,n),lprw(k),
176 + nprw(n) ,nprw(n2) ,nprw(n3) ,ms ,weight ,
177 + rwsav(isl),nprw(n8),irwl_work(k),nsms ,nrwl_sms(k))
178 ELSEIF(ityp==2.AND.nsms/=0)THEN
180 + x ,a ,v ,rwbuf(1,n),lprw(k),
181 + nprw(n) ,nprw(n2) ,nprw(n3) ,ms ,weight ,
182 + nprw(n8),irwl_work(k),nsms ,nrwl_sms(k) )
183 ELSEIF(ityp==3.AND.nsms/=0)THEN
185 + x ,a ,v ,rwbuf(1,n),lprw(k),
186 + nprw(n) ,nprw(n2) ,nprw(n3) ,ms ,weight ,
187 + nprw(n8),irwl_work(k),nsms ,nrwl_sms(k))
188 ELSEIF(ityp==4.AND.nsms/=0)THEN
190 + x ,a ,v ,rwbuf(1,n),lprw(k),
191 + nprw(n) ,nprw(n2) ,nprw(n3) ,ms ,weight ,
192 + nprw(n8),irwl_work(k),nsms ,nrwl_sms(k))
193 ENDIF
194 END DO
195
196
197
198 CASE(2)
199
200 DO n=1,nrwall
201 k = kind(n)
202 isl = islind(n)
203
204 n2=n +nrwall
205 n3=n2+nrwall
206 n4=n3+nrwall
207 n5=n4+nrwall
208 n6=n5+nrwall
209 n7=n6+nrwall
210 n8=n7+nrwall
211
212 ityp= nprw(n4)
213
214 nsms= nprw(n7)
215 IF(ityp==1.AND.nsms/=0)THEN
217 + x ,res ,v ,rwbuf(1,n),lprw(k),
218 + nprw(n) ,nprw(n2) ,nprw(n3) ,ms ,weight ,
219 + rwsav(isl),nprw(n8),irwl_work(k),nsms ,nrwl_sms(k))
220 ELSEIF(ityp==2.AND.nsms/=0)THEN
222 + x ,res ,v ,rwbuf(1,n),lprw(k),
223 + nprw(n) ,nprw(n2) ,nprw(n3) ,ms ,weight ,
224 + nprw(n8),irwl_work(k),nsms ,nrwl_sms(k))
225 ELSEIF(ityp==3.AND.nsms/=0)THEN
227 + x ,res ,v ,rwbuf(1,n),lprw(k),
228 + nprw(n) ,nprw(n2) ,nprw(n3) ,ms ,weight ,
229 + nprw(n8),irwl_work(k),nsms , nrwl_sms(k))
230 ELSEIF(ityp==4.AND.nsms/=0)THEN
232 + x ,res ,v ,rwbuf(1,n),lprw(k),
233 + nprw(n) ,nprw(n2) ,nprw(n3) ,ms ,weight ,
234 + nprw(n8),irwl_work(k),nsms ,nrwl_sms(k))
235 ENDIF
236 END DO
237
238
239
240 CASE(3)
241
242 DO n=1,nrwall
243 k = kind(n)
244 isl = islind(n)
245
246 n2=n +nrwall
247 n3=n2+nrwall
248 n4=n3+nrwall
249 n5=n4+nrwall
250 n6=n5+nrwall
251 n7=n6+nrwall
252 n8=n7+nrwall
253
254 ityp= nprw(n4)
255
256 nsms= nprw(n7)
257 IF(ityp==1.AND.nsms/=0)THEN
259 + x ,a ,v ,rwbuf(1,n),lprw(k),
260 + nprw(n) ,nprw(n2) ,nprw(n3) ,ms ,weight ,
261 + rwsav(isl),nprw(n8),irwl_work(k),nsms ,nrwl_sms(k),
262 + fsav(1,n),fopt(1,n),res ,r ,frea )
263 ELSEIF(ityp==2.AND.nsms/=0)THEN
265 + x ,a ,v ,rwbuf(1,n),lprw(k),
266 + nprw(n) ,nprw(n2) ,nprw(n3) ,ms ,weight ,
267 + nprw(n8),irwl_work(k),nsms ,nrwl_sms(k),fsav(1,n),
268 + fopt(1,n),res ,r ,frea )
269 ELSEIF(ityp==3.AND.nsms/=0)THEN
271 + x ,a ,v ,rwbuf(1,n),lprw(k),
272 + nprw(n) ,nprw(n2) ,nprw(n3) ,ms ,weight ,
273 + nprw(n8),irwl_work(k),nsms ,nrwl_sms(k),fsav(1,n),
274 + fopt(1,n),res ,r ,frea )
275 ELSEIF(ityp==4.AND.nsms/=0)THEN
277 + x ,a ,v ,rwbuf(1,n),lprw(k),
278 + nprw(n) ,nprw(n2) ,nprw(n3) ,ms ,weight ,
279 + nprw(n8),irwl_work(k),nsms ,nrwl_sms(k),fsav(1,n),
280 + fopt(1,n),res ,r ,frea )
281 ENDIF
282 END DO
283
284
285
286 CASE(4)
287
288 DO n=1,nrwall
289 k = kind(n)
290 isl = islind(n)
291
292 n2=n +nrwall
293 n3=n2+nrwall
294 n4=n3+nrwall
295 n5=n4+nrwall
296 n6=n5+nrwall
297 n7=n6+nrwall
298 n8=n7+nrwall
299
300 ityp= nprw(n4)
301
302 DO m = 1, 6
303 DO l = 1, 7
304 frwl6(l,m,n) = zero
305 END DO
306 END DO
307
308 nsms= nprw(n7)
309 IF(ityp==1.AND.nsms/=0)THEN
311 + x ,frea ,v ,rwbuf(1,n),lprw(k),
312 + nprw(n) ,nprw(n2) ,nprw(n3) ,ms ,weight ,
313 + rwsav(isl),nprw(n8),irwl_work(k),nsms ,nrwl_sms(k),
314 + fsav(1,n),fopt(1,n),frwl6(1,1,n),a ,wfext)
315 ELSEIF(ityp==2.AND.nsms/=0)THEN
317 + x ,frea ,v ,rwbuf
318 + nprw(n) ,nprw(n2) ,nprw(n3) ,ms ,weight ,
319 + nprw(n8),irwl_work(k),nsms ,nrwl_sms(k),fsav(1,n),
320 + fopt(1,n),frwl6(1,1,n),a ,wfext)
321 ELSEIF(ityp==3.AND.nsms/=0)THEN
323 + x ,frea ,v ,rwbuf(1,n),lprw(k),
324 + nprw(n) ,nprw(n2) ,nprw(n3) ,ms ,weight ,
325 + nprw(n8),irwl_work(k),nsms ,nrwl_sms(k),fsav(1,n),
326 + fopt(1,n),frwl6(1,1,n),a ,wfext)
327 ELSEIF(ityp==4.AND.nsms/=0)THEN
329 + x ,frea ,v ,rwbuf(1,n),lprw(k),
330 + nprw(n) ,nprw(n2) ,nprw(n3) ,ms ,weight ,
331 + nprw(n8),irwl_work(k),nsms ,nrwl_sms(k),fsav(1,n),
332 + fopt(1,n),frwl6(1,1,n),a ,wfext)
333 ENDIF
334 END DO
335
336
337
338
339
340
341
342 IF(imconv == 1) THEN
343 DO n=1,nrwall
344 n2=n +nrwall
345 n3=n2+nrwall
346 n4=n3+nrwall
347 n5=n4+nrwall
348 n6=n5+nrwall
349 IF(nprw(n3) /= 0) THEN
350 IF(nspmd > 1) THEN
351
352 IF(fr_wall(ispmd+1,n)/=0) THEN
354 ENDIF
355 pmain = fr_wall(nspmd+2,n)
356 ELSE
357 pmain = 1
358 ENDIF
359 ELSE
360 pmain = 1
361 END IF
362
364 1 nprw(n3),rwbuf(1,n),frwl6(1,1,n),pmain,fsav(1,n),
365 2 fopt(1,n))
366 END DO
367 END IF
368
369
370
371 END SELECT
372
373 RETURN
subroutine sms_rgwalt(msr, rwl, frwl6, pmain, fsav, fopt)
subroutine sms_rgwalc_impact(x, a, v, rwl, nsw, nsn, itied, msr, ms, weight, nimpact, impact, nsms, nrwl_sms)
subroutine sms_rgwalc_bilan(x, frea, v, rwl, nsw, nsn, itied, msr, ms, weight, nimpact, impact, nsms, nrwl_sms, fsav, fopt, frwl6, a, wfext)
subroutine sms_rgwalc_fric(x, a, v, rwl, nsw, nsn, itied, msr, ms, weight, nimpact, impact, nsms, nrwl_sms, fsav, fopt, res, r, frea)
subroutine sms_rgwalc_bcs_0(x, a, v, rwl, nsw, nsn, itied, msr, ms, weight, nimpact, impact, nsms, nrwl_sms)
subroutine sms_rgwalc_bcs_1(x, a, v, rwl, nsw, nsn, itied, msr, ms, weight, nimpact, impact, nsms, nrwl_sms)
subroutine sms_rgwall_bcs_0(x, a, v, rwl, nsw, nsn, itied, msr, diag_sms, weight, rwsav, nimpact, impact, nsms, nrwl_sms)
subroutine sms_rgwall_bcs_1(x, a, v, rwl, nsw, nsn, itied, msr, ms, weight, rwsav, nimpact, impact, nsms, nrwl_sms)
subroutine sms_rgwall_fric(x, a, v, rwl, nsw, nsn, itied, msr, ms, weight, rwsav, nimpact, impact, nsms, nrwl_sms, fsav, fopt, res, r, frea)
subroutine sms_rgwall_bilan(x, frea, v, rwl, nsw, nsn, itied, msr, ms, weight, rwsav, nimpact, impact, nsms, nrwl_sms, fsav, fopt, frwl6, a, wfext)
subroutine sms_rgwall_impact(x, a, v, rwl, nsw, nsn, itied, msr, ms, weight, rwsav, nimpact, impact, nsms, nrwl_sms)
subroutine sms_rgwalp_fric(x, a, v, rwl, nsw, nsn, itied, msr, ms, weight, nimpact, impact, nsms, nrwl_sms, fsav, fopt, res, r, frea)
subroutine sms_rgwalp_bcs_0(x, a, v, rwl, nsw, nsn, itied, msr, ms, weight, nimpact, impact, nsms, nrwl_sms)
subroutine sms_rgwalp_impact(x, a, v, rwl, nsw, nsn, itied, msr, ms, weight, nimpact, impact, nsms, nrwl_sms)
subroutine sms_rgwalp_bilan(x, frea, v, rwl, nsw, nsn, itied, msr, ms, weight, nimpact, impact, nsms, nrwl_sms, fsav, fopt, frwl6, a, wfext)
subroutine sms_rgwalp_bcs_1(x, a, v, rwl, nsw, nsn, itied, msr, ms, weight, nimpact, impact, nsms, nrwl_sms)
subroutine sms_rgwals_bcs_0(x, a, v, rwl, nsw, nsn, itied, msr, ms, weight, nimpact, impact, nsms, nrwl_sms)
subroutine sms_rgwals_impact(x, a, v, rwl, nsw, nsn, itied, msr, ms, weight, nimpact, impact, nsms, nrwl_sms)
subroutine sms_rgwals_fric(x, a, v, rwl, nsw, nsn, itied, msr, ms, weight, nimpact, impact, nsms, nrwl_sms, fsav, fopt, res, r, frea)
subroutine sms_rgwals_bcs_1(x, a, v, rwl, nsw, nsn, itied, msr, ms, weight, nimpact, impact, nsms, nrwl_sms)
subroutine sms_rgwals_bilan(x, frea, v, rwl, nsw, nsn, itied, msr, ms, weight, nimpact, impact, nsms, nrwl_sms, fsav, fopt, frwl6, a, wfext)
subroutine spmd_allglob_isum9(v, len)
subroutine spmd_exch_fr6(fr, fs6, len)