summaryrefslogtreecommitdiff
path: root/Donjon/src/DETSPLI.f
diff options
context:
space:
mode:
authorstainer_t <thomas.stainer@oecd-nea.org>2025-09-08 13:48:49 +0200
committerstainer_t <thomas.stainer@oecd-nea.org>2025-09-08 13:48:49 +0200
commit7dfcc480ba1e19bd3232349fc733caef94034292 (patch)
tree03ee104eb8846d5cc1a981d267687a729185d3f3 /Donjon/src/DETSPLI.f
Initial commit from Polytechnique Montreal
Diffstat (limited to 'Donjon/src/DETSPLI.f')
-rw-r--r--Donjon/src/DETSPLI.f40
1 files changed, 40 insertions, 0 deletions
diff --git a/Donjon/src/DETSPLI.f b/Donjon/src/DETSPLI.f
new file mode 100644
index 0000000..93eaa70
--- /dev/null
+++ b/Donjon/src/DETSPLI.f
@@ -0,0 +1,40 @@
+*DECK DETSPLI
+ SUBROUTINE DETSPLI(X,Y,N,YP1,YPN,Y2)
+*
+*Parameters:
+* X
+* Y
+* N
+* YP1
+* YPN
+* Y2
+*
+ PARAMETER (NMAX=100)
+ DIMENSION X(N),Y(N),Y2(N),U(NMAX)
+ 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