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 INTEGER IMSCH, ISIZXV, ILENXV,
74 . IAD_ELEM(2,*), FR_ELEM(*), WEIGHT(*)
79 . x(3,*),v(3,*),vr(3,*),d(3,*),ms(*),in(*),w(3,*)
84 INTEGER MSGTYP,INFO,I,REM_PROC,NOD,LOC_PROC,NB_NOD,DT_CST,
85 . SIZ,,K,L, BUFSIZ, LSEND,E_LEN, IDEB,
86 . INB, II, NEW_D, IERROR, MSGOFF,MSGOFF2,
87 . status(mpi_status_size), req_s(nspmd),
88 . l2, sizdp, req_s_dp(nspmd),ierror1, len_dp
90 DOUBLE PRECISION,
DIMENSION(:),
ALLOCATABLE :: SRBUFDP
98 my_real,
DIMENSION(:),
ALLOCATABLE :: srbuf
104 IF (idtmin(11)==3.OR.idtmin(11)==8.OR.idtmin(10)==3)
THEN
105 IF(imsch>0) dt_cst = 1
107 IF ((irad2r==1).AND.(ncycle<2)) dt_cst = 1
108 IF ((
ale%SUB%IALESUB/=0).OR.(iale/=0).OR.
109 . (tt>=tanim .AND. tt<=tanim_stop).OR.tt>=toutp.OR.
110 . (manim>=1.AND.manim<=15))
THEN
112 IF(iale/=0.AND.ninter>0) new_d = 2
116 e_len = 7 + iroddl*3 + dt_cst*2 + new_d*3
117 ALLOCATE(srbuf(isizxv *
max(ilenxv,e_len)))
121 ALLOCATE(srbufdp(isizxv*len_dp),stat=ierror1)
123 CALL ancmsg(msgid=20,anmode=aninfo)
127 ALLOCATE(srbufdp(1),stat=ierror1)
136 IF(iroddl/=0.AND.dt_cst
THEN
137#include "vectorize.inc"
138 DO j=iad_elem(2,i),iad_elem(1,i+1)-1
141 srbuf(l+1) = x(2,nod)
142 srbuf(l+2) = x(3,nod)
143 srbuf(l+3) = v(1,nod)
144 srbuf(l+4) = v(2,nod)
145 srbuf(l+5) = v(3,nod)
146 srbuf(l+6) = vr(1,nod)
147 srbuf(l+7) = vr(2,nod)
148 srbuf(l+8) = vr(3,nod)
153 ELSEIF (iroddl/=0.AND.dt_cst==0)
THEN
154#include "vectorize.inc"
155 DO j=iad_elem(2,i),iad_elem(1,i+1)-1
158 srbuf(l+1) = x(2,nod)
159 srbuf(l+2) = x(3,nod)
160 srbuf(l+3) = v(1,nod)
161 srbuf(l+4) = v(2,nod)
162 srbuf(l+5) = v(3,nod)
163 srbuf(l+6) = vr(1,nod)
164 srbuf(l+7) = vr(2,nod)
165 srbuf(l+8) = vr(3,nod)
168 ELSEIF (iroddl==0.AND.dt_cst/=0)
THEN
169#include "vectorize.inc"
170 DO j=iad_elem(2,i),iad_elem(1,i+1)-1
173 srbuf(l+1) = x(2,nod)
174 srbuf(l+2) = x(3,nod)
175 srbuf(l+3) = v(1,nod)
176 srbuf(l+4) = v(2,nod)
177 srbuf(l+5) = v(3,nod)
183#include "vectorize.inc"
184 DO j=iad_elem(2,i),iad_elem(1,i+1)-1
187 srbuf(l+1) = x(2,nod)
188 srbuf(l+2) = x(3,nod)
189 srbuf(l+3) = v(1,nod)
190 srbuf(l+4) = v(2,nod)
191 srbuf(l+5) = v(3,nod)
196 ELSEIF(new_d==1)
THEN
197 IF(iroddl/=0.AND.dt_cst/=0)
THEN
198#include "vectorize.inc"
199 DO j=iad_elem(2,i),iad_elem(1,i+1)-1
202 srbuf(l+1) = x(2,nod)
203 srbuf(l+2) = x(3,nod)
204 srbuf(l+3) = d(1,nod)
205 srbuf(l+4) = d(2,nod)
206 srbuf(l+5) = d(3,nod)
207 srbuf(l+6) = v(1,nod)
208 srbuf(l+7) = v(2,nod)
209 srbuf(l+8) = v(3,nod)
210 srbuf(l+9) = vr(1,nod)
211 srbuf(l+10)= vr(2,nod)
212 srbuf(l+11)= vr(3,nod)
217 ELSEIF (iroddl/=0.AND.dt_cst==0)
THEN
218#include "vectorize.inc"
219 DO j=iad_elem(2,i),iad_elem(1,i+1)-1
222 srbuf(l+1) = x(2,nod)
223 srbuf(l+2) = x(3,nod)
224 srbuf(l+3) = d(1,nod)
225 srbuf(l+4) = d(2,nod)
226 srbuf(l+5) = d(3,nod)
227 srbuf(l+6) = v(1,nod)
228 srbuf(l+7) = v(2,nod)
229 srbuf(l+8) = v(3,nod)
230 srbuf(l+9) = vr(1,nod)
231 srbuf(l+10)= vr(2,nod)
232 srbuf(l+11)= vr(3,nod)
235 ELSEIF (iroddl==0.AND.dt_cst/=0)
THEN
236#include "vectorize.inc"
237 DO j=iad_elem(2,i),iad_elem(1,i+1)-1
240 srbuf(l+1) = x(2,nod)
241 srbuf(l+2) = x(3,nod)
242 srbuf(l+3) = d(1,nod)
243 srbuf(l+4) = d(2,nod)
244 srbuf(l+5) = d(3,nod)
245 srbuf(l+6) = v(1,nod)
246 srbuf(l+7) = v(2,nod)
247 srbuf(l+8) = v(3,nod)
253#include "vectorize.inc"
254 DO j=iad_elem(2,i),iad_elem(1,i+1)-1
257 srbuf(l+1) = x(2,nod)
258 srbuf(l+2) = x(3,nod)
259 srbuf(l+3) = d(1,nod)
260 srbuf(l+4) = d(2,nod)
261 srbuf(l+5) = d(3,nod)
262 srbuf(l+6) = v(1,nod)
263 srbuf(l+7) = v(2,nod)
264 srbuf(l+8) = v(3,nod)
270 IF(iroddl/=0.AND.dt_cst/=0)
THEN
271#include "vectorize.inc"
272 DO j=iad_elem(2,i),iad_elem(1,i+1)-1
275 srbuf(l+1) = x(2,nod)
276 srbuf(l+2) = x(3,nod)
277 srbuf(l+3) = d(1,nod)
278 srbuf(l+4) = d(2,nod)
279 srbuf(l+5) = d(3,nod)
280 srbuf(l+6) = v(1,nod)
281 srbuf(l+7) = v(2,nod)
282 srbuf(l+8) = v(3,nod)
283 srbuf(l+9) = vr(1,nod)
284 srbuf(l+10)= vr(2,nod)
285 srbuf(l+11)= vr(3,nod)
288 srbuf(l+14)= w(1,nod)
289 srbuf(l+15)= w(2,nod)
290 srbuf(l+16)= w(3,nod)
293 ELSEIF (iroddl/=0.AND.dt_cst==0)
THEN
294#include "vectorize.inc"
295 DO j=iad_elem(2,i),iad_elem(1,i+1)-1
298 srbuf(l+1) = x(2,nod)
299 srbuf(l+2) = x(3,nod)
300 srbuf(l+3) = d(1,nod)
301 srbuf(l+4) = d(2,nod)
302 srbuf(l+5) = d(3,nod)
303 srbuf(l+6) = v(1,nod)
304 srbuf(l+7) = v(2,nod)
305 srbuf(l+8) = v(3,nod)
306 srbuf(l+9) = vr(1,nod)
307 srbuf(l+10)= vr(2,nod)
308 srbuf(l+11)= vr(3,nod)
309 srbuf(l+12)= w(1,nod)
310 srbuf(l+13)= w(2,nod)
311 srbuf(l+14)= w(3,nod)
314 ELSEIF (iroddl==0.AND.dt_cst/=0)
THEN
315#include "vectorize.inc"
316 DO j=iad_elem(2,i),iad_elem(1,i+1)-1
319 srbuf(l+1) = x(2,nod)
320 srbuf(l+2) = x(3,nod)
321 srbuf(l+3) = d(1,nod)
322 srbuf(l+4) = d(2,nod)
323 srbuf(l+5) = d(3,nod)
324 srbuf(l+6) = v(1,nod)
325 srbuf(l+7) = v(2,nod)
326 srbuf(l+8) = v(3,nod)
329 srbuf(l+11)= w(1,nod)
330 srbuf(l+12)= w(2,nod)
331 srbuf(l+13)= w(3,nod)
335#include "vectorize.inc"
336 DO j=iad_elem(2,i),iad_elem(1,i+1)-1
339 srbuf(l+1) = x(2,nod)
340 srbuf(l+2) = x(3,nod)
341 srbuf(l+3) = d(1,nod)
342 srbuf(l+4) = d(2,nod)
343 srbuf(l+5) = d(3,nod)
344 srbuf(l+6) = v(1,nod)
345 srbuf(l+7) = v(2,nod)
346 srbuf(l+8) = v(3,nod)
347 srbuf(l+9) = w(1,nod)
348 srbuf(l+10)= w(2,nod)
349 srbuf(l+11)= w(3,nod)
355#include "vectorize.inc"
356 DO j=iad_elem(2,i),iad_elem(1,i+1)-1
358 srbufdp(l2) = xdp(1,nod)
359 srbufdp(l2+1)= xdp(2,nod)
360 srbufdp(l2+2)= xdp(3,nod)
372 IF(iad_elem(1,i+1)-iad_elem(2,i)>0)
THEN
374 siz = e_len*(iad_elem(1,i+1)-iad_elem(2,i))
376 s srbuf(l),siz,real,it_spmd(i),msgtyp,
377 g spmd_comm_world,req_s(i),ierror)
382 sizdp = len_dp*(iad_elem(1,i+1)-iad_elem(2,i))
384 s srbufdp(l2),sizdp,mpi_double_precision,it_spmd(i),msgtyp,
385 g spmd_comm_world,req_s_dp(i),ierror)
393 IF(iad_elem(1,i+1)-iad_elem(2,i)>0)
THEN
394 CALL mpi_wait(req_s(i),status,ierror)
396 CALL mpi_wait(req_s_dp(i),status,ierror)
408 siz = e_len*(iad_elem(1,2)-iad_elem(2,1))
409 IF(iresp==1)sizdp = len_dp*(iad_elem(1,2)-iad_elem(2,1))
413 s srbuf(l),siz,real,it_spmd(1),msgtyp,
414 g spmd_comm_world,status,ierror)
419 s srbufdp(l2),sizdp,mpi_double_precision,it_spmd(1),msgtyp,
420 g spmd_comm_world,status,ierror)
424 IF(iroddl/=0.AND.dt_cst/=0)
THEN
425#include "vectorize.inc"
426 DO j=iad_elem(2,1),iad_elem(1,2)-1
429 x(2,nod) = srbuf(l+1)
430 x(3,nod) = srbuf(l+2)
431 v(1,nod) = srbuf(l+3)
432 v(2,nod) = srbuf(l+4)
433 v(3,nod) = srbuf(l+5)
434 vr(1,nod) = srbuf(l+6)
435 vr(2,nod) = srbuf(l+7)
436 vr(3,nod) = srbuf(l+8)
438 in(nod) = srbuf(l+10)
441 ELSEIF (iroddl/=0.AND.dt_cst==0)
THEN
442#include "vectorize.inc"
443 DO j=iad_elem(2,1),iad_elem(1,2)-1
446 x(2,nod) = srbuf(l+1)
447 x(3,nod) = srbuf(l+2)
448 v(1,nod) = srbuf(l+3)
449 v(2,nod) = srbuf(l+4)
450 v(3,nod) = srbuf(l+5)
451 vr(1,nod) = srbuf(l+6)
452 vr(2,nod) = srbuf(l+7)
453 vr(3,nod) = srbuf(l+8)
456 ELSEIF (iroddl==0.AND.dt_cst/=0)
THEN
457#include "vectorize.inc"
458 DO j=iad_elem(2,1),iad_elem(1,2)-1
461 x(2,nod) = srbuf(l+1)
462 x(3,nod) = srbuf(l+2)
463 v(1,nod) = srbuf(l+3)
464 v(2,nod) = srbuf(l+4)
465 v(3,nod) = srbuf(l+5)
471#include "vectorize.inc"
472 DO j=iad_elem(2,1),iad_elem(1,2)-1
475 x(2,nod) = srbuf(l+1)
476 x(3,nod) = srbuf(l+2)
477 v(1,nod) = srbuf(l+3)
478 v(2,nod) = srbuf(l+4)
479 v(3,nod) = srbuf(l+5)
484 ELSEIF(new_d==1)
THEN
485 IF(iroddl/=0.AND.dt_cst/=0)
THEN
486#include "vectorize.inc"
487 DO j=iad_elem(2,1),iad_elem(1,2)-1
490 x(2,nod) = srbuf(l+1)
491 x(3,nod) = srbuf(l+2)
492 d(1,nod) = srbuf(l+3)
493 d(2,nod) = srbuf(l+4)
494 d(3,nod) = srbuf(l+5)
495 v(1,nod) = srbuf(l+6)
496 v(2,nod) = srbuf(l+7)
497 v(3,nod) = srbuf(l+8)
498 vr(1,nod) = srbuf(l+9)
499 vr(2,nod) = srbuf(l+10)
500 vr(3,nod) = srbuf(l+11)
501 ms(nod) = srbuf(l+12)
502 in(nod) = srbuf(l+13)
505 ELSEIF (iroddl/=0.AND.dt_cst==0)
THEN
506#include "vectorize.inc"
507 DO j=iad_elem(2,1),iad_elem(1,2)-1
510 x(2,nod) = srbuf(l+1)
511 x(3,nod) = srbuf(l+2)
512 d(1,nod) = srbuf(l+3)
513 d(2,nod) = srbuf(l+4)
514 d(3,nod) = srbuf(l+5)
515 v(1,nod) = srbuf(l+6)
516 v(2,nod) = srbuf(l+7)
517 v(3,nod) = srbuf(l+8)
519 vr(2,nod) = srbuf(l+10)
520 vr(3,nod) = srbuf(l+11)
523 ELSEIF (iroddl==0.AND.dt_cst/=0)
THEN
524#include "vectorize.inc"
525 DO j=iad_elem(2,1),iad_elem(1,2)-1
528 x(2,nod) = srbuf(l+1)
529 x(3,nod) = srbuf(l+2)
530 d(1,nod) = srbuf(l+3)
531 d(2,nod) = srbuf(l+4)
532 d(3,nod) = srbuf(l+5)
533 v(1,nod) = srbuf(l+6)
534 v(2,nod) = srbuf(l+7)
535 v(3,nod) = srbuf(l+8)
537 in(nod) = srbuf(l+10)
541#include "vectorize.inc"
542 DO j=iad_elem(2,1),iad_elem(1,2)-1
545 x(2,nod) = srbuf(l+1)
546 x(3,nod) = srbuf(l+2)
547 d(1,nod) = srbuf(l+3)
548 d(2,nod) = srbuf(l+4)
549 d(3,nod) = srbuf(l+5)
550 v(1,nod) = srbuf(l+6)
551 v(2,nod) = srbuf(l+7)
552 v(3,nod) = srbuf(l+8)
559 IF(iroddl/=0.AND.dt_cst/=0)
THEN
560#include "vectorize.inc"
561 DO j=iad_elem(2,1),iad_elem(1,2)-1
564 x(2,nod) = srbuf(l+1)
565 x(3,nod) = srbuf(l+2)
566 d(1,nod) = srbuf(l+3)
567 d(2,nod) = srbuf(l+4)
568 d(3,nod) = srbuf(l+5)
569 v(1,nod) = srbuf(l+6)
570 v(2,nod) = srbuf(l+7)
571 v(3,nod) = srbuf(l+8)
572 vr(1,nod) = srbuf(l+9)
573 vr(2,nod) = srbuf(l+10)
574 vr(3,nod) = srbuf(l+11)
575 ms(nod) = srbuf(l+12)
576 in(nod) = srbuf(l+13)
577 w(1,nod) = srbuf(l+14)
578 w(2,nod) = srbuf(l+15)
579 w(3,nod) = srbuf(l+16)
582 ELSEIF (iroddl/=0.AND.dt_cst==0)
THEN
583#include "vectorize.inc"
584 DO j=iad_elem(2,1),iad_elem(1,2)-1
587 x(2,nod) = srbuf(l+1)
588 x(3,nod) = srbuf(l+2)
589 d(1,nod) = srbuf(l+3)
590 d(2,nod) = srbuf(l+4)
591 d(3,nod) = srbuf(l+5)
592 v(1,nod) = srbuf(l+6)
593 v(2,nod) = srbuf(l+7)
594 v(3,nod) = srbuf(l+8)
595 vr(1,nod) = srbuf(l+9)
596 vr(2,nod) = srbuf(l+10)
597 vr(3,nod) = srbuf(l+11)
598 w(1,nod) = srbuf(l+12)
599 w(2,nod) = srbuf(l+13)
600 w(3,nod) = srbuf(l+14)
603 ELSEIF (iroddl==0.AND.dt_cst/=0)
THEN
604#include "vectorize.inc"
605 DO j=iad_elem(2,1),iad_elem(1,2)-1
608 x(2,nod) = srbuf(l+1)
609 x(3,nod) = srbuf(l+2)
610 d(1,nod) = srbuf(l+3)
611 d(2,nod) = srbuf(l+4)
612 d(3,nod) = srbuf(l+5)
613 v(1,nod) = srbuf(l+6)
614 v(2,nod) = srbuf(l+7)
615 v(3,nod) = srbuf(l+8)
617 in(nod) = srbuf(l+10)
618 w(1,nod) = srbuf(l+11)
619 w(2,nod) = srbuf(l+12)
620 w(3,nod) = srbuf(l+13)
624#include "vectorize.inc"
625 DO j=iad_elem(2,1),iad_elem(1,2)-1
628 x(2,nod) = srbuf(l+1)
629 x(3,nod) = srbuf(l+2)
630 d(1,nod) = srbuf(l+3)
631 d(2,nod) = srbuf(l+4)
632 d(3,nod) = srbuf(l+5)
633 v(1,nod) = srbuf(l+6)
634 v(2,nod) = srbuf(l+7)
635 v(3,nod) = srbuf(l+8)
636 w(1,nod) = srbuf(l+9)
637 w(2,nod) = srbuf(l+10)
638 w(3,nod) = srbuf(l+11)
644#include "vectorize.inc"
645 DO j=iad_elem(2,1),iad_elem(1,2)-1
647 xdp(1,nod)= srbufdp(l2)
648 xdp(2,nod)= srbufdp(l2+1)
649 xdp(3,nod)= srbufdp(l2+2)
subroutine resol(timers, element, nodes, coupling, af, iaf, iskwn, neth, ipart, nom_opt, kxx, ixx, ixtg, ixs, ixq, ixt, ixp, ixr, ifill, mat_elem, ims, npc, ibcl, ibfv, idum, las, laccelm, nnlink, lnlink, iparg, dd_iad, igrv, iexlnk, kinet, ipari, nprw, iconx, npby, lpby, lrivet, nstrf, ljoint, nodpor, monvol, ilink, llink, linale, neflsw, nnflsw, icut, cluster, itask, inoise, thke, damp, pm, skews, geo, eani, bufmat, bufgeo, bufsf, w, veul, fill, dfill, alph, wb, dsave, asave, msnf, tf, forc, vel, fsav, fzero, xlas, accelm, agrv, fr_wave, failwave, parts0, elbuf, rwbuf, sensors, rwsav, rby, rivet, secbuf, volmon, lambda, wa, fv, partsav, uwa, val2, phi, segvar, r, crflsw, flsw, fani, xcut, anin, tani, secfcum, bufnois, idata, rdata, iframe, kxsp, ixsp, nod2sp, ispsym, ispcond, xframe, spbuf, xspsym, vspsym, pv, fsavd, ibvel, lbvel, wasph, w16, isphio, lprtsph, lonfsph, vsphio, fbvel, lagbuf, ibcslag, iactiv, dampr, gjbufi, gjbufr, rbmpc, ibmpc, sphveln, nbrcvois, nbsdvois, lnrcvois, lnsdvois, nercvois, nesdvois, lercvois, lesdvois, npsegcom, lsegcom, nporgeo, ixtg1, npbyl, lpbyl, rbyl, igeo, ipm, madprt, madsh4, madsh3, madsol, madnod, madfail, iad_rby, fr_rby, fr_wall, iad_rby2, fr_rby2, iad_i2m, fr_i2m, addcni2, procni2, iadi2, fr_mv, iadmv2, fr_ll, fr_rl, iadcj, fr_cj, fr_sec, iad_sec, iad_cut, fr_cut, rg_cut, newfront, fr_mad, fxbipm, fxbrpm, fxbnod, fxbmod, fxbglm, fxbcpm, fxbcps, fxblm, fxbfls, fxbdls, fxbdep, fxbvit, fxbacc, fxbelm, fxbsig, fxbgrvi, fxbgrvr, eigipm, eigibuf, eigrpm, lnodpor, fr_i18, graphe, iflow, rflow, lgrav, dd_r2r, fasolfr, fr_lagf, llagf, lprw, icontact, rcontact, sh4tree, sh3tree, ipadmesh, padmesh, msc, mstg, inc, intg, ptg, iskwp, nskwp, isensp, nsensp, iaccp, naccp, ipart_state, acontact, pcontact, factiv, sh4trim, sh3trim, mscnd, incnd, ibfflux, fbfflux, rbym, irbym, lnrbym, icodrbym, ibcv, fconv, ibftemp, fbftemp, iad_rbym, fr_rbym, weight_rm, ms_ply, zi_ply, inod_pxfem, iel_pxfem, iadc_pxfem, adsky_pxfem, icode_ply, icodt_ply, iskew_ply, admsms, madclnod, nom_sect, mcpc, mcptg, dmelc, dmeltg, mssa, dmels, mstr, dmeltr, msp, dmelp, msrt, dmelrt, ibcr, fradia, res_sms, table, irbe2, lrbe2, iad_rbe2, fr_rbe2, phie, msf, procne_pxfem, iadsdp_pxfem, iadrcp_pxfem, icfield, lcfield, cfield, msz2, diag_sms, iloadp, lloadp, loadp, inod_crk, iel_crk, iadc_crk, adsky_crk, cne_crk, procne_crk, iadsdp_crk, iadrcp_crk, ibufssg_io, ibc_ply, dmint2, ibordnode, elbuf_tab, por, nodedge, iad_edge, fr_edge, fr_nbedge, crknodiad, lgauge, gauge, igaup, ngaup, nodlevxf, dd_r2r_elem, nodglobxfe, sph2sol, sol2sph, irst, dmsph, wagap, xfem_tab, elcutc, nodenr, kxfenod2elc, enrtag, rthbu f, kxig3d, ixig3d, knot, wige, wsmcomp, stack, cputime_mp_glob, cputime_mp, tab_ump, poin_ump, sol2sph_typ, irunn_bis, addcsrect, iad_frnor, fr_nor, procnor, iad_fredg, fr_edg, drape_sh4n, drape_sh3n, tab_mat, nativ0_sms, multi_fvm, segquadfr, ms_2d, h3d_data, subsets, igrnod, igrbric, igrquad, igrsh4n, igrsh3n, igrtruss, igrbeam, igrspring, igrpart, igrsurf, forneqs, nloc_dmg, iskwp_l, knotlocpc, knotlocel, pinch_data, tag_skins6, ale_connectivity, xcell, xface, ne_nercvois, ne_nesdvois, ne_lercvois, ne_lesdvois, ibcscyc, lbcscyc, t_monvol, id_global_vois, face_vois, dynain_data, fcont_max, ebcs_tab, diffusion, kloadpinter, loadpinter, dgaploadint, drapeg, user_windows, output, interfaces, dt, loads, python, dpl0cld, vel0cld, ndamp_vrel, id_damp_vrel, fr_damp_vrel, ndamp_vrel_rbyg, names_and_titles, unitab, liflow, lrflow, glob_therm, pblast, rbe3)