123
124
125
126 USE elbufdef_mod
127
128
129
130#include "implicit_f.inc"
131
132
133
134#include "param_c.inc"
135
136
137
138 INTEGER IPM(NPROPMI,*),IM,IEL,NEL
140 . svtfac,pm(npropm,*),p,pext
141 TYPE(ELBUF_STRUCT_), TARGET :: ELBUF_STR
142
143
144
145 INTEGER I,J,MTN
147 . lr1,fthk,c1,c2,c3,lbd1,lbd2,epsxx,epsyy,deltap,cos_phi,tan_phi,
148 . apor0,apor1,rs,deltaa,eps(5,1),dir(1,2)
150 . DIMENSION(:), POINTER :: uvar
151
152
153
154 svtfac= zero
155 tan_phi=zero
156 DO i=1,5
157 eps(i,1) = zero
158 ENDDO
159 mtn=ipm(2,im)
160
161 IF(mtn==19) THEN
162 j = (iel-1)*8
163 DO i=1,5
164 eps(i,1) = elbuf_str%GBUF%STRA(j+i)
165 ENDDO
166 dir(1,1) = elbuf_str%BUFLY(1)%DIRA(iel)
167 dir(1,2) = elbuf_str%BUFLY(1)%DIRA(iel+nel)
168 CALL roto(1,1,eps,dir,1)
169 ELSEIF (mtn == 58) THEN
170 uvar => elbuf_str%BUFLY(1)%MAT(1,1,1)%VAR
171 eps(1,1) = uvar(3*nel+iel)
172 eps(2,1) = uvar(4*nel+iel)
173 tan_phi = uvar(5*nel+iel)
174 ENDIF
175
176 lbd1 = one+eps(1,1)
177 lbd2 = one+eps(2,1)
178 rs = lbd1*lbd2
179 IF(rs > one) THEN
180 lr1 = pm(164,im)
181 fthk = pm(166,im)
182 c1 = pm(167,im)
183 c2 = pm(168,im)
184 c3 = pm(169,im)
185 deltap=
max(p/pext-one,zero)
186 apor0 = (lr1-fthk)*(lr1-fthk)
187 apor1 = (lr1*lbd1-fthk/sqrt(lbd2))*(lr1*lbd2-fthk/sqrt(lbd1))
188 deltaa=
max(apor1-apor0,zero)
189 cos_phi = one / sqrt(one + tan_phi*tan_phi)
190 svtfac= c1*apor0*exp(c2*log(deltap)) + c3*deltaa
191 svtfac= svtfac*cos_phi/(lr1*lr1)
192 ENDIF
193
194 RETURN