43 my_real FUNCTION finter_smooth(IFUNC,XX,NPF,TF,DERI)
47#include "implicit_f.inc"
51 INTEGER ifunc,npf(*),i
52 my_real tf(*),deri,xx,deri1,deri2,deri3,dx1,dx2,div0,div,xx_first,xx_last
60 dx2 = tf(npf(ifunc)) - xx
61 xx_first = tf(npf(ifunc))
62 xx_last = tf(npf(ifunc+1)-2)
64 IF ((npf(ifunc+1)-npf(ifunc)) == 2)
THEN
66 finter_smooth = tf(npf(ifunc)+1)
70 DO i=npf(ifunc)+2,npf(ifunc+1)-2,2
71 IF (xx <= xx_first)
THEN
72 finter_smooth = tf(npf(ifunc)+1)
74 ELSEIF (xx >= xx_last)
THEN
75 finter_smooth = tf(npf(ifunc+1)-1)
77 ELSEIF (xx_first < xx .AND. xx < xx_last)
THEN
82 IF (dx2 >= zero .OR. i == npf(ifunc+1)-2)
THEN
83 div0 = tf(i) - tf(i-2)
84 div =
max(abs(div0),em16)
92 finter_smooth = tf(i-1) + (tf(i+1)-tf(i-1))*deri3*
93 . (10. - 15.*deri1 + 6.*deri2)
100 finter_smooth = tf(i+1) - (tf(i+1)-tf(i-1))*deri3*
101 . (10. - 15.*deri1 + 6.*deri2)
116 my_real FUNCTION finter2_smooth(TF,IAD,IPOS,ILEN,XX,DYDX)
120#include "implicit_f.inc"
121 INTEGER j,j1,j2,icont,ilen,ipos,iad
122 my_real tf(2,*),dydx,xx,dydx1,dydx2,dydx3
126 DO WHILE (icont == 1)
130 IF (j <= ilen-1 .AND. xx > tf(1,j1))
THEN
133 ELSEIF (ipos >= 1 .AND. xx < tf(1,j1-1))
THEN
143 dydx = (xx-tf(1,j1))/(tf(1,j2)-tf(1,j1))
149 finter2_smooth = tf(2,j1) + (tf(2,j2)-tf(2,j1))*dydx3*
150 . (10. - 15.*dydx1 + 6.*dydx2)