75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99 USE timer_mod
100 USE python_funct_mod
101 USE elbufdef_mod
102 USE intbufdef_mod
105 USE multi_fvm_mod
107 USE alew8_mod , ONLY : alew8
108
109
110
111#include "implicit_f.inc"
112
113
114
115#include "com01_c.inc"
116#include "com04_c.inc"
117#include "com06_c.inc"
118#include "com08_c.inc"
119#include "param_c.inc"
120#include "scr03_c.inc"
121#include "scr05_c.inc"
122#include "timeri_c.inc"
123#include "parit_c.inc"
124#include "tabsiz_c.inc"
125
126
127
128 TYPE(TIMER_), INTENT(inout) :: TIMERS
129 TYPE(PYTHON_), INTENT(inout) :: PYTHON
130 TYPE(MULTI_FVM_STRUCT) :: MULTI_FVM
131 INTEGER ISKEW(*), IXS(NIXS,NUMELS),IXQ(NIXQ,NUMELQ),
132 . NPF(*),LAS(*), IPARG(NPARG,NGROUP), IPARI(NPARI,NINTER),
133 . NPRW(*), ICODT(*), LINALE(*),
134 . NODPOR(*), NBRCVOIS(*),NBSDVOIS(*), PROCNE(*),FR_NBCC(*),
135 . LNRCVOIS(*),LNSDVOIS(*), NODFT ,NODLT, ITASK,
136 . WEIGHT(*), FR_ELEM(*), IAD_ELEM(*), ADSKY(*), NPORGEO(*),
137 . IADS(*) ,FR_WALL(*),
138 . IADQ(*), NIADX
139 DOUBLE PRECISION :: XDP(3,*),DDP(3,*)
140 my_real x(3,sx/3) ,d(3,sd/3), v(3,sv/3) ,vr(3,svr/3) ,a(3,sa/3) , fsky(*),
141 . ms(*) ,pm(npropm,nummat),skew(lskew,*),geo(npropg,numgeo),
142 . w(3,sw/3), wb(*), tf(*), fsav(nthvki,*) ,xlas(*),
143 . wa(3,*),dr(3,sdr/3),xcell(3,sxcell), xface(3,6,*)
146 TYPE(ELBUF_STRUCT_), DIMENSION(NGROUP) :: ELBUF_TAB
147 TYPE(INTBUF_STRUCT_) INTBUF_TAB(*)
148 TYPE (GROUP_) , DIMENSION(NGRNOD) :: IGRNOD
149 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECTIVITY
150 INTEGER, INTENT(IN) :: NE_NERCVOIS(*), NE_NESDVOIS(*), NE_LERCVOIS(*), NE_LESDVOIS(*)
151 DOUBLE PRECISION, INTENT(INOUT) :: WFEXT
152
153
154
155 INTEGER I, N, ISK, LCOD, NINDX1, NINDX2,INDX1(1024), INDX2(1024), SIZEN
156 DOUBLE PRECISION VDT2
158
159
160
161 IF(imon > 0 .AND. itask == 0) THEN
163 ENDIF
164
165
166
167 IF(
ale%SUB%IFSUB == 0)
THEN
168
169 IF(itask == 0)THEN
170 dt2save=dt2
171 IF(
ale%SUB%IALESUB /= 0)dt2=int(dt2s/dt2save)*dt2save
172 sizen=0
173 IF(iparit == 0)sizen = numnod
174 ENDIF
175
176 SELECT CASE (
ale%GRID%NWALE)
177
178
179
180
181 CASE(0)
184 1 x ,d ,v ,w ,wa ,
185 2 ale_connectivity%NN_CONNECT ,ale_connectivity%NALE ,nodft ,nodlt ,
186 3 nbrcvois,nbsdvois,lnrcvois ,lnsdvois )
188
189
190
191
192 CASE(1)
194 1 d ,v ,w ,
195 2 ale_connectivity%NN_CONNECT ,ale_connectivity%NALE ,nodft ,nodlt
196 3 nbrcvois ,nbsdvois,lnrcvois,lnsdvois )
198
199
200
201
202 CASE(2)
203 IF (itask == 0) THEN
205 1 x ,d ,v ,w ,wa ,
206 2 ale_connectivity%NALE ,iparg ,ixs ,wb ,
207 3 iad_elem,fr_elem,fr_nbcc ,sizen,adsky,
208 4 procne ,fsky ,fsky ,iads )
209 ENDIF
210
211
212
213
214 CASE(3)
215 IF (itask == 0) THEN
216 CALL wlag(v,w,ale_connectivity%NALE)
217 ENDIF
218
219
220
221
222 CASE(4)
223 IF (itask == 0) THEN
224 IF (n2d == 0) THEN
225 niadx=8
227 1 x ,d ,v ,w ,wa ,
228 2 ale_connectivity%NALE ,iparg ,ixs ,wb ,
229 3 iad_elem,fr_elem,fr_nbcc ,sizen,adsky ,
230 4 procne ,fsky ,fsky ,iads ,wb(1+3*numnod),
231 5 nixs ,niadx )
232 ELSE
233 niadx=4
235 1 x ,d ,v ,w ,wa ,
236 2 ale_connectivity%NALE ,iparg ,ixq ,wb ,
237 3 iad_elem ,fr_elem ,fr_nbcc ,sizen ,adsky ,
238 4 procne ,fsky ,fsky ,iadq ,wb(1+3*numnod),
239 5 nixq ,niadx )
240 ENDIF
241 ENDIF
242
243
244
245
246 CASE(5)
249 1 x ,v ,w , wa ,
250 2 ale_connectivity%NN_CONNECT ,ale_connectivity%NALE ,nodft , nodlt ,
251 3 nbrcvois ,nbsdvois ,lnrcvois, lnsdvois,
252 4 skew ,iskew ,icodt)
254
255
256
257
258 CASE(6)
261 1 x , v ,w , wa ,
262 . xcell , xface ,
263 2 ale_connectivity%NE_CONNECT, ale_connectivity%NALE ,nodft , nodlt ,itask ,
264 3 ne_nercvois , ne_nesdvois ,ne_lercvois, ne_lesdvois,
265 4 elbuf_tab , iparg ,ixs , ixq)
267
268
269
270
271 CASE(7)
274 1 x ,v ,w ,ms ,ale_connectivity%NALE,
275 2 nodft ,nodlt ,weight ,numnod ,dt1 ,
276 3 sx ,sv ,sw ,nspmd )
278
279
280
281
282 CASE(8)
284 CALL alew8(sv, sw, v ,w, nodft, nodlt, numnod, ale_connectivity%NALE)
286
287 END SELECT
288
289 IF (itask == 0) THEN
290 dt2=dt2save
291 ENDIF
292 ELSE
293 IF (itask == 0)
CALL wlag(v,w,ale_connectivity%NALE)
294 ENDIF
295
297
298 IF(imon > 0 .AND. itask == 0)
CALL stoptime(timers,5)
299 IF (itask == 0) THEN
300
301 IF(numpor > 0)
302 1
CALL wpor(geo,nodpor ,x ,v ,vr ,
303 2 w ,ale_connectivity%NALE,nporgeo )
304
305
306
307 IF(imon > 0 .AND. itask == 0)
CALL startime(timers,4)
308 DO i=1,numnod,1024
309 nindx1 = 0
310 nindx2 = 0
311 DO n = i,
min(numnod,i+1023)
312 IF(ale_connectivity%NALE(n) /= 0)THEN
313 isk=iskew(n)
314 lcod=icodt(n+numnod)
315 IF(lcod /= 0) THEN
316 nindx1 = nindx1 + 1
317 indx1(nindx1) = n
318 ENDIF
319 lcod=icodt(n+numnod+numnod)
320 IF(lcod /= 0) THEN
321 nindx2 = nindx2 + 1
322 indx2(nindx2) = n
323 ENDIF
324 ENDIF
325 ENDDO
326 IF(nindx1 /= 0)THEN
327 CALL bcs2v(nindx1,indx1,iskew,icodt(numnod+1),w,skew)
328 ENDIF
329 IF(nindx2 /= 0)THEN
330 CALL bcs3v(nindx2,indx2,iskew,icodt(2*numnod+1),w,v,skew)
331 ENDIF
332 ENDDO
333 IF(imon > 0 .AND. itask == 0)
CALL stoptime(timers,4)
334
335
336
337 IF(ninter /= 0) THEN
338 IF(imon > 0 .AND. itask == 0)
CALL startime(timers,2)
340 1 ipari,x ,v ,
341 2 a ,w ,iskew ,skew ,icodt(1+numnod),
342 3 ixs ,ixq ,elbuf_tab ,iparg ,
343 4 pm ,ale_connectivity%NALE ,intbuf_tab)
344 IF(imon > 0 .AND. itask == 0)
CALL stoptime(timers,2)
345 ENDIF
346
347
348
349 IF(n2d == 1)THEN
350 IF(imon > 0 .AND. itask == 0)
CALL startime(timers,5)
351 DO i=1,numnod
352 IF(x(2,i)+dt2*w(2,i) >= zero)cycle
353 w(2,i)=zero
354 v(2,i)=zero
355 ENDDO
356 IF(imon > 0 .AND. itask == 0)
CALL stoptime(timers,5)
357 ENDIF
358
359
360
361 IF(nalelk /= 0) THEN
362 IF(imon > 0 .AND. itask == 0)
CALL startime(timers,4)
363 CALL alelin(nalelk,linale,w,weight,igrnod)
364 IF(imon > 0 .AND. itask == 0)
CALL stoptime(timers,4)
365 ENDIF
366
367
368
369 IF(n2d == 1)THEN
370 IF(imon > 0 .AND. itask == 0)
CALL startime(timers,5)
371 DO i=1,numnod
372 IF(x(2,i)+dt2*w(2,i) >= zero)cycle
373 w(2,i)=zero
374 v(2,i)=zero
375 enddo
376 IF(imon > 0 .AND. itask == 0)
CALL stoptime(timers,5)
377 ENDIF
378
379
380
381 IF(nrwall > 0) THEN
382 IF(imon > 0 .AND. itask == 0)
CALL startime(timers,4)
384 1 x ,a ,v ,w ,
385 2 rwbuf ,nprw(1+nnprw*nrwall),nprw ,python ,
386 3 ms ,fsav(1,ninter+1),
387 4 ixs ,ixq ,elbuf_tab ,iparg ,
388 5 pm ,tf ,npf ,weight ,
389 6 iad_elem ,fr_elem ,fr_wall )
390 IF(imon > 0.AND. itask == 0)
CALL stoptime(timers,4)
391 ENDIF
392
393
394
395 IF (nlaser > 0) THEN
396 CALL laser1(las ,xlas ,ms ,x ,v ,
397 . w ,wa ,iparg ,ixq ,pm ,
398 . tf ,npf ,elbuf_tab,wfext)
399 ENDIF
400
401 ENDIF
402
403
404
405
406 IF(impose_dr /= 0 .AND. iroddl /= 0) THEN
407#include "vectorize.inc"
408 DO n=nodft,nodlt
409 dr(1,n)=dr(1,n)+dt2*vr(1,n)
410 dr(2,n)=dr(2,n)+dt2*vr(2,n)
411 dr(3,n)=dr(3,n)+dt2*vr(3,n)
412 ENDDO
413 ENDIF
414
415
416
417
418 IF(imon > 0 .AND. itask == 0)
CALL startime(timers,5)
419
421
422 IF (.NOT. multi_fvm%IS_USED) THEN
423 IF (iresp == 1) THEN
424#include "vectorize.inc"
425 DO n=nodft,nodlt
426 vdt2 = dt2*w(1,n)
427 ddp(1,n) = ddp(1,n)+vdt2
428 d(1,n) = d(1,n)+vdt2
429 xdp(1,n) = xdp(1,n)+vdt2
430 x(1,n) = xdp(1,n)
431
432 vdt2 = dt2*w(2,n)
433 ddp(2,n) = ddp(2,n)+vdt2
434 d(2,n) = d(2,n)+vdt2
435 xdp(2,n) = xdp(2,n)+vdt2
436 x(2,n) = xdp(2,n)
437
438 vdt2 = dt2*w(3,n)
439 ddp(3,n) = ddp(3,n)+vdt2
440 d(3,n) = d(3,n)+vdt2
441 xdp(3,n) = xdp(3,n)+vdt2
442 x(3,n) = xdp(3,n)
443 ENDDO
444 ELSE
445#include "vectorize.inc"
446 DO n=nodft,nodlt
447 vdt = dt2*w(1,n)
448 d(1,n) = d(1,n)+vdt
449 x(1,n) = x(1,n)+vdt
450
451 vdt = dt2*w(2,n)
452 d(2,n) = d(2,n)+vdt
453 x(2,n) = x(2,n)+vdt
454
455 vdt = dt2*w(3,n)
456 d(3,n) = d(3,n)+vdt
457 x(3,n) = x(3,n)+vdt
458 ENDDO
459 ENDIF
460 ENDIF
461
463
464 IF(imon > 0 .AND. itask == 0) THEN
466 ENDIF
467
468 RETURN
subroutine alelin(nalelk, linale, w, weight, igrnod)
subroutine alew1(d, v, w, ale_nn_connect, nale, nodft, nodlt, nbrcvois, nbsdvois, lnrcvois, lnsdvois)
subroutine alew2(x, d, v, w, wa, nale, iparg, nc, wb, iad_elem, fr_elem, fr_nbcc, sizen, addcne, procne, fsky, fskyv, iads)
subroutine alew4(x, d, v, w, wa, nale, iparg, nc, wb, iad_elem, fr_elem, fr_nbcc, sizen, addcne, procne, fsky, fskyv, iadx, wma, nix, niadx)
subroutine alew5(x, v, w, wa, ale_nn_connect, nale, nodft, nodlt, nbrcvois, nbsdvois, lnrcvois, lnsdvois, skew, iskew, icodt)
subroutine alew6(x, v, w, wa, xcell, xface, ale_ne_connect, nale, nodft, nodlt, itask, nercvois, nesdvois, lercvois, lesdvois, elbuf_tab, iparg, ixs, ixq)
subroutine alew7(x, v, w, ms, nale, nodft, nodlt, weight, numnod, dt1, sx, sv, sw, nspmd)
subroutine alew(x, d, v, w, wa, ale_nn_connect, nale, nodft, nodlt, nbrcvois, nbsdvois, lnrcvois, lnsdvois)
subroutine bcs2v(nindx, indx, iskew, icodt, a, b)
subroutine bcs3v(nindx, indx, iskew, icodt, w, v, b)
subroutine intal3(ipari, x, v, a, vg, iskew, skew, icode, ixs, ixq, elbuf_tab, iparg, pm, nale, intbuf_tab)
subroutine laser1(las, xlas, ms, x, v, w, wa, iparg, ixq, pm, tf, npf, elbuf_tab, wfext)
subroutine rgwal1(x, a, v, w, rwbuf, lprw, nprw, python, ms, fsav, ixs, ixq, elbuf_tab, iparg, pm, tf, npf, weight, iad_elem, fr_elem, fr_wall)
subroutine startime(event, itask)
subroutine stoptime(event, itask)
subroutine wlag(v, w, nale)
subroutine wpor(geo, nodpor, x, v, vr, w, nale, nporgeo)