| [df,neq,t,y,tout,rtol,atol,idid,ypout,yh,yh1,ewt,savf,acor,wm,iwm,djac,intout,tstop,tolfac,delsgn,rpar,ipar]=dlsod(df,neq,t,y,tout,rtol,atol,idid,ypout,yh,yh1,ewt,savf,acor,wm,iwm,djac,intout,tstop,tolfac,delsgn,rpar,ipar); |
function [df,neq,t,y,tout,rtol,atol,idid,ypout,yh,yh1,ewt,savf,acor,wm,iwm,djac,intout,tstop,tolfac,delsgn,rpar,ipar]=dlsod(df,neq,t,y,tout,rtol,atol,idid,ypout,yh,yh1,ewt,savf,acor,wm,iwm,djac,intout,tstop,tolfac,delsgn,rpar,ipar);
%***BEGIN PROLOGUE DLSOD
%***SUBSIDIARY
%***PURPOSE Subsidiary to DDEBDF
%***LIBRARY SLATEC
%***TYPE doubleprecision (LSOD-S, DLSOD-D)
%***AUTHOR (UNKNOWN)
%***DESCRIPTION
%
% DDEBDF merely allocates storage for DLSOD to relieve the user of
% the inconvenience of a long call list. Consequently DLSOD is used
% as described in the comments for DDEBDF .
%
%***SEE ALSO DDEBDF
%***ROUTINES CALLED D1MACH, DHSTRT, DINTYD, DSTOD, DVNRMS, XERMSG
%***COMMON BLOCKS DDEBD1
%***REVISION HISTORY (YYMMDD)
% 820301 DATE WRITTEN
% 890531 Changed all specific intrinsics to generic. (WRB)
% 890831 Modified array declarations. (WRB)
% 891214 Prologue converted to Version 4.0 format. (BAB)
% 900328 Added TYPE section. (WRB)
% 900510 Convert XERRWV calls to XERMSG calls. (RWC)
%***end PROLOGUE DLSOD
%
persistent absdel big del dt firstCall ha intflg k l ltol maxnum natolp nrtolp tol xern1 xern3 xern4 ; if isempty(firstCall),firstCall=1;end;
global ddebd1_23; if isempty(ddebd1_23), ddebd1_23=0; end;
global ddebd1_18; if isempty(ddebd1_18), ddebd1_18=0; end;
global ddebd1_25; if isempty(ddebd1_25), ddebd1_25=0; end;
global ddebd1_20; if isempty(ddebd1_20), ddebd1_20=0; end;
global ddebd1_22; if isempty(ddebd1_22), ddebd1_22=0; end;
global ddebd1_11; if isempty(ddebd1_11), ddebd1_11=0; end;
if isempty(intflg), intflg=0; end;
global ddebd1_24; if isempty(ddebd1_24), ddebd1_24=zeros(1,6); end;
global ddebd1_10; if isempty(ddebd1_10), ddebd1_10=0; end;
global ddebd1_19; if isempty(ddebd1_19), ddebd1_19=0; end;
global ddebd1_21; if isempty(ddebd1_21), ddebd1_21=0; end;
global ddebd1_26; if isempty(ddebd1_26), ddebd1_26=0; end;
if isempty(k), k=0; end;
global ddebd1_27; if isempty(ddebd1_27), ddebd1_27=0; end;
global ddebd1_17; if isempty(ddebd1_17), ddebd1_17=0; end;
if isempty(l), l=0; end;
global ddebd1_14; if isempty(ddebd1_14), ddebd1_14=0; end;
global ddebd1_28; if isempty(ddebd1_28), ddebd1_28=0; end;
global ddebd1_13; if isempty(ddebd1_13), ddebd1_13=0; end;
global ddebd1_15; if isempty(ddebd1_15), ddebd1_15=0; end;
if isempty(ltol), ltol=0; end;
global ddebd1_16; if isempty(ddebd1_16), ddebd1_16=0; end;
global ddebd1_12; if isempty(ddebd1_12), ddebd1_12=0; end;
if isempty(maxnum), maxnum=0; end;
global ddebd1_31; if isempty(ddebd1_31), ddebd1_31=0; end;
global ddebd1_29; if isempty(ddebd1_29), ddebd1_29=0; end;
global ddebd1_30; if isempty(ddebd1_30), ddebd1_30=0; end;
global ddebd1_32; if isempty(ddebd1_32), ddebd1_32=0; end;
if isempty(natolp), natolp=0; end;
global ddebd1_35; if isempty(ddebd1_35), ddebd1_35=0; end;
global ddebd1_36; if isempty(ddebd1_36), ddebd1_36=0; end;
global ddebd1_33; if isempty(ddebd1_33), ddebd1_33=0; end;
global ddebd1_37; if isempty(ddebd1_37), ddebd1_37=0; end;
if isempty(nrtolp), nrtolp=0; end;
global ddebd1_34; if isempty(ddebd1_34), ddebd1_34=0; end;
if isempty(absdel), absdel=0; end;
if isempty(big), big=0; end;
if isempty(del), del=0; end;
if isempty(dt), dt=0; end;
global ddebd1_3; if isempty(ddebd1_3), ddebd1_3=0; end;
global ddebd1_4; if isempty(ddebd1_4), ddebd1_4=0; end;
if isempty(ha), ha=0; end;
global ddebd1_5; if isempty(ddebd1_5), ddebd1_5=0; end;
global ddebd1_6; if isempty(ddebd1_6), ddebd1_6=0; end;
global ddebd1_7; if isempty(ddebd1_7), ddebd1_7=0; end;
global ddebd1_2; if isempty(ddebd1_2), ddebd1_2=zeros(1,210); end;
if isempty(tol), tol=0; end;
global ddebd1_1; if isempty(ddebd1_1), ddebd1_1=0; end;
global ddebd1_9; if isempty(ddebd1_9), ddebd1_9=0; end;
global ddebd1_8; if isempty(ddebd1_8), ddebd1_8=0; end;
if isempty(xern1), xern1=repmat(' ',1,8); end;
if isempty(xern3), xern3=repmat(' ',1,16); end;
if isempty(xern4), xern4=repmat(' ',1,16); end;
%
y_shape=size(y);y=reshape(y,1,[]);
ypout_shape=size(ypout);ypout=reshape(ypout,1,[]);
yh_orig=yh;yh_shape=[neq,6];yh=reshape([yh_orig(1:min(prod(yh_shape),numel(yh_orig))),zeros(1,max(0,prod(yh_shape)-numel(yh_orig)))],yh_shape);
yh1_shape=size(yh1);yh1=reshape(yh1,1,[]);
ewt_shape=size(ewt);ewt=reshape(ewt,1,[]);
savf_shape=size(savf);savf=reshape(savf,1,[]);
acor_shape=size(acor);acor=reshape(acor,1,[]);
wm_shape=size(wm);wm=reshape(wm,1,[]);
iwm_shape=size(iwm);iwm=reshape(iwm,1,[]);
rtol_shape=size(rtol);rtol=reshape(rtol,1,[]);
atol_shape=size(atol);atol=reshape(atol,1,[]);
rpar_shape=size(rpar);rpar=reshape(rpar,1,[]);
ipar_shape=size(ipar);ipar=reshape(ipar,1,[]);
%
%
% common :: ;
%% common /ddebd1/ told , rowns(210) , el0 , h , hmin , hmxi , hu ,x , u , iquit , init , lyh , lewt , lacor ,lsavf , lwm , ksteps , ibegin , itol , iinteg ,itstop , ijac , iband , iowns(6) , ier , jstart ,kflag , ldum , meth , miter , maxord , n , nq ,nst , nfe , nje , nqu;
%% common /ddebd1/ ddebd1_1 , ddebd1_2(210) , ddebd1_3 , ddebd1_4 , ddebd1_5 , ddebd1_6 , ddebd1_7 ,ddebd1_8 , ddebd1_9 , ddebd1_10 , ddebd1_11 , ddebd1_12 , ddebd1_13 , ddebd1_14 ,ddebd1_15 , ddebd1_16 , ddebd1_17 , ddebd1_18 , ddebd1_19 , ddebd1_20 ,ddebd1_21 , ddebd1_22 , ddebd1_23 , ddebd1_24(6) , ddebd1_25 , ddebd1_26 ,ddebd1_27 , ddebd1_28 , ddebd1_29 , ddebd1_30 , ddebd1_31 , ddebd1_32 , ddebd1_33 ,ddebd1_34 , ddebd1_35 , ddebd1_36 , ddebd1_37;
%
%
% ..................................................................
%
% THE EXPENSE OF SOLVING THE PROBLEM IS MONITORED BY COUNTING THE
% NUMBER OF STEPS ATTEMPTED. WHEN THIS EXCEEDS MAXNUM, THE
% COUNTER IS RESET TO ZERO AND THE USER IS INFORMED ABOUT POSSIBLE
% EXCESSIVE WORK.
%
if firstCall, maxnum=[500]; end;
firstCall=0;
%
% ..................................................................
%
%***FIRST EXECUTABLE STATEMENT DLSOD
[df,neq,t,y,tout,rtol,atol,idid,ypout,yh,yh1,ewt,savf,acor,wm,iwm,djac,intout,tstop,tolfac,delsgn,rpar,ipar]=lsod(df,neq,t,y,tout,rtol,atol,idid,ypout,yh,yh1,ewt,savf,acor,wm,iwm,djac,intout,tstop,tolfac,delsgn,rpar,ipar);
end
|
|