X-Git-Url: http://gitweb.scilab.org/?p=scilab.git;a=blobdiff_plain;f=scilab%2Fmodules%2Fdifferential_equations%2Fsrc%2Ffortran%2Fddassl.f;h=decbb9d37dbb969384bbfeccf6b425936f472a54;hp=f53e6c56e9dc473efb23dba9f71587d976f909e6;hb=d51dee62b9a7525ebe8860dd2cf2cb2a554fce45;hpb=64786316e0991d61ac89763ed6606307e737b99b diff --git a/scilab/modules/differential_equations/src/fortran/ddassl.f b/scilab/modules/differential_equations/src/fortran/ddassl.f index f53e6c5..decbb9d 100644 --- a/scilab/modules/differential_equations/src/fortran/ddassl.f +++ b/scilab/modules/differential_equations/src/fortran/ddassl.f @@ -120,6 +120,11 @@ C CORRECTOR LOOP. C CALL RES(X,Y,YPRIME,DELTA,IRES,RPAR,IPAR) if(iero.ne.0) return +C IERROR indicates if RES had the right prototype + if(IERROR.ne.0) then + IDID=-12 + return + endif IF (IRES.LT.0) GO TO 430 C C @@ -1697,6 +1702,7 @@ C COMPUTE TSTOP, IF APPLICABLE C C COMPUTE INITIAL DERIVATIVE, UPDATING TN AND Y, IF APPLICABLE 340 IF (INFO(11) .EQ. 0) GO TO 350 + iero=0 CALL DDAINI(TN,Y,YPRIME,NEQ, * RES,JAC,HO,RWORK(LWT),IDID,RPAR,IPAR, * RWORK(LPHI),RWORK(LDELTA),RWORK(LE), @@ -1860,6 +1866,7 @@ C TEST H VS. HMAX IF (RH .GT. 1.0D0) H = H/RH 526 CONTINUE C + iero=0 CALL DDASTP(TN,Y,YPRIME,NEQ, * RES,JAC,H,RWORK(LWT),INFO(1),IDID,RPAR,IPAR, * RWORK(LPHI),RWORK(LDELTA),RWORK(LE), @@ -2420,6 +2427,11 @@ C MODIFIED NEWTON SCHEME. IRES = 0 iero = 0 CALL RES(X,Y,YPRIME,DELTA,IRES,RPAR,IPAR) +C IERROR indicates if RES had the right prototype + if(IERROR.ne.0) then + IDID=-11 + return + endif if(iero.ne.0) return IF (IRES .LT. 0) GO TO 380 C