How to make PDE toolbox continue running for all iterations?

Hi, I have managed to get the PDE toolbox run in loop. However after each iteration the PDE toolbox gives message to save changes or cancel before jumping on to the next iteration. I don't want this dialogue box to appear as I have to click through it everytime. Is there to automatically run loop itself without human intervention. Any help much appreciated. Below is the code:
for j = 1:5
w = j*2;
wstring = num2str(w);
sinstring = strcat('sin(',wstring,'*t)')
[pde_fig,ax]=pdeinit;
pdetool('appl_cb',9);
set(ax,'DataAspectRatio',[1 2 1]);
set(ax,'PlotBoxAspectRatio',[1 0.66666666666666663 1.3333333333333333]);
set(ax,'XLim',[0 1.5]);
set(ax,'YLim',[0 2]);
set(ax,'XTickMode','auto');
set(ax,'YTickMode','auto');
% Geometry description:
pderect([0 1 1 0],'R1');
set(findobj(get(pde_fig,'Children'),'Tag','PDEEval'),'String','R1')
pdetool('changemode',0)
pdesetbd(4,...
'neu',...
1,...
'0',...
sinstring)
pdesetbd(3,...
'neu',...
1,...
'0',...
'0')
pdesetbd(2,...
'neu',...
1,...
'0',...
'0')
pdesetbd(1,...
'neu',...
1,...
'0',...
'0')
% Mesh generation:
setappdata(pde_fig,'Hgrad',1.3);
setappdata(pde_fig,'refinemethod','regular');
setappdata(pde_fig,'jiggle',char('on','mean',''));
setappdata(pde_fig,'MesherVersion','preR2013a');
pdetool('initmesh')
pdetool('refine')
% PDE coefficients:
pdeseteq(2,...
'1.0',...
'1.0',...
'(0)+(1.0).*(0.0)',...
'(1.0).*(1.0)',...
'(0:0.01:20)',...
'0.0',...
'0.0',...
'[0 100]')
setappdata(pde_fig,'currparam',...
['1.0';...
'1.0';...
'1.0';...
'0 ';...
'1.0';...
'0.0'])
% Solve parameters:
setappdata(pde_fig,'solveparam',...
char('0','1362','10','pdeadworst',...
'0.5','longest','0','1E-4','','fixed','Inf'))
% Plotflags and user data strings:
setappdata(pde_fig,'plotflags',[1 1 1 1 1 1 1 1 0 0 0 2001 1 0 0 0 0 1]);
setappdata(pde_fig,'colstring','');
setappdata(pde_fig,'arrowstring','');
setappdata(pde_fig,'deformstring','');
setappdata(pde_fig,'heightstring','');
% Solve PDE:
pdetool('solve')
end

 Accepted Answer

I think that you would do yourself a favor by learning to use command-line functions instead of relying on the PDE app. Depending on your MATLAB version, you might be able to use the following instead of your current app-based script, at least in part.
model = createpde();
gd = [3,4,0,1,1,0,0,0,1,1]'; % square geometry
dl = decsg(gd);
geometryFromEdges(model,dl); % include geometry
generateMesh(model,'Hmax',0.1);
specifyCoefficients(model,'m',0,'d',1,'c',2,'a',1,'f',0);
setInitialConditions(model,0);
tlist = 0:0.01:100; % do you really need such fine spacing?
for j = 1:5
gfun = @(region,state)sin(2*j*state.time); % one nondefault condition
applyBoundaryCondition(model,'neumann','edge',4,'g',gfun);
result{j}=solvepde(model,tlist); % save all results in a cell array
delete(model.BoundaryConditions); % prepare for next loop
end
To see a plot of the first loop at the 500th time point:
pdeplot(model,'xydata',result{1}.NodalSolution(:,500))
Good luck,
Alan Weiss
MATLAB mathematical toolbox documentation

5 Comments

Hi Alan, Many thanks for prompt reply and I would definitely try doing as you explained. However, I would really like to know if there is another quick fix to this problem.
Well, you could edit the file in toolbox/pde/private named pde_exit.m and comment out everything. But that could get you in trouble in the future when you exit a PDE app session and forget to save everything.
Alan Weiss
MATLAB mathematical toolbox documentation
Hi Alan. Just a question is it possible to give command save, no or cancel through the script without me clicking it?
I don't know how to do that, sorry.
Alan Weiss
MATLAB mathematical toolbox documentation
Looks like this is an old post, but you can just use
close all force

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!