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