34
35 USE intbuf_fric_mod
36
37
38
39#include "implicit_f.inc"
40
41
42
43#include "param_c.inc"
44#include "com04_c.inc"
45
46
47
48 INTEGER NEDGE,IGAP,INTFRIC,
49 . LEDGE(NLEDGE,*),IPARTFRIC_E(*) ,IPARTFRICM(*), IPARTSM(*)
50 INTEGER , INTENT(IN) :: NSN
51 INTEGER , INTENT(IN) :: NSV(NSN)
53 . stfe(*), gape(*), gap_e_l(*), stfm(*), gap_m(*), gap_m_l(*), gap_s_l(*), bgapemx,
54 . bgapemx_l
55
56
57
58 INTEGER I, A, B, N1, N2, IPRTA, IPRTB, IPRTGA, IPRTGB
60 . stfa,stfb,gapa,gapb
61 INTEGER, DIMENSION(:),ALLOCATABLE :: TAGSLAV
62
63 DO i=1,nedge
64
65 stfa=zero
66 stfb=zero
67
68 a=ledge(1,i)
69 IF(a/=0) stfa=stfm(a)
70 b=ledge(3,i)
71 IF(b/=0) stfb=stfm(b)
72 IF(stfa/=zero.AND.stfb/=zero)THEN
73 stfe(i)=two*stfa*stfb/
max(zero,stfa+stfb)
74 ELSE
75 stfe(i)=
max(stfa,stfb)
76 END IF
77 END DO
78
79 bgapemx=zero
80 DO i=1,nedge
81
82 gapa=zero
83 gapb=zero
84
85 a=ledge(1,i)
86 IF(a/=0) gapa=gap_m(a)
87 b=ledge(3,i)
88 IF(b/=0) gapb=gap_m(b)
89 gape(i)=
max(gapa,gapb)
90
91 bgapemx =
max(bgapemx,gape(i))
92
93 END DO
94
95 bgapemx_l=zero
96 IF(igap==3)THEN
97 ALLOCATE(tagslav(numnod))
98 tagslav(1:numnod) = 0
99 DO i=1,nsn
100 tagslav(nsv(i)) = i
101 ENDDO
102 DO i=1,nedge
103 n1=ledge(5,i)
104 n2=ledge(6,i)
105 gap_e_l(i)=
min(gap_s_l(tagslav(n1)),gap_s_l(tagslav(n2)))
106
107
108 bgapemx_l =
max(bgapemx_l,gap_e_l(i))
109 END DO
110 DEALLOCATE(tagslav)
111 END IF
112
113 IF(intfric > 0) THEN
114 DO i=1,nedge
115 iprta=0
116 iprtb=0
117
118 iprtga=0
119 iprtgb=0
120
121 a=ledge(1,i)
122 IF(a/=0) iprtga=ipartsm(a)
123 IF(a/=0) iprta=ipartfricm(a)
124
125 b=ledge(3,i)
126 IF(b/=0) iprtgb=ipartsm(b)
127 IF(b/=0) iprtb=ipartfricm(b)
128
129 IF(iprta == iprtb) THEN
130 ipartfric_e(i) = iprta
131 ELSE
132 IF(iprtga > iprtgb ) THEN
133 ipartfric_e(i) = iprta
134 ELSE
135 ipartfric_e(i) = iprtb
136 ENDIF
137 ENDIF
138 END DO
139 ENDIF
140
141 RETURN