41 . IBOX ,IAD ,NBOX ,ITABM1 ,X ,
42 . RTRANS ,UNITAB ,LSUBMODEL)
55#include "implicit_f.inc"
64 INTEGER ,
INTENT(IN) :: NBOX
65 INTEGER ,
INTENT(INOUT) :: IAD
66 INTEGER ,
DIMENSION(NUMNOD),
INTENT(IN) :: ITABM1
67 my_real,
DIMENSION(3,NUMNOD),
INTENT(IN) :: x
68 my_real,
DIMENSION(NTRANSF,NRTRANS),
INTENT(IN) :: rtrans
69 TYPE (UNIT_TYPE_),
INTENT(IN) :: UNITAB
70 TYPE(
submodel_data),
DIMENSION(NSUBMOD),
INTENT(IN) :: LSUBMODEL
71 TYPE (BOX_),
DIMENSION(NBBOX) :: IBOX
75 INTEGER I,J,N1,N2,UID,BOXID,SUB_ID,IUNIT,FLAGUNIT
76 my_real :: FAC_L,XP1,YP1,ZP1,XP2,YP2,ZP2,DIAM
77 CHARACTER(LEN=NCHARKEY) :: KEY
78 CHARACTER(LEN=NCHARTITLE) :: TITR,MESS
79 LOGICAL :: IS_AVAILABLE
84 DATA MESS/
'MULTI-BOX DEFINITION '/
114 CALL HM_OPTION_READ_KEY(LSUBMODEL, OPTION_ID = BOXID,
116 . SUBMODEL_ID = SUB_ID,
117 . OPTION_TITR = TITR,
122 DO IUNIT=1,UNITAB%NUNITS
123 IF (UNITAB%UNIT_ID(IUNIT) == UID) THEN
128.AND.
IF (UID > 0 FLAGUNIT == 0) THEN
129 CALL ANCMSG(MSGID=659,ANMODE=ANINFO,MSGTYPE=MSGERROR,
138 CALL HM_GET_INTV ('cylinder_base_node
' ,N1 ,IS_AVAILABLE, LSUBMODEL)
139 CALL HM_GET_INTV ('cylinder_direction_node
' ,N2 ,IS_AVAILABLE, LSUBMODEL)
140 CALL HM_GET_FLOATV('cylinder_diameter
' ,DIAM ,IS_AVAILABLE, LSUBMODEL, UNITAB)
142 CALL HM_GET_FLOATV('cylinder_base_x
' ,XP1 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
143 CALL HM_GET_FLOATV('cylinder_base_y
' ,YP1 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
144 CALL HM_GET_FLOATV('cylinder_base_z
' ,ZP1 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
146 CALL HM_GET_FLOATV('cylinder_direction_x
' ,XP2 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
147 CALL HM_GET_FLOATV('cylinder_direction_y
' ,YP2 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
148 CALL HM_GET_FLOATV('cylinder_direction_z
' ,ZP2 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
152.and.
IF (N1 > 0 N2 > 0) THEN
153 !using coordinates from user node identifiers
154 XP1 = X(1,USR2SYS(N1,ITABM1,MESS,BOXID))
155 YP1 = X(2,USR2SYS(N1,ITABM1,MESS,BOXID))
156 ZP1 = X(3,USR2SYS(N1,ITABM1,MESS,BOXID))
157 XP2 = X(1,USR2SYS(N2,ITABM1,MESS,BOXID))
158 YP2 = X(2,USR2SYS(N2,ITABM1,MESS,BOXID))
159 ZP2 = X(3,USR2SYS(N2,ITABM1,MESS,BOXID))
162 IF (SUB_ID > 0) CALL SUBROTPOINT(XP1,YP1,ZP1,RTRANS,SUB_ID,LSUBMODEL)
163 IF (SUB_ID > 0) CALL SUBROTPOINT(XP2,YP2,ZP2,RTRANS,SUB_ID,LSUBMODEL)
166.and..and..and.
IF ((XP1 == ZERO YP1 == ZERO ZP1 == ZERO)
167.and..and.
. (XP2 == ZERO YP2 == ZERO ZP2 == ZERO)) THEN
168 CALL ANCMSG(MSGID=752, MSGTYPE=MSGERROR, ANMODE=ANINFO,
178 IBOX(IAD)%TITLE = TRIM(TITR)
181 IBOX(IAD)%NBLEVELS= 0
184 IBOX(IAD)%ACTIBOX = 0
185 IBOX(IAD)%NBOXBOX = 0
188 IBOX(IAD)%DIAM = DIAM
195 IBOX(IAD)%SURFIAD = 0
196 IBOX(IAD)%NENTITY = 0
subroutine read_box_cyl(ibox, iad, nbox, itabm1, x, rtrans, unitab, lsubmodel)