*DECK SDASTP 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 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