55 2 IPARTC,IPARTG,IPARTT,IPARTP,IPARTR,IPARTSP,COMPT_T2,
56 3 MODIF,PASSE,INOM_OPT,NSPCONDN,NSPHION,IPART_L,MEMTR,
57 4 PM_STACK ,IWORKSH ,IGRNOD ,IGRSURF ,IGRSLIN ,
58 5 IGRBRIC ,IGRQUAD ,IGRSH4N ,IGRSH3N ,IGRTRUSS,
59 6 IGRBEAM ,IGRSPRING ,NEW_NSLASH_INT,LSUBMODEL,NEW_HM_NINTER,
60 7 NEW_NINTSUB,NEW_NINIVOL,IXS10,IXS20,IXS16,
61 8 DETONATORS,NSENSOR,SEATBELT_SHELL_TO_SPRING,NB_SEATBELT_SHELLS)
75 USE reader_old_mod ,
ONLY : kinter, kcur, line, nslash
79#include "implicit_f.inc"
94 INTEGER ,
INTENT(IN) :: NSENSOR
95 TYPE(SUBMODEL_DATA) LSUBMODEL(NSUBMOD)
96 INTEGER IPARTS(*),IPARTC(*),IPARTG(*),IPARTT(*),IPARTP(*),
97 . IPARTR(*),COMPT_T2,MODIF,PASSE,INOM_OPT(*),IPARTSP(*),NSPCONDN,
98 . NSPHION,IPART_L(LIPART1,*),MEMTR(*),IWORKSH(*),NEW_NSLASH_INT,NEW_HM_NINTER,NEW_NINTSUB,
99 . NEW_NINIVOL,IXS10(*), IXS16(*), IXS20(*)
100 INTEGER ,
INTENT(IN) :: NB_SEATBELT_SHELLS
101 INTEGER ,
INTENT(IN) :: SEATBELT_SHELL_TO_SPRING(NUMELC,2)
105 TYPE (GROUP_) ,
DIMENSION(NGRNOD) :: IGRNOD
106 TYPE (SURF_) ,
DIMENSION(NSURF) :: IGRSURF
107 TYPE (SURF_) ,
DIMENSION(NSLIN) :: IGRSLIN
108 TYPE (GROUP_) ,
DIMENSION(NGRBRIC) :: IGRBRIC
109 TYPE (GROUP_) ,
DIMENSION(NGRQUAD) :: IGRQUAD
110 TYPE (GROUP_) ,
DIMENSION(NGRSHEL) :: IGRSH4N
111 TYPE (GROUP_) ,
DIMENSION(NGRSH3N) :: IGRSH3N
112 TYPE (GROUP_) ,
DIMENSION(NGRTRUS) :: IGRTRUSS
113 TYPE (GROUP_) ,
DIMENSION(NGRBEAM) :: IGRBEAM
114 TYPE (GROUP_) ,
DIMENSION(NGRSPRI) :: IGRSPRING
123 INTEGER I,J,L,NI,GRM,GRS,IGU,MAIN,NUL,NOD,ISK,NRB
124 INTEGER GR_ID,COMPT,,IAD,CUR_ID,NB_RBY
125 INTEGER NB_KIN,NB_LAG,N1,N2,ID_RBY,DOMA,ISTER
126 INTEGER ID_CYL,CCPL,DIFF,D1,,G1,,GX,IP,JOE,JIE
127 INTEGER COMPT_M,COMPT_S,CUR_TYP,SUM,CONT,K,TYPE2
128 INTEGER NB_INT,ID_INTER,LNM,LNS,L1,L2,ISENS,VAL,WARN
129 INTEGER ID_RLINK,NUL50(50),ID_RBE3,,ID_JOIN
130 INTEGER NU(4),NS(4),JREC,ID_MPC,ISUR,ISURS,ID_MON,FLG
131 INTEGER COMPT2,IGR9_TEMP,IGR8_TEMP,,ID,ID_PART,IDS
132 INTEGER SPTFL,BID(LNOPT1),IUD,(2,NGRNOD),FLAG_T24T25
133 INTEGER SUB_ID,IDTITL,IDINT,GR_BRIC,NUMC
134 INTEGER NTRANS,NNODE_TRANSFORM,NODE_TRANSFORM(6)
137 CHARACTER MESS*40,TSENS*40
138 CHARACTER(LEN=NCHARTITLE) :: TITR
139 CHARACTER(LEN=NCHARKEY) :: KEY,KEY2
140 CHARACTER(LEN=NCHARFIELD) :: STRING
141 INTEGER,
DIMENSION(:),
ALLOCATABLE :: BUF_TEMP
142 DATA mess/
'MULTIDOMAIN PREREADING OF OPTIONS'/
143 LOGICAL :: IS_AVAILABLE
151 . ipartc,ipartg,igrpp_r2r ,pm_stack , iworksh,
152 . igrnod,igrsurf,igrslin,igrbric,ixs10,
165 . msgtype=msgwarning,
175 . msgtype=msgwarning,
195 2 igrbric ,igrquad ,igrsh4n ,igrsh3n ,igrtruss,
196 3 igrbeam ,igrspring ,igrnod, lsubmodel , seatbelt_shell_to_spring,
197 4 nb_seatbelt_shells)
205 CALL hm_get_intv(
'nodeid', nod, is_available, lsubmodel)
206 CALL hm_get_intv(
'skewid', isk, is_available, lsubmodel)
208 nod = usr2sys(nod,
itabm1, mess, id)
220 . option_titr = titr,
223 IF (key(1:3)/=
'MAT')
THEN
224 CALL hm_get_intv('node1
',N1,IS_AVAILABLE,LSUBMODEL)
225 CALL HM_GET_INTV('node2
',N2,IS_AVAILABLE,LSUBMODEL)
227 N1=USR2SYS(N1,ITABM1,MESS,NI)
228 IF (TAGNO(NPART+N1)==-1) CALL MODIF_TAG(TAGNO(NPART+N1),0,MODIF)
231 N2=USR2SYS(N2,ITABM1,MESS,NI)
232 IF (TAGNO(NPART+N2)==-1) CALL MODIF_TAG(TAGNO(NPART+N2),0,MODIF)
241 CALL HM_OPTION_START('/sensor
')
243 CALL HM_OPTION_READ_KEY(LSUBMODEL,
244 . OPTION_ID = ISENS, KEYWORD2 = KEY )
245 IF (KEY(1:4) == 'dist.OR.
' KEY(1:5) == 'type2')
THEN
246 CALL hm_get_intv (
'Sensor1' ,n1 ,is_available,lsubmodel)
247 CALL hm_get_intv (
'Sensor2' ,n2 ,is_available,lsubmodel)
248 n1 = usr2sys(n1,
itabm1,mess,ni)
250 n2 = usr2sys(n2,
itabm1,mess,ni)
252 ELSEIF (key(1:5) ==
'INTER'.OR.key(1:5) ==
'TYPE6')
THEN
253 CALL ancmsg(msgid=835, msgtype=msgerror, anmode=aninfo,
254 . c1=
"/SENSOR/INTER")
255 ELSEIF (key(1:4) ==
'RWAL'.OR.key(1:5) ==
'TYPE7')
THEN
256 CALL ancmsg(msgid=835, msgtype=msgerror, anmode=aninfo,
257 . c1=
"/SENSOR/RWALL")
258 ELSEIF (key(1:3) ==
'VEL' .OR. key(1:5) ==
'TYPE9')
THEN
262 ELSEIF (key(1:4) /=
'SENS'.AND.key(1:5)/=
'TYPE3'
263 . .AND.key(1:3)/=
'AND'.AND.key(1:5)/=
'TYPE4'
264 . .AND.key(1:2)/=
'OR'.AND.key(1:5)/=
'TYPE5'
265 . .AND.key(1:3)/=
'NOT'.AND.key(1:5)/=
'TYPE8'
266 . .AND.key(1:4)/=
'TIME'.AND.key(1:5)/=
'TYPE0'
267'ACCE'.AND.key(1:5)/=
'TYPE1')
THEN
268 tsens =
'/SENSOR/'//key(1:5)
269 CALL ancmsg(msgid=835, msgtype=msgerror, anmode=aninfo,
290 IF (key(1:3) ==
'SPH') cycle
294 CALL hm_get_intv (
'NODE1' ,nod ,is_available,lsubmodel)
295 CALL hm_get_intv (
'shell_ID' ,ids ,is_available,lsubmodel)
296 IF ((nod== 0).AND.(ids /= 0))
THEN
300 IF(
ixc(nixc*j)==ids)
THEN
305 IF (
tag_elc(ids+npart) < 1)
THEN
308 ELSEIF ((nod/=0).AND.(ids==0))
THEN
310 nod=usr2sys(nod,
itabm1,mess,id)
324 IF (key(1:3) ==
'SPH')
THEN
328 CALL hm_get_intv (
'NODE1' ,nod ,is_available,lsubmodel)
329 CALL hm_get_intv ('shell_id
' ,IDS ,IS_AVAILABLE,LSUBMODEL)
330.AND.
IF ((NOD== 0)(IDS /= 0)) THEN
332 !gauges defined by element-------------------------------------
334 IF(IXC(NIXC*J)==IDS)THEN
339 IF (TAG_ELC(IDS+NPART) < 1) THEN
340 CALL MODIF_TAG(TAG_ELC(IDS+NPART),1,MODIF)
342.AND.
ELSEIF ((NOD/=0)(IDS==0)) THEN
343 !gauges defined by nodes---------------------------------------
344 NOD=USR2SYS(NOD,ITABM1,MESS,ID)
345 CALL MODIF_TAG(TAGNO(NPART+NOD),2,MODIF)
354 ALLOCATE(TAGMON(NMONVOL + NVOLU))
361 CALL HM_OPTION_START('/
monvol')
366 CALL HM_OPTION_READ_KEY(LSUBMODEL,
367 . OPTION_ID = ID_MON,
370 IF (KEY(1:7) == 'airbag1
') THEN
371 CALL HM_GET_INTV('surf
', ISUR, IS_AVAILABLE, LSUBMODEL)
372 ELSEIF ((KEY(1:4) == 'pres.OR.
')(KEY(1:6) == 'airbag
')) THEN
373 CALL HM_GET_INTV('entityiddisplayed
', ISUR, IS_AVAILABLE, LSUBMODEL)
378 IF(ISUR==IGRSURF(J)%ID) ISURS=J
381 IF (ISURS==0) GOTO 139
383 IF (IGRSURF(ISURS)%NSEG>0) THEN
384 IF (ISURF_R2R(3,ISURS)==IGRSURF(ISURS)%NSEG) THEN
387 ELSEIF (ISURF_R2R(3,ISURS)/=0) THEN
389 CALL ANCMSG(MSGID=836,
412 CALL HM_OPTION_START('/cyl_joint
')
413 IF (PASSE==0) ALLOCATE(TAGCYL(NJOINT))
418 CALL HM_OPTION_READ_KEY(LSUBMODEL,
419 . OPTION_ID = ID_CYL)
420 CALL HM_GET_INTV('independentnode
',N1,IS_AVAILABLE,LSUBMODEL)
421 CALL HM_GET_INTV('dependentnodes
',N2,IS_AVAILABLE,LSUBMODEL)
422 CALL HM_GET_INTV('dependentnodeset
',IGU,IS_AVAILABLE,LSUBMODEL)
426 IF (IGRNOD(J)%ID==IGU) GR_ID = J
428 N1=USR2SYS(N1,ITABM1,MESS,ID_CYL)
429 N2=USR2SYS(N2,ITABM1,MESS,ID_CYL)
436 IGR2_TEMP = IGRNOD(GR_ID)%NENTITY
437 IGR8_TEMP = IGRNOD(GR_ID)%R2R_ALL
438 IGR9_TEMP = IGRNOD(GR_ID)%R2R_SHARE
441 IF (TAGNO(N1+NPART)>1) IGR9_TEMP=IGR9_TEMP+1
442 IF (TAGNO(N2+NPART)>1) IGR9_TEMP=IGR9_TEMP+1
443 IF (TAGNO(N1+NPART)>0) IGR8_TEMP=IGR8_TEMP+1
444 IF (TAGNO(N2+NPART)>0) IGR8_TEMP=IGR8_TEMP+1
445 IF (TAGNO(N1+NPART)/=0) IGR2_TEMP=IGR2_TEMP+1
446 IF (TAGNO(N2+NPART)/=0) IGR2_TEMP=IGR2_TEMP+1
448 IF (IGR8_TEMP>0) THEN
449 DIFF = IGR2_TEMP-IGR8_TEMP
450.OR.
IF ((IGR9_TEMP>0)(DIFF/=0)) THEN
453 DO J=1,IGRNOD(GR_ID)%NENTITY
454 CUR_ID = IGRNOD(GR_ID)%ENTITY(J)
455 IF (TAGNO(CUR_ID+NPART)<3) THEN
456 CALL MODIF_TAG(TAGNO(NPART+CUR_ID),5,MODIF)
460 IF (TAGNO(N1+NPART)<3) THEN
461 CALL MODIF_TAG(TAGNO(NPART+N1),5,MODIF)
463 IF (TAGNO(N2+NPART)<3) THEN
464 CALL MODIF_TAG(TAGNO(NPART+N2),5,MODIF)
481 CALL HM_OPTION_START('/mpc
')
482 IF (PASSE==0) ALLOCATE(TAGMPC(NUMMPC))
489 CALL HM_OPTION_READ_KEY(LSUBMODEL,
490 . OPTION_ID = ID_MPC,
491 . OPTION_TITR = TITR)
492 CALL HM_GET_INTV('number_of_nodes
',NUMC,IS_AVAILABLE,LSUBMODEL)
494 CALL HM_GET_INT_ARRAY_INDEX('node_id
',N1,J,IS_AVAILABLE,LSUBMODEL)
495 N2 = USR2SYS(N1,ITABM1,MESS,ID_MPC)
496 IF (TAGNO(N2+NPART)>=0) COMPT_M=COMPT_M+1
497 IF (TAGNO(N2+NPART)>1) COMPT_S=COMPT_S+1
498 IF (TAGNO(N2+NPART)<=0) COMPT_S=COMPT_S+1
508 CALL ANCMSG(MSGID=896,
523 CALL HM_OPTION_START('/gjoint
')
524 IF (PASSE==0) ALLOCATE(TAGJOIN(NGJOINT))
532 CALL HM_OPTION_READ_KEY(LSUBMODEL,
533 . OPTION_ID = ID_JOIN,
534 . OPTION_TITR = TITR,
537 CALL HM_GET_INTV('node_id0
',NU(1),IS_AVAILABLE,LSUBMODEL)
538 CALL HM_GET_INTV('node_id1
',NU(2),IS_AVAILABLE,LSUBMODEL)
539 CALL HM_GET_INTV('node_id2
',NU(3),IS_AVAILABLE,LSUBMODEL)
540 CALL HM_GET_INTV('node_id3
',NU(4),IS_AVAILABLE,LSUBMODEL)
543 IF(KEY2(1:4)=='diff
') VAL = 4
546 NS(J) = USR2SYS(NU(J),ITABM1,MESS,ID_JOIN)
547 IF (TAGNO(NS(J)+NPART)>=0) COMPT_M=COMPT_M+1
548 IF (TAGNO(NS(J)+NPART)>1) COMPT_S=COMPT_S+1
549 IF (TAGNO(NS(J)+NPART)<=0) COMPT_S=COMPT_S+1
560 CALL ANCMSG(MSGID=896,
575 IF (PASSE==0) ALLOCATE(TAGRB2(NRBE2))
579 CALL HM_OPTION_START('/rbe2
')
582 CALL HM_OPTION_READ_KEY(LSUBMODEL,
583 . OPTION_ID = ID_RBE2,
584 . OPTION_TITR = TITR)
586 CALL HM_GET_INTV('independentnode
',N1,IS_AVAILABLE,LSUBMODEL)
587 CALL HM_GET_INTV('dependentnodeset',igu,is_available,lsubmodel)
589 n2 = usr2sys(n1,
itabm1,mess,id_rbe2)
592 IF (igrnod(j)%ID==igu) gr_id = j
601 compt_m = igrnod(gr_id)%R2R_ALL
602 compt_s = igrnod(gr_id)%R2R_SHARE
603 IF (
tagno(n2+npart)>=0) compt_m=compt_m+1
604 IF (
tagno(n2+npart)>1) compt_s=compt_s+1
605 IF (
tagno(n2+npart)<=0) compt_s=compt_s+1
630 IF (passe==0)
ALLOCATE(
tagrb3(nrbe3))
639 . option_id = id_rbe3,
640 . option_titr = titr)
641 CALL hm_get_intv(
'dependentnode',n1,is_available,lsubmodel)
642 CALL hm_get_intv(
'nset',val,is_available,lsubmodel)
644 ALLOCATE(buf_temp(val))
645 n2 = usr2sys(n1,
itabm1,mess,id_rbe3)
651 IF (igrnod(j)%ID==igu) gr_id = j
654 compt_m = compt_m + igrnod(gr_id)%R2R_ALL
655 compt_s = compt_s + igrnod(gr_id)%R2R_SHARE
658 IF (
tagno(n2+npart)>=0) compt_m=compt_m+1
659 IF (
tagno(n2+npart)>1) compt_s=compt_s+1
660 IF (
tagno(n2+npart)<=0) compt_s=compt_s+1
670 IF (
tagno(npart+n2)/=-1)
THEN
677 DO j=1,igrnod(gr_id)%NENTITY
678 cur_id = igrnod(gr_id)%ENTITY(j)
679 IF (
tagno(cur_id+npart)<3)
THEN
695 IF (passe==0)
ALLOCATE(
taglnk(nlink))
702 . option_id = id_rlink,
703 . option_titr = titr)
704 CALL hm_get_intv(
'dependentnodeset' ,igu ,is_available,lsubmodel)
708 IF (igrnod(j)%ID==igu) gr_id = j
712 nod=igrnod(gr_id)%R2R_ALL
713 IF (igrnod(gr_id)%R2R_SHARE==0) tag = 1
720 DO j=1,igrnod(gr_id)%NENTITY
721 cur_id = igrnod(gr_id)%ENTITY(j)
722 IF (
tagno(cur_id+npart)<3)
THEN
766 . option_id = id_inter,
768 . submodel_id = sub_id,
769 . option_titr = titr,
778 IF (key(6:6)==
'/') flg = 1
779 IF ((len_trim(key))==5) flg = 1
783 IF ((key(1:6)==
'TYPE24').OR.(key(1:6)==
'TYPE25'))
THEN
785 CALL hm_get_intv(
'secondaryentityids',grs,is_available,lsubmodel)
786 CALL hm_get_intv(
'GRNOD_ID',grnod_t24t25,is_available,lsubmodel)
788 IF ((grs > 0).AND.(grnod_t24t25 > 0)) grnod_t24t25 = 0
792 IF (((key(1:5)==
'TYPE2').AND.(flg==1)).OR.
793 . (key(1:5)==
'TYPE7').OR.(key(1:5)==
'TYPE5').OR.(key(1:5)==
'TYPE8').OR.
794 . (key(1:6)==
'TYPE10').OR.(key(1:6)==
'TYPE14').OR.
795 . ((key(1:6)==
'TYPE24').AND.(grnod_t24t25 > 0)).OR.
796 . ((key(1:6)==
'TYPE25').AND.(grnod_t24t25 > 0)))
THEN
798 CALL hm_get_intv('secondaryentityids
',GRS,IS_AVAILABLE,LSUBMODEL)
799 CALL HM_GET_INTV('mainentityids
',GRM,IS_AVAILABLE,LSUBMODEL)
802 IF (FLAG_T24T25 == 1) GRS = GRNOD_T24T25
805 IF ((KEY(1:5)=='type2.AND.
')(FLG==1)) THEN
806 CALL HM_GET_INTV('wflag
',SPTFL,IS_AVAILABLE,LSUBMODEL)
807.AND.
IF ((SPTFL/=25)(SPTFL/=26)) THEN
814 CALL TAGINT_R2R(G1,G2,GRS,GRM,ID_INTER,
815 . TYPE2,VAL,TAG,I,COMPT,PASSE,0,IGRPP_R2R,
816 . IGRNOD ,IGRSURF ,IGRSLIN, IGRBRIC)
820 DO J=1,IGRNOD(G1)%NENTITY
821 CUR_ID = IGRNOD(G1)%ENTITY(J)
822 IF (TAGNO(CUR_ID+NPART)==2) FLG_TIED(4) = 1
823 IF (TAGNO(CUR_ID+NPART)==4) FLG_TIED(5) = 1
828 COMPT_T2 = COMPT_T2 + 1
830.OR..OR.
IF ((TAG==3)(TAG==1)(TAG==4)) THEN
831 CALL TAG_ELEM_VOID_R2R(IGRSURF(G2)%NSEG,IPARTS,
832 . IPARTC,IPARTG,IPARTSP,VAL,CONT,MODIF,MEMTR,0,0,EANI,
833 . IGRSURF(G2),IGRNOD,G2)
836.OR.
IF ((TAG==2)(TAG==1)) THEN
837 CALL TAG_ELEM_VOID_R2R(IGRNOD(G1)%NENTITY,IPARTS,
838 . IPARTC,IPARTG,IPARTSP,VAL,CONT,MODIF,MEMTR,0,1,EANI,
844 ELSEIF (KEY(1:6) == 'type18
') THEN
846 CALL HM_GET_INTV('aleelemsentityids
',GR_BRIC,IS_AVAILABLE,LSUBMODEL)
847 CALL HM_GET_INTV('alenodesentityids
',GRS,IS_AVAILABLE,LSUBMODEL)
848 CALL HM_GET_INTV('mainentityids
',GRM,IS_AVAILABLE,LSUBMODEL)
852 CALL TAGINT_R2R(G1,G2,GRS,GRM,ID_INTER,
853 . TYPE2,VAL,TAG,I,COMPT,PASSE,0,IGRPP_R2R,
854 . IGRNOD ,IGRSURF ,IGRSLIN, IGRBRIC)
855 ELSEIF (GR_BRIC > 0) THEN
856 CALL TAGINT_R2R(G1,G2,GR_BRIC,GRM,ID_INTER,
857 . TYPE2,VAL,TAG,I,COMPT,PASSE,3,IGRPP_R2R,
858 . IGRNOD ,IGRSURF ,IGRSLIN, IGRBRIC)
862 COMPT_T2 = COMPT_T2 + 1
864.OR..OR.
IF ((TAG == 3) (TAG == 1) (TAG == 4)) THEN
865 CALL TAG_ELEM_VOID_R2R(IGRSURF(G2)%NSEG,IPARTS,
866 . IPARTC,IPARTG,IPARTSP,VAL,CONT,MODIF,MEMTR,0,0,EANI,
867 . IGRSURF(G2),IGRNOD,G2)
870.OR.
IF ((TAG == 2) (TAG == 1)) THEN
872 CALL TAG_ELEM_VOID_R2R(IGRNOD(G1)%NENTITY,IPARTS,
873 . IPARTC,IPARTG,IPARTSP,VAL,CONT,MODIF,MEMTR,0,1,EANI,
875 ELSEIF (GR_BRIC > 0) THEN
876 DO J=1,IGRBRIC(G1)%NENTITY
877 CUR_ID = IGRBRIC(G1)%ENTITY(J)
879.AND.
IF ((TAG_ELS(CUR_ID+NPART)<(1+CONT))(TAGNO(IPARTS(CUR_ID))/=VAL)) THEN
880 CALL MODIF_TAG(TAG_ELS(CUR_ID+NPART),1+CONT,MODIF)
887 ELSEIF (KEY(1:6)=='type11
') THEN
890 CALL HM_GET_INTV('secondaryentityids
',GRS,IS_AVAILABLE,LSUBMODEL)
891 CALL HM_GET_INTV('mainentityids
',GRM,IS_AVAILABLE,LSUBMODEL)
893 CALL TAGINT_R2R(G1,G2,GRS,GRM,ID_INTER,
894 . TYPE2,VAL,TAG,I,COMPT,PASSE,2,IGRPP_R2R,
895 . IGRNOD ,IGRSURF ,IGRSLIN, IGRBRIC)
897 COMPT_T2 = COMPT_T2 + 1
899.OR.
IF ((TAG==2)(TAG==1)) THEN
900 CALL TAG_ELEM_VOID_R2R_LIN(IGRSLIN(G1)%NSEG,
901 . IPARTS,IPARTC,IPARTG,IPARTT,IPARTP,IPARTR,VAL,CONT,
902 . MODIF,WARN,IGRSLIN(G1))
905.OR.
IF ((TAG==3)(TAG==1)) THEN
906 CALL TAG_ELEM_VOID_R2R_LIN(IGRSLIN(G2)%NSEG,
907 . IPARTS,IPARTC,IPARTG,IPARTT,IPARTP,IPARTR,VAL,CONT,
908 . MODIF,WARN,IGRSLIN(G2))
912 CALL ANCMSG(MSGID=892,
917 ELSEIF (KEY(1:6)=='type24.OR.
'KEY(1:6)=='type21.OR.
'KEY(1:5)=='type6.OR.
'
918 . KEY(1:6)=='type23.OR.
'KEY(1:6)=='type20.OR.
'KEY(1:6)=='type15.OR.
'
919 . KEY(1:6)=='type25.OR.
'((KEY(1:5)=='type3.AND.
')(FLG==1))) THEN
921 CALL HM_GET_INTV('secondaryentityids
',GRS,IS_AVAILABLE,LSUBMODEL)
922 CALL HM_GET_INTV('mainentityids
',GRM,IS_AVAILABLE,LSUBMODEL)
923.AND.
IF ((FLAG_T24T25 == 1)(GRM==0)) GRM = GRS
925 CALL TAGINT_R2R(G1,G2,GRS,GRM,ID_INTER,
926 . TYPE2,VAL,TAG,I,COMPT,PASSE,1,IGRPP_R2R,
927 . IGRNOD ,IGRSURF ,IGRSLIN, IGRBRIC)
929 COMPT_T2 = COMPT_T2 + 1
931.OR.
IF ((TAG==2)(TAG==1)) THEN
932 CALL TAG_ELEM_VOID_R2R(IGRSURF(G1)%NSEG,IPARTS,
933 . IPARTC,IPARTG,IPARTSP,VAL,CONT,MODIF,MEMTR,0,0,EANI,
934 . IGRSURF(G1),IGRNOD,G1)
937.OR.
IF ((TAG==3)(TAG==1)) THEN
938 CALL TAG_ELEM_VOID_R2R(IGRSURF(G2)%NSEG,IPARTS,
939 . IPARTC,IPARTG,IPARTSP,VAL,CONT,MODIF,MEMTR,0,0,EANI,
940 . IGRSURF(G2),IGRNOD,G2)
945 ELSEIF (KEY(1:3)/='sub
') THEN
946 CALL ANCMSG(MSGID=835,
955 NEW_HM_NINTER = COMPT
963 CALL HM_OPTION_START('/inter
')
968 CALL HM_OPTION_READ_KEY(LSUBMODEL,
969 . OPTION_ID = ID_INTER,
971 . SUBMODEL_ID = SUB_ID,
972 . OPTION_TITR = TITR,
976 IF (KEY(1:3)=='sub
') THEN
977 CALL HM_GET_INTV('interfaceid
',IDINT,IS_AVAILABLE,LSUBMODEL)
979 DO J=1,HM_NINTER+NSLASH(KCUR)
980 IF (TAGINT(J)==IDINT) THEN
991 NEW_HM_NINTER = NEW_HM_NINTER + COMPT
1001 IF (PASSE==0) ALLOCATE(TAGRBY(NRBODY))
1008 CALL HM_OPTION_START('/rbody
')
1015 CALL HM_OPTION_READ_KEY(LSUBMODEL,
1016 . OPTION_ID = ID_RBY,
1018 . OPTION_TITR = TITR)
1020 IF(KEY(1:6)=='lagmul
') CYCLE
1024 CALL HM_GET_INTV('node_id
',MAIN,IS_AVAILABLE,LSUBMODEL)
1025 CALL HM_GET_INTV('sens_id
',ISENS,IS_AVAILABLE,LSUBMODEL)
1026 CALL HM_GET_INTV('grnd_id
',IGU,IS_AVAILABLE,LSUBMODEL)
1028 MAIN=USR2SYS(MAIN,ITABM1,MESS,ID_RBY)
1030 IF (IGRNOD(J)%ID==IGU) GR_ID = J
1034 COMPT=IGRNOD(GR_ID)%R2R_ALL
1035 COMPT2=IGRNOD(GR_ID)%R2R_SHARE
1037 IF (TAGNO(MAIN+NPART)>1) COMPT = COMPT + 1
1038 IF (TAGNO(MAIN+NPART)>1) COMPT2 = COMPT2 + 1
1039 IF (COMPT2==0) TAG = 1
1044 CALL MODIF_TAG(TAGNO(NPART+MAIN),1,MODIF)
1047 IF (TAGNO(MAIN+NPART)<3) THEN
1048 CALL MODIF_TAG(TAGNO(NPART+MAIN),3,MODIF)
1050 CALL ANCMSG(MSGID=976,
1053 . C1="FOR RBODY ID=",
1055 . C2="- RBODY WITH SENSOR")
1070 CALL HM_OPTION_START('/rbody
')
1077 CALL HM_OPTION_READ_KEY(LSUBMODEL,
1078 . OPTION_ID = ID_RBY,
1080 . OPTION_TITR = TITR)
1082 IF(KEY(1:6)=='lagmul
') THEN
1085 CALL ANCMSG(MSGID=835,
1090 CALL HM_GET_INTV('node_id
',MAIN,IS_AVAILABLE,LSUBMODEL)
1091 CALL HM_GET_INTV('grnd_id
',IGU,IS_AVAILABLE,LSUBMODEL)
1093 MAIN=USR2SYS(MAIN,ITABM1,MESS,ID_RBY)
1095 IF (IGRNOD(J)%ID==IGU) GR_ID = J
1101 COMPT=IGRNOD(GR_ID)%R2R_ALL
1102 COMPT2=IGRNOD(GR_ID)%R2R_SHARE
1104 IF (TAGNO(MAIN+NPART)>1) COMPT = COMPT + 1
1105 IF (TAGNO(MAIN+NPART)>1) COMPT2 = COMPT2 + 1
1106 IF (COMPT2==0) TAG = 1
1113 CALL MODIF_TAG(TAGNO(NPART+MAIN),1,MODIF)
1116 IF (TAGNO(MAIN+NPART)<3) THEN
1117 CALL MODIF_TAG(TAGNO(NPART+MAIN),3,MODIF)
1124 ENDIF ! IF (COMPT>0) THEN
1125 END IF ! IF(KEY(1:6)=='lagmul
') THEN
1136 CALL HM_OPTION_START('/sphbcs
')
1137 IF (PASSE==0) ALLOCATE(TAGSPHBCS(NSPCOND))
1140 CALL HM_OPTION_READ_KEY(LSUBMODEL,
1142 . OPTION_TITR = TITR,
1144 CALL HM_GET_INTV('entityid
',IGU,IS_AVAILABLE,LSUBMODEL)
1148 IF (IGRNOD(J)%ID==IGU) GR_ID = J
1152 DO L=1,IGRNOD(GR_ID)%NENTITY
1153 CUR_ID = NOD2SP(IGRNOD(GR_ID)%ENTITY(L))
1154 IF (TAGNO(IPARTSP(CUR_ID))/=0) THEN
1160 NSPCONDN = NSPCONDN + 1
1171 IF (PASSE == 0) ALLOCATE(TAGSPHIO(NSPHIO))
1173 CALL HM_OPTION_START('/sph/inout
')
1177 CALL HM_OPTION_READ_KEY(LSUBMODEL,
1179 . OPTION_TITR = TITR)
1180 CALL HM_GET_INTV('pid
' ,ID_PART ,IS_AVAILABLE,LSUBMODEL)
1181 CALL HM_GET_INTV('surf_id
' ,ISUR ,IS_AVAILABLE,LSUBMODEL)
1184 IF (IPART_L(4,J) == ID_PART) IDS = J
1187 IF (IGRSURF(J)%ID == ISUR) G2 = J
1190 IF (TAGNO(IDS) /= 0) THEN
1191 CALL TAG_ELEM_VOID_R2R(IGRSURF(G2)%NSEG,IPARTS,
1192 . IPARTC,IPARTG,IPARTSP,1,0,MODIF,MEMTR,-2,0,EANI,
1193 . IGRSURF(G2),IGRNOD,G2)
1194 NSPHION = NSPHION + 1
1203 CALL HM_OPTION_COUNT('/ale/link/vel
', NALELK)
1204 IF (NALELK > 0) THEN
1205 CALL HM_OPTION_START('/ale/link/vel
')
1207 CALL HM_OPTION_READ_KEY(LSUBMODEL, OPTION_ID = ID, OPTION_TITR = TITR)
1208 CALL HM_GET_INTV('node_id1
', N1, IS_AVAILABLE, LSUBMODEL)
1209 CALL HM_GET_INTV('node_id2
', N2, IS_AVAILABLE, LSUBMODEL)
1210 CALL HM_GET_INTV('grnod_id
', GR_ID, IS_AVAILABLE, LSUBMODEL)
1212 IF (IGRNOD(J)%ID == GR_ID) THEN
1217 N1 = USR2SYS(N1, ITABM1, MESS, ID)
1218 N2 = USR2SYS(N2, ITABM1, MESS, ID)
1220.AND.
IF ((IGRNOD(GR_ID)%R2R_ALL > 0) (TAGNO(NPART+N1) < 1)) THEN
1221 CALL MODIF_TAG(TAGNO(NPART + N1), 2, MODIF)
1222.AND.
ELSEIF ((IGRNOD(GR_ID)%R2R_SHARE > 0) (TAGNO(NPART+N1) == 1)) THEN
1223 CALL MODIF_TAG(TAGNO(NPART+N1), 2, MODIF)
1224 ELSEIF (TAGNO(NPART+N1) == 0) THEN
1225 CALL MODIF_TAG(TAGNO(NPART+N1), 2, MODIF)
1226 ELSEIF (TAGNO(NPART+N1) == -1) THEN
1227 CALL MODIF_TAG(TAGNO(NPART+N1), 0, MODIF)
1231.AND.
IF ((IGRNOD(GR_ID)%R2R_ALL > 0) (TAGNO(NPART+N2) < 1)) THEN
1232 CALL MODIF_TAG(TAGNO(NPART+N2), 2, MODIF)
1233.AND.
ELSEIF ((IGRNOD(GR_ID)%R2R_SHARE > 0) (TAGNO(NPART+N2) == 1)) THEN
1234 CALL MODIF_TAG(TAGNO(NPART+N2), 2, MODIF)
1235 ELSEIF (TAGNO(NPART+N2) == 0) THEN
1236 CALL MODIF_TAG(TAGNO(NPART+N2), 2, MODIF)
1237 ELSEIF (TAGNO(NPART+N2) == -1) THEN
1238 CALL MODIF_TAG(TAGNO(NPART+N2), 0, MODIF)
1248 CALL HM_OPTION_START('/rwall
')
1252 CALL HM_OPTION_READ_KEY(LSUBMODEL,
1253 . OPTION_ID = ID_MON,
1256 IF (KEY(1:7) == 'lagmul
') THEN
1258 CALL ANCMSG(MSGID=835,
1263 CALL HM_GET_INTV('node1
',NOD,IS_AVAILABLE,LSUBMODEL)
1265 NOD=USR2SYS(NOD,ITABM1,MESS,ID)
1266 CALL MODIF_TAG(TAGNO(NPART+NOD),4,MODIF)
1276 IF (PASSE==0) ALLOCATE(TAG_INIVOL(NUM_INIVOL))
1278 CALL HM_OPTION_START('/
inivol')
1281 CALL HM_OPTION_READ_KEY(LSUBMODEL, OPTION_ID=ID, OPTION_TITR=TITR)
1282 CALL HM_GET_INTV('secondarycomponentlist
', ID_PART, IS_AVAILABLE, LSUBMODEL)
1285 IF(IPART_L(4,J)==ID_PART) IDS=J
1288 IF (TAGNO(IDS) > 0) THEN
1290 NEW_NINIVOL = NEW_NINIVOL + 1
1298 CALL HM_OPTION_COUNT('transform
',NTRANS)
1299 CALL HM_OPTION_START('transform
')
1303 CALL HM_OPTION_READ_KEY(LSUBMODEL,
1308 NODE_TRANSFORM(1:6) = 0
1310 IF ((KEY(1:3)=='tra.OR.
')(KEY(1:3)=='rot.OR.
')(KEY(1:3)=='sym
')) THEN
1312 CALL HM_GET_INTV('node1
',NODE_TRANSFORM(1),IS_AVAILABLE,LSUBMODEL)
1313 CALL HM_GET_INTV('node2
',NODE_TRANSFORM(2),IS_AVAILABLE,LSUBMODEL)
1314 ELSEIF (KEY(1:3)=='sca
') THEN
1316 CALL HM_GET_INTV('node1
',NODE_TRANSFORM(1),IS_AVAILABLE,LSUBMODEL)
1317 ELSEIF (KEY(1:3)=='pos
') THEN
1319 CALL HM_GET_INTV('node1
',NODE_TRANSFORM(1),IS_AVAILABLE,LSUBMODEL)
1320 CALL HM_GET_INTV('node2
',NODE_TRANSFORM(2),IS_AVAILABLE,LSUBMODEL)
1321 CALL HM_GET_INTV('node3
',NODE_TRANSFORM(3),IS_AVAILABLE,LSUBMODEL)
1322 CALL HM_GET_INTV('node4
',NODE_TRANSFORM(4),IS_AVAILABLE,LSUBMODEL)
1323 CALL HM_GET_INTV('node5
',NODE_TRANSFORM(5),IS_AVAILABLE,LSUBMODEL)
1324 CALL HM_GET_INTV('node6
',NODE_TRANSFORM(6),IS_AVAILABLE,LSUBMODEL)
1327 DO J=1,NNODE_TRANSFORM
1328 IF (NODE_TRANSFORM(J) > 0) THEN
1329 NOD=USR2SYS(NODE_TRANSFORM(J),ITABM1,MESS,ID)
1330 IF (TAGNO(NPART+NOD) == -1) CALL MODIF_TAG(TAGNO(NPART+NOD),0,MODIF)
1339 CALL HM_OPTION_START('/dfs/detpoin
')
1340 DO I=1,DETONATORS%N_DET_POINT
1341 CALL HM_OPTION_READ_KEY(LSUBMODEL,OPTION_ID = ID,KEYWORD2 = KEY)
1342 CALL HM_GET_INTV('rad_det_node1
', NOD, IS_AVAILABLE, LSUBMODEL)
1344 NOD=USR2SYS(NOD,ITABM1,MESS,ID)
1345 IF (TAGNO(NPART+NOD) == -1) CALL MODIF_TAG(TAGNO(NPART+NOD),0,MODIF)
subroutine r2r_prelec(iparts, ipartc, ipartg, ipartt, ipartp, ipartr, ipartsp, compt_t2, modif, passe, inom_opt, nspcondn, nsphion, ipart_l, memtr, pm_stack, iworksh, igrnod, igrsurf, igrslin, igrbric, igrquad, igrsh4n, igrsh3n, igrtruss, igrbeam, igrspring, new_nslash_int, lsubmodel, new_hm_ninter, new_nintsub, new_ninivol, ixs10, ixs20, ixs16, detonators, nsensor, seatbelt_shell_to_spring, nb_seatbelt_shells)
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)