44
45
46
49 USE intbufdef_mod
51
52
53
54#include "implicit_f.inc"
55
56
57
58#include "com01_c.inc"
59#include "units_c.inc"
60
61
62
63 INTEGER NOIN
64 INTEGER INSCR(*), IXS(*), IXC(*), IPARI(*), INTC(*),
65 . ITAB(*), NPBY(*), LPBY(*), MWA(*), IKINE(*)
66
68 . x(*), pm(*), geo(*), ms(*), in(*), stifint(*),stifintr(*)
69 INTEGER ID
70 CHARACTER(LEN=NCHARTITLE) :: TITR
71
72 TYPE(INTBUF_STRUCT_) INTBUF_TAB
73
74
75
76 INTEGER NLOCAL
78
79
80
81 INTEGER NRTS, NRTM, NSN, NMN, NTY, NST, NMT, IBUC, NOINT,
82 . IWPENE, I, INCREM, P,
83 . ILEV,ICOR,II,JJ,NIR,K,N,L,N1,N2,N3,N4,INACTI,IGSTI
84 integer j
85
87 . xmas1, xmas2,stfn,stfr
88
89 iwpene = 0
90 nrts =ipari(3)
91 nrtm =ipari(4)
92 nsn =ipari(5)
93 nmn =ipari(6)
94 nty =ipari(7)
95 nst =ipari(8)
96 nmt =ipari(9)
97 ibuc =ipari(12)
98 noint =ipari(15)
99 inacti=ipari(22)
100 icor =ipari(58)
101
102 IF (nspmd > 1) THEN
103
104 increm = 1
105
106 IF(nty==16.OR.nty==17) RETURN
107
108 IF(nty==7.OR.nty==10.OR.nty==11.OR.
109 . nty==20.OR.nty==21.OR.nty==22.OR.
110 . nty==23.OR.nty==24.OR.nty==25) increm = 100
111
112 IF(nty==8) THEN
113 DO p=1,nspmd
114 DO i=1,nsn
115
116
118 END DO
119 ENDDO
120
121 ELSEIF(nty/=2) THEN
122 IF(increm==1)THEN
123 DO i=1,nsn
125 END DO
126 DO i=1,nmn
128 END DO
129 ENDIF
130
131 IF(nty==1.OR.nty==9.OR.nty==12)THEN
132 increm = 10
133 DO i=1,nsn
134
135
137 END DO
138 DO i=1,nmn
140 END DO
141 ENDIF
142 ELSE
143 IF (n2d==0) THEN
144 nir = 4
145 ELSE
146 nir = 2
147 ENDIF
148 DO ii=1,nsn
149 l = intbuf_tab%IRTLM(ii)
150 n = intbuf_tab%NSV(ii)
151 DO p = 1, nspmd
153 GO TO 200
154 ENDIF
155
156 100 DO jj=1,nir
157 k = intbuf_tab%IRECTM((l-1)*4+jj)
159 ENDDO
160
161 200 CONTINUE
162 ENDDO
163 ENDDO
164 ENDIF
165 ENDIF
166
167
168 IF(nty==6) THEN
169
170
171 intbuf_tab%LNSV(1:nst) = 0
172 intbuf_tab%LMSR(1:nmt) = 0
173 intbuf_tab%STFNS(1:nsn) = 0
174
175 WRITE(iout,2001)noint,nty
176 CALL inint0(x,intbuf_tab%IRECTS,intbuf_tab%NSEGS,intbuf_tab%LNSV,intbuf_tab%NSV,
177 1 intbuf_tab%MSR,intbuf_tab%ILOCM,nmn,nsn,nrts,intbuf_tab%S_IRECTS,intbuf_tab%S_LNSV)
178 CALL inint0(x,intbuf_tab%IRECTM,intbuf_tab%NSEGM,intbuf_tab%LMSR,intbuf_tab%MSR,
179 1 intbuf_tab%NSV,intbuf_tab%ILOCS,nsn,nmn,nrtm,intbuf_tab%S_IRECTM,intbuf_tab%S_LMSR)
180 CALL i6sti3(intbuf_tab%IRECTS,intbuf_tab%STFS,nrts,intbuf_tab%STFNS,nsn,
181 1 intbuf_tab%NSV,xmas1,ms,npby,lpby,noint,itab,
id,titr)
182 CALL i6sti3(intbuf_tab%IRECTM,intbuf_tab%STFM,nrtm,intbuf_tab%STFNM,nmn,
183 1 intbuf_tab%MSR,xmas2,ms,npby,lpby,noint,itab,
id,titr)
184 intbuf_tab%VARIABLES(4)=
min(xmas1,xmas2)
185 CALL invoi3(x,intbuf_tab%IRECTM,intbuf_tab%LMSR,intbuf_tab%MSR,intbuf_tab%NSV,
186 1 intbuf_tab%ILOCS,intbuf_tab%IRTLM,intbuf_tab%NSEGM,nsn,nmn,
188 CALL invoi3(x,intbuf_tab%IRECTS,intbuf_tab%LNSV,intbuf_tab%NSV,intbuf_tab%MSR,
189 1 intbuf_tab%ILOCM,intbuf_tab%IRTLS,intbuf_tab%NSEGS,nmn,nsn,
191 WRITE(iout,2002)
193 1 (x ,intbuf_tab%IRECTM,intbuf_tab%MSR,intbuf_tab%NSV ,intbuf_tab%ILOCS,
194 2 intbuf_tab%IRTLM,intbuf_tab%CSTS,intbuf_tab%IRTLOM,intbuf_tab%VARIABLES(2),nsn ,
195 3 itab ,iwpene ,intbuf_tab%FCONT,icor ,
id,
196 4 inacti ,titr)
197 WRITE(iout,2003)
199 1 (x ,intbuf_tab%IRECTS,intbuf_tab%NSV,intbuf_tab%MSR ,intbuf_tab%ILOCM,
200 2 intbuf_tab%IRTLS,intbuf_tab%CSTM,intbuf_tab%IRTLOS,intbuf_tab%VARIABLES(2),nmn ,
201 3 itab ,iwpene ,intbuf_tab%FCONT,icor ,
id,
202 4 inacti ,titr)
203
204 ENDIF
205
206 IF(iwpene/=0) THEN
208 . msgtype=msgwarning,
209 . anmode=aninfo_blind_1,
211 . c1=titr,
212 . i2=iwpene)
213 ENDIF
214
215
216
217 IF (nty == 2) THEN
218 ilev = ipari(20)
219 DO ii = 1, nmn
220 i = intbuf_tab%MSR(ii)
221 intbuf_tab%NMAS(ii) = ms(i)
222 IF (iroddl == 1) intbuf_tab%NMAS(nmn+ii) = in(i)
223 ENDDO
224 IF (ilev == 10 .OR. ilev == 11 .OR. ilev == 12 .OR.
225 . ilev == 20 .OR. ilev == 21 .OR. ilev == 22) THEN
226 DO ii = 1, nsn
227 i = intbuf_tab%NSV(ii)
228 intbuf_tab%SMAS(ii) = ms(i)
229 IF (iroddl == 1) intbuf_tab%SINER(ii) = in(i)
230 ENDDO
231 ELSEIF (ilev == 25) THEN
232 igsti = ipari(58)
233 DO ii = 1, nsn
234 i = intbuf_tab%NSV(ii)
235 l = intbuf_tab%IRTLM(ii)
236
237 intbuf_tab%SMAS(ii) = ms(i)
238 IF (iroddl == 1) intbuf_tab%SINER(ii) = in(i)
239 n1 = intbuf_tab%IRECTM((l-1)*4+1)
240 n2 = intbuf_tab%IRECTM((l-1)*4+2)
241 n3 = intbuf_tab%IRECTM((l-1)*4+3)
242 n4 = intbuf_tab%IRECTM((l-1)*4+4)
243 IF (n3 == n4) THEN
244 stfn=third*(stifint(n1)+stifint(n2)+stifint(n3))
245 ELSE
246 stfn=fourth*(stifint(n1)+stifint(n2)+stifint(n3)+stifint(n4))
247 ENDIF
248 SELECT CASE (igsti)
249 CASE (2)
250 stfn = half*(stfn+stifint(i))
251 CASE (3)
252 stfn =
max(stfn,stifint(i))
253 CASE (4)
254 stfn =
min(stfn,stifint(i))
255 CASE (5)
256 stfn = stfn*stifint(i) / (stfn+stifint(i))
257 CASE DEFAULT
258 CONTINUE
259 END SELECT
260 intbuf_tab%SPENALTY(ii) = stfn*intbuf_tab%STFAC(1)
261 ENDDO
262 ELSEIF (ilev == 26) THEN
263 igsti = ipari(58)
264 DO ii = 1, nsn
265 i = intbuf_tab%NSV(ii)
266 l = intbuf_tab%IRTLM(ii)
267
268 intbuf_tab%SMAS(ii) = ms(i)
269 IF (iroddl == 1) intbuf_tab%SINER(ii) = in(i)
270 n1 = intbuf_tab%IRECTM((l-1)*4+1)
271 n2 = intbuf_tab%IRECTM((l-1)*4+2)
272 n3 = intbuf_tab%IRECTM((l-1)*4+3)
273 n4 = intbuf_tab%IRECTM((l-1)*4+4)
274 IF (n3 == n4) THEN
275 stfn=third*(stifint(n1)+stifint(n2)+stifint(n3))
276 ELSE
277 stfn=fourth*(stifint(n1)+stifint(n2)+stifint(n3)+stifint(n4))
278 ENDIF
279 SELECT CASE (igsti)
280 CASE (2)
281 stfn = half*(stfn+stifint(i))
282 CASE (3)
283 stfn =
max(stfn,stifint(i))
284 CASE (4)
285 stfn =
min(stfn,stifint(i))
286 CASE (5)
287 stfn = stfn*stifint(i) / (stfn+stifint(i))
288 CASE DEFAULT
289 CONTINUE
290 END SELECT
291 intbuf_tab%SPENALTY(ii) = stfn
292 ENDDO
293 ELSEIF ((ilev == 27).OR.(ilev == 28)) THEN
294 igsti = ipari(58)
295 DO ii = 1, nsn
296 i = intbuf_tab%NSV(ii)
297 l = intbuf_tab%IRTLM(ii)
298
299 intbuf_tab%SMAS(ii) = ms(i)
300 IF (iroddl == 1) intbuf_tab%SINER(ii) = in(i)
301 n1 = intbuf_tab%IRECTM((l-1)*4+1)
302 n2 = intbuf_tab%IRECTM((l-1)*4+2)
303 n3 = intbuf_tab%IRECTM((l-1)*4+3)
304 n4 = intbuf_tab%IRECTM((l-1)*4+4)
305 IF (n3 == n4) THEN
306 stfn=third*(stifint(n1)+stifint(n2)+stifint(n3))
307 stfr=third*(stifintr(n1)+stifintr(n2)+stifintr(n3))
308 ELSE
309 stfn=fourth*(stifint(n1)+stifint(n2)+stifint(n3)+stifint(n4))
310 stfr=fourth*(stifintr(n1)+stifintr(n2)+stifintr(n3)+stifintr(n4))
311 ENDIF
312 SELECT CASE (igsti)
313 CASE (2)
314 stfn = half*(stfn+stifint(i))
315 stfr = half*(stfr+stifintr(i))
316 CASE (3)
317 stfn =
max(stfn,stifint(i))
318 stfr =
max(stfr,stifintr(i))
319 CASE (4)
320 stfn =
min(stfn,stifint(i))
321 stfr =
min(stfr,stifintr(i))
322 CASE (5)
323 stfn = stfn*stifint(i) /
max(em20,(stfn+stifint(i)))
324 stfr = stfr*stifintr(i) /
max(em20,(stfr+stifintr(i)))
325 CASE DEFAULT
326 CONTINUE
327 END SELECT
328 intbuf_tab%SPENALTY(ii) = stfn*intbuf_tab%STFAC(1)
329 intbuf_tab%STFR_PENALTY(ii) = stfr*intbuf_tab%STFAC(1)
330 ENDDO
331 ENDIF
332 ENDIF
333
334 RETURN
335
336 2001 FORMAT(//,1x,'INTERFACE NUMBER. . . . . . . . . . . . . .',i10/
337 + ,1x,'INTERFACE TYPE. . . . . . . . . . . . . . .',i6/)
338 2002 FORMAT(//
339 +' SECONDARY NEAREST NEAREST MAIN NODES SECONDARY '/
340 +' NODE MAIN SEGMENT S T')
341 2003 FORMAT(//
342 +' MAIN NEAREST NEAREST SECONDARY NODES MAIN'/
343 +' NODE SECONDARY SEGMENT S T')
344
subroutine ifrontplus(n, p)
subroutine i6pen3(x, irect, msr, nsv, iloc, irtl, cst, irtl0, gap, nsn, itab, iwpene, peni, icor, id, inacti, titr)
subroutine i6sti3(irect, stf, nrt, stfn, nsn, nsv, xmas, ms, npby, lpby, noint, itab, id, titr)
subroutine inint0(x, irect, nseg, nod2seg, nsv, msr, iloc, nmn, nsn, nrt, sirect, s_n2seg)
subroutine invoi3(x, irect, lmsr, msr, nsv, iloc, irtl, nseg, nsn, nmn, itab, id, titr, nrt)
integer, dimension(:), allocatable flagkin
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)