68#include "implicit_f.inc"
77 INTEGER ,
INTENT(IN) :: ISMOOTH
78 INTEGER ,
INTENT(IN) :: NEL
79 INTEGER ,
INTENT(IN) :: DIMX
80 INTEGER ,
DIMENSION(DIMX,TABLE%NDIM) :: IPOS
81 my_real ,
DIMENSION(DIMX,TABLE%NDIM) :: xx
82 my_real ,
DIMENSION(NEL) :: yy, dydx1, dydx2
86 INTEGER NXK(2), IB(2,2,NEL)
87 INTEGER :: I,I1,I2,J1,J2,K,N,M,L,IN,IM,IL,N1,IL1,IL2,NDIM
88 my_real :: dx1,dx2,ya1,ya2,yb1,yb2,x1_1,x1_2,x2_1,x2_2,xx2,
89 . x1,x2,y1,y2,r1,r2,unr1,unr2
91 TYPE(),
DIMENSION(:) ,
POINTER :: TX
94 IF (
SIZE(xx,2) < ndim .or. ndim > 2)
THEN
95 CALL ancmsg(msgid=36,anmode=aninfo,c1=
'TABLE INTERPOLATION')
100 ipos(1:dimx,1:ndim) = 1
107 nxk(k) =
SIZE(tx(k)%VALUES)
109 ipos(i,k) =
max(ipos(i,k),1)
110 ipos(i,k) =
min(ipos(i,k),nxk(k))
112 dx2 = tx(k)%VALUES(m) - xx(i,k)
115 dx2 = tx(k)%VALUES(n) - xx(i,k)
116 IF (dx2 < zero .OR. n <=1)
THEN
123 dx2 = tx(k)%VALUES(n) - xx(i,k)
124 IF (dx2 >= zero .OR. n == nxk(k))
THEN
140 x2 = tx(1)%VALUES(n+1)
143 r1 = (x2 - xx(i,1)) / (x2 - x1)
145 yy(i) = r1*y1 + unr1*y2
146 dydx1(i)= (y2 - y1) / (x2 - x1)
156 im = n1*(il2 - 1 + m)
157 ib(1,m+1,i) = im + il1
158 ib(2,m+1,i) = im + il1 + 1
162 IF (ismooth == 1)
THEN
169 ya1 = ty%VALUES(ib(1,1,i))
170 yb1 = ty%VALUES(ib(2,1,i))
171 ya2 = ty%VALUES(ib(1,2,i))
172 yb2 = ty%VALUES(ib(2,2,i))
173 x1_1 = tx(1)%VALUES(i1)
174 x1_2 = tx(1)%VALUES(i2)
175 x2_1 = tx(2)%VALUES(j1)
176 x2_2 = tx(2)%VALUES(j2)
178 r1 = (x1_2 - xx(i,1)) / (x1_2 - x1_1)
179 r2 = (x2_2 - xx(i,2)) / (x2_2 - x2_1)
183 y1 = r1*ya1 + unr1*yb1
184 y2 = r1*ya2 + unr1*yb2
186 yy(i) = r2*y1 + unr2*y2
187 dydx1(i) = (r2*(yb1 - ya1) + unr2*(yb2 - ya2)) / (x1_2 - x1_1)
188 dydx2(i) = (y2 - y1) / (x2_2 - x2_1)
191 ELSE IF (ismooth == 2)
THEN
198 ya1 = ty%VALUES(ib(1,1,i))
199 yb1 = ty%VALUES(ib(2,1,i))
200 ya2 = ty%VALUES(ib(1,2,i))
201 yb2 = ty%VALUES(ib(2,2,i))
202 x1_1 = tx(1)%VALUES(i1)
203 x1_2 = tx(1)%VALUES(i2)
204 x2_1 = tx(2)%VALUES(j1)
205 x2_2 = tx(2)%VALUES(j2)
206 xx2 =
max(xx(i,2), em10)
207 x2_1 =
max(x2_1, em10)
209 r1 = (x1_2 - xx(i,1)) / (x1_2 - x1_1)
210 r2 = (log10(x2_2) - log10(xx2)) / (log10(x2_2) - log10(x2_1))
214 y1 = r1*ya1 + unr1*yb1
215 y2 = r1*ya2 + unr1*yb2
217 yy(i) = r2*y1 + unr2*y2
218 dydx1(i) = (r2*(yb1 - ya1) + unr2*(yb2 - ya2)) / (x1_2 - x1_1)
219 dydx2(i) = (y2 - y1) / (x2_2 - x2_1)
222 ELSE IF (ismooth == 3)
THEN
229 ya1 = ty%VALUES(ib(1,1,i))
230 yb1 = ty%VALUES(ib(2,1,i))
231 ya2 = ty%VALUES(ib(1,2,i))
232 yb2 = ty%VALUES(ib(2,2,i))
233 x1_1 = tx(1)%VALUES(i1)
234 x1_2 = tx(1)%VALUES(i2)
235 x2_1 = tx(2)%VALUES(j1)
236 x2_2 = tx(2)%VALUES(j2)
237 xx2 =
max(xx(i,2), em10)
238 x2_1 =
max(x2_1, em10)
240 r1 = (x1_2 - xx(i,1)) / (x1_2 - x1_1)
241 r2 = (log(x2_2) - log(xx2)) / (log(x2_2) - log(x2_1))
245 y1 = r1*ya1 + unr1*yb1
246 y2 = r1*ya2 + unr1*yb2
248 yy(i) = r2*y1 + unr2*y2
249 dydx1(i) = (r2*(yb1 - ya1) + unr2*(yb2 - ya2)) / (x1_2 - x1_1)
250 dydx2(i) = (y2 - y1) / (x2_2 - x2_1)
subroutine sigeps110c_newton(nel, ngl, nuparam, nuvar, npf, time, timestep, uparam, uvar, jthe, off, gs, rho, pla, dpla, epsp, soundsp, depsxx, depsyy, depsxy, depsyz, depszx, asrate, epspxx, epspyy, epspxy, epspyz, epspzx, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, signxx, signyy, signxy, signyz, signzx, thkly, thk, sigy, et, tempel, temp, seq, tf, numtabl, itable, table, nvartmp, vartmp, siga, inloc, dplanl, loff)
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)