sdastp.f
SUBROUTINE SDASTP (X, Y, YPRIME, NEQ, RES, JAC, H, WT, JSTART,
* IDID, RPAR, IPAR, PHI, DELTA, E, WM, IWM, ALPHA, BETA, GAMMA,
* PSI, SIGMA, CJ, CJOLD, HOLD, S, HMIN, UROUND, IPHASE, JCALC, K,
* KOLD, NS, NONNEG, NTEMP)
C***BEGIN PROLOGUE SDASTP
....
....
Warning: this routine is not intended to be user-callable.
....
....
C***SUBSIDIARY
C***PURPOSE Perform one step of the SDASSL integration.
C***LIBRARY SLATEC (DASSL)
C***TYPE SINGLE PRECISION (SDASTP-S, DDASTP-D)
C***AUTHOR Petzold, Linda R., (LLNL)
C***DESCRIPTION
C-----------------------------------------------------------------------
C SDASTP SOLVES A SYSTEM OF DIFFERENTIAL/
C ALGEBRAIC EQUATIONS OF THE FORM
C G(X,Y,YPRIME) = 0, FOR ONE STEP (NORMALLY
C FROM X TO X+H).
C
C THE METHODS USED ARE MODIFIED DIVIDED
C DIFFERENCE,FIXED LEADING COEFFICIENT
C FORMS OF BACKWARD DIFFERENTIATION
C FORMULAS. THE CODE ADJUSTS THE STEPSIZE
C AND ORDER TO CONTROL THE LOCAL ERROR PER
C STEP.
C
C
C THE PARAMETERS REPRESENT
C X -- INDEPENDENT VARIABLE
C Y -- SOLUTION VECTOR AT X
C YPRIME -- DERIVATIVE OF SOLUTION VECTOR
C AFTER SUCCESSFUL STEP
C NEQ -- NUMBER OF EQUATIONS TO BE INTEGRATED
C RES -- EXTERNAL USER-SUPPLIED SUBROUTINE
C TO EVALUATE THE RESIDUAL. THE CALL IS
C CALL RES(X,Y,YPRIME,DELTA,IRES,RPAR,IPAR)
C X,Y,YPRIME ARE INPUT. DELTA IS OUTPUT.
C ON INPUT, IRES=0. RES SHOULD ALTER IRES ONLY
C IF IT ENCOUNTERS AN ILLEGAL VALUE OF Y OR A
C STOP CONDITION. SET IRES=-1 IF AN INPUT VALUE
C OF Y IS ILLEGAL, AND SDASTP WILL TRY TO SOLVE
C THE PROBLEM WITHOUT GETTING IRES = -1. IF
C IRES=-2, SDASTP RETURNS CONTROL TO THE CALLING
C PROGRAM WITH IDID = -11.
C JAC -- EXTERNAL USER-SUPPLIED ROUTINE TO EVALUATE
C THE ITERATION MATRIX (THIS IS OPTIONAL)
C THE CALL IS OF THE FORM
C CALL JAC(X,Y,YPRIME,PD,CJ,RPAR,IPAR)
C PD IS THE MATRIX OF PARTIAL DERIVATIVES,
C PD=DG/DY+CJ*DG/DYPRIME
C H -- APPROPRIATE STEP SIZE FOR NEXT STEP.
C NORMALLY DETERMINED BY THE CODE
C WT -- VECTOR OF WEIGHTS FOR ERROR CRITERION.
C JSTART -- INTEGER VARIABLE SET 0 FOR
C FIRST STEP, 1 OTHERWISE.
C IDID -- COMPLETION CODE WITH THE FOLLOWING MEANINGS:
C IDID= 1 -- THE STEP WAS COMPLETED SUCCESSFULLY
C IDID=-6 -- THE ERROR TEST FAILED REPEATEDLY
C IDID=-7 -- THE CORRECTOR COULD NOT CONVERGE
C IDID=-8 -- THE ITERATION MATRIX IS SINGULAR
C IDID=-9 -- THE CORRECTOR COULD NOT CONVERGE.
C THERE WERE REPEATED ERROR TEST
C FAILURES ON THIS STEP.
C IDID=-10-- THE CORRECTOR COULD NOT CONVERGE
C BECAUSE IRES WAS EQUAL TO MINUS ONE
C IDID=-11-- IRES EQUAL TO -2 WAS ENCOUNTERED,
C AND CONTROL IS BEING RETURNED TO
C THE CALLING PROGRAM
C RPAR,IPAR -- REAL AND INTEGER PARAMETER ARRAYS THAT
C ARE USED FOR COMMUNICATION BETWEEN THE
C CALLING PROGRAM AND EXTERNAL USER ROUTINES
C THEY ARE NOT ALTERED BY SDASTP
C PHI -- ARRAY OF DIVIDED DIFFERENCES USED BY
C SDASTP. THE LENGTH IS NEQ*(K+1),WHERE
C K IS THE MAXIMUM ORDER
C DELTA,E -- WORK VECTORS FOR SDASTP OF LENGTH NEQ
C WM,IWM -- REAL AND INTEGER ARRAYS STORING
C MATRIX INFORMATION SUCH AS THE MATRIX
C OF PARTIAL DERIVATIVES,PERMUTATION
C VECTOR, AND VARIOUS OTHER INFORMATION.
C
C THE OTHER PARAMETERS ARE INFORMATION
C WHICH IS NEEDED INTERNALLY BY SDASTP TO
C CONTINUE FROM STEP TO STEP.
C
C-----------------------------------------------------------------------
C***ROUTINES CALLED SDAJAC, SDANRM, SDASLV, SDATRP
C***REVISION HISTORY (YYMMDD)
C 830315 DATE WRITTEN
C 901009 Finished conversion to SLATEC 4.0 format (F.N.Fritsch)
C 901019 Merged changes made by C. Ulrich with SLATEC 4.0 format.
C 901026 Added explicit declarations for all variables and minor
C cosmetic changes to prologue. (FNF)
C***END PROLOGUE SDASTP