45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66 USE my_alloc_mod
74 USE matparam_def_mod
75
76
77
78#include "implicit_f.inc"
79
80
81
82#include "vect01_c.inc"
83#include "com04_c.inc"
84#include "com_xfem1.inc"
85#include "param_c.inc"
86#include "remesh_c.inc"
87#include "sms_c.inc"
88#include "scr17_c.inc"
89#include "r2r_c.inc"
90#include "drape_c.inc"
91#include "com01_c.inc"
92
93
94
95 INTEGER IXC(NIXC,*),ISEL(*),INUM(9,*),IPARTC(*), ISHEOFF(*),
96 . EADD(*),ITR1(*),INDEX(*),ITRI(8,*),
97 . ND, CEP(*), XEP(*),
98 . IGEO(NPROPGI,*),IPM(NPROPMI,*),IPART(LIPART1,*),
99 . SH4TREE(KSH4TREE,*), NOD2ELC(*), SH4TRIM(*),
100 . TAGPRT_SMS(*) ,LGAUGE(3,*),
101 . IWORKSH(3,*)
102 INTEGER , DIMENSION(NUMELC) , INTENT(INOUT):: PTSHEL
103 INTEGER , INTENT(IN) :: DAMP_RANGE_PART(NPART)
104
106 . pm(npropm,*), geo(npropg,*),xnum(*),thk(*), rnoise(nperturb,*),
107 . sh4ang(*)
108
109 TYPE (STACK_PLY) :: STACK
110 TYPE (DRAPE_) , TARGET :: (NUMELC_DRAPE + NUMELTG_DRAPE)
111 TYPE (DRAPEG_) :: DRAPEG
112 TYPE (DRAPE_) , DIMENSION(:), ALLOCATABLE :: XNUM_DRAPE
113 TYPE (DRAPEG_) :: XNUM_DRAPEG
114 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT),INTENT(IN) :: MAT_PARAM
115
116 TYPE (GROUP_) , DIMENSION(NGRSHEL) :: IGRSH4N
117 TYPE (SURF_) , DIMENSION(NSURF) ::
118
119
120
121 INTEGER, DIMENSION(:,:), ALLOCATABLE :: ISTOR,INUM_DRAPE
122 INTEGER WORK(70000)
123 INTEGER I, K, MLN, NG, ISSN, NPN, IFIO, NN,L,IGTYP,
124 . MLN0, ISSN0, IC, , MID, MID0, PID, PID0, ISTR0,
125 . IHBE, IHBE0, II, J, MIDN, PIDN, NSG, NEL, NE1,
126 . ITHK, ITHK0, IPLA, IPLA0,II1,JJ1,II2,JJ2,JJ,II3,JJ3,NGROU,
127 . MSKMLN,MSKNPN,MSKIHB,MSKISN,MSKIRB,MODE,ICSEN,IRB,
128 . MSKIST,MSKIPL,MSKITH,MSKMID,MSKPID,MSKIRP,MSKTYP,IREP,
129 . IPT,IMATLY,II0,JJ0,ILEV,PRT,IADM,DIR,II4,JJ4,N1,
130 . ,IFAIL,IXFEM,INUM_R2R(1+R2R_SIU*NUMELC),
131 . II5,JJ5,II6,JJ6,
132 . ISUBSTACK,IIGEO,IADI ,IPPID,NB_LAW58,IPMAT,
133 . IPERT,STAT,IP,NSLICE,KK,NPT_DRP,IE,IE0
134 INTEGER, DIMENSION(:,:), ALLOCATABLE :: INUM_WORKC
135 my_real,
DIMENSION(:),
ALLOCATABLE :: angle
137 INTEGER MY_SHIFTL,MY_SHIFTR,MY_AND,IPIDL
138 INTEGER, DIMENSION(:), ALLOCATABLE :: INDEX2, INUM_PTSHEL
139
140 my_real,
DIMENSION(:,:),
ALLOCATABLE :: xnum_rnoise
141
142 TYPE (DRAPE_PLY_) , POINTER :: DRAPE_PLY
143
144
145 DATA mskmln /o'07770000000'/
146 DATA msktyp /o'00007770000'/
147 DATA mskihb /o'00000007000'/
148 DATA mskisn /o'00000000700'/
149 DATA mskist /o'00000000070'/
150 DATA mskipl /o'00000000007'/
151
152 DATA mskith /o'10000000000'/
153 DATA mskirp /o'07000000000'/
154 DATA msknpn /o'00777000000'/
155 DATA mskirb /o'00000000007'/
156
157 DATA mskmid /o'07777777777'/
158
159 DATA mskpid /o'07777777777'/
160
161
162
163 ALLOCATE(angle(numelc))
164 ALLOCATE(inum_workc(3,numelc))
165 IF(nadmesh /= 0)THEN
166 ALLOCATE( istor(ksh4tree+1,numelc) )
167 ELSE
168 ALLOCATE( istor(0,0) )
169 ENDIF
171 ALLOCATE(xnum_drape(numelc))
172 ALLOCATE(xnum_drapeg%INDX(numelc))
173 xnum_drapeg%INDX = 0
174 DO i =1, numelc
175 ie = drapeg%INDX(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 xnum_drape(i)%INDX_PLY = 0
183 DO j = 1,npt_drp
184 nslice = drape(ie)%DRAPE_PLY(j)%NSLICE
185 ALLOCATE(xnum_drape(i)%DRAPE_PLY(j)%RDRAPE(nslice,2))
186 ALLOCATE(xnum_drape(i)%DRAPE_PLY(j)%IDRAPE(nslice,2))
187 xnum_drape(i)%DRAPE_PLY(j)%RDRAPE = 0
188 xnum_drape(i)%DRAPE_PLY(j)%IDRAPE = 0
189 ENDDO
190 ENDDO
191 ELSE
192 ALLOCATE( xnum_drape(0) )
193 ENDIF
194 IF(abs(isigi) == 3 .OR. abs(isigi) == 4 .OR. abs(isigi) == 5) THEN
195 ALLOCATE(inum_ptshel(numelc))
196 inum_ptshel = 0
197 ELSE
198 ALLOCATE(inum_ptshel(0))
199 ENDIF
200
201 IF (nperturb > 0) THEN
202 ALLOCATE(xnum_rnoise(nperturb,numelc),stat=stat)
203 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
204 . msgtype=msgerror,
205 . c1='XNUM_RNOISE')
206 ENDIF
207
208 CALL my_alloc(index2,numelc)
209
211 DO i=1,numelc
213 eadd(i)=1
214 itri(7,i)=i
215 index(i)=i
216 inum(1,i)=ipartc(i)
217 inum(2,i)=isheoff(i)
218 inum(3,i)=ixc(1,i)
219 inum(4,i)=ixc(2,i)
220 inum(5,i)=ixc(3,i)
221 inum(6,i)=ixc(4,i)
222 inum(7,i)=ixc(5,i)
223 inum(8,i)=ixc(6,i)
224 inum(9,i)=ixc(7,i)
225 xnum(i)=thk(i)
226 IF (nsubdom>0) inum_r2r(i) =
tag_elcf(i)
227 inum_workc(1,i) = iworksh(1,i)
228 inum_workc(2,i) = iworksh(2,i)
229 inum_workc(3,i) = iworksh(3,i)
230 IF (nperturb > 0) THEN
231 DO ipert = 1, nperturb
232 xnum_rnoise(ipert,i) = rnoise(ipert,i)
233 ENDDO
234 ENDIF
235 angle(i)=sh4ang(i)
236
237 ie = drapeg%INDX(i)
238 xnum_drapeg%INDX(i) = drapeg%INDX(i)
239 IF(ie == 0) cycle
240 npt = drape(ie)%NPLY
241 xnum_drape(i)% NPLY = npt
242 xnum_drape(i)%INDX_PLY(1:npt) = drape(ie)%INDX_PLY(1:npt)
243 npt = drape(ie)%NPLY_DRAPE
244 xnum_drape(i)%NPLY_DRAPE = npt
245 xnum_drape(i)%THICK = drape(ie)%THICK
246 DO jj = 1, npt
247 drape_ply => drape(ie)%DRAPE_PLY(jj)
248 nslice = drape_ply%NSLICE
249 xnum_drape(i)%DRAPE_PLY(jj)%NSLICE = nslice
250 xnum_drape(i)%DRAPE_PLY(jj)%IPID = drape_ply%IPID
251 DO kk = 1,nslice
252 xnum_drape(i)%DRAPE_PLY(jj)%IDRAPE(kk,1)=drape_ply%IDRAPE(kk,1)
253 xnum_drape(i)%DRAPE_PLY(jj)%IDRAPE(kk,2)=drape_ply%IDRAPE(kk,2)
254 xnum_drape(i)%DRAPE_PLY(jj)%RDRAPE(kk,1)=drape_ply%RDRAPE(kk,1)
255 xnum_drape(i)%DRAPE_PLY(jj)%RDRAPE(kk,2)=drape_ply%RDRAPE(kk,2)
256 ENDDO
257 DEALLOCATE(drape_ply%IDRAPE, drape_ply%RDRAPE)
258 ENDDO
259 DEALLOCATE(drape(ie)%DRAPE_PLY)
260 DEALLOCATE(drape(ie)%INDX_PLY)
261 ENDDO
262 ELSE
263 DO i=1,numelc
265 eadd(i)=1
266 itri(7,i)=i
267 index(i)=i
268 inum(1,i)=ipartc(i)
269 inum(2,i)=isheoff(i)
270 inum(3,i)=ixc(1,i)
271 inum(4,i)=ixc(2,i)
272 inum(5,i)=ixc(3,i)
273 inum(6,i)=ixc(4,i)
274 inum(7,i)=ixc(5,i)
275 inum(8,i)=ixc(6,i)
276 inum(9,i)=ixc(7,i)
277 xnum(i)=thk(i)
278 IF (nsubdom>0) inum_r2r(i) =
tag_elcf(i)
279 inum_workc(1,i) = iworksh(1,i)
280 inum_workc(2,i) = iworksh(2,i)
281 inum_workc(3,i) = iworksh(3,i)
282 IF (nperturb > 0) THEN
283 DO ipert = 1, nperturb
284 xnum_rnoise(ipert,i) = rnoise(ipert,i)
285 ENDDO
286 ENDIF
287 angle(i)=sh4ang(i)
288 ENDDO
289 ENDIF
290 IF(abs(isigi)==3.OR.abs(isigi)== 4.OR.abs(isigi)==5)THEN
291 inum_ptshel(1:numelc) = ptshel(1:numelc)
292 ENDIF
293
294 IF(nadmesh /= 0)THEN
295 DO k=1,ksh4tree
296 DO i=1,numelc
297 istor(k,i)=sh4tree(k,i)
298 ENDDO
299 ENDDO
300 IF(lsh4trim/=0)THEN
301 DO i=1,numelc
302 istor(ksh4tree+1,i)=sh4trim(i)
303 ENDDO
304 END IF
305 END IF
306
307 DO i=1,numelc
308 xep(i)=cep(i)
309 ENDDO
310
311 DO i = 1, numelc
312 ii = i
313
314 IF(nadmesh == 0)THEN
315 itri(1,i)=0
316 ELSE
317
318
319 prt = ipartc(ii)
320 iadm= ipart(10,prt)
321 IF(iadm==0)THEN
322
323 itri(1,i)=0
324 ELSE
325 ilev= sh4tree(3,i)
326 IF(ilev<0)ilev=-ilev-1
327 itri(1,i)=ilev+1
328 END IF
329 END IF
330
331 mid= ixc(1,ii)
332 pid= ixc(6,ii)
333 mln = nint(pm(19,mid))
334 igtyp= igeo(11,pid)
335 jthe = nint(pm(71,mid))
336 npn = igeo(4,pid)
337 ihbe = nint(geo(171,pid))
338 ithk = nint(geo(35,pid))
339 ipla = nint(geo(39,pid))
340 irep = igeo(6,pid)
341 ishxfem_ply = igeo(19,pid)
342 nfail = 0
343 ifail = 0
344 ixfem = 0
345 IF (igtyp == 11) THEN
346 DO ipt = 1, npn
347 imatly = igeo(100+ipt,pid)
349 ENDDO
350 IF(icrack3d > 0)THEN
351
352 ixfem = mat_param(mid)%IXFEM
353 ENDIF
354 ELSEIF(igtyp == 17) THEN
355 npn = iworksh(1,ii)
356 isubstack =iworksh(3, ii)
357
358
359
360 ippid = 2
361 DO ipt = 1, npn
362
363 ipidl = stack%IGEO(ippid + ipt ,isubstack)
364 imatly = igeo(101,ipidl)
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,ii)
373 isubstack = iworksh(3, ii)
374 ippid = 2
375 DO ipt = 1,npn
376 ipidl = stack%IGEO(ippid + ipt,isubstack)
377 imatly = igeo(101,ipidl)
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,ii)
394 isubstack = iworksh(3, ii)
395 ippid = 2
396 ipmat = ippid + npn
397 DO ipt = 1,npn ! nb of plys
398 ipidl = 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 nfail = mat_param(mid)%NFAIL
413 IF(icrack3d > 0)THEN
414
415 ixfem = mat_param(mid)%IXFEM
416 IF (ixfem == 1) THEN
417 ixfem = 2
418 icrack3d = ixfem
419 ENDIF
420 END IF
421 ENDIF
422 IF (nfail > 0) ifail = 1
423
424
425 iexpan = ipm(218, mid)
426 icsen= igeo(3,pid)
427 IF (icsen > 0) icsen=1
428 IF(npn == 0.AND.(mln == 36.OR.mln == 86))THEN
429 IF(ipla == 0) ipla=1
430 IF(ipla == 2) ipla=0
431
432 ELSEIF(npn == 0.AND.mln == 2)THEN
433 IF(ipla == 2) ipla=0
434 ELSE
435 IF(ipla == 2) ipla=0
436 IF(ipla == 3) ipla=2
437 ENDIF
438 IF(ithk == 2)THEN
439 ithk = 0
440 ELSEIF(mln == 32)THEN
441 ithk = 1
442 ENDIF
443 ipla = iabs(ipla)
444 ithk = iabs(ithk)
445 istrain = nint(geo(11,pid))
446 IF(mln == 19.OR.mln>=25.OR.mln == 15)istrain = 1
447 issn = iabs(nint(geo(3,pid)))
448
449
450
451
452 irb = isheoff(i)
453
454
455 jsms = 0
456 IF(isms/=0)THEN
457 IF(idtgrs/=0)THEN
458 IF(tagprt_sms(ipartc(ii))/=0)jsms=1
459 ELSE
460 jsms=1
461 END IF
462 END IF
463
464 itri(2,i) = jsms
465
466
467
468
474 itri(3,i)=ipla+istrain+issn+ihbe+igtyp+mln
475
476
477
478
479
489
490 itri(4,i)=ithk+irep+npn+icsen+jthe+iexpan+irb+ifail+ishxfem_ply
491 . +ixfem
492
493
494
495 itri(5,i)=mid
496
497
498 itri(6,i)=pid
499
500 itri(7,i) = iworksh(2,i)
501
502 itri(8,i )= damp_range_part(ipartc(ii))
503 ENDDO
504
505 mode=0
506 CALL my_orders( mode, work, itri, index, numelc , 8)
507
508 DO i=1,numelc
509 ipartc(i) =inum(1,index(i))
510 isheoff(i)=inum(2,index(i))
511 IF (nsubdom>0)
tag_elcf(i)=inum_r2r(index(i))
512 thk(i) =xnum(index(i))
513 ENDDO
514
515 DO i=1,numelc
516 cep(i)=xep(index(i))
518 ENDDO
519
520 DO k=1,7
521 DO i=1,numelc
522 ixc(k,i)=inum(k+2,index(i))
523 ENDDO
524 ENDDO
526 ie = 0
527 DO i=1,numelc
528 iworksh(1,i)= inum_workc(1,index(i))
529 iworksh(2,i)= inum_workc(2,index(i))
530 iworksh(3,i)= inum_workc(3,index(i))
531 IF (nperturb > 0) THEN
532 DO ipert = 1, nperturb
533 rnoise(ipert,i) = xnum_rnoise(ipert,index(i))
534 ENDDO
535 ENDIF
536 sh4ang(i)=angle(index(i))
537
538 ie0 = xnum_drapeg%INDX(index(i))
539 drapeg%INDX(i)= 0
540 IF(ie0 == 0) cycle
541 ie = ie + 1
542 npt = xnum_drape(index(i))% NPLY
543 drape(ie)%NPLY = npt
544 drapeg%INDX(i)= ie
545 ALLOCATE(drape(ie)%INDX_PLY(npt))
546 drape(ie)%INDX_PLY(1:npt) = xnum_drape(index(i))%INDX_PLY(1:npt)
547 npt = xnum_drape(index(i))%NPLY_DRAPE
548 ALLOCATE(drape(ie)%DRAPE_PLY(npt))
549 drape(ie)%NPLY_DRAPE= npt
550 drape(ie)%THICK = xnum_drape(index(i))%THICK
551 DO jj = 1, npt
552 drape_ply => drape(ie)%DRAPE_PLY(jj)
553 nslice = xnum_drape(index(i))%DRAPE_PLY(jj)%NSLICE
554 drape_ply%NSLICE = nslice
555 drape_ply%IPID = xnum_drape(index(i))%DRAPE_PLY(jj)%IPID
556 ALLOCATE(drape_ply%IDRAPE(nslice,2), drape_ply%RDRAPE(nslice,2))
557 DO kk = 1,nslice
558 drape_ply%IDRAPE(kk,1) = xnum_drape(index(i))%DRAPE_PLY(jj)%IDRAPE(kk,1)
559 drape_ply%IDRAPE(kk,2) = xnum_drape(index(i))%DRAPE_PLY(jj)%IDRAPE(kk,2)
560 drape_ply%RDRAPE(kk,1) = xnum_drape(index(i))%DRAPE_PLY(jj)%RDRAPE(kk,1)
561 drape_ply%RDRAPE(kk,2) = xnum_drape(index(i))%DRAPE_PLY(jj)%RDRAPE(kk,2)
562 ENDDO
563 ENDDO
564 ENDDO
565 ELSE
566 DO i=1,numelc
567 iworksh(1,i)= inum_workc(1,index(i))
568 iworksh(2,i)= inum_workc(2,index(i))
569 iworksh(3,i)= inum_workc(3,index(i
570 IF (nperturb > 0) THEN
571 DO ipert = 1, nperturb
572 rnoise(ipert,i) = xnum_rnoise(ipert,index(i))
573 ENDDO
574 ENDIF
575 sh4ang(i)=angle(index(i))
576 ENDDO
577 ENDIF
578 IF(abs(isigi)==3.OR.abs(isigi)== 4.OR.abs(isigi)==5)THEN
579 DO i=1,numelc
580 ptshel(i) = inum_ptshel(index(i))
581 ENDDO
582 ENDIF
583
584 IF(nadmesh /= 0)THEN
585 DO k=1,ksh4tree
586 DO i=1,numelc
587 sh4tree(k,i)=istor(k,index(i))
588 ENDDO
589 ENDDO
590 IF(lsh4trim/=0)THEN
591 DO i=1,numelc
592 sh4trim(i)=istor(ksh4tree+1,index
593 ENDDO
594 END IF
595 END IF
596
597
598
599 DO i=1,numelc
600 itr1(index(i))=i
601 ENDDO
602
603
604 IF(nadmesh /= 0)THEN
605 DO i=1,numelc
606 IF(sh4tree(1,i) /= 0)
607 . sh4tree(1,i)=itr1(sh4tree(1,i))
608 IF(sh4tree(2,i) /= 0)
609 . sh4tree(2,i)=itr1(sh4tree(2,i))
610 ENDDO
611 END IF
612
613
614
615 DO i=1,nsurf
616 nn=igrsurf(i)%NSEG
617 DO j=1,nn
618 IF(igrsurf(i)%ELTYP(j) == 3)
619 . igrsurf(i)%ELEM(j) = itr1(igrsurf(i)%ELEM(j))
620 ENDDO
621 ENDDO
622
623
624 DO i=1,nbgauge
625 n1 = lgauge(1,i)
626 IF(n1 <= 0) THEN
627 n1=-lgauge(3,i)
628 IF(n1 > 0) lgauge(3,i)=-itr1(n1)
629 ENDIF
630 ENDDO
631
632
633
634 DO i=1,ngrshel
635 nn=igrsh4n(i)%NENTITY
636 DO j=1,nn
637 igrsh4n(i)%ENTITY(j) = itr1(igrsh4n(i)%ENTITY(j))
638 ENDDO
639 ENDDO
640
641
642
643 DO i=1,4*numelc
644 IF (nod2elc(i) /= 0) nod2elc(i)=itr1(nod2elc(i))
645 END DO
646
647
648
649
650 nd=1
651 DO i=2,numelc
652 ii0=itri(1,index(i))
653 jj0=itri(1,index(i-1))
654 ii =itri(2,index(i))
655 jj =itri(2,index(i-1))
656 ii1=itri(3,index(i))
657 jj1=itri(3,index(i-1))
658 ii2=itri(4,index(i))
659 jj2=itri(4,index(i-1))
660 ii3=itri(5,index(i))
661 jj3=itri(5,index(i-1))
662 ii4=itri(6,index(i))
663 jj4=itri(6,index(i-1))
664
665 ii5=itri(7,index(i))
666 jj5=itri(7,index(i-1))
667
668 ii6=itri(8,index(i))
669 jj6=itri(8,index(i-1))
670 IF (ii0/=jj0 .or.
671 * ii/=jj .or.
672 * ii1/=jj1 .or.
673 * ii2/=jj2.OR.ii3 /= jj3.OR.ii4 /= jj4.OR.ii5 /= jj5 .or.
674 * ii6 /= jj6) THEN
675 nd=nd+1
676 eadd(nd)=i
677 ENDIF
678 ENDDO
679 eadd(nd+1) = numelc+1
680
681
682 IF (nperturb > 0) THEN
683 IF (ALLOCATED(xnum_rnoise)) DEALLOCATE(xnum_rnoise)
684 ENDIF
685
686 DEALLOCATE(index2)
687 DEALLOCATE( istor )
689 DO i =1, numelc
690 ie = xnum_drapeg%INDX(i)
691 IF(ie == 0) cycle
692 npt_drp = xnum_drape(i)%NPLY_DRAPE
693 DO j = 1,npt_drp
694 DEALLOCATE(xnum_drape(i)%DRAPE_PLY(j)%RDRAPE)
695 DEALLOCATE(xnum_drape(i)%DRAPE_PLY(j)%IDRAPE)
696 ENDDO
697 DEALLOCATE(xnum_drape(i)%DRAPE_PLY,xnum_drape(i)%INDX_PLY)
698 ENDDO
699 DEALLOCATE( xnum_drape ,xnum_drapeg%INDX)
700 ELSE
701 DEALLOCATE( xnum_drape )
702 ENDIF
703 IF(ALLOCATED(inum_ptshel))DEALLOCATE(inum_ptshel)
704
705 DEALLOCATE(angle,inum_workc)
706 RETURN
void my_orders(int *mode, int *iwork, int *data, int *index, int *n, int *irecl)
integer, dimension(:), allocatable tag_elcf
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)