58#include "implicit_f.inc"
65#include "tabsiz_c.inc"
69 TYPE (UNIT_TYPE_),
INTENT(IN) :: UNITAB
70 INTEGER,
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, nz, bid, vcj
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_PLANE
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)
118 CALL hm_get_intv(
'rad_det_materialid', mat, is_available, lsubmodel)
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', xc, is_available, lsubmodel, unitab)
126 CALL hm_get_floatv(
'rad_det_locationA_Y', yc, is_available, lsubmodel, unitab)
127 CALL hm_get_floatv(
'rad_det_locationA_Z', zc, is_available, lsubmodel, unitab)
128 CALL hm_get_floatv(
'rad_det_locationB_X', nx, is_available, lsubmodel, unitab)
129 CALL hm_get_floatv(
'rad_det_locationB_Y', ny, is_available, lsubmodel, unitab)
130 CALL hm_get_floatv(
'rad_det_locationB_Z', nz, 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)
135 IF(IS_NODE_DEFINED)THEN
136 NODE_ID1=USR2SYS(uID1,ITABM1,MESS,DET_ID)
142 NODE_ID2=USR2SYS(uID2,ITABM1,MESS,DET_ID)
147 NX = X(1,NODE_ID2) - X(1,NODE_ID1)
148 NY = X(2,NODE_ID2) - X(2,NODE_ID1)
149 NZ = X(3,NODE_ID2) - X(3,NODE_ID1)
151.AND.
IF(NODE_ID1==0 NODE_ID2==0)THEN
152 CALL ANCMSG(MSGID = 104,MSGTYPE = MSGERROR,ANMODE = ANINFO,
153 . C1 = '/dfs/detplan/node
',
155 . C2 = 'invalid node_id
')
158 !---------------------------------!
159 ! CHECKING USER FLAGS !
161 !---------------------------------!
163 IF (ALT > INFINITY)ALT= INFINITY
164 IF (ALT < -INFINITY)ALT=-INFINITY
166 IF(MAT > 0)UNUSED=UNUSED_MAT_DETONATOR(MAT,NUMMAT,IPM)
168 CALL ANCMSG(MSGID=102,MSGTYPE=MSGERROR,ANMODE=ANINFO,
170 . C1='detonator is referring to a negative material
id',
171 . C2='/dfs/detplane
',
173 ELSEIF (UNUSED==1) THEN
174 CALL ANCMSG(MSGID=102,MSGTYPE=MSGERROR,ANMODE=ANINFO,
176 . C1='detonator is referring to an unknown material
id',
177 . C2='/dfs/detplane
',
179 ELSEIF (UNUSED==2) THEN
180 CALL ANCMSG(MSGID=102,MSGTYPE=MSGERROR,ANMODE=ANINFO,
182 . C1='detonator must refer to a jwl material law(laws 5, 51, 97, 151)
',
183 . C2='/dfs/detplane
',
185.AND..AND.
ELSEIF((NX == ZERO)(NY == ZERO)(NZ == ZERO))THEN
186 CALL ANCMSG(MSGID=104,MSGTYPE=MSGERROR,ANMODE=ANINFO,
187 . C1='/dfs/detplane
',
189 . C2='direction vector is not defined
')
191 DETONATORS%PLANE(IDET)%IS_MAT_VALID = .TRUE.
192 IF(IS_NODE_DEFINED)THEN
193.NOT.
IF(IS_ENCRYPTED)WRITE(IOUT,1601) DET_ID,NODE_ID1,XC,YC,ZC,NODE_ID2,XC2,YC2,ZC2,NX,NY,NZ, ALT,MDET
195.NOT.
IF(IS_ENCRYPTED)WRITE(IOUT,1600) DET_ID,XC,YC,ZC,NX,NY,NZ, ALT,MDET
197 IF(IS_ENCRYPTED) WRITE(IOUT,1001)
199 DETONATORS%PLANE(IDET)%TDET = ALT
200 DETONATORS%PLANE(IDET)%MAT = MAT
201 DETONATORS%PLANE(IDET)%XDET = XC
202 DETONATORS%PLANE(IDET)%YDET = YC
203 DETONATORS%PLANE(IDET)%ZDET = ZC
204 DETONATORS%PLANE(IDET)%NX = NX
205 DETONATORS%PLANE(IDET)%NY = NY
206 DETONATORS%PLANE(IDET)%NZ = NZ
214 & 'planar detonation
',I10,/5X,
215 & '-----------------
',/5X,
216 & 'confidential data
')
218 & 'planar detonation
',I10,/5X,
219 & '----------------
',/5X,
220 & ' x-coordinate =
',1PG20.13,/5X,
221 & ' y-coordinate =
',1PG20.13,/5X,
222 & ' z-coordinate =
',1PG20.13,/5X,
223 & 'nx-coordinate =
',1PG20.13,/5X,
224 & 'ny-coordinate =
',1PG20.13,/5X,
225 & 'nz-coordinate =
',1PG20.13,/5X,
226 & 'lighting time =
',1PG20.13,/5X,
227 & 'explosive material number =
',I10 )
229 & 'planar detonation
',I10,/5X,
230 & '----------------
',/5X,
231 & 'basis node
id =
',I10 ,/5X,
232 & ' x-coordinate =
',1PG20.13,/5X,
233 & ' y-coordinate =
',1PG20.13,/5X,
234 & ' z-coordinate =
',1PG20.13,/5X,
235 & 'normal node
id =
',I10 ,/5X,
236 & ' x-coordinate =
',1PG20.13,/5X,
237 & ' y-coordinate =
',1PG20.13,/5X,
238 & ' z-coordinate =
',1PG20.13,/5X,
239 & 'normal vector
',/5X,
240 & ' x-coordinate =
',1PG20.13,/5X,
241 & ' y-coordinate =
',1PG20.13,/5X,
242 & ' z-coordinate =
',1PG20.13,/5X,
243 & 'lighting time =
',1PG20.13,/5X,
244 & 'explosive material number =
',I10 )