Re: Parallelize a sequence of NDSolve's
- To: mathgroup at smc.vnet.net
- Subject: [mg117755] Re: Parallelize a sequence of NDSolve's
- From: Oliver Ruebenkoenig <ruebenko at wolfram.com>
- Date: Thu, 31 Mar 2011 03:57:36 -0500 (EST)
On Wed, 30 Mar 2011, Iv=E1n Lazaro wrote: > Hi all! > > I don't understand yet the way in which the Parallel functions do the > distribution of the job, neither how the "setup" functions distribute > definitions. This is why I don't know what is happening in the next example: > > DistributeDefinitions[Bx, By, Bz, Func2, IntVar, Rhor, Al, InDelta, TRI, > QUA, CIR, Sx1, Sy1, Sz1, B0, Theta, h, Tf, k, Axx, Axy, Axz, Ayx, Ayy, Ayz, > Azx, Azy, Azz] > SetSharedVariable[Phi, sol1, list, t, Bxn, Byn, Bzn] > > list = {}; > ParallelDo[{ > Bxn = Bx[Theta, Phi]; > Byn = By[Theta, Phi]; > Bzn = Bz[Theta, Phi]; > sol1 = NDSolve[Func2[], IntVar[], {t, 0, Tf}]; > AppendTo[list, > Flatten[Subscript[Rho, 0, 0, 0, 0, 0, 0][t] + Subscript[Rho, 1, 0, 0, 1, > 0, 0][t] /. sol1 /. t -> Tf, > 1]]; > }, {Phi, 0, 1, 0.1}] > Clear[sol1]; > > I think that the problem is with "list" variable, but this code thinks > forever, and doesn't show any message. The function Func2[] calls a huge > amount of another functions, Rhor, which just write down a set of 64 > differential equations. The functions TRI, QUA, CIR, Sx1, Sz1, Al, InDelta, > are acting in there. IntVar writes down the variables to be integrated. The > other terms that appear in DistributeDefinitions are constants. I know that > without the actual set of equations is difficult to say something, but maybe > i'm missing the obvious in the preamble of the parallelization. > > Well, thanks in advance! > > Hi, you could start from a code like this and then add the functions you need ParallelTable might be better suited. res = ParallelTable[ NDSolve[{x'[t] == -y[t] - x[t]^2, y'[t] == param *x[t] - y[t]^3, x[0] == y[0] == 1}, {x, y}, {t, 20}] , {param, 2, 4, 0.1} ] Manipulate[ ParametricPlot[Evaluate[{x[t], y[t]} /. res[[i]]], {t, 0, 20}], {i, 1, Length[res], 1}] Hth, Oliver