36 1 IXS ,PM ,GEO ,INUM ,ISEL ,
37 2 ITR1 ,EADD ,INDEX ,ITRI ,IPARTS ,
38 3 ND ,IGRSURF ,IGRBRIC ,ISOLNOD ,
39 4 CEP ,XEP ,IXS10 ,IXS20 ,IXS16 ,
40 5 IGEO ,IPM ,NOD2ELS ,ISOLOFF ,
41 6 TAGPRT_SMS ,SPH2SOL ,SOL2SPH ,MAT_PARAM,
42 7 SOL2SPH_TYP,IFLAG_BPRELOAD,CLUSTERS ,RNOISE ,
43 8 DAMP_RANGE_PART,TRIMAT)
74 use element_mod ,
only : nixs
78#include "implicit_f.inc"
82#include "vect01_c.inc"
88#include "boltpr_c.inc"
92 INTEGER IXS(NIXS,NUMELS),ISEL(*),INUM(16,*),IPARTS(*),
93 . EADD(*),ITR1(*),INDEX(*),ITRI(8,*),
94 . ND, ISOLNOD(*), CEP(*),
95 . XEP(*),IXS10(6,*),IXS20(12,*),IXS16(8,*),
96 . NOD2ELS(*), ISOLOFF(*),
97 . TAGPRT_SMS(*), SPH2SOL(*),
98 . SOL2SPH(2,*),SOL2SPH_TYP(*),IFLAG_BPRELOAD(*)
99 INTEGER,
INTENT(IN) :: IPM(NPROPMI,)
100 INTEGER,
INTENT(INOUT) :: (NPROPGI,NUMGEO)
101 INTEGER,
INTENT(IN) :: (NPART)
102 my_real,
INTENT(IN) :: PM(,NUMMAT), GEO(NPROPG,NUMGEO)
103 my_real,
INTENT(INOUT) :: RNOISE(NPERTURB,)
105 TYPE (GROUP_) ,
DIMENSION(NGRBRIC) :: IGRBRIC
106 TYPE (SURF_) ,
DIMENSION(NSURF) :: IGRSURF
107 TYPE (CLUSTER_) ,
DIMENSION(NCLUSTER) :: CLUSTERS
108 TYPE(matparam_struct_) ,
TARGET,
DIMENSION(NUMMAT),
INTENT(IN) :: MAT_PARAM
109 INTEGER,
INTENT(INOUT) ::
114 . i,j,k,l,il,mln, ng, issn, npn, nn, n, mid, pid ,irep,
115 . ii,ii0,jj0,ii1,jj1,ii2,jj2
116 . ii6,jj6,jhbe,iso,igt,iint,mode,ieos,ivisc,ivisc0,tshell,
117 . iplast, ialel,mt,nfail,nfail0,itet4,icpre,icstr,irb ,
118 . nlay,nptr,npts,nptt,imat,inum_r2r(1+r2r_siu*numels),
119 . nsphdir,ipartsph,nuvar,isvis,iboltp,itet10,nloc_fail,
122 EXTERNAL MY_SHIFTL,MY_SHIFTR,MY_AND
123 INTEGER MY_SHIFTL,MY_SHIFTR,
124 INTEGER ID, JALE_FROM_MAT, JALE_FROM_PROP
125 CHARACTER(LEN=NCHARTITLE) :: TITR
126 INTEGER,
DIMENSION(:),
ALLOCATABLE :: INDEX2
127 INTEGER :: CLUSTER_TYP,
128 INTEGER,
DIMENSION(:),
ALLOCATABLE :: SAVE_CLUSTER
129 my_real,
DIMENSION(:,:),
ALLOCATABLE :: xnum_rnoise
136 CALL my_alloc(index2,numels)
138 IF (nperturb > 0)
THEN
139 ALLOCATE(xnum_rnoise(nperturb,numels),stat=stat)
140 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
162 inum(13,i)=isolnod(i)
163 IF (nsubdom>0) inum_r2r(i) =
tag_elsf(i)
164 IF (nperturb > 0)
THEN
165 DO ipert = 1, nperturb
166 xnum_rnoise(ipert,i) = rnoise(ipert,i)
172 inum(14,i)=sol2sph(1,i)
173 inum(15,i)=sol2sph(2,i)
174 inum(16,i)=sol2sph_typ(i)
188 mln = nint(pm(19,abs(mid)))
189 IF(mln == 51)trimat=4
191 IF (mln==6.AND.jpor/=2) mln=17
195 IF (mln == 36 .or. mln == 47)
THEN
207 nfail0 = mat_param(mid)%NFAIL
208 nloc_fail = mat_param(mid)%NLOC
216 issn = iabs(igeo(5,pid))
220 istrain = igeo(12,pid)
221 icpre = iabs(igeo(13,pid))
224 jcvt = iabs(igeo(16,pid))
226 itet10 = igeo(50,pid)
230 imat = igeo(100+il,pid)
231 nfail0 =
max(nfail0,mat_param(imat)%NFAIL)
232 IF (mat_param(imat)%IVISC > 0) ivisc0 = 1
234 ELSEIF (mat_param(mid)%IVISC > 0)
THEN
238 igeo(34,pid) = ivisc0
240 IF (igt /= 15) iplast = igeo(9,pid)
241 IF (igt==15) jpor=2*nint(geo(28,pid))
243 IF (geo(130,pid)>0.) jclos=1
245 IF (geo(16,pid)/=zero.OR.geo(17,pid)/=zero) isvis=1
247 IF((jhbe == 14 .OR. jhbe == 222).AND.iso==8) numels8a=numels8a+1
248 IF (jhbe == 12) jhbe = 4
249 IF (jhbe==2) jhbe = 0
251 jale_from_mat = nint(pm(72,mid))
252 jale_from_prop = igeo(62,pid)
253 jale =
max(jale_from_mat, jale_from_prop)
255 IF(jale == 0 .AND. mln /= 18)jlag=1
260 ELSEIF(jale == 3)
THEN
264 IF(mln/=50)jtur=nint(pm(70,mid))
265 jthe=nint(pm(71,mid))
266 IF (jlag==0 .AND. pid/=0) issn=4
276 IF(tagprt_sms(iparts(ii))/=0)jsms=1
283 nsphdir =igeo(37,pid)
284 ipartsph=igeo(38,pid)
289 iboltp = iflag_bpreload(ii)
298 jsms=my_shiftl(jsms,26)
299 iso =my_shiftl(iso,27)
301 itri(1,i)=iso+jsms+igt
307 jtur=my_shiftl(jtur,1)
308 jeul=my_shiftl(jeul,2)
309 jlag=my_shiftl(jlag,3)
310 jale=my_shiftl(jale,4)
311 issn=my_shiftl(issn,5)
312 jhbe=my_shiftl(jhbe,9)
313 jpor=my_shiftl(jpor,13)
314 irb=my_shiftl(irb,18)
315 mln =my_shiftl(mln,22)
316 itri(3,i)=mln+jhbe+issn+jale+jlag+jeul+jtur+jthe+jpor+irb
319 npn =my_shiftl(npn,3)
320 iplast=my_shiftl(iplast,13)
321 icpre =my_shiftl(icpre,16)
322 icstr =icstr/100+2*mod(icstr/10,10)+4*mod(icstr,10)
323 icstr =my_shiftl(icstr,18)
324 irep=my_shiftl(irep,20)
325 jcvt=my_shiftl(jcvt,22)
326 iint=my_shiftl(iint,24)
327 istrain=my_shiftl(istrain,26)
328 itet4=my_shiftl(itet4,27)
329 nfail = my_shiftl(nfail0,29)
330 itri(4,i)=jclos+npn+iplast+icpre+icstr+irep+iint+jcvt+istrain
337 ieos = my_shiftl(ieos,0)
338 ivisc = my_shiftl(ivisc0,4)
339 nuvar = my_shiftl(nuvar,5)
340 isvis = my_shiftl(isvis,15)
341 iboltp = my_shiftl(iboltp,16)
342 itet10 = my_shiftl(itet10,17)
343 nloc_fail = my_shiftl(nloc_fail,19)
345 itri(7,i)=ieos+ivisc+nuvar+isvis+iboltp+itet10+nloc_fail
347 itri(8,i )= damp_range_part(iparts(ii))
351 CALL my_orders( mode, work, itri, index, numels , 8)
354 iparts(i) =inum(1,index(i))
355 isolnod(i)=inum(13,index(i))
356 IF (nsubdom>0)
tag_elsf(i)=inum_r2r(index(i))
357 IF (nperturb > 0)
THEN
358 DO ipert = 1, nperturb
359 rnoise(ipert,i) = xnum_rnoise(ipert,index(i))
371 ixs(k,i)=inum(k+1,index(i))
378 inum(3,i) = isoloff(i)
382 isoloff(i) = inum(3,index(i))
387 IF (npreload > 0)
THEN
389 inum(4,i) = iflag_bpreload(i)
393 iflag_bpreload(i) = inum(4,index(i))
398 IF (numels10+numels20+numels16 > 0)
THEN
401 inum(1,ii)=ixs10(1,i)
402 inum(2,ii)=ixs10(2,i)
403 inum(3,ii)=ixs10(3,i)
404 inum(4,ii)=ixs10(4,i)
405 inum(5,ii)=ixs10(5,i)
406 inum(6,ii)=ixs10(6,i)
411 ixs10(1,i)=inum(1,index(ii))
412 ixs10(2,i)=inum(2,index(ii))
413 ixs10(3,i)=inum(3,index(ii))
414 ixs10(4,i)=inum(4,index(ii))
415 ixs10(5,i)=inum(5,index(ii))
416 ixs10(6,i)=inum(6,index(ii))
420 ii = i + numels8 + numels10
421 inum(1,ii) =ixs20(1,i)
422 inum(2,ii) =ixs20(2,i)
423 inum(3,ii) =ixs20(3,i)
424 inum(4,ii) =ixs20(4,i)
425 inum(5,ii) =ixs20(5,i)
426 inum(6,ii) =ixs20(6,i)
427 inum(7,ii) =ixs20(7,i)
428 inum(8,ii) =ixs20(8,i)
429 inum(9,ii) =ixs20(9,i)
430 inum(10,ii)=ixs20(10,i)
431 inum(11,ii)=ixs20(11,i)
432 inum(12,ii)=ixs20(12,i)
436 ii = i + numels8 + numels10
437 ixs20(1,i)=inum(1,index(ii))
438 ixs20(2,i)=inum(2,index(ii))
439 ixs20(3,i)=inum(3,index(ii))
440 ixs20(4,i)=inum(4,index(ii))
441 ixs20(5,i)=inum(5,index(ii))
442 ixs20(6,i)=inum(6,index(ii))
443 ixs20(7,i)=inum(7,index(ii))
444 ixs20(8,i)=inum(8,index(ii))
445 ixs20(9,i)=inum(9,index(ii))
446 ixs20(10,i)=inum(10,index(ii))
447 ixs20(11,i)=inum(11,index(ii))
448 ixs20(12,i)=inum(12,index(ii))
452 ii = i + numels8 + numels10 + numels20
453 inum(1,ii) =ixs16(1,i)
454 inum(2,ii) =ixs16(2,i)
455 inum(3,ii) =ixs16(3,i)
456 inum(4,ii) =ixs16(4,i)
457 inum(5,ii) =ixs16(5,i)
458 inum(6,ii) =ixs16(6,i)
459 inum(7,ii) =ixs16(7,i)
460 inum(8,ii) =ixs16(8,i)
464 ii = i + numels8 + numels10 + numels20
465 ixs16(1,i)=inum(1,index(ii))
466 ixs16(2,i)=inum(2,index(ii))
467 ixs16(3,i)=inum(3,index(ii))
468 ixs16(4,i)=inum(4,index(ii))
469 ixs16(5,i)=inum(5,index(ii))
470 ixs16(6,i)=inum(6,index(ii))
471 ixs16(7,i)=inum(7,index(ii))
472 ixs16(8,i)=inum(8,index(ii))
488 IF (igrsurf(i)%ELTYP(j) == 1)
489 . igrsurf(i)%ELEM(j) = itr1(igrsurf(i)%ELEM(j))
496 nn=igrbric(i)%NENTITY
498 igrbric(i)%ENTITY(j) = itr1(igrbric(i)%ENTITY(j))
506 IF(sph2sol(i) /= 0)sph2sol(i)=itr1(sph2sol(i))
511 sol2sph(1,i)=inum(14,index(i))
512 sol2sph(2,i)=inum(15,index(i))
513 sol2sph_typ(i)=inum(16,index(i))
519 DO i=1,8*numels+6*numels10+12*numels20+8*numels16
520 IF(nod2els(i) /= 0)nod2els(i)=itr1(nod2els(i))
526 cluster_typ = clusters(i)%TYPE
527 IF(cluster_typ==1)
THEN
528 cluster_nel = clusters(i)%NEL
529 ALLOCATE( save_cluster( cluster_nel ) )
530 save_cluster( 1:cluster_nel ) = clusters(i)%ELEM( 1:cluster_nel )
532 clusters(i)%ELEM(j) = itr1( save_cluster( j ) )
534 DEALLOCATE( save_cluster )
545 jj0=itri(1,index(i-1))
547 jj=itri(2,index(i-1))
549 jj1=itri(3,index(i-1))
551 jj2=itri(4,index(i-1))
553 jj3=itri(5,index(i-1))
555 jj4=itri(6,index(i-1))
557 jj5=itri(7,index(i-1))
559 jj6=itri(8,index(i-1))
560 IF(ii0/=jj0.OR.ii/=jj.OR.ii1/=jj1.OR.ii2/=jj2.OR.
561 . ii5/=jj5.OR.ii3/=jj3.OR.ii4/=jj4.OR.
567 eadd(nd+1) = numels+1
570 IF (nperturb > 0)
THEN
571 IF (
ALLOCATED(xnum_rnoise))
DEALLOCATE(xnum_rnoise)