58#include "implicit_f.inc"
65#include "tabsiz_c.inc"
69 TYPE (UNIT_TYPE_)
INTENT(IN)
70INTEGER,
INTENT(IN) :: ITABM1(SITABM1)
71 INTEGER,
INTENT(IN) :: IPM(NPROPMI,NUMMAT)
72 my_real,
INTENT(IN) :: x(3,numnod)
78 INTEGER :: I, MAT, J, NPEM,NPCM,K,IGU,IGS,JJ,MDET,DET_ID,IDET
79 INTEGER :: IBID, NODE_ID1, NODE_ID2,uID1,uID2, IOPT, IUNIT, UID
80 INTEGER :: FLAG_FMT,IMAT,IFLAGUNIT,UNUSED
82 my_real :: xc, yc, zc, alt, xc1, yc1, zc1, xc2, yc2, zc2, nx, ny
84 CHARACTER*64 :: chain1,chain2
85 CHARACTER(LEN=NCHARKEY) :: KEY, KEY2
86 CHARACTER(LEN=NCHARTITLE) :: TITR
87 LOGICAL :: IS_ENCRYPTED, IS_AVAILABLE
88 LOGICAL :: IS_NODE_DEFINED
89 INTEGER :: NDETPS,NDETSG,NECRAN,NDETPL,NDETCORD
93 INTEGER,
EXTERNAL :: NODGRNR5, USR2SYS, NINTRI
94 INTEGER :: UNUSED_MAT_DETONATOR
95 DATA mess/
'DETONATORS DEFINITION '/
102 DO idet=1,detonators%N_DET_LINE
104 CALL hm_option_read_key(lsubmodel,option_id=det_id, unit_id=uid,keyword2=key,keyword3=key2)
105 IF (len_trim(key) > 0) key = key(1:7)
106 IF (len_trim(key2) > 0) key2 = key2(1:4)
108 is_encrypted= .false.
109 is_available = .false.
110 is_node_defined = .false.
111 IF(key2(1:4) ==
'NODE')is_node_defined = .true.
116 IF(is_node_defined)
THEN
117 CALL hm_get_floatv(
'rad_det_time', alt, is_available, lsubmodel,unitab)
119 CALL hm_get_intv(
'rad_det_node1', uid1, is_available, lsubmodel)
120 CALL hm_get_intv(
'rad_det_node2', uid2, is_available, lsubmodel)
125 CALL hm_get_floatv(
'rad_det_locationA_X', xc1, is_available, lsubmodel, unitab)
126 CALL hm_get_floatv(
'rad_det_locationA_Y', yc1, is_available, lsubmodel, unitab)
127 CALL hm_get_floatv(
'rad_det_locationA_Z', zc1, is_available, lsubmodel, unitab)
128 CALL hm_get_floatv(
'rad_det_locationB_X', xc2, is_available, lsubmodel, unitab)
129 CALL hm_get_floatv(
'rad_det_locationB_Y', yc2, is_available, lsubmodel, unitab)
131 CALL hm_get_floatv(
'rad_det_time', alt, is_available, lsubmodel,unitab)
132 CALL hm_get_intv(
'rad_det_materialid', mat, is_available, lsubmodel)
136 IF(is_node_defined)
THEN
137 node_id1=usr2sys(uid1,itabm1,mess,det_id)
143 node_id2=usr2sys(uid2,itabm1,mess,det_id)
149 IF(node_id1 == 0 .AND. node_id2 == 0)
THEN
150 CALL ancmsg(msgid = 104,msgtype = msgerror,anmode = aninfo,
151 . c1=
'/DFS/DETLINE/NODE',
153 . c2=
'INVALID NODE_ID')
161 IF (alt > infinity)alt= infinity
162 IF (alt < -infinity)alt=-infinity
164 IF(mat > 0)unused=unused_mat_detonator(mat,nummat,ipm)
166 CALL ancmsg(msgid=102,msgtype=msgerror,anmode=aninfo,
168 . c1=
'DETONATOR IS REFERRING TO A NEGATIVE MATERIAL ID',
171 ELSEIF (unused == 1)
THEN
172 CALL ancmsg(msgid=102,msgtype=msgerror,anmode=aninfo,
174 . c1=
'DETONATOR IS REFERRING TO AN UNKNOWN MATERIAL ID',
177 ELSEIF (unused == 2)
THEN
178 CALL ancmsg(msgid=102,msgtype=msgerror,anmode=aninfo
180 . c1=
'DETONATOR MUST REFER TO A JWL MATERIAL LAW (LAWS 5, 51, 97, 151)',
184 detonators%LINE(idet)%IS_MAT_VALID = .true.
188 IF(is_node_defined)
THEN
189 IF(.NOT.is_encrypted)
WRITE(iout,1501) det_id
191 IF(.NOT.is_encrypted)
WRITE(iout,1500) det_id,xc1,yc1,zc1,xc2,yc2,zc2,alt,mdet
193 IF(is_encrypted)
WRITE(iout,1001)
195 detonators%LINE(idet)%TDET = alt
196 detonators%LINE(idet)%MAT = mat
197 detonators%LINE(idet)%XDET_1 = xc1
198 detonators%LINE(idet)%YDET_1 = yc1
199 detonators%LINE(idet)%ZDET_1 = zc1
200 detonators%LINE(idet)%XDET_2 = xc2
201 detonators%LINE(idet)%YDET_2 = yc2
202 detonators%LINE(idet)%ZDET_2 = zc2
211 &
'DETONATION LINE ',i10,/5x,
212 &
'--------------- ',/5x,
213 &
'CONFIDENTIAL DATA')
215 &
'DETONATION LINE ',i10,/5x,
216 &
'--------------- ',/5x,
217 &
'X-COORDINATE FIRST POINT =',1pg20.13,/5x,
218 &
'Y-COORDINATE FIRST POINT =',1pg20.13,/5x,
219 &
'Z-COORDINATE FIRST POINT =',1pg20
220 &
'X-COORDINATE SECOND POINT =',1pg20.13,/5x,
221 &
'Y-COORDINATE SECOND POINT =',1pg20.13,/5x,
222 &
'Z-COORDINATE SECOND POINT =',1pg20.13,/5x,
223 &
'LIGHTING TIME =',1pg20.13,/5x,
224 &
'EXPLOSIVE MATERIAL NUMBER =',i10 )
226 &
'DETONATION LINE ',i10,/5x,
227 &
'--------------- ',/5x,
228 &
'FIRST NODE ID =',i10 ,/5x,
229 &
' X-COORDINATE FIRST POINT =',1pg20.13,/5x,
230 &
' Y-COORDINATE FIRST POINT =',1pg20.13,/5x,
231 &
' Z-COORDINATE FIRST POINT =',1pg20.13,/5x,
232 &
'SECOND NODE ID =',i10 ,/5x,
233 &
' X-COORDINATE SECOND POINT=',1pg20.13,/5x,
234 &
' Y-COORDINATE SECOND POINT=',1pg20.13,/5x,
235 &
' Z-COORDINATE SECOND POINT=',1pg20.13,/5x,
236 &
'LIGHTING TIME =',1pg20.13,/5x,
237 &
'EXPLOSIVE MATERIAL NUMBER =',i10 )
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)