42 my_real FUNCTION finter_smooth(IFUNC,XX,NPF,TF,DERI)
46#include "implicit_f.inc"
50 INTEGER ifunc,npf(*),i
51 my_real tf(*),deri,xx,deri1,deri2,deri3,dx1,dx2,div0,div,xx_first,xx_last
59 dx2 = tf(npf(ifunc)) - xx
60 xx_first = tf(npf(ifunc))
61 xx_last = tf(npf(ifunc+1)-2)
63 IF ((npf(ifunc+1)-npf(ifunc)) == 2)
THEN
65 finter_smooth = tf(npf(ifunc)+1)
69 DO i=npf(ifunc)+2,npf(ifunc+1)-2,2
70 IF (xx <= xx_first)
THEN
71 finter_smooth = tf(npf(ifunc)+1)
73 ELSEIF (xx >= xx_last)
THEN
74 finter_smooth = tf(npf(ifunc+1)-1)
76 ELSEIF (xx_first < xx .AND. xx < xx_last)
THEN
81 IF (dx2 >= zero .OR. i == npf(ifunc+1)-2)
THEN
82 div0 = tf(i) - tf(i-2)
83 div =
max(abs(div0),em16)
91 finter_smooth = tf(i-1) + (tf(i+1)-tf(i-1))*deri3*
92 . (10. - 15.*deri1 + 6.*deri2)
99 finter_smooth = tf(i+1) - (tf(i+1)-tf(i-1))*deri3*
100 . (10. - 15.*deri1 + 6.*deri2)
115 my_real FUNCTION finter2_smooth(TF,IAD,IPOS,ILEN,XX,DYDX)
119#include "implicit_f.inc"
120 INTEGER j,,j2,,ilen,ipos,iad
121 my_real tf(2,*),dydx,xx,dydx1,dydx2,dydx3
125 DO WHILE (icont == 1)
129 IF (j <= ilen-1 .AND. xx > tf(1,j1))
THEN
132 ELSEIF (ipos >= 1 .AND. xx < tf(1,j1-1))
THEN
142 dydx = (xx-tf(1,j1))/(tf(1,j2)-tf(1,j1))
148 finter2_smooth = tf(2,j1) + (tf(2,j2)-tf(2,j1))*dydx3*
149 . (10. - 15.*dydx1 + 6.*dydx2)