| [neq,iwt,rtol,atol,y,wt,rpar,ipar]=ddawts(neq,iwt,rtol,atol,y,wt,rpar,ipar); |
function [neq,iwt,rtol,atol,y,wt,rpar,ipar]=ddawts(neq,iwt,rtol,atol,y,wt,rpar,ipar);
%***BEGIN PROLOGUE DDAWTS
%***SUBSIDIARY
%***PURPOSE Set error weight vector for DDASSL.
%***LIBRARY SLATEC (DASSL)
%***TYPE doubleprecision (SDAWTS-S, DDAWTS-D)
%***AUTHOR Petzold, Linda R., (LLNL)
%***DESCRIPTION
%-----------------------------------------------------------------------
% THIS SUBROUTINE SETS THE ERROR WEIGHT VECTOR
% WT ACCORDING TO WT(I)=RTOL(I)*ABS(Y(I))+ATOL(I),
% I=1,-,N.
% RTOL AND ATOL ARE SCALARS IF IWT = 0,
% AND VECTORS IF IWT = 1.
%-----------------------------------------------------------------------
%***ROUTINES CALLED (NONE)
%***REVISION HISTORY (YYMMDD)
% 830315 DATE WRITTEN
% 901009 Finished conversion to SLATEC 4.0 format (F.N.Fritsch)
% 901019 Merged changes made by C. Ulrich with SLATEC 4.0 format.
% 901026 Added explicit declarations for all variables and minor
% cosmetic changes to prologue. (FNF)
%***end PROLOGUE DDAWTS
%
persistent atoli i rtoli ;
ipar_shape=size(ipar);ipar=reshape(ipar,1,[]);
rtol_shape=size(rtol);rtol=reshape(rtol,1,[]);
atol_shape=size(atol);atol=reshape(atol,1,[]);
y_shape=size(y);y=reshape(y,1,[]);
wt_shape=size(wt);wt=reshape(wt,1,[]);
rpar_shape=size(rpar);rpar=reshape(rpar,1,[]);
%
if isempty(i), i=0; end;
if isempty(atoli), atoli=0; end;
if isempty(rtoli), rtoli=0; end;
%
%***FIRST EXECUTABLE STATEMENT DDAWTS
rtoli = rtol(1);
atoli = atol(1);
for i = 1 : neq;
if( iwt~=0 )
rtoli = rtol(i);
atoli = atol(i);
end;
wt(i) = rtoli.*abs(y(i)) + atoli;
end; i = fix(neq+1);
%-----------end OF SUBROUTINE DDAWTS------------------------------------
ipar_shape=zeros(ipar_shape);ipar_shape(:)=ipar(1:numel(ipar_shape));ipar=ipar_shape;
rtol_shape=zeros(rtol_shape);rtol_shape(:)=rtol(1:numel(rtol_shape));rtol=rtol_shape;
atol_shape=zeros(atol_shape);atol_shape(:)=atol(1:numel(atol_shape));atol=atol_shape;
y_shape=zeros(y_shape);y_shape(:)=y(1:numel(y_shape));y=y_shape;
wt_shape=zeros(wt_shape);wt_shape(:)=wt(1:numel(wt_shape));wt=wt_shape;
rpar_shape=zeros(rpar_shape);rpar_shape(:)=rpar(1:numel(rpar_shape));rpar=rpar_shape;
end
%DECK DDCOR
|
|