46
47
48
49 USE my_alloc_mod
52 USE multi_fvm_mod
56 USE matparam_def_mod
58 use element_mod , only : nixtg
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78#include "implicit_f.inc"
79
80
81
82#include "com04_c.inc"
83#include "com01_c.inc"
84#include "com_xfem1.inc"
85#include "param_c.inc"
86#include "vect01_c.inc"
87#include "remesh_c.inc"
88#include "sms_c.inc"
89#include "scr17_c.inc"
90#include "drape_c.inc"
91
92
93
94 integer
95 . ixtg(nixtg,*),isel(*),inum(10,*),nd,icnod(*),ixtg1(4,*),
96 . eadd(*), itr1(*), index(*), itri(8,*),iparttg(*),
97 . cep(*), xep(*),itrioff(*),
98 . igeo(npropgi,*),ipm(npropmi,*), ipart(lipart1,*),
99 . sh3tree(ksh3tree,*), nod2eltg(*), sh3trim(*),
100 . tagprt_sms(*),iworksh(3,*)
101 INTEGER , DIMENSION(NUMELTG) , INTENT(INOUT):: PTSH3N
102 INTEGER , INTENT(IN) :: DAMP_RANGE_PART(NPART)
104 . pm(npropm,*), geo(npropg,*), xnum(*), thk(*), rnoise(nperturb,*),
105 . sh3ang(*)
106
107 TYPE (STACK_PLY) :: STACK
108 TYPE(MULTI_FVM_STRUCT) :: MULTI_FVM
109 TYPE (DRAPE_) ,TARGET :: DRAPE(NUMELC_DRAPE + NUMELTG_DRAPE)
110 TYPE (DRAPEG_) :: DRAPEG,XNUM_DRAPEG
111 TYPE (DRAPE_) , DIMENSION(:), ALLOCATABLE :: XNUM_DRAPE
112 TYPE (DRAPE_PLY_) , POINTER :: DRAPE_PLY
113
114 TYPE (GROUP_) , DIMENSION(NGRSH3N) :: IGRSH3N
115 TYPE (SURF_) , DIMENSION(NSURF) :: IGRSURF
116 TYPE(MATPARAM_STRUCT_) ,DIMENSION(NUMMAT), INTENT(IN) :: MAT_PARAM
117
118
119
120 INTEGER, DIMENSION(:,:), ALLOCATABLE :: ISTOR
121 INTEGER WORK(70000)
122 INTEGER I, K, MLN, ISSN, NPN,NN,ICO,ID,
123 . MID, PID,
124 . J, ITHK,
125 . IPLA, II1, JJ1, II2, JJ2, II, JJ,
126 . IGTYP, II3, JJ3,NELTG3,
127 . MSKMLN, MSKNPN, MSKISN, MODE,ICSEN,IFAIL,NFAIL,
128 . MSKIST, MSKIPL, MSKITH, MSKMID,MSKPID,MSKIRP,MSKTYP,IREP,
129 . II0,JJ0,ILEV,PRT,IADM,MSKIRB,IRB, II4, JJ4,
130 . IXFEM,IWARNHB,IPT,IMATLY,IPID,ISH3N,
131 . II5,JJ5,II6,JJ6,ISUBSTACK,IPPID,
132 . NB_LAW58,IPMAT,IPERT,STAT,NSLICE,KK,NPT_DRP,IE,
133 . IE0
134
135 CHARACTER(LEN=NCHARTITLE) :: TITR
136
137 INTEGER, DIMENSION(:), ALLOCATABLE :: INDEX2, INUM_PTSH3N
138 INTEGER, DIMENSION(:,:), ALLOCATABLE :: INUM_WORKSH
139
141 INTEGER MY_SHIFTL,MY_SHIFTR,MY_AND
142 my_real,
DIMENSION(:,:),
ALLOCATABLE :: xnum_rnoise
143 my_real,
DIMENSION(:),
ALLOCATABLE :: angle
144
145 DATA mskmln /o'00777000000'/
146 DATA msktyp /o'00000777000'/
147 DATA mskisn /o'00000000700'/
148 DATA mskist /o'00000000070'/
149 DATA mskipl /o'00000000007'/
150
151 DATA mskith /o'10000000000'/
152 DATA mskirp /o'07000000000'/
153 DATA msknpn /o'00777000000'/
154 DATA mskirb /o'00000000007'/
155
156 DATA mskmid /o'07777777777'/
157
158 DATA mskpid /o'07777777777'/
159
160
161 ALLOCATE(angle(numeltg))
162 ALLOCATE(inum_worksh(3,numeltg))
163
164 iwarnhb=0
165 IF(nadmesh /= 0)THEN
166 ALLOCATE( istor(ksh3tree+1,numeltg) )
167 ELSE
168 ALLOCATE( istor(0,0) )
169 ENDIF
171 ALLOCATE(xnum_drape(numeltg))
172 ALLOCATE(xnum_drapeg%INDX(numeltg))
173 xnum_drapeg%INDX = 0
174 DO i =1, numeltg
175 ie = drapeg%INDX(numelc + i)
176 IF(ie == 0) cycle
177 npt_drp = drape(ie)%NPLY_DRAPE
178 npt = drape(ie)%NPLY
179 ALLOCATE(xnum_drape(i)%INDX_PLY(npt))
180 ALLOCATE(xnum_drape(i)%DRAPE_PLY(npt_drp))
181 xnum_drape(i)%INDX_PLY= 0
182 DO j = 1,npt_drp
183 nslice = drape(ie)%DRAPE_PLY(j)%NSLICE
184 ALLOCATE(xnum_drape(i)%DRAPE_PLY(j)%RDRAPE(nslice,2))
185 ALLOCATE(xnum_drape(i)%DRAPE_PLY(j)%IDRAPE(nslice,2))
186 xnum_drape(i)%DRAPE_PLY(j)%RDRAPE = 0
187 xnum_drape(i)%DRAPE_PLY(j)%IDRAPE = 0
188 ENDDO
189 ENDDO
190 ELSE
191 ALLOCATE( xnum_drape(0) )
192 ENDIF
193 IF(abs(isigi) == 3 .OR. abs(isigi) == 4 .OR. abs(isigi) == 5) THEN
194 ALLOCATE(inum_ptsh3n(numeltg))
195 inum_ptsh3n = 0
196 ELSE
197 ALLOCATE(inum_ptsh3n(0))
198 ENDIF
199
200
201
202
203
204 IF (nperturb > 0) THEN
205 ALLOCATE(xnum_rnoise(nperturb,numeltg),stat=stat)
206 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
207 . msgtype=msgerror,
208 . c1='XNUM_RNOISE')
209 ENDIF
210
211 CALL my_alloc(index2,numeltg)
213 DO i=1,numeltg
215 eadd(i)=1
216 itri(7,i)=i
217 index(i)=i
218 inum(1,i)=iparttg(i)
219 inum(2,i)=itrioff(i)
220 xnum(i) = thk(i)
221 inum(3,i)=ixtg(1,i)
222 inum(4,i)=ixtg(2,i)
223 inum(5,i)=ixtg(3,i)
224 inum(6,i)=ixtg(4,i)
225 inum(7,i)=ixtg(5,i)
226 inum(8,i)=ixtg(6,i)
227 inum(9,i)=icnod(i)
228 inum(10,i)=ixtg(1,i)
229 inum_worksh(1,i) = iworksh(1,numelc + i)
230 inum_worksh(2,i) = iworksh(2,numelc + i)
231 inum_worksh(3,i) = iworksh(3,numelc + i)
232 IF (nperturb > 0) THEN
233 DO ipert = 1, nperturb
234 xnum_rnoise(ipert,i) = rnoise(ipert,i)
235 ENDDO
236 ENDIF
237 angle(i)=sh3ang(i)
238
239 ie = drapeg%INDX(numelc + i)
240 xnum_drapeg%INDX(i) = ie
241 IF(ie == 0) cycle
242 npt = drape(ie)%NPLY
243 xnum_drape(i)%NPLY = npt
244 xnum_drape(i)%INDX_PLY(1:npt) = drape(ie)%INDX_PLY(1:npt)
245 npt = drape(ie)%NPLY_DRAPE
246 xnum_drape(i)%NPLY_DRAPE = npt
247 xnum_drape(i)%THICK = drape(ie)%THICK
248 DO jj = 1, npt
249 drape_ply => drape(ie)%DRAPE_PLY(jj)
250 nslice = drape_ply%NSLICE
251 xnum_drape(i)%DRAPE_PLY(jj)%NSLICE = nslice
252 xnum_drape(i)%DRAPE_PLY(jj)%IPID = drape_ply%IPID
253 DO kk = 1,nslice
254 xnum_drape(i)%DRAPE_PLY(jj)%IDRAPE(kk,1)=drape_ply%IDRAPE(kk,1)
255 xnum_drape(i)%DRAPE_PLY(jj)%IDRAPE(kk,2)=drape_ply%IDRAPE(kk,2)
256 xnum_drape(i)%DRAPE_PLY(jj)%RDRAPE(kk,1)=drape_ply%RDRAPE(kk,1)
257 xnum_drape(i)%DRAPE_PLY(jj)%RDRAPE(kk,2)=drape_ply%RDRAPE(kk,2)
258 ENDDO
259 DEALLOCATE(drape_ply%IDRAPE, drape_ply%RDRAPE)
260 ENDDO
261 DEALLOCATE(drape(ie)%DRAPE_PLY)
262 DEALLOCATE(drape(ie)%INDX_PLY)
263 ENDDO
264 ELSE
265 DO i=1,numeltg
267 eadd(i)=1
268 itri(7,i)=i
269 index(i)=i
270 inum(1,i)=iparttg(i)
271 inum(2,i)=itrioff(i)
272 xnum(i) = thk(i)
273 inum(3,i)=ixtg(1,i)
274 inum(4,i)=ixtg(2,i)
275 inum(5,i)=ixtg(3,i)
276 inum(6,i)=ixtg(4,i)
277 inum(7,i)=ixtg(5,i)
278 inum(8,i)=ixtg(6,i)
279 inum(9,i)=icnod(i)
280 inum(10,i)=ixtg(1,i)
281 inum_worksh(1,i) = iworksh(1,numelc + i)
282 inum_worksh(2,i) = iworksh(2,numelc + i)
283 inum_worksh(3,i) = iworksh(3,numelc + i)
284 IF (nperturb > 0) THEN
285 DO ipert = 1, nperturb
286 xnum_rnoise(ipert,i) = rnoise(ipert,i)
287 ENDDO
288 ENDIF
289 angle(i)=sh3ang(i)
290 ENDDO
291 ENDIF
292 IF(abs(isigi)==3.OR.abs(isigi)== 4.OR.abs(isigi)==5)THEN
293 inum_ptsh3n(1:numeltg) = ptsh3n(1:numeltg)
294 ENDIF
295
296 IF(nadmesh/=0)THEN
297 DO k=1,ksh3tree
298 DO i=1,numeltg
299 istor(k,i)=sh3tree(k,i)
300 ENDDO
301 ENDDO
302 IF(lsh3trim/=0)THEN
303 DO i=1,numeltg
304 istor(ksh3tree+1,i)=sh3trim(i)
305 ENDDO
306 END IF
307 END IF
308
309 DO i=1,numeltg
310 xep(i)=cep(i)
311 ENDDO
312
313 DO 100 i = 1, numeltg
314 ii = i
315
316 IF(nadmesh==0)THEN
317 itri(1,i)=0
318 ELSE
319
320
321 prt = iparttg(ii)
322 iadm= ipart(10,prt)
323 IF(iadm==0)THEN
324
325 itri(1,i)=0
326 ELSE
327 ilev=sh3tree(3,i)
328 IF(ilev<0)ilev=-ilev-1
329 itri(1,i)=ilev+1
330 END IF
331 END IF
332
333 mid= ixtg(1,ii)
334 pid= ixtg(5,ii)
335 mln = nint(pm(19,mid))
336 IF(mln == 51)trimat=4
337
338 jthe = nint(pm(71,mid))
339 igtyp = igeo(11,pid)
340 npn = igeo(4,pid)
341 ish3n = igeo(18,pid)
342 ixfem = 0
343 nfail = mat_param(mid)%NFAIL
344 ifail = 0
345
346 IF (igtyp == 11) THEN
347 DO ipt = 1, npn
348 imatly = igeo(100+ipt,pid)
349 nfail =
max(nfail, mat_param(imatly)%NFAIL)
350 ENDDO
351 IF(icrack3d > 0)THEN
352
353 ixfem = mat_param(mid)%IXFEM
354 ENDIF
355 ELSEIF (igtyp == 17) THEN
356 npn = iworksh(1,numelc + ii)
357 isubstack =iworksh(3,numelc + ii)
358
359
360
361 ippid = 2
362 DO ipt = 1, npn
363 ipid = stack%IGEO(ippid+ipt,isubstack)
364 imatly = igeo(101, ipid)
365 nfail =
max(nfail, mat_param(imatly)%NFAIL)
366 ENDDO
367 ELSEIF (igtyp == 51 ) THEN
368
369
370
371 nb_law58 = 0
372 npn = iworksh(1,numelc + ii)
373 isubstack =iworksh(3,numelc + ii)
374 ippid = 2
375 DO ipt = 1, npn
376 ipid = stack%IGEO(ippid+ipt,isubstack)
377 imatly = igeo(101, ipid)
378 nfail =
max(nfail, mat_param(imatly)%NFAIL)
379
380 IF (nint(pm(19,imatly)) == 58) nb_law58 = nb_law58 + 1
381 ENDDO
382
383 IF (nb_law58 == npn) THEN
384 irep = 2
385 ELSEIF (nb_law58 > 0) THEN
386 irep = irep + 3
387 ENDIF
388 ELSEIF ( igtyp == 52 ) THEN
389
390
391
392 nb_law58 = 0
393 npn = iworksh(1,numelc + ii)
394 isubstack =iworksh(3,numelc + ii)
395 ippid = 2
396 ipmat = ippid + npn
397 DO ipt = 1, npn
398 ipid = stack%IGEO(ippid + ipt,isubstack)
399 imatly = stack%IGEO(ipmat + ipt,isubstack)
400 nfail =
max(nfail, mat_param(imatly)%NFAIL)
401
402 IF (nint(pm(19,imatly)) == 58) nb_law58 = nb_law58 + 1
403 ENDDO
404
405 IF (nb_law58 == npn) THEN
406 irep = 2
407 ELSEIF (nb_law58 > 0) THEN
408 irep = irep + 3
409 ENDIF
410
411 ELSE
412 IF(icrack3d > 0)THEN
413
414 ixfem = mat_param(mid)%IXFEM
415 IF (ixfem == 1) THEN
416 ixfem = 2
417 icrack3d = ixfem
418 ENDIF
419 END IF
420 ENDIF
421 IF (nfail > 0) ifail = 1
422
423
424 iexpan = ipm(218, mid)
425 ico = icnod(ii)
426 IF(ish3n>3.AND.ish3n<=29)THEN
428 CALL fretitl2(titr,igeo(npropgi-ltitr+1,pid),ltitr)
430 . msgtype=msgwarning,
431 . anmode=aninfo_blind_2,
433 . c1=titr,
434 . i2=ish3n,
435 . i3=ixtg(nixtg,ii))
436 iwarnhb=iwarnhb+1
437 ish3n=2
438 ENDIF
439 ithk = nint(geo(35,pid))
440 ipla = nint(geo(39,pid))
441 irep = igeo(6,pid)
442 icsen= igeo(3,pid)
443 IF (icsen > 0) icsen=1
444
445 IF(npn==0.AND.(mln==36.OR.mln==86))THEN
446 IF(ipla==0) ipla=1
447 IF(ipla==2) ipla=0
448 ELSEIF(npn==0.AND.mln==2)THEN
449 IF(ipla==2) ipla=0
450 ELSE
451 IF(ipla==2) ipla=0
452 IF(ipla==3) ipla=2
453 ENDIF
454 IF(ithk==2)THEN
455 ithk = 0
456 ELSEIF(mln==32)THEN
457 ithk = 1
458 ENDIF
459 ipla = iabs(ipla)
460 ithk = iabs(ithk)
461 istrain = nint(geo(11,pid))
462 IF(mln==19.OR.mln>=25.OR.mln==15)istrain = 1
463 issn = iabs(nint(geo(3,pid)))
464
465
466
467
468 irb = itrioff(i)
469
470
471 jsms = 0
472 IF(isms/=0)THEN
473 IF(idtgrs/=0)THEN
474 IF(tagprt_sms(iparttg(ii))/=0)jsms=1
475 ELSE
476 jsms=1
477 END IF
478 END IF
479
480 itri(2,i) = jsms
481
482
483
484
485
488
491
492
494 itri(3,i)=ipla+istrain+issn+igtyp+mln+ico
495
496
497
498
508
509 itri(4,i)=ithk+irep+npn+icsen+ish3n+jthe+irb+ifail+ixfem
510
511
512 itri(5,i)=mid
513
514
515 itri(6,i)=pid
516
517 itri(7,i) = iworksh(2,numelc + i)
518
519 itri(8,i )= damp_range_part(iparttg(ii))
520 100 CONTINUE
521
522 mode=0
523 CALL my_orders( mode, work, itri, index, numeltg , 8)
524
525 DO i=1,numeltg
526 iparttg(i)=inum(1,index(i))
527 thk(i) =xnum(index(i))
528 itrioff(i)=inum(2,index(i))
529 icnod(i) = inum(9,index(i))
530 ENDDO
531
532 DO i=1,numeltg
533 cep(i)=xep(index(i))
535 ENDDO
536
537 DO k=1,nixtg
538 DO i=1,numeltg
539 ixtg(k,i)=inum(k+2,index(i))
540 ENDDO
541 ENDDO
542
543 IF (numeltg6>0) THEN
544 neltg3 = numeltg-numeltg6
545 DO i = 1, numeltg6
546 ii = i + neltg3
547 inum(1,ii)=ixtg1(1,i)
548 inum(2,ii)=ixtg1(2,i)
549 inum(3,ii)=ixtg1(3,i)
550 ENDDO
551 DO i = 1, numeltg6
552 ii = i + neltg3
553 ixtg1(1,i)=inum(1,index(ii))
554 ixtg1(2,i)=inum(2,index(ii))
555 ixtg1(3,i)=inum(3,index(ii))
556 ENDDO
557 ENDIF
558
560 ie = drapeg%NUMSH4
561 DO i=1,numeltg
562 iworksh(1,numelc + i)= inum_worksh(1,index(i))
563 iworksh(2,numelc + i)= inum_worksh(2,index(i))
564 iworksh(3,numelc + i)= inum_worksh(3,index(i))
565 IF (nperturb > 0) THEN
566 DO ipert = 1, nperturb
567 rnoise(ipert,i) = xnum_rnoise(ipert,index(i))
568 ENDDO
569 ENDIF
570 sh3ang(i)=angle(index(i))
571
572 ie0 = xnum_drapeg%INDX(index(i))
573 drapeg%INDX(numelc + i) = 0
574 IF(ie0 == 0) cycle
575 ie = ie + 1
576 npt = xnum_drape(index(i))%NPLY
577 drape(ie)%NPLY = npt
578 drapeg%INDX(numelc + i)= ie
579 ALLOCATE(drape(ie)%INDX_PLY(npt))
580 drape(ie)%INDX_PLY(1:npt) = xnum_drape(index(i))%INDX_PLY(1:npt)
581 npt = xnum_drape(index(i))%NPLY_DRAPE
582 ALLOCATE(drape(ie)%DRAPE_PLY(npt))
583 drape(ie)%NPLY_DRAPE= npt
584 drape(ie)%THICK = xnum_drape(index(i))%THICK
585 DO jj = 1, npt
586 drape_ply => drape(ie)%DRAPE_PLY(jj)
587 nslice = xnum_drape(index(i))%DRAPE_PLY(jj)%NSLICE
588 drape_ply%NSLICE = nslice
589 drape_ply%IPID = xnum_drape(index(i))%DRAPE_PLY(jj)%IPID
590 ALLOCATE(drape_ply%IDRAPE(nslice,2), drape_ply%RDRAPE(nslice,2))
591 drape_ply%IDRAPE = 0
592 drape_ply%RDRAPE = zero
593 DO kk = 1,nslice
594 drape_ply%IDRAPE(kk,1) = xnum_drape(index(i))%DRAPE_PLY(jj)%IDRAPE(kk,1)
595 drape_ply%IDRAPE(kk,2) = xnum_drape(index(i))%DRAPE_PLY(jj)%IDRAPE(kk,2)
596 drape_ply%RDRAPE(kk,1) = xnum_drape(index(i))%DRAPE_PLY(jj)%RDRAPE(kk,1)
597 drape_ply%RDRAPE(kk,2) = xnum_drape(index(i))%DRAPE_PLY(jj)%RDRAPE(kk,2)
598 ENDDO
599 ENDDO
600 ENDDO
601 ELSE
602 DO i=1,numeltg
603 iworksh(1,numelc + i)= inum_worksh(1,index(i))
604 iworksh(2,numelc + i)= inum_worksh(2,index(i))
605 iworksh(3,numelc + i)= inum_worksh(3,index(i))
606 IF (nperturb > 0) THEN
607 DO ipert = 1, nperturb
608 rnoise(ipert,i) = xnum_rnoise(ipert,index(i))
609 ENDDO
610 ENDIF
611 sh3ang(i)=angle(index(i))
612 ENDDO
613 ENDIF
614
615 IF(abs(isigi)==3.OR.abs(isigi)== 4.OR.abs(isigi)==5)THEN
616 DO i=1,numeltg
617 ptsh3n(i) = inum_ptsh3n(index(i))
618 ENDDO
619 ENDIF
620 IF(nadmesh/=0)THEN
621 DO k=1,ksh3tree
622 DO i=1,numeltg
623 sh3tree(k,i)=istor(k,index(i))
624 ENDDO
625 ENDDO
626 IF(lsh3trim/=0)THEN
627 DO i=1,numeltg
628 sh3trim(i)=istor(ksh3tree+1,index(i))
629 ENDDO
630 END IF
631 END IF
632
633
634
635 DO i=1,numeltg
636 itr1(index(i))=i
637 ENDDO
638
639 IF(nadmesh/=0)THEN
640 DO i=1,numeltg
641 IF(sh3tree(1,i)/=0)
642 . sh3tree(1,i)=itr1(sh3tree(1,i))
643 IF(sh3tree(2,i)/=0)
644 . sh3tree(2,i)=itr1(sh3tree(2,i))
645 ENDDO
646 END IF
647
648
649
650 DO i=1,nsurf
651 nn=igrsurf(i)%NSEG
652 DO j=1,nn
653 IF(igrsurf(i)%ELTYP(j) == 7)
654 . igrsurf(i)%ELEM(j) = itr1(igrsurf(i)%ELEM(j))
655 ENDDO
656 ENDDO
657
658
659
660 DO i=1,ngrsh3n
661 nn=igrsh3n(i)%NENTITY
662 DO j=1,nn
663 igrsh3n(i)%ENTITY(j) = itr1(igrsh3n(i)%ENTITY(j))
664 ENDDO
665 ENDDO
666
667
668
669 DO i=1,3*numeltg+3*numeltg6
670 IF(nod2eltg(i) /= 0)nod2eltg(i)=itr1(nod2eltg(i))
671 END DO
672
673
674
675 nd=1
676 DO i=2,numeltg
677 ii0=itri(1,index(i))
678 jj0=itri(1,index(i-1))
679 ii =itri(2,index(i))
680 jj =itri(2,index(i-1))
681 ii1=itri(3,index(i))
682 jj1=itri(3,index(i-1))
683 ii2=itri(4,index(i))
684 jj2=itri(4,index(i-1))
685 ii3=itri(5,index(i))
686 jj3=itri(5,index(i-1))
687 ii4=itri(6,index(i))
688 jj4=itri(6,index(i-1))
689
690 ii5=itri(7,index(i))
691 jj5=itri(7,index(i-1))
692
693 ii6=itri(8,index(i))
694 jj6=itri(8,index(i-1))
695 IF (ii0/=jj0.OR.
696 . ii/=jj.OR.
697 . ii1/=jj1.OR.
698 . ii2/=jj2.OR.
699 . ii3/=jj3.OR.
700 . ii4/=jj4.OR.
701 . ii5/=jj5.OR.
702 . ii6/=jj6) THEN
703 nd=nd+1
704 eadd(nd)=i
705 ENDIF
706 ENDDO
707 eadd(nd+1) = numeltg+1
708 DO i=1,numeltg
709 IF(iwarnhb/=0)THEN
710 pid = ixtg(nixtg-1,i)
712 CALL fretitl2(titr,igeo(npropgi-ltitr+1,pid),ltitr)
714 . msgtype=msgwarning,
715 . anmode=aninfo,
717 . c1=titr)
718 iwarn=iwarn-1
719 ENDIF
720 ENDDO
721
722 IF (nperturb > 0) THEN
723 IF (ALLOCATED(xnum_rnoise)) DEALLOCATE(xnum_rnoise)
724 ENDIF
725
726 DEALLOCATE(index2)
727 DEALLOCATE( istor )
729 DO i =1, numeltg
730 ie = xnum_drapeg%INDX(i)
731 IF(ie == 0) cycle
732 npt_drp = xnum_drape(i)%NPLY_DRAPE
733 DO j = 1,npt_drp
734 DEALLOCATE(xnum_drape(i)%DRAPE_PLY(j)%RDRAPE)
735 DEALLOCATE(xnum_drape(i)%DRAPE_PLY(j)%IDRAPE)
736 ENDDO
737 DEALLOCATE(xnum_drape(i)%DRAPE_PLY,xnum_drape(i)%INDX_PLY)
738 ENDDO
739 DEALLOCATE( xnum_drape ,xnum_drapeg%INDX)
740 ELSE
741 DEALLOCATE( xnum_drape )
742 ENDIF
743 IF(ALLOCATED(inum_ptsh3n))DEALLOCATE(inum_ptsh3n)
744
745
746 DEALLOCATE(inum_worksh, angle)
747 RETURN
void my_orders(int *mode, int *iwork, int *data, int *index, int *n, int *irecl)
integer, parameter nchartitle
type(reorder_struct_) permutation
int my_shiftr(int *a, int *n)
int my_shiftl(int *a, int *n)
int my_and(int *a, int *b)
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)