42 . IEXLNK ,IGRNOD ,X ,V ,
44 . XDP ,DX ,R2R_ON ,DD_R2R ,WEIGHT ,
45 . IAD_ELEM,FR_ELEM ,STIFN , STIFR , DD_R2R_ELEM,
46 . SDD_R2R_ELEM,NLOC_DMG,WFEXT, WFEXT_MD)
56#include "implicit_f.inc"
72INTEGER IEXLNK(NR2R,NR2RLNK),
73 . WEIGHT(*), DD_R2R(NSPMD+1,*), IAD_ELEM(2,*), FR_ELEM(*),
74 . DD_R2R_ELEM(*),SDD_R2R_ELEM
75 my_real X(3,*),V(3,*),VR(3,*),A(3,*),AR(3,*),MS(*),IN(*),STIFN(*),STIFR(*),DX(3,*)
77 DOUBLE PRECISION XDP(3,*)
78 TYPE (GROUP_) ,
TARGET,
DIMENSION(NGRNOD) :: IGRNOD
79 TYPE(NLOCAL_STR_),
TARGET,
INTENT(IN) :: NLOC_DMG
80 DOUBLE PRECISION,
INTENT(INOUT) :: WFEXT
81 DOUBLE PRECISION,
INTENT(INOUT) :: WFEXT_MD
85 INTEGER I, IEX, IDP, IDG, NNG, NB,NGLOB,LENR,SIZE,BID
86 INTEGER NBD,NL_FLAG,SBUF_SIZE,RBUF_SIZE,PSP
87 my_real WF, WM, WF2, WM2, WFB, WMB, WF2B, WM2B,ANN,VNN,ARN,VRN
88 INTEGER,
DIMENSION(:),
POINTER :: GRNOD
89 my_real,
POINTER,
DIMENSION(:) :: MSNL,FNL
97 IF ((r2r_siu==1).OR.(nspmd==1))
THEN
102 nng = igrnod(idg)%NENTITY
103 grnod => igrnod(idg)%ENTITY
105 IF (
nllnk(iex)==1)
THEN
108 msnl => nloc_dmg%MASS(1:nloc_dmg%L_NLOC)
109 fnl => nloc_dmg%FNL(1:nloc_dmg%L_NLOC,1)
114 . wf2 ,wm2 ,v ,vr ,a ,ar ,
115 . ms ,in ,x ,xdp ,dx ,
typlnk(iex),
116 .
kinlnk(iex),weight ,iex ,iresp, wfext)
119 IF (r2r_on == 1)
THEN
126 IF (sdd_r2r_elem>0)
THEN
127 IF (nl_flag == 0)
THEN
128 SIZE = 3+flag_kine + iroddl*(3+flag_kine)
129 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
131 2 iad_elem,fr_elem,
SIZE , wf, wf2,
132 3 lenr ,dd_r2r,dd_r2r_elem,weight,flag_kine)
134 SIZE = 3+flag_kine + iroddl*(3+flag_kine)
135 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
139 2 in,iad_elem,fr_elem,
SIZE ,
140 3 sbuf_size,rbuf_size,wf
141 4 dd_r2r_elem,weight,flag_kine,nloc_dmg)
153 nng = igrnod(idg)%NENTITY
154 grnod => igrnod(idg)%ENTITY
162 nglob=dd_r2r(nspmd+1,iex)+
dbno(iex)
170 nbd = dd_r2r(nspmd+1,iex)
173 1 idp ,nng ,grnod,wfb,wmb ,
174 2 wf2b ,wm2b ,v ,vr,a
175 3 ar ,ms ,in,dd_r2r(1,iex),nglob,
176 4 weight ,iad_elem,fr_elem,nb,iex,
typlnk(iex),
rotlnk(iex),nbd)
182 IF (r2r_on == 1)
THEN
184 1 idp,nng ,grnod,x ,dd_r2r(1,iex),
185 2 nglob,weight ,iad_elem,fr_elem,iex)
194 wfext_md = wfext_md + r2rfx1 + (wf + wm) * dt1
213 1 IDP ,NNG ,GRNOD ,WF ,WM ,
214 2 WF2 ,WM2 ,V ,VR ,A ,
215 3 AR ,MS ,IN ,DD_R2R ,NGLOB,
216 4 WEIGHT ,IAD_ELEM,FR_ELEM,NB,IEX,TYP,FLAG_ROT,NBD)
220#include "implicit_f.inc"
224#include "com01_c.inc"
229 INTEGER IDP, NNG, NGLOB, GRNOD(*),IEX,NB,TYP,FLAG_ROT,
230 . WEIGHT(*), DD_R2R(*), IAD_ELEM(2,*), FR_ELEM(*),NBD
233 . V(3,*),VR(3,*),A(3,*),AR(3,*),MS(*),IN(*),
240 . BUFR1(3,NGLOB),BUFR2(3,NGLOB),
241 . bufr3(3,nglob),bufr4(3,nglob),wtmp(4)
242 INTEGER POP0,POP1,RATE
251 lrbuf = 2*4*(iad_elem(1,nspmd+1)-iad_elem(1,1))+2*nspmd
254 IF(flag_rot /= 0)
THEN
257 . bufr4,iad_elem,fr_elem,lrbuf,iex)
260 . bufr2,iad_elem,fr_elem,lrbuf, in, vr, wm, wm2,iex)
264 . bufr1,iad_elem,fr_elem,lrbuf, ms, v, wf, wf2,iex)
267 . bufr3,iad_elem,fr_elem,lrbuf,iex)
292 1 IDP ,NNG ,GRNOD ,X ,DD_R2R ,
293 4 NGLOB,WEIGHT,IAD_ELEM,FR_ELEM,IEX )
297#include "implicit_f.inc"
301#include "com01_c.inc"
306 INTEGER IDP, NNG, NGLOB,IEX,GRNOD(*),
307 . WEIGHT(*), DD_R2R(*), IAD_ELEM(2,*), FR_ELEM(*)
321 lrbuf = 2*4*iad_elem(1,nspmd+1)-iad_elem(1,1)+2*nspmd
323 . bufr1,iad_elem,fr_elem,lrbuf,iex)
338!||====================================================================
340 . IEXLNK ,IGRNOD ,MS ,IN)
349#include "implicit_f.inc"
353#include "com04_c.inc"
354#include "param_c.inc"
355#include "rad2r_c.inc"
359 INTEGER IEXLNK(NR2R,NR2RLNK)
362 TYPE (GROUP_) ,
TARGET,
DIMENSION(NGRNOD) :: IGRNOD
366 INTEGER I, IEX, IDP, IDG, NNG,
368 INTEGER,
DIMENSION(:),
POINTER :: GRNOD
379 nng = igrnod(idg)%NENTITY
380 grnod => igrnod(idg)%ENTITY
integer, dimension(:), allocatable nllnk
integer, dimension(:), allocatable nbdof_nl
integer, dimension(:), allocatable rotlnk
integer, dimension(:), allocatable iadd_nl
integer, dimension(2) dd_r2r_nl
integer, dimension(:), allocatable typlnk
integer, dimension(:), allocatable kinlnk
integer, dimension(:), allocatable dbno
subroutine get_force_spmd(idp, nng, grnod, wf, wm, wf2, wm2, v, vr, a, ar, ms, in, dd_r2r, nglob, weight, iad_elem, fr_elem, nb, iex, typ, flag_rot, nbd)
subroutine r2r_getdata(iexlnk, igrnod, x, v, vr, a, ar, ms, in, xdp, dx, r2r_on, dd_r2r, weight, iad_elem, fr_elem, stifn, stifr, dd_r2r_elem, sdd_r2r_elem, nloc_dmg, wfext, wfext_md)
subroutine get_displ_spmd(idp, nng, grnod, x, dd_r2r, nglob, weight, iad_elem, fr_elem, iex)
subroutine r2r_sendkine(iexlnk, igrnod, ms, in)
void send_mass_kine_c(int *idp, int *nng, int *nodbuf, my_real_c *ms, my_real_c *in, int *iex, int *offset)
void get_force_c(int *idp, int *nng, int *nodbuf, my_real_c *wf, my_real_c *wm, my_real_c *wf2, my_real_c *wm2, my_real_c *v, my_real_c *vr, my_real_c *fx, my_real_c *fr, my_real_c *ms, my_real_c *in, my_real_c *x, double *xdp, my_real_c *dx, int *typ, int *kin, int *wgt, int *iex, int *iresp, double *tfext)
void get_displ_c(int *idp, int *nng, int *nodbuf, my_real_c *x)
void get_displ_spmd_c(int *idp, int *nng, my_real_c *bufr)
void get_force_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 *iex, int *nglob)
void get_force_nl_c(int *idp, int *nng, int *iadd_nl, my_real_c *fx, my_real_c *ms, int *iex)
subroutine spmd_exch_r2r_nl(a, ar, v, vr, ms, in, iad_elem, fr_elem, size, sbuf_size, rbuf_size, wf, wf2, dd_r2r, dd_r2r_elem, weight, flag, nloc_dmg)
subroutine spmd_exch_work(wf, wf2)
subroutine spmd_r2r_rset3b(a, nng, grnod, dd_r2r, weight, bufr, iad_elem, fr_elem, lrbuf, ms, v, wf, wf2, iex)
subroutine spmd_r2r_rset3(a, nng, grnod, dd_r2r, weight, bufr, iad_elem, fr_elem, lrbuf, iex)
subroutine spmd_exch_r2r_2(a, ar, v, vr, ms, in, iad_elem, fr_elem, size, wf, wf2, lenr, dd_r2r, dd_r2r_elem, weight, flag)