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