45
46
47
48 USE my_alloc_mod
51 USE multi_fvm_mod
55 USE matparam_def_mod
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76#include "implicit_f.inc"
77
78
79
80#include "com04_c.inc"
81#include "com01_c.inc"
82#include "com_xfem1.inc"
83#include "param_c.inc"
84#include "vect01_c.inc"
85#include "remesh_c.inc"
86#include "sms_c.inc"
87#include "scr17_c.inc"
88#include "drape_c.inc"
89
90
91
92 integer
93 . ixtg(nixtg,*),isel(*),inum(10,*),nd,icnod(*),ixtg1(4,*),
94 . eadd(*), itr1(*), index(*), itri(7,*),iparttg(*),
95 . cep(*), xep(*),
96 . 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
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
110 TYPE (DRAPE_) ,DIMENSION(:) ,ALLOCATABLE :: XNUM_DRAPE
111 TYPE (DRAPEG_) ,ALLOCATABLE :: XNUM_DRAPEG
112 TYPE (DRAPE_PLY_) ,POINTER :: DRAPE_PLY
113 TYPE() ,DIMENSION(NUMMAT),INTENT(IN) :: MAT_PARAM
114
115 TYPE (GROUP_) , DIMENSION(NGRSH3N) :: IGRSH3N
116 TYPE (
surf_) ,
DIMENSION(NSURF) :: igrsurf
117
118
119
120 INTEGER, DIMENSION(:,:), ALLOCATABLE :: ISTOR,INUM_DRAPE
121 INTEGER WORK(70000)
122 INTEGER I, K, MLN, NG, ISSN, NPN, IFIO,NN,ICO,ID,
123 . MLN0, ISSN0, IC, N, MID, MID0, , PID0, ISTR0,
124 . IHBE, IHBE0, J, , NSG, NEL, , ITHK,
125 . ITHK0, IPLA, IPLA0, II1, JJ1, II2, JJ2, II, JJ,
126 . L, IGTYP, , JJ3,NGROU,NELTG3,
127 . MSKMLN, , MSKIHB, MSKISN, MODE,ICSEN,IFAIL,NFAIL,
128 . MSKIST, MSKIPL, MSKITH, MSKMID,MSKPID,MSKIRP,MSKTYP,IREP,
129 . II0,,ILEV,PRT,,,MSKIRB,IRB, II4, JJ4,
130 . IRUP,IXFEM,IWARNHB,IPT,IMATLY,IPID,ISH3N,
131 . INUM_WORKC(3,NUMELTG),II5,JJ5,ISUBSTACK,IIGEO,IADI,IPPID,
132 . NB_LAW58,IPMAT,IPERT,STAT,IALEL, MT,IP,NSLICE,KK,NPT_DRP,
133 . IEL, IEL0
135 . angle(numeltg)
136 CHARACTER(LEN=NCHARTITLE)::TITR
137
138 INTEGER, DIMENSION(:), ALLOCATABLE :: INDEX2, INUM_PTSH3N
139
141 INTEGER MY_SHIFTL,MY_SHIFTR,MY_AND
142 my_real,
DIMENSION(:,:),
ALLOCATABLE :: xnum_rnoise
143
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
162
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 iel = drapeg%INDX(numelc + i)
176 IF(iel == 0) cycle
177 npt_drp = drape(iel)%NPLY_DRAPE
178 npt = drape(iel)%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(iel)%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)
212
214 DO i=1,numeltg
216 eadd(i)=1
217 itri(7,i)=i
218 index(i)=i
219 inum(1,i)=iparttg(i)
220 inum(2,i)=itrioff(i)
221 xnum(i) = thk(i)
222 inum(3,i)=ixtg(1,i)
223 inum(4,i)=ixtg(2,i)
224 inum(5,i)=ixtg(3,i)
225 inum(6,i)=ixtg(4,i)
226 inum(7,i)=ixtg(5,i)
227 inum(8,i)=ixtg(6,i)
228 inum(9,i)=icnod(i)
229 inum(10,i)=ixtg(1,i)
230 inum_workc(1,i) = iworksh(1,numelc + i)
231 inum_workc(2,i) = iworksh(2,numelc + i)
232 inum_workc(3,i) = iworksh(3,numelc + i)
233 IF (nperturb > 0) THEN
234 DO ipert = 1, nperturb
235 xnum_rnoise(ipert,i) = rnoise(ipert,i)
236 ENDDO
237 ENDIF
238 angle(i)=sh3ang(i)
239
240 iel = drapeg%INDX(numelc + i)
241 xnum_drapeg%INDX(i) = iel
242 IF(iel == 0) cycle
243 npt = drape(iel)%NPLY
244 xnum_drape(i)%NPLY = npt
245 xnum_drape(i)%INDX_PLY(1:npt) = drape(iel)%INDX_PLY(1:npt)
246 npt = drape(iel)%NPLY_DRAPE
247 xnum_drape(i)%NPLY_DRAPE = npt
248 xnum_drape(i)%THICK = drape(iel)%THICK
249 DO jj = 1, npt
250 drape_ply => drape(iel)%DRAPE_PLY(jj)
251 nslice = drape_ply%NSLICE
252 xnum_drape(i)%DRAPE_PLY(jj)%NSLICE = nslice
253 xnum_drape(i)%DRAPE_PLY(jj)%IPID = drape_ply%IPID
254 DO kk = 1,nslice
255 xnum_drape(i)%DRAPE_PLY(jj)%IDRAPE(kk,1)=drape_ply%IDRAPE(kk,1)
256 xnum_drape(i)%DRAPE_PLY(jj)%IDRAPE(kk,2)=drape_ply%IDRAPE(kk,2)
257 xnum_drape(i)%DRAPE_PLY(jj)%RDRAPE(kk,1)=drape_ply%RDRAPE(kk,1)
258 xnum_drape(i)%DRAPE_PLY(jj)%RDRAPE(kk,2)=drape_ply%RDRAPE(kk,2)
259 ENDDO
260 DEALLOCATE(drape_ply%IDRAPE, drape_ply%RDRAPE)
261 ENDDO
262 DEALLOCATE(drape(iel)%DRAPE_PLY)
263 DEALLOCATE(drape(iel)%INDX_PLY)
264 ENDDO
265 ELSE
266 DO i=1,numeltg
268 eadd(i)=1
269 itri(7,i)=i
270 index(i)=i
271 inum(1,i)=iparttg(i)
272 inum(2,i)=itrioff(i)
273 xnum(i) = thk(i)
274 inum(3,i)=ixtg(1,i)
275 inum(4,i)=ixtg(2,i)
276 inum(5,i)=ixtg(3,i)
277 inum(6,i)=ixtg(4,i)
278
279 inum(8,i)=ixtg(6,i)
280 inum(9,i)=icnod(i)
281 inum(10,i)=ixtg(1,i)
282 inum_workc(1,i) = iworksh(1,numelc + i)
283 inum_workc(2,i) = iworksh(2,numelc + i)
284 inum_workc(3,i) = iworksh(3,numelc + i)
285 IF (nperturb > 0) THEN
286 DO ipert = 1, nperturb
287 xnum_rnoise(ipert,i) = rnoise(ipert,i)
288 ENDDO
289 ENDIF
290 angle(i)=sh3ang(i)
291 ENDDO
292 ENDIF
293
294 IF(abs(isigi)==3.OR.abs(isigi)== 4.OR.abs(isigi)==5)THEN
295 inum_ptsh3n(1:numeltg) = ptsh3n(1:numeltg)
296 ENDIF
297 IF(nadmesh/=0)THEN
298 DO k=1,ksh3tree
299 DO i=1,numeltg
300 istor(k,i)=sh3tree(k,i)
301 ENDDO
302 ENDDO
303 IF(lsh3trim/=0)THEN
304 DO i=1,numeltg
305 istor(ksh3tree+1,i)=sh3trim(i)
306 ENDDO
307 END IF
308 END IF
309
310 DO i=1,numeltg
311 xep(i)=cep(i)
312 ENDDO
313
314 DO 100 i = 1, numeltg
315 ii = i
316
317 IF(nadmesh==0)THEN
318 itri(1,i)=0
319 ELSE
320
321
322 prt = iparttg(ii)
323 iadm= ipart(10,prt)
324 IF(iadm==0)THEN
325
326 itri(1,i)=0
327 ELSE
328 ilev=sh3tree(3,i)
329 IF(ilev<0)ilev=-ilev-1
330 itri(1,i)=ilev+1
331 END IF
332 END IF
333
334 mid= ixtg(1,ii)
335 pid= ixtg(5,ii)
336 mln = nint(pm(19,mid))
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) ixfem = mat_param(mid)%IXFEM
352 ELSEIF (igtyp == 17) THEN
353 npn = iworksh(1,numelc + ii)
354 isubstack =iworksh(3,numelc + ii)
355 ippid = 2
356 DO ipt = 1, npn
357 ipid = stack%IGEO(ippid+ipt,isubstack)
358 imatly = igeo(101, ipid)
359 nfail =
max(nfail, mat_param(imatly)%NFAIL)
360 ENDDO
361 ELSEIF (igtyp == 51 ) THEN
362
363
364
365 nb_law58 = 0
366 npn = iworksh(1,numelc + ii)
367 isubstack =iworksh(3,numelc + ii)
368 ippid = 2
369 DO ipt = 1, npn
370 ipid = stack%IGEO(ippid+ipt,isubstack)
371 imatly = igeo(101, ipid)
372 nfail =
max(nfail, mat_param(imatly)%NFAIL)
373
374 IF (nint(pm(19,imatly)) == 58) nb_law58 = nb_law58 + 1
375 ENDDO
376
377 IF (nb_law58 == npn) THEN
378 irep = 2
379 ELSEIF (nb_law58 > 0) THEN
380 irep = irep + 3
381 ENDIF
382 ELSEIF ( igtyp == 52 ) THEN
383
384
385
386 nb_law58 = 0
387 npn = iworksh(1,numelc + ii)
388 isubstack =iworksh(3,numelc + ii)
389 ippid = 2
390 ipmat = ippid + npn
391 DO ipt = 1, npn
392 ipid = stack%IGEO(ippid + ipt,isubstack)
393 imatly = stack%IGEO(ipmat + ipt,isubstack)
394 nfail =
max(nfail, mat_param(imatly)%NFAIL)
395
396 IF (nint(pm(19,imatly)) == 58) nb_law58 = nb_law58 + 1
397 ENDDO
398
399 IF (nb_law58 == npn) THEN
400 irep = 2
401 ELSEIF (nb_law58 > 0) THEN
402 irep = irep + 3
403 ENDIF
404
405 ELSE
406 IF(icrack3d > 0)THEN
407
408 ixfem = mat_param(mid)%IXFEM
409 IF (ixfem == 1) THEN
410 ixfem = 2
411 icrack3d = ixfem
412 ENDIF
413 END IF
414 ENDIF
415 IF (nfail > 0) ifail = 1
416
417
418 iexpan = ipm(218, mid)
419 ico = icnod(ii)
420 IF(ish3n>3.AND.ish3n<=29)THEN
421 id = igeo(1,pid)
422 CALL fretitl2(titr,igeo(npropgi-ltitr+1,pid),ltitr)
424 . msgtype=msgwarning,
425 . anmode=aninfo_blind_2,
426 . i1=id,
427 . c1=titr,
428 . i2=ish3n,
429 . i3=ixtg(nixtg,ii))
430 iwarnhb=iwarnhb+1
431 ish3n=2
432 ENDIF
433 ithk = nint(geo(35,pid))
434 ipla = nint(geo(39,pid))
435 irep = igeo(6,pid)
436 icsen= igeo(3,pid)
437 IF (icsen > 0) icsen=1
438
439 IF(npn==0.AND.(mln==36.OR.mln==86))THEN
440 IF(ipla==0) ipla=1
441 IF(ipla==2) ipla=0
442 ELSEIF(npn==0.AND.mln==2)THEN
443 IF(ipla==2) ipla=0
444 ELSE
445 IF(ipla==2) ipla=0
446 IF(ipla==3) ipla=2
447 ENDIF
448 IF(ithk==2)THEN
449 ithk = 0
450 ELSEIF(mln==32)THEN
451 ithk = 1
452 ENDIF
453 istrain = nint(geo(11,pid))
454 IF(mln==19.OR.mln>=25.OR.mln==15)istrain = 1
455 issn = nint(geo(3,pid))
456
457
458
459
460 irb = itrioff(i)
461
462
463 jsms = 0
464 IF(isms/=0)THEN
465 IF(idtgrs/=0)THEN
466 IF(tagprt_sms(iparttg(ii))/=0)jsms=1
467 ELSE
468 jsms=1
469 END IF
470 END IF
471
472 itri(2,i) = jsms
473
474
475
476
477
478 istrain= my_shiftl(istrain,3)
479 issn = my_shiftl(issn,6)
480
481 igtyp = my_shiftl(igtyp,9)
482 mln = my_shiftl(mln,18)
483
484
485 ico = my_shiftl(ico,29)
486 itri(3,i)=ipla+istrain+issn+igtyp+mln+ico
487
488
489
490
491 ifail = my_shiftl(ifail,4)
492 iexpan = my_shiftl(iexpan,5)
493 jthe = my_shiftl(jthe,6)
494 ish3n = my_shiftl(ish3n,11)
495 icsen = my_shiftl(icsen,16)
496 npn = my_shiftl(npn,17)
497 irep = my_shiftl(irep,26)
498 ithk = my_shiftl(ithk,30)
499 IF(ixfem > 0)ixfem = my_shiftl(ixfem,9)
500
501 itri(4,i)=ithk+irep+npn+icsen+ish3n+jthe+irb+ifail+ixfem
502
503
504 itri(5,i)=mid
505
506
507 itri(6,i)=pid
508
509 itri(7,i) = iworksh(2,numelc + i)
510 100 CONTINUE
511
512 mode=0
513 CALL my_orders( mode, work, itri, index, numeltg , 7)
514
515 DO i=1,numeltg
516 iparttg(i)=inum(1,index(i))
517 thk(i) =xnum(index(i))
518 itrioff(i)=inum(2,index(i))
519 icnod(i) = inum(9,index(i))
520 ENDDO
521
522 DO i=1,numeltg
523 cep(i)=xep(index(i))
525 ENDDO
526
527 DO k=1,nixtg
528 DO i=1,numeltg
529 ixtg(k,i)=inum(k+2,index(i))
530 ENDDO
531 ENDDO
532
533
535 iel = drapeg%NUMSH4
536 DO i=1,numeltg
537 iworksh(1,numelc + i)= inum_workc(1,index(i))
538 iworksh(2,numelc + i)= inum_workc(2,index(i))
539 iworksh(3,numelc + i)= inum_workc(3,index(i))
540 IF (nperturb > 0) THEN
541 DO ipert = 1, nperturb
542 rnoise(ipert,i) = xnum_rnoise(ipert,index(i))
543 ENDDO
544 ENDIF
545 sh3ang(i)=angle(index(i))
546
547 iel0 = xnum_drapeg%INDX(index(i))
548 drapeg%INDX(numelc + i)= 0
549 IF(iel0 == 0) cycle
550 iel = iel + 1
551 npt = xnum_drape(index(i))%NPLY
552 drape(iel)%NPLY = npt
553 drapeg%INDX(numelc + i)= iel
554 ALLOCATE(drape(iel)%INDX_PLY(npt))
555 drape(iel)%INDX_PLY(1:npt) = xnum_drape(index(i))%INDX_PLY(1:npt)
556 npt = xnum_drape(index(i))%NPLY_DRAPE
557 drape(iel)%NPLY_DRAPE= npt
558 drape(iel)%THICK = xnum_drape(index(i))%THICK
559 ALLOCATE(drape(iel)%DRAPE_PLY(npt))
560 DO jj = 1, npt
561 drape_ply => drape(iel)%DRAPE_PLY(jj)
562 nslice = xnum_drape(index(i))%DRAPE_PLY(jj)%NSLICE
563 drape_ply%NSLICE = nslice
564 drape_ply%IPID = xnum_drape(index(i))%DRAPE_PLY(jj)%IPID
565 ALLOCATE(drape_ply%IDRAPE(nslice,2), drape_ply%RDRAPE(nslice,2))
566 drape_ply%IDRAPE = 0
567 drape_ply%RDRAPE = zero
568 DO kk = 1,nslice
569 drape_ply%IDRAPE(kk,1) = xnum_drape(index(i))%DRAPE_PLY(jj)%IDRAPE(kk,1)
570 drape_ply%IDRAPE(kk,2) = xnum_drape(index(i))%DRAPE_PLY(jj)%IDRAPE(kk,2)
571 drape_ply%RDRAPE(kk,1) = xnum_drape(index(i))%DRAPE_PLY(jj)%RDRAPE(kk,1)
572 drape_ply%RDRAPE(kk,2) = xnum_drape(index(i))%DRAPE_PLY(jj)%RDRAPE(kk,2)
573 ENDDO
574 ENDDO
575 ENDDO
576 ELSE
577 DO i=1,numeltg
578 iworksh(1,numelc + i)= inum_workc(1,index(i))
579 iworksh(2,numelc + i)= inum_workc(2,index(i))
580 iworksh(3,numelc + i)= inum_workc(3,index(i))
581 IF (nperturb > 0) THEN
582 DO ipert = 1, nperturb
583 rnoise(ipert,i) = xnum_rnoise(ipert,index(i))
584 ENDDO
585 ENDIF
586 sh3ang(i)=angle(index(i))
587 ENDDO
588 ENDIF
589 IF(abs(isigi)==3.OR.abs(isigi)== 4.OR.abs(isigi)==5)THEN
590 DO i=1,numeltg
591 ptsh3n(i) = inum_ptsh3n(index(i))
592 ENDDO
593 ENDIF
594 IF(nadmesh/=0)THEN
595 DO k=1,ksh3tree
596 DO i=1,numeltg
597 sh3tree(k,i)=istor(k,index(i))
598 ENDDO
599 ENDDO
600 IF(lsh3trim/=0)THEN
601 DO i=1,numeltg
602 sh3trim(i)=istor(ksh3tree+1,index(i))
603 ENDDO
604 END IF
605 END IF
606
607
608
609
610 DO i=1,numeltg
611 itr1(index(i))=i
612 ENDDO
613
614
615 IF(nadmesh/=0)THEN
616 DO i=1,numeltg
617 IF(sh3tree(1,i)/=0)
618 . sh3tree(1,i)=itr1(sh3tree(1,i))
619 IF(sh3tree(2,i)/=0)
620 . sh3tree(2,i)=itr1(sh3tree(2,i))
621 ENDDO
622 END IF
623
624
625
626 DO i=1,nsurf
627 nn=igrsurf(i)%NSEG
628 DO j=1,nn
629 IF(igrsurf(i)%ELTYP(j) == 7)
630 . igrsurf(i)%ELEM(j) = itr1(igrsurf(i)%ELEM(j))
631 ENDDO
632 ENDDO
633
634
635
636 DO i=1,ngrsh3n
637 nn=igrsh3n(i)%NENTITY
638 DO j=1,nn
639 igrsh3n(i)%ENTITY(j) = itr1(igrsh3n(i)%ENTITY(j))
640 ENDDO
641 ENDDO
642
643
644
645 DO i=1,3*numeltg
646 IF(nod2eltg(i) /= 0)nod2eltg(i)=itr1(nod2eltg(i))
647 END DO
648
649
650
651 nd=1
652 DO i=2,numeltg
653 ii0=itri(1,index(i))
654 jj0=itri(1,index(i-1))
655 ii =itri(2,index(i))
656 jj =itri(2,index(i-1))
657 ii1=itri(3,index(i))
658 jj1=itri(3,index(i-1))
659 ii2=itri(4,index(i))
660 jj2=itri(4,index(i-1))
661 ii3=itri(5,index(i))
662 jj3=itri(5,index(i-1))
663 ii4=itri(6,index(i))
664 jj4=itri(6,index(i-1))
665
666 ii5=itri(7,index(i))
667 jj5=itri(7,index(i-1))
668 IF (ii0/=jj0.OR.
669 . ii/=jj.OR.
670 . ii1/=jj1.OR.
671 . ii2/=jj2.OR.
672 . ii3/=jj3.OR.
673 . ii4/=jj4.OR.
674 . ii5 /= jj5) THEN
675 nd=nd+1
676 eadd(nd)=i
677 ENDIF
678 ENDDO
679 eadd(nd+1) = numeltg+1
680 DO i=1,numeltg
681 IF(iwarnhb/=0)THEN
682 pid = ixtg(nixtg-1,i)
683 id=igeo(1,pid)
684 CALL fretitl2(titr,igeo(npropgi-ltitr+1,pid),ltitr)
686 . msgtype=msgwarning,
687 . anmode=aninfo,
688 . i1=id,
689 . c1=titr)
690 iwarn=iwarn-1
691 ENDIF
692 ENDDO
693
694 IF (nperturb > 0) THEN
695 IF (ALLOCATED(xnum_rnoise)) DEALLOCATE(xnum_rnoise)
696 ENDIF
698 DO i =1, numeltg
699 iel0 = xnum_drapeg%INDX(i)
700 IF(iel0 == 0) cycle
701 npt_drp = xnum_drape(i)%NPLY_DRAPE
702 DO j = 1,npt_drp
703 DEALLOCATE(xnum_drape(i)%DRAPE_PLY(j)%RDRAPE)
704 DEALLOCATE(xnum_drape(i)%DRAPE_PLY(j)%IDRAPE)
705 ENDDO
706 DEALLOCATE(xnum_drape(i)%DRAPE_PLY,xnum_drape(i)%INDX_PLY)
707 ENDDO
708 DEALLOCATE(xnum_drape,xnum_drapeg%INDX)
709 ELSE
710 DEALLOCATE( xnum_drape)
711 ENDIF
712
713 DEALLOCATE(index2)
714 DEALLOCATE( istor )
715 IF(ALLOCATED(inum_ptsh3n))DEALLOCATE(inum_ptsh3n)
716 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)