50#include "implicit_f.inc"
55 INTEGER ,
INTENT(IN) :: DIMX
56 INTEGER ,
INTENT(IN) :: NEL
57 my_real,
DIMENSION(DIMX,TABLE%NDIM),
INTENT(IN) :: xx
58 INTEGER,
DIMENSION(DIMX,TABLE%NDIM),
INTENT(INOUT) :: IPOS
59 my_real,
DIMENSION(NEL) ,
INTENT(INOUT) :: yy
60 my_real,
DIMENSION(NEL) ,
INTENT(INOUT) :: dydx
64 LOGICAL,
DIMENSION(NEL) :: NEED_TO_COMPUTE
65 INTEGER I,J,K,M,N,I1,I2,,J2,K1,K2,L1,L2,NDIM
66 INTEGER :: MINDX_1,MINDX_2
67 INTEGER :: NINDX_1,NINDX_2
68 INTEGER,
DIMENSION(NEL) :: INDX_1,INDX_2
69 INTEGER,
DIMENSION(4) :: LDIM
70 my_real :: dx,dy,
alpha,alphai,beta,betai,gamma,gammai,delta,deltai
71 my_real,
DIMENSION(NEL,4) :: fac
76 ldim(k) =
SIZE(table%X(k)%VALUES)
80 ipos(1:nel,k) =
max(ipos(1:nel,k),1)
85#include "vectorize.inc"
88 dx = table%X(k)%VALUES(m) - xx(i,k)
92 mindx_1 =
max(mindx_1,m)
96 mindx_2 =
min(mindx_2,m)
100 need_to_compute(1:nindx_1) = .true.
102#include "vectorize.inc"
104 IF(need_to_compute(j))
THEN
107 dx = table%X(k)%VALUES(n) - xx(i,k)
108 IF (dx < zero .OR. n <= 1)
THEN
110 need_to_compute(j) = .false.
116 need_to_compute(1:nindx_2) = .true.
119#include "vectorize.inc"
121 IF (need_to_compute(j))
THEN
124 dx = table%X(k)%VALUES(n) - xx(i,k)
125 IF (dx >= zero .OR. n == ldim(k))
THEN
127 need_to_compute(j) = .false.
136#include "vectorize.inc"
139 fac(i,k) = (table%X(k)%VALUES(n+1) - xx(i,k))
140 . / (table%X(k)%VALUES(n+1) - table%X(k)%VALUES(n))
148#include "vectorize.inc"
168 . delta* (gamma*(beta * (
alpha * table%Y4D(i1,j1,k1,l1)
169 . + alphai * table%Y4D(i2,j1,k1,l1))
170 . + betai* (
alpha * table%Y4D(i1,j2,k1,l1)
171 . + alphai * table%Y4D(i2,j2,k1,l1)) )
173 . +gammai*( beta* (
alpha * table%Y4D(i1,j1,k2,l1)
174 . + alphai * table%Y4D(i2,j1,k2,l1))
175 . + betai* (
alpha * table%Y4D(i1,j2,k2,l1)
176 . + alphai * table%Y4D(i2,j2,k2,l1))))
177 . +deltai*(gamma *( beta* (
alpha * table%Y4D(i1,j1,k1,l1)
178 . +alphai * table%Y4D(i2,j1,k1,l1))
179 . + betai* (
alpha * table%Y4D(i1,j2,k1,l1)
180 . + alphai * table%Y4D(i2,j2,k1,l1)))
181 . +gammai*(beta * (
alpha * table%Y4D(i1,j1,k2,l1)
182 . + alphai * table%Y4D(i2,j1,k2,l1))
183 . + betai* (
alpha * table%Y4D(i1,j2,k2,l1)
184 . + alphai * table%Y4D(i2,j2,k2,l1))))
186 dy = delta * (gamma *(beta *(table%Y4D(i2,j1,k1,l1)-table%Y4D(i1,j1,k1,l1))
187 . + betai*(table%Y4D(i2,j2,k1,l1)-table%Y4D(i1,j2,k1,l1)))
188 . + gammai *(beta *(table%Y4D(i2,j1,k2,l1)-table%Y4D(i1,j1,k2,l1))
189 . + betai*(table%Y4D(i2,j2,k2,l1)-table%Y4D(i1,j2,k2,l1))))
190 . + deltai * (gamma *(beta *(table%Y4D(i2,j1,k1,l1)-table%Y4D(i1,j1,k1,l1))
191 . + betai*(table%Y4D(i2,j2,k1,l1)-table%Y4D(i1,j2,k1,l1)))
192 . + gammai *(beta *(table%Y4D(i2,j1,k2,l1)-table%Y4D(i1,j1,k2,l1))
193 . + betai*(table%Y4D(i2,j2,k2,l1)-table%Y4D(i1,j2,k2,l1))))
196 dx = table%X(1)%VALUES(i2) - table%X(1)%VALUES(i1)
202#include "vectorize.inc"
217 yy(i)=(gamma * (beta* (
alpha*table%Y3D(i1,j1,k1) + alphai*table%Y3D(i2,j1,k1))
218 . + betai* (
alpha*table%Y3D(i1,j2,k1) + alphai*table%Y3D(i2,j2,k1)) )
219 . + gammai * (beta* (
alpha*table%Y3D(i1,j1,k2) + alphai*table%Y3D(i2,j1,k2))
220 . + betai* (
alpha*table%Y3D(i1,j2,k2) + alphai*table%Y3D(i2,j2,k2))))
222 dy = gamma * ( beta*(table%Y3D(i2,j1,k1) - table%Y3D(i1,j1,k1))
223 . + betai*(table%Y3D(i2,j2,k1) - table%Y3D(i1,j2,k1)))
224 . + gammai * ( beta*(table%Y3D(i2,j1,k2) - table%Y3D(i1,j1,k2))
225 . + betai*(table%Y3D(i2,j2,k2) - table%Y3D(i1,j2,k2)))
226 dx = table%X(1)%VALUES(i2) - table%X(1)%VALUES(i1)
233#include "vectorize.inc"
244 yy(i) = (beta * (
alpha*table%Y2D(i1,j1) + alphai*table%Y2D(i2,j1))
245 . + betai * (
alpha*table%Y2D(i1,j2) + alphai*table%Y2D(i2,j2)) )
247 dydx(i) = (beta *(table%Y2D(i2,j1) - table%Y2D(i1,j1))
248 . + betai *(table%Y2D(i2,j2) - table%Y2D(i1,j2)))
249 . / (table%X(1)%VALUES(i2)-table%X(1)%VALUES(i1))
254#include "vectorize.inc"
261 yy(i) =
alpha*table%Y1D(i1) + alphai*table%Y1D(i2)
262 dydx(i) = (table%Y1D(i2) - table%Y1D
263 . / (table%X(1)%VALUES(i2) - table%X(1)%VALUES(i1))