1 SUBROUTINE interp_par(xnew, xold, scalxc, nsnew, nsold)
2 USE vmec_main,
ONLY: dp, rprec, mnsize
3 USE vmec_params,
ONLY: ntmax
4 USE vmec_persistent,
ONLY: ixm
5 USE parallel_include_module
12 REAL(rprec),
DIMENSION(mnsize,nsnew,3*ntmax),
INTENT(out) :: xnew
13 REAL(rprec),
DIMENSION(mnsize,nsnew,3*ntmax),
INTENT(in) ::
15 REAL(rprec),
DIMENSION(mnsize,nsold,3*ntmax) :: xold
19 REAL(rprec),
PARAMETER :: zero=0, one=1
23 INTEGER :: ntype, js, js1, js2, neqs2_old
24 REAL(rprec) :: hsold, sj, s1, xint
26 IF (nsold .le. 0)
RETURN
27 hsold = one/(nsold - 1)
36 WHERE (mod(ixm(:mnsize),2) .eq. 1)
37 xold(:,1,ntype) = 2*xold(:,2,ntype) - xold(:,3,ntype)
41 sj = real(js - 1,rprec)/(nsnew - 1)
42 js1 = 1 + ((js - 1)*(nsold - 1))/(nsnew - 1)
43 js2 = min(js1 + 1,nsold)
45 xint = (sj - s1)/hsold
48 xnew(:,js,ntype) = ((one - xint)*xold(:,js1,ntype) +
49 & xint*xold(:,js2,ntype))/scalxc(:,js,1)
53 WHERE (mod(ixm(:mnsize),2) .eq. 1)
59 END SUBROUTINE interp_par
61 SUBROUTINE interp(xnew, xold, scalxc, nsnew, nsold)
62 USE vmec_main,
ONLY: dp, rprec, mnsize
63 USE vmec_params,
ONLY: ntmax
64 USE vmec_persistent,
ONLY: ixm
65 USE parallel_include_module
71 REAL(rprec),
DIMENSION(nsnew,mnsize,3*ntmax),
INTENT(out) :: xnew
72 REAL(rprec),
DIMENSION(nsnew,mnsize,3*ntmax),
INTENT(in) ::
74 REAL(rprec),
DIMENSION(nsold,mnsize,3*ntmax) :: xold
78 REAL(rprec),
PARAMETER :: zero=0, one=1
82 INTEGER :: ntype, js, js1, js2, neqs2_old
83 REAL(rprec) :: hsold, sj, s1, xint
86 IF (nsold .le. 0)
RETURN
87 hsold = one/(nsold - 1)
97 WHERE (mod(ixm(:mnsize),2) .eq. 1)
98 xold(1,:,ntype) = 2*xold(2,:,ntype) - xold(3,:,ntype)
102 sj = real(js - 1,rprec)/(nsnew - 1)
103 js1 = 1 + ((js - 1)*(nsold - 1))/(nsnew - 1)
104 js2 = min(js1 + 1,nsold)
106 xint = (sj - s1)/hsold
108 xint = max(zero,xint)
109 xnew(js,:,ntype) = ((one - xint)*xold(js1,:,ntype) +
110 & xint*xold(js2,:,ntype))/scalxc(js,:,1)
114 WHERE (mod(ixm(:mnsize),2) .eq. 1)
120 END SUBROUTINE interp