65 2 MS ,IN ,DD_R2R,WEIGHT ,IAD_ELEM,
66 3 FR_ELEM,ADDCNEL,CNEL,IXC,IPARG,ICODT,ICODR,
67 4 IBFV,DX,RBY,NPBY,XDP,STIFN,STIFR,DD_R2R_ELEM,
68 5 SDD_R2R_ELEM,WEIGHT_MD,ILENXV,NUMSPH_GLO_R2R,
69 6 FLG_SPHINOUT_R2R,IPARI,NLOC_DMG)
77 use element_mod ,
only : nixc
81#include "implicit_f.inc"
101 INTEGER IEXLNK(,NR2RLNK), ITAB(*),
102 . WEIGHT(*), (NSPMD+1,*), IAD_ELEM(2,*), FR_ELEM(*),
103 . IROOT(100), ADDCNEL(0:*),CNEL(0:*),IXC(NIXC,*),ICODR(*),
104 . IPARG(NPARG,*),ICODT(*),IBFV(*),NPBY(*),DD_R2R_ELEM(*),
105 . SDD_R2R_ELEM,WEIGHT_MD(*),ILENXV,,FLG_SPHINOUT_R2R,
110 DOUBLE PRECISION XDP(3,*)
112 TYPE (GROUP_) ,
TARGET,
DIMENSION(NGRNOD) :: IGRNOD
117 INTEGER I, J, IEX, IDP, IDG, NNG, OFC,NFTC,,ITSK
118 INTEGER NUM_SOCK,SIZE_TAG_RBY,LENR,SIZE
119 INTEGER NN,N,PPID,IDEL_LOC,NSN_GLOB,COMPT
120 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NDOF_NL
123 INTEGER,
DIMENSION(:),
POINTER :: GRNOD
124 INTEGER,
POINTER,
DIMENSION(:) :: IDXI,POSI
125 my_real,
POINTER,
DIMENSION(:) :: msnl
129 info=numels+numelq+numelc
132 IF((ninter>0).AND.(idtmin(10)/=3).AND.(idtmin(11)/=3).AND.(idtmin(11)/=8))
THEN
136 IF ((r2r_siu==1).OR.(nspmd==1))
THEN
139 numsph_glo_r2r = numsph
141 IF ((nsphio>0).AND.(numsph_glo_r2r>0)) flg_sphinout_r2r = 1
144 flg_sphinout_r2r =
min(1,flg_sphinout_r2r)
150 nsn_glob = ipari(5,i)
152 IF ((nsn_glob==0).AND.(ipari(7,i)==2)) ipari(7,i) = 0
159 ALLOCATE(
nllnk(nr2rlnk))
164 iroot(i) = ichar(rootnam(i:i))
182 num_sock = nthread*ispmd+itsk
218 nng = igrnod(idg)%NENTITY
221 grnod => igrnod(idg)%ENTITY
223 IF (idp>nbk) nbk = idp
233 size_tag_rby = size_tag_rby + nng
237 IF ((
typlnk(iex)==5).AND.(main_side==1))
THEN
239 n = igrnod(idg)%ENTITY(nn)
250 IF (
nllnk(iex)==1)
THEN
252 idxi => nloc_dmg%IDXI(1:numnod)
253 posi => nloc_dmg%POSI(1:nloc_dmg%NNOD+1)
255 ALLOCATE(ndof_nl(nng))
258 ndof_nl(i) = posi(nn+1)-posi(nn)
259 compt = compt + ndof_nl(i)
266 DO j=posi(nn),posi(nn+1)-1
274 IF ((nspmd > 1).AND.(sdd_r2r_elem>0))
THEN
285 CALL init_link_c(idp,nng,itab,grnod,x,addcnel,cnel,ixc,
286 . ofc,info,
typlnk(iex),icodt,icodr,ncpri,iroddl,nbk,dx)
298 idel7ng =
max(idel7ng,idel_loc)
299 IF (idel7ng>=1) idel7nok = 1
304 ALLOCATE (
tag_rby(size_tag_rby))
309 grnod => igrnod(idg)%ENTITY
313 ELSEIF (
nllnk(iex)==1)
THEN
315 msnl => nloc_dmg%MASS(1:nloc_dmg%L_NLOC)
326 nng = igrnod(idg)%NENTITY
327 grnod => igrnod(idg)%ENTITY
329 CALL get_mass_rby_c(idp,nng,grnod,ms,in,x,npby,nrbody,rby,nnpby,nrby)
330 CALL r2r_rby(nng,itab,grnod,x,ms,in,npby,rby,xdp,1,weight)
331 ELSEIF (
nllnk(iex)==1)
THEN
341 IF (sdd_r2r_elem>0)
THEN
343 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
346 1 x ,x ,stifn,stifr ,ms ,
347 2 iad_elem,fr_elem,
SIZE ,
348 3 lenr ,dd_r2r,dd_r2r_elem,2)
353 2 iad_elem,fr_elem,
SIZE ,
354 3 lenr ,dd_r2r,dd_r2r_elem,1)
360 2 iad_elem,fr_elem,
SIZE ,
361 3 lenr ,dd_r2r,dd_r2r_elem,xdp)
365 2 iad_elem,fr_elem,
SIZE ,
366 3 lenr ,dd_r2r,dd_r2r_elem,x)
378 ALLOCATE(
dbn(nr2rlnk,nspmd),
nbel(nr2rlnk,nspmd))
380 ALLOCATE(
nbeln(nr2rlnk,nspmd))
384 ALLOCATE(
nllnk(nr2rlnk))
388 iroot(i) = ichar(rootnam(i:i))
407 CALL opensem_c(iroot,rootlen,ispmd,nthread,ppid)
424 num_sock = nthread*ispmd+itsk
428 CALL opensem_c(iroot,rootlen,ispmd,nthread,ppid)
435 nng = igrnod(idg)%NENTITY
436 grnod => igrnod(idg)%ENTITY
438 IF (idp>nbk) nbk = idp
455 IF ((
typlnk(iex)==5).AND.(main_side==1))
THEN
457 n = igrnod(idg)%ENTITY(nn)
464 size_tag_rby = size_tag_rby + nng
468 1 idp ,nng ,itab ,grnod,x,
469 2 dd_r2r(1,iex),dd_r2r(nspmd+1,iex),weight,addcnel,cnel,ixc,
470 3 ofc,iex,info,
typlnk(iex),icodt,icodr,ibfv,dx)
481 idel7ng =
max(idel7ng,idel_loc)
484 IF (idel7ng>=1) idel7nok = 1
492 nng = igrnod(idg)%NENTITY
493 grnod => igrnod(idg)%ENTITY
496 1 idp,nng,grnod,ms,in,
497 2 dd_r2r(1,iex),dd_r2r(nspmd+1,iex),weight,
rotlnk(iex))
499 ALLOCATE (
tag_rby(size_tag_rby))
501 1 idp,nng,grnod,ms,in,
502 2 dd_r2r(1,iex),dd_r2r(nspmd+1,iex),weight,
rotlnk(iex),
512 nng = igrnod(idg)%NENTITY
513 grnod => igrnod(idg)%ENTITY
516 1 idp,nng,grnod,ms ,in ,
517 2 dd_r2r(1,iex),dd_r2r(nspmd+1,iex),weight,iad_elem,
521 1 idp,nng,grnod,ms ,in ,
522 2 dd_r2r(1,iex),dd_r2r(nspmd+1,iex),weight,iad_elem,
523 3 fr_elem,
rotlnk(iex),x,npby,rby,itab,iex,xdp)
549 1 IDP ,NNG ,ITAB ,GRNOD,X,
550 2 DD_R2R,NGLOB,WEIGHT,ADDCNEL,CNEL,IXC,OFC,IEX,INFO,TYP,
551 3 ICODT,ICODR,IBFV,DX)
556 use element_mod ,
only : nixc
560#include "implicit_f.inc"
564#include "com01_c.inc"
565#include "com04_c.inc"
566#include "param_c.inc"
567#include "rad2r_c.inc"
572 INTEGER IDP, NNG, NGLOB,ITAB(*), GRNOD(*),
573 . WEIGHT(*), DD_R2R(*),OFC,
574 . ADDCNEL(0:*),CNEL(0:*),IXC(NIXC,*),IEX,
575 . INFO,TYP,ICODT(*),ICODR(*),IBFV(NIFV,*)
581 INTEGER IBUF(NGLOB),TLEL,LEL(9*NNG),LELNBNOD(9*NNG),TLELN,
582 . LELNOD(9*NNG),NBELEM(NNG),CNELEM(9*NNG),IBUFNONBEL(NGLOB),
583 . TCNEL,TCNELDB,NNGDB,N,K,J,DBNBUF(NSPMD),DDBUF(NSPMD),
584 . bcs(nglob),ibufbcs(nglob),i
585 INTEGER,
ALLOCATABLE :: IBUFEL(:),IBUFELNBNOD(:),IBUFELNOD(:),
586 . IBUFCNEL(:),CNELEMDB(:),DBIBUF(:),DBIBUFNONBEL(:),
588 my_real BUFR(3,NGLOB),BUFR2(3,NGLOB)
608 IF (iroddl==1) bcs(k) = bcs(k) + icodr(n)
624 ALLOCATE(cnelemdb(9*nngdb))
626 . ofc,tlel,lel,lelnbnod,tleln,lelnod,nbelem,tcnel,cnelem,
627 . weight,tcneldb,cnelemdb,info,typ,nglob)
642 bufr(j,i)= bufr2(j,i)-bufr(j,i)
648 ALLOCATE(dbibuf(nngdb))
650 ALLOCATE(dbibuf(
dbno(iex)))
657 ALLOCATE(ibufel(tlel),ibufelnbnod(tlel),ibufelnod(tleln))
658 ALLOCATE(ibufcnel(tcnel),dbibufnonbel(nngdb))
659 ALLOCATE(ibufcneldb(tcneldb))
663 ALLOCATE(dbibufnonbel(
dbno(iex)))
674 CALL spmd_r2r_iget(nbelem,nng,grnod,dd_r2r,weight,ibufnonbel,0)
681 . dbibufnonbel,iex,dbnbuf,ddbuf,0)
688 . dbnbuf,ddbuf,bufr,
tcnelt(iex),ibufnonbel,ibufcnel,
690 . ibufelnod,
tcneltdb(iex),ibufcneldb,dbibufnonbel,typ,
691 . ibufbcs,ncpri,iroddl,nbk,nr2rlnk,iex)
697 DEALLOCATE(ibufel,ibufelnbnod,ibufelnod,ibufcnel,cnelemdb)
698 DEALLOCATE(dbibufnonbel,ibufcneldb)
713 1 IDP ,NNG ,GRNOD, MS, IN,
714 2 DD_R2R ,NGLOB ,WEIGHT ,FLAG_ROT )
718#include "implicit_f.inc"
722#include "com01_c.inc"
727 INTEGER IDP, NNG, NGLOB, GRNOD(*),WEIGHT(*), DD_R2R(*),FLAG_ROT
732 my_real BUFR1(NGLOB), BUFR2(NGLOB)
735 CALL SPMD_R2R_RGET(MS,NNG,GRNOD,DD_R2R,WEIGHT,BUFR1)
737 CALL spmd_r2r_rget(in,nng,grnod,dd_r2r,weight,bufr2)
754 1 IDP ,NNG ,GRNOD,MS ,IN,DD_R2R ,
755 2 NGLOB ,WEIGHT ,IAD_ELEM,FR_ELEM,FLAG_ROT)
759#include "implicit_f.inc"
763#include "com01_c.inc"
768 INTEGER IDP, NNG, NGLOB,
770 . WEIGHT(*), DD_R2R(*), IAD_ELEM(2,*), FR_ELEM(*)
776 my_real BUFR1(NGLOB), BUFR2(NGLOB)
781 lrbuf = 2*2*(iad_elem(1,nspmd+1)-iad_elem(1,1))+2*nspmd
783 . bufr1,iad_elem,fr_elem,lrbuf )
784 IF(flag_rot /= 0)
THEN
786 . bufr2,iad_elem,fr_elem,lrbuf )
804 1 IDP ,NNG ,GRNOD, MS, IN,
805 2 DD_R2R ,NGLOB ,WEIGHT ,FLAG_ROT,
814#include "implicit_f.inc"
818#include "com01_c.inc"
819#include "com04_c.inc"
820#include "param_c.inc"
825 INTEGER IDP, NNG, NGLOB,GRNOD(*),
826 . WEIGHT(*), DD_R2R(*),FLAG_ROT,
829 . MS(*), IN(*), RBY(NRBY,*)
833 INTEGER I,J,IDRBY(NNG),N,IBUF(NGLOB),BUFR3(NGLOB)
835 . BUFR1(NGLOB),BUFR2(NGLOB),BUFR4(NGLOB),
839 CALL SPMD_R2R_RGET(MS,NNG,GRNOD,DD_R2R,WEIGHT,BUFR1)
841 CALL spmd_r2r_rget(in,nng,grnod,dd_r2r,weight,bufr2)
848 IF ((n==npby(nnpby*(j-1)+1)).AND.(n>0))
THEN
862 bufr3(i)= npby(nnpby*(n-1)+3)
865 bufr5(9*(i-1)+j)= rby(16+j,n)
870 . bufr4,bufr5,flag_rot)
888 1 IDP ,NNG ,GRNOD,MS ,IN,DD_R2R ,
889 2 NGLOB ,WEIGHT ,IAD_ELEM,FR_ELEM,FLAG_ROT,
890 3 X,NPBY,RBY,ITAB,IEX,XDP)
894#include "implicit_f.inc"
898#include "com01_c.inc"
899#include "com04_c.inc"
900#include "param_c.inc"
902#include "scr05_c.inc"
906 INTEGER IDP, NNG, NGLOB,
907 . GRNOD(*),FLAG_ROT,IEX,
908 . WEIGHT(*), DD_R2R(*), IAD_ELEM(2,*), FR_ELEM(*),
910 my_real MS(*), IN(*), X(3,*), RBY(NRBY,*)
911 DOUBLE PRECISION XDP(3,*)
915 INTEGER I,N,J,IDRBY(NNG),IBUF(NGLOB),IBUF2(NGLOB),
918 . BUFR1(NGLOB),BUFR2(NGLOB),BUFR3(3*NGLOB),BUFR4(9*NGLOB),
928 IF ((n==npby(nnpby*(j-1)+1)).AND.(n>0)) idrby(i) = j
942 rby_x(j,n)=bufr3(3*(i-1)+j)
945 rby(16+j,n)=bufr4(9*(i-1)+j)
949 CALL r2r_rby(nglob,ibuf2,ibuf,bufr3,bufr1,bufr2,npby,rby,
956 IF(ispmd==0) n = ibuf(i)
967 IF ((n==npby(nnpby*(j-1)+1)).AND.(n>0)) id_rb = j
969 x(1,n) = rby_x(1,id_rb)
970 x(2,n) = rby_x(2,id_rb)
971 x(3,n) = rby_x(3,id_rb)
978 ms(n) = rby(14,id_rb)
979 in(n) =
min(rby(10,id_rb),rby(11,id_rb),rby(12,id_rb))
994 SUBROUTINE r2r_rby(NNOD,ITAB,IBUF,X,MS,IN,NPBY,RBY,XDP,NPROC,
999#include "implicit_f.inc"
1003#include "com04_c.inc"
1004#include "param_c.inc"
1005#include "units_c.inc"
1006#include "scr05_c.inc"
1010 INTEGER NNOD,IBUF(*),NPBY(*),ITAB(*),NPROC,WEIGHT(*)
1011 my_real MS(*), IN(*), X(*), RBY(NRBY,*)
1012 DOUBLE PRECISION XDP(3,*)
1016 INTEGER I,J,N,ID,NOD,TAG(NRBODY)
1017 my_real RBYL(NRBY),XIIN
1027 IF (n==npby(nnpby*(j-1)+1)) id = j
1034 rbyl(j)=rby(16+j,id)
1037 CALL inepri(rbyl(10),rbyl)
1039 IF (npby(nnpby*(id-1)+5)==1)
THEN
1040 xiin = (rbyl(10)+rbyl(11)+rbyl(12))* third
1050 IF (nproc<2) in(n) =
min(rbyl(10),rbyl(11),rbyl(12))
1058 IF (weight(n)==1)
WRITE(iout,1000)
1060 IF ((iresp==1).AND.(nproc==1))
THEN
1062 xdp(1,n)=x(3*(n-1)+1)
1063 xdp(2,n)=x(3*(n-1)+2)
1064 xdp(3,n)=x(3*(n-1)+3)
1066 IF (weight(n)==1)
THEN
1067 IF (npby(nnpby*(id-1)+5)==1)
THEN
1069 WRITE(iout,1100) id,nod,x(3*(n-1)+1),x(3*(n-1)+2),x(3*(n-1)+3),
1072 WRITE(iout,1100) npby(nnpby*(id-1)+6),nod,x(3*(n-1)+1),
1073 . x(3*(n-1)+2),x(3*(n-1)+3),2*ms(n)
1074 WRITE(iout,1300) 2*rby(17,id),2*rby(21,id),2*rby(25,id),
1075 . 2*rby(18,id),2*rby(22,id),2*rby(19,id)
1077 WRITE(iout,1200) 2*rby(10,id),2*rby(11,id),2*rby(12,id)
10851000
FORMAT(/40h multidomains -> rigid body assemblage )
10861100
FORMAT(5x,
'RIGID BODY ID',i10
1087 . /10x,
'PRIMARY NODE ',i10
1088 . /10x,
'NEW X,Y,Z ',1p3g14.7
1089 . /10x,
'NEW MASS ',1g14.7)
10901300
FORMAT(10x,
'NEW INERTIA xx yy zz ',3g14.7
1091 . /10x,
'NEW INERTIA xy yz zx ',3g14.7)
10921200
FORMAT(10x,
'PRINCIPAL INERTIA',1p3g20.13,/)
integer, dimension(:), allocatable nllnk
integer, dimension(:), allocatable rbylnk
integer, dimension(:,:), allocatable dbn
integer, dimension(:), allocatable nbdof_nl
integer, dimension(:), allocatable tcnelt
integer, dimension(:), allocatable socket
integer, dimension(:), allocatable tcneltdb
integer, dimension(:), allocatable offset
integer, dimension(:), allocatable rotlnk
integer, dimension(:,:), allocatable tbcnel
integer, dimension(:), allocatable tag_rby
integer, dimension(:,:), allocatable nbeln
integer, dimension(:), allocatable iadd_nl
integer, dimension(:), allocatable nbeltn_r2r
integer, dimension(:,:), allocatable nbel
integer, dimension(2) dd_r2r_nl
integer, dimension(:), allocatable add_rby
integer, dimension(:), allocatable typlnk
double precision, dimension(:,:), allocatable r2r_kine
integer, dimension(:), allocatable nbelt_r2r
integer, dimension(:,:), allocatable tbcneldb
integer, dimension(:), allocatable kinlnk
integer, dimension(:), allocatable dbno
subroutine r2r_rby(nnod, itab, ibuf, x, ms, in, npby, rby, xdp, nproc, weight)
subroutine get_mass_spmd(idp, nng, grnod, ms, in, dd_r2r, nglob, weight, iad_elem, fr_elem, flag_rot)
subroutine get_mass_rby_spmd(idp, nng, grnod, ms, in, dd_r2r, nglob, weight, iad_elem, fr_elem, flag_rot, x, npby, rby, itab, iex, xdp)
subroutine init_link_spmd(idp, nng, itab, grnod, x, dd_r2r, nglob, weight, addcnel, cnel, ixc, ofc, iex, info, typ, icodt, icodr, ibfv, dx)
subroutine send_mass_rby_spmd(idp, nng, grnod, ms, in, dd_r2r, nglob, weight, flag_rot, npby, rby, addr)
subroutine r2r_init(iexlnk, itab, igrnod, x, ms, in, dd_r2r, weight, iad_elem, fr_elem, addcnel, cnel, ixc, iparg, icodt, icodr, ibfv, dx, rby, npby, xdp, stifn, stifr, dd_r2r_elem, sdd_r2r_elem, weight_md, ilenxv, numsph_glo_r2r, flg_sphinout_r2r, ipari, nloc_dmg)
subroutine send_mass_spmd(idp, nng, grnod, ms, in, dd_r2r, nglob, weight, flag_rot)
void init_link_c(int *igd, int *nng, int *itab, int *nodbuf, my_real_c *x, int *addcnel, int *cnel, int *ixc, int *ofc, int *info, int *typ, int *cdt, int *cdr, int *print, int *rddl, int *nlink, my_real_c *dx)
void opensem_c(int *iroot, int *len, int *ispmd, int *nthr, int *ppid)
void get_name_c(char *name)
void get_fbuf_c(my_real_c *fbuf, int *len)
void init_link_nl_c(int *igd, int *nng, int *itab, int *nodbuf, my_real_c *x, int *print, my_real_c *dx, int *ndof_nl, int *nb_tot_dof, int *nlnk)
void get_mass_rby_c(int *idp, int *nng, int *nodbuf, my_real_c *ms, my_real_c *in, my_real_c *x, int *npby, int *nrbody, my_real_c *rby, int *nnpby, int *nrby)
void get_mass_c(int *idp, int *nng, int *nodbuf, my_real_c *ms, my_real_c *in)
void send_mass_spmd_c(int *idp, int *nng, my_real_c *buf1, my_real_c *buf2, int *iroddl)
void get_mass_rby_spmd_c(int *idp, int *nng, my_real_c *buf1, my_real_c *buf2, my_real_c *buf3, my_real_c *buf4)
void init_link_spmd_c(int *igd, int *nng, int *dbnod, int *nbproc, int *ibuf, int *dbibuf, int *dbnbuf, int *ddbuf, my_real_c *rbuf, int *dim, int *ibufnb, int *ibufcnel, int *nbel, int *dimel, int *ibufel, int *ibufelnbnod, int *ibufelnod, int *dimb, int *ibufcneldb, int *ibufnbeldb, int *typ, int *bcs, int *print, int *rddl, int *nl, int *nlnk, int *iex)
void send_mass_rby_spmd_c(int *idp, int *nng, my_real_c *buf1, my_real_c *buf2, int *buf3, my_real_c *buf4, my_real_c *buf5, int *iroddl)
void init_buf_spmd_c(int *igd, int *nng, int *itab, int *nodbuf, my_real_c *x, int *addcnel, int *cnel, int *ixc, int *ofc, int *tlel, int *lel, int *lelnb, int *tleln, int *leln, int *nbelem, int *tcnel, int *cnelem2, int *wgt, int *tcneldb, int *cnelemdb, int *info, int *typ, int *nglob)
void init_activ_c(int *activ)
void send_fbuf_c(my_real_c *fbuf, int *len)
void get_mass_spmd_c(int *idp, int *nng, my_real_c *buf1, my_real_c *buf2)
void send_sock_init_c(int *iroot, int *len, int *ispmd, int *sd, int *maxproc, int *imach)
void send_ibuf_c(int *ibuf, int *len)
void get_ibuf_c(int *ibuf, int *len)
void send_mass_rby_c(int *idp, int *nng, int *nodbuf, my_real_c *ms, my_real_c *in, int *npby, int *nrbody, my_real_c *rby, int *tag, int *add_rby, int *nnpby, int *nrby)
void send_mass_nl_c(int *idp, int *nng, int *iadd_nl, my_real_c *ms)
void connection_sock_c(int *ispmd, int *sd, char *addr)
void send_mass_c(int *idp, int *nng, int *nodbuf, my_real_c *ms, my_real_c *in)
void openfifo_c(int *iroot, int *len, int *fdw, int *fdr, int *sd, int *ispmd, int *nthr, int *ppid)
subroutine spmd_allglob_isum9(v, len)
subroutine spmd_ibcast(tabi, tabr, n1, n2, from, add)
subroutine spmd_r2r_iget4(itab, nng, grnod, dd_r2r, weight, ibuf, iex, dbnbuf, ddbuf, flag)
subroutine spmd_r2r_rget3(x, nng, grnod, dd_r2r, weight, 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_rset4(m, nng, grnod, dd_r2r, weight, bufr, iad_elem, fr_elem, lrbuf)
subroutine spmd_r2r_iget2(itab, nng, iex, ibuf, flag)
subroutine spmd_r2r_iget(itab, nng, grnod, dd_r2r, weight, ibuf, flag)
subroutine spmd_r2r_sync(addr)
subroutine spmd_exch_r2r_rby(npby, rby, iad_elem, fr_elem, size, lenr, dd_r2r, dd_r2r_elem, x)
subroutine spmd_r2r_idef(nng, grnod, weight, iex, tlel, tleln, tcnel, tcneldb)
subroutine spmd_rbcast(tabi, tabr, n1, n2, from, add)
subroutine inepri(xi, bm)