A.2 Tridiagonal Solvers
441
c Forward elimination sweep
q(l)=-c(l)jb(l)
f(l)= f(l)jb(l)
do j =2, jmx
p= 1.0/( b(j)+a(j)*q(j-1) )
q ( j ) = - c ( j ) *p
f(j)=( f(j)-a(j)*f(j-1) )*p
end do
c Backward pass
do j=jmx-1,1,-1
f(j) =f(j)+q(j)*f(j+1)
end do
return
end
A.2.2
c
c
c
c
c
c
c
c
c
c
c
c
c
Code for a Periodic Tridiagonal Solver
subroutine tridiag_per(jmx,a,b,c,f,q ,s)
Solves a periodic tridiagonal system
Definition of the variables :
jmx
a
b
c
fq
s
dimension of all arrays
sub (lower) diagonal
center diagonal
super (upper) diagonal
right hand side
work array provided by ca1ling program
work array provided by ca1ling program
Output is in f; a, b, and c are unchanged
real a(*),b(*),c(*),f(*),q(*),S(*),p ,fmx
integer j,jmx
fmx=f (jmx)
441
c Forward elimination sweep
q(l)=-c(l)jb(l)
f(l)= f(l)jb(l)
do j =2, jmx
p= 1.0/( b(j)+a(j)*q(j-1) )
q ( j ) = - c ( j ) *p
f(j)=( f(j)-a(j)*f(j-1) )*p
end do
c Backward pass
do j=jmx-1,1,-1
f(j) =f(j)+q(j)*f(j+1)
end do
return
end
A.2.2
c
c
c
c
c
c
c
c
c
c
c
c
c
Code for a Periodic Tridiagonal Solver
subroutine tridiag_per(jmx,a,b,c,f,q ,s)
Solves a periodic tridiagonal system
Definition of the variables :
jmx
a
b
c
fq
s
dimension of all arrays
sub (lower) diagonal
center diagonal
super (upper) diagonal
right hand side
work array provided by ca1ling program
work array provided by ca1ling program
Output is in f; a, b, and c are unchanged
real a(*),b(*),c(*),f(*),q(*),S(*),p ,fmx
integer j,jmx
fmx=f (jmx)
