summaryrefslogtreecommitdiff
path: root/Donjon/src/DETSPL3.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/DETSPL3.f
Initial commit from Polytechnique Montreal
Diffstat (limited to 'Donjon/src/DETSPL3.f')
-rw-r--r--Donjon/src/DETSPL3.f94
1 files changed, 94 insertions, 0 deletions
diff --git a/Donjon/src/DETSPL3.f b/Donjon/src/DETSPL3.f
new file mode 100644
index 0000000..7327366
--- /dev/null
+++ b/Donjon/src/DETSPL3.f
@@ -0,0 +1,94 @@
+*DECK DETSPL3
+ SUBROUTINE DETSPL3(XCNTR ,YCNTR ,ZCNTR ,
+ > NXMAX ,NYMAX ,NZMAX ,
+ > FXYZ ,FXY ,FDUMMY,
+ > F2X ,F2Y ,F2Z ,
+ > XINT ,YINT ,ZINT ,
+ > FP1 ,FP2 ,
+ > FYINT ,FZINT ,FINTRP,
+ > N1 ,N2 ,N3 ,ITYPE)
+*
+*-----------------------------------------------------------------------
+*
+*Purpose:
+* Perform spline interpolation.
+*
+*Copyright:
+* Copyright (C) 2010 Ecole Polytechnique de Montreal.
+*
+*Author(s):
+* E. Varin
+*
+*
+*Parameters:
+* XCNTR
+* YCNTR
+* ZCNTR
+* NXMAX
+* NYMAX
+* NZMAX
+* FXYZ
+* FXY
+* FDUMMY
+* F2X
+* F2Y
+* F2Z
+* XINT
+* YINT
+* ZINT
+* FP1
+* FP2
+* FYINT
+* FZINT
+* FINTRP
+* N1
+* N2
+* N3
+* ITYPE
+*
+*-----------------------------------------------------------------------
+*
+ REAL*4 XCNTR(NXMAX) ,YCNTR(NYMAX) ,ZCNTR(NZMAX),
+ > FXYZ(N1,N2,N3),FXY(NXMAX,NYMAX) ,
+ > FYINT(NYMAX) ,FZINT(NZMAX) ,
+ > F2X(NXMAX) ,F2Y(NYMAX) ,F2Z(NZMAX),
+ > FDUMMY(NXMAX)
+*----
+* INTERPOLATE IN TWO DIMENSIONS AT XINT,YINT FOR EACH Z PLANE
+*----
+ DO 10 K=1,NZMAX
+
+ DO 20 J=1,NXMAX
+ DO 30 I=1,NYMAX
+
+ IF (ITYPE.EQ.1) THEN
+ FXY(J,I) = FXYZ(J,I,K)
+ ELSE IF (ITYPE.EQ.2) THEN
+ FXY(J,I) = FXYZ(K,J,I)
+ ELSE IF (ITYPE.EQ.3) THEN
+ FXY(J,I) = FXYZ(I,K,J)
+ ELSE
+ CALL XABORT('DETSPL3: ERROR IN SPLIN3')
+ ENDIF
+
+ 30 CONTINUE
+ 20 CONTINUE
+
+ CALL DETSPL2(XCNTR,YCNTR,NXMAX ,NYMAX ,FXY,
+ > FP1 ,FP2 ,F2X ,F2Y ,FDUMMY,
+ > XINT ,YINT ,FYINT ,FXYINT)
+
+ FZINT(K) = FXYINT
+
+ 10 CONTINUE
+*----
+* CALCULATE SECOND DERIVATIVE ALONG Z AT XINT,YINT
+*----
+ CALL DETSPLI(ZCNTR,FZINT,NZMAX,FP1,FP2,F2Z)
+*----
+* INTERPOLATE ALONG Z FOR XINT,YINT
+*----
+ CALL DETSPLI2(ZCNTR,FZINT,F2Z,NZMAX,ZINT,FINTRP)
+
+ RETURN
+ END