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 ,
77#include "implicit_f.inc"
81#include "vect01_c.inc"
87#include "boltpr_c.inc"
91 INTEGER IXS(,),ISEL(*),INUM(16,*),IPARTS(*),
92 . EADD(*),ITR1(*),INDEX(*),ITRI(8,*),
93 . ND, ISOLNOD(*), CEP(*),
94 . XEP(*),IXS10(6,*),IXS20(12,*),IXS16(8,*),
95 . NOD2ELS(*), ISOLOFF(*),
96 . TAGPRT_SMS(*), SPH2SOL(*),
97 . SOL2SPH(2,*),SOL2SPH_TYP(*),IFLAG_BPRELOAD(*)
98 INTEGER,
INTENT(IN) :: IPM(NPROPMI,NUMMAT)
99 INTEGER,
INTENT(INOUT) :: IGEO(NPROPGI,NUMGEO)
100 INTEGER,
INTENT(IN) :: DAMP_RANGE_PART(NPART)
101 my_real,
INTENT(IN) :: PM(NPROPM,NUMMAT), GEO(NPROPG,NUMGEO)
102 my_real,
INTENT(INOUT) :: RNOISE(NPERTURB,NUMELS)
104 TYPE (GROUP_) ,
DIMENSION(NGRBRIC) :: IGRBRIC
105 TYPE (SURF_) ,
DIMENSION(NSURF) :: IGRSURF
106 TYPE (CLUSTER_) ,
DIMENSION(NCLUSTER) :: CLUSTERS
107 TYPE(matparam_struct_) ,
TARGET,
DIMENSION(NUMMAT),
INTENT(IN) :: MAT_PARAM
112 . i,j,k,l,il,mln, ng, issn, npn, nn, n, mid, pid ,irep,
113 . ii,ii0,jj0,ii1,jj1,ii2,jj2,jj,ii3,jj3,ii4,jj4,ii5,jj5,
114 . ii6,jj6,jhbe,iso,igt,iint,mode,ieos,ivisc,ivisc0,tshell,
115 . iplast, ialel,mt,nfail,nfail0,itet4,icpre,icstr,irb ,
116 . nlay,nptr,npts,nptt,imat,inum_r2r(1+r2r_siu*numels),
117 . nsphdir,ipartsph,nuvar,isvis,iboltp,itet10,nloc_fail,
120 EXTERNAL MY_SHIFTL,MY_SHIFTR,MY_AND
121 INTEGER MY_SHIFTL,MY_SHIFTR,MY_AND
122 INTEGER ID, JALE_FROM_MAT, JALE_FROM_PROP
123 CHARACTER(LEN=NCHARTITLE) :: TITR
124 INTEGER,
DIMENSION(:),
ALLOCATABLE :: INDEX2
125 INTEGER :: CLUSTER_TYP,CLUSTER_NEL
126 INTEGER,
DIMENSION(:),
ALLOCATABLE :: SAVE_CLUSTER
127 my_real,
DIMENSION(:,:),
ALLOCATABLE :: xnum_rnoise
134 CALL my_alloc(index2,numels)
136 IF (nperturb > 0)
THEN
137 ALLOCATE(xnum_rnoise(nperturb,numels),stat=stat)
138 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
160 inum(13,i)=isolnod(i)
161 IF (nsubdom>0) inum_r2r(i) =
tag_elsf(i)
162 IF (nperturb > 0)
THEN
163 DO ipert = 1, nperturb
164 xnum_rnoise(ipert,i) = rnoise(ipert,i)
170 inum(14,i)=sol2sph(1,i)
171 inum(15,i)=sol2sph(2,i)
172 inum(16,i)=sol2sph_typ(i)
186 mln = nint(pm(19,abs(mid)))
188 IF (mln==6.AND.jpor/=2) mln=17
192 IF (mln == 36 .or. mln == 47)
THEN
204 nfail0 = mat_param(mid)%NFAIL
205 nloc_fail = mat_param(mid)%NLOC
213 issn = iabs(igeo(5,pid))
217 istrain = igeo(12,pid)
218 icpre = iabs(igeo(13,pid))
221 jcvt = iabs(igeo(16,pid))
223 itet10 = igeo(50,pid)
227 imat = igeo(100+il,pid)
228 nfail0 =
max(nfail0,mat_param(imat)%NFAIL)
229 IF (mat_param(imat)%IVISC > 0) ivisc0 = 1
231 ELSEIF (mat_param(mid)%IVISC > 0)
THEN
235 igeo(34,pid) = ivisc0
237 IF (igt /= 15) iplast = igeo(9,pid)
238 IF (igt==15) jpor=2*nint(geo(28,pid))
240 IF (geo(130,pid)>0.) jclos=1
242 IF (geo(16,pid)/=zero.OR.geo(17,pid)/=zero) isvis=1
244 IF((jhbe == 14 .OR. jhbe == 222).AND.iso==8) numels8a=numels8a+1
245 IF (jhbe == 12) jhbe = 4
246 IF (jhbe==2) jhbe = 0
248 jale_from_mat = nint(pm(72,mid))
249 jale_from_prop = igeo(62,pid)
250 jale =
max(jale_from_mat, jale_from_prop)
252 IF(jale == 0 .AND. mln /= 18)jlag=1
257 ELSEIF(jale == 3)
THEN
261 IF(mln/=50)jtur=nint(pm(70,mid))
262 jthe=nint(pm(71,mid))
263 IF (jlag==0 .AND. pid/=0) issn=4
273 IF(tagprt_sms(iparts(ii))/=0)jsms=1
280 nsphdir =igeo(37,pid)
281 ipartsph=igeo(38,pid)
286 iboltp = iflag_bpreload(ii)
295 jsms=my_shiftl(jsms,26)
296 iso =my_shiftl(iso,27)
298 itri(1,i)=iso+jsms+igt
304 jtur=my_shiftl(jtur,1)
305 jeul=my_shiftl(jeul,2)
306 jlag=my_shiftl(jlag,3)
307 jale=my_shiftl(jale,4)
308 issn=my_shiftl(issn,5)
309 jhbe=my_shiftl(jhbe,9)
310 jpor=my_shiftl(jpor,13)
311 irb=my_shiftl(irb,18)
312 mln =my_shiftl(mln,22)
313 itri(3,i)=mln+jhbe+issn+jale+jlag+jeul+jtur+jthe+jpor+irb
316 npn =my_shiftl(npn,3)
317 iplast=my_shiftl(iplast,13)
318 icpre =my_shiftl(icpre,16)
319 icstr =icstr/100+2*mod(icstr/10,10)+4*mod(icstr,10)
320 icstr =my_shiftl(icstr,18)
321 irep=my_shiftl(irep,20)
322 jcvt=my_shiftl(jcvt,22)
323 iint=my_shiftl(iint,24)
324 istrain=my_shiftl(istrain,26)
325 itet4=my_shiftl(itet4,27)
326 nfail = my_shiftl(nfail0,29)
327 itri(4,i)=jclos+npn+iplast+icpre+icstr+irep+iint+jcvt+istrain
334 ieos = my_shiftl(ieos,0)
335 ivisc = my_shiftl(ivisc0,4)
336 nuvar = my_shiftl(nuvar,5)
337 isvis = my_shiftl(isvis,15)
338 iboltp = my_shiftl(iboltp,16)
339 itet10 = my_shiftl(itet10,17)
340 nloc_fail = my_shiftl(nloc_fail,19)
342 itri(7,i)=ieos+ivisc+nuvar+isvis+iboltp+itet10+nloc_fail
344 itri(8,i )= damp_range_part(iparts(ii))
348 CALL my_orders( mode, work, itri, index, numels , 8)
351 iparts(i) =inum(1,index(i))
352 isolnod(i)=inum(13,index(i))
353 IF (nsubdom>0)
tag_elsf(i)=inum_r2r(index(i))
354 IF (nperturb > 0)
THEN
355 DO ipert = 1, nperturb
356 rnoise(ipert,i) = xnum_rnoise(ipert,index(i))
368 ixs(k,i)=inum(k+1,index(i))
375 inum(3,i) = isoloff(i)
379 isoloff(i) = inum(3,index(i))
384 IF (npreload > 0)
THEN
386 inum(4,i) = iflag_bpreload(i)
390 iflag_bpreload(i) = inum(4,index(i))
395 IF (numels10+numels20+numels16 > 0)
THEN
398 inum(1,ii)=ixs10(1,i)
399 inum(2,ii)=ixs10(2,i)
400 inum(3,ii)=ixs10(3,i)
401 inum(4,ii)=ixs10(4,i)
402 inum(5,ii)=ixs10(5,i)
403 inum(6,ii)=ixs10(6,i)
408 ixs10(1,i)=inum(1,index(ii))
409 ixs10(2,i)=inum(2,index(ii))
410 ixs10(3,i)=inum(3,index(ii))
411 ixs10(4,i)=inum(4,index(ii))
412 ixs10(5,i)=inum(5,index(ii))
413 ixs10(6,i)=inum(6,index(ii))
417 ii = i + numels8 + numels10
418 inum(1,ii) =ixs20(1,i)
419 inum(2,ii) =ixs20(2,i)
420 inum(3,ii) =ixs20(3,i)
421 inum(4,ii) =ixs20(4,i)
422 inum(5,ii) =ixs20(5,i)
423 inum(6,ii) =ixs20(6,i)
424 inum(7,ii) =ixs20(7,i)
425 inum(8,ii) =ixs20(8,i)
426 inum(9,ii) =ixs20(9,i)
427 inum(10,ii)=ixs20(10,i)
428 inum(11,ii)=ixs20(11,i)
429 inum(12,ii)=ixs20(12,i)
433 ii = i + numels8 + numels10
434 ixs20(1,i)=inum(1,index(ii))
435 ixs20(2,i)=inum(2,index(ii))
436 ixs20(3,i)=inum(3,index(ii))
437 ixs20(4,i)=inum(4,index(ii))
438 ixs20(5,i)=inum(5,index(ii))
439 ixs20(6,i)=inum(6,index(ii))
440 ixs20(7,i)=inum(7,index(ii))
441 ixs20(8,i)=inum(8,index(ii))
442 ixs20(9,i)=inum(9,index(ii))
443 ixs20(10,i)=inum(10,index(ii))
444 ixs20(11,i)=inum(11,index(ii))
445 ixs20(12,i)=inum(12,index(ii))
449 ii = i + numels8 + numels10 + numels20
450 inum(1,ii) =ixs16(1,i)
451 inum(2,ii) =ixs16(2,i)
452 inum(3,ii) =ixs16(3,i)
453 inum(4,ii) =ixs16(4,i)
454 inum(5,ii) =ixs16(5,i)
455 inum(6,ii) =ixs16(6,i)
456 inum(7,ii) =ixs16(7,i)
457 inum(8,ii) =ixs16(8,i)
461 ii = i + numels8 + numels10 + numels20
462 ixs16(1,i)=inum(1,index(ii))
463 ixs16(2,i)=inum(2,index(ii))
464 ixs16(3,i)=inum(3,index(ii))
465 ixs16(4,i)=inum(4,index(ii))
466 ixs16(5,i)=inum(5,index(ii))
467 ixs16(6,i)=inum(6,index(ii))
468 ixs16(7,i)=inum(7,index(ii))
469 ixs16(8,i)=inum(8,index(ii))
485 IF (igrsurf(i)%ELTYP(j) == 1)
486 . igrsurf(i)%ELEM(j) = itr1(igrsurf(i)%ELEM(j))
493 nn=igrbric(i)%NENTITY
495 igrbric(i)%ENTITY(j) = itr1(igrbric(i)%ENTITY(j))
503 IF(sph2sol(i) /= 0)sph2sol(i)=itr1(sph2sol(i))
508 sol2sph(1,i)=inum(14,index(i))
509 sol2sph(2,i)=inum(15,index(i))
510 sol2sph_typ(i)=inum(16,index(i))
516 DO i=1,8*numels+6*numels10+12*numels20+8*numels16
517 IF(nod2els(i) /= 0)nod2els(i)=itr1(nod2els(i))
523 cluster_typ = clusters(i)%TYPE
524 IF(cluster_typ==1)
THEN
525 cluster_nel = clusters(i)%NEL
526 ALLOCATE( save_cluster( cluster_nel ) )
527 save_cluster( 1:cluster_nel ) = clusters(i)%ELEM( 1:cluster_nel )
529 clusters(i)%ELEM(j) = itr1( save_cluster( j ) )
531 DEALLOCATE( save_cluster )
542 jj0=itri(1,index(i-1))
544 jj=itri(2,index(i-1))
546 jj1=itri(3,index(i-1))
548 jj2=itri(4,index(i-1))
550 jj3=itri(5,index(i-1))
552 jj4=itri(6,index(i-1))
554 jj5=itri(7,index(i-1))
557 IF(ii0/=jj0.OR.ii/=jj.OR.ii1/=jj1.OR.ii2/=jj2.OR.
558 . ii5/=jj5.OR.ii3/=jj3.OR.ii4/=jj4.OR.
564 eadd(nd+1) = numels+1
567 IF (nperturb > 0)
THEN
568 IF (
ALLOCATED(xnum_rnoise))
DEALLOCATE(xnum_rnoise)