GNU Octave 10.1.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
 
Loading...
Searching...
No Matches
ddatrp.f
Go to the documentation of this file.
1 SUBROUTINE ddatrp (X, XOUT, YOUT, YPOUT, NEQ, KOLD, PHI, PSI)
2C***BEGIN PROLOGUE DDATRP
3C***SUBSIDIARY
4C***PURPOSE Interpolation routine for DDASSL.
5C***LIBRARY SLATEC (DASSL)
6C***TYPE DOUBLE PRECISION (SDATRP-S, DDATRP-D)
7C***AUTHOR PETZOLD, LINDA R., (LLNL)
8C***DESCRIPTION
9C-----------------------------------------------------------------------
10C THE METHODS IN SUBROUTINE DDASTP USE POLYNOMIALS
11C TO APPROXIMATE THE SOLUTION. DDATRP APPROXIMATES THE
12C SOLUTION AND ITS DERIVATIVE AT TIME XOUT BY EVALUATING
13C ONE OF THESE POLYNOMIALS,AND ITS DERIVATIVE,THERE.
14C INFORMATION DEFINING THIS POLYNOMIAL IS PASSED FROM
15C DDASTP, SO DDATRP CANNOT BE USED ALONE.
16C
17C THE PARAMETERS ARE:
18C X THE CURRENT TIME IN THE INTEGRATION.
19C XOUT THE TIME AT WHICH THE SOLUTION IS DESIRED
20C YOUT THE INTERPOLATED APPROXIMATION TO Y AT XOUT
21C (THIS IS OUTPUT)
22C YPOUT THE INTERPOLATED APPROXIMATION TO YPRIME AT XOUT
23C (THIS IS OUTPUT)
24C NEQ NUMBER OF EQUATIONS
25C KOLD ORDER USED ON LAST SUCCESSFUL STEP
26C PHI ARRAY OF SCALED DIVIDED DIFFERENCES OF Y
27C PSI ARRAY OF PAST STEPSIZE HISTORY
28C-----------------------------------------------------------------------
29C***ROUTINES CALLED (NONE)
30C***REVISION HISTORY (YYMMDD)
31C 830315 DATE WRITTEN
32C 901009 Finished conversion to SLATEC 4.0 format (F.N.Fritsch)
33C 901019 Merged changes made by C. Ulrich with SLATEC 4.0 format.
34C 901026 Added explicit declarations for all variables and minor
35C cosmetic changes to prologue. (FNF)
36C***END PROLOGUE DDATRP
37C
38 INTEGER NEQ, KOLD
39 DOUBLE PRECISION X, XOUT, YOUT(*), YPOUT(*), PHI(NEQ,*), PSI(*)
40C
41 INTEGER I, J, KOLDP1
42 DOUBLE PRECISION C, D, GAMMA, TEMP1
43C
44C***FIRST EXECUTABLE STATEMENT DDATRP
45 koldp1=kold+1
46 temp1=xout-x
47 DO 10 i=1,neq
48 yout(i)=phi(i,1)
4910 ypout(i)=0.0d0
50 c=1.0d0
51 d=0.0d0
52 gamma=temp1/psi(1)
53 DO 30 j=2,koldp1
54 d=d*gamma+c/psi(j-1)
55 c=c*gamma
56 gamma=(temp1+psi(j-1))/psi(j)
57 DO 20 i=1,neq
58 yout(i)=yout(i)+c*phi(i,j)
5920 ypout(i)=ypout(i)+d*phi(i,j)
6030 CONTINUE
61 RETURN
62C
63C------END OF SUBROUTINE DDATRP------
64 END
subroutine ddatrp(x, xout, yout, ypout, neq, kold, phi, psi)
Definition ddatrp.f:2