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() LSUBMODEL(NSUBMOD)
77
78
79
80 INTEGER I,JJ,K,K1,J,,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
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
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 IF(ibox(isu)%NBLEVELS == 0 .AND. ibox(isu)%LEVEL == 1) THEN
132 IF(nbox == 0)THEN
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 IF(.NOT.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 IF (iadb>sbufbox .OR. 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
176 nseg = nseg + boxseg
177 ELSE IF(flag == 1)THEN
178 boxseg = ibox(isu)%NENTITY
179 iadisu = ibox(isu)%BOXIAD
180 nseg = nseg + boxseg
181 DO i=1,boxseg
182 nn = nn + 1
183 IF(isurf0 == 1)THEN
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
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
217 END IF
218
219 RETURN
subroutine box_surf_sh(x, ibufbox, skew, iadb, boxtype, ibox, isu, numel, nix, ix, nix1, nix2, isurf0, ieltyp, flag, tagshellbox, iext)
subroutine boxboxs(ibox, skew, flagg, icount, iter, boxtype, ibufbox, x, iadb, ix, nix, nix1, nix2, numel, isurf0, ieltyp, id, titr, mess, flag, tagshellbox, iext)
subroutine hm_get_int_array_index(name, ival, index, is_available, lsubmodel)
integer, parameter nchartitle
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)