# Plotting: Is anyone familiar with gradientfieldplot command?

I am trying to plot this graph showing the electric field lines and lines of equipotential based off the electrode configuration(in black) of two parallel lines. This is what I've been using for other electrode configurations:

 gradientFieldPlot[(y^2 + (x - 7/2)^2)^(-1/2) - (y^2 + (x + 7/2)^2)^(-1/2), {x, -7, 7},
{y, -5, 5}, PlotPoints -> 50, ColorFunction -> "BlueGreenYellow",
Contours -> 15,ContourStyle -> White, Frame -> True,
FrameLabel -> {"x", "y"}, ClippingStyle -> Automatic, Axes -> True,
StreamStyle -> Orange]


and am trying to do it in a similar manner, but I do not know how to express the equations for these two finite parallel lines in the [ ]. Can any one help? Thanks sooo much!!

-
Take a look at the ElectroStaticPotential example in the ContourPlot[] help – Dr. belisarius Oct 27 '13 at 3:49
I've been trying everything, no luck :( – Logan Oct 27 '13 at 4:20
Direct link to the ElectroStaticPotential example in the Documentation: reference.wolfram.com/mathematica/ref/ContourPlot.html#14946033 – Alexey Popkov Oct 27 '13 at 7:10
@Logan, When editing a question, it is best to not change the question entirely as it leaves answers hanging (why am I plotting a point charge instead of line charges?). Instead, you should add clarifying information. As for the line segments, experiment with f[x,y]=h[x-x0,y-y0,L]-h[x-x1,y-y1,L] in my answer. – Timothy Wofford Oct 27 '13 at 7:31
Logan, you should read the comments to this question. I think you are probably referring to a custom plot command made by @Jens. – Timothy Wofford Oct 27 '13 at 17:08

I'm going to assume that "everything" includes some simple ContourPlot and StreamPlot attempts, but that you are getting mired in the style details of your plots (missing streamlines, streamlines not where you want them, colors, etc.)

To draw the charge distributions, we can use Graphics.

gP1 = Graphics[{PointSize[Large], Point[{14, 10}]}];
gP2 = Graphics[{PointSize[Large], Point[{7, 10}], Point[{21, 10}]}];
gP3 = Graphics[{Thickness[Large], Line[{{8, 7}, {20, 7}}], Line[{{8, 13}, {20, 13}}]}];


For the plots, we first need to look up the expressions for the potentials of a point charge and a charged line segment.

h[x_, y_] = 1/Sqrt[x^2 + y^2];
h[x_, y_, L_] = Log[(Sqrt[(x - L/2)^2 + y^2] - (x - L/2))/
(Sqrt[(x + L/2)^2 + y^2] - (x + L/2))];


Then we need to move these expressions around to represent our charge distributions.

f1[x_, y_] = h[x - 14, y - 10];


We can use ContourPlot on the f functions to get the equipotential lines. Note that ContourPlot uses ContourStyle instead of PlotStyle to change the color of the lines.

cP = ContourPlot[f1[x, y], {x, 0, 28}, {y, 0, 20},
Contours -> 4, ContourShading -> None, ContourStyle -> Blue,
FrameTicks -> {Range[0, 28, 2], Range[0, 20, 2]}];


The field lines are perpendicular to the equipotential lines, so they are related to the gradient of the potential functions.

g1[x_, y_] = D[f1[x, y], {{x, y}}];


We can plot the field lines using StreamPlot. Here is where getting to know the options pays off. First, we don't want arrowheads on our lines, so we put StreamStyle->"Line". In your picture, you only have 8 streamlines, so we try StreamPoints->8 which may give unsatisfactory results depending on the plot (it worked great for PlotRange->{{0,20},{0,20}}). So, we take more control and indicate exactly which points we want to start our streams. Note that StreamPlot uses StreamColorFunction instead of PlotStyle to change the color of the lines.

sP = StreamPlot[g1[x, y], {x, 0, 28}, {y, 0, 20},
StreamStyle -> "Line",
StreamPoints -> ({14, 10} + {Cos[#], Sin[#]} & /@ Range[0, 7Pi/4, Pi/4]),
StreamColorFunction -> Function[{x, y}, Darker@Yellow]];


Finally, we combine the plots. I start with the contour plot because it has the plot range and ticks defined.

Show[cP, sP, gP1, AspectRatio -> Automatic]


After defining your f functions and adjusting the options on the plots, you can generate plots for the other two examples.

-
Ahh, YESSS!!! Thank you!!! – Logan Oct 27 '13 at 7:09
I don't think the last image is correct. Equipotential lines can be only parallel to conductor, and cannot cross it. – Vitaliy Kaurov Oct 27 '13 at 7:25
@Vitaliy, You are right. I put in half the length of the line charge. I'll edit it. – Timothy Wofford Oct 27 '13 at 7:39
Great, Timothy, thank you ;) – Vitaliy Kaurov Oct 27 '13 at 14:14

I would check out first Michael Trott blog: On the Importance of Being Edgy—Electrostatic and Magnetostatic Problems with Sharp Edges. From that you can easily construct:

\[Phi]LineSegment[{x_, y_, z_}] =
WolframAlpha[
"electric potential of a charged line segment", {{"Result", 1},
"Input"}][[1]] /. {Subscript[\[Epsilon], 0] -> 1/(4 Pi), l -> 1,
Q -> 1}


Show[

ContourPlot[\[Phi]LineSegment[{x - 1/2, 0,
z}] + \[Phi]LineSegment[{x + 1/2, 0, z}], {x, -1.5,
1.5}, {z, -1.5, 1.5}, ColorFunction -> "BeachColors",
Contours -> 10, PlotPoints -> 60],

StreamPlot[
z}] + \[Phi]LineSegment[{x + 1/2, 0, z}], {x, z}], {x, -1.5,
1.5}, {z, -1.5, 1.5}, StreamStyle -> Black],

Graphics[{Red, Thick, Line[{{-.5, -.5}, {-.5, .5}}],
Line[{{.5, -.5}, {.5, .5}}]}]

]


For the rest of your plots there are quite a few Demonstrations. For example:

Electric Field Lines Due to a Collection of Point Charges

-
Looks really good :) – Sektor Oct 27 '13 at 7:57
I really like that the field lines go all the way to the point charges. – Timothy Wofford Oct 27 '13 at 11:46