44
45
46
53
54
55
56#include "implicit_f.inc"
57
58
59
60#include "com04_c.inc"
61#include "param_c.inc"
62
63
64
65 INTEGER NIX,IX(NIX,*),NIX1,NIX2,NUMEL,IELTYP,
66 . NSEG,FLAG,ISKN(LISKN,*),ISURF0,
67 . ITABM1(*),IBUFBOX(*),
68 . IADB,SBUFBOX,TAGSHELLBOX(*),NN
70 . x(3,*),skew(lskew,*)
71 CHARACTER KEY*4,MESS*40
72 CHARACTER(LEN=NCHARTITLE) :: TITR
73
74 TYPE (SURF_) :: ISURFLIN
75 TYPE (BOX_) , DIMENSION(NBBOX) :: IBOX
76 TYPE(SUBMODEL_DATA) LSUBMODEL(NSUBMOD)
77
78
79
80 INTEGER I,JJ,K,K1,J,JREC,ISK,BOXTYPE,ISU,TAGN(NUMEL),
81 . ITYPE,IADBOX,IDB,NBOX,ID,IDBX,BOXSEG,IADISU,
82 . ICOUNT,ITER,FLAGG,NIXEL
84 . diam,xp1,yp1,zp1,xp2,yp2,zp2,nodinb(3)
85 CHARACTER BOX*3
86 LOGICAL BOOL,IS_AVAILABLE, IS_ENCRYPTED
87
88 DO i=1,nbbox
89 ibox(i)%NBLEVELS = 0
90 ibox(i)%LEVEL = 1
91 ibox(i)%ACTIBOX = 0
92 IF(ibox(i)%NBOXBOX > 0)THEN
93 ibox(i)%NBLEVELS = -1
94 ibox(i)%LEVEL = 0
95 END IF
96 ibox(i)%BOXIAD = 0
97 END DO
98
100 IF(key == 'box')THEN
101 BOXTYPE = 1
102 ELSE IF(KEY == 'box2')THEN
103 BOXTYPE = 2
104 END IF
105
106
107
108 ISU = 0
109 DO I=1,NBBOX
110 IF(IDB == IBOX(I)%ID) ISU=I
111 END DO
112
113 IF(ISU > 0)THEN
114 NBOX = IBOX(ISU)%NBOXBOX
115 !super box enabled:
116 IBOX(ISU)%ACTIBOX = 1
117 ELSE
118 IF(FLAG == 0)THEN
119 IF(ISURF0 == 0)THEN
120 CALL ANCMSG(MSGID=799, MSGTYPE=MSGERROR, ANMODE=ANINFO,I1=ID, C1=TITR,I2=IDB)
121 ELSE IF(ISURF0 == 1)THEN
122 CALL ANCMSG(MSGID=800,MSGTYPE=MSGERROR,ANMODE=ANINFO,I1=ID,C1=TITR,I2=IDB)
123 END IF
124 END IF
125 END IF
126
127
128
129 BOOL=.FALSE.
130 IF(ISU>0)THEN
131.AND. IF(IBOX(ISU)%NBLEVELS == 0 IBOX(ISU)%LEVEL == 1) THEN
132 IF(NBOX == 0)THEN
133 CALL BOX_SURF_SH(X ,IBUFBOX,SKEW ,IADB ,BOXTYPE,
134 . IBOX ,ISU ,NUMEL ,NIX ,IX ,
135 . NIX1 ,NIX2 ,ISURF0,IELTYP ,FLAG ,
136 . TAGSHELLBOX,0 )
137 BOOL=.TRUE.
138 END IF
139 END IF
140 ENDIF
141
142
143
144.NOT. IF(BOOL)THEN
145 ICOUNT = 1
146 ITER = 0
147 DO WHILE (ICOUNT == 1)
148 ITER = ITER + 1
149 FLAGG = 0
150
151 CALL BOXBOXS(IBOX ,SKEW ,FLAGG ,ICOUNT ,ITER ,
152 . BOXTYPE ,IBUFBOX ,X ,IADB ,IX ,
153 . NIX ,NIX1 ,NIX2 ,NUMEL ,ISURF0 ,
154 . IELTYP ,ID ,TITR ,MESS ,FLAG ,
155 . TAGSHELLBOX,0 )
156.OR. IF (IADB>SBUFBOX IADB<0)
157 . CALL ANCMSG(MSGID=1007, MSGTYPE=MSGERROR,ANMODE=ANSTOP)
158
159 FLAGG = 1
160 CALL BOXBOXS(IBOX ,SKEW ,FLAGG ,ICOUNT ,ITER ,
161 . BOXTYPE ,IBUFBOX ,X ,IADB ,IX ,
162 . NIX ,NIX1 ,NIX2 ,NUMEL ,ISURF0 ,
163 . IELTYP ,ID ,TITR ,MESS ,FLAG ,
164 . TAGSHELLBOX,0 )
165
166 ENDDO
167 ENDIF
168
169
170
171
172 IF(ISU > 0)THEN
173
174 IF(FLAG == 0)THEN
175 BOXSEG = IBOX(ISU)%NENTITY ! segments of main box
176 NSEG = NSEG + BOXSEG
177 ELSE IF(FLAG == 1)THEN
178 BOXSEG = IBOX(ISU)%NENTITY ! segments of main box
179 IADISU = IBOX(ISU)%BOXIAD ! addresses of segments in main box
180 NSEG = NSEG + BOXSEG
181 DO I=1,BOXSEG
182 NN = NN + 1
183 IF(ISURF0 == 1)THEN ! surfaces
184 DO K=NIX1,NIX2
185 J=IBUFBOX(IADISU+K-2)
186 ISURFLIN%NODES(NN,K-1) = J
187 ENDDO
188 IADISU = IADISU + NIX2 - 1
189 ELSE ! lines
190
191 J=IBUFBOX(IADISU)
192 ISURFLIN%NODES(NN,1) = J
193 IADISU = IADISU + 1
194
195 J=IBUFBOX(IADISU)
196 ISURFLIN%NODES(NN,2) = J
197 IADISU = IADISU + 1
198 END IF
199
200 IF(IELTYP == 7)THEN
201 J=IBUFBOX(IADISU)
202 ISURFLIN%NODES(NN,4) =
203 . ISURFLIN%NODES(NN,3)
204 IADISU = IADISU + 1
205 END IF
206
207 J=IBUFBOX(IADISU)
208 ISURFLIN%ELTYP(NN)= J
209 IADISU = IADISU + 1
210
211 J=IBUFBOX(IADISU)
212 ISURFLIN%ELEM(NN) = J
213 IADISU = IADISU + 1
214
215 END DO
216 END IF ! IF(FLAG == 0)
217 END IF ! IF(ISU > 0)
218
219 RETURN
subroutine hm_get_int_array_index(name, ival, index, is_available, lsubmodel)
integer, parameter nchartitle