59
60 USE my_alloc_mod
61 USE intbuf_fric_mod
64 use element_mod , only :nixs,nixc,nixtg,nixt,nixp,nixr
65
66
67
68#include "implicit_f.inc"
69
70
71
72#include "com01_c.inc"
73#include "com04_c.inc"
74#include "param_c.inc"
75#include "remesh_c.inc"
76#include "scr03_c.inc"
77#include "scr17_c.inc"
78#include "units_c.inc"
79
80
81
82 INTEGER NRT, NINT, NTY, NOINT,NSN,IGAP,INTFRIC,
83 . INACTI,NRT_SH ,ILEV ,IGAP0,IGEO(NPROPGI,*), IVIS2
84 INTEGER IRECT(4,*), IXS(NIXS,*), IXC(NIXC,*),
85 . NSV(*), IXTG(NIXTG,*), IXT(NIXT,*), IXP(NIXP,*),
86 . KNOD2ELS(*), KNOD2ELC(*), KNOD2ELTG(*), NOD2ELS(*), NOD2ELC(*),
87 . NOD2ELTG(*), INTTH,
88 . SH3TREE(KSH3TREE,*), SH4TREE(KSH4TREE,*),IXR(NIXR,*) ,
89 . IPART(LIPART1,*), IPARTC(*), IPARTTG(*),
90 . ITAB(*), IXS10(6,*),MSEGTYP(*), IXS16(*), IXS20(*),
91 . IWORKSH(3,*), KNOD2EL1D(*),NOD2EL1D(*),TAGPRT_FRIC(*),
92 . IPARTFRICS(*),IPARTFRICM(*),IPARTSM(*),IELES(*),IELEM(*)
93
95 . stfac, gap, gapscale, gapmin,gapinf, gapmax_s,bgapsmx ,gapmax_m,
96 . percent_size, gapm_mx, gaps_mx, gaps_l_mx, gapm_l_mx,drad
97
99 . x(3,*), stf(*), pm(npropm,*), geo(npropg,*), stfn(*),
100 . ms(*),wa(*),gap_s(*),gap_m(*),gap_n(4,*),
101 . areas(*),thk(*),thk_part(*),pen_old(5,nsn), fillsol(*),
102 . pm_stack(20,*),gap_s_l(*),gap_m_l(*)
103 INTEGER ID,IPARTS(*)
104 INTEGER, DIMENSION(NUMELT), INTENT(IN) :: IPARTT
105 INTEGER, DIMENSION(NUMELP), INTENT(IN) :: IPARTP
106 INTEGER, DIMENSION(NUMELR), INTENT(IN) :: IPARTR
107 CHARACTER(LEN=NCHARTITLE) :: TITR
108 TYPE(INTBUF_FRIC_STRUCT_) INTBUF_FRIC_TAB(*)
109 INTEGER , INTENT(INOUT) :: IDEL_SOLID
110 INTEGER , INTENT(INOUT) :: IELEM_M(2,NRT+NRT_SH)
111 INTEGER, DIMENSION(NUMELS), INTENT(INOUT):: ELEM_LINKED_TO_SEGMENT
112 INTEGER, INTENT(IN) ::
113 INTEGER, INTENT(IN) :: FLAG_ELEM_INTER25(NINTER25,NUMELS)
114 my_real,
INTENT(IN) :: thk_s,thk_m ,thk_s_scale,thk_m_scale
115
116
117
118 INTEGER NDX, I, J, INRT, NELS,
119 . MG, L, NN,N1,N2,N3,N4,IE,
120 . IP, NLEV, MYLEV,
121 . NS,IGTYP,NRTT,NNOD,IPFMAX,IPL,
122 . IPFLMAX,IPG,NELEM,STAT
123 INTEGER, DIMENSION(:), ALLOCATABLE :: TAGB
124 INTEGER JPERM(4)
125
127 . dxm, gapmx, gapmn,
area, dx,
128 . sx1,sy1,sz1,sx2,sy2,sz2,sx3,sy3,sz3,
129 . slsfac,xl,gaps_mn
130 DATA jperm/2,3,4,1/
131 INTEGER, DIMENSION(:),ALLOCATABLE ::INRTIE
132
133
134
135
136
137
138
139 ALLOCATE(tagb(numnod))
140 slsfac = stfac
141
142 IF(igap==3)THEN
143 DO i=1,nrt
144 gap_m_l(i)=ep30
145 ENDDO
146 DO i=1,nsn
147 gap_s_l(i)=ep30
148 ENDDO
149 ENDIF
150
151 dxm=zero
152 ndx=0
153 gapmx=ep30
154 gapmn=ep30
155 gapm_mx =zero
156 gaps_mx =zero
157 gaps_mn =ep30
158 gaps_l_mx=zero
159 gapm_l_mx=zero
160
161 gapmin = zero
162
163
164 nrtt =nrt+nrt_sh
165
166 IF(intth > 0)THEN
167 nelem = numelc+numeltg+numels+numelr
168 + + numelp+numelt+numelq+numelr+numelx+numelig3d
169 ALLOCATE(inrtie(nelem),stat=stat)
170 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
171 . msgtype=msgerror,
172 . c1='INRTIE')
173 inrtie=0
174 END IF
175
176 IF(igap==3)THEN
177 DO i=1,numnod
178 wa(i)=ep30
179 ENDDO
180 DO i=1,nrt
181 xl = ep30
182
183 DO j=1,4
184 n1=irect(j,i)
185 n2=irect(jperm(j),i)
186 IF(n1 /= n2 .AND. n1 /= 0)
187 . xl=
min(xl,sqrt((x(1,n1)-x(1,n2))**2+(x(2,n1)-x(2,n2))**2+
188 . (x(3,n1)-x(3,n2))**2))
189 ENDDO
190
191 gap_m_l(i)=
min(percent_size*xl,gapmax_m)
192 gapm_l_mx =
max(gapm_l_mx,gap_m_l(i))
193
194 DO j=1,4
195 wa(irect(j,i)) =
min(wa(irect(j,i)),percent_size*xl)
196 ENDDO
197 ENDDO
198
199 DO i=1,nsn
200 gap_s_l(i)=wa(nsv(i))
201 gap_s_l(i)=
min(gap_s_l(i),gapmax_s)
202 ENDDO
203
204 ENDIF
205
206
207
208 DO i=1,numnod
209 wa(i)=zero
210 ENDDO
211 DO i=1,numelc
212 mg=ixc(6,i)
213 ip = ipartc(i)
214 igtyp = igeo(11,mg)
215 IF ( igap == 5.AND.thk_s /= zero) THEN
216 dx=half*thk_s
217 ELSEIF ( thk_part(ip) /= zero .AND. iintthick == 0) THEN
218 dx=half*thk_part(ip)
219 ELSEIF ( thk(i) /= zero .AND. iintthick == 0) THEN
220 dx=half*thk(i)
221 ELSEIF(igtyp == 17 .OR. igtyp == 51 .OR.igtyp ==52) THEN
222 dx=half*thk(i)
223 ELSE
224 dx=half*geo(1,mg)
225 ENDIF
226 wa(ixc(2,i))=
max(wa(ixc(2,i)),dx)
227 wa(ixc(3,i))=
max(wa(ixc(3,i)),dx)
228 wa(ixc(4,i))=
max(wa(ixc(4,i)),dx)
229 wa(ixc(5,i))=
max(wa(ixc(5,i)),dx)
230 ENDDO
231 DO i=1,numeltg
232 mg=ixtg(5,i)
233 ip = iparttg(i)
234 igtyp = igeo(11,mg)
235 IF ( igap == 5.AND.thk_s /= zero ) THEN
236 dx=half*thk_s
237 ELSEIF ( thk_part(ip) /= zero .AND. iintthick == 0) THEN
238 dx=half*thk_part(ip)
239 ELSEIF ( thk(numelc+i) /= zero .AND. iintthick == 0) THEN
240 dx=half*thk(numelc+i)
241 ELSEIF(igtyp == 17 .OR. igtyp == 51 .OR. igtyp ==52) THEN
242 dx=half*thk(numelc+i)
243 ELSE
244 dx=half*geo(1,mg)
245 ENDIF
246 wa(ixtg(2,i))=
max(wa(ixtg(2,i)),dx)
247 wa(ixtg(3,i))=
max(wa(ixtg(3,i)),dx)
248 wa(ixtg(4,i))=
max(wa(ixtg(4,i)),dx)
249 ENDDO
250
251 IF (ilev/=3) THEN
252 DO i=1,numnod
253 tagb(i) = 0
254 END DO
255 DO i=1,nrt
256
257 IF (msegtyp(i) /= 0) THEN
258 DO j =1,4
259 nn= irect(j,i)
260 tagb(nn) = 1
261 END DO
262 END IF
263 END DO
264 DO i=1,numnod
265 IF (tagb(i)==0) wa(i)=0
266 END DO
267 END IF
268
269 DO i=1,numelt
270 mg=ixt(4,i)
271 ip = ipartt(i)
272 IF ( igap == 5.AND.thk_s /= zero) THEN
273 dx=half*thk_s
274 ELSEIF ( thk_part(ip) > zero ) THEN
275 dx=half*thk_part(ip)
276 ELSE
277 dx=half*sqrt(geo(1,mg))
278 END IF
279 wa(ixt(2,i))=
max(wa(ixt(2,i)),dx)
280 wa(ixt(3,i))=
max(wa(ixt(3,i)),dx)
281 ENDDO
282 DO i=1,numelp
283 mg=ixp(5,i)
284 ip = ipartp(i)
285 IF ( igap == 5.AND.thk_s /= zero) THEN
286 dx=half*thk_s
287 ELSEIF ( thk_part(ip) > zero ) THEN
288 dx=half*thk_part(ip)
289 ELSE
290 dx=half*sqrt(geo(1,mg))
291 END IF
292 wa(ixp(2,i))=
max(wa(ixp(2,i)),dx)
293 wa(ixp(3,i))=
max(wa(ixp(3,i)),dx)
294 ENDDO
295 DO i=1,numelr
296 ip = ipartr(i)
297 mg=ixr(1,i)
298 igtyp = igeo(11,mg)
299 IF ( igap == 5.AND.thk_s /= zero) THEN
300 dx=half*thk_s
301 wa(ixr(2,i))=
max(wa(ixr(2,i)),dx)
302 wa(ixr(3,i))=
max(wa(ixr(3,i)),dx)
303 IF (igtyp==12) wa(ixr(4,i))=
max(wa(ixr(4,i)),dx)
304 ELSEIF ( thk_part(ip) > zero ) THEN
305 dx=half*thk_part(ip)
306 wa(ixr(2,i))=
max(wa(ixr(2,i)),dx)
307 wa(ixr(3,i))=
max(wa(ixr(3,i)),dx)
308 IF (igtyp==12) wa(ixr(4,i))=
max(wa(ixr(4,i)),dx)
309 END IF
310 ENDDO
311 DO i=1,nsn
312 IF ( igap == 5.AND.thk_s /= zero) THEN
313 gap_s(i)= thk_s_scale*wa(nsv(i))
314 ELSE
315 gap_s(i)=gapscale * wa(nsv(i))
316 ENDIF
317 gap_s(i)=
min(gap_s(i),gapmax_s)
318 ENDDO
319
320 IF(igap0 == 1)THEN
321 DO i=1,numnod
322 tagb(i)=0
323 ENDDO
324
325 IF(ilev /= 3 )THEN
326 CALL i25bord(nrt ,irect ,tagb )
327
328
329 ENDIF
330
331
332
333
334 DO i=1,nsn
335 ns = nsv(i)
336 IF( tagb(ns) > 0 ) gap_s(i) = zero
337 ENDDO
338 ENDIF
339
340 DO i=1,nsn
341 IF(igap /= 3) THEN
342 gaps_mx=
max(gaps_mx,gap_s(i))
343 gaps_mn=
min(gaps_mn,gap_s(i))
344 ELSE
345 gaps_mx =
max(gaps_mx,gap_s(i))
346 gaps_l_mx =
max(gaps_l_mx,gap_s_l(i))
347 gaps_mn =
min(gaps_mn,gap_s(i),gap_s_l(i))
348 END IF
349 ENDDO
350
351
352
353
354 IF(intfric > 0) THEN
355
356 IF(numels/=0)THEN
357 DO i = 1,nsn
358 ipfmax = 0
359 ipflmax = 0
360 DO j= knod2els(nsv(i))+1,knod2els(nsv(i)+1)
361 ie = nod2els(j)
362 ip = iparts(ie)
363 ipg = tagprt_fric(ip)
364 IF(ipg > 0.AND.ip>ipfmax) THEN
366 . ipg,intbuf_fric_tab(intfric)%S_TABPARTS_FRIC,
367 . intbuf_fric_tab(intfric)%TABPARTS_FRIC,ipl )
368 IF(ipl /=0) THEN
369 ipfmax = ip
370 ipflmax = ipl
371 ENDIF
372 ENDIF
373 ENDDO
374
375
376 IF(ipfmax/=0) THEN
377 ipartfrics(i) = ipflmax
378 ENDIF
379
380 ENDDO
381 ENDIF
382
383 IF(numelc/=0.OR.numeltg/=0) THEN
384 DO i = 1,nsn
385 ipfmax = 0
386 ipflmax = 0
387 DO j= knod2elc(nsv(i))+1,knod2elc(nsv(i)+1)
388 ie = nod2elc(j)
389 ip = ipartc(ie)
390 ipg = tagprt_fric(ip)
391 IF(ipg > 0.AND.ip>ipfmax) THEN
393 . ipg,intbuf_fric_tab(intfric)%S_TABPARTS_FRIC,
394 . intbuf_fric_tab(intfric)%TABPARTS_FRIC,ipl )
395 IF(ipl /=0) THEN
396 ipfmax = ip
397 ipflmax = ipl
398 ENDIF
399 ENDIF
400 ENDDO
401
402 DO j= knod2eltg(nsv(i))+1,knod2eltg(nsv(i)+1)
403 ie = nod2eltg(j)
404 ip = iparttg(ie)
405 ipg = tagprt_fric(ip)
406 IF(ipg > 0.AND.ip>ipfmax) THEN
408 . ipg,intbuf_fric_tab(intfric)%S_TABPARTS_FRIC,
409 . intbuf_fric_tab(intfric)%TABPARTS_FRIC,ipl )
410
411 IF(ipl /=0) THEN
412 ipfmax = ip
413 ipflmax = ipl
414 ENDIF
415 ENDIF
416 ENDDO
417
418 IF(ipfmax/=0) THEN
419 ipartfrics(i) = ipflmax
420 ENDIF
421
422 ENDDO
423 ENDIF
424
425
426 ENDIF
427
428
429
430
431
432
434 1 x ,irect ,stf ,ixs ,pm ,
435 2 geo ,nrt ,ixc ,nint ,stfac ,
436 3 nty ,gap ,noint ,stfn ,nsn ,
437 4 ms ,nsv ,ixtg ,igap ,gap_m ,
438 6 ixt ,ixp ,
439 8 slsfac,dxm ,ndx ,
440 9 knod2els ,knod2elc ,knod2eltg ,nod2els ,
441 a nod2elc,nod2eltg ,intth,
442 b ieles ,ielem ,areas ,sh4tree ,sh3tree ,
443 c ipart ,ipartc ,iparttg ,thk ,thk_part ,
444 d ixr ,itab ,bgapsmx ,ixs10 ,msegtyp ,
445 e ixs16 ,ixs20 ,gap_n ,gaps_mx
446 f gapmx , gapmn ,gapscale ,gapmax_m,
447 g
id ,titr ,igeo ,fillsol ,nrtt ,
448 h pm_stack, iworksh,intfric,tagprt_fric,ipartfrics
449 i ipartfricm,iparts,intbuf_fric_tab,ipartsm,inrtie,
450 j ivis2 ,ielem_m ,idel_solid,elem_linked_to_segment,
451 k nin25 ,flag_elem_inter25 ,thk_m ,thk_m_scale)
452
453
454
455 gapmx=sqrt(gapmx)
456 gapmx=
min(gapmx,gapmax_m)
457
458
459
460 IF(gap<=zero)THEN
461 IF(ndx/=0)THEN
462 gapmin = gapmn
463 gapmin =
min(half*gapmx,gapmin)
464 ELSE
465
466 gapmin = zero
467 ENDIF
468
469 ELSE
470 gapmin = gap
471 ENDIF
472
473 gapmx=zero
474 gapmn=ep30
475 DO i=1,nrt
476 gapmx=
max(gapmx,gap_m(i))
477 gapmn=
min(gapmn,gap_m(i))
478 END DO
479 IF(ipri>=1) THEN
480 IF(gap<=zero)THEN
481 WRITE(iout,1400)gaps_mn,gaps_mx
482 WRITE(iout,1500)gapmn,gapm_mx
483 END IF
485
486
487 IF( igap == 3) THEN
488 gap =
min(gaps_mx+gapm_mx,gaps_l_mx+gapm_l_mx)
489 ELSE
490 gap = gaps_mx+gapm_mx
491 END IF
492
493
494
495 DO 610 l=1,nsn
496 stfn(l) = one
497 610 CONTINUE
498
499
500
501 bgapsmx = zero
502 gapinf=ep30
503 DO i = 1, nsn
504 bgapsmx =
max(bgapsmx,gap_s(i))
505 ENDDO
506 DO i = 1, nrt
507
508
509 IF(msegtyp(i)/=0) gapinf =
min(gapinf,gap_m(i))
510 ENDDO
511 gapinf=
max(gapinf,gapmin)
512
513 DO i=1,nrt
514 CALL insol3et(x ,irect ,ixs ,nint ,nels,i ,
515 .
area ,noint ,knod2els,nod2els
516 . ixs16,ixs20 ,nnod)
517
518 IF (nnod==10) THEN
519 gap_n(1,i) = three*one_over_8*gap_n(1,i)
520 stf(i) = sixteen*stf(i)
521 ELSEIF (nnod==16) THEN
522 gap_n(1,i) = gap_n(1,i)/4
523 END IF
524 END DO
525 IF (inacti/=0) THEN
527 1 x ,irect ,nrt ,nsn ,nsv ,pen_old,stf )
528 END IF
529
530 IF(intth > 0 .OR. ivis2==-1) THEN
531
532 IF(numelc/=0) THEN
533
534 IF(nadmesh==0)THEN
535 DO i = 1,nsn
536 areas(i) = zero
537 DO j= knod2elc(nsv(i))+1,knod2elc(nsv(i)+1)
538 ie = nod2elc(j)
539 sx1 = x(1,ixc(4,ie)) - x(1,ixc(2,ie))
540 sy1 = x(2,ixc(4,ie)) - x(2,ixc(2,ie))
541 sz1 = x(3,ixc(4,ie)) - x(3,ixc(2,ie))
542 sx2 = x(1,ixc(5,ie)) - x(1,ixc(3,ie))
543 sy2 = x(2,ixc(5,ie)) - x(2,ixc(3,ie))
544 sz2 = x(3,ixc(5,ie)) - x(3,ixc(3,ie))
545 sx3 = sy1*sz2 - sz1*sy2
546 sy3 = sz1*sx2 - sx1*sz2
547 sz3 = sx1*sy2 - sy1*sx2
548 areas(i) = areas(i)
549 . + one_over_8*sqrt(sx3*sx3+sy3*sy3+sz3*sz3)
550
551 IF(intth > 0) THEN
552 ieles(i) = ixc(1,ie)
553 ENDIF
554 END DO
555
556 DO j= knod2eltg(nsv(i))+1,knod2eltg(nsv(i)+1)
557 ie = nod2eltg(j)
558 sx1 = x(1,ixtg(3,ie)) - x(1,ixtg(2,ie))
559 sy1 = x(2,ixtg(3,ie)) - x(2,ixtg(2,ie))
560 sz1 = x(3,ixtg(3,ie)) - x(3,ixtg(2,ie))
561 sx2 = x(1,ixtg(4,ie)) - x(1,ixtg(2,ie))
562 sy2 = x(2,ixtg(4,ie)) - x(2,ixtg(2,ie))
563 sz2 = x(3,ixtg(4,ie)) - x(3,ixtg(2,ie))
564 sx3 = sy1*sz2 - sz1*sy2
565 sy3 = sz1*sx2 - sx1*sz2
566 sz3 = sx1*sy2 - sy1*sx2
567 areas(i) = areas(i)
568 . + one_over_6*sqrt(sx3*sx3+sy3*sy3+sz3*sz3)
569
570 IF(intth > 0) THEN
571 ieles(i) = ixtg(1,ie)
572 ENDIF
573 END DO
574 END DO
575 ELSE
576 DO i = 1,nsn
577 areas(i) = zero
578 DO j= knod2elc(nsv(i))+1,knod2elc(nsv(i)+1)
579 ie = nod2elc(j)
580
581 ip = ipartc(ie)
582 nlev =ipart(10,ip)
583 mylev=sh4tree(3,ie)
584 IF(mylev < 0) mylev=-(mylev+1)
585
586 IF(mylev==nlev)THEN
587 sx1 = x(1,ixc(4,ie)) - x(1,ixc(2,ie))
588 sy1 = x(2,ixc(4,ie)) - x(2,ixc(2,ie))
589 sz1 = x(3,ixc(4,ie)) - x(3,ixc(2,ie))
590 sx2 = x(1,ixc(5,ie)) - x(1,ixc(3,ie))
591 sy2 = x(2,ixc(5,ie)) - x(2,ixc(3,ie))
592 sz2 = x(3,ixc(5,ie)) - x(3,ixc(3,ie))
593 sx3 = sy1*sz2 - sz1*sy2
594 sy3 = sz1*sx2 - sx1*sz2
595 sz3 = sx1*sy2 - sy1*sx2
596 areas(i) = areas(i)
597 . + one_over_8*sqrt(sx3*sx3+sy3*sy3+sz3
598
599 IF(intth > 0) THEN
600 ieles(i) = ixc(1,ie)
601 ENDIF
602 END IF
603
604 END DO
605
606 DO j= knod2eltg(nsv(i))+1,knod2eltg(nsv(i)+1)
607 ie = nod2eltg(j)
608
609 ip = iparttg(ie)
610 nlev =ipart(10,ip)
611 mylev=sh3tree(3,ie)
612 IF(mylev < 0) mylev=-(mylev+1)
613
614 IF(mylev==nlev)THEN
615 sx1 = x(1,ixtg(3,ie)) - x(1,ixtg(2,ie
616 sy1 = x(2,ixtg(3,ie)) - x(2,ixtg(2,ie))
617 sz1 = x(3,ixtg(3,ie)) - x(3,ixtg(2,ie))
618 sx2 = x(1,ixtg(4,ie)) - x(1,ixtg(2,ie))
619 sy2 = x(2,ixtg(4,ie)) - x(2,ixtg(2,ie))
620 sz2 = x(3,ixtg(4,ie)) - x(3,ixtg(2,ie))
621 sx3 = sy1*sz2 - sz1*sy2
622 sy3 = sz1*sx2 - sx1*sz2
623 sz3 = sx1*sy2 - sy1*sx2
624 areas(i) = areas(i)
625 . + one_over_6*sqrt(sx3*sx3+sy3*sy3+sz3*sz3)
626
627 IF(intth > 0) THEN
628 ieles(i) = ixtg(1,ie)
629 ENDIF
630 END IF
631
632 END DO
633 END DO
634 END IF
635 ENDIF
636 ENDIF
637
638
639 IF(intth > 0 ) THEN
640
641 IF(ilev /= 3 )THEN
642 IF(numels/=0)THEN
643 DO i = 1,nsn
644 areas(i) = zero
645 DO j= knod2els(nsv(i))+1,knod2els(nsv(i)+1)
646 ie = nod2els(j)
647 inrt = inrtie(ie)
648 IF(inrt/=0)THEN
649 n1=irect(1,inrt)
650 n2=irect(2,inrt)
651 n3=irect(3,inrt
652 n4=irect(4,inrt)
653
654 IF(n3 /= n4) THEN
655 sx1 = x(1,n3) - x(1,n1)
656 sy1 = x(2,n3) - x(2,n1)
657 sz1 = x(3,n3) - x(3,n1)
658 sx2 = x(1,n4) - x(1,n2)
659 sy2 = x(2,n4) - x(2,n2)
660 sz2 = x(3,n4) - x(3,n2)
661 sx3 = sy1*sz2 - sz1*sy2
662 sy3 = sz1*sx2 - sx1*sz2
663 sz3 = sx1*sy2 - sy1*sx2
664 area = one_over_8*sqrt(sx3*sx3+sy3*sy3+sz3*sz3)
665 areas(i) = areas(i) +
area
666
667
668 ELSE
669 sx1 = x(1,n2) - x(1,n1)
670 sy1 = x(2,n2) - x(2,n1)
671 sz1 = x(3,n2) - x(3,n1)
672 sx2 = x(1,n3) - x(1,n1)
673 sy2 = x(2,n3) - x(2,n1)
674 sz2 = x(3,n3) - x(3,n1)
675 sx3 = sy1*sz2 - sz1*sy2
676 sy3 = sz1*sx2 - sx1*sz2
677 sz3 = sx1*sy2 - sy1*sx2
678 area = one_over_6*sqrt(sx3*sx3+sy3*sy3+sz3*sz3)
679 areas(i) = areas(i) +
area
680 ENDIF
681 IF(intth > 0) THEN
682 ieles(i) = ixs(1,ie)
683 ENDIF
684 ENDIF
685 END DO
686 ENDDO
687 ENDIF
688 ENDIF
689
690 END IF
691
692 IF(intth > 0)THEN
693 IF(drad==zero)THEN
695 ELSEIF(drad<gap)THEN
696 drad=gap
697 END IF
698 WRITE(iout,2001)drad
699
700 IF(drad>gapmx)THEN
702 . msgtype=msgwarning,
703 . anmode=aninfo_blind_2,
705 . c1=titr,
706 . r1=drad ,
707 . r2=gapmx,
709 END IF
710 END IF
711
712 IF(intth > 0) DEALLOCATE(inrtie)
713
714 DEALLOCATE(tagb)
715
716 RETURN
717 1300 FORMAT(2x,'GAP MIN = ',1pg20.13)
718 1400 FORMAT(2x,'MIN,MAX OF SECONDARY GAP: ',2(1pg20.13))
719 1500 FORMAT(2x,'MIN,MAX OF MAIN GAP: ',2(1pg20.13)/)
720 2001 FORMAT(2x,'Maximum distance for radiation computation = ',
721 . 1pg20.13)
if(complex_arithmetic) id
subroutine i24normns(x, irect, nrt, nsn, nsv, pen_old, stf)
subroutine insol3et(x, irect, ixs, nint, nel, i, area, noint, knod2els, nod2els, ixs10, ixs16, ixs20, nnod)
subroutine i25gapm(x, irect, stf, ixs, pm, geo, nrt, ixc, nint, stfac, nty, gap, noint, stfn, nsn, ms, nsv, ixtg, igap, gap_m, ixt, ixp, slsfac, dxm, ndx, knod2els, knod2elc, knod2eltg, nod2els, nod2elc, nod2eltg, intth, ieles, ielem, areas, sh4tree, sh3tree, ipart, ipartc, iparttg, thk, thk_part, ixr, itab, bgapsmx, ixs10, msegtyp, ixs16, ixs20, gap_n, gaps1, gaps2, gapmx, gapmn, gapscale, gapmax_m, id, titr, igeo, fillsol, nrtt, pm_stack, iworksh, intfric, tagprt_fric, ipartfrics, ipartfricm, iparts, intbuf_fric_tab, ipartsm, inrtie, ivis2, ielem_m, idel_solid, elem_linked_to_segment, nin25, flag_elem_inter25, thk_m, thk_m_scale)
subroutine i25bord(nrtm, irect, tagb)