| 46 |
|
!! PURPOSE: Generic Spline interpolation routines. |
| 47 |
|
!! |
| 48 |
|
!! @author Charles F. Vardeman II |
| 49 |
< |
!! @version $Id: interpolation.F90,v 1.7 2006-04-20 18:24:24 gezelter Exp $ |
| 49 |
> |
!! @version $Id: interpolation.F90,v 1.8 2006-05-17 15:37:15 gezelter Exp $ |
| 50 |
|
|
| 51 |
|
|
| 52 |
|
module interpolation |
| 224 |
|
cs%b(n) = cs%b(n-1) + h(n-1) * (2.0_dp*cs%c(n-1) + h(n-1)*3.0_dp*cs%d(n-1)) |
| 225 |
|
|
| 226 |
|
if (isUniform) then |
| 227 |
< |
cs%dx_i = 1.0d0 / (x(2) - x(1)) |
| 227 |
> |
cs%dx_i = 1.0_dp / (x(2) - x(1)) |
| 228 |
|
endif |
| 229 |
|
|
| 230 |
|
return |
| 310 |
|
! Find the interval J = [ cs%x(J), cs%x(J+1) ] that contains |
| 311 |
|
! or is nearest to xval. |
| 312 |
|
|
| 313 |
< |
j = MAX(1, MIN(cs%n-1, idint((xval-cs%x(1)) * cs%dx_i) + 1)) |
| 313 |
> |
j = MAX(1, MIN(cs%n-1, int((xval-cs%x(1)) * cs%dx_i) + 1)) |
| 314 |
|
|
| 315 |
|
dx = xval - cs%x(j) |
| 316 |
|
yval = cs%y(j) + dx*(cs%b(j) + dx*(cs%c(j) + dx*cs%d(j))) |
| 332 |
|
! or is nearest to xval. |
| 333 |
|
|
| 334 |
|
|
| 335 |
< |
j = MAX(1, MIN(cs%n-1, idint((xval-cs%x(1)) * cs%dx_i) + 1)) |
| 335 |
> |
j = MAX(1, MIN(cs%n-1, int((xval-cs%x(1)) * cs%dx_i) + 1)) |
| 336 |
|
|
| 337 |
|
dx = xval - cs%x(j) |
| 338 |
|
yval = cs%y(j) + dx*(cs%b(j) + dx*(cs%c(j) + dx*cs%d(j))) |
| 339 |
|
|
| 340 |
< |
dydx = cs%b(j) + dx*(2.0d0 * cs%c(j) + 3.0d0 * dx * cs%d(j)) |
| 340 |
> |
dydx = cs%b(j) + dx*(2.0_dp * cs%c(j) + 3.0_dp * dx * cs%d(j)) |
| 341 |
|
|
| 342 |
|
return |
| 343 |
|
end subroutine lookupUniformSpline1d |