47
48
49
58 USE format_mod , ONLY : fmw_10i
59
60
61
62#include "implicit_f.inc"
63
64
65
66#include "com04_c.inc"
67#include "units_c.inc"
68#include "param_c.inc"
69#include "tabsiz_c.inc"
70
71
72
73 TYPE (UNIT_TYPE_),INTENT(IN) :: UNITAB
74 INTEGER,INTENT(IN) :: ITABM1(SITABM1),ITAB()
75 INTEGER,INTENT(IN) :: IPM(NPROPMI,NUMMAT)
76 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(NSUBMOD)
77 TYPE(DETONATORS_STRUCT_),INTENT(INOUT),TARGET :: DETONATORS
78 TYPE (GROUP_),DIMENSION(NGRNOD),INTENT(IN) :: IGRNOD
79
80
81
82 INTEGER :: I, MAT, J, K,,IGS,JJ,MDET,DET_ID,IDET
83 INTEGER :: IBID, NODE_ID1, NODE_ID2,uID1,uID2, IOPT, IUNIT, UID
84 INTEGER :: FLAG_FMT,IMAT,IFLAGUNIT,UNUSED
85 INTEGER :: STAT,
87 CHARACTER*40 :: MESS
88 CHARACTER*64 :: chain1,chain2
89 CHARACTER(LEN=NCHARKEY) :: KEY, KEY2
90 CHARACTER(LEN=NCHARTITLE) :: TITR
91 LOGICAL :: IS_ENCRYPTED, IS_AVAILABLE
92 INTEGER,POINTER,DIMENSION(:) :: IECRAN
94 INTEGER :: NDETPS,NDETSG,NECRAN,NDETPL,NDETCORD
95
96
97
98 INTEGER,EXTERNAL :: NODGRNR5, USR2SYS,
99 INTEGER :: UNUSED_MAT_DETONATOR
100 DATA mess/'DETONATORS DEFINITION '/
101
102
103
104
106
107 DO idet=1,detonators%N_DET_WAVE_SHAPER
108
109 CALL hm_option_read_key(lsubmodel,option_id=det_id, unit_id=uid,keyword2=key,keyword3=key2)
110 IF (len_trim(key) > 0) key = key(1:7)
111 IF (len_trim(key2) > 0) key2 = key2(1:4)
112
113 iecran => detonators%WAVE_SHAPER(idet)%NODES(1:)
114 decran => detonators%WAVE_SHAPER(idet)%TIME(1:)
115
116 is_encrypted= .false.
117 is_available = .false.
119
120
121
122 CALL hm_get_floatv(
'rad_det_locationA_X', vdet, is_available, lsubmodel, unitab)
123 CALL hm_get_floatv('rad_det_locationa_y
', YC1, IS_AVAILABLE, LSUBMODEL, UNITAB)
124 CALL HM_GET_FLOATV('rad_det_locationa_z', ZC1, IS_AVAILABLE, LSUBMODEL, UNITAB)
125 CALL HM_GET_FLOATV('rad_det_time', ALT, IS_AVAILABLE, LSUBMODEL,UNITAB)
126 CALL HM_GET_INTV('rad_det_materialid', MAT, IS_AVAILABLE, LSUBMODEL)
127 CALL HM_GET_INTV('entityid', IGU, IS_AVAILABLE, LSUBMODEL)
128 !---------------------------------!
129 ! CHECKING USER FLAGS !
130 ! +INTERNAL ID !
131 !---------------------------------!
132 MDET=MAT !bak
133 IF (ALT > INFINITY) ALT=INFINITY
134 IF(MAT > 0)UNUSED=UNUSED_MAT_DETONATOR(MAT,NUMMAT,IPM)
135 UNUSED=0
136 IF (MAT < 0) THEN
137 CALL ANCMSG(MSGID=102,MSGTYPE=MSGERROR,ANMODE=ANINFO,
138 . I1=DET_ID,
139 . C1='detonator is referring to a negative',
140 . C2='/dfs/wav_sha',
141 . I2=MDET)
142 ELSEIF (UNUSED==1) THEN
143 CALL ANCMSG(MSGID=102,MSGTYPE=MSGERROR,ANMODE=ANINFO,
144 . I1=DET_ID,
145 . C1='detonator is referring to an unknown material
id',
146 . C2='/dfs/wav_sha',
147 . I2=MDET)
148 ELSEIF (UNUSED==2) THEN
149 CALL ANCMSG(MSGID=102,MSGTYPE=MSGERROR,ANMODE=ANINFO,
150 . I1=DET_ID,
151 . C1='detonator must refer to a
jwl material law(laws 5, 51, 97, 151)
',
152 . C2='/dfs/wav_sha',
153 . I2=MDET)
154 ELSE
155 !---------------------------------!
156 ! LISTING PRINTOUT !
157 !---------------------------------!
158 NPE = NODGRNR5(IGU ,IGS,IECRAN(1),IGRNOD ,ITABM1 ,MESS)
159 !Nodes in group are ordered from 1 to NPE. last point is the nearest from the detonation origin. Points are composing the screen lines (guard lines). Screen lines is the boundary of the obstacle (shadow area
160 IF(IS_ENCRYPTED) WRITE(IOUT,1001)
161.NOT. IF(IS_ENCRYPTED)WRITE(IOUT,1550) DET_ID,VDET,YC1,ZC1,ALT,MDET,IGU,NPE
162.NOT. IF(IS_ENCRYPTED)WRITE(IOUT,FMT=FMW_10I) (ITAB(IECRAN(I)),I=1,NPE)
163 DO I=1,NPE
164 CALL IFRONTPLUS(IECRAN(I),1)
165 END DO
166 DETONATORS%WAVE_SHAPER(IDET)%TDET = ALT
167 DETONATORS%WAVE_SHAPER(IDET)%MAT = MAT
168 DETONATORS%WAVE_SHAPER(IDET)%VDET = VDET
169 DETONATORS%WAVE_SHAPER(IDET)%XDET = ZERO
170 DETONATORS%WAVE_SHAPER(IDET)%YDET = YC1
171 DETONATORS%WAVE_SHAPER(IDET)%ZDET = ZC1
172 DETONATORS%WAVE_SHAPER(IDET)%NUMNOD = NPE
173 END IF
174
175 ENDDO !next IDET
176
177
178
179 1001 FORMAT(///5X,
180 & 'shadow line detonation ',I10,/5X,
181 & '---------------------- ',/5X,
182 & 'confidential data')
183 1550 FORMAT(///5X,
184 & 'shadow line detonation =',I10,/5X,
185 & '---------------------- ',/5X,
186 & 'OPTIONAL velocity =',1PG20.13,/5X,
187 & 'y-coordinate =',1PG20.13,/5X,
188 & 'z-coordinate =',1PG20.13,/5X,
189 & 'lighting time =',1PG20.13,/5X,
190 & 'explosive material number =',I10,/5X,
191 & 'shadow line node group
id =
',I10,/5X,
192 & 'number of points(shadow) =',I10,/5X,
193 & 'shadow line definition : ')
194
195
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_option_is_encrypted(is_encrypted)
subroutine hm_option_start(entity_type)
subroutine jwl(iflag, nel, pm, off, eint, mu, mu2, espe, dvol, df, vnew, mat, psh, pnew, dpdm, dpde)
integer, parameter nchartitle
integer, parameter ncharkey