49
50
51
55
56
57
58#include "implicit_f.inc"
59
60
61
62#include "com04_c.inc"
63#include "param_c.inc"
64#include "scr08_c.inc"
65
66
67
68 INTEGER NRT, NINT, NSN, NTY, NOINT, IR
70 . slsfac, gap
71 INTEGER (4,*), IXS(NIXS,*), IXC(NIXC,*),
72 . NSV(*), IXTG(NIXTG,*), NSEG(*), LNSV(*),
73 . KNOD2ELS(*), KNOD2ELC(*), KNOD2ELTG(*), NOD2ELS(*), NOD2ELC(*),
74 . NOD2ELTG(*),IXS10(*), IXS16(*), IXS20(*),
75 . IGEO(NPROPGI,*),IWORKSH(3,*)
77 . x(3,*), stf(*), pm(npropm,*), geo(npropg,*), stfn(*),thk(*),
78 . gapn(*),stf8(*) ,fmax, depth, fillsol(*),pm_stack(20,*)
79 INTEGER ID
80 CHARACTER(LEN=NCHARTITLE) :: TITR
81 TYPE (SURF_) :: IGRSURF
82
83
84
85 INTEGER NDX, I, J, INRT, NELS, MT, JJ, JJJ, NELC,
86 . MG, NUM, NPT, LL, L, NELTG,IGTYP,IPGMAT,IGMAT,
87 . ISUBSTACK, IG, IL
88
90 . dxm,
area, vol, dx, gaptmp,slope,stfmin
91
92
93
94
95
96
97
98
99
100
101 dxm=zero
102 ndx=0
103 ipgmat = 700
104
105 IF (nty==8) THEN
106 gapn(1:nrt) = zero
107 stf8(1:nrt) = zero
108 ENDIF
109 stfmin = ep20
110
111 DO i=1,nrt
112 stf(i)=zero
113 inrt=i
114
115 CALL inelts(x ,irect,ixs ,nint,nels ,
116 . inrt ,
area ,noint,ir ,igrsurf%ELTYP,
117 . igrsurf%ELEM)
118 IF(nels/=0)THEN
119 mt=ixs(1,nels)
120 IF(mt>0)THEN
121 DO jj=1,8
122 jjj=ixs(jj+1,nels)
123 xc(jj)=x(1,jjj)
124 yc(jj)=x(2,jjj)
125 zc(jj)=x(3,jjj)
126 END DO
128 stf(i)=slsfac*fillsol(nels)*
area*
area*pm(32,mt)/vol
129 stfmin =
min(stfmin,stf(i))
130 ELSE
131 IF(nint>=0) THEN
133 . msgtype=msgwarning,
134 . anmode=aninfo_blind_2,
136 . c1=titr,
137 . i2=ixs(nixs,nels),
138 . c2='SOLID',
139 . i3=i)
140 ENDIF
141 IF(nint<0) THEN
143 . msgtype=msgwarning,
144 . anmode=aninfo_blind_2,
146 . c1=titr,
147 . i2=ixs(nixs,nels),
148 . c2='SOLID',
149 . i3=i)
150 ENDIF
151 ENDIF
152 GO TO 500
153 ELSE
154 CALL ineltc(nelc ,neltg ,inrt ,igrsurf%ELTYP, igrsurf%ELEM)
155
156 IF(neltg/=0) THEN
157 mt=ixtg(1,neltg)
158 mg=ixtg(5,neltg)
159 igtyp = igeo(11,mg)
160 igmat = igeo(98,mg)
161 dx=geo(1,mg)
162 IF(igtyp == 17 .OR. igtyp == 51 .OR. igtyp ==52) dx = thk(numelc + neltg
163 IF (nty==8) gapn(i) = dx/two
164 dxm=dxm+dx
165 ndx=ndx+1
166 IF(mt>0)THEN
167 IF( igtyp == 11 .AND. igmat > 0) THEN
168 stf(i)=slsfac*dx*geo(ipgmat + 2 ,mg)
169 stfmin =
min(stfmin,stf(i))
170 ELSEIF(igtyp == 52 .OR.
171 . ((igtyp == 17 .OR. igtyp == 51) .AND. igmat > 0))THEN
172 isubstack = iworksh(3,numelc+neltg)
173 stf(i)=slsfac*dx*pm_stack(2,isubstack)
174 stfmin =
min(stfmin,stf(i))
175 ELSE
176 stf(i)=slsfac*dx*pm(20,mt)
177 stfmin =
min(stfmin,stf(i))
178 ENDIF
179 ELSE
180 IF(nint>=0) THEN
182 . msgtype=msgwarning,
183 . anmode=aninfo_blind_2,
185 . c1=titr,
186 . i2=ixtg(nixtg,neltg),
187 . c2='SHELL',
188 . i3=i)
189 END IF
190 IF(nint<0) THEN
192 . msgtype=msgwarning,
193 . anmode=aninfo_blind_2,
195 . c1=titr,
196 . i2=ixtg(nixtg,neltg),
197 . c2='SHELL',
198 . i3=i)
199 END IF
200 END IF
201 GO TO 500
202 ELSEIF(nelc/=0) THEN
203 mt=ixc(1,nelc)
204 mg=ixc(6,nelc)
205 igtyp = igeo(11,mg)
206 igmat = igeo(98,mg)
207 dx=geo(1,mg)
208 IF(igtyp == 17 .OR. igtyp == 51) dx = thk(nelc)
209 IF (nty==8) gapn(i) = dx/two
210 dxm=dxm+dx
211 ndx=ndx+1
212 IF(mt>0)THEN
213 IF(igtyp == 11 .AND. igmat > 0) THEN
214 stf(i)=slsfac*dx*geo(ipgmat + 2 ,mg)
215 stfmin =
min(stfmin,stf(i))
216 ELSEIF(igtyp == 52 .OR.
217 . ((igtyp == 17 .OR. igtyp == 51) .AND. igmat > 0))THEN
218 isubstack = iworksh(3,nelc)
219 stf(i)=slsfac*dx*pm_stack(2 ,isubstack
220 stfmin =
min(stfmin,stf(i))
221 ELSE
222 stf(i)=slsfac*dx*pm(20,mt)
223 stfmin =
min(stfmin,stf(i))
224 ENDIF
225 ELSE
226 IF(nint>=0) THEN
228 . msgtype=msgwarning,
229 . anmode=aninfo_blind_2,
231 . c1=titr,
232 . i2=ixc(nixc,nelc),
233 . c2='SHELL',
234 . i3=i)
235 END IF
236 IF(nint<0) THEN
238 . msgtype=msgwarning,
239 . anmode=aninfo_blind_2,
241 . c1=titr,
242 . i2=ixc(nixc,nelc),
243 . c2='SHELL',
244 . i3=i)
245 END IF
246 END IF
247 GO TO 500
248 END IF
249 END IF
250
251
252
253 CALL insol3(x,irect,ixs,nint,nels,inrt,
254 .
area,noint,knod2els ,nod2els ,ir ,ixs10,
255 . ixs16,ixs20)
256 IF(nels/=0) THEN
257 mt=ixs(1,nels)
258 IF(mt>0)THEN
259 DO jj=1,8
260 jjj=ixs(jj+1,nels)
261 xc(jj)=x(1,jjj)
262 yc(jj)=x(2,jjj)
263 zc(jj)=x(3,jjj)
264 ENDDO
266 stf(i)=slsfac*fillsol(nels)*
area*
area*pm(32,mt)/vol
267 stfmin =
min(stfmin,stf(i))
268 ELSE
269 IF(nint>=0) THEN
271 . msgtype=msgwarning,
272 . anmode=aninfo_blind_2,
274 . c1=titr,
275 . i2=ixs(nixs,nels),
276 . c2='SOLID',
277 . i3=i)
278 ENDIF
279 IF(nint<0) THEN
281 . msgtype=msgwarning,
282 . anmode=aninfo_blind_2,
284 . c1=titr,
285 . i2=ixs(nixs,nels),
286 . c2='SOLID',
287 . i3=i)
288 ENDIF
289 ENDIF
290 ENDIF
291
292
293
294 CALL incoq3(irect,ixc ,ixtg ,nint ,nelc ,
295 . neltg,inrt,geo ,pm ,knod2elc ,
296 . knod2eltg ,nod2elc ,nod2eltg,thk
297 . pm_stack , iworksh)
298 IF(neltg/=0) THEN
299 mt=ixtg(1,neltg)
300 mg=ixtg(5,neltg)
301 igtyp = igeo(11,mg)
302 igmat = igeo(98,mg)
303 dx=geo(1,mg)
304 IF(igtyp == 17 .OR. igtyp == 51) dx = thk(nelc)
305 IF (nty==8) gapn(i) = dx/two
306 dxm=dxm+dx
307 ndx=ndx+1
308 IF(mt>0)THEN
309 IF(igtyp == 11 .AND. igmat > 0) THEN
310 stf(i)=slsfac*dx*geo(ipgmat + 2 ,mg)
311 stfmin =
min(stfmin,stf(i))
312 ELSEIF(igtyp == 52 .OR.
313 . ((igtyp == 17 .OR. igtyp == 51) .AND. igmat > 0))THEN
314 isubstack = iworksh(3,nelc)
315 stf(i)=slsfac*dx*pm_stack(2 ,isubstack)
316 stfmin =
min(stfmin,stf(i))
317 ELSE
318 stf(i)=slsfac*dx*pm(20,mt)
319 stfmin =
min(stfmin,stf(i))
320 ENDIF
321 ELSE
322 IF(nint>=0) THEN
324 . msgtype=msgwarning,
325 . anmode=aninfo_blind_2,
327 . c1=titr,
328 . i2=ixtg(nixtg,neltg),
329 . c2='SHELL',
330 . i3=i)
331 ENDIF
332 IF(nint<0) THEN
334 . msgtype=msgwarning,
335 . anmode=aninfo_blind_2,
337 . c1=titr,
338 . i2=ixtg(nixtg,neltg),
339 . c2='SHELL',
340 . i3=i)
341 ENDIF
342 ENDIF
343 ELSEIF(nelc/=0) THEN
344 mt=ixc(1,nelc)
345 mg=ixc(6,nelc)
346 igtyp = igeo(11,mg)
347 igmat = igeo(98,mg)
348 dx=geo(1,mg)
349 IF(igtyp == 17 .OR. igtyp == 51) dx = thk(nelc)
350 IF (nty==8) gapn(i) = dx/two
351 dxm=dxm+dx
352 ndx=ndx+1
353 IF(mt>0)THEN
354 IF(igtyp == 11 .AND. igmat > 0) THEN
355 stf(i)=slsfac*dx*geo(ipgmat + 2 ,mg)
356 stfmin =
min(stfmin,stf(i))
357 ELSEIF(igtyp == 52 .OR.
358 . ((igtyp == 17 .OR. igtyp == 51) .AND. igmat > 0))THEN
359 isubstack = iworksh(3,nelc)
360 stf(i)=slsfac*dx*pm_stack(2 ,isubstack)
361 stfmin =
min(stfmin,stf(i))
362 ELSE
363 stf(i)=slsfac*dx*pm(20,mt)
364 stfmin =
min(stfmin,stf(i))
365 ENDIF
366 ELSE
367 IF(nint>=0) THEN
369 . msgtype=msgwarning,
370 . anmode=aninfo_blind_2,
372 . c1=titr,
373 . i2=ixc(nixc,nelc),
374 . c2='SHELL',
375 . i3=i)
376 ENDIF
377 IF(nint<0) THEN
379 . msgtype=msgwarning,
380 . anmode=aninfo_blind_2,
382 . c1=titr,
383 . i2=ixc(nixc,nelc),
384 . c2='SHELL',
385 . i3=i)
386 ENDIF
387 ENDIF
388 ENDIF
389
390 IF(nels+nelc+neltg==0)THEN
391 IF(nint>0) THEN
393 . msgtype=msgwarning,
394 . anmode=aninfo_blind_2,
396 . c1=titr,
397 . i2=i)
398 ENDIF
399 IF(nint<0) THEN
401 . msgtype=msgwarning,
402 . anmode=aninfo_blind_2,
404 . c1=titr,
405 . i2=i)
406 ENDIF
407 ENDIF
408 500 CONTINUE
409 ENDDO
410
411
412
413 IF(nty==8)THEN
414 IF(fmax/=zero) THEN
415 IF(depth<=em20) THEN
416 DO i=1,nrt
417 stf8(i) = stf(i)
418 ENDDO
420 . msgtype=msgwarning,
421 . anmode=aninfo_blind_2,
423 . c1=titr,
424 . r1=depth)
425 ELSE
426 slope = fmax/depth
427 IF(slope>stfmin.AND.stfmin/=zero)THEN
428 DO i=1,nrt
429 stf8(i) = stf(i)
430 ENDDO
432 . msgtype=msgwarning,
433 . anmode=aninfo_blind_2,
435 . c1=titr,
436 . r1=depth,
437 . r2=fmax,
438 . r3=slope)
439 ELSE
440 DO i=1,nrt
441 stf8(i) = slope
442 ENDDO
443 ENDIF
444 ENDIF
445 ENDIF
446 ENDIF
447
448
449
450 DO j=1,nsn
451 num=nseg(j+1)-nseg(j)
452 npt=nseg(j)-1
453 DO jj=1,num
454 ll=lnsv(npt+jj)
455 stfn(j)=stfn(j)+fourth*stf(ll)
456 ENDDO
457 ENDDO
458
459 DO i=1,nrt
460 DO j=1,4
461 ig=irect(j,i)
463 irect(j,i)=il
464 ENDDO
465 ENDDO
466
467 RETURN
subroutine area(d1, x, x2, y, y2, eint, stif0)
subroutine incoq3(irect, ixc, ixtg, nint, nel, neltg, is, geo, pm, knod2elc, knod2eltg, nod2elc, nod2eltg, thk, nty, igeo, pm_stack, iworksh)
subroutine inelts(x, irect, ixs, nint, nel, i, area, noint, ir, surf_eltyp, surf_elem)
subroutine ineltc(nelc, neltg, is, surf_eltyp, surf_elem)
subroutine insol3(x, irect, ixs, nint, nel, i, area, noint, knod2els, nod2els, ir, ixs10, ixs16, ixs20)
subroutine local_index(il, ig, nodes, n)
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)