@@ -71,8 +71,9 @@ function interp_routine(this, x) result(rst)
7171 type (interpolation_manager), private :: m_manager
7272 ! ! An object to manage the interpolation process.
7373 real (real64), private , allocatable , dimension (:) :: m_c
74+ ! ! Workspace array.
7475 real (real64), private , allocatable , dimension (:) :: m_d
75- real (real64), private :: m_dy
76+ ! ! Workspace array.
7677 contains
7778 procedure , public :: initialize = > pi_init
7879 procedure , public :: interpolate_value = > pi_raw_interp
@@ -468,7 +469,7 @@ function pi_raw_interp(this, x) result(rst)
468469
469470 ! Local Variables
470471 integer (int32) :: i, ind, m, ns, mm, jl, jlo
471- real (real64) :: den, dif, dift, ho, hp, w
472+ real (real64) :: den, dif, dift, ho, hp, w, dy
472473
473474 ! Initialization
474475 if (this% m_manager% method() == 1 ) then
@@ -512,12 +513,12 @@ function pi_raw_interp(this, x) result(rst)
512513 this% m_c(i) = ho * den
513514 end do
514515 if (2 * ns < mm - m) then
515- this % m_dy = this% m_c(ns + 1 )
516+ dy = this% m_c(ns + 1 )
516517 else
517- this % m_dy = this% m_d(ns)
518+ dy = this% m_d(ns)
518519 ns = ns - 1
519520 end if
520- rst = rst + this % m_dy
521+ rst = rst + dy
521522 end do
522523end function
523524
0 commit comments