108 . IXC ,IXTG ,IGEO ,IGEO_STACK ,LSUBMODEL ,
121 use element_mod ,
only : nixc,nixtg
125#include "implicit_f.inc"
129#include "units_c.inc"
130#include "drape_c.inc"
132#include "com04_c.inc"
133#include "param_c.inc"
134#include "scr03_c.inc"
138 INTEGER :: IWORKSH(3,*),IXC(NIXC,*),
139 . IXTG(NIXTG,*),IGEO(NPROPGI,*),
140 . igeo_stack(npropgi,*),indxsh(numelc+numeltg)
142 TYPE (GROUP_) ,
DIMENSION(NGRSH3N) :: IGRSH3N
143 TYPE (GROUP_) ,
DIMENSION(NGRSHEL) :: IGRSH4N
144 TYPE (DRAPE_) ,
DIMENSION(NUMELC + NUMELTG) ,
TARGET :: DRAPE_WRK
146 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
147 TYPE(
drape_work_) ,
DIMENSION(NUMELC+NUMELTG),
TARGET :: IWORK_T
151 INTEGER ::I, II,J,JJ,IX,ID,,SH3N_ID,GRSHEL_ID,GRSH3N_ID,OFFC,
152 . IT1,IT2,IT3,IT4,NEL,ITY,IDSHEL,IDSH3N,PID,
153 . jpid,igtyp,ie,ip,idrp,jdrp,ish,igr,jgr,listmax,slicelistmax,
154 . nis,no_ish,npt,ippid,isl,npt_drp,nslice,
155 . slicelist,npt_slice,mat_id,no_used_drape
156 INTEGER ,
DIMENSION(NDRAPE) :: DRP_SHEL, DRP_SH3N,DRAPE_ID
158 . thinning,theta_drape,bid
159 CHARACTER(LEN=NCHARTITLE) :: TITR,DRAPE_ENTITY
160 CHARACTER MESS*40,MESS1*40,MESS2*40, MESS3*40,MESS4*40,MESS5*40
161 DATA mess/
'DRAPE DEFINITION '/
163 DATA mess2/
'GRSHEL '/
165 DATA mess4/
'GRSH3N '/
166 DATA mess5/
'/DRAPE '/
167 INTEGER,
DIMENSION (:) ,
ALLOCATABLE :: TAGSH,INDX_TMP
168 INTEGER,
DIMENSION (:,:),
ALLOCATABLE :: ISH3N_DRP,IGRSH4N_DRP,ISH4N_DRP,IGRSH3N_DRP,
169 . itmp_sh4n,itmp_grsh4n,itmp_sh3n,itmp_grsh3n
170 INTEGER,
DIMENSION(:,:,:),
ALLOCATABLE :: ISH4N,ISH3N,ISH4N_GR,ISH3N_GR
171 my_real,
DIMENSION(:,:,:),
ALLOCATABLE :: RSH4N,RSH3N,RSH4N_GR,RSH3N_GR
172 LOGICAL :: IS_AVAILABLE
174 is_available = .false.
181 ALLOCATE(tagsh(numelc+numeltg), indx_tmp(numelc + numeltg))
186 !====================================================================================
194 tagsh(1:numelc+numeltg) = 0
195 !---------------------------------
201 . option_titr = titr)
209 CALL hm_get_intv(
'drapelistmax',listmax,is_available,lsubmodel)
214 slicelistmax=
max(slicelistmax,slicelist)
217 ALLOCATE(ish4n(listmax,slicelistmax,2) ,ish4n_gr(listmax,slicelistmax,2),
218 . ish3n(listmax,slicelistmax,2) ,ish3n_gr(listmax,slicelistmax,2),
219 . ish4n_drp(listmax,3),igrsh4n_drp(listmax,3),ish3n_drp(listmax,3),igrsh3n_drp(listmax,3),
220 . itmp_sh4n(2,listmax),itmp_sh3n(2,listmax),itmp_grsh4n(2,listmax),itmp_grsh3n(2,listmax))
233 ALLOCATE(rsh4n(listmax,slicelistmax,2),rsh3n(listmax,slicelistmax,2),rsh4n_gr(listmax,slicelistmax,2),
234 . rsh3n_gr(listmax, slicelistmax,2))
250 drape_entity(len_trim(drape_entity)+1:10)=
' '
254 IF (drape_entity(1:5) ==
'SHELL')
THEN
258 ish4n_drp(it1,1) = shell_id
259 ish4n_drp(it1,2) = id
260 ish4n_drp(it1,3) = slicelist
261 itmp_sh4n(1,it1) = shell_id
262 itmp_sh4n(2,it1) = id
273 IF (shell_id == 0)
THEN
283 .
WRITE(iout,
'(10X,I10,14X,A6,7X,I10,7X,I10,2(15X,1PG20.13))')
284 . id,drape_entity(1:5),shell_id,jj,thinning,theta_drape
286 theta_drape=theta_drape*pi/hundred80
287 ! default thinning
value
288 IF (thinning == zero) thinning = one
290 ish4n(it1,jj,1) = mat_id
291 ish4n(it1,jj,2) = npt_slice
292 rsh4n(it1,jj,1) = thinning
293 rsh4n(it1,jj,2) = theta_drape
298 ELSEIF (drape_entity(1:4) ==
'SH3N')
THEN
303 ish3n_drp(it2,1) = sh3n_id
304 ish3n_drp(it2,2) = id
305 ish3n_drp(it2,3) = slicelist
306 itmp_sh3n(1,it2) = sh3n_id
307 itmp_sh3n(2,it2) = id
318 IF (sh3n_id == 0)
THEN
328 .
WRITE(iout,
'(10X,I10,14X,A6,7X,I10,7X,I10,2(15X,1PG20.13))')
329 . id,drape_entity(1:4),sh3n_id,jj,thinning,theta_drape
331 theta_drape=theta_drape*pi/hundred80
333 IF (thinning == zero) thinning = one
335 ish3n(it2,jj,1) = mat_id
336 ish3n(it2,jj,2) = npt_slice
337 rsh3n(it2,jj,1) = thinning
338 rsh3n(it2,jj,2) = theta_drape
343 ELSEIF (drape_entity(1:6) ==
'GRSHEL')
THEN
349 igrsh4n_drp(it3,1) = grshel_id
350 igrsh4n_drp(it3,2) = id
351 igrsh4n_drp(it3,3) = slicelist
352 itmp_grsh4n(1,it3) = grshel_id
353 itmp_grsh4n(2,it3) = id
363 IF (grshel_id == 0)
THEN
373 .
WRITE(iout,
'(10X,I10,14X,A6,7X,I10,7X,I10,2(15X,1PG20.13))')
374 . id,drape_entity(1:6),grshel_id,jj,thinning,theta_drape
376 theta_drape=theta_drape*pi/hundred80
378 IF (thinning == zero) thinning = one
380 ish4n_gr(it3,jj,1) = mat_id
381 ish4n_gr(it3,jj,2) = npt_slice
382 rsh4n_gr(it3,jj,1) = thinning
383 rsh4n_gr(it3,jj,2) = theta_drape
388 ELSEIF (drape_entity(1:6) ==
'GRSH3N')
THEN
393 igrsh3n_drp(it4,1) = grsh3n_id
394 igrsh3n_drp(it4,2) = id
395 igrsh3n_drp(it4,3) = slicelist
396 itmp_grsh4n(1,it4) = grsh3n_id
397 itmp_grsh4n(2,it4) = id
408 IF (grsh3n_id == 0)
THEN
418 .
WRITE(iout,'(10x,i10,14x,a6,7x,i10,7x,i10,2(15x,1pg20.13))
')
419 . ID,DRAPE_ENTITY(1:6),GRSH3N_ID,JJ,THINNING,THETA_DRAPE
420 ! Converting angle from deg to rad
421 THETA_DRAPE = THETA_DRAPE*PI/HUNDRED80
422 ! Default thinning value
423 IF (THINNING == ZERO) THINNING = ONE
426 ISH3N_GR(IT4,JJ,1) = MAT_ID
427 ISH3N_GR(IT4,JJ,2) = NPT_SLICE
428 RSH3N_GR(IT4,JJ,1) = THINNING
429 RSH3N_GR(IT4,JJ,2) = THETA_DRAPE
433 !------------------------------------------------------------
434 ! CHECK FOR UNUSED DRAPE
435 !------------------------------------------------------------
443.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
445 JPID = IWORK_T(IE)%PLYID(IP)! ply pid number
450 NO_USED_DRAPE = NO_USED_DRAPE + 1
454 ELSEIF (IGTYP == 52) THEN
456 JPID = IWORK_T(IE)%PLYID(IP) ! ply pid number
459 JDRP = IGEO_STACK(48,JPID)
461 NO_USED_DRAPE = NO_USED_DRAPE + 1
465.OR.
ENDIF ! IF (IGTYP == 17 IGTYP == 51)
466 ENDDO ! DO IE=1,NUMELC
472 NPT = IWORKSH(1,NUMELC + IE)
473.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
475 JPID = IWORK_T(NUMELC + IE)%PLYID(IP) ! ply pid number
480 NO_USED_DRAPE = NO_USED_DRAPE + 1
484 ELSEIF (IGTYP == 52) THEN
486 JPID = IWORK_T(NUMELC + IE)%PLYID(IP) ! ply pid number
489 JDRP = IGEO_STACK(48,JPID)
491 NO_USED_DRAPE = NO_USED_DRAPE + 1
495.OR.
ENDIF ! IF (IGTYP == 17 IGTYP == 51)
496 ENDDO ! DO IE=1,NUMELTG
497 ! Drape ID non-associated to any ply
498 IF (NO_USED_DRAPE == 0) THEN
499 CALL ANCMSG(MSGID=1169,
500 . MSGTYPE=MSGWARNING,
505 !-------------------------------------------------------------------------
506 ! Looking for ID doubles (shell, sh3n, grshel, grsh3n) in the same /DRAPE
507 !-------------------------------------------------------------------------
509 CALL UDOUBLE3(ITMP_SH4N,2,IT1,MESS5,MESS1,0,BID)
511 CALL UDOUBLE3(ITMP_GRSH4N,2,IT3,MESS5,MESS2,0,BID)
512 ! To be checked for sh3n, grsh3n
514 CALL UDOUBLE3(ITMP_SH3N,2,IT2,MESS5,MESS3,0,BID)
516 CALL UDOUBLE3(ITMP_GRSH3N,2,IT4,MESS5,MESS4,0,BID)
517 !-------------------------------------------------------------------------
518 ! Filling DRAPE data structure
519 !-------------------------------------------------------------------------
524 IDRP = ISH4N_DRP(J,2)
525 NSLICE = ISH4N_DRP(J,3)
536 IF (TAGSH(IE) == 0) THEN
539.NOT.
IF (ALLOCATED(DRAPE_WRK(IE)%DRAPE_PLY)) THEN
540 ALLOCATE(DRAPE_WRK(IE)%DRAPE_PLY(NPT))
541 NUMELC_DRAPE = NUMELC_DRAPE + 1
542 INDX_TMP(IE) = NUMELC_DRAPE
543 DRAPE_WRK(IE)%NPLY_DRAPE = 0
547 DRP_SHEL(I) = DRP_SHEL(I) + 1
549.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
551.NOT.
IF (ALLOCATED(DRAPE_WRK(IE)%INDX_PLY)) THEN
552 ALLOCATE(DRAPE_WRK(IE)%INDX_PLY(NPT) )
553 DRAPE_WRK(IE)%INDX_PLY = 0
555 NPT_DRP = DRAPE_WRK(IE)%NPLY_DRAPE
557 JPID = IWORK_T(IE)%PLYID(IP) ! ply pid number
561 IF (IDRP == JDRP)THEN
562 ALLOCATE(DRAPE_WRK(IE)%DRAPE_PLY(IP)%RDRAPE(NSLICE,2))
563 ALLOCATE(DRAPE_WRK(IE)%DRAPE_PLY(IP)%IDRAPE(NSLICE,2))
564 DRAPE_WRK(IE)%DRAPE_PLY(IP)%RDRAPE = ZERO
565 DRAPE_WRK(IE)%DRAPE_PLY(IP)%IDRAPE = 0
566 DRAPE_WRK(IE)%DRAPE_PLY(IP)%NSLICE = NSLICE
567 NPT_DRP = NPT_DRP + 1
568 DRAPE_WRK(IE)%NPLY_DRAPE = NPT_DRP
569 DRAPE_WRK(IE)%INDX_PLY(NPT_DRP) = IP
570 DRAPE_WRK(IE)%DRAPE_PLY(IP)%IPID = IDRP
572 DRAPE_WRK(IE)%DRAPE_PLY(IP)%RDRAPE(ISL,1) = RSH4N(J,ISL,1)
573 DRAPE_WRK(IE)%DRAPE_PLY(IP)%RDRAPE(ISL,2) = RSH4N(J,ISL,2)
574 DRAPE_WRK(IE)%DRAPE_PLY(IP)%IDRAPE(ISL,1) = ISH4N(J,ISL,1) !! Mat_id
575 DRAPE_WRK(IE)%DRAPE_PLY(IP)%IDRAPE(ISL,2) = ISH4N(J,ISL,2) !! NPT_SLICE
576 ENDDO ! nbre of slice
582 ELSEIF (IGTYP == 52) THEN
584.NOT.
IF (ALLOCATED(DRAPE_WRK(IE)%INDX_PLY)) THEN
585 ALLOCATE(DRAPE_WRK(IE)%INDX_PLY(NPT) )
586 DRAPE_WRK(IE)%INDX_PLY = 0
588 NPT_DRP = DRAPE_WRK(IE)%NPLY_DRAPE
590 JPID = IWORK_T(IE)%PLYID(IP) ! ply pid number
593 JDRP = IGEO_STACK(48,JPID)
595 ALLOCATE(DRAPE_WRK(IE)%DRAPE_PLY(IP)%RDRAPE(NSLICE,2) )
596 ALLOCATE(DRAPE_WRK(IE)%DRAPE_PLY(IP)%IDRAPE(NSLICE,2) )
597 DRAPE_WRK(IE)%DRAPE_PLY(IP)%RDRAPE = ZERO
598 DRAPE_WRK(IE)%DRAPE_PLY(IP)%IDRAPE = 0
599 DRAPE_WRK(IE)%DRAPE_PLY(IP)%NSLICE = NSLICE
600 NPT_DRP = NPT_DRP + 1
601 DRAPE_WRK(IE)%NPLY_DRAPE = NPT_DRP
602 DRAPE_WRK(IE)%INDX_PLY(NPT_DRP) = IP
603 DRAPE_WRK(IE)%DRAPE_PLY(IP)%IPID = IDRP
605 DRAPE_WRK(IE)%DRAPE_PLY(IP)%RDRAPE(ISL,1) = RSH4N(J,ISL,1)
606 DRAPE_WRK(IE)%DRAPE_PLY(IP)%RDRAPE(ISL,2) = RSH4N(J,ISL,2)
607 DRAPE_WRK(IE)%DRAPE_PLY(IP)%IDRAPE(ISL,1) = ISH4N(J,ISL,1) !! Mat_id
608 DRAPE_WRK(IE)%DRAPE_PLY(IP)%IDRAPE(ISL,2) = ISH4N(J,ISL,2) !! NPT_SLICE
609 ENDDO ! nbre of slice
617.OR.
ENDIF ! F (IGTYP == 17 IGTYP == 51)
620.OR.
. (IGTYP == 17. OR. IGTYP == 51 IGTYP == 52)) THEN
626 CALL ANCMSG(MSGID=1172,
633.AND.
ELSEIF (NIS == 0
634.AND.
. IGTYP /= 17. AND. IGTYP /= 51 IGTYP /= 52) THEN
636 CALL ANCMSG(MSGID=1171,
644 ENDIF ! IF (TAGSH(IE) == 0)
645 ENDIF ! IF (ISH == IX)
646 ENDDO ! DO IE=1,NUMELC
648 IF (NO_ISH == 0) THEN
650 CALL ANCMSG(MSGID=1174,
664 IGR = IGRSH4N_DRP(J,1)
665 IDRP = IGRSH4N_DRP(J,2)
666 NSLICE = IGRSH4N_DRP(J,3)
668 OFFC = NGRNOD + NGRBRIC + NGRQUAD + JJ
670 NEL = IGRSH4N(JJ)%NENTITY
672 ITY = IGRSH4N(JJ)%GRTYPE
676 IDSHEL = IGRSH4N(JJ)%ENTITY(II)
679 NPT =IWORKSH(1,IDSHEL)
680 IF (TAGSH(IDSHEL) == 0) THEN
681 TAGSH(IDSHEL) = IDSHEL
683.NOT.
IF (ALLOCATED(DRAPE_WRK(IDSHEL)%DRAPE_PLY)) THEN
684 ALLOCATE(DRAPE_WRK(IDSHEL)%DRAPE_PLY(NPT))
685 NUMELC_DRAPE = NUMELC_DRAPE + 1
686 INDX_TMP(IDSHEL) = NUMELC_DRAPE
687 DRAPE_WRK(IDSHEL)%NPLY_DRAPE = 0
691 DRP_SHEL(I) = DRP_SHEL(I) + 1
693.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
694.NOT.
IF (ALLOCATED(DRAPE_WRK(IDSHEL)%INDX_PLY)) THEN
695 ALLOCATE(DRAPE_WRK(IDSHEL)%INDX_PLY(NPT) )
696 DRAPE_WRK(IDSHEL)%INDX_PLY = 0
698 NPT_DRP = DRAPE_WRK(IDSHEL)%NPLY_DRAPE
700 JPID = IWORK_T(IDSHEL)%PLYID(IP) ! ply pid number
705 ALLOCATE(DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE(NSLICE,2) )
706 ALLOCATE(DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE(NSLICE,2) )
707 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE = 0
708 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE = ZERO
709 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%NSLICE = NSLICE
710 NPT_DRP = NPT_DRP + 1
711 DRAPE_WRK(IDSHEL)%NPLY_DRAPE = NPT_DRP
712 DRAPE_WRK(IDSHEL)%INDX_PLY(NPT_DRP) = IP
713 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IPID = IDRP
715 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE(ISL,1) = RSH4N_GR(J,ISL,1)
716 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE(ISL,2) = RSH4N_GR(J,ISL,2)
717 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE(ISL,1) = ISH4N_GR(J,ISL,1) !! Mat_id
718 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE(ISL,2) = ISH4N_GR(J,ISL,2) !! NPT_SLICE
719 ENDDO ! nbre of slice
729 ELSEIF (IGTYP == 52) THEN
730.NOT.
IF (ALLOCATED(DRAPE_WRK(IDSHEL)%INDX_PLY)) THEN
731 ALLOCATE(DRAPE_WRK(IDSHEL)%INDX_PLY(NPT) )
732 DRAPE_WRK(IDSHEL)%INDX_PLY = 0
733 DRAPE_WRK(IDSHEL)%NPLY_DRAPE = 0
735 NPT_DRP = DRAPE_WRK(IDSHEL)%NPLY_DRAPE
737 JPID = IWORK_T(IDSHEL)%PLYID(IP)
739 JDRP = IGEO_STACK(48,JPID)
741 ALLOCATE(DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE(NSLICE,2) )
742 ALLOCATE(DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE(NSLICE,2) )
743 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE = ZERO
744 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE = 0
745 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%NSLICE = NSLICE
746 NPT_DRP = NPT_DRP + 1
747 DRAPE_WRK(IDSHEL)%NPLY_DRAPE = NPT_DRP
748 DRAPE_WRK(IDSHEL)%INDX_PLY(NPT_DRP) = IP
749 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IPID = IDRP
751 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE(ISL,1) = RSH4N_GR(J,ISL,1)
752 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE(ISL,2) = RSH4N_GR(J,ISL,2)
753 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE(ISL,1) = ISH4N_GR(J,ISL,1) !! Mat_id
754 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE(ISL,2) = ISH4N_GR(J,ISL,2) !! NPT_SLICE
755 ENDDO ! nbre of slice
764.OR.
ENDIF ! IF (IGTYP == 17 IGTYP == 51)
767.OR.
. (IGTYP == 17. OR. IGTYP == 51 IGTYP == 52)) THEN
769 CALL ANCMSG(MSGID=1173,
777 . I3=IXC(NIXC,IDSHEL))
778.AND.
ELSEIF (NIS == 0
779.AND.
. IGTYP /= 17. AND. IGTYP /= 51 IGTYP /= 52) THEN
781 CALL ANCMSG(MSGID=1170,
789 . I3=IXC(NIXC,IDSHEL))
791 ELSEIF (TAGSH(IDSHEL) == IXC(NIXC,IDSHEL)) THEN
792 CALL ANCMSG(MSGID=1155,
800 . I3=IXC(NIXC,IDSHEL))
801 ENDIF ! IF (TAGSH(IE) == 0)
802 ENDDO ! DO II = 1,NEL
803 ENDIF ! IF (ITY == 3)
804 ENDIF ! IF (IGR == JGR)
805 ENDDO ! DO JJ=1,NGRSHEL
811 IDRP = ISH3N_DRP(J,2)
812 NSLICE = ISH3N_DRP(J,3)
822 NPT = IWORKSH(1,NUMELC +IE) ! nb max de plys belong to the element
823 IF (TAGSH(IE+NUMELC) == 0) THEN
824 TAGSH(IE+NUMELC) = ISH
826.NOT.
IF (ALLOCATED(DRAPE_WRK(NUMELC + IE)%DRAPE_PLY)) THEN
827 ALLOCATE(DRAPE_WRK(NUMELC + IE)%DRAPE_PLY(NPT))
828 NUMELTG_DRAPE = NUMELTG_DRAPE + 1
829 INDX_TMP(NUMELC + IE) = NUMELTG_DRAPE
830 DRAPE_WRK(IE + NUMELC)%NPLY_DRAPE = 0
833 DRP_SH3N(I) = DRP_SH3N(I) + 1
835.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
836.NOT.
IF (ALLOCATED(DRAPE_WRK(NUMELC + IE)%INDX_PLY)) THEN
837 ALLOCATE(DRAPE_WRK(NUMELC + IE)%INDX_PLY(NPT) )
838 DRAPE_WRK(NUMELC + IE)%INDX_PLY = 0
840 NPT_DRP = DRAPE_WRK(NUMELC + IE)%NPLY_DRAPE
842 JPID = IWORK_T(NUMELC + IE)%PLYID(IP) ! ply pid
847 ALLOCATE(DRAPE_WRK(IE+NUMELC)%DRAPE_PLY(IP)%RDRAPE(NSLICE,2) )
848 ALLOCATE(DRAPE_WRK(IE+NUMELC)%DRAPE_PLY(IP)%IDRAPE(NSLICE,2) )
849 DRAPE_WRK(IE+NUMELC)%DRAPE_PLY(IP)%RDRAPE = ZERO
850 DRAPE_WRK(IE+NUMELC)%DRAPE_PLY(IP)%IDRAPE = 0
851 DRAPE_WRK(IE+NUMELC)%DRAPE_PLY(IP)%NSLICE = NSLICE
852 NPT_DRP = NPT_DRP + 1
853 DRAPE_WRK(IE+NUMELC)%NPLY_DRAPE = NPT_DRP
854 DRAPE_WRK(IE+NUMELC)%INDX_PLY(NPT_DRP) = IP
855 DRAPE_WRK(IE+NUMELC)%DRAPE_PLY(IP)%IPID = IDRP
857 DRAPE_WRK(IE+NUMELC)%DRAPE_PLY(IP)%RDRAPE(ISL,1) = RSH3N(J,ISL,1)
858 DRAPE_WRK(IE+NUMELC)%DRAPE_PLY(IP)%RDRAPE(ISL,2) = RSH3N(J,ISL,2)
859 DRAPE_WRK(IE+NUMELC)%DRAPE_PLY(IP)%IDRAPE(ISL,1) = ISH3N(J,ISL,1) !! Mat_id
860 DRAPE_WRK(IE+NUMELC)%DRAPE_PLY(IP)%IDRAPE(ISL,2) = ISH3N(J,ISL,2) !! NPT_SLICE
861 ENDDO ! nbre of slice
871 ELSEIF (IGTYP == 52) THEN
872.NOT.
IF (ALLOCATED(DRAPE_WRK(NUMELC + IE)%INDX_PLY)) THEN
873 ALLOCATE(DRAPE_WRK(NUMELC + IE)%INDX_PLY(NPT) )
874 DRAPE_WRK(NUMELC + IE)%INDX_PLY = 0
876 NPT_DRP = DRAPE_WRK(NUMELC + IE)%NPLY_DRAPE
878 JPID = IWORK_T(NUMELC + IE)%PLYID(IP) ! ply pid
881 JDRP = IGEO_STACK(48,JPID)
883 ALLOCATE(DRAPE_WRK(NUMELC + IE)%DRAPE_PLY(IP)%RDRAPE(NSLICE,2) )
884 ALLOCATE(DRAPE_WRK(NUMELC + IE)%DRAPE_PLY(IP)%IDRAPE(NSLICE,2) )
885 DRAPE_WRK(NUMELC + IE)%DRAPE_PLY(IP)%NSLICE = NSLICE
886 NPT_DRP = NPT_DRP + 1
887 DRAPE_WRK(NUMELC + IE)%NPLY_DRAPE = NPT_DRP
888 DRAPE_WRK(NUMELC + IE)%INDX_PLY(NPT_DRP) = IP
889 DRAPE_WRK(NUMELC + IE)%DRAPE_PLY(IP)%IPID = IDRP
891 DRAPE_WRK(NUMELC + IE)%DRAPE_PLY(IP)%RDRAPE(ISL,1) = RSH3N(J,ISL,1)
892 DRAPE_WRK(NUMELC + IE)%DRAPE_PLY(IP)%RDRAPE(ISL,2) = RSH3N(J,ISL,2)
893 DRAPE_WRK(NUMELC + IE)%DRAPE_PLY(IP)%IDRAPE(ISL,1) = ISH3N(J,ISL,1) !! Mat_id
894 DRAPE_WRK(NUMELC + IE)%DRAPE_PLY(IP)%IDRAPE(ISL,2) = ISH3N(J,ISL,2) !! NPT_SLICE
895 ENDDO ! nbre of slice
905.OR.
ENDIF ! IF (IGTYP == 17 IGTYP == 51)
908.OR.
. (IGTYP == 17. OR. IGTYP == 51 IGTYP == 52)) THEN
910 CALL ANCMSG(MSGID=1172,
917.AND.
ELSEIF (NIS == 0
918.AND.
. IGTYP /= 17. AND. IGTYP /= 51 IGTYP /= 52) THEN
920 CALL ANCMSG(MSGID=1171,
928 ENDIF ! IF (TAGSH(IE+NUMELC) == 0)
929 ENDIF ! IF (ISH == IX)
930 ENDDO ! DO IE=1,NUMELTG
932 IF (NO_ISH == 0) THEN
934 CALL ANCMSG(MSGID=1174,
947 IGR = IGRSH3N_DRP(J,1)
948 IDRP = IGRSH3N_DRP(J,2)
949 NSLICE = IGRSH3N_DRP(J,3)
951 OFFC = NGRNOD + NGRBRIC + NGRQUAD + NGRSHEL + NGRTRUS +
952 . NGRBEAM + NGRSPRI + JJ
954 NEL = IGRSH3N(JJ)%NENTITY
956 ITY = IGRSH3N(JJ)%GRTYPE
958 IF (ITY == 7) THEN !!! obsolete
960 IDSH3N = IGRSH3N(JJ)%ENTITY(II)
961 IDSHEL = IDSH3N + NUMELC
964 NPT = IWORKSH(1,IDSHEL)
966 IF (TAGSH(IDSHEL) == 0) THEN
967 TAGSH(IDSHEL) = IXTG(NIXTG,IDSH3N)
969.NOT.
IF (ALLOCATED(DRAPE_WRK(IDSHEL)%DRAPE_PLY)) THEN
970 ALLOCATE(DRAPE_WRK(IDSHEL)%DRAPE_PLY(NPT))
971 NUMELTG_DRAPE = NUMELTG_DRAPE + 1
972 INDX_TMP(IDSHEL) = NUMELTG_DRAPE
973 DRAPE_WRK(IDSHEL)%NPLY_DRAPE = 0
977 DRP_SH3N(I) = DRP_SH3N(I) + 1
979.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
980.NOT.
IF (ALLOCATED(DRAPE_WRK(IDSHEL)%INDX_PLY)) THEN
981 ALLOCATE(DRAPE_WRK(IDSHEL)%INDX_PLY(NPT) )
982 DRAPE_WRK(IDSHEL)%INDX_PLY = 0
984 NPT_DRP = DRAPE_WRK(IDSHEL)%NPLY_DRAPE
986 JPID = IWORK_T(IDSHEL)%PLYID(IP) ! ply pid number
991 ALLOCATE(DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE(NSLICE,2))
992 ALLOCATE(DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE(NSLICE,2))
993 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE = ZERO
994 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE = 0
995 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%NSLICE = NSLICE
996 NPT_DRP = NPT_DRP + 1
997 DRAPE_WRK(IDSHEL)%NPLY_DRAPE = NPT_DRP
998 DRAPE_WRK(IDSHEL)%INDX_PLY(NPT_DRP)= IP
999 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IPID = IDRP
1001 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE(ISL,1) = RSH3N_GR(J,ISL,1)
1002 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE(ISL,2) = RSH3N_GR(J,ISL,2)
1003 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE(ISL,1) = ISH3N_GR(J,ISL,1) !! Mat_id
1004 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE(ISL,2) = ISH3N_GR(J,ISL,2) !! NPT_SLICE
1005 ENDDO ! nbre of slice
1013 ELSEIF (IGTYP == 52) THEN
1014.NOT.
IF (ALLOCATED(DRAPE_WRK(IDSHEL)%INDX_PLY)) THEN
1015 ALLOCATE(DRAPE_WRK(IDSHEL)%INDX_PLY(NPT) )
1016 DRAPE_WRK(IDSHEL)%INDX_PLY = 0
1018 NPT_DRP = DRAPE_WRK(IDSHEL)%NPLY_DRAPE
1020 JPID = IWORK_T(IDSHEL)%PLYID(IP)
1023 JDRP = IGEO_STACK(48,JPID)
1025 ALLOCATE(DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE(NSLICE,2) )
1026 ALLOCATE(DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE(NSLICE,2) )
1027 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE = ZERO
1028 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE = 0
1029 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%NSLICE = NSLICE
1030 NPT_DRP = NPT_DRP + 1
1031 DRAPE_WRK(IDSHEL)%NPLY_DRAPE = NPT_DRP
1032 DRAPE_WRK(IDSHEL)%INDX_PLY(NPT_DRP)= IP
1033 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IPID = IDRP
1035 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE(ISL,1) = RSH3N_GR(J,ISL,1)
1036 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%RDRAPE(ISL,2) = RSH3N_GR(J,ISL,2)
1037 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE(ISL,1) = ISH3N_GR(J,ISL,1) !! Mat_id
1038 DRAPE_WRK(IDSHEL)%DRAPE_PLY(IP)%IDRAPE(ISL,2) = ISH3N_GR(J,ISL,2) !! NPT_SLICE
1039 ENDDO ! nbre of slice
1048.OR.
ENDIF ! IF (IGTYP == 17 IGTYP == 51)
1051.OR.
. (IGTYP == 17. OR. IGTYP == 51 IGTYP == 52)) THEN
1053 CALL ANCMSG(MSGID=1173,
1061 . I3=IXTG(NIXTG,IDSH3N))
1062.AND.
ELSEIF (NIS == 0
1063.AND.
. IGTYP /= 17. AND. IGTYP /= 51 IGTYP /= 52) THEN
1065 CALL ANCMSG(MSGID=1170,
1073 . I3=IXTG(NIXTG,IDSH3N))
1075 ELSEIF (TAGSH(IDSHEL) == IXTG(NIXTG,IDSH3N)) THEN
1076 CALL ANCMSG(MSGID=1155,
1084 . I3=IXTG(NIXTG,IDSH3N))
1085 ENDIF ! IF (TAGSH(IDSHEL) == 0)
1086 ENDDO ! DO II = 1,NEL
1087 ENDIF ! IF (ITY == 7)
1088 ENDIF ! IF (IGR == JGR)
1089 ENDDO ! DO JJ=1,NGRSHEL
1091 ENDIF ! IF (IT4 > 0)
1093 IF (IPRI < 5) WRITE(IOUT,'(10x,i10,2(15x,i10))
')
1094 . ID,DRP_SHEL(I),DRP_SH3N(I)
1096 DEALLOCATE(ISH4N,ISH4N_GR,ISH3N ,ISH3N_GR,
1097 . ISH4N_DRP,IGRSH4N_DRP,ISH3N_DRP,IGRSH3N_DRP,
1098 . ITMP_SH4N,ITMP_SH3N, ITMP_GRSH4N, ITMP_GRSH3N)
1099 DEALLOCATE(RSH4N,RSH3N,RSH4N_GR, RSH3N_GR)
1100 ENDDO ! DO I=1,NDRAPE
1102 IF(NUMELC_DRAPE > 0) THEN
1105 IF(II > 0)INDXSH(II) = I
1109 IF(NUMELTG_DRAPE > 0) THEN
1111 II = INDX_TMP(I + NUMELC)
1112 IF(II > 0) INDXSH(NUMELC_DRAPE + II) = I+ NUMELC
1115 DEALLOCATE(INDX_TMP)
1116 !====================================================================================
1117 ! End reading /DRAPE
1118 !====================================================================================
1122 CALL UDOUBLE(DRAPE_ID,1,NDRAPE,MESS,0,BID)
1128 .' drape number entity
TYPE entity id slice number
',
1129 .' ply thinning factor ply orientation angle change
')
1133 .' drape number nb. of shell elements nb. of sh3n elements
')