1

Can You advice me how to put the whole thing below into an interactive Panel, so I can values of parameters dynamically - type other values (alpha, beta, x0, y0, R, tmax) and plot updates

α = 1.0;
β = 3.2;
x0 = Pi;
y0 = 0;
R = 0.3;
tmax = 2;
splot = StreamPlot[{z*(β - α*Cos[2*ϕ]), α*(1 - z^2)*Sin[2*ϕ]}, {ϕ, 0, 2 Pi}, {z, -1, 1}, StreamStyle -> GrayLevel[0.2], PlotRange -> {{0, 2 Pi}, {-1, 1}}, StreamPoints -> Fine, StreamScale -> Tiny, ImageSize -> 1000, FrameTicks -> {{{-1, -0.5, 0.0, 0.5, 1.0}, None}, {{0, Pi/2, Pi, 3 Pi/2, 2 Pi}, None}}, FrameTicksStyle -> Directive[Black, 16], FrameLabel -> {Style["ϕ", 18, Black, "Arial"], Style["z", 18, Black, "Arial"]}, AspectRatio -> 1/Pi];
flow = Function[{t, a, b}, Evaluate[{ϕ[t, a, b], z[t, a, b]} /. First@NDSolve[{D[ϕ[t, a, b], t] == z[t, a, b]*(β - α*Cos[2*ϕ[t, a, b]]), D[z[t, a, b], t] == α*(1 - z[t, a, b]^2)*Sin[2*ϕ[t, a, b]], ϕ[0, a, b] == a, z[0, a, b] == b}, {ϕ, z}, {t, 0, tmax}, {a, x0 - R, x0 + R}, {b, y0 - R, y0 + R}]], Listable];
circlePts = With[{n = 1000}, Table[{x0, y0} + R*{Cos[t], Sin[t]}, {t, 0, 2 Pi - 2 Pi/n, 2 Pi/n}]];
Manipulate[Show[splot, Graphics[GraphicsComplex[Dynamic@flow[t, circlePts[[All, 1]],  circlePts[[All, 2]]], {Opacity[0.6], Red, Polygon[Range@Length@circlePts]}]], AspectRatio -> Automatic], {t, 0., tmax}]

based on How to draw the image of a circle under the action of a transformation of the phase flow?.

WoofDoggy
  • 314
  • 1
  • 10
  • 2
    In your comments to my deleted answer you said you want a dynamic module. That information should be explicit in the question. See other examples on this site of DynamicModule and you will be able to convert the manipulate to a dynamic module without much problem. When you have given it a try post your code if you are still having problems. – Mike Honeychurch Jan 17 '15 at 23:17

1 Answers1

1
Manipulate[
 splot = StreamPlot[{z*(\[Beta] - \[Alpha]*
        Cos[2*\[Phi]]), \[Alpha]*(1 - z^2)*Sin[2*\[Phi]]}, {\[Phi], 0,
     2 Pi}, {z, -1, 1}, StreamStyle -> GrayLevel[0.2], 
   PlotRange -> {{0, 2 Pi}, {-1, 1}}, StreamPoints -> Fine, 
   StreamScale -> Tiny, ImageSize -> 1000, 
   FrameTicks -> {{{-1, -0.5, 0.0, 0.5, 1.0}, 
      None}, {{0, Pi/2, Pi, 3 Pi/2, 2 Pi}, None}}, 
   FrameTicksStyle -> Directive[Black, 16], 
   FrameLabel -> {Style["\[Phi]", 18, Black, "Arial"], 
     Style["z", 18, Black, "Arial"]}, AspectRatio -> 1/Pi];
 flow = Function[{t, a, b}, 
   Evaluate[{\[Phi][t, a, b], z[t, a, b]} /. 
     First@NDSolve[{D[\[Phi][t, a, b], t] == 
         z[t, a, b]*(\[Beta] - \[Alpha]*Cos[2*\[Phi][t, a, b]]), 
        D[z[t, a, b], t] == \[Alpha]*(1 - z[t, a, b]^2)*
          Sin[2*\[Phi][t, a, b]], \[Phi][0, a, b] == a, 
        z[0, a, b] == b}, {\[Phi], z}, {t, 0, tmax}, {a, x0 - R, 
        x0 + R}, {b, y0 - R, y0 + R}]], Listable];
 circlePts = 
  With[{n = 1000}, 
   Table[{x0, y0} + R*{Cos[t], Sin[t]}, {t, 0, 2 Pi - 2 Pi/n, 
     2 Pi/n}]];
 Show[splot, 
  Graphics[GraphicsComplex[
    Dynamic@flow[t, circlePts[[All, 1]], 
      circlePts[[All, 2]]], {Opacity[0.6], Red, 
     Polygon[Range@Length@circlePts]}]], 
  AspectRatio -> Automatic], {t, 0., tmax},
 {\[Alpha], .5, 1.5},
 {\[Beta], 2, 4},
 {x0, \[Pi]/2, 3 \[Pi]},
 {y0, -.5, .5},
 {R, .1, .5},
 {tmax, 1, 3}]
David G. Stork
  • 41,180
  • 3
  • 34
  • 96