Message Boards Message Boards

Abort time evaluation in package and report the current result

GROUPS:

This is the same question I asked in StackExchange, I am really trying to find a solution :) https://mathematica.stackexchange.com/questions/171247/abort-time-evaluation-in-package-and-report-the-current-result

I am doing a time-dependent calculation and I would like to have the option to stop the calculation but obtain the current (last) result. Generally, I do some groundwork as what can be done before asking a question but this time I don't even know where to start. I wrote the "toy" version of my problem.

Here is the user interface that I would like to insert the "ABORT" button. and the "time-dependent" package.

Get[FileNameJoin[{NotebookDirectory[EvaluationNotebook[]], 
"AbortCal.wl"}]];

Panel[Framed[
 DynamicModule[{tfinal = 100}, 
 Column[{Style["Compute", "Subsection"] ,
 Row[{Style["Final Time ", 12, Blue], 
   InputField[Dynamic[tfinal]]}, Spacer[5]],
 Button[Style["Compute", Green, Bold], 
  Res = AbortCal`MainAbortCal[tfinal]; Plt = Res[[1]]; 
  a = Res[[2]];, Method -> "Queued"],
 Row[{Button["Stop", Interrupt[]; Print[Dynamic[a]]]}],

 Row[{Style["Plot  ", 12, Red], 
   InputField[Dynamic[Plt], FieldSize -> {50, 15}, 
    Enabled -> False, BaseStyle -> {12}]}, Spacer[15]]
     }],

 Initialization :> (
 Get[FileNameJoin[{NotebookDirectory[EvaluationNotebook[]], 
 "AbortCal.wl"}]];)], Background -> Lighter[Gray, .6]]]

And the package is

BeginPackage["AbortCal`"];
SetOptions[$FrontEnd, "ClearEvaluationQueueOnKernelQuit" -> False]

MainAbortCal::usage=" ";
Begin["`Private`"];
$MaxExtraPrecision=\[Infinity];

MainAbortCal[tfinal_]:=Module[{a},

a=ConstantArray[1, {50, 50}];

Do[a=a+1; Pause[2];,{i,tfinal}];
plta=ListPlot3D[a,ImageSize->Full];

Return[{plta,a}]];
End[];
SetAttributes[{MainAbortCal},{ReadProtected,Protected,Locked}];
SetOptions[$FrontEnd, "ClearEvaluationQueueOnKernelQuit" -> False]
EndPackage[];

Ideally I would like to get the plot but I would be happy even if I get the current "a" matrix.

POSTED BY: Erdem Uguz
Answer
3 months ago

Group Abstract Group Abstract