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