Re: Button operation that indicates start and finish of simulation

• To: mathgroup at smc.vnet.net
• Subject: [mg126644] Re: Button operation that indicates start and finish of simulation
• From: A Retey <awnl at gmx-topmail.de>
• Date: Mon, 28 May 2012 05:11:21 -0400 (EDT)
• Delivered-to: l-mathgroup@mail-archive0.wolfram.com
• References: <jpspc2\$hc5\$1@smc.vnet.net>

```Am 27.05.2012 10:41, schrieb Hugh Goyder:
> In a notebook with many dynamic modules I have a long simulation which I start with a button.  I would like to give an indication that the simulation is starting and also when it is finished. Below, in a toy example,  I attempt to use a simple message and also an EvaluationMonitor. Both only give results when the simulation is finished. What don't I understand and how do I fix this? Many thanks.
>
> ClearAll[LongSimulation]
> LongSimulation[] :=
>   TimeConstrained[NDSolve[{Derivative[2][x][t] + x[t] == 0,
>           x[0] == 1, Derivative[1][x][0] == 0}, x, {t, 0, 100000*Pi},
>         MaxSteps ->  Infinity, Method ->  {"Projection", "Invariants" ->
>               {x[t]^2 + Derivative[1][x][t]^2}},
>     EvaluationMonitor :>  k++], 3]
>
> k=0;
>
> DynamicModule[{message = " "},
>     Column[{Button["Start Simulation", message = "Starting Simulation";
>            LongSimulation[]; message = "Simulation Finished"],
>     Dynamic[message],
>         Dynamic[k]}]]
>
This should work:

DynamicModule[{message = " "},
Column[{
Button["Start Simulation",
message = "Starting Simulation";
k = 0;
LongSimulation[];
message = "Simulation Finished",
Method -> "Queued"
],
Dynamic[message, TrackedSymbols :> {message}],
Dynamic[k]
}]]

there are other possibilities with which you should also be able to
achieve what you want, but setting Method->"Queued" is a good idea
anyway: if LongSimulation runs longer than about 5 sec. it will be
aborted with the default method "Preemptive". For reasons not entirely
clear to me that helps also to make the Dynamic[k] update as expected.
For even more reasons not clear to me that still doesn't help with the
update of Dynamic[message]. But giving the TrackedSymbols explicitly
does help there, at least on my Mathematica 8.0.4 on Windows 7. That the
latter is necessary I would consider a bug. The problem with Dynamic[k]
I don't exactly understand but it looks like somehow the evaluation
through the preemptive link does block the updates of the Dynamics. I'm
not sure whether this is by design or a bug.

hth,

albert

```

• Prev by Date: Re: Restricting Data from Wolfram|Alpha Input into Mathematica
• Next by Date: Re: Sqrt of complex number
• Previous by thread: Button operation that indicates start and finish of simulation