From 7dfcc480ba1e19bd3232349fc733caef94034292 Mon Sep 17 00:00:00 2001 From: stainer_t Date: Mon, 8 Sep 2025 13:48:49 +0200 Subject: Initial commit from Polytechnique Montreal --- Donjon/src/DETSPL3.f | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 Donjon/src/DETSPL3.f (limited to 'Donjon/src/DETSPL3.f') 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 -- cgit v1.2.3