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 . (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 IF(stfa + stfb < zero) THEN
74 stfe(i)= zero
75 ELSE
76 stfe(i)=two*stfa*stfb/
max(zero,stfa+stfb)
77 END IF
78 ELSE
79 stfe(i)=
max(stfa,stfb)
80 END IF
81 END DO
82
83 bgapemx=zero
84 DO i=1,nedge
85
86 gapa=zero
87 gapb=zero
88
89 a=ledge(1,i)
90 IF(a/=0) gapa=gap_m(a)
91 b=ledge(3,i)
92 IF(b/=0) gapb=gap_m(b)
93 gape(i)=
max(gapa,gapb)
94
95 bgapemx =
max(bgapemx,gape(i))
96
97 END DO
98
99 bgapemx_l=zero
100 IF(igap==3)THEN
101 ALLOCATE(tagslav(numnod))
102 tagslav(1:numnod) = 0
103 DO i=1,nsn
104 tagslav(nsv(i)) = i
105 ENDDO
106 DO i=1,nedge
107 n1=ledge(5,i)
108 n2=ledge(6,i)
109 gap_e_l(i)=
min(gap_s_l(tagslav(n1)),gap_s_l(tagslav(n2)))
110
111
112 bgapemx_l =
max(bgapemx_l,gap_e_l(i))
113 END DO
114 DEALLOCATE(tagslav)
115 END IF
116
117 IF(intfric > 0) THEN
118 DO i=1,nedge
119 iprta=0
120 iprtb=0
121
122 iprtga=0
123 iprtgb=0
124
125 a=ledge(1,i)
126 IF(a/=0) iprtga=ipartsm(a)
127 IF(a/=0) iprta=ipartfricm(a)
128
129 b=ledge(3,i)
130 IF(b/=0) iprtgb=ipartsm(b)
131 IF(b/=0) iprtb=ipartfricm(b)
132
133 IF(iprta == iprtb) THEN
134 ipartfric_e(i) = iprta
135 ELSE
136 IF(iprtga > iprtgb ) THEN
137 ipartfric_e(i) = iprta
138 ELSE
139 ipartfric_e(i) = iprtb
140 ENDIF
141 ENDIF
142 END DO
143 ENDIF
144
145 RETURN