You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1.0 KiB
35 lines
1.0 KiB
C Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
C of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
C NTESS, the U.S. Government retains certain rights in this software.
|
|
C
|
|
C See packages/seacas/LICENSE for details
|
|
|
|
SUBROUTINE SPLINE(X,Y,N,YP1,YPN,Y2, U)
|
|
DIMENSION X(N),Y(N),Y2(N),U(N)
|
|
IF (YP1.GT..99E30) THEN
|
|
Y2(1)=0.
|
|
U(1)=0.
|
|
ELSE
|
|
Y2(1)=-0.5
|
|
U(1)=(3./(X(2)-X(1)))*((Y(2)-Y(1))/(X(2)-X(1))-YP1)
|
|
ENDIF
|
|
DO 11 I=2,N-1
|
|
SIG=(X(I)-X(I-1))/(X(I+1)-X(I-1))
|
|
P=SIG*Y2(I-1)+2.
|
|
Y2(I)=(SIG-1.)/P
|
|
U(I)=(6.*((Y(I+1)-Y(I))/(X(I+1)-X(I))-(Y(I)-Y(I-1))
|
|
* /(X(I)-X(I-1)))/(X(I+1)-X(I-1))-SIG*U(I-1))/P
|
|
11 CONTINUE
|
|
IF (YPN.GT..99E30) THEN
|
|
QN=0.
|
|
UN=0.
|
|
ELSE
|
|
QN=0.5
|
|
UN=(3./(X(N)-X(N-1)))*(YPN-(Y(N)-Y(N-1))/(X(N)-X(N-1)))
|
|
ENDIF
|
|
Y2(N)=(UN-QN*U(N-1))/(QN*Y2(N-1)+1.)
|
|
DO 12 K=N-1,1,-1
|
|
Y2(K)=Y2(K)*Y2(K+1)+U(K)
|
|
12 CONTINUE
|
|
RETURN
|
|
END
|
|
|