58
59
60
64
65
66
67#include "implicit_f.inc"
68
69
70
71#include "param_c.inc"
72#include "com01_c.inc"
73#include "com04_c.inc"
74#include "scr05_c.inc"
75#include "scr08_c.inc"
76
77
78
79 INTEGER NRT, NINT, NTY, NOINT,NSN,IGAP, NDDIM,
80 .
81INTEGER IRECT(4,*), IXS(NIXS,*), IXC(NIXC,*),
82 . NSV(*), IXTG(NIXTG,*), IXT(NIXT,*), IXP(NIXP,*),
83 . KNOD2ELS(*), KNOD2ELC(*), KNOD2ELTG(*), NOD2ELS(*), NOD2ELC(*),
84 . NOD2ELTG(*),IELES(*),INTTH,IELEC(*),
85 . IPARTC(*), IPARTTG(*),NBINFLG(*),MBINFLG(*),NLG(*) ,
86 . IXS10(6,*), IXS16(*), IXS20(*), IGEO(NPROPGI,*),IWORKSH(3,*)
87
89 . stfac, gap,gapmin,gapinf, gapmax,gapshmax,gapsolidmax,gapsol
90
92 . x(3,*), stf(*), pm(npropm,*), geo(npropg,*), stfn(*),
93 . ms(*),wa(*),gap_s(*),gap_m(*),gap_sh(*),areas(*),
94 . thk(*),thk_part(*),xanew(3,*),pm_stack(20,*)
95 INTEGER ID
96 CHARACTER(LEN=NCHARTITLE) :: TITR
97 TYPE (SURF_) :: IGRSURF1
98 TYPE (SURF_) :: IGRSURF2
99
100
101
102 INTEGER NDX, I, J, INRT, NELS,NELS2, MT, JJ, JJJ, NELC,
103 . MG, NUM, NPT, LL, L, NN, NELTG,N1,N2,N3,N4,IE,IP,NM1,
104 . IGTYP,IPGMAT,IGMAT,ISUBSTACK
105
107 . dxm, gapmx, gapmn,
area, vol, dx,gaps1,gaps2, gapm, ddx,
108 . gaptmp, gapscale,sx1,sy1,sz1,sx2,sy2,sz2,sx3,sy3,sz3,
109 . slsfac,gapinfs,gapinfm,gapsups,gapsupm,st
110 INTEGER TAG(NUMNOD)
111 INTEGER BITUNSET,BITGET,BITSET
113
114
115
116
117
118
119
120
121 slsfac = one
122
123 ipgmat = 700
124 igmat = 0
125 DO i=1,numnod
126 xanew(1,i)=x(1,i)
127 xanew(2,i)=x(2,i)
128 xanew(3,i)=x(3,i)
129 tag(i)=0
130 ENDDO
131 dxm=0.
132 ndx=0
133 gapsolidmax=ep30
134 gapmx=ep30
135 gapmn=ep30
136 gaps1=zero
137 gaps2=zero
138 IF(igap==2)THEN
139 igap = 1
140 gapscale = gapmin
141 gapmin = zero
142 ELSE
143 gapscale = one
144 ENDIF
145
146
147
148 IF(igap>=1)THEN
149 DO i=1,numnod
150 wa(i)=zero
151 ENDDO
152 DO i=1,numelc
153 mg=ixc(6,i)
154 igtyp = igeo(11,mg)
155 ip = ipartc(i)
156 IF ( thk_part(ip) /= zero .AND. iintthick == 0) THEN
157 dx=half*thk_part(ip)
158 ELSEIF ( thk(i) /= zero .AND. iintthick == 0) THEN
159 dx=half*thk(i)
160 ELSEIF(igtyp == 17 .OR. igtyp == 51 .OR.igtyp == 52)THEN
161 dx=half*thk(i)
162 ELSE
163 dx=half*geo(1,mg)
164 ENDIF
165 wa(ixc(2,i))=
max(wa(ixc(2,i)),dx)
166 wa(ixc(3,i))=
max(wa(ixc(3,i)),dx)
167 wa(ixc(4,i))=
max(wa(ixc(4,i)),dx)
168 wa(ixc(5,i))=
max(wa(ixc(5,i)),dx)
169 ENDDO
170 DO i=1,numeltg
171 mg=ixtg(5,i)
172 igtyp = igeo(11,mg)
173 ip = iparttg(i)
174 IF ( thk_part(ip) /= zero .AND. iintthick == 0) THEN
175 dx=half*thk_part(ip)
176 ELSEIF (thk(numelc+i)/=zero .AND. iintthick==0) THEN
177 dx=half*thk(numelc+i)
178 ELSEIF(igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52) THEN
179 dx=half*thk(numelc+i)
180 ELSE
181 dx=half*geo(1,mg)
182 ENDIF
183 wa(ixtg(2,i))=
max(wa(ixtg(2,i)),dx)
184 wa(ixtg(3,i))=
max(wa(ixtg(3,i)),dx)
185 wa(ixtg(4,i))=
max(wa(ixtg(4,i)),dx)
186 ENDDO
187 DO i=1,numelt
188 mg=ixt(4,i)
189 dx=half*sqrt(geo(1,mg))
190 wa(ixt(2,i))=
max(wa(ixt(2,i)),dx)
191 wa(ixt(3,i))=
max(wa(ixt(3,i)),dx)
192 ENDDO
193 DO i=1,numelp
194 mg=ixp(5,i)
195 dx=0.5*sqrt(geo(1,mg))
196 wa(ixp(2,i))=
max(wa(ixp(2,i)),dx)
197 wa(ixp(3,i))=
max(wa(ixp(3,i)),dx)
198 ENDDO
199 DO i=1,nsn
200 gap_s(i)=gapscale * wa(nsv(i))
201 gaps1=
max(gaps1,gap_s(i))
202 ENDDO
203 ENDIF
204
205
206 IF(intth > 0 ) THEN
207 DO i = 1,nsn
208 areas(i) = zero
209 DO j= knod2elc(nsv(i))+1,knod2elc(nsv(i)+1)
210 ie = nod2elc(j)
211 sx1 = x(1,ixc(4,ie)) - x(1,ixc(2,ie))
212 sy1 = x(2,ixc(4,ie)) - x(2,ixc(2,ie))
213 sz1 = x(3,ixc(4,ie)) - x(3,ixc(2,ie))
214 sx2 = x(1,ixc(5,ie)) - x(1,ixc(3,ie))
215 sy2 = x(2,ixc(5,ie)) - x(2,ixc(3,ie))
216 sz2 = x(3,ixc(5,ie)) - x(3,ixc(3,ie))
217 sx3 = sy1*sz2 - sz1*sy2
218 sy3 = sz1*sx2 - sx1*sz2
219 sz3 = sx1*sy2 - sy1*sx2
220 areas(i) = areas(i) + one_over_8*sqrt(sx3*sx3+sy3*sy3+sz3*sz3)
221 ENDDO
222 ielec(i) = ixc(1,ie)
223 ENDDO
224 ENDIF
225
226
227
228
229 IF(slsfac >= zero)THEN
230 DO i=1,numelc
231 mg=ixc(6,i)
232 igtyp = igeo(11,mg)
233 ip = ipartc(i)
234 IF ( thk_part(ip) /= zero .AND. iintthick == 0) THEN
235 dx=half*thk_part(ip)
236 ELSEIF ( thk(i) /= zero .AND. iintthick == 0) THEN
237 dx=half*thk(i)
238 ELSEIF(igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52)THEN
239 dx=half*thk(i)
240 ELSE
241 dx=half*geo(1,mg)
242 ENDIF
243 wa(ixc(2,i))=
max(wa(ixc(2,i)),dx)
244 wa(ixc(3,i))=
max(wa(ixc(3,i)),dx)
245 wa(ixc(4,i))=
max(wa(ixc(4,i)),dx)
246 wa(ixc(5,i))=
max(wa(ixc(5,i)),dx)
247 ENDDO
248 DO i=1,numeltg
249 mg=ixtg(5,i)
250 igtyp = igeo(11,mg)
251 ip = iparttg(i)
252 IF ( thk_part(ip) /= zero .AND. iintthick == 0) THEN
253 dx=half*thk_part(ip)
254 ELSEIF (thk(numelc+i)/=zero .AND. iintthick==0) THEN
255 dx=half*thk(numelc+i)
256 ELSEIF(igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52)THEN
257 dx=half*thk(numelc+i)
258 ELSE
259 dx=half*geo
260 ENDIF
261 wa(ixtg(2,i))=
max(wa(ixtg(2,i)),dx)
262 wa(ixtg(3,i))=
max(wa(ixtg(3,i)),dx)
263 wa(ixtg(4,i))=
max(wa(ixtg(4,i)),dx)
264 ENDDO
265 DO i=1,numelt
266 mg=ixt(4,i)
267 dx=half*sqrt(geo(1,mg))
268 wa(ixt(2,i))=
max(wa(ixt(2,i)),dx)
269 wa(ixt(3,i))=
max(wa(ixt(3,i)),dx)
270 ENDDO
271 DO i=1,numelp
272 mg=ixp(5,i)
273 dx=0.5*sqrt(geo(1,mg))
274 wa(ixp(2,i))=
max(wa(ixp(2,i)),dx)
275 wa(ixp(3,i))=
max(wa(ixp(3,i)),dx)
276 ENDDO
277
278
279
280
281
282
283 ENDIF
284
285
286
287
288
289
290
291
292 DO 500 i=1,nrt
293 stf(i)=zero
294 IF(intth > 0 ) ieles(i) = 0
295 IF(slsfac<zero)THEN
296 stf(i)=slsfac
297 ENDIF
298 gap_sh(i)=zero
299 gapm =zero
300 inrt=i
301 CALL i4gmx3(x,irect,inrt,gapmx)
302
303 nm1=igrsurf1%NSEG
304 IF(inrt <= nm1)THEN
305 CALL i20nelts(x ,irect(1,inrt),ixs ,nint,nels ,
306 . inrt ,
area ,noint,0 ,igrsurf1%ELTYP,
307 . igrsurf1%ELEM)
308 ELSE
309 CALL i20nelts(x ,irect(1,inrt),ixs ,nint,nels ,
310 . inrt-nm1 ,
area ,noint,0 ,igrsurf2%ELTYP,
311 . igrsurf2%ELEM)
312 ENDIF
313 IF(nels /= 0)THEN
314 mt=ixs(1,nels)
315 IF(mt>0)THEN
316 DO jj=1,8
317 jjj=ixs(jj+1,nels)
318 xc(jj)=x(1,jjj)
319 yc(jj)=x(2,jjj)
320 zc(jj)=x(3,jjj)
321 END DO
323 stf(i)=slsfac*
area*
area*pm(100,mt)/vol
324 ELSE
325 IF(nint>=0) THEN
327 . msgtype=msgwarning,
328 . anmode=aninfo_blind_2,
330 . c1=titr,
331 . i2=ixs(nixs,nels),
332 . c2='SOLID',
333 . i3=i)
334 ENDIF
335 IF(nint<0) THEN
337 . msgtype=msgwarning,
338 . anmode=aninfo_blind_2,
340 . c1=titr,
341 . i2=ixs(nixs,nels),
342 . c2='SOLID',
343 . i3=i)
344 ENDIF
345 ENDIF
346 IF(igap/=0)THEN
348 gapsolidmax =
min(gapsolidmax,vol/(
area*four))
349 gapmn=
min(gapmn,half*gap_sh(i))
350 gap_m(i)=zero
351 tag(irect(1,inrt)) = 1
352 tag(irect(2,inrt)) = 1
353 tag(irect(3,inrt)) = 1
354 tag(irect(4,inrt)) = 1
355
356
357
358
359 ENDIF
360 mbinflg(i)=
bitset(mbinflg(i),8)
361 GO TO 500
362 ELSE
363 IF(inrt <= nm1)THEN
364 CALL ineltc(nelc ,neltg ,inrt ,igrsurf1%ELTYP,igrsurf1%ELEM)
365 ELSE
366 CALL ineltc(nelc ,neltg ,inrt-nm1,igrsurf2%ELTYP,igrsurf2%ELEM)
367 ENDIF
368 IF(neltg/=0) THEN
369 mt=ixtg(1,neltg)
370 mg=ixtg(5,neltg)
371 igtyp = igeo(11,mg)
372 ip = iparttg(neltg)
373 IF ( thk_part(ip) /= zero .AND. iintthick == 0) THEN
374 dx=thk_part(ip)*gapscale
375 ELSEIF(thk(numelc+neltg)/=zero.AND.iintthick==0)THEN
376 dx=thk(numelc+neltg)*gapscale
377 ELSEIF(igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52)THEN
378 dx=thk(numelc+neltg)*gapscale
379 ELSE
380 dx=geo(1,mg)*gapscale
381 ENDIF
382 gapm=half*dx
383 gaps2=
max(gaps2,gapm)
384 gapmn =
min(gapmn,dx)
385 dxm=dxm+dx
386 ndx=ndx+1
387 igmat = igeo(98,mg)
388 IF(mt>0)THEN
389 IF(igtyp == 11 .AND. igmat > 0) THEN
390 IF ( thk(numelc+neltg) /=zero.AND.iintthick==0)THEN
391 stf(i)=slsfac*thk(numelc+neltg)*geo(ipgmat + 2 ,mg)
392 ELSE
393 stf(i)=slsfac*geo(1,mg)*geo(ipgmat + 2 ,mg)
394 ENDIF
395 ELSEIF(igtyp == 52 .OR.
396 . ((igtyp == 17 .OR. igtyp == 51) .AND. igmat > 0))THEN
397 isubstack = iworksh(3,numelc+neltg)
398 st=pm_stack(2,isubstack)
399 stf
400 ELSE
401 IF ( thk(numelc+neltg) /=zero.AND.iintthick==0)THEN
402 stf(i)=slsfac*thk(numelc+neltg)*pm(20,mt)
403 ELSEIF(igtyp == 17 .OR. igtyp == 51) THEN
404 stf(i)=slsfac*thk(numelc+neltg)*pm(20,mt)
405 ELSE
406 stf(i)=slsfac*geo(1,mg)*pm(20,mt)
407 ENDIF
408 ENDIF
409 ELSE
410 IF(nint>=0) THEN
412 . msgtype=msgwarning,
413 . anmode=aninfo_blind_2,
415 . c1=titr,
416 . i2=ixtg(nixtg,neltg),
417 . c2='SHELL',
418 . i3=i)
419 END IF
420 IF(nint<0) THEN
422 . msgtype=msgwarning,
423 . anmode=aninfo_blind_2,
425 . c1=titr,
426 . i2=ixtg(nixtg,neltg),
427 . c2='SHELL',
428 . i3=i)
429 END IF
430 END IF
431 IF(igap/=0) gap_m(i)=gapm
432 mbinflg(i)=
bitset(mbinflg(i),3)
433 GO TO 500
434 ELSEIF(nelc/=0) THEN
435 mt=ixc(1,nelc)
436 mg=ixc(6,nelc)
437 igtyp = igeo(11,mg)
438 ip = ipartc(nelc)
439 igmat = igeo(99,mg)
440 IF ( thk_part(ip) /= zero .AND. iintthick == 0) THEN
441 dx=thk_part(ip)*gapscale
442 ELSEIF ( thk(nelc) /= zero .AND. iintthick == 0) THEN
443 dx=thk(nelc)*gapscale
444 ELSEIF(igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52) THEN
445 dx
446 ELSE
447 dx=geo(1,mg)*gapscale
448 ENDIF
449 gapm=half*dx
450 gaps2=
max(gaps2,gapm)
451 gapmn =
min(gapmn,dx)
452 dxm=dxm+dx
453 ndx=ndx+1
454 IF(mt>0)THEN
455 IF(igtyp == 11 .AND. igmat > 0) THEN
456 IF ( thk(nelc) /= zero .AND. iintthick == 0) THEN
457 stf(i)=slsfac*thk(nelc)*geo(ipgmat + 2 ,mg)
458 ELSE
459 stf(i)=slsfac*geo(1,mg)*geo(ipgmat + 2 ,mg)
460 ENDIF
461 ELSEIF(igtyp==52 .OR.
462 . ((igtyp == 17 .OR. igtyp == 51) .AND. igmat > 0))THEN
463 isubstack = iworksh(3,nelc)
464 st=pm_stack(2,isubstack)
465 stf(i)=slsfac*thk(nelc)*st
466 ELSE
467 IF ( thk(nelc) /= zero .AND. iintthick == 0) THEN
468 stf(i)=slsfac*thk(nelc)*pm(20,mt)
469 ELSEIF(igtyp == 17) THEN
470 stf(i)=slsfac*thk(nelc)*pm(20,mt)
471 ELSE
472 stf(i)=slsfac*geo(1,mg)*pm(20,mt)
473 ENDIF
474 ENDIF
475 ELSE
476 IF(nint>=0) THEN
478 . msgtype=msgwarning,
479 . anmode=aninfo_blind_2,
481 . c1=titr,
482 . i2=ixc(nixc,nelc),
483 . c2='SHELL',
484 . i3=i)
485 END IF
486 IF(nint<0) THEN
488 . msgtype=msgwarning,
489 . anmode=aninfo_blind_2,
491 . c1=titr,
492 . i2=ixc(nixc,nelc),
493 . c2='SHELL',
494 . i3=i)
495 END IF
496 END IF
497 IF(igap/=0) gap_m(i)=gapm
498 mbinflg(i)=
bitset(mbinflg(i),4)
499 GO TO 500
500 END IF
501 END IF
502
503
504
505
506
507
508 CALL insol3(x,irect,ixs,nint,nels,inrt,
509 .
area,noint,knod2els ,nod2els ,0,ixs10,
510 . ixs16,ixs20)
511 IF(nels/=0) THEN
512 gapm=zero
513 mt=ixs(1,nels)
514 IF(intth > 0 ) ieles(i) = nels
515 IF(mt>0)THEN
516 DO 100 jj=1,8
517 jjj=ixs(jj+1,nels)
518 xc(jj)=x(1,jjj)
519 yc(jj)=x(2,jjj)
520 zc(jj)=x(3,jjj)
521 100 CONTINUE
523 stf(i)=slsfac*
area*
area*pm(100,mt)/vol
524 ELSE
525 IF(nint>=0) THEN
527 . msgtype=msgwarning,
528 . anmode=aninfo_blind_2,
530 . c1=titr,
531 . i2=ixs(nixs,nels),
532 . c2='SOLID',
533 . i3=i)
534 ENDIF
535 IF(nint<0) THEN
537 . msgtype=msgwarning,
538 . anmode=aninfo_blind_2,
540 . c1=titr,
541 . i2=ixs(nixs,nels),
542 . c2='SOLID',
543 . i3=i)
544 ENDIF
545 ENDIF
546 IF(igap/=0)THEN
548 gapsolidmax =
min(gapsolidmax,vol/(
area*four))
549 gapmn=
min(gapmn,half*gap_sh(i))
550 gap_m(i)=zero
551 tag(irect(1,inrt)) = 1
552 tag(irect(2,inrt)) = 1
553 tag(irect(3,inrt)) = 1
554 tag(irect(4,inrt)) = 1
555
556
557
558
559 ENDIF
560 mbinflg(i)=
bitset(mbinflg(i),8)
561 ENDIF
562
563
564
565 CALL incoq3(irect,ixc ,ixtg ,nint ,nelc ,
566 . neltg,inrt,geo ,pm ,knod2elc ,
567 . knod2eltg ,nod2elc ,nod2eltg,thk,nty,igeo,
568 . pm_stack , iworksh)
569 IF(neltg/=0) THEN
570
571 mt=ixtg(1,neltg)
572 mg=ixtg(5,neltg)
573 igtyp = igeo(11,mg)
574 ip = iparttg(neltg)
575 IF ( thk_part(ip) /= zero .AND. iintthick == 0) THEN
576 dx=thk_part(ip)*gapscale
577 ELSEIF ( thk(numelc+neltg) /= zero .AND. iintthick == 0)THEN
578 dx=thk(numelc+neltg)*gapscale
579 ELSEIF(igtyp ==17) THEN
580 dx=thk(numelc+neltg)*gapscale
581 ELSE
582 dx=geo(1,mg)*gapscale
583 ENDIF
584 gapm=half*dx
585 gaps2=
max(gaps2,gapm)
586 gapmn =
min(gapmn,dx)
587 dxm=dxm+dx
588 ndx=ndx+1
589 igmat = igeo(98,mg)
590 IF(mt>0)THEN
591 IF(igtyp == 11 .AND. igmat > 0) THEN
592 IF ( thk(numelc+neltg) /= zero .AND. iintthick == 0) THEN
593 stf(i)=slsfac*thk(numelc+neltg)*geo(ipgmat + 2 ,mg)
594 ELSE
595 stf(i)=slsfac*geo(1,mg)*geo(ipgmat + 2 ,mg)
596 ENDIF
597 ELSEIF(igtyp==52 .OR.
598 . ((igtyp == 17 .OR. igtyp == 51) .AND. igmat > 0))THEN
599 isubstack = iworksh(3,numelc+neltg)
600 st=pm_stack(2,isubstack)
601 stf(i)=slsfac*thk(numelc+neltg)*st
602 ELSE
603 IF ( thk(numelc+neltg) /= zero .AND. iintthick == 0) THEN
604 stf(i)=slsfac*thk(numelc+neltg)*pm(20,mt)
605 ELSEIF(igtyp == 17) THEN
606 stf(i)=slsfac*thk(numelc+neltg)*pm(20,mt)
607 ELSE
608 stf(i)=slsfac*geo(1,mg)*pm(20,mt)
609 ENDIF
610 ENDIF
611 ELSE
612 IF(nint>=0) THEN
614 . msgtype=msgwarning,
615 . anmode=aninfo_blind_2,
617 . c1=titr,
618 . i2=ixtg(nixtg,neltg),
619 . c2='SHELL',
620 . i3=i)
621 ENDIF
622 IF(nint<0) THEN
624 . msgtype=msgwarning,
625 . anmode=aninfo_blind_2,
627 . c1=titr,
628 . i2=ixtg(nixtg,neltg),
629 . c2='SHELL',
630 . i3=i)
631 ENDIF
632 ENDIF
633 IF(igap/=0) gap_m(i)=gapm
634 mbinflg(i)=
bitset(mbinflg(i),3)
635 ELSEIF(nelc/=0) THEN
636 mt=ixc(1,nelc)
637 mg=ixc(6,nelc)
638 igtyp = igeo(11,mg)
639 ip = ipartc(nelc)
640 IF ( thk_part(ip) /= zero .AND. iintthick == 0) THEN
641 dx=thk_part(ip)*gapscale
642 ELSEIF ( thk(nelc) /= zero .AND. iintthick == 0) THEN
643 dx=thk(nelc)*gapscale
644 ELSEIF(igtyp ==17) THEN
645 dx=thk(nelc)*gapscale
646 ELSE
647 dx=geo(1,mg)*gapscale
648 ENDIF
649 gapm=half*dx
650 gaps2=
max(gaps2,gapm)
651 gapmn =
min(gapmn,dx)
652 dxm=dxm+dx
653 ndx=ndx+1
654 igmat = igeo(98,mg)
655 IF(mt>0)THEN
656 IF(igtyp == 11 .AND. igmat > 0) THEN
657 IF ( thk(nelc) /= zero .AND. iintthick == 0) THEN
658 stf(i)=slsfac*thk(nelc)*geo(ipgmat + 2 ,mg)
659 ELSE
660 stf(i)=slsfac*geo(1,mg)*geo(ipgmat + 2 ,mg)
661 ENDIF
662 ELSEIF(igtyp==52 .OR.
663 . ((igtyp == 17 .OR. igtyp == 51) .AND. igmat > 0))THEN
664 isubstack = iworksh(3,nelc)
665 st=pm_stack(2,isubstack)
666 stf(i)=slsfac*thk(nelc)*st
667 ELSE
668 IF ( thk(nelc) /= zero .AND. iintthick == 0) THEN
669 stf(i)=slsfac*thk(nelc)*pm(20,mt)
670 ELSEIF(igtyp ==17) THEN
671 stf(i)=slsfac*thk(nelc)*pm(20,mt)
672 ELSE
673 stf(i)=slsfac*geo(1,mg)*pm(20,mt)
674 ENDIF
675 ENDIF
676 ELSE
677 IF(nint>=0) THEN
679 . msgtype=msgwarning,
680 . anmode=aninfo_blind_2,
682 . c1=titr,
683 . i2=ixc(nixc,nelc),
684 . c2='SHELL',
685 . i3=i)
686 ENDIF
687 IF(nint<0) THEN
689 . msgtype=msgwarning,
690 . anmode=aninfo_blind_2,
692 . c1=titr,
693 . i2=ixc(nixc,nelc),
694 . c2='SHELL',
695 . i3=i)
696 ENDIF
697 ENDIF
698 IF(igap/=0) gap_m(i)=gapm
699 mbinflg(i)=
bitset(mbinflg(i),4)
700 ENDIF
701
702 IF(nels+nelc+neltg==0)THEN
703
704
705 IF(nint>0) THEN
707 . msgtype=msgerror,
708 . anmode=aninfo_blind_2,
710 . c1=titr,
711 . i2=i)
712 ENDIF
713 IF(nint<0) THEN
715 . msgtype=msgerror,
716 . anmode=aninfo_blind_2,
718 . c1=titr,
719 . i2=i)
720 ENDIF
721
722 ENDIF
723 500 CONTINUE
724
725
726
727 gapmx=sqrt(gapmx)
728 IF(igap==0)THEN
729
730 IF(gap<=zero)THEN
731 IF(ndx/=0)THEN
732 gap = dxm/ndx
733 gap =
min(half*gapmx,gap)
734 ELSE
735 gap = em01 * gapmx
736 ENDIF
737
738 ENDIF
739 gapmin = gap
740 IF(inacti/=7.AND.gap>0.5*gapmx)THEN
741 gaptmp = half*gapmx
743 . msgtype=msgwarning,
744 . anmode=aninfo_blind_2,
746 . c1=titr,
747 . r1=gap,
748 . r2=gaptmp)
749 ENDIF
750 ELSE
751
752
753
754 IF(gap<=zero)THEN
755 IF(ndx/=0)THEN
756 gapmin = gapmn
757 gapmin =
min(half*gapmx,gapmin)
758 ELSE
759
760 gapmin =
min(gapmn,em01 * gapmx)
761 ENDIF
762
763 ELSE
764 gapmin = gap
765 ENDIF
766
767 gap =
max(gaps1+gaps2,gapmin)
769 IF(inacti/=7.AND.gap>half*gapmx)THEN
770 gaptmp = 0.5*gapmx
772 . msgtype=msgwarning,
773 . anmode=aninfo_blind_2,
775 . c1=titr,
776 . r1=gap)
777 ENDIF
778 ENDIF
779
780
781
782
783 DO l=1,nsn
784 stfn(l) = 1.
785 ENDDO
786
787
788
789 IF (igap/=0) THEN
790 DO i = 1, nrt
791 IF(gap_m(i) == zero)THEN
792 gap_sh(i) =
min(gapsolidmax,gap_sh(i))
793 gap_sh(i) =
max(gapsol,gap_sh(i))
794
795 gap_m(i)=gap_m(i)+two*gap_sh(i)
796 ENDIF
797 ENDDO
798 ENDIF
799
800
801
802 gapshmax = zero
803 IF (igap==0) THEN
804 gapinf=gap
805 ELSE
806 gapinfs=ep30
807 gapinfm=ep30
808 gapsups = zero
809 gapsupm = zero
810 DO i = 1, nsn
811 gapinfs =
min(gapinfs,gap_s(i))
812 gapsups =
max(gapsups,gap_s(i))
813 ENDDO
814 DO i = 1, nrt
815
816 gapinfm =
min(gapinfm,gap_m(i))
817 gapsupm =
max(gapsupm,gap_m(i))
818 gapshmax =
max(gapshmax,gap_sh(i))
819 ENDDO
820 gapinf=
max(gapinfs+gapinfm,gapmin)
821 gap =
min(gapsups+gapsupm,gapmax)
822 ENDIF
823
824 DO i=1,nln
825 IF(tag(nlg(i)) == 1)nbinflg(i)=
bitunset(nbinflg(i),7)
826 ENDDO
827
828 RETURN
829 1300 FORMAT(2x,'GAP MIN = ',1pg20.13)
integer function bitget(i, n)
integer function bitset(i, n)
integer function bitunset(i, n)
subroutine area(d1, x, x2, y, y2, eint, stif0)
subroutine i4gmx3(x, irect, i, gapmax)
subroutine incoq3(irect, ixc, ixtg, nint, nel, neltg, is, geo, pm, knod2elc, knod2eltg, nod2elc, nod2eltg, thk, nty, igeo, pm_stack, iworksh)
subroutine i20nelts(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)
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)