2
$\begingroup$

I am plotting this vector field:

Q[k_, N_] := Show[ContourPlot[3 - 3 BesselJ[0, r[x, y] a^-1], {x, -N, N}, {y, -N, N}, 
ContourStyle -> Opacity[0.3]], 

StreamPlot[{Sin[θ[x, y]], -Cos[θ[x, y]]}, {x, -N, N}, {y, -N, N}, 
PlotRange -> {Full, Full}, RegionFunction -> 
Function[{x, y}, a^2 - a^2/100 < x^2 + y^2 <=  a^2 + a^2/100], 
StreamStyle -> Red, StreamPoints -> {pts, Automatic, Scaled[2]}, 
StreamScale -> None],

StreamPlot[{Abs[(1 - a/r[x, y])^(1/2)] + 
a^(1/2)/r[x, y]^(1/2) Cos[θ[x, y] k], 
a^(1/2)/r[x, y]^(1/2) Sin[θ[x, y] k]}, {x, -N, N}, {y, -N, 
N}, PlotRange -> {Full, Full}, 
RegionFunction -> Function[{x, y}, x^2 + y^2 > a^2], 
StreamStyle -> {Blue, Thick, "Line"}, PerformanceGoal -> "Quality", 
StreamScale -> Full], 

ImageSize -> Large]     

with

r[x_, y_] := Sqrt[x^2 + y^2];
θ[x_, y_] := ArcTan[x, y];

a = 3;
pts = Flatten[
Table[{x, y}, {x, -a - a/10, a + a/10, 0.1}, {y, a - a/10, a + a/10, 0.1}], 1];

But I can't find a set of StreamPoints to avoid the segmentation of the lines near the x-axes.

Q[1/2,10]

enter image description here

Any ideas? Thanks!

$\endgroup$
4
$\begingroup$
r[x_, y_] := Sqrt[x^2 + y^2];
θ[x_, y_] := ArcTan[x, y];

a = 3;
pts = Flatten[Table[{x, y}, {x, -a - a/10, a + a/10, 0.1}, {y, a - a/10, a + a/10, 0.1}], 1];

Q[k_, n_] := Module[{pts1}, pts1 = Table[{0, x}, {x, -2 n, 2 n, 1/2}];
  Show[ContourPlot[ 3 - 3 BesselJ[0, r[x, y] a^-1], {x, -n, n}, {y, -n, n}, 
                   ContourStyle -> Opacity[0.3]], 
       StreamPlot[{Sin[θ[x, y]], -Cos[θ[x, y]]}, {x, -n, n}, {y, -n, n}, PlotRange -> {Full, Full}, 
                 RegionFunction -> Function[{x, y}, a^2 - a^2/100 < x^2 + y^2 <= a^2 + a^2/100], 
                 StreamStyle -> Red, StreamPoints -> {pts, Automatic, Scaled[2]},  
                 StreamScale -> None], 
       StreamPlot[{Abs[(1 - a/r[x, y])^(1/2)] +  a^(1/2)/r[x, y]^(1/2) Cos[θ[x, y] k], 
                      a^(1/2)/r[x, y]^(1/2) Sin[θ[x, y] k]}, {x, -2 n, 2 n}, {y, -2 n, 2 n}, 
                 RegionFunction -> Function[{x, y}, x^2 + y^2 > a^2 && Abs@x < n && Abs@y < n], 
                 StreamPoints -> {pts1, Automatic, Scaled[2]}, StreamStyle -> {Blue, Thick, "Line"}, 
                 PerformanceGoal -> "Quality", StreamScale -> Full], 
   ImageSize -> Large]]

Q[1/2, 10]

Mathematica graphics

$\endgroup$
  • $\begingroup$ Add more points as you see fit $\endgroup$ – Dr. belisarius Feb 3 '15 at 19:51
  • $\begingroup$ Thanks! How do I add more lines (i.e. starting points) on the left? I can't quite manage it! $\endgroup$ – usumdelphini Feb 4 '15 at 16:16
  • $\begingroup$ @usumdelphini Updated the code to do that $\endgroup$ – Dr. belisarius Feb 4 '15 at 16:55
  • $\begingroup$ I tried, but it doesn't show me the full lines for some reason, but only the parts near the edges of the frame $\endgroup$ – usumdelphini Feb 4 '15 at 17:13
  • $\begingroup$ @usumdelphini Try it on a clean (new) Mathematica session. If it doesn't work it's probably because of a version mismatch issue. I'm using Mathematica 9. $\endgroup$ – Dr. belisarius Feb 4 '15 at 17:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.