37 2 IPARTSP, EADD, ND , CEPSP, DD_IAD,
38 3 IDX, IXSP, IPM , IGEO,
39 4 SPBUF,SPH2SOL,SOL2SPH,
40 5 IRST , NOD2SP ,PRINT_FLAG,MAT_PARAM ,
53#include "implicit_f.inc"
57#include "vect01_c.inc"
68 INTEGER,
DIMENSION(KVOISPH,NUMSPH),
INTENT(INOUT) ::
70 . KXSP(NISP,*),IPARG(NPARG,*),DD_IAD(NSPMD+1,*),EADD(*),
71 . IPART(LIPART1,*),IPARTSP(*),CEPSP(*),IXSP(KVOISPH,NUMSPH),
72 . IPM(NPROPMI,*), IGEO(NPROPGI,*),
73 . sph2sol(*), sol2sph(2,*), irst(3,*), nod2sp(*)
74 INTEGER,
INTENT(IN) :: PRINT_FLAG
76 . PM(NPROPM,*), SPBUF(NSPBUF,NUMSPH)
77 TYPE(MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT),
INTENT(IN) :: MAT_PARAM
81 INTEGER NGR1, NG, MT, MLN, I, P, NEL, MODE, NB,
82 . n, igtyp,jivf,jhbe,ijk,ne1,
83 . issn,iksnod,iorder,iprt,isleep,ieos,nel_prec,iun,ig,ifail,
84 . work(70000),ngp(nspmd+1),k,j,ii, mx, nfail, ir, ip, stat,
85 . ipartr2r, nod, jale_from_mat, jale_from_prop
86 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: INUM
87 INTEGER,
DIMENSION(:),
ALLOCATABLE :: INDEX
88 my_real,
DIMENSION(:,:),
ALLOCATABLE :: RNUM
91 CHARACTER(LEN=NCHARTITLE)::TITR
102 CALL my_alloc(inum,13,numsph)
103 CALL my_alloc(index,2*numsph)
104 CALL my_alloc(rnum,nspbuf,numsph)
107 nel = nel + eadd(n+1)-eadd(n)
114 CALL zeroin(1,nd*(nspmd+1),dd_iad(1,nspgroup+1))
120 dd_iad(p,nspgroup+n) = 0
125 nel = eadd(n+1)-eadd(n)
128 inum(1,i)=ipartsp(nft+i)
129 inum(2,i)=kxsp(1,nft+i)
130 inum(3,i)=kxsp(2,nft+i)
131 inum(4,i)=kxsp(3,nft+i)
132 inum(5,i)=kxsp(4,nft+i)
133 inum(6,i)=kxsp(5,nft+i)
134 inum(7,i)=kxsp(6,nft+i)
135 inum(8,i)=kxsp(7,nft+i)
136 inum(9,i)=kxsp(8,nft+i)
139 rnum(k,i)=spbuf(k,nft+i)
145 ixsps(j,i) = ixsp(j,nft+i)
149 CALL my_orders( mode, work, cepsp(nft+1), index, nel , 1)
151 ipartsp(i+nft)=inum(1,index(i))
152 kxsp(1,i+nft)=inum(2,index(i))
153 kxsp(2,i+nft)=inum(3,index(i))
154 kxsp(3,i+nft)=inum(4,index(i))
155 kxsp(4,i+nft)=inum(5,index(i))
156 kxsp(5,i+nft)=inum(6,index(i))
157 kxsp(6,i+nft)=inum(7,index(i))
158 kxsp(7,i+nft)=inum(8,index(i))
159 kxsp(8,i+nft)=inum(9,index(i))
163 spbuf(k,i+nft)=rnum(k,index(i))
169 ixsp(j,i+nft) = ixsps(j,index(i))
175 inum(10,i)=sph2sol(nft+i)
176 IF(nft+i >= first_sphsol .AND.
177 . nft+i < first_sphsol+nsphsol)
THEN
178 inum(11,i)=irst(1,nft+i-first_sphsol+1)
179 inum(12,i)=irst(2,nft+i-first_sphsol+1)
180 inum(13,i)=irst(3,nft+i-first_sphsol+1)
184 sph2sol(nft+i) = inum(10,index(i))
186 IF(nft+i >= first_sphsol .AND.
187 . nft+i < first_sphsol+nsphsol)
THEN
189 irst(1,nft+i-first_sphsol+1)=inum(11,index(i))
190 irst(2,nft+i-first_sphsol+1)=inum(12,index(i))
191 irst(3,nft+i-first_sphsol+1)=inum(13,index(i))
196 p = cepsp(nft+index(1))
199 IF (cepsp(nft+index(i))/=p)
THEN
200 dd_iad(p+1,nspgroup+n) = nb
202 p = cepsp(nft+index(i))
207 dd_iad(p+1,nspgroup+n) = nb
209 dd_iad(p,nspgroup+n) = dd_iad(p,nspgroup+n)
210 . + dd_iad(p-1,nspgroup+n)
213 dd_iad(p,nspgroup+n) = dd_iad(p-1,nspgroup+n)+1
215 dd_iad(1,nspgroup+n) = 1
220 index(i) = cepsp(nft+index(i))
223 cepsp(nft+i) = index(i)
236 n=sph2sol(first_sphsol)
237 sol2sph(1,n)=first_sphsol-1
238 sol2sph(2,n)=sol2sph(1,n)+1
239 DO i=first_sphsol+1,first_sphsol+nsphsol-1
240 IF(sph2sol(i)==n)
THEN
241 sol2sph(2,n)=sol2sph(2,n)+1
245 sol2sph(2,n)=sol2sph(1,n)+1
271 nel = dd_iad(p+1,nspgroup+n)-dd_iad(p,nspgroup+n)
273 nel_prec = dd_iad(p,nspgroup+n)-dd_iad(1,nspgroup+n)
275 ng = (nel-1)/nvsiz + 1
283 IF (nsubdom>0) ipartr2r =
tag_part(iprt)
285 mln =nint(pm(19,abs(mt)))
288 isorth=
max(igeo(17,ig),
min(iun,igeo(2,ig)))
291 iorder=int(get_u_geo(5,ig))
294 jale_from_mat = nint(pm(72,mt))
295 jale_from_prop = igeo(62,ig)
296 jale =
max(jale_from_mat, jale_from_prop)
299 IF(jale==0.AND.mln/=18)jlag=1
312 IF (jale+jeul/=0)
THEN
319 CALL fretitl2(titr,igeo(npropgi-ltitr+1,ig),ltitr)
322 . anmode=aninfo_blind_1,
330 IF(nsphsol/=0)isph2sol=sph2sol(ii)
332 ne1 =
min( nvsiz, nel + nel_prec - nft)
334 IF (mat_param(mt)%NFAIL > 0) ifail = 1
336 IF(mln/=14 .AND. mln/=24 .AND. mln/=25 .AND. mln<28)
THEN
337 nfail = mat_param(mt)%NFAIL
339 ii = eadd(n)+nft-1+ijk
340 mx = ipart(1,ipartsp(ii))
342 IF (mat_param(mx)%FAIL(ir)%IRUPT == 10)
THEN
355 kxsp(2,eadd(n)-1+nft+ijk)=
356 . sign(ngroup,isleep)
361 iparg(1,ngroup)=igtyp
364 iparg(3,ngroup)=eadd(n)-1 + nft
365 iparg(4,ngroup)=lbufel+1
368 iparg(7,ngroup) =jale
369 IF(isleep==-1.OR.isph2sol/=0)iparg(8,ngroup) =1
370 iparg(9,ngroup) =issn
371 IF(isleep>0)iparg(10,ngroup)=ne1
372 iparg(11,ngroup)=jeul
373 iparg(12,ngroup)=jtur
374 iparg(13,ngroup)=-abs(jthe)
375 iparg(14,ngroup)=jlag
377 iparg(23,ngroup)=jhbe
378 iparg(24,ngroup)=jivf
379 iparg(27,ngroup)=jpor
380 iparg(28,ngroup)=iksnod
381 iparg(32,ngroup)= p-1
382 iparg(38,ngroup)=igtyp
383 iparg(40,ngroup)=israt
384 iparg(42,ngroup)=isorth
385 iparg(43,ngroup)=ifail
387 iparg(69,ngroup)=isph2sol
390 IF (nsubdom>0) iparg(71,ngroup)= ipartr2r
392 IF(ipm(218,mt) > 0 .AND. mln /= 0 .AND. mln /= 13) iparg(49,ngroup)= 1
394 IF(mln/=14.AND.mln/=24.AND.mln/=25.AND.mln<28)
THEN
395 iparg(44,ngroup)= istrain
398 iparg(44,ngroup)=istrain
402 iparg(55,ngroup)= ieos
411 ngp(nspmd+1)=ngp(nspmd+1)+ngp(p)
412 dd_iad(p,nspgroup+n)=ngp(p)
414 dd_iad(nspmd+1,nspgroup+n)=ngp(nspmd+1)
417 nspgroup = nspgroup + nd
426 IF(print_flag>6)
THEN
428 WRITE(iout,1001)(n,iparg(1,n),iparg(2,n),iparg(3,n)+1,
429 + iparg(4,n),iparg(5,n),iparg(55,n),
433 1000
FORMAT(10x,
' 3D - SPH CELL GROUPS '/
434 + 10x,
' -------------------- '/
435 +
' GROUP CELL CELL FIRST BUFFER CELL IEOS'/
436 +
' MATERIAL NUMBER CELL ADDRESS TYPE TYPE'/)
437 1001
FORMAT(7(1x,i7,1x))
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)