Skip to content

Commit

Permalink
explicit estimation being tested
Browse files Browse the repository at this point in the history
  • Loading branch information
GHilmarG committed Aug 4, 2017
1 parent 7030a74 commit bdaf359
Show file tree
Hide file tree
Showing 3 changed files with 742 additions and 0 deletions.
64 changes: 64 additions & 0 deletions ExplicitEstimation2.m
@@ -0,0 +1,64 @@
function varargout=ExplicitEstimation2(dt,dtRatio,Itime,extrapolation,varargin)

% varargout=ExplicitEstimation(dt,dtRatio,Itime,varargin)
% explicit estimate using second-order variable time step Adams-Bashforth
% http://lucan.me.jhu.edu/wiki/index.php/Second-order_variable_time_step_Adams-Bashforth_method
%


if isempty(extrapolation)
extrapolation='auto';
end


if isequal(extrapolation,'auto')
if Itime==1
extrapolation='constant';
elseif Itime==2
extrapolation='linear';
elseif Itime >= 3 % second-order variable time step Adams-Bashforth
extrapolation='quadratic';
end
else
if Itime==2 && isequal(extrapolation,'quadratic')
extrapolation='linear';
end
end

if Itime==1
extrapolation='constant';
end

nInputs=nargin-4;
nOutputs = nargout;
varargout = cell(1,nOutputs);

if nInputs~=3*nOutputs
error(' wrong number of inputs ')
end

switch extrapolation

case 'constant'


for I=1:nOutputs
varargout{I}=varargin{1+3*(I-1)};
end

case 'linear'

for I=1:nOutputs
varargout{I}=varargin{1+3*(I-1)}+dt*varargin{2+3*(I-1)};
end

case 'quadratic'

for I=1:nOutputs
varargout{I}=varargin{1+3*(I-1)}+dt*((1+0.5*dtRatio)*varargin{2+3*(I-1)}-0.5*dtRatio*varargin{3+3*(I-1)});
end


end

end
57 changes: 57 additions & 0 deletions TestExplicitEstimate.m
@@ -0,0 +1,57 @@


F=ExplicitEstimationForUaFields(CtrlVar,F,F0,Fm1);


[F1.ub,F1.vb,F1.ud,F1.vd,F1.h]=...
ExplicitEstimation(CtrlVar.dt,CtrlVar.dtRatio,CtrlVar.CurrentRunStepNumber,...
F0.ub,F0.dubdt,Fm1.dubdt,...
F0.vb,F0.dvbdt,Fm1.dvbdt,...
F0.ud,F0.duddt,Fm1.duddt,...
F0.vd,F0.dvddt,Fm1.dvddt,...
F0.h,F0.dhdt,Fm1.dhdt);




%%
clear all
fVector=[1 ;2 ;3 ;4 ; 5 ; 6 ] ;

t= [1 ; 1.2 ; 3 ; 5.09999 ; 5.1 ; 5.7 ; 7 ; 8.5 ; 9.3] ;
t= [1 ; 1.2 ; 3 ; 5.0 ; 5.1 ; 5.10000001 ; 5.1002 ; 8.5 ; 9.3] ;
fVector=t.^2; dfdtExact=2*t;
%fVector=sin(t*2*pi/10/2);

%fVector=t;

dfdtm1=[]; dfdt=[]; dtm1=[]; dtRatio=[];

Itime=6;

dt=t(Itime+1)-t(Itime);
f0=fVector(Itime) ;
if Itime>1
dfdt=(fVector(Itime)-fVector(Itime-1))./(t(Itime)-t(Itime-1));
dtm1=t(Itime)-t(Itime-1);
f1m=fVector(Itime-1);
end

if Itime>2
dfdtm1=(fVector(Itime-1)-fVector(Itime-2))./(t(Itime-1)-t(Itime-2));
end

if Itime>1
dtRatio=dt/dtm1;
end

dfdt=dfdtExact(Itime); dfdtm1=dfdtExact(Itime-1);


extrapolation='constant';
extrapolation='linear';
extrapolation='quadratic';

f1=ExplicitEstimation2(dt,dtRatio,Itime,extrapolation,f0,dfdt,dfdtm1);

fprintf('\n\n f1=%g \t %g\n',f1,fVector(Itime+1))

0 comments on commit bdaf359

Please sign in to comment.