40 2 IN ,IAD_ELEM,FR_ELEM,WEIGHT,IMSCH,
41 3 W ,ISIZXV ,ILENXV ,XDP)
51 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
52#include "implicit_f.inc"
73 TYPE(output_) :: OUTPUT
74 INTEGER IMSCH, ISIZXV, ILENXV,
75 . IAD_ELEM(2,*), FR_ELEM(*), WEIGHT(*)
80 . x(3,*),v(3,*),vr(3,*),d(3,*),ms(*),in(*),w(3,*)
85 INTEGER MSGTYP, I, NOD, LOC_PROC, DT_CST,
87 . NEW_D, IERROR, MSGOFF,MSGOFF2,
88 . status(mpi_status_size), req_s(nspmd),
89 . l2, sizdp, req_s_dp(nspmd),ierror1, len_dp
91 DOUBLE PRECISION,
DIMENSION(:),
ALLOCATABLE :: SRBUFDP
95 my_real,
DIMENSION(:),
ALLOCATABLE :: srbuf
101 IF (idtmin(11)==3.OR.idtmin(11)==8.OR.idtmin(10)==3)
THEN
102 IF(imsch>0) dt_cst = 1
104 IF ((irad2r==1).AND.(ncycle<2)) dt_cst = 1
105 IF ((
ale%SUB%IALESUB/=0).OR.(iale/=0).OR.
106 . (tt>=output%TANIM .AND. tt<=output%TANIM_STOP).OR.tt>=toutp.OR.
107 . (manim>=1.AND.manim<=15))
THEN
109 IF(iale/=0.AND.ninter>0) new_d = 2
113 e_len = 7 + iroddl*3 + dt_cst*2 + new_d*3
114 ALLOCATE(srbuf(isizxv *
max(ilenxv,e_len)))
118 ALLOCATE(srbufdp(isizxv*len_dp),stat=ierror1)
120 CALL ancmsg(msgid=20,anmode=aninfo)
124 ALLOCATE(srbufdp(1),stat=ierror1)
133 IF(iroddl/=0.AND.dt_cst/=0)
THEN
134#include "vectorize.inc"
135 DO j=iad_elem(2,i),iad_elem(1,i+1)-1
138 srbuf(l+1) = x(2,nod)
139 srbuf(l+2) = x(3,nod)
140 srbuf(l+3) = v(1,nod)
141 srbuf(l+4) = v(2,nod)
142 srbuf(l+5) = v(3,nod)
143 srbuf(l+6) = vr(1,nod)
144 srbuf(l+7) = vr(2,nod)
145 srbuf(l+8) = vr(3,nod)
150 ELSEIF (iroddl/=0.AND.dt_cst==0)
THEN
151#include "vectorize.inc"
152 DO j=iad_elem(2,i),iad_elem(1,i+1)-1
155 srbuf(l+1) = x(2,nod)
156 srbuf(l+2) = x(3,nod)
157 srbuf(l+3) = v(1,nod)
158 srbuf(l+4) = v(2,nod)
159 srbuf(l+5) = v(3,nod)
160 srbuf(l+6) = vr(1,nod)
161 srbuf(l+7) = vr(2,nod)
162 srbuf(l+8) = vr(3,nod)
165 ELSEIF (iroddl==0.AND.dt_cst/=0)
THEN
166#include "vectorize.inc"
167 DO j=iad_elem(2,i),iad_elem(1,i+1)-1
170 srbuf(l+1) = x(2,nod)
171 srbuf(l+2) = x(3,nod)
172 srbuf(l+3) = v(1,nod)
173 srbuf(l+4) = v(2,nod)
174 srbuf(l+5) = v(3,nod)
180#include "vectorize.inc"
181 DO j=iad_elem(2,i),iad_elem(1,i+1)-1
184 srbuf(l+1) = x(2,nod)
185 srbuf(l+2) = x(3,nod)
186 srbuf(l+3) = v(1,nod)
187 srbuf(l+4) = v(2,nod)
188 srbuf(l+5) = v(3,nod)
193 ELSEIF(new_d==1)
THEN
194 IF(iroddl/=0.AND.dt_cst/=0)
THEN
195#include "vectorize.inc"
196 DO j=iad_elem(2,i),iad_elem(1,i+1)-1
199 srbuf(l+1) = x(2,nod)
200 srbuf(l+2) = x(3,nod)
201 srbuf(l+3) = d(1,nod)
202 srbuf(l+4) = d(2,nod)
203 srbuf(l+5) = d(3,nod)
204 srbuf(l+6) = v(1,nod)
205 srbuf(l+7) = v(2,nod)
206 srbuf(l+8) = v(3,nod)
207 srbuf(l+9) = vr(1,nod)
208 srbuf(l+10)= vr(2,nod)
209 srbuf(l+11)= vr(3,nod)
214 ELSEIF (iroddl/=0.AND.dt_cst==0)
THEN
215#include "vectorize.inc"
216 DO j=iad_elem(2,i),iad_elem(1,i+1)-1
219 srbuf(l+1) = x(2,nod)
220 srbuf(l+2) = x(3,nod)
221 srbuf(l+3) = d(1,nod)
222 srbuf(l+4) = d(2,nod)
223 srbuf(l+5) = d(3,nod)
224 srbuf(l+6) = v(1,nod)
225 srbuf(l+7) = v(2,nod)
226 srbuf(l+8) = v(3,nod)
227 srbuf(l+9) = vr(1,nod)
228 srbuf(l+10)= vr(2,nod)
229 srbuf(l+11)= vr(3,nod)
232 ELSEIF (iroddl==0.AND.dt_cst/=0)
THEN
233#include "vectorize.inc"
234 DO j=iad_elem(2,i),iad_elem(1,i+1)-1
237 srbuf(l+1) = x(2,nod)
238 srbuf(l+2) = x(3,nod)
239 srbuf(l+3) = d(1,nod)
240 srbuf(l+4) = d(2,nod)
241 srbuf(l+5) = d(3,nod)
242 srbuf(l+6) = v(1,nod)
243 srbuf(l+7) = v(2,nod)
244 srbuf(l+8) = v(3,nod)
250#include "vectorize.inc"
251 DO j=iad_elem(2,i),iad_elem(1,i+1)-1
254 srbuf(l+1) = x(2,nod)
255 srbuf(l+2) = x(3,nod)
256 srbuf(l+3) = d(1,nod)
257 srbuf(l+4) = d(2,nod)
258 srbuf(l+5) = d(3,nod)
259 srbuf(l+6) = v(1,nod)
260 srbuf(l+7) = v(2,nod)
261 srbuf(l+8) = v(3,nod)
267 IF(iroddl/=0.AND.dt_cst/=0)
THEN
268#include "vectorize.inc"
269 DO j=iad_elem(2,i),iad_elem(1,i+1)-1
272 srbuf(l+1) = x(2,nod)
273 srbuf(l+2) = x(3,nod)
274 srbuf(l+3) = d(1,nod)
275 srbuf(l+4) = d(2,nod)
276 srbuf(l+5) = d(3,nod)
277 srbuf(l+6) = v(1,nod)
278 srbuf(l+7) = v(2,nod)
279 srbuf(l+8) = v(3,nod)
280 srbuf(l+9) = vr(1,nod)
281 srbuf(l+10)= vr(2,nod)
282 srbuf(l+11)= vr(3,nod)
285 srbuf(l+14)= w(1,nod)
286 srbuf(l+15)= w(2,nod)
287 srbuf(l+16)= w(3,nod)
290 ELSEIF (iroddl/=0.AND.dt_cst==0)
THEN
291#include "vectorize.inc"
292 DO j=iad_elem(2,i),iad_elem(1,i+1)-1
295 srbuf(l+1) = x(2,nod)
296 srbuf(l+2) = x(3,nod)
297 srbuf(l+3) = d(1,nod)
298 srbuf(l+4) = d(2,nod)
299 srbuf(l+5) = d(3,nod)
300 srbuf(l+6) = v(1,nod)
301 srbuf(l+7) = v(2,nod)
302 srbuf(l+8) = v(3,nod)
303 srbuf(l+9) = vr(1,nod)
304 srbuf(l+10)= vr(2,nod)
305 srbuf(l+11)= vr(3,nod)
306 srbuf(l+12)= w(1,nod)
307 srbuf(l+13)= w(2,nod)
308 srbuf(l+14)= w(3,nod)
311 ELSEIF (iroddl==0.AND.dt_cst/=0)
THEN
312#include "vectorize.inc"
313 DO j=iad_elem(2,i),iad_elem(1,i+1)-1
316 srbuf(l+1) = x(2,nod)
317 srbuf(l+2) = x(3,nod)
318 srbuf(l+3) = d(1,nod)
319 srbuf(l+4) = d(2,nod)
320 srbuf(l+5) = d(3,nod)
321 srbuf(l+6) = v(1,nod)
322 srbuf(l+7) = v(2,nod)
323 srbuf(l+8) = v(3,nod)
326 srbuf(l+11)= w(1,nod)
327 srbuf(l+12)= w(2,nod)
328 srbuf(l+13)= w(3,nod)
332#include "vectorize.inc"
333 DO j=iad_elem(2,i),iad_elem(1,i+1)-1
336 srbuf(l+1) = x(2,nod)
337 srbuf(l+2) = x(3,nod)
338 srbuf(l+3) = d(1,nod)
339 srbuf(l+4) = d(2,nod)
340 srbuf(l+5) = d(3,nod)
341 srbuf(l+6) = v(1,nod)
342 srbuf(l+7) = v(2,nod)
343 srbuf(l+8) = v(3,nod)
344 srbuf(l+9) = w(1,nod)
345 srbuf(l+10)= w(2,nod)
346 srbuf(l+11)= w(3,nod)
352#include "vectorize.inc"
353 DO j=iad_elem(2,i),iad_elem(1,i+1)-1
355 srbufdp(l2) = xdp(1,nod)
356 srbufdp(l2+1)= xdp(2,nod)
357 srbufdp(l2+2)= xdp(3,nod)
369 IF(iad_elem(1,i+1)-iad_elem(2,i
THEN
371 siz = e_len*(iad_elem(1,i+1)-iad_elem(2,i))
373 s srbuf(l),siz,real,it_spmd(i),msgtyp,
374 g spmd_comm_world,req_s(i),ierror)
379 sizdp = len_dp*(iad_elem(1,i+1)-iad_elem(2,i))
381 s srbufdp(l2),sizdp,mpi_double_precision,it_spmd(i),msgtyp,
382 g spmd_comm_world,req_s_dp(i),ierror)
390 IF(iad_elem(1,i+1)-iad_elem(2,i)>0)
THEN
391 CALL mpi_wait(req_s(i),status,ierror)
393 CALL mpi_wait(req_s_dp(i),status,ierror)
405 siz = e_len*(iad_elem(1,2)-iad_elem(2,1))
406 IF(iresp==1)sizdp = len_dp*(iad_elem(1,2)-iad_elem(2,1))
410 s srbuf(l),siz,real,it_spmd(1),msgtyp,
411 g spmd_comm_world,status,ierror)
416 s srbufdp(l2),sizdp,mpi_double_precision,it_spmd(1),msgtyp,
417 g spmd_comm_world,status,ierror)
421 IF(iroddl/=0.AND.dt_cst/=0)
THEN
422#include "vectorize.inc"
423 DO j=iad_elem(2,1),iad_elem(1,2)-1
426 x(2,nod) = srbuf(l+1)
427 x(3,nod) = srbuf(l+2)
428 v(1,nod) = srbuf(l+3)
429 v(2,nod) = srbuf(l+4)
430 v(3,nod) = srbuf(l+5)
431 vr(1,nod) = srbuf(l+6)
432 vr(2,nod) = srbuf(l+7)
433 vr(3,nod) = srbuf(l+8)
435 in(nod) = srbuf(l+10)
438 ELSEIF (iroddl/=0.AND.dt_cst==0)
THEN
439#include "vectorize.inc"
440 DO j=iad_elem(2,1),iad_elem(1,2)-1
443 x(2,nod) = srbuf(l+1)
444 x(3,nod) = srbuf(l+2)
445 v(1,nod) = srbuf(l+3)
446 v(2,nod) = srbuf(l+4)
447 v(3,nod) = srbuf(l+5)
448 vr(1,nod) = srbuf(l+6)
449 vr(2,nod) = srbuf(l+7)
450 vr(3,nod) = srbuf(l+8)
453 ELSEIF (iroddl==0.AND.dt_cst/=0)
THEN
454#include "vectorize.inc"
455 DO j=iad_elem(2,1),iad_elem(1,2)-1
458 x(2,nod) = srbuf(l+1)
459 x(3,nod) = srbuf(l+2)
460 v(1,nod) = srbuf(l+3)
461 v(2,nod) = srbuf(l+4)
468#include "vectorize.inc"
469 DO j=iad_elem(2,1),iad_elem(1,2)-1
472 x(2,nod) = srbuf(l+1)
473 x(3,nod) = srbuf(l+2)
474 v(1,nod) = srbuf(l+3)
475 v(2,nod) = srbuf(l+4)
476 v(3,nod) = srbuf(l+5)
481 ELSEIF(new_d==1)
THEN
482 IF(iroddl/=0.AND.dt_cst/=0)
THEN
483#include "vectorize.inc"
484 DO j=iad_elem(2,1),iad_elem(1,2)-1
487 x(2,nod) = srbuf(l+1)
488 x(3,nod) = srbuf(l+2)
490 d(2,nod) = srbuf(l+4)
491 d(3,nod) = srbuf(l+5)
492 v(1,nod) = srbuf(l+6)
493 v(2,nod) = srbuf(l+7)
494 v(3,nod) = srbuf(l+8)
495 vr(1,nod) = srbuf(l+9)
496 vr(2,nod) = srbuf(l+10)
497 vr(3,nod) = srbuf(l+11)
498 ms(nod) = srbuf(l+12)
499 in(nod) = srbuf(l+13)
502 ELSEIF (iroddl/=0.AND.dt_cst==0)
THEN
503#include "vectorize.inc"
507 x(2,nod) = srbuf(l+1)
508 x(3,nod) = srbuf(l+2)
509 d(1,nod) = srbuf(l+3)
510 d(2,nod) = srbuf(l+4)
511 d(3,nod) = srbuf(l+5)
512 v(1,nod) = srbuf(l+6)
513 v(2,nod) = srbuf(l+7)
514 v(3,nod) = srbuf(l+8)
515 vr(1,nod) = srbuf(l+9)
516 vr(2,nod) = srbuf(l+10)
517 vr(3,nod) = srbuf(l+11)
520 ELSEIF (iroddl==0.AND.dt_cst/=0)
THEN
521#include "vectorize.inc"
522 DO j=iad_elem(2,1),iad_elem(1,2)-1
525 x(2,nod) = srbuf(l+1)
526 x(3,nod) = srbuf(l+2)
527 d(1,nod) = srbuf(l+3)
528 d(2,nod) = srbuf(l+4)
529 d(3,nod) = srbuf(l+5)
530 v(1,nod) = srbuf(l+6)
531 v(2,nod) = srbuf(l+7)
532 v(3,nod) = srbuf(l+8)
534 in(nod) = srbuf(l+10)
538#include "vectorize.inc"
539 DO j=iad_elem(2,1),iad_elem(1,2)-1
542 x(2,nod) = srbuf(l+1)
543 x(3,nod) = srbuf(l+2)
544 d(1,nod) = srbuf(l+3)
545 d(2,nod) = srbuf(l+4)
546 d(3,nod) = srbuf(l+5)
547 v(1,nod) = srbuf(l+6)
548 v(2,nod) = srbuf(l+7)
549 v(3,nod) = srbuf(l+8)
556 IF(iroddl/=0.AND.dt_cst/=0)
THEN
557#include "vectorize.inc"
558 DO j=iad_elem(2,1),iad_elem(1,2)-1
561 x(2,nod) = srbuf(l+1)
562 x(3,nod) = srbuf(l+2)
563 d(1,nod) = srbuf(l+3)
564 d(2,nod) = srbuf(l+4)
565 d(3,nod) = srbuf(l+5)
566 v(1,nod) = srbuf(l+6)
567 v(2,nod) = srbuf(l+7)
568 v(3,nod) = srbuf(l+8)
569 vr(1,nod) = srbuf(l+9)
570 vr(2,nod) = srbuf(l+10)
571 vr(3,nod) = srbuf(l+11)
572 ms(nod) = srbuf(l+12)
573 in(nod) = srbuf(l+13)
574 w(1,nod) = srbuf(l+14)
575 w(2,nod) = srbuf(l+15)
576 w(3,nod) = srbuf(l+16)
579 ELSEIF (iroddl/=0.AND.dt_cst==0)
THEN
580#include "vectorize.inc"
581 DO j=iad_elem(2,1),iad_elem(1,2)-1
584 x(2,nod) = srbuf(l+1)
585 x(3,nod) = srbuf(l+2)
586 d(1,nod) = srbuf(l+3)
587 d(2,nod) = srbuf(l+4)
588 d(3,nod) = srbuf(l+5)
589 v(1,nod) = srbuf(l+6)
590 v(2,nod) = srbuf(l+7)
591 v(3,nod) = srbuf(l+8)
592 vr(1,nod) = srbuf(l+9)
593 vr(2,nod) = srbuf(l+10)
594 vr(3,nod) = srbuf(l+11)
595 w(1,nod) = srbuf(l+12)
596 w(2,nod) = srbuf(l+13)
597 w(3,nod) = srbuf(l+14)
600 ELSEIF (iroddl==0.AND.dt_cst/=0)
THEN
601#include "vectorize.inc"
602 DO j=iad_elem(2,1),iad_elem(1,2)-1
605 x(2,nod) = srbuf(l+1)
606 x(3,nod) = srbuf(l+2)
607 d(1,nod) = srbuf(l+3)
608 d(2,nod) = srbuf(l+4)
609 d(3,nod) = srbuf(l+5)
610 v(1,nod) = srbuf(l+6)
611 v(2,nod) = srbuf(l+7)
612 v(3,nod) = srbuf(l+8)
614 in(nod) = srbuf(l+10)
615 w(1,nod) = srbuf(l+11)
616 w(2,nod) = srbuf(l+12)
617 w(3,nod) = srbuf(l+13)
621#include "vectorize.inc"
622 DO j=iad_elem(2,1),iad_elem(1,2)-1
625 x(2,nod) = srbuf(l+1)
626 x(3,nod) = srbuf(l+2)
628 d(2,nod) = srbuf(l+4)
629 d(3,nod) = srbuf(l+5)
630 v(1,nod) = srbuf(l+6)
631 v(2,nod) = srbuf(l+7)
632 v(3,nod) = srbuf(l+8)
633 w(1,nod) = srbuf(l+9)
634 w(2,nod) = srbuf(l+10)
635 w(3,nod) = srbuf(l+11)
641#include "vectorize.inc"
642 DO j=iad_elem(2,1),iad_elem(1,2)-1
644 xdp(1,nod)= srbufdp(l2)
645 xdp(2,nod)= srbufdp(l2+1)
646 xdp(3,nod)= srbufdp(l2+2)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)