33 SUBROUTINE w_isph(KXSP ,IXSP ,NUMSPH_L,CEPSP ,PROC ,
34 + NODLOCAL,NUMNOD_L,ISPCOND ,IPARG ,ISPHIO ,
35 + LEN_IA,SLONFSPH_L,SLPRTSPH_L,IPARTSP,
36 + LONFSPH,LPRTSPH, IBUFSSG_IO, CELSPH ,
37 + NSPHSOL_L,FIRST_SPHSOL_L,SPH2SOL ,SOL2SPH,
38 + IRST ,NUMELS8_L,CEP ,CEL ,SOL2SPH_TYP)
43#include "implicit_f.inc"
51#include "tabsiz_c.inc"
55 INTEGER NUMSPH_L, PROC, LEN_IA, NUMNOD_L,
56 . KXSP(NISP,*), IXSP(KVOISPH,*), CEPSP(*), NODLOCAL(*),
57 . ISPCOND(*), IPARG(NPARG,*),
58 . ISPHIO(*), SLONFSPH_L, SLPRTSPH_L,
59 . IPARTSP(*),LONFSPH(*),LPRTSPH(
64 INTEGER,
DIMENSION(:),
ALLOCATABLE :: LPRTSPH_L
65 INTEGER,
DIMENSION(:),
ALLOCATABLE :: LONFSPH_L,IBUFSSG_IO_L
66 INTEGER,
DIMENSION(:),
ALLOCATABLE :: SPH2SOL_L,ISPSYM,SOL2SPH_TYPL
67 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: SOL2SPH_L,IRST_L,IXSP_L
71 INTEGER I, , IE_L, NG, NG_L,
72 . kxsp_l(nisp,numsph_l),
74 . n,stat, inull, iun, numsph_el
75 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NOD2SP_L,NGLOCAL,
78 ALLOCATE( nod2sp_l(numnod_l),nglocal(ngroup) )
79 ALLOCATE( isphio_l(sisphio) )
82 ALLOCATE( ixsp_l(kvoisph,numsph_l) ,stat=stat)
83 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
88 ALLOCATE(lonfsph_l(slonfsph_l) ,stat=stat)
89 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
92 lonfsph_l(1:slonfsph_l)= 0
94 ALLOCATE(lprtsph_l(slprtsph_l) ,stat=stat)
95 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
98 lprtsph_l(1:slprtsph_l) = 0
100 ALLOCATE(ibufssg_io_l(sibufssg_io) ,stat=stat)
101 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
104 ibufssg_io_l(1:sibufssg_io) = 0
108 ALLOCATE(sph2sol_l(numsph_l) ,stat=stat)
109 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
112 sph2sol_l(1:numsph_l)= 0
113 ALLOCATE(sol2sph_l(2,numels8_l) ,stat=stat)
114 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
117 sol2sph_l(1:2,1:numels8_l)= 0
118 ALLOCATE(irst_l(3,nsphsol_l) ,stat=stat)
119 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
122 irst_l(1:3,1:nsphsol_l)= 0
123 ALLOCATE(sol2sph_typl(numels8_l) ,stat=stat)
124 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
127 sol2sph_typl(1:numels8_l)= 0
131 ALLOCATE(ispsym(numsph_l*nspcond) ,stat=stat)
132 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
139 IF(iparg(32,ng)==proc)
THEN
159 IF(cepsp(i)==proc)
THEN
163 kxsp_l(j,ie_l) = kxsp(j,i)
165 kxsp_l(2,ie_l) = sign(nglocal(sign(kxsp_l(2,ie_l),1)),
167 kxsp_l(3,ie_l) = nodlocal(kxsp_l(3,ie_l))
168 nod2sp_l(kxsp_l(3,ie_l)) = ie_l
169 DO j = 1, kxsp_l(5,ie_l)
170 ixsp_l(j,ie_l) = nodlocal(ixsp(j,i))
182 DO i=1,nbgauge*kvoisph
187 len_ia = len_ia + (numsph_l+nbgauge)*nisp
188 . + (numsph_l+nbgauge)*kvoisph + numnod_l
196 len_ia = len_ia + numsph_l*nspcond + nispcond*nspcond
205 IF(cepsp(n)==proc.AND.ipartsp(n)==iprt.AND.
206 . (kxsp(2,n) > 0 .OR. (kxsp(2,n)/=0.AND.
207 . n >= first_sphsol .AND. n < first_sphsol+nsphsol)))
THEN
208 suivsph_l=suivsph_l+1
209 lonfsph_l(suivsph_l)=celsph(n)
212 lprtsph_l((iprt-1)*2+1+2)=suivsph_l
214 IF(cepsp(n)==proc.AND.ipartsp(n
215 . (kxsp(2,n) < 0.AND.
216 . (n < first_sphsol .OR. n >= first_sphsol+nsphsol
THEN
217 suivsph_l=suivsph_l+1
218 lonfsph_l(suivsph_l)=celsph(n)
221 lprtsph_l((iprt-1)*2+2+2)=suivsph_l
225 DO i = 1, sibufssg_io
226 ibufssg_io_l(i) = nodlocal(ibufssg_io(i))
232 isphio_l(nisphio*(i-1)+n) = isphio(nisphio*(i-1)+n)
234 IF (isphio(nisphio*(i-1)+12)==2)
THEN
235 isphio_l(nisphio*(i-1)+13) = nodlocal(isphio(nisphio*(i-1)+13))
236 isphio_l(nisphio*(i-1)+14) = nodlocal(isphio(nisphio*(i-1)+14))
237 isphio_l(nisphio*(i-1)+15) = nodlocal(isphio(nisphio*(i-1)+15))
245 len_ia = len_ia + sisphio + slprtsph_l + slonfsph_l +
248 DEALLOCATE(lprtsph_l,lonfsph_l,ibufssg_io_l)
255 IF(cepsp(first_sphsol+i-1)==proc)
THEN
257 IF(cep(sph2sol(first_sphsol+i-1))/=proc)
THEN
259 .
'internal error - Solid and SPH not on the same domain'
262 sph2sol_l(first_sphsol_l+ie_l-1)=
263 . cel(sph2sol(first_sphsol+i-1))
265 irst_l(1,ie_l)=irst(1,i)
266 irst_l(2,ie_l)=irst(2,i)
267 irst_l(3,ie_l)=irst(3,i)
274 IF (cep(i)==proc)
THEN
276 numsph_el = sol2sph(2,i) - sol2sph(1,i)
277 IF (numsph_el > 0)
THEN
279 sol2sph_l(1,ie_l)=celsph(sol2sph(1,i)+1)-1
280 sol2sph_l(2,ie_l)=celsph(sol2sph(2,i))
281 sol2sph_typl(ie_l)=sol2sph_typ(i)
290 len_ia = len_ia + numsph_l + 2*numels8_l + 3*nsphsol_l
292 DEALLOCATE(sph2sol_l,sol2sph_l,irst_l,sol2sph_typl)
299 DEALLOCATE( nod2sp_l,nglocal )
300 DEALLOCATE( isphio_l )
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)
subroutine w_isph(kxsp, ixsp, numsph_l, cepsp, proc, nodlocal, numnod_l, ispcond, iparg, isphio, len_ia, slonfsph_l, slprtsph_l, ipartsp, lonfsph, lprtsph, ibufssg_io, celsph, nsphsol_l, first_sphsol_l, sph2sol, sol2sph, irst, numels8_l, cep, cel, sol2sph_typ)