Error using deval in pde toolbox

조회 수: 2(최근 30일)
Shengyue Shan
Shengyue Shan 2019년 9월 18일
답변: Ravi Kumar 2019년 9월 19일
Hello all,
I am having a problem with solving a highly non-linear problem using pde toolbox. I got an error as shown below,
Warning: Failure at t=1.307250e+00. Unable to meet integration tolerances without reducing the step size below the smallest value
allowed (3.552714e-15) at time t.
> In ode15s (line 668)
In pde.EquationModel/solveTimeDependent (line 104)
In pde.PDEModel/solvepde (line 54)
In SugarCreek_2D_Upgraded091419 (line 52)
Error using deval (line 132)
Attempting to evaluate the solution outside the interval [0.000000e+00, 1.307250e+00] where it is defined.
Error in pde.EquationModel/solveTimeDependent (line 105)
[y,yp] = deval(sol,tlist);
Error in pde.PDEModel/solvepde (line 54)
[u,dudt] = self.solveTimeDependent(coefstruct, u0, ut0, tlist, ...
Error in SugarCreek_2D_Upgraded091419 (line 52)
results = solvepde(model,tlist);
I used the debugger tool, and set the breakpoint at line 52 as shown in the error message, and set it pause at NaN or Inf, message as shown below was shown
NaN/Inf breakpoint hit for PDESolverOptions.m on line 75.
75 obj.ResidualNorm = Inf;
Part of the codes for this PDESolverOptions.m is as shown below
methods(Hidden=true, Access={?pde.EquationModel})
function obj=PDESolverOptions()
obj.AbsoluteTolerance = 1e-6;
obj.RelativeTolerance = 1e-3;
obj.ResidualTolerance = 1e-4;
obj.MaxIterations = 25;
obj.MinStep = 1/2^16;
obj.ResidualNorm = Inf;
obj.ReportStatistics = 'off';
end
function delete(obj)%#ok
end
end
And Line 75 is
obj.ResidualNorm = Inf;
Is there any way to solve this issue? Or are there any other places I should check?
Thank you very much!
Best regards,
SS

채택된 답변

Ravi Kumar
Ravi Kumar 2019년 9월 19일
Hi SS,
The warning:
Warning: Failure at t=1.307250e+00. Unable to meet integration tolerances without reducing the step size below the smallest value
allowed (3.552714e-15) at time t.
means ode integrater failed to solve the nonlinear problem. This could happen to many reasons, most significantly the initial conditions. Sometimes nonlinear problem would not converge to a solution. Just to ensure this is not happening due to modelling error, you might want to try a simpler case of the problem where you know solution exists.
Regards,
Ravi

추가 답변(0개)

Community Treasure Hunt

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

Start Hunting!

Translated by