51#include "implicit_f.inc"
56 INTEGER ,
INTENT(IN) :: DIMX
57 INTEGER ,
INTENT(IN) :: NEL
58 my_real,
DIMENSION(DIMX,TABLE%NDIM),
INTENT(IN) :: xx
59 INTEGER,
DIMENSION(DIMX,TABLE%NDIM),
INTENT(INOUT) :: IPOS
60 my_real,
DIMENSION(NEL) ,
INTENT(INOUT) :: yy
61 my_real,
DIMENSION(NEL) ,
INTENT(INOUT) :: dydx
65 LOGICAL,
DIMENSION(NEL) :: NEED_TO_COMPUTE
66 INTEGER I,J,K,M,N,I1,I2,J1,J2,K1,K2,L1,L2,NDIM
67 INTEGER :: MINDX_1,MINDX_2
68 INTEGER :: NINDX_1,NINDX_2
69 INTEGER,
DIMENSION(NEL) :: INDX_1,INDX_2
70 INTEGER,
DIMENSION(4) :: LDIM
71 my_real :: dx,dy,
alpha,alphai,beta,betai,gamma,gammai,delta,deltai
72 my_real,
DIMENSION(NEL,4) :: fac
77 ldim(k) =
SIZE(table%X(k)%VALUES)
81 ipos(1:nel,k) =
max(ipos(1:nel,k),1)
86#include "vectorize.inc"
89 dx = table%X(k)%VALUES(m) - xx(i,k)
93 mindx_1 =
max(mindx_1,m)
97 mindx_2 =
min(mindx_2,m)
101 need_to_compute(1:nindx_1) = .true.
103#include "vectorize.inc"
105 IF(need_to_compute(j))
THEN
108 dx = table%X(k)%VALUES(n) - xx(i,k)
109 IF (dx < zero .OR. n <= 1)
THEN
111 need_to_compute(j) = .false.
117 need_to_compute(1:nindx_2) = .true.
120#include "vectorize.inc"
122 IF (need_to_compute(j))
THEN
125 dx = table%X(k)%VALUES(n) - xx(i,k)
126 IF (dx >= zero .OR. n == ldim(k))
THEN
128 need_to_compute(j) = .false.
137#include "vectorize.inc"
140 fac(i,k) = (table%X(k)%VALUES(n+1) - xx(i,k))
141 . / (table%X(k)%VALUES(n+1) - table%X(k)%VALUES(n))
149#include "vectorize.inc"
169 . delta* (gamma*(beta * (
alpha * table%Y4D(i1,j1,k1,l1)
170 . + alphai * table%Y4D(i2,j1,k1,l1))
171 . + betai* (
alpha * table%Y4D(i1,j2,k1,l1)
172 . + alphai * table%Y4D(i2,j2,k1,l1)) )
174 . +gammai*( beta* (
alpha * table%Y4D(i1
175 . + alphai * table%Y4D(i2,j1,k2,l1))
176 . + betai* (
alpha * table%Y4D(i1,j2,k2,l1)
177 . + alphai * table%Y4D(i2,j2,k2,l1))))
178 . +deltai*(gamma *( beta* (
alpha * table%Y4D(i1,j1,k1,l1)
179 . +alphai * table%Y4D(i2,j1,k1,l1))
180 . + betai* (
alpha * table%Y4D(i1,j2,k1,l1)
181 . + alphai * table%Y4D(i2,j2,k1,l1)))
182 . +gammai*(beta * (
alpha * table%Y4D(i1,j1,k2,l1)
183 . + alphai * table%Y4D(i2,j1,k2,l1))
184 . + betai* (
alpha * table%Y4D(i1,j2,k2,l1)
185 . + alphai * table%Y4D(i2,j2,k2,l1))))
187 dy = delta * (gamma *(beta *(table%Y4D(i2,j1,k1,l1)-table%Y4D(i1,j1,k1,l1))
188 . + betai*(table%Y4D(i2,j2,k1,l1)-table%Y4D(i1,j2,k1,l1)))
189 . + gammai *(beta *(table%Y4D(i2,j1,k2,l1)-table%Y4D(i1,j1,k2,l1))
190 . + betai*(table%Y4D(i2,j2,k2,l1)-table%Y4D(i1,j2,k2,l1))))
191 . + deltai * (gamma *(beta *(table%Y4D(i2,j1,k1,l1)-table%Y4D(i1,j1,k1,l1))
192 . + betai*(table%Y4D(i2,j2,k1,l1)-table%Y4D(i1,j2,k1,l1)))
193 . + gammai *(beta *(table%Y4D(i2,j1,k2,l1)-table%Y4D(i1,j1,k2,l1))
194 . + betai*(table%Y4D(i2,j2,k2,l1)-table%Y4D(i1,j2,k2,l1))))
197 dx = table%X(1)%VALUES(i2) - table%X(1)%VALUES(i1)
203#include "vectorize.inc"
218 yy(i)=(gamma * (beta* (
alpha*table%Y3D(i1,j1,k1) + alphai*table%Y3D(i2,j1,k1))
219 . + betai* (
alpha*table%Y3D(i1,j2,k1) + alphai*table%Y3D(i2,j2,k1)) )
220 . + gammai * (beta* (
alpha*table%Y3D(i1,j1,k2) + alphai*table%Y3D(i2,j1,k2))
221 . + betai* (
alpha*table%Y3D(i1,j2,k2) + alphai*table%Y3D(i2,j2,k2))))
223 dy = gamma * ( beta*(table%Y3D(i2,j1,k1) - table%Y3D(i1,j1,k1))
224 . + betai*(table%Y3D(i2,j2,k1) - table%Y3D(i1,j2,k1)))
225 . + gammai * ( beta*(table%Y3D(i2,j1,k2) - table%Y3D(i1,j1,k2))
226 . + betai*(table%Y3D(i2,j2,k2) - table%Y3D(i1,j2,k2)))
227 dx = table%X(1)%VALUES(i2) - table%X(1)%VALUES(i1)
234#include "vectorize.inc"
245 yy(i) = (beta * (
alpha*table%Y2D(i1,j1) + alphai*table%Y2D(i2,j1))
246 . + betai * (
alpha*table%Y2D(i1,j2) + alphai*table%Y2D(i2,j2)) )
248 dydx(i) = (beta *(table%Y2D(i2,j1) - table%Y2D(i1,j1))
249 . + betai *(table%Y2D(i2,j2) - table%Y2D(i1,j2)))
250 . / (table%X(1)%VALUES(i2)-table%X(1)%VALUES(i1))
255#include "vectorize.inc"
262 yy(i) =
alpha*table%Y1D(i1) + alphai*table%Y1D(i2)
263 dydx(i) = (table%Y1D(i2) - table%Y1D(i1))
264 . / (table%X(1)%VALUES(i2) - table%X(1)%VALUES(i1))