47 1 IEXLNK ,IGRNOD ,DX ,V ,VR ,
48 2 A ,AR ,MS ,IN ,STX ,STR ,
49 3 R2R_ON ,DD_R2R ,WEIGHT ,IAD_ELEM ,FR_ELEM ,RBY ,
50 4 XDP ,X ,DD_R2R_ELEM , SDD_R2R_ELEM, OFF_SPH_R2R ,
51 5 NUMSPH_GLO_R2R,NLOC_DMG)
61#include "implicit_f.inc"
76 INTEGER IEXLNK(NR2R,NR2RLNK),
77 . WEIGHT(*), DD_R2R(NSPMD+1,*), IAD_ELEM(2,*), FR_ELEM(*),
78 . DD_R2R_ELEM(*),SDD_R2R_ELEM,OFF_SPH_R2R(*),NUMSPH_GLO_R2R
79 INTEGER R2R_ON,NGLOB,NB
82 . v(3,*), vr(3,*), a(3,*) , ar(3,*), dx(3,*),
83 . ms(*) , in(*) , stx(*) , str(*), rby(*), x(3,*)
84 DOUBLE PRECISION XDP(3,*)
86 TYPE (GROUP_) ,
TARGET,
DIMENSION(NGRNOD) :: IGRNOD
87 TYPE(NLOCAL_STR_),
TARGET,
INTENT(IN) :: NLOC_DMG
91 INTEGER I,IEX,IDP,IDG,NNG,OLD_ACTIV
93 INTEGER,
DIMENSION(:),
POINTER :: GRNOD
94 my_real,
POINTER,
DIMENSION(:) :: MSNL,VNL,FNL
101 IF ((r2r_siu==1).OR.(nspmd==1))
THEN
105 nng = igrnod(idg)%NENTITY
106 grnod => igrnod(idg)%ENTITY
107 IF (
nllnk(iex)==1)
THEN
109 msnl => nloc_dmg%MASS(1:nloc_dmg%L_NLOC)
110 vnl => nloc_dmg%VNL(1:nloc_dmg%L_NLOC)
111 fnl => nloc_dmg%FNL(1:nloc_dmg%L_NLOC,1)
114 ELSEIF (iresp==1)
THEN
117 . idp ,nng ,grnod ,a ,ar ,
118 . stx ,str ,v ,vr ,ms ,in ,
121 . off_sph_r2r ,numsph_glo_r2r, nrby)
125 . idp ,nng ,grnod ,a ,ar ,
126 . stx ,str ,v ,vr ,ms ,in ,
129 . off_sph_r2r ,numsph_glo_r2r, nrby)
136 nng = igrnod(idg)%NENTITY
137 grnod => igrnod(idg)%ENTITY
141 . idp,nng,grnod ,a ,ar ,
142 . stx,str,v ,vr ,ms ,
143 . in ,xdp ,dd_r2r(1,iex),dd_r2r(nspmd+1,iex),weight,
148 . idp,nng,grnod ,a ,ar ,
149 . stx,str,v ,vr ,ms ,
150 . in ,dx ,dd_r2r(1,iex),dd_r2r(nspmd+1,iex),weight,
157 IF ((r2r_siu==1).OR.(ispmd==0))
CALL r2r_sem_c()
166 IF(nspmd==1.OR.ispmd==0)
THEN
168 old_activ = r2r_activ
173 IF (old_activ == 1 .AND. r2r_activ == 0)
THEN
174 WRITE(iout,*)
' PROCESS DEACTIVATION'
177 IF (r2r_activ /= -1)
THEN
178 DO WHILE (r2r_activ == 0)
181 IF (old_activ == 0 .AND. r2r_activ == 1)
THEN
182 WRITE(iout,*)
' PROCESS ACTIVATION'
186 IF (r2r_activ == 1)
THEN
199 IF (r2r_activ == 1)
CALL spmd_ibcast(r2r_on,r2r_on,1,1,0,2)
201 IF (r2r_activ == -1)
THEN
209 IF ((r2r_siu==1).OR.(ispmd==0))
THEN
212 IF (r2r_siu==1) ntop = nthread
213 IF (r2r_siu==0) ntop = nthread*nspmd
226 IF ((r2r_siu==1).OR.(nspmd==1))
THEN
230 nng = igrnod(idg)%NENTITY
231 grnod => igrnod(idg)%ENTITY
234 . idp ,nng ,grnod,ms ,in ,
235 . stx ,str,
typlnk(iex),ncycle,iex)
239 IF ((sdd_r2r_elem>0).AND.(nspmd>1))
THEN
241 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
245 2 iad_elem,fr_elem,
SIZE ,
246 3 lenr ,dd_r2r,dd_r2r_elem,1)
249 1 a ,ar ,stx,str ,ms ,
250 2 iad_elem,fr_elem,
SIZE ,
251 3 lenr ,dd_r2r,dd_r2r_elem,1)
259 nng = igrnod(idg)%NENTITY
260 grnod => igrnod(idg)%ENTITY
261 nb = dd_r2r(nspmd+1,iex)
263 nglob=dd_r2r(nspmd+1,iex)+
dbno(iex)
268 . idp ,nng ,grnod ,ms ,in ,
269 . stx ,str ,dd_r2r(1,iex),nglob,weight,
291 1 IDP ,NNG ,GRNOD ,A ,AR ,
292 2 STX ,STR ,V ,VR ,MS ,
293 3 IN ,DX ,DD_R2R ,NGLOB,WEIGHT,
294 4 TYP, FLAG_ROT, FLAG_RBY, RBY, IEX)
298#include "implicit_f.inc"
302#include "com01_c.inc"
307 INTEGER IDP, NNG, NGLOB,i,TYP,
308 . GRNOD(*),FLAG_ROT, FLAG_RBY,
309 . WEIGHT(*), DD_R2R(*), IEX
312 . A(3,*), AR(3,*), STX(*), STR(*), V(3,*), VR(3,*),
313 . MS(*), IN(*), RBY(*)
314 DOUBLE PRECISION DX(3,*)
320 . bufr1(3,nglob), bufr2(3,nglob), bufr3(nglob),
321 . bufr4(nglob), bufr5(3,nglob), bufr6(3,nglob),
322 . bufr8(nglob), bufr9(nglob),buf_rby(9,nglob)
323 DOUBLE PRECISION BUFR7(3,NGLOB)
336 IF ((typ<=4).OR.(ncycle==0))
THEN
345 .
CALL spmd_r2r_rby(rby,nng,grnod,dd_r2r,weight,iex,buf_rby)
350 2 bufr4,bufr5,bufr6,bufr7,bufr8,
361!||--- calls -----------------------------------------------------
366 1 IDP ,NNG ,GRNOD ,MS ,IN ,
367 2 STX ,STR ,DD_R2R ,NGLOB,WEIGHT ,
368 3 IAD_ELEM,FR_ELEM,NB,IEX,TYP,FLAG_ROT)
372#include
"implicit_f.inc"
376#include "com01_c.inc"
381 INTEGER IDP, NNG, NGLOB, GRNOD(*),IEX,TYP,
382 . WEIGHT(*), DD_R2R(*), IAD_ELEM(2,*), FR_ELEM(*),NB,
384 my_real MS(*), IN(*), STX(*), STR(*)
390 . BUFR1(NGLOB), BUFR2(NGLOB), BUFR3(NGLOB), BUFR4(NGLOB)
395 . typ,ncycle,iex,nglob)
399 lrbuf = 2*2*(iad_elem(1,nspmd+1)-iad_elem(1,1))+2*nspmd
403 . bufr1,iad_elem,fr_elem,lrbuf,iex)
406 . bufr2,iad_elem,fr_elem,lrbuf,iex )
407 IF(flag_rot /= 0)
THEN
410 . bufr3,iad_elem,fr_elem,lrbuf,iex )
413 . bufr4,iad_elem,fr_elem,lrbuf,iex )
424!||
tagoff3n ../engine/source/interfaces/interf/chkstfn3.f
428 SUBROUTINE r2r_tagel(NTAGEL_R2R_SEND,ID_EL,ID_NODE,ITY,OFUR,TAGEL_SIZE)
436#include "implicit_f.inc"
440 INTEGER NTAGEL_R2R_SEND,ID_EL,ID_NODE,ITY,OFUR,TAGEL_SIZE
444 INTEGER I,N,TAGEL_SIZE_OLD
445 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGEL_TEMP
448 N = 3*ntagel_r2r_send
449 ntagel_r2r_send = ntagel_r2r_send + 1
452 IF (3*ntagel_r2r_send>tagel_size)
THEN
454 IF (tagel_size>0)
THEN
455 ALLOCATE(tagel_temp(tagel_size))
461 tagel_size_old = tagel_size
462 tagel_size = tagel_size + 150
465 DO i=1,tagel_size_old
482!||--- called by ------------------------------------------------------
497#include "implicit_f.inc"
501#include "param_c.inc"
502#include "com04_c.inc"
503#include "rad2r_c.inc"
507 INTEGER IEXLNK(NR2R,NR2RLNK),ITAG(*),FLAG
508 TYPE (GROUP_) ,
TARGET,
DIMENSION(NGRNOD) :: IGRNOD
512 INTEGER I, IEX, IDP, IDG, NNG,NMOD_R2R, OFF
513 INTEGER,
DIMENSION(:),
POINTER :: GRNOD
523 nng = igrnod(idg)%NENTITY
524 grnod => igrnod(idg)%ENTITY
525 CALL exch_itag_c(idp,nng,grnod,itag,itag(numnod+1),iex,off,flag)
subroutine tagoff3n(nodes, geo, ixs, ixs10, ixs20, ixs16, ixq, ixc, ixt, ixp, ixr, ixtg, itag, nodft, nodlt, iparg, ev, itask, ixtg1, iad_elem, fr_elem, itab, addcnel, cnel, kxsp, elbuf_tab, tagel, iexlnk, igrnod, dd_r2r, dd_r2r_elem, sdd_r2r_elem, idel7nok_sav, idel7nok_r2r, tagtrimc, tagtrimtg, s_elem_state, elem_state, shoot_struct, global_nb_elem_off)
if(complex_arithmetic) id
integer, dimension(:), allocatable nllnk
integer, dimension(:), allocatable rbylnk
integer, dimension(:), allocatable nbdof_nl
integer, dimension(:), allocatable rotlnk
integer, dimension(:), allocatable tagel_r2r_send
integer, dimension(:), allocatable tag_rby
integer, dimension(:), allocatable iadd_nl
integer, dimension(:), allocatable add_rby
integer, dimension(:), allocatable typlnk
double precision, dimension(:,:), allocatable r2r_kine
integer, dimension(:), allocatable kinlnk
integer, dimension(:), allocatable dbno
subroutine r2r_exch_itag(iexlnk, igrnod, itag, flag)
subroutine r2r_tagel(ntagel_r2r_send, id_el, id_node, ity, ofur, tagel_size)
subroutine send_data_spmd(idp, nng, grnod, a, ar, stx, str, v, vr, ms, in, dx, dd_r2r, nglob, weight, typ, flag_rot, flag_rby, rby, iex)
subroutine get_stiff_spmd(idp, nng, grnod, ms, in, stx, str, dd_r2r, nglob, weight, iad_elem, fr_elem, nb, iex, typ, flag_rot)
subroutine r2r_exchange(iexlnk, igrnod, dx, v, vr, a, ar, ms, in, stx, str, r2r_on, dd_r2r, weight, iad_elem, fr_elem, rby, xdp, x, dd_r2r_elem, sdd_r2r_elem, off_sph_r2r, numsph_glo_r2r, nloc_dmg)
void r2r_unlock_threads_c(int *nthr)
void exch_itag_c(int *idp, int *nng, int *nodbuf, int *itag, int *itag2, int *iex, int *offset, int *flag)
void check_dtnoda_c(int *i7kglo)
void get_stiff_c(int *idp, int *nng, int *nodbuf, my_real_c *ms, my_real_c *ir, my_real_c *stx, my_real_c *str, int *typ, int *npas, int *iex)
void send_data_c(int *idp, int *nng, int *nodbuf, my_real_c *fx, my_real_c *fr, my_real_c *stx, my_real_c *str, my_real_c *vx, my_real_c *vr, my_real_c *ms, my_real_c *in, double *dx, my_real_c *x, int *typ, int *npas, my_real_c *rby, int *tag_rby, int *add_rby, int *rbylnk, int *kin, double *dr, my_real_c *dt2, int *iex, int *off_sph, int *numsph_glo, int *nrby)
void send_data_nl_c(int *idp, int *nng, int *iadd_nl, my_real_c *fx, my_real_c *vx, my_real_c *ms, int *npas, int *iex)
void get_stiff_spmd_c(int *idp, int *nng, my_real_c *bufr1, my_real_c *bufr2, my_real_c *bufr3, my_real_c *bufr4, int *typ, int *npas, int *iex, int *nglob)
void send_ibuf_c(int *ibuf, int *len)
void send_data_spmd_c(int *idp, int *nng, my_real_c *bufr1, my_real_c *bufr2, my_real_c *bufr3, my_real_c *bufr4, my_real_c *bufr5, my_real_c *bufr6, double *bufr7, my_real_c *bufr8, my_real_c *bufr9, my_real_c *buf_rby, int *flg_rby, int *typ, int *npas, int *iex)
void get_ibuf_c(int *ibuf, int *len)
subroutine spmd_ibcast(tabi, tabr, n1, n2, from, add)
subroutine spmd_r2r_rset(m, nng, grnod, dd_r2r, weight, bufr, iad_elem, fr_elem, lrbuf, iex)
subroutine spmd_r2r_rget3(x, nng, grnod, dd_r2r, weight, bufr)
subroutine spmd_r2r_rby(rby, nng, grnod, dd_r2r, weight, iex, bufr)
subroutine spmd_exch_r2r(a, ar, stifn, stifr, ms, iad_elem, fr_elem, size, lenr, dd_r2r, dd_r2r_elem, flag)
subroutine spmd_r2r_rget(m, nng, grnod, dd_r2r, weight, bufr)
subroutine spmd_r2r_rget3_dp(x, nng, grnod, dd_r2r, weight, bufr)