[pstricks] Re : Elektrostatic Field

Juergen Gilg gilg at acrotex.net
Tue Jan 19 13:58:18 CET 2010


Dear all,

here a little trick to add some arrows... However this can be improved. 
I just put in an excerpt of Manuel's example:

\documentclass{article}
\usepackage{pstricks,pst-plot,pstricks-add}
\SpecialCoor
\def\FieldLines{%
         /r1 xP xA sub dup mul yP dup mul add sqrt def
         /r2 xP xA add dup mul yP dup mul add sqrt def
        /V q1 r1 div
           q2 r2 div
           add def
%        Ex=-dV/dx
         /Ex q1 xP xA sub mul r1 3 exp div
             q2 xP xA add mul r2 3 exp div
             add def
%        Ey=-dV/dy
         /Ey yP
             q1 r1 3 exp div
             q2 r2 3 exp div
             add mul def
         /NormeE Ex dup mul Ey dup mul add sqrt def
         /dX Ex NormeE div pasX mul def
         /dY Ey NormeE div pasX mul def
}
\begin{document}
\begin{center}
\begin{pspicture*}(-6,-8)(10,8)
% les limites
\pstVerb{/xmin -5 def /xmax 5 def /ymin -5 def /ymax 5 def}%
% le pas d'itération
\pstVerb{/pasX 0.025 def}%
\pstVerb{/q1 1 def           % les charges
         /q2 -0.5 q1 mul def
         /xA -2.5 def}%
% 15 degrés entre chaque ligne (24*15=360)
\multido{\iA=0+24}{15}{% 15 lignes de champ
\pstVerb{/xStart xA def
         /pasX q1 q1 abs div 0.05 mul def
         /xP xStart  pasX \iA\space cos mul add def
         /yP 0 pasX \iA\space sin mul add def}%
\parametricplot[plotpoints=2000,linecolor=blue]{xmin}{xmax}{%
        \FieldLines
        /xP xP dX add def
        /yP yP dY add  def
         xP yP
}
\parametricplot[linecolor=blue,arrows=->,arrowscale=2]{xmax xmin add 2  
div 0.2 sub}{xmax xmin add 2 div 0.2 add}{%
        \FieldLines
        /xP xP dX add def
        /yP yP dY add  def
         xP yP
}}

\pscircle[fillstyle=solid](!xA 0){0.2}\pscircle[fillstyle=solid](!xA neg 
0){0.2}
\end{pspicture*}
\end{center}
\end{document}

Regards,

Juergen

Patrice Mégret wrote:
>
> Dear Manuel et al,
>
>  
>
> The solution based on implicit function can be extended for the 
> equipotential to any number of point charges arbitrarily placed, but 
> for the field lines thepoint  charges should be placed on a line if 
> you generalize the line equation . If we can find the function 
> f(x,y)=0 for the E field line with arbitrary geometry, then it should 
> be possible to use implicit function.
>
> Probably some care should be taken to avoid division by zero if the 
> computation grid crosses then charge positions.
>
>  
>
> I tested your solution with two charges (Q1=1,Q2=+-0.5, located at 
> z=+-1) and superpose with mine and it is perfect.  (see code below)
>
> Concerning the computation time, your solution is very quick for two 
> charges of same sign but quite slow with two opposite sign charges (I 
> changed plotpoints to 200 in the parametric plot for opposite sign 
> charges because with 2000 it is very slow).
>
>  
>
> So probably, for the general case, the field lines should be computed 
> by your algorithm and the equipotential by implicit function (that 
> allows also  to change the color with the sign, red and orange in the 
> example below)  
>
>  
>
> I have no idea how to put arrows on the field lines with my procedure.
>
>  
>
> Best regards,
>
>  
>
> Patrice
>
>  
>
>  
>
> \documentclass{article}
>
> \usepackage{pstricks,pst-func,pstricks-add}
>
>  
>
> \begin{document}
>
>  
>
>  
>
> \def\FieldLinesFourElectricCharges{%
>
>          /r1 xP xA sub dup mul yP yA sub dup mul add sqrt def
>
>          /r2 xP xB sub dup mul yP yB sub dup mul add sqrt def
>
> %        /V q1 r1 div
>
> %           q2 r2 div
>
> %           add
>
> %           q3 r3 div
>
> %           add
>
> %           q4 r4 div
>
> %           add def
>
> %        Ex=-dV/dx
>
>          /Ex q1 xP xA sub mul r1 3 exp div
>
>              q2 xP xB sub mul r2 3 exp div
>
>              add def
>
> %        Ey=-dV/dy
>
>          /Ey q1 yP yA sub mul r1 3 exp div
>
>              q2 yP yB sub mul r2 3 exp div
>
>                                                 add def
>
>          /NormeE Ex dup mul Ey dup mul add sqrt def
>
>          /dX Ex NormeE div pasX mul def
>
>          /dY Ey NormeE div pasX mul def
>
> }
>
>  
>
>  
>
> \begin{center}
>
> \begin{pspicture*}(-7,-7)(7,7)
>
> % les limites
>
> \pstVerb{/xmin -5 def /xmax 5 def /ymin -5 def /ymax 5 def}%
>
> % le nombre de lignes de champ
>
> %\pstVerb{/NL 24 def}% 15 degrés entre chaque ligne (24*15=360)
>
> % le pas d'itération
>
> \pstVerb{/pasX xmax xmin sub 200 div def}% 0.05
>
> \pstVerb{/q1 1 def        % les charges
>
>          /q2 0.5 def
>
>          /xA 0 def     % leurs positions
>
>          /yA 1 def
>
>          /xB 0 def
>
>          /yB -1 def
>
>          }%
>
> \multido{\iA=0+15}{24}{% 24 lignes de champ
>
> \pstVerb{/xStart xA def
>
>          /yStart yA def
>
>          /pasX q1 q1 abs div 0.05 mul def
>
>          /xP xStart pasX \iA\space cos mul add def
>
>          /yP yStart pasX \iA\space sin mul add def}%
>
> \parametricplot[plotpoints=2000]{xmin}{xmax}{%
>
>         \FieldLinesFourElectricCharges
>
>         /xP xP dX add def
>
>         /yP yP dY add  def
>
>          xP yP
>
> }
>
> \pstVerb{/xStart xB def
>
>          /yStart yB def
>
>          /pasX q2 q2 abs div 0.05 mul def
>
>          /xP xStart pasX \iA\space cos mul add def
>
>          /yP yStart pasX \iA\space sin mul add def}%
>
> \parametricplot[plotpoints=2000]{xmin}{xmax}{%
>
>         \FieldLinesFourElectricCharges
>
>         /xP xP dX add def
>
>         /yP yP dY add  def
>
>          xP yP
>
> }
>
> }
>
> \pscircle[fillstyle=solid](!xA yA){0.2}\pscircle[fillstyle=solid](!xB 
> yB){0.2}
>
> \begin{psclip}{\psframe[linestyle=none](-5.2,-5.2)(5.2,5.2)}
>
> \multido{\r=0.4+0.2}{3}{%
>
> \psplotImp[linestyle=dotted,linecolor=red](-6,-6)(6,6){%
>
> x 2 exp y 1 sub 2 exp add sqrt 1 exch div x 2 exp y 1 add 2 exp add 
> sqrt 0.5 exch div add \r\space sub}}
>
> \multido{\r=1.0+1.0}{3}{%
>
> \psplotImp[linestyle=dashed,linecolor=red](-6,-6)(6,6){%
>
> x 2 exp y 1 sub 2 exp add sqrt 1 exch div x 2 exp y 1 add 2 exp add 
> sqrt 0.5 exch div add \r\space sub}}
>
> \multido{\r=0.2+0.4}{5}{%
>
> \psplotImp[linestyle=solid,linecolor=blue](-6,-6)(6,6){%
>
> y 1 sub x 2 exp y 1 sub 2 exp add sqrt div y 1 add x 2 exp y 1 add 2 
> exp add sqrt div 0.5 mul add \r\space add}}
>
> \multido{\r=-0.2+-0.4}{5}{%
>
> \psplotImp[linestyle=solid,linecolor=blue](-6,-6)(6,6){%
>
> y 1 sub x 2 exp y 1 sub 2 exp add sqrt div y 1 add x 2 exp y 1 add 2 
> exp add sqrt div 0.5 mul add \r\space add}}
>
> \psdots(0,1)(0,-1)
>
> \end{psclip}
>
> \psaxes{->}(0,0)(-5.5,-5.5)(5.5,5.5)[$y$,-90][$z$,0]
>
> \end{pspicture*}
>
> \end{center}
>
>  
>
>  
>
> \begin{center}
>
> \begin{pspicture*}(-7,-7)(7,7)
>
> % les limites
>
> \pstVerb{/xmin -5 def /xmax 5 def /ymin -5 def /ymax 5 def}%
>
> % le nombre de lignes de champ
>
> %\pstVerb{/NL 24 def}% 15 degrés entre chaque ligne (24*15=360)
>
> % le pas d'itération
>
> \pstVerb{/pasX xmax xmin sub 200 div def}% 0.05
>
> \pstVerb{/q1 1 def        % les charges
>
>          /q2 -0.5 def
>
>          /xA 0 def     % leurs positions
>
>          /yA 1 def
>
>          /xB 0 def
>
>          /yB -1 def
>
>          }%
>
> \multido{\iA=0+15}{24}{% 24 lignes de champ
>
> \pstVerb{/xStart xA def
>
>          /yStart yA def
>
>          /pasX q1 q1 abs div 0.05 mul def
>
>          /xP xStart pasX \iA\space cos mul add def
>
>          /yP yStart pasX \iA\space sin mul add def}%
>
> \parametricplot[plotpoints=200]{xmin}{xmax}{%
>
>         \FieldLinesFourElectricCharges
>
>         /xP xP dX add def
>
>         /yP yP dY add  def
>
>          xP yP
>
> }
>
> \pstVerb{/xStart xB def
>
>          /yStart yB def
>
>          /pasX q2 q2 abs div 0.05 mul def
>
>          /xP xStart pasX \iA\space cos mul add def
>
>          /yP yStart pasX \iA\space sin mul add def}%
>
> \parametricplot[plotpoints=200]{xmin}{xmax}{%
>
>         \FieldLinesFourElectricCharges
>
>         /xP xP dX add def
>
>         /yP yP dY add  def
>
>          xP yP
>
> }
>
> }
>
> \pscircle[fillstyle=solid](!xA yA){0.2}\pscircle[fillstyle=solid](!xB 
> yB){0.2}
>
> %\psgrid
>
> \begin{psclip}{\psframe[linestyle=none](-5.2,-5.2)(5.2,5.2)}
>
> \multido{\r=0.4+0.2}{3}{%
>
> \psplotImp[linestyle=dashed,linecolor=red](-6,-6)(6,6){%
>
> x 2 exp y 1 sub 2 exp add sqrt 1 exch div x 2 exp y 1 add 2 exp add 
> sqrt 0.5 exch div sub \r\space sub}}
>
> \multido{\r=0.04+0.04}{3}{%
>
> \psplotImp[linestyle=dashed,linecolor=red](-8,-8)(8,8){%
>
> x 2 exp y 1 sub 2 exp add sqrt 1 exch div x 2 exp y 1 add 2 exp add 
> sqrt 0.5 exch div sub \r\space sub}}
>
> \multido{\r=-0.4+-0.2}{3}{%
>
> \psplotImp[linestyle=dashed,linecolor=orange](-6,-6)(6,6){
>
> x 2 exp y 1 sub 2 exp add sqrt 1 exch div x 2 exp y 1 add 2 exp add 
> sqrt 0.5 exch div sub \r\space sub}}
>
> \multido{\r=-0.04+-0.04}{3}{%
>
> \psplotImp[linestyle=dashed,linecolor=orange](-6,-6)(6,6){
>
> x 2 exp y 1 sub 2 exp add sqrt 1 exch div x 2 exp y 1 add 2 exp add 
> sqrt 0.5 exch div sub \r\space sub}}
>
> \multido{\r=0.0+0.08}{10}{%
>
> \psplotImp[linestyle=solid,linecolor=blue](-6,-6)(6,6){
>
> y 1 sub x 2 exp y 1 sub 2 exp add sqrt div y 1 add x 2 exp y 1 add 2 
> exp add sqrt div 0.5 mul sub \r\space add}}
>
> \multido{\r=-0.02+-0.06}{10}{%
>
> \psplotImp[linestyle=solid,linecolor=blue](-6,-6)(6,6){
>
> y 1 sub x 2 exp y 1 sub 2 exp add sqrt div y 1 add x 2 exp y 1 add 2 
> exp add sqrt div 0.5 mul sub \r\space add}}
>
> \psdots(0,1)(0,-1)
>
> \end{psclip}
>
> \psaxes{->}(0,0)(-5.5,-5.5)(5.5,5.5)[$y$,-90][$z$,0]
>
> \end{pspicture*}
>
> \end{center}
>
>  
>
>  
>
>  
>
>  
>
> \end{document}
>
>   
>
>  
>
>     
>
>  
>
>  
>
>  
>
>  
>
>  
>
> *De :* pstricks-bounces at tug.org [mailto:pstricks-bounces at tug.org] *De 
> la part de* mluque5130 at aol.com
> *Envoyé :* lundi 18 janvier 2010 20:11
> *À :* pstricks at tug.org
> *Objet :* [pstricks] Re : Elektrostatic Field
>
>  
>
> The solution of Patrice is very good! I think Patrick has won the 
> challenge of tracing field lines and equipotential ... for now ...
> How to add arrows to the field lines?
>
> Thanks to Herbert for the improved code.
>
> Best regards,
>
> Manuel
>
>  
>
>  
>
>  
>
>  
>
>
> ------------------------------------------------------------------------
> Important notification: In the context of the creation of the 
> University of Mons, FPMs email address policy is changing from 
> '@fpms.ac.be' to '@umons.ac.be' (or @student.fpms.ac.be to 
> @student.umons.ac.be), please update your contact list accordingly.
>
> Note importante: Dans le cadre de la création de l'Université de Mons, 
> la stratégie d'adresse de courrier électronique de la FPMs change de 
> '@fpms.ac.be' à '@umons.ac.be' (ou @student.fpms.ac.be to 
> @student.umons.ac.be), merci de mettre à jour votre liste d'adresses 
> en conséquence.
> ------------------------------------------------------------------------
>
> _______________________________________________
> PSTricks mailing list
> PSTricks at tug.org
> http://tug.org/mailman/listinfo/pstricks
> archive: http://www.tug.org/pipermail/pstricks/

-- 
 Jürgen Gilg
 Austr. 59
 70376 Stuttgart
-------------------------------------
 Tel       0711.59 27 88
 e-Mail    gilg at acrotex.net


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://tug.org/pipermail/pstricks/attachments/20100119/c08b3fd8/attachment-0001.html>


More information about the PSTricks mailing list