110
111
112
121
122
123
124#include "implicit_f.inc"
125
126
127
128#include "units_c.inc"
129#include "drape_c.inc"
130
131#include "com04_c.inc"
132#include "param_c.inc"
133#include "scr03_c.inc"
134
135
136
137 INTEGER :: IWORKSH(3,*),IXC(NIXC,*),
138 . IXTG(NIXTG,*),IGEO(NPROPGI,*),
139 . (NPROPGI,*),INDXSH(NUMELC+NUMELTG)
140
141 TYPE (GROUP_) , DIMENSION(NGRSH3N) :: IGRSH3N
142 TYPE (GROUP_) , DIMENSION(NGRSHEL) :: IGRSH4N
143 TYPE (DRAPE_) , DIMENSION(NUMELC + NUMELTG) ,TARGET :: DRAPE_WRK
144 TYPE(SUBMODEL_DATA) LSUBMODEL(*)
145 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
146 TYPE(DRAPE_WORK_) , DIMENSION(NUMELC+NUMELTG), TARGET :: IWORK_T
147
148
149
150 INTEGER ::I, II,J,JJ,IX,ID,SHELL_ID,SH3N_ID,GRSHEL_ID,GRSH3N_ID,OFFC,
151 . IT1,IT2,IT3,IT4,NEL,IAD,ITY,IDSHEL,IDSH3N,PID,
152 . JPID,IGTYP,IE,IP,IDRP,JDRP,ISH,IGR,JGR,IS,LISTMAX,SLICELISTMAX,
153 . NIS,NO_ISH,NO_ISHEUSED_DRAPE,NUMS,NPT,IPPID,ISL,NPT_DRP,NSLICE,
154 . SLICELIST,NPT_SLICE,MAT_ID,NO_USED_DRAPE
155 INTEGER , DIMENSION(NDRAPE) :: DRP_SHEL, DRP_SH3N,DRAPE_ID
157 . thinning,theta_drape,bid
158 CHARACTER(LEN=NCHARTITLE) :: TITR,DRAPE_ENTITY
159 CHARACTER MESS*40,MESS1*40,MESS2*40, MESS3*40,MESS4*40,MESS5*40
160 DATA mess/'DRAPE DEFINITION '/
161 DATA mess1/'SHELL '/
162 DATA mess2/'GRSHEL '/
163 DATA mess3/'SH3N '/
164 DATA mess4/'GRSH3N '/
165 DATA mess5/'/DRAPE '/
166 INTEGER, DIMENSION (:) ,ALLOCATABLE :: TAGSH,INDX_TMP
167 INTEGER, DIMENSION (:,:),ALLOCATABLE :: ISH3N_DRP,IGRSH4N_DRP,ISH4N_DRP,IGRSH3N_DRP,
168 . ITMP_SH4N,ITMP_GRSH4N,ITMP_SH3N,ITMP_GRSH3N
169 INTEGER, DIMENSION(:,:,:),ALLOCATABLE :: ISH4N,ISH3N,ISH4N_GR,ISH3N_GR
170 my_real,
DIMENSION(:,:,:),
ALLOCATABLE :: rsh4n,rsh3n,rsh4n_gr,rsh3n_gr
171 LOGICAL :: IS_AVAILABLE
172
173 is_available = .false.
174 drape_id = 0
175 drp_shel = 0
176 drp_sh3n = 0
179
180 ALLOCATE(tagsh(numelc+numeltg), indx_tmp(numelc + numeltg))
181 indx_tmp = 0
182
183
184
185
187
188 DO i=1,ndrape
189 it1 = 0
190 it2 = 0
191 it3 = 0
192 it4 = 0
193 tagsh(1:numelc+numeltg) = 0
194
195
196
197 titr = ''
200 . option_titr = titr)
202 IF (ipri == 5) THEN
203 WRITE (iout,1001)
204 ELSE
205 WRITE (iout,1002)
206 ENDIF
207
208 CALL hm_get_intv(
'drapelistmax',listmax,is_available,lsubmodel)
209 slicelistmax = 0
210 DO ii = 1,listmax
211
213 slicelistmax=
max(slicelistmax,slicelist)
214 ENDDO
215
216 ALLOCATE(ish4n(listmax,slicelistmax,2) ,ish4n_gr(listmax,slicelistmax,2),
217 . ish3n(listmax,slicelistmax,2) ,ish3n_gr(listmax,slicelistmax,2),
218 . ish4n_drp(listmax,3),igrsh4n_drp(listmax,3),ish3n_drp(listmax,3),igrsh3n_drp(listmax,3),
219 . itmp_sh4n(2,listmax),itmp_sh3n(2,listmax),itmp_grsh4n(2,listmax),itmp_grsh3n(2,listmax))
220 ish4n = 0
221 ish3n = 0
222 ish4n_gr = 0
223 ish3n_gr = 0
224 ish4n_drp = 0
225 ish3n_drp = 0
226 igrsh4n_drp = 0
227 igrsh3n_drp = 0
228 itmp_sh4n =0
229 itmp_sh3n =0
230 itmp_grsh4n = 0
231 itmp_grsh3n = 0
232 ALLOCATE(rsh4n(listmax,slicelistmax,2),rsh3n(listmax,slicelistmax,2),rsh4n_gr(listmax,slicelistmax
233 . rsh3n_gr(listmax, slicelistmax,2))
234 rsh4n = zero
235 rsh3n = zero
236 rsh4n_gr = zero
237 rsh3n_gr = zero
238
239
240
241
242 DO ii = 1,listmax
243
245
246
247
249 drape_entity(len_trim(drape_entity)+1:10)=' '
250
251
252
253 IF (drape_entity(1:5) == 'SHELL') THEN
254
256 it1 = it1 + 1
257 ish4n_drp(it1,1) = shell_id
258 ish4n_drp(it1,2) =
id
259 ish4n_drp(it1,3) = slicelist
260 itmp_sh4n(1,it1) = shell_id
261 itmp_sh4n(2,it1) =
id
262 DO jj = 1, slicelist
263
265
267
269
271
272 IF (shell_id == 0) THEN
274 . msgtype=msgerror,
275 . anmode=aninfo,
276 . c1=mess5,
278 . c2=mess1,
279 . i2=shell_id)
280 ENDIF
281 IF (ipri == 5)
282 . WRITE(iout,'(10X,I10,14X,A6,7X,I10,7X,I10,2(15X,1PG20.13))')
283 .
id,drape_entity(1:5),shell_id,jj,thinning,theta_drape
284
285 theta_drape=theta_drape*pi/hundred80
286
287 IF (thinning == zero) thinning = one
288 ! tag shell element
289 ish4n(it1,jj,1) = mat_id
290 ish4n(it1,jj,2) = npt_slice
291 rsh4n(it1,jj,1) = thinning
292 rsh4n(it1,jj,2) = theta_drape
293 ENDDO
294
295
296
297 ELSEIF (drape_entity(1:4) == 'SH3N') THEN
298
300
301 it2 = it2 + 1
302 ish3n_drp(it2,1) = sh3n_id
303 ish3n_drp(it2,2) =
id
304 ish3n_drp(it2,3) = slicelist
305 itmp_sh3n(1,it2) = sh3n_id
306 itmp_sh3n(2,it2) =
id
307 DO jj = 1, slicelist
308
310
312
314
316
317 IF (sh3n_id == 0) THEN
319 . msgtype=msgerror,
320 . anmode=aninfo,
321 . c1=mess5,
323 . c2=mess3,
324 . i2=sh3n_id)
325 ENDIF
326 IF (ipri == 5)
327 . WRITE(iout,'(10X,I10,14X,A6,7X,I10,7X,I10,2(15X,1PG20.13))')
328 .
id,drape_entity(1:4),sh3n_id,jj,thinning,theta_drape
329
330 theta_drape=theta_drape*pi/hundred80
331
332 IF (thinning == zero) thinning = one
333
334 ish3n(it2,jj,1) = mat_id
335 ish3n(it2,jj,2) = npt_slice
336 rsh3n(it2,jj,1) = thinning
337 rsh3n(it2,jj,2) = theta_drape
338 ENDDO
339
340
341
342 ELSEIF (drape_entity(1:6) == 'GRSHEL') THEN
343
345
346
347 it3 = it3 + 1
348 igrsh4n_drp(it3,1) = grshel_id
349 igrsh4n_drp(it3,2) =
id
350 igrsh4n_drp(it3,3) = slicelist
351 itmp_grsh4n(1,it3) = grshel_id
352 itmp_grsh4n(2,it3) =
id
353 DO jj = 1, slicelist
355
357
359
361
362 IF (grshel_id == 0) THEN
364 . msgtype=msgerror,
365 . anmode=aninfo,
366 . c1=mess5,
368 . c2=mess2,
369 . i2=grshel_id)
370 ENDIF
371 IF (ipri == 5)
372 . WRITE(iout,'(10X,I10,14X,A6,7X,I10,7X,I10,2(15X,1PG20.13))')
373 .
id,drape_entity(1:6),grshel_id,jj,thinning,theta_drape
374
375 theta_drape=theta_drape*pi/hundred80
376
377 IF (thinning == zero) thinning = one
378
379 ish4n_gr(it3,jj,1) = mat_id
380 ish4n_gr(it3,jj,2) = npt_slice
381 rsh4n_gr(it3,jj,1) = thinning
382 rsh4n_gr(it3,jj,2) = theta_drape
383 ENDDO
384
385
386
387 ELSEIF (drape_entity(1:6) == 'GRSH3N') THEN
388
390
391 it4 = it4 + 1
392 igrsh3n_drp(it4,1) = grsh3n_id
393 igrsh3n_drp(it4,2) =
id
394 igrsh3n_drp(it4,3) = slicelist
395 itmp_grsh4n(1,it4) = grsh3n_id
396 itmp_grsh4n(2,it4) =
id
397 DO jj = 1, slicelist
398
400 ! drape slice Angle
401 CALL HM_GET_FLOAT_ARRAY_2INDEXES('theta_slice',THETA_DRAPE,II,JJ,IS_AVAILABLE,LSUBMODEL,UNITAB)
402 ! Id of the Mat
403 CALL HM_GET_INT_ARRAY_2INDEXES('mat_id',MAT_ID,II,JJ,IS_AVAILABLE,LSUBMODEL)
404 ! npt of slice
405 CALL HM_GET_INT_ARRAY_2INDEXES('npt_slice',NPT_SLICE,II,JJ,IS_AVAILABLE,LSUBMODEL)
406 ! Checking grsh3n ID
407 IF (GRSH3N_ID == 0) THEN
408 CALL ANCMSG(MSGID=1163,
409 . MSGTYPE=MSGERROR,
410 . ANMODE=ANINFO,
411 . C1=MESS5,
412 . I1=ID,
413 . C2=MESS4,
414 . I2=GRSH3N_ID)
415 ENDIF
416 IF (IPRI == 5)
417 . WRITE(IOUT,'(10x,i10,14x,a6,7x,i10,7x,i10,2(15x,1pg20.13))')
418 . ID,DRAPE_ENTITY(1:6),GRSH3N_ID,JJ,THINNING,THETA_DRAPE
419 ! Converting angle from deg to rad
420 THETA_DRAPE = THETA_DRAPE*PI/HUNDRED80
421 ! Default thinning value
422 IF (THINNING == ZERO) THINNING = ONE
423 ! Tag grsh3n
424
425 ISH3N_GR(IT4,JJ,1) = MAT_ID
426 ISH3N_GR(IT4,JJ,2) = NPT_SLICE
427 RSH3N_GR(IT4,JJ,1) = THINNING
428 RSH3N_GR(IT4,JJ,2) = THETA_DRAPE
429 ENDDO ! SLICELIST
430 ENDIF
431 ENDDO ! LISTMAX
432 !------------------------------------------------------------
433 ! CHECK FOR UNUSED DRAPE
434 !------------------------------------------------------------
435 NO_USED_DRAPE = 0
436 IPPID = 2
437 DO IE=1,NUMELC
438 IX = IXC(NIXC,IE)
439 PID = IXC(6,IE)
440 IGTYP = IGEO(11,PID)
441 NPT = IWORKSH(1,IE)
442.OR. IF (IGTYP == 17 IGTYP == 51) THEN
443 DO IP=1,NPT
444 JPID = IWORK_T(IE)%PLYID(IP)! ply pid number
445
446 IF (JPID > 0) THEN
447 JDRP = IGEO(48,JPID)
448 IF (ID == JDRP)THEN
449 NO_USED_DRAPE = NO_USED_DRAPE + 1
450 ENDIF
451 ENDIF
452 ENDDO
453 ELSEIF (IGTYP == 52) THEN
454 DO IP=1,NPT
455 JPID = IWORK_T(IE)%PLYID(IP) ! ply pid number
456
457 IF (JPID > 0) THEN
458 JDRP = IGEO_STACK(48,JPID)
459 IF (ID == JDRP)THEN
460 NO_USED_DRAPE = NO_USED_DRAPE + 1
461 ENDIF
462 ENDIF
463 ENDDO ! DO IP=1,N1
464.OR. ENDIF ! IF (IGTYP == 17 IGTYP == 51)
465 ENDDO ! DO IE=1,NUMELC
466
467 DO IE=1,NUMELTG
468 IX = IXTG(NIXTG,IE)
469 PID = IXTG(5,IE)
470 IGTYP = IGEO(11,PID)
471 NPT = IWORKSH(1,NUMELC + IE)
472.OR. IF (IGTYP == 17 IGTYP == 51) THEN
473 DO IP=1,NPT
474 JPID = IWORK_T(NUMELC + IE)%PLYID(IP) ! ply pid number
475
476 IF (JPID > 0) THEN
477 JDRP = IGEO(48,JPID)
478 IF (ID == JDRP)THEN
479 NO_USED_DRAPE = NO_USED_DRAPE + 1
480 ENDIF
481 ENDIF
482 ENDDO
483 ELSEIF (IGTYP == 52) THEN
484 DO IP=1,NPT
485 JPID = IWORK_T(NUMELC + IE)%PLYID(IP) ! ply pid number
486
487 IF (JPID > 0) THEN
488 JDRP = IGEO_STACK(48,JPID)
489 IF (ID == JDRP)THEN
490 NO_USED_DRAPE = NO_USED_DRAPE + 1
491 ENDIF
492 ENDIF
493 ENDDO ! DO IP=1,N1
494.OR. ENDIF ! IF (IGTYP == 17 IGTYP == 51)
495 ENDDO ! DO IE=1,NUMELTG
496 ! Drape ID non-associated to any ply
497 IF (NO_USED_DRAPE == 0) THEN
498 CALL ANCMSG(MSGID=1169,
499 . MSGTYPE=MSGWARNING,
500 . ANMODE=ANINFO,
501 . C1=MESS5,
502 . I1=ID)
503 ENDIF
504 !-------------------------------------------------------------------------
505 ! Looking for ID doubles (shell, sh3n, grshel, grsh3n) in the same /DRAPE
506 !-------------------------------------------------------------------------
507 ! Double shell -
508 CALL UDOUBLE3(ITMP_SH4N,2,IT1,MESS5,MESS1,0,BID)
509 ! Double grshel -
510 CALL UDOUBLE3(ITMP_GRSH4N,2,IT3,MESS5,MESS2,0,BID)
511 ! To be checked for sh3n, grsh3n
512 ! - double she3n -
513 CALL UDOUBLE3(ITMP_SH3N,2,IT2,MESS5,MESS3,0,BID)
514 ! - double grshel -
515 CALL UDOUBLE3(ITMP_GRSH3N,2,IT4,MESS5,MESS4,0,BID)
516 !-------------------------------------------------------------------------
517 ! Filling DRAPE data structure
518 !-------------------------------------------------------------------------
519
520 IF (IT1 > 0) THEN
521 DO J=1,IT1
522 ISH = ISH4N_DRP(J,1)
523 IDRP = ISH4N_DRP(J,2)
524 NSLICE = ISH4N_DRP(J,3)
525 NO_ISH = 0
526 DO IE=1,NUMELC
527 IX = IXC(NIXC,IE)
528 PID = IXC(6,IE)
529 IGTYP = IGEO(11,PID)
530 NPT = IWORKSH(1,IE)
531 NPT_DRP = 0
532 IF (ISH == IX) THEN
533 NO_ISH = NO_ISH + 1
534
535 IF (TAGSH(IE) == 0) THEN
536 TAGSH(IE) = ISH
537 NIS = 0
538.NOT. IF (ALLOCATED(DRAPE_WRK(IE)%DRAPE_PLY)) THEN
539 ALLOCATE(DRAPE_WRK(IE)%DRAPE_PLY(NPT))
540 NUMELC_DRAPE = NUMELC_DRAPE + 1
541 INDX_TMP(IE) = NUMELC_DRAPE
542 DRAPE_WRK(IE)%NPLY_DRAPE = 0
543 ENDIF
544 NO_ISH = NO_ISH + 1
545
546 DRP_SHEL(I) = DRP_SHEL(I) + 1
547
548.OR. IF (IGTYP == 17 IGTYP == 51) THEN
549 IPPID = 2
550.NOT. IF (ALLOCATED(DRAPE_WRK(IE)%INDX_PLY)) THEN
551 ALLOCATE(DRAPE_WRK(IE)%INDX_PLY(NPT) )
552 DRAPE_WRK(IE)%INDX_PLY = 0
553 ENDIF
554 NPT_DRP = DRAPE_WRK(IE)%NPLY_DRAPE
555 DO IP=1,NPT
556 JPID = IWORK_T(IE)%PLYID(IP) ! ply pid number
557
558 IF (JPID > 0) THEN
559 JDRP = IGEO(48,JPID)
560 IF (IDRP == JDRP)THEN
561 ALLOCATE(DRAPE_WRK(IE)%DRAPE_PLY(IP)%RDRAPE(NSLICE,2))
562 ALLOCATE(DRAPE_WRK(IE)%DRAPE_PLY(IP)%IDRAPE(NSLICE,2))
563 DRAPE_WRK(IE)%DRAPE_PLY(IP)%RDRAPE = ZERO
564 DRAPE_WRK(IE)%DRAPE_PLY(IP)%IDRAPE = 0
565 DRAPE_WRK(IE)%DRAPE_PLY(IP)%NSLICE = NSLICE
566 NPT_DRP = NPT_DRP + 1
567 DRAPE_WRK(IE)%NPLY_DRAPE = NPT_DRP
568 DRAPE_WRK(IE)%INDX_PLY(NPT_DRP) = IP
569 DRAPE_WRK(IE)%DRAPE_PLY(IP)%IPID = IDRP
570 DO ISL = 1,NSLICE
571 DRAPE_WRK(IE)%DRAPE_PLY(IP)%RDRAPE(ISL,1) = RSH4N(J,ISL,1)
572 DRAPE_WRK(IE)%DRAPE_PLY(IP)%RDRAPE(ISL,2) = RSH4N(J,ISL,2)
573 DRAPE_WRK(IE)%DRAPE_PLY(IP)%IDRAPE(ISL,1) = ISH4N(J,ISL,1) !! Mat_id
574 DRAPE_WRK(IE)%DRAPE_PLY(IP)%IDRAPE(ISL,2) = ISH4N(J,ISL,2) !! NPT_SLICE
575 ENDDO ! nbre of slice
576
577 NIS = NIS + 1
578 ENDIF
579 ENDIF
580 ENDDO ! DO IP=1,NPT
581 ELSEIF (IGTYP == 52) THEN
582 IPPID = 2
583.NOT. IF (ALLOCATED(DRAPE_WRK(IE)%INDX_PLY)) THEN
584 ALLOCATE(DRAPE_WRK(IE)%INDX_PLY(NPT) )
585 DRAPE_WRK(IE)%INDX_PLY = 0
586 ENDIF
587 NPT_DRP = DRAPE_WRK(IE)%NPLY_DRAPE
588 DO IP=1,NPT
589 JPID = IWORK_T(IE)%PLYID(IP) ! ply pid number
590
591 IF (JPID > 0) THEN
592 JDRP = IGEO_STACK(48,JPID)
593 IF (IDRP==JDRP)THEN
594 ALLOCATE(DRAPE_WRK(IE)%DRAPE_PLY(IP)%RDRAPE(NSLICE,2) )
595 ALLOCATE(DRAPE_WRK(IE)%DRAPE_PLY(IP)%IDRAPE(NSLICE,2) )
596 DRAPE_WRK(IE)%DRAPE_PLY(IP)%RDRAPE = ZERO
597 DRAPE_WRK(IE)%DRAPE_PLY(IP)%IDRAPE = 0
598 DRAPE_WRK(IE)%DRAPE_PLY(IP)%NSLICE = NSLICE
599 NPT_DRP = NPT_DRP + 1
600 DRAPE_WRK(IE)%NPLY_DRAPE = NPT_DRP
601 DRAPE_WRK(IE)%INDX_PLY(NPT_DRP) = IP
602 DRAPE_WRK(IE)%DRAPE_PLY(IP)%IPID = IDRP
603 DO ISL = 1,NSLICE
604 DRAPE_WRK(IE)%DRAPE_PLY(IP)%RDRAPE(ISL,1) = RSH4N(J,ISL,1)
605 DRAPE_WRK(IE)%DRAPE_PLY(IP)%RDRAPE(ISL,2) = RSH4N(J,ISL,2)
606 DRAPE_WRK(IE)%DRAPE_PLY(IP)%IDRAPE(ISL,1) = ISH4N(J,ISL,1) !! Mat_id
607 DRAPE_WRK(IE)%DRAPE_PLY(IP)%IDRAPE(ISL,2) = ISH4N(J,ISL,2) !! NPT_SLICE
608 ENDDO ! nbre of slice
609
610
611
612 NIS = NIS + 1
613 ENDIF
614 ENDIF
615 ENDDO ! DO IP=1,NPT
616.OR. ENDIF ! F (IGTYP == 17 IGTYP == 51)
617
618.AND. IF (NIS == 0
619.OR. . (IGTYP == 17. OR. IGTYP == 51 IGTYP == 52)) THEN
620
621
622
623
624
625 CALL ANCMSG(MSGID=1172,
626 . MSGTYPE=MSGERROR,
627 . ANMODE=ANINFO,
628 . C1=MESS5,
629 . I1=ID,
630 . C2=MESS1,
631 . I2=ISH)
632.AND. ELSEIF (NIS == 0
633.AND. . IGTYP /= 17. AND. IGTYP /= 51 IGTYP /= 52) THEN
634
635 CALL ANCMSG(MSGID=1171,
636 . MSGTYPE=MSGERROR,
637 . ANMODE=ANINFO,
638 . C1=MESS5,
639 . I1=ID,
640 . C2=MESS1,
641 . I2=ISH)
642 ENDIF ! IF (NIS == 0
643 ENDIF ! IF (TAGSH(IE) == 0)
644 ENDIF ! IF (ISH == IX)
645 ENDDO ! DO IE=1,NUMELC
646
647 IF (NO_ISH == 0) THEN
648
649 CALL ANCMSG(MSGID=1174,
650 . MSGTYPE=MSGERROR,
651 . ANMODE=ANINFO,
652 . C1=MESS5,
653 . I1=ID,
654 . C2=MESS1,
655 . I2=ISH)
656 ENDIF
657 ENDDO ! DO J=1,IT1
658 ENDIF ! IF (IT1 > 0)
659
660
661 IF (IT3 > 0) THEN
662 DO J=1,IT3
663 IGR = IGRSH4N_DRP(J,1)
664 IDRP = IGRSH4N_DRP(J,2)
665 NSLICE = IGRSH4N_DRP(J,3)
666 DO JJ=1,NGRSHEL
667 OFFC = NGRNOD + NGRBRIC + NGRQUAD + JJ
668 JGR = IGRSH4N(JJ)%ID
669 NEL = IGRSH4N(JJ)%NENTITY
670
671 ITY = IGRSH4N(JJ)%GRTYPE
672 IF (IGR == JGR) THEN
673 IF (ITY == 3) THEN
674 DO II = 1,NEL
675 IDSHEL = IGRSH4N(JJ)%ENTITY(II)
676 PID = IXC(6,IDSHEL)
677 IGTYP = IGEO(11,PID)
678 NPT =IWORKSH(1,IDSHEL)
679 IF (TAGSH(IDSHEL) == 0) THEN
680 TAGSH(IDSHEL) = IDSHEL
681 NIS = 0
682.NOT. IF (ALLOCATED(DRAPE_WRK(IDSHEL)%DRAPE_PLY)) THEN
683 ALLOCATE(DRAPE_WRK(IDSHEL)%DRAPE_PLY(NPT))
684 NUMELC_DRAPE = NUMELC_DRAPE + 1
685 INDX_TMP(IDSHEL) = NUMELC_DRAPE
686 DRAPE_WRK(IDSHEL)%NPLY_DRAPE = 0
687 ENDIF
688
689
690 DRP_SHEL(I) = DRP_SHEL(I) + 1
691 IPPID = 2
692.OR. IF (IGTYP == 17 IGTYP == 51) THEN
693.NOT. IF (ALLOCATED(DRAPE_WRK(IDSHEL)%INDX_PLY)) THEN
694 ALLOCATE(DRAPE_WRK(IDSHEL)%INDX_PLY(NPT) )
695 DRAPE_WRK(IDSHEL)%INDX_PLY = 0
696 ENDIF
697 NPT_DRP = DRAPE_WRK(IDSHEL)%NPLY_DRAPE
698 DO IP=1,NPT
699 JPID = IWORK_T(IDSHEL)%PLYID(IP) ! ply pid number
700
701 IF (JPID > 0) THEN
702 JDRP = IGEO(48,JPID)
703 IF (IDRP==JDRP)THEN
704 ALLOCATE(DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE(NSLICE,2) )
705 ALLOCATE(DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE(NSLICE,2) )
706 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE = 0
707 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE = ZERO
708 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%NSLICE = NSLICE
709 NPT_DRP = NPT_DRP + 1
710 DRAPE_WRK(IDSHEL)%NPLY_DRAPE = NPT_DRP
711 DRAPE_WRK(IDSHEL)%INDX_PLY(NPT_DRP) = IP
712 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IPID = IDRP
713 DO ISL = 1,NSLICE
714 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE(ISL,1) = RSH4N_GR(J,ISL,1)
715 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE(ISL,2) = RSH4N_GR(J,ISL,2)
716 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE(ISL,1) = ISH4N_GR(J,ISL,1) !! Mat_id
717 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE(ISL,2) = ISH4N_GR(J,ISL,2) !! NPT_SLICE
718 ENDDO ! nbre of slice
719
720
721
722
723
724 NIS = NIS + 1
725 ENDIF
726 ENDIF
727 ENDDO
728 ELSEIF (IGTYP == 52) THEN
729.NOT. IF (ALLOCATED(DRAPE_WRK(IDSHEL)%INDX_PLY)) THEN
730 ALLOCATE(DRAPE_WRK(IDSHEL)%INDX_PLY(NPT) )
731 DRAPE_WRK(IDSHEL)%INDX_PLY = 0
732 DRAPE_WRK(IDSHEL)%NPLY_DRAPE = 0
733 ENDIF
734 NPT_DRP = DRAPE_WRK(IDSHEL)%NPLY_DRAPE
735 DO IP=1,NPT
736 JPID = IWORK_T(IDSHEL)%PLYID(IP)
737 IF (JPID > 0) THEN
738 JDRP = IGEO_STACK(48,JPID)
739 IF (IDRP==JDRP)THEN
740 ALLOCATE(DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE(NSLICE,2) )
741 ALLOCATE(DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE(NSLICE,2) )
742 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE = ZERO
743 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE = 0
744 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%NSLICE = NSLICE
745 NPT_DRP = NPT_DRP + 1
746 DRAPE_WRK(IDSHEL)%NPLY_DRAPE = NPT_DRP
747 DRAPE_WRK(IDSHEL)%INDX_PLY(NPT_DRP) = IP
748 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IPID = IDRP
749 DO ISL = 1,NSLICE
750 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE(ISL,1) = RSH4N_GR(J,ISL,1)
751 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE(ISL,2) = RSH4N_GR(J,ISL,2)
752 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE(ISL,1) = ISH4N_GR(J,ISL,1) !! Mat_id
753 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE(ISL,2) = ISH4N_GR(J,ISL,2) !! NPT_SLICE
754 ENDDO ! nbre of slice
755
756
757
758
759 NIS = NIS + 1
760 ENDIF
761 ENDIF
762 ENDDO
763.OR. ENDIF ! IF (IGTYP == 17 IGTYP == 51)
764
765.AND. IF (NIS == 0
766.OR. . (IGTYP == 17. OR. IGTYP == 51 IGTYP == 52)) THEN
767
768 CALL ANCMSG(MSGID=1173,
769 . MSGTYPE=MSGERROR,
770 . ANMODE=ANINFO,
771 . C1=MESS5,
772 . I1=ID,
773 . C2=MESS2,
774 . I2=IGR,
775 . C3=MESS1,
776 . I3=IXC(NIXC,IDSHEL))
777.AND. ELSEIF (NIS == 0
778.AND. . IGTYP /= 17. AND. IGTYP /= 51 IGTYP /= 52) THEN
779
780 CALL ANCMSG(MSGID=1170,
781 . MSGTYPE=MSGERROR,
782 . ANMODE=ANINFO,
783 . C1=MESS5,
784 . I1=ID,
785 . C2=MESS2,
786 . I2=IGR,
787 . C3=MESS1,
788 . I3=IXC(NIXC,IDSHEL))
789 ENDIF
790 ELSEIF (TAGSH(IDSHEL) == IXC(NIXC,IDSHEL)) THEN
791 CALL ANCMSG(MSGID=1155,
792 . MSGTYPE=MSGERROR,
793 . ANMODE=ANINFO,
794 . C1=MESS,
795 . I1=IDRP,
796 . C2=MESS2,
797 . I2=IGR,
798 . C3=MESS1,
799 . I3=IXC(NIXC,IDSHEL))
800 ENDIF ! IF (TAGSH(IE) == 0)
801 ENDDO ! DO II = 1,NEL
802 ENDIF ! IF (ITY == 3)
803 ENDIF ! IF (IGR == JGR)
804 ENDDO ! DO JJ=1,NGRSHEL
805 ENDDO ! DO J=1,IT3
806 ENDIF ! IF (IT3 > 0)
807 IF (IT2 > 0) THEN
808 DO J=1,IT2
809 ISH = ISH3N_DRP(J,1)
810 IDRP = ISH3N_DRP(J,2)
811 NSLICE = ISH3N_DRP(J,3)
812 NO_ISH = 0
813 DO IE=1,NUMELTG
814 IX = IXTG(NIXTG,IE)
815 PID = IXTG(5,IE)
816 IGTYP = IGEO(11,PID)
817 NPT_DRP = 0
818 IF (ISH == IX) THEN
819 NO_ISH = NO_ISH + 1
820
821 NPT = IWORKSH(1,NUMELC +IE) ! nb max de plys belong to the element
822 IF (TAGSH(IE+NUMELC) == 0) THEN
823 TAGSH(IE+NUMELC) = ISH
824 NIS = 0
825.NOT. IF (ALLOCATED(DRAPE_WRK(NUMELC + IE)%DRAPE_PLY)) THEN
826 ALLOCATE(DRAPE_WRK(NUMELC + IE)%DRAPE_PLY(NPT))
827 NUMELTG_DRAPE = NUMELTG_DRAPE + 1
828 INDX_TMP(NUMELC + IE) = NUMELTG_DRAPE
829 DRAPE_WRK(IE + NUMELC)%NPLY_DRAPE = 0
830 ENDIF
831
832 DRP_SH3N(I) = DRP_SH3N(I) + 1
833 IPPID = 2
834.OR. IF (IGTYP == 17 IGTYP == 51) THEN
835.NOT. IF (ALLOCATED(DRAPE_WRK(NUMELC + IE)%INDX_PLY)) THEN
836 ALLOCATE(DRAPE_WRK(NUMELC + IE)%INDX_PLY(NPT) )
837 DRAPE_WRK(NUMELC + IE)%INDX_PLY = 0
838 ENDIF
839 NPT_DRP = DRAPE_WRK(NUMELC + IE)%NPLY_DRAPE
840 DO IP=1,NPT
841 JPID = IWORK_T(NUMELC + IE)%PLYID(IP) ! ply pid
842
843 IF (JPID > 0) THEN
844 JDRP = IGEO(48,JPID)
845 IF (IDRP==JDRP)THEN
846 ALLOCATE(DRAPE_WRK(IE+NUMELC)%DRAPE_PLY(IP)%RDRAPE(NSLICE,2) )
847 ALLOCATE(DRAPE_WRK(IE+NUMELC)%DRAPE_PLY(IP)%IDRAPE(NSLICE,2) )
848 DRAPE_WRK(IE+NUMELC)%DRAPE_PLY(IP)%RDRAPE = ZERO
849 DRAPE_WRK(IE+NUMELC)%DRAPE_PLY(IP)%IDRAPE = 0
850 DRAPE_WRK(IE+NUMELC)%DRAPE_PLY(IP)%NSLICE = NSLICE
851 NPT_DRP = NPT_DRP + 1
852 DRAPE_WRK(IE+NUMELC)%NPLY_DRAPE = NPT_DRP
853 DRAPE_WRK(IE+NUMELC)%INDX_PLY(NPT_DRP) = IP
854 DRAPE_WRK(IE+NUMELC)%DRAPE_PLY(IP)%IPID = IDRP
855 DO ISL = 1,NSLICE
856 DRAPE_WRK(IE+NUMELC)%DRAPE_PLY(IP)%RDRAPE(ISL,1) = RSH3N(J,ISL,1)
857 DRAPE_WRK(IE+NUMELC)%DRAPE_PLY(IP)%RDRAPE(ISL,2) = RSH3N(J,ISL,2)
858 DRAPE_WRK(IE+NUMELC)%DRAPE_PLY(IP)%IDRAPE(ISL,1) = ISH3N(J,ISL,1) !! Mat_id
859 DRAPE_WRK(IE+NUMELC)%DRAPE_PLY(IP)%IDRAPE(ISL,2) = ISH3N(J,ISL,2) !! NPT_SLICE
860 ENDDO ! nbre of slice
861
862
863
864
865
866 NIS = NIS + 1
867 ENDIF
868 ENDIF
869 ENDDO ! DO IP=1,NPT
870 ELSEIF (IGTYP == 52) THEN
871.NOT. IF (ALLOCATED(DRAPE_WRK(NUMELC + IE)%INDX_PLY)) THEN
872 ALLOCATE(DRAPE_WRK(NUMELC + IE)%INDX_PLY(NPT) )
873 DRAPE_WRK(NUMELC + IE)%INDX_PLY = 0
874 ENDIF
875 NPT_DRP = DRAPE_WRK(NUMELC + IE)%NPLY_DRAPE
876 DO IP=1,NPT
877 JPID = IWORK_T(NUMELC + IE)%PLYID(IP) ! ply pid
878
879 IF (JPID > 0) THEN
880 JDRP = IGEO_STACK(48,JPID)
881 IF (IDRP==JDRP)THEN
882 ALLOCATE(DRAPE_WRK(NUMELC + IE)%DRAPE_PLY(IP)%RDRAPE(NSLICE,2) )
883 ALLOCATE(DRAPE_WRK(NUMELC + IE)%DRAPE_PLY(IP)%IDRAPE(NSLICE,2) )
884 DRAPE_WRK(NUMELC + IE)%DRAPE_PLY(IP)%NSLICE = NSLICE
885 NPT_DRP = NPT_DRP + 1
886 DRAPE_WRK(NUMELC + IE)%NPLY_DRAPE = NPT_DRP
887 DRAPE_WRK(NUMELC + IE)%INDX_PLY(NPT_DRP) = IP
888 DRAPE_WRK(NUMELC + IE)%DRAPE_PLY(IP)%IPID = IDRP
889 DO ISL = 1,NSLICE
890 DRAPE_WRK(NUMELC + IE)%DRAPE_PLY(IP)%RDRAPE(ISL,1) = RSH3N(J,ISL,1)
891 DRAPE_WRK(NUMELC + IE)%DRAPE_PLY(IP)%RDRAPE(ISL,2) = RSH3N(J,ISL,2)
892 DRAPE_WRK(NUMELC + IE)%DRAPE_PLY(IP)%IDRAPE(ISL,1) = ISH3N(J,ISL,1) !! Mat_id
893 DRAPE_WRK(NUMELC + IE)%DRAPE_PLY(IP)%IDRAPE(ISL,2) = ISH3N(J,ISL,2) !! NPT_SLICE
894 ENDDO ! nbre of slice
895
896
897
898
899
900 NIS = NIS + 1
901 ENDIF
902 ENDIF
903 ENDDO ! DO IP=1,NPT
904.OR. ENDIF ! IF (IGTYP == 17 IGTYP == 51)
905
906.AND. IF (NIS == 0
907.OR. . (IGTYP == 17. OR. IGTYP == 51 IGTYP == 52)) THEN
908
909 CALL ANCMSG(MSGID=1172,
910 . MSGTYPE=MSGERROR,
911 . ANMODE=ANINFO,
912 . C1=MESS5,
913 . I1=ID,
914 . C2=MESS3,
915 . I2=ISH)
916.AND. ELSEIF (NIS == 0
917.AND. . IGTYP /= 17. AND. IGTYP /= 51 IGTYP /= 52) THEN
918
919 CALL ANCMSG(MSGID=1171,
920 . MSGTYPE=MSGERROR,
921 . ANMODE=ANINFO,
922 . C1=MESS5,
923 . I1=ID,
924 . C2=MESS3,
925 . I2=ISH)
926 ENDIF ! IF (NIS == 0
927 ENDIF ! IF (TAGSH(IE+NUMELC) == 0)
928 ENDIF ! IF (ISH == IX)
929 ENDDO ! DO IE=1,NUMELTG
930
931 IF (NO_ISH == 0) THEN
932
933 CALL ANCMSG(MSGID=1174,
934 . MSGTYPE=MSGERROR,
935 . ANMODE=ANINFO,
936 . C1=MESS5,
937 . I1=ID,
938 . C2=MESS3,
939 . I2=ISH)
940 ENDIF
941 ENDDO ! DO J=1,IT2
942 ENDIF ! IF (IT2 > 0)
943
944 IF (IT4 > 0) THEN
945 DO J=1,IT4
946 IGR = IGRSH3N_DRP(J,1)
947 IDRP = IGRSH3N_DRP(J,2)
948 NSLICE = IGRSH3N_DRP(J,3)
949 DO JJ=1, NGRSH3N
950 OFFC = NGRNOD + NGRBRIC + NGRQUAD + NGRSHEL + NGRTRUS +
951 . NGRBEAM + NGRSPRI + JJ
952 JGR = IGRSH3N(JJ)%ID
953 NEL = IGRSH3N(JJ)%NENTITY
954
955 ITY = IGRSH3N(JJ)%GRTYPE
956 IF (IGR == JGR) THEN
957 IF (ITY == 7) THEN !!! obsolete
958 DO II = 1,NEL
959 IDSH3N = IGRSH3N(JJ)%ENTITY(II)
960 IDSHEL = IDSH3N + NUMELC
961 PID = IXTG(5,IDSH3N)
962 IGTYP = IGEO(11,PID)
963 NPT = IWORKSH(1,IDSHEL)
964 NPT_DRP = 0
965 IF (TAGSH(IDSHEL) == 0) THEN
966 TAGSH(IDSHEL) = IXTG(NIXTG,IDSH3N)
967 NIS = 0
968.NOT. IF (ALLOCATED(DRAPE_WRK(IDSHEL)%DRAPE_PLY)) THEN
969 ALLOCATE(DRAPE_WRK(IDSHEL)%DRAPE_PLY(NPT))
970 NUMELTG_DRAPE = NUMELTG_DRAPE + 1
971 INDX_TMP(IDSHEL) = NUMELTG_DRAPE
972 DRAPE_WRK(IDSHEL)%NPLY_DRAPE = 0
973 ENDIF
974
975
976 DRP_SH3N(I) = DRP_SH3N(I) + 1
977 IPPID = 2
978.OR. IF (IGTYP == 17 IGTYP == 51) THEN
979.NOT. IF (ALLOCATED(DRAPE_WRK(IDSHEL)%INDX_PLY)) THEN
980 ALLOCATE(DRAPE_WRK(IDSHEL)%INDX_PLY(NPT) )
981 DRAPE_WRK(IDSHEL)%INDX_PLY = 0
982 ENDIF
983 NPT_DRP = DRAPE_WRK(IDSHEL)%NPLY_DRAPE
984 DO IP=1,NPT
985 JPID = IWORK_T(IDSHEL)%PLYID(IP) ! ply pid number
986
987 IF (JPID > 0) THEN
988 JDRP = IGEO(48,JPID)
989 IF (IDRP==JDRP)THEN
990 ALLOCATE(DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE(NSLICE,2))
991 ALLOCATE(DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE(NSLICE,2))
992 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE = ZERO
993 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE = 0
994 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%NSLICE = NSLICE
995 NPT_DRP = NPT_DRP + 1
996 DRAPE_WRK(IDSHEL)%NPLY_DRAPE = NPT_DRP
997 DRAPE_WRK(IDSHEL)%INDX_PLY(NPT_DRP)= IP
998 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IPID = IDRP
999 DO ISL = 1,NSLICE
1000 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE(ISL,1) = RSH3N_GR(J,ISL,1)
1001 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE(ISL,2) = RSH3N_GR(J,ISL,2)
1002 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE(ISL,1) = ISH3N_GR(J,ISL,1) !! Mat_id
1003 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE(ISL,2) = ISH3N_GR(J,ISL,2) !! NPT_SLICE
1004 ENDDO ! nbre of slice
1005
1006
1007
1008 NIS = NIS + 1
1009 ENDIF
1010 ENDIF
1011 ENDDO ! DO IP=1,N1
1012 ELSEIF (IGTYP == 52) THEN
1013.NOT. IF (ALLOCATED(DRAPE_WRK(IDSHEL)%INDX_PLY)) THEN
1014 ALLOCATE(DRAPE_WRK(IDSHEL)%INDX_PLY(NPT) )
1015 DRAPE_WRK(IDSHEL)%INDX_PLY = 0
1016 ENDIF
1017 NPT_DRP = DRAPE_WRK(IDSHEL)%NPLY_DRAPE
1018 DO IP=1,NPT
1019 JPID = IWORK_T(IDSHEL)%PLYID(IP)
1020
1021 IF (JPID > 0) THEN
1022 JDRP = IGEO_STACK(48,JPID)
1023 IF (IDRP==JDRP)THEN
1024 ALLOCATE(DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE(NSLICE,2) )
1025 ALLOCATE(DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE(NSLICE,2) )
1026 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE = ZERO
1027 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE = 0
1028 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%NSLICE = NSLICE
1029 NPT_DRP = NPT_DRP + 1
1030 DRAPE_WRK(IDSHEL)%NPLY_DRAPE = NPT_DRP
1031 DRAPE_WRK(IDSHEL)%INDX_PLY(NPT_DRP)= IP
1032 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IPID = IDRP
1033 DO ISL = 1,NSLICE
1034 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE(ISL,1) = RSH3N_GR(J,ISL,1)
1035 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE(ISL,2) = RSH3N_GR(J,ISL,2)
1036 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE(ISL,1) = ISH3N_GR(J,ISL,1) !! Mat_id
1037 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE(ISL,2) = ISH3N_GR(J,ISL,2) !! NPT_SLICE
1038 ENDDO ! nbre of slice
1039
1040
1041
1042
1043 NIS = NIS + 1
1044 ENDIF
1045 ENDIF
1046 ENDDO
1047.OR. ENDIF ! IF (IGTYP == 17 IGTYP == 51)
1048
1049.AND. IF (NIS == 0
1050.OR. . (IGTYP == 17. OR. IGTYP == 51 IGTYP == 52)) THEN
1051
1052 CALL ANCMSG(MSGID=1173,
1053 . MSGTYPE=MSGERROR,
1054 . ANMODE=ANINFO,
1055 . C1=MESS5,
1056 . I1=ID,
1057 . C2=MESS4,
1058 . I2=IGR,
1059 . C3=MESS3,
1060 . I3=IXTG(NIXTG,IDSH3N))
1061.AND. ELSEIF (NIS == 0
1062.AND. . IGTYP /= 17. AND. IGTYP /= 51 IGTYP /= 52) THEN
1063
1064 CALL ANCMSG(MSGID=1170,
1065 . MSGTYPE=MSGERROR,
1066 . ANMODE=ANINFO,
1067 . C1=MESS5,
1068 . I1=ID,
1069 . C2=MESS4,
1070 . I2=IGR,
1071 . C3=MESS3,
1072 . I3=IXTG(NIXTG,IDSH3N))
1073 ENDIF
1074 ELSEIF (TAGSH(IDSHEL) == IXTG(NIXTG,IDSH3N)) THEN
1075 CALL ANCMSG(MSGID=1155,
1076 . MSGTYPE=MSGERROR,
1077 . ANMODE=ANINFO,
1078 . C1=MESS,
1079 . I1=IDRP,
1080 . C2=MESS4,
1081 . I2=IGR,
1082 . C3=MESS3,
1083 . I3=IXTG(NIXTG,IDSH3N))
1084 ENDIF ! IF (TAGSH(IDSHEL) == 0)
1085 ENDDO ! DO II = 1,NEL
1086 ENDIF ! IF (ITY == 7)
1087 ENDIF ! IF (IGR == JGR)
1088 ENDDO ! DO JJ=1,NGRSHEL
1089 ENDDO ! DO J=1,IT4
1090 ENDIF ! IF (IT4 > 0)
1091
1092 IF (IPRI < 5) WRITE(IOUT,'(10x,i10,2(15x,i10))')
1093 . ID,DRP_SHEL(I),DRP_SH3N(I)
1094
1095 DEALLOCATE(ISH4N,ISH4N_GR,ISH3N ,ISH3N_GR,
1096 . ISH4N_DRP,IGRSH4N_DRP,ISH3N_DRP,IGRSH3N_DRP,
1097 . ITMP_SH4N,ITMP_SH3N, ITMP_GRSH4N, ITMP_GRSH3N)
1098 DEALLOCATE(RSH4N,RSH3N,RSH4N_GR, RSH3N_GR)
1099 ENDDO ! DO I=1,NDRAPE
1100!
1101 IF(NUMELC_DRAPE > 0) THEN
1102 DO I=1,NUMELC
1103 II = INDX_TMP(I)
1104 IF(II > 0)INDXSH(II) = I
1105 ENDDO
1106 ENDIF
1107
1108 IF(NUMELTG_DRAPE > 0) THEN
1109 DO I=1,NUMELTG
1110 II = INDX_TMP(I + NUMELC)
1111 IF(II > 0) INDXSH(NUMELC_DRAPE + II) = I+ NUMELC
1112 ENDDO
1113 ENDIF
1114 DEALLOCATE(INDX_TMP)
1115 !====================================================================================
1116 ! End reading /DRAPE
1117 !====================================================================================
1118
1119
1120
1121 CALL UDOUBLE(DRAPE_ID,1,NDRAPE,MESS,0,BID)
1122
1123
1124 1001 FORMAT(//
1125 .' drape option '/
1126 .' ------------- '/
1127 .' drape number entity
TYPE entity
id slice number
',
1128 .' ply thinning factor ply orientation angle change')
1129 1002 FORMAT(//
1130 .' drape option '/
1131 .' ------------- '/
1132 .' drape number nb. of shell elements nb. of sh3n elements')
1133
1134 RETURN
subroutine hm_get_float_array_2indexes(name, rval, index1, index2, is_available, lsubmodel, unitab)
subroutine hm_get_int_array_2indexes(name, ival, index1, index2, is_available, lsubmodel)
subroutine hm_get_int_array_index(name, ival, index, is_available, lsubmodel)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_get_string_index(name, sval, index, size, is_available)
subroutine hm_option_start(entity_type)
integer, parameter nchartitle
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)