diff options
author | Karl Berry <karl@freefriends.org> | 2010-05-17 16:10:33 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-05-17 16:10:33 +0000 |
commit | 0fbe3bb2fe6072a4909daddb5cfb7304dce43981 (patch) | |
tree | 4a016a5a590831850d8aab9aebf0bf87cc6c3536 | |
parent | 7fe9b95e32b8a9ec7f8fb1465ef797c3fe282301 (diff) |
new pstricks package pst-magneticfield (16may10)
git-svn-id: svn://tug.org/texlive/trunk@18313 c570f23f-e606-0410-a88d-b1316a301751
15 files changed, 1219 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/generic/pst-magneticfield/Changes b/Master/texmf-dist/doc/generic/pst-magneticfield/Changes new file mode 100644 index 00000000000..1238b04d333 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-magneticfield/Changes @@ -0,0 +1,2 @@ +pst-magneticfield.tex -------- +1.10 2010-05-16 - first CTAN version diff --git a/Master/texmf-dist/doc/generic/pst-magneticfield/README b/Master/texmf-dist/doc/generic/pst-magneticfield/README new file mode 100644 index 00000000000..a7776adf323 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-magneticfield/README @@ -0,0 +1,8 @@ +Save the files pst-magneticfield.sty|tex in a directory, which is part of your +local TeX tree. +Then do not forget to run texhash to update this tree. +For more information see the documentation of your LATEX distribution +on installing packages into your LATEX distribution or the +TeX Frequently Asked Questions: +(http://www.tex.ac.uk/cgi-bin/texfaq2html?label=instpackages). + diff --git a/Master/texmf-dist/doc/generic/pst-magneticfield/pst-magneticfield-docEN.bib b/Master/texmf-dist/doc/generic/pst-magneticfield/pst-magneticfield-docEN.bib new file mode 100644 index 00000000000..d02a96688b8 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-magneticfield/pst-magneticfield-docEN.bib @@ -0,0 +1,70 @@ +%% -*-bibtex-*- +@STRING{tugboat = {TUGboat} } +@STRING{dtk = {{D}ie {\TeX}nische {K}om{\"o}die} } + +@Book{companion, + author = {Michel Goosens and Frank Mittelbach and Sebastian Rahtz and Dennis Roegel and Herbert Vo\ss}, + title = {The {\LaTeX} {G}raphics {C}ompanion}, + publisher = {{Addison-Wesley Publishing Company}}, + edition = {second}, + year = {2007}, + address = {Reading, Mass.} +} + +@Article{girou:01:, + author = {Denis Girou}, + title = {Pr\'esentation de {PST}ricks}, + journal = {Cahier {GUT}enberg}, + year = 1994, + volume = {16}, + month = apr, + pages = {21-70} +} + +@Article{girou:02:, + author = {{Timothy Van} Zandt and Denis Girou}, + title = {Inside {PST}ricks}, + journal = TUGboat, + year = 1994, + volume = {15}, + month = sep, + pages = {239-246} +} + +@Book{PostScript, + Author = {Kollock, Nikolai G.}, + Title = {Post{S}cript richtig eingesetzt: vom {K}onzept zum + praktischen {E}insatz}, + Publisher = {IWT}, + Address = {Vaterstetten}, + year = 1989, +} + +@Manual{multido, + Title = {\texttt{multido.tex} - a loop macro, that supports fixed-point addition}, + Author = {{Timothy Van} Zandt}, + Organization = {}, + Address = {\url{CTAN:/graphics/pstricks/generic/multido.tex}}, + Note = {}, + year = 1997 +} + +@Book{PSTricks2, + author = {Herbert Vo\ss{}}, + title = {\texttt{PSTricks} -- {G}rafik f\"ur \TeX{} und \LaTeX}, + edition = {fifth}, + publisher = {DANTE -- Lehmanns}, + year = {2008}, + address = {Heidelberg/Hamburg} +} + +@Book{abramowitz, + author = {M. Abramowitz and I. A. Stegun }, + year = 1964, + title = {Handbook of {M}athematical {F}unctions with {F}ormulas, {G}raphs, and + {M}athematical {T}ables}, + publisher = {National Bureau of Standards Applied Mathematics Series, + U.S. Government Printing Office}, + address = {Washington, D.C., USA}, + Note = { Corrections appeared in later printings up to the 10th Printing}, +} diff --git a/Master/texmf-dist/doc/generic/pst-magneticfield/pst-magneticfield-docEN.pdf b/Master/texmf-dist/doc/generic/pst-magneticfield/pst-magneticfield-docEN.pdf Binary files differnew file mode 100644 index 00000000000..8918afea004 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-magneticfield/pst-magneticfield-docEN.pdf diff --git a/Master/texmf-dist/doc/generic/pst-magneticfield/pst-magneticfield-docEN.tex b/Master/texmf-dist/doc/generic/pst-magneticfield/pst-magneticfield-docEN.tex new file mode 100644 index 00000000000..56d872d40af --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-magneticfield/pst-magneticfield-docEN.tex @@ -0,0 +1,307 @@ +%% $Id: pst-magneticfield-docEN.tex 322 2010-05-16 08:07:26Z herbert $ +\documentclass[11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false,smallheadings + headexclude,footexclude,oneside]{pst-doc} +\usepackage[latin1]{inputenc} +\usepackage{pst-magneticfield} +\let\pstMFfv\fileversion +\lstset{pos=t,language=PSTricks, + morekeywords={psmagneticfield,psmagneticfieldThreeD},basicstyle=\footnotesize\ttfamily} +\newcommand\Cadre[1]{\psframebox[fillstyle=solid,fillcolor=black,linestyle=none,framesep=0]{#1}} +\def\bgImage{% +\psset{unit=0.5cm} +\begin{pspicture}(-7,-6)(7,6) +\psmagneticfieldThreeD[N=2,R=2,L=2,linecolor=blue](-7,-8)(7,8) +\ThreeDput{\rput(0,-7){\textbf{Bobines de HELMHOLTZ}}} +\end{pspicture} +} +% +\begin{document} + +\title{\texttt{pst-magneticfield}} +\subtitle{Magnetic field lines of a solenoid; v.\pstMFfv} +\author{Juergen Gilg\\ Manuel Luque\\Herbert Vo\ss} +%\docauthor{Juergen Gilg\\Manuel Luque\\Herbert Vo\ss} +\date{\today} +\maketitle + + +\clearpage% +\begin{abstract} +The package \LPack{pst-magneticfield} aims to trace the shape of field lines +af a solenoid. The physical parameters are the radius of the solenoid, the number of +turns and the length, the default values are given below: + +\begin{enumerate} + \item the number of turns: \LKeyset{N=6} ; + \item the radius : \LKeyset{R=2} ; + \item the length : \LKeyset{L=4}. +\end{enumerate} + +The line was calculated with the Runge-Kutta 2 algorithm, which, after several tries, +seems to be the best compromise between speed and accuracy of calculations of the path. +The calculation of elliptic integrals for the evaluation of magnetic field +was achieved by polynomial approximations from the "Handbook of Mathematical +Functions With Formulas, Graph, And Mathematical Tables" by Milton Abramowitz and +Irene.A. Stegun (\url{http://www.math.sfu.ca/~cbm/aands/}).~\cite{abramowitz} +\end{abstract} + +\clearpage +\tableofcontents + + +\clearpage + +\section{Introduction} + +The route options, with the default values are as follows: +\begin{enumerate} + \item The maximum number of points on each line of the entire coil: \LKeyset{pointsB=500}; + \item the maximum number of points on lines around turns selected: \LKeyset{pointsS=1000}; + \item the number of lines of the entire coil: \LKeyset{nL=8}; + \item not the route for the lines of the entire coil: \LKeyset{PasB=0.02}; + \item not the route for the lines around turns selected: \LKeyset{PasS=0.00275}; + \item the choice of individual coils to improve the rendering of + layout: \LKeyset{numSpires=\{\}}, we place following the sign "=" the numbers of turns \textsf{1 2 3 etc.} + starting from the top of the spire. By default, all the turns are targeted. + \item The number of field lines around the turns selected: \LKeyset{nS=1}. + \item We may decide not to represent the solenoid with the option \LKeyset{drawSelf=false} + is useful for 3D representation. + \item the route options of the turns (color, thickness, arrows) are: + \begin{enumerate} + \item The color and thickness of the coils: \Lkeyset{styleSpire=styleSpire}; + \item the current direction signs: \Lkeyset{styleCourant=sensCourant}. + \end{enumerate} +\begin{verbatim} +\newpsstyle{styleSpire}{linecap=1,linecolor=red,linewidth=2\pslinewidth} +\newpsstyle{sensCourant}{linecolor=red,linewidth=2\pslinewidth,arrowinset=0.1} +\end{verbatim} + + \item The color and thickness of the field lines can be adjusted with the parameters + usual \LPack{pstricks}: \Lkeyword{linecolor} and \Lkeyword{linewidth} +\end{enumerate} + +A command \Lcs{psmagneticfieldThreeD} allows 3D visualization of the solenoid and +field lines. + +\clearpage +\section{Influence of physical parameters on the map magnetic field} +\subsection{The length of the solenoid} + +\begin{LTXexample}[pos=t] +\psset{unit=0.5cm} +\begin{pspicture*}[showgrid](-7,-8)(7,8) +\psmagneticfield[linecolor={[HTML]{006633}},N=3,R=2,nS=1] +\psframe*[linecolor={[HTML]{99FF66}}](-7,-8)(7,-7) +\rput(0,-7.5){[\Cadre{\textcolor{white}{L=4}},N=3,R=2,nS=1]} +\end{pspicture*} +\begin{pspicture*}[showgrid](-7,-8)(7,8) +\psmagneticfield[linecolor={[HTML]{006633}},L=8,N=3,R=2,nS=1,PasB=0.0025,pointsB=5500] +\psframe*[linecolor={[HTML]{99FF66}}](-7,-8)(7,-7) +\rput(0,-7.5){[\Cadre{\textcolor{white}{L=8}},N=3,R=2,nS=1]} +\end{pspicture*} +\end{LTXexample} + +\textbf{Note:} To refine the layout of the second solenoid, we had to increase the +points and lower the pitch of the route: \Cadre{\textcolor{white}{pointsB=5500,PasB=0.0025}}, which +lengthens the calculations. + + + +\clearpage + +\subsection{The number of turns} +\begin{LTXexample}[pos=t] +\psset{unit=0.5} +\begin{pspicture*}[showgrid](-7,-8)(7,8) +\psmagneticfield[linecolor={[HTML]{006633}},N=1,R=2,nS=0] +\psframe*[linecolor={[HTML]{99FF66}}](-7,-8)(7,-7) +\rput(0,-7.5){[\Cadre{\textcolor{white}{N=1}},R=2,nS=0]} +\end{pspicture*} +\begin{pspicture*}[showgrid](-7,-8)(7,8) +\psmagneticfield[linecolor={[HTML]{006633}},N=2,R=2,L=2,PasS=0.003,nS=2] +\psframe*[linecolor={[HTML]{99FF66}}](-7,7)(7,8) +\rput(0,7.5){\Cadre{\textcolor{white}{Bobines de Helmholtz}}} +\psframe*[linecolor={[HTML]{99FF66}}](-7,-8)(7,-7) +\rput(0,-7.5){[\Cadre{\textcolor{white}{N=2}},R=2,L=2,PasS=0.003,nS=2]} +\end{pspicture*} +\end{LTXexample} + +\begin{LTXexample}[pos=t] +\psset{unit=0.5} +\begin{pspicture*}[showgrid](-7,-8)(7,8) +\psmagneticfield[linecolor={[HTML]{006633}},N=4,R=2,numSpires=2 3] +\psframe*[linecolor={[HTML]{99FF66}}](-7,-8)(7,-7) +\rput(0,-7.5){[\Cadre{\textcolor{white}{N=4}},R=2,L=4]} +\end{pspicture*} +\begin{pspicture*}[showgrid](-7,-8)(7,8) +\psmagneticfield[linecolor={[HTML]{006633}},N=5,R=2,L=5,PasS=0.004,nS=2 3 4] +\psframe*[linecolor={[HTML]{99FF66}}](-7,-8)(7,-7) +\rput(0,-7.5){[\Cadre{\textcolor{white}{N=5}},R=2,L=5]} +\end{pspicture*} +\end{LTXexample} + + +\clearpage +\section{The three route options} +\subsection{The number of field lines} + +Due to the symmetry of the problem the number of field lines given +\Lkeyword{nL} option is half the number actually represented with an added line +confused with the axis of revolution. We must also add the lines around the turns \Lkeyword{nS}, +these turns can be selected individually \Lkeyword{numSpires}. + + + +\begin{LTXexample}[pos=t] +\psset{unit=0.5} +\begin{pspicture*}[showgrid](-7,-8)(7,8) +\psmagneticfield[linecolor={[HTML]{000099}},N=1,R=2] +\psframe*[linecolor={[HTML]{3399FF}}](-7,-8)(7,-7) +\rput(0,-7.5){[\Cadre{\textcolor{white}{nL=8}},N=1,R=2]} +\end{pspicture*} +\begin{pspicture*}[showgrid](-7,-8)(7,8) +\psmagneticfield[linecolor={[HTML]{000099}},N=1,R=2,nL=12] +\psframe*[linecolor={[HTML]{3399FF}}](-7,-8)(7,-7) +\rput(0,-7.5){[\Cadre{\textcolor{white}{nL=12}},N=1,R=2]} +\end{pspicture*} +\end{LTXexample} + +\clearpage +\subsection{The number of points for the path} + The plot of field lines is achieved by a numerical method (RK2) and +follows the step of the route and the number of selected points affect the accuracy of the route, +as in the two examples below: + + +\begin{LTXexample}[pos=t] +\psset{unit=0.5} +\begin{pspicture*}[showgrid](-7,-8)(7,8) +\psmagneticfield[linecolor={[HTML]{660066}},N=2,R=2,L=2,PasB=0.1,nS=0,nL=7,pointsB=100] +\psframe*[linecolor={[HTML]{996666}}](-7,7)(7,8) +\rput(0,7.5){\Cadre{\textcolor{white}{Bobines de Helmholtz}}} +\psframe*[linecolor={[HTML]{996666}}](-7,-8)(7,-7) +\rput(0,-7.5){[\Cadre{\textcolor{white}{PasB=0.1,nL=4,pointsB=100}}]} +\end{pspicture*} +\begin{pspicture*}[showgrid](-7,-8)(7,8) +\psmagneticfield[linecolor={[HTML]{660066}},N=2,R=2,L=2,PasB=0.4,nS=0,nL=7,pointsB=100] +\psframe*[linecolor={[HTML]{996666}}](-7,7)(7,8) +\rput(0,7.5){\Cadre{\textcolor{white}{Bobines de Helmholtz}}} +\psframe*[linecolor={[HTML]{996666}}](-7,-8)(7,-7) +\rput(0,-7.5){[\Cadre{\textcolor{white}{PasS=0.4,pointsB=100}}]} +\end{pspicture*} +\end{LTXexample} + + +If the defaults do not suit it must be found by testing the +values that give a correct path. + + + +\clearpage + +\section{The parameter \nxLkeyword{numSpires}} +\begin{LTXexample}[pos=t,wide] +\psset{unit=0.5} +\begin{pspicture*}[showgrid](-8,-10)(8,10) +\psset{linecolor=blue} +\psmagneticfield[R=2,L=12,N=8,pointsS=500,nL=14,nS=1,numSpires=1 3 6 8,PasB=0.075] +\psframe*[linecolor={[HTML]{99FF66}}](-8,-10)(8,-9) +\rput(0,-9.5){[\Cadre{\textcolor{white}{numSpires=1 3 6 8}},R=2,L=14]} +\multido{\i=0+1}{8}{\rput[l](!6 6 12 7 div \i\space mul sub){\the\multidocount}} +\end{pspicture*}\quad +\begin{pspicture*}[showgrid](0,-10)(16,10) +\psset{linecolor=blue} +\psmagneticfield[R=2,L=12,N=8,pointsS=500,nL=14,numSpires=,nS=1,PasB=0.075] +\psframe*[linecolor={[HTML]{99FF66}}](0,-10)(16,-9) +\rput(8,-9.5){[\Cadre{\textcolor{white}{numSpires=all}},R=2,L=14]} +\multido{\i=0+1}{8}{\rput[l](!6 6 12 7 div \i\space mul sub){\the\multidocount}} +\end{pspicture*} +\end{LTXexample} + +\clearpage +\section{The parameter \nxLkeyword{AntiHelmholtz}} +\begin{LTXexample}[pos=t] +\psset{unit=0.75,AntiHelmholtz, + R=2,pointsB=500,pointsS=2000,PasB=0.02,PasS=0.00275,nS=10, + nL=2,drawSelf=true,styleSpire=styleSpire,styleCourant=sensCourant} +\newpsstyle{grille}{subgriddiv=0,gridcolor=blue!50,griddots=10} +\newpsstyle{cadre}{linecolor=yellow!50} +\begin{pspicture*}[showgrid](-7,-6)(7,6) +\psframe*[linecolor={[HTML]{996666}}](-7,7)(7,8) +\psmagneticfield[linecolor={[HTML]{660066}}] +\end{pspicture*} +\end{LTXexample} + + + +\clearpage +\section{3D views} +3D views are possible with the macros + +\begin{BDef} +\Lcs{psmagneticfield}\OptArgs\coord1\coord2\\ +\Lcs{psmagneticfieldThreeD}\OptArgs\coord1\coord2 +\end{BDef} + +in which options are settings \Lcs{psmagneticfield} and \verb+(x1,y1)(x2,y2)+ +coordinates of bottom left corner and upper right framework +is encapsulated as the field map for \Lcs{psframe}. We can use the option +\Lkeyword{viewpoint} of \LPack{pst-3d} package to change the view. + The options framework are by default, the following: +\begin{verbatim} +\newpsstyle{grille}{subgriddiv=0,gridcolor=lightgray,griddots=10} +\newpsstyle{cadre}{linecolor=green!20} +\end{verbatim} + + So it is that they must change if we want change, as in +Example below. +\begin{LTXexample}[pos=t] +\psset{unit=0.7cm} +\newpsstyle{grille}{subgriddiv=0,gridcolor=blue!50,griddots=10} +\newpsstyle{cadre}{linecolor=yellow!50} +\begin{pspicture}(-7,-6)(7,6) +\psmagneticfieldThreeD[N=8,R=2,L=8,pointsB=1200,linecolor=blue,pointsS=2000](-7,-8)(7,8) +\end{pspicture} +\end{LTXexample} + +\begin{LTXexample}[pos=t] +\psset{unit=0.7cm} +\begin{pspicture}(-7,-6)(7,6) +\psmagneticfieldThreeD[N=2,R=2,L=2,linecolor=blue](-7,-8)(7,8) +\ThreeDput{\rput(0,-7){\textbf{Bobines de HELMHOLTZ}}} +\end{pspicture} +\end{LTXexample} + +\begin{LTXexample}[pos=t] +\psset{unit=0.75cm,AntiHelmholtz, + R=2,pointsB=500,pointsS=2000,PasB=0.02,PasS=0.00275,nS=10, + nL=2,drawSelf,styleSpire=styleSpire,styleCourant=sensCourant} +\newpsstyle{grille}{subgriddiv=0,gridcolor=blue!50,griddots=10} +\newpsstyle{cadre}{linecolor=yellow!50} +\begin{pspicture}(-7,-6)(7,6) +\psmagneticfieldThreeD[linecolor={[HTML]{660066}}](-7,-6)(7,6) +\end{pspicture} +\end{LTXexample} + + + + +\clearpage +\section{List of all optional arguments for \texttt{pst-magneticfield}} + +\xkvview{family=pst-magneticfield,columns={key,type,default}} + +\nocite{*} +\bgroup +\raggedright +\bibliographystyle{plain} +\bibliography{\jobname} +\egroup + + +\printindex + + + + +\end{document} diff --git a/Master/texmf-dist/doc/generic/pst-magneticfield/pst-magneticfield-docFR.bib b/Master/texmf-dist/doc/generic/pst-magneticfield/pst-magneticfield-docFR.bib new file mode 100644 index 00000000000..d02a96688b8 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-magneticfield/pst-magneticfield-docFR.bib @@ -0,0 +1,70 @@ +%% -*-bibtex-*- +@STRING{tugboat = {TUGboat} } +@STRING{dtk = {{D}ie {\TeX}nische {K}om{\"o}die} } + +@Book{companion, + author = {Michel Goosens and Frank Mittelbach and Sebastian Rahtz and Dennis Roegel and Herbert Vo\ss}, + title = {The {\LaTeX} {G}raphics {C}ompanion}, + publisher = {{Addison-Wesley Publishing Company}}, + edition = {second}, + year = {2007}, + address = {Reading, Mass.} +} + +@Article{girou:01:, + author = {Denis Girou}, + title = {Pr\'esentation de {PST}ricks}, + journal = {Cahier {GUT}enberg}, + year = 1994, + volume = {16}, + month = apr, + pages = {21-70} +} + +@Article{girou:02:, + author = {{Timothy Van} Zandt and Denis Girou}, + title = {Inside {PST}ricks}, + journal = TUGboat, + year = 1994, + volume = {15}, + month = sep, + pages = {239-246} +} + +@Book{PostScript, + Author = {Kollock, Nikolai G.}, + Title = {Post{S}cript richtig eingesetzt: vom {K}onzept zum + praktischen {E}insatz}, + Publisher = {IWT}, + Address = {Vaterstetten}, + year = 1989, +} + +@Manual{multido, + Title = {\texttt{multido.tex} - a loop macro, that supports fixed-point addition}, + Author = {{Timothy Van} Zandt}, + Organization = {}, + Address = {\url{CTAN:/graphics/pstricks/generic/multido.tex}}, + Note = {}, + year = 1997 +} + +@Book{PSTricks2, + author = {Herbert Vo\ss{}}, + title = {\texttt{PSTricks} -- {G}rafik f\"ur \TeX{} und \LaTeX}, + edition = {fifth}, + publisher = {DANTE -- Lehmanns}, + year = {2008}, + address = {Heidelberg/Hamburg} +} + +@Book{abramowitz, + author = {M. Abramowitz and I. A. Stegun }, + year = 1964, + title = {Handbook of {M}athematical {F}unctions with {F}ormulas, {G}raphs, and + {M}athematical {T}ables}, + publisher = {National Bureau of Standards Applied Mathematics Series, + U.S. Government Printing Office}, + address = {Washington, D.C., USA}, + Note = { Corrections appeared in later printings up to the 10th Printing}, +} diff --git a/Master/texmf-dist/doc/generic/pst-magneticfield/pst-magneticfield-docFR.pdf b/Master/texmf-dist/doc/generic/pst-magneticfield/pst-magneticfield-docFR.pdf Binary files differnew file mode 100644 index 00000000000..e97e584cf38 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-magneticfield/pst-magneticfield-docFR.pdf diff --git a/Master/texmf-dist/doc/generic/pst-magneticfield/pst-magneticfield-docFR.tex b/Master/texmf-dist/doc/generic/pst-magneticfield/pst-magneticfield-docFR.tex new file mode 100644 index 00000000000..1ba114629d4 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-magneticfield/pst-magneticfield-docFR.tex @@ -0,0 +1,301 @@ +%% $Id: pst-magneticfield-docFR.tex 322 2010-05-16 08:07:26Z herbert $ +\documentclass[11pt,english,french,BCOR10mm,DIV12,bibliography=totoc,parskip=false,smallheadings + headexclude,footexclude,oneside]{pst-doc} +\usepackage[latin1]{inputenc} +\usepackage{pst-magneticfield} +\let\pstMFfv\fileversion +\lstset{pos=t,language=PSTricks, + morekeywords={psmagneticfield,psmagneticfieldThreeD},basicstyle=\footnotesize\ttfamily} +\newcommand\Cadre[1]{\psframebox[fillstyle=solid,fillcolor=black,linestyle=none,framesep=0]{#1}} +\def\bgImage{% +\psset{unit=0.5cm} +\begin{pspicture}(-7,-6)(7,6) +\psmagneticfieldThreeD[N=2,R=2,L=2,linecolor=blue](-7,-8)(7,8) +\ThreeDput{\rput(0,-7){\textbf{Bobines de HELMHOLTZ}}} +\end{pspicture} +} +% +\begin{document} + +\title{\texttt{pst-magneticfield}} +\subtitle{Magnetic field lines of a solenoid; v.\pstMFfv} +\author{Juergen Gilg\\ Manuel Luque\\Herbert Vo\ss} +%\docauthor{Juergen Gilg\\Manuel Luque\\Herbert Vo\ss} +\date{\today} +\maketitle + + +\clearpage% +\begin{abstract} +Le package \LPack{pst-magneticfield} a pour objet de tracer l'allure des lignes de +champ d'un solénoïde. Les paramètres physiques du solénoïde sont le rayon, le nombre +de spires et la longueur, les valeurs par défaut sont données ci-dessous : +\begin{enumerate} + \item le nombre de spires : \LKeyset{N=6} ; + \item le rayon : \LKeyset{R=2} ; + \item la longueur : \LKeyset{L=4}. +\end{enumerate} +Le tracé a été modélisé avec la méthode de Runge-Kutta 2 qui, après plusieurs essais, +semble être le meilleur compromis entre rapidité des calculs et précision du tracé. +Le calcul des intégrales elliptiques nécessaires à l'évaluation du champ magnétique +a été réalisé par des approximations polynômiales tirées du ``\textit{Handbook of +Mathematical Functions With Formulas, Graph, And Mathematical Tables}'' de +Milton Abramowitz et Irene.A. Stegun \url{http://www.math.sfu.ca/~cbm/aands/}. +\end{abstract} + +\clearpage +\tableofcontents + + +\clearpage + +\section{Introduction} +Les options de tracé, avec les valeurs par défaut, sont les suivantes : +\begin{enumerate} + \item Le nombre de points maximum sur chaque ligne de l'ensemble de la bobine : \LKeyset{pointsB=500} ; + \item le nombre de points maximum sur des lignes autour de spires choisies : \LKeyset{pointsS=1000} ; + \item le nombre de lignes de l'ensemble de la bobine : \LKeyset{nL=8} ; + \item le pas du tracé pour les lignes de l'ensemble de la bobine : \LKeyset{PasB=0.02} ; + \item le pas du tracé pour les lignes autour de spires choisies : \LKeyset{PasS=0.00275} ; + \item la possibilité de choisir individuellement des spires pour améliorer le rendu + du tracé : \LKeyset{numSpires=\{\}} , on place à la suite du signe ``='' les numéros + des spires \textsf{1 2 3 etc.} en partant de la spire du haut. Par défaut, + toutes les spires sont ciblées. + \item Le nombre de lignes de champ autour des spires choisies : \LKeyset{nS=1}. + \item On peut décider de ne pas représenter le solénoïde avec l'option \LKeyset{drawSelf=false}, + c'est utile pour la représentation en 3D. + \item les options de tracé des spires (couleur, épaisseur, flèches) sont : + \begin{enumerate} + \item La couleur et l'épaisseur du trait des spires : \Lkeyset{styleSpire=styleSpire} ; + \item le fléchage du sens du courant : \Lkeyset{styleCourant=sensCourant}. + \end{enumerate} + +\begin{verbatim} +\newpsstyle{styleSpire}{linecap=1,linecolor=red,linewidth=2\pslinewidth} +\newpsstyle{sensCourant}{linecolor=red,linewidth=2\pslinewidth,arrowinset=0.1} +\end{verbatim} + + \item La couleur et l'épaisseur des lignes de champ se règlent avec les paramètres usuels + de \LPack{pstricks} : \Lkeyword{linecolor} et \Lkeyword{linewidth}. +\end{enumerate} +Une commande \Lcs{psmagneticfieldThreeD} permet la visualisation en 3D du solénoïde et +des lignes de champ. + +\clearpage +\section{Influence des paramètres physiques sur la carte du champ magnétique} +\subsection{La longueur du solénoïde} + +\begin{LTXexample}[pos=t] +\psset{unit=0.5cm} +\begin{pspicture*}[showgrid](-7,-8)(7,8) +\psmagneticfield[linecolor={[HTML]{006633}},N=3,R=2,nS=1] +\psframe*[linecolor={[HTML]{99FF66}}](-7,-8)(7,-7) +\rput(0,-7.5){[\Cadre{\textcolor{white}{L=4}},N=3,R=2,nS=1]} +\end{pspicture*} +\begin{pspicture*}[showgrid](-7,-8)(7,8) +\psmagneticfield[linecolor={[HTML]{006633}},L=8,N=3,R=2,nS=1,PasB=0.0025,pointsB=5500] +\psframe*[linecolor={[HTML]{99FF66}}](-7,-8)(7,-7) +\rput(0,-7.5){[\Cadre{\textcolor{white}{L=8}},N=3,R=2,nS=1]} +\end{pspicture*} +\end{LTXexample} + +\textbf{Remarque :} pour affiner le tracé du deuxième solénoïde, on a du augmenter +le nombre de points et diminuer le pas du tracé : \Cadre{\textcolor{white}{pointsB=5500,PasB=0.0025}}, +ce qui rallonge la durée des calculs. + + + +\clearpage + +\subsection{Le nombre de spires} +\begin{LTXexample}[pos=t] +\psset{unit=0.5} +\begin{pspicture*}[showgrid](-7,-8)(7,8) +\psmagneticfield[linecolor={[HTML]{006633}},N=1,R=2,nS=0] +\psframe*[linecolor={[HTML]{99FF66}}](-7,-8)(7,-7) +\rput(0,-7.5){[\Cadre{\textcolor{white}{N=1}},R=2,nS=0]} +\end{pspicture*} +\begin{pspicture*}[showgrid](-7,-8)(7,8) +\psmagneticfield[linecolor={[HTML]{006633}},N=2,R=2,L=2,PasS=0.003,nS=2] +\psframe*[linecolor={[HTML]{99FF66}}](-7,7)(7,8) +\rput(0,7.5){\Cadre{\textcolor{white}{Bobines de Helmholtz}}} +\psframe*[linecolor={[HTML]{99FF66}}](-7,-8)(7,-7) +\rput(0,-7.5){[\Cadre{\textcolor{white}{N=2}},R=2,L=2,PasS=0.003,nS=2]} +\end{pspicture*} +\end{LTXexample} + +\begin{LTXexample}[pos=t] +\psset{unit=0.5} +\begin{pspicture*}[showgrid](-7,-8)(7,8) +\psmagneticfield[linecolor={[HTML]{006633}},N=4,R=2,numSpires=2 3] +\psframe*[linecolor={[HTML]{99FF66}}](-7,-8)(7,-7) +\rput(0,-7.5){[\Cadre{\textcolor{white}{N=4}},R=2,L=4]} +\end{pspicture*} +\begin{pspicture*}[showgrid](-7,-8)(7,8) +\psmagneticfield[linecolor={[HTML]{006633}},N=5,R=2,L=5,PasS=0.004,nS=2 3 4] +\psframe*[linecolor={[HTML]{99FF66}}](-7,-8)(7,-7) +\rput(0,-7.5){[\Cadre{\textcolor{white}{N=5}},R=2,L=5]} +\end{pspicture*} +\end{LTXexample} + + +\clearpage +\section{Les options de tracé} +\subsection{Le nombre de lignes de champ} +En raison de la symétrie du phénomène le nombre de lignes de champ donné en option +\Lkeyword{nL} est la moitié du nombre réellement représenté auquel il faut ajouter +la ligne confondue avec l'axe de révolution. Il faut aussi rajouter les lignes +autour des spires \Lkeyword{nS}, ces spires pouvant être choisies individuellement +avec \Lkeyword{numSpires}. + + + +\begin{LTXexample}[pos=t] +\psset{unit=0.5} +\begin{pspicture*}[showgrid](-7,-8)(7,8) +\psmagneticfield[linecolor={[HTML]{000099}},N=1,R=2] +\psframe*[linecolor={[HTML]{3399FF}}](-7,-8)(7,-7) +\rput(0,-7.5){[\Cadre{\textcolor{white}{nL=8}},N=1,R=2]} +\end{pspicture*} +\begin{pspicture*}[showgrid](-7,-8)(7,8) +\psmagneticfield[linecolor={[HTML]{000099}},N=1,R=2,nL=12] +\psframe*[linecolor={[HTML]{3399FF}}](-7,-8)(7,-7) +\rput(0,-7.5){[\Cadre{\textcolor{white}{nL=12}},N=1,R=2]} +\end{pspicture*} +\end{LTXexample} + +\clearpage +\subsection{Le nombre de points et le pas du tracé} +Le tracé des lignes de champ est réalisé par une méthode numérique (RK2) et il s'ensuit +le pas du tracé et le nombre de points choisis influent sur la précision du tracé, +comme dans les deux exemples ci-dessous : + +\begin{LTXexample}[pos=t] +\psset{unit=0.5} +\begin{pspicture*}[showgrid](-7,-8)(7,8) +\psmagneticfield[linecolor={[HTML]{660066}},N=2,R=2,L=2,PasB=0.1,nS=0,nL=7,pointsB=100] +\psframe*[linecolor={[HTML]{996666}}](-7,7)(7,8) +\rput(0,7.5){\Cadre{\textcolor{white}{Bobines de Helmholtz}}} +\psframe*[linecolor={[HTML]{996666}}](-7,-8)(7,-7) +\rput(0,-7.5){[\Cadre{\textcolor{white}{PasB=0.1,nL=4,pointsB=100}}]} +\end{pspicture*} +\begin{pspicture*}[showgrid](-7,-8)(7,8) +\psmagneticfield[linecolor={[HTML]{660066}},N=2,R=2,L=2,PasB=0.4,nS=0,nL=7,pointsB=100] +\psframe*[linecolor={[HTML]{996666}}](-7,7)(7,8) +\rput(0,7.5){\Cadre{\textcolor{white}{Bobines de Helmholtz}}} +\psframe*[linecolor={[HTML]{996666}}](-7,-8)(7,-7) +\rput(0,-7.5){[\Cadre{\textcolor{white}{PasS=0.4,pointsB=100}}]} +\end{pspicture*} +\end{LTXexample} + +Si les valeurs par défaut ne conviennent pas il faut donc trouver par des +essais les valeurs qui donnent un tracé correct. + + +\clearpage + +\section{Le paramètre: numSpires} +\begin{LTXexample}[pos=t,wide] +\psset{unit=0.5} +\begin{pspicture*}[showgrid](-8,-10)(8,10) +\psset{linecolor=blue} +\psmagneticfield[R=2,L=12,N=8,pointsS=500,nL=14,nS=1,numSpires=1 3 6 8,PasB=0.075] +\psframe*[linecolor={[HTML]{99FF66}}](-8,-10)(8,-9) +\rput(0,-9.5){[\Cadre{\textcolor{white}{numSpires=1 3 6 8}},R=2,L=14]} +\multido{\i=0+1}{8}{\rput[l](!6 6 12 7 div \i\space mul sub){\the\multidocount}} +\end{pspicture*}\quad +\begin{pspicture*}[showgrid](0,-10)(16,10) +\psset{linecolor=blue} +\psmagneticfield[R=2,L=12,N=8,pointsS=500,nL=14,numSpires=,nS=1,PasB=0.075] +\psframe*[linecolor={[HTML]{99FF66}}](0,-10)(16,-9) +\rput(8,-9.5){[\Cadre{\textcolor{white}{numSpires=all}},R=2,L=14]} +\multido{\i=0+1}{8}{\rput[l](!6 6 12 7 div \i\space mul sub){\the\multidocount}} +\end{pspicture*} +\end{LTXexample} + + +\clearpage +\section{The parameter \nxLkeyword{AntiHelmholtz}} +\begin{LTXexample}[pos=t] +\psset{unit=0.75,AntiHelmholtz, + R=2,pointsB=500,pointsS=2000,PasB=0.02,PasS=0.00275,nS=10, + nL=2,drawSelf=true,styleSpire=styleSpire,styleCourant=sensCourant} +\newpsstyle{grille}{subgriddiv=0,gridcolor=blue!50,griddots=10} +\newpsstyle{cadre}{linecolor=yellow!50} +\begin{pspicture*}[showgrid](-7,-6)(7,6) +\psframe*[linecolor={[HTML]{996666}}](-7,7)(7,8) +\psmagneticfield[linecolor={[HTML]{660066}}] +\end{pspicture*} +\end{LTXexample} + + +\clearpage +\section{La vue en 3D} +La vue en 3D utilise la commande + +\begin{BDef} +\Lcs{psmagneticfield}\OptArgs\coord1\coord2\\ +\Lcs{psmagneticfieldThreeD}\OptArgs\coord1\coord2 +\end{BDef} + +dans laquelle les options sont les paramètres de +\Lcs{psmagneticfield} et \verb+(x1,y1)(x2,y2)+ les coordonnées des coins +inférieur gauche et supérieur droit du cadre dans lequel est encapsulée +la carte du champ comme pour \Lcs{psframe}. On pourra utiliser l'option \Lkeyword{viewpoint} du +package \LPack{pst-3d} pour modifier le point de vue. + +Les options du cadre sont, par défaut, les suivantes : +\begin{verbatim} +\newpsstyle{grille}{subgriddiv=0,gridcolor=lightgray,griddots=10} +\newpsstyle{cadre}{linecolor=green!20} +\end{verbatim} + +Ce sont donc celles-ci qu'il faudra modifier si on souhaite en changer, comme dans l'exemple ci-dessous. +\begin{LTXexample}[pos=t] +\psset{unit=0.7} +\newpsstyle{grille}{subgriddiv=0,gridcolor=blue!50,griddots=10} +\newpsstyle{cadre}{linecolor=yellow!50} +\begin{pspicture}(-7,-6)(7,6) +\psmagneticfieldThreeD[N=8,R=2,L=8,pointsB=1200,linecolor=blue,pointsS=2000](-7,-8)(7,8) +\end{pspicture} +\end{LTXexample} + +\begin{LTXexample}[pos=t] +\psset{unit=0.7} +\begin{pspicture}(-7,-6)(7,6) +\psmagneticfieldThreeD[N=2,R=2,L=2,linecolor=blue](-7,-8)(7,8) +\ThreeDput{\rput(0,-7){\textbf{Bobines de HELMHOLTZ}}} +\end{pspicture} +\end{LTXexample} + +\begin{LTXexample}[pos=t] +\psset{unit=0.75cm,AntiHelmholtz, + R=2,pointsB=500,pointsS=2000,PasB=0.02,PasS=0.00275,nS=10, + nL=2,drawSelf,styleSpire=styleSpire,styleCourant=sensCourant} +\newpsstyle{grille}{subgriddiv=0,gridcolor=blue!50,griddots=10} +\newpsstyle{cadre}{linecolor=yellow!50} +\begin{pspicture}(-7,-6)(7,6) +\psmagneticfieldThreeD[linecolor={[HTML]{660066}}](-7,-6)(7,6) +\end{pspicture} +\end{LTXexample} + + +\clearpage +\section{List of all optional arguments for \texttt{pst-magneticfield}} + +\xkvview{family=pst-magneticfield,columns={key,type,default}} + +\nocite{*} +\bgroup +\raggedright +\bibliographystyle{plain} +\bibliography{\jobname} +\egroup + + +\printindex + + + + +\end{document} diff --git a/Master/texmf-dist/source/generic/pst-magneticfield/Makefile b/Master/texmf-dist/source/generic/pst-magneticfield/Makefile new file mode 100644 index 00000000000..96b8b8a3ef4 --- /dev/null +++ b/Master/texmf-dist/source/generic/pst-magneticfield/Makefile @@ -0,0 +1,70 @@ + +# `Makefile' for `pst-magneticfield.pdf', hv, 2007/03/17 + +.SUFFIXES : .tex .ltx .dvi .ps .pdf .eps + +PACKAGE = pst-magneticfield + +MAIN = $(PACKAGE)-docFR + +TDS = ~/PSTricks/PSTricks-TDS + +LATEX = latex + +ARCHNAME = $(MAIN)-$(shell date +%y%m%d) + +ARCHFILES = $(PACKAGE).sty $(PACKAGE).tex $(PACKAGE).pro $(MAIN).tex README Changes Makefile + +all : doc clean tds +doc: $(MAIN).pdf + +$(MAIN).pdf : $(MAIN).ps + GS_OPTIONS=-dAutoRotatePages=/None ps2pdf $< + +$(MAIN).ps : $(MAIN).dvi + dvips $< + +$(MAIN).dvi : $(MAIN).tex + $(LATEX) $< + $(LATEX) $< + if ! test -f $(basename $<).glo ; then touch $(basename $<).glo; fi + if ! test -f $(basename $<).idx ; then touch $(basename $<).idx; fi + makeindex -t $(basename $<).ilg -s pst-doc.ist -o $(basename $<).ind $(basename $<).idx + makeindex -s gglo.ist -t $(basename $<).glg -o $(basename $<).gls \ + $(basename $<).glo + bibtex $(basename $<) + $(LATEX) $< + $(LATEX) $< + +clean : + $(RM) $(addprefix $(MAIN), .log .aux .glg .glo .gls .ilg .idx .ind .tmp .toc .out .blg .bbl ) + $(RM) $(addprefix $(MAIN), .dvi .ps .xcp) + +veryclean : clean + $(RM) $(addprefix $(MAIN), .pdf .bbl .blg) + +arch : + zip $(ARCHNAME).zip $(ARCHFILES) + +tds: + cp -u Changes $(TDS)/doc/generic/$(PACKAGE)/ + cp -u README $(TDS)/doc/generic/$(PACKAGE)/ + cp -u $(MAIN).pdf $(TDS)/doc/generic/$(PACKAGE)/ +# + cp -u Changes $(TDS)/tex/latex/$(PACKAGE)/ + cp -u $(PACKAGE).sty $(TDS)/tex/latex/$(PACKAGE)/ +# + cp -u Changes $(TDS)/tex/generic/$(PACKAGE)/ + cp -u $(PACKAGE).tex $(TDS)/tex/generic/$(PACKAGE)/ +# +# cp -u Changes $(TDS)/dvips/$(PACKAGE)/ +# cp -u $(PACKAGE).pro $(TDS)/dvips/$(PACKAGE)/ +# cp -u $(PACKAGE).pro ~/Links/dvips-local/ +# + cp -u Changes $(TDS)/source/$(PACKAGE)/ + cp -u $(MAIN).tex $(TDS)/source/$(PACKAGE)/ + cp -u $(MAIN).bib $(TDS)/source/$(PACKAGE)/ + cp -u Makefile $(TDS)/source/$(PACKAGE)/ + + +# EOF diff --git a/Master/texmf-dist/tex/generic/pst-magneticfield/pst-magneticfield.tex b/Master/texmf-dist/tex/generic/pst-magneticfield/pst-magneticfield.tex new file mode 100644 index 00000000000..8d8e583baba --- /dev/null +++ b/Master/texmf-dist/tex/generic/pst-magneticfield/pst-magneticfield.tex @@ -0,0 +1,379 @@ +%% Package `pst-magneticfield.tex' +%% +%% Manuel Luque +%% Jürgen Gilg +%% Herbert Voß +%% +%% This program can be redistributed and/or modified under +%% the terms of the LaTeX Project Public License Distributed +%% from CTAN archives in directory macros/latex/base/lppl.txt. +%% +%% A PSTricks related package to draw magnetic field lines +%% It uses the method from Heun +%% +\csname PSTMagneticFieldLoaded\endcsname +\let\PSTMagneticFieldLoaded\endinput +% +% Requires some packages +\ifx\PSTricksLoaded\endinput\else \input pstricks \fi +\ifx\PSTthreeDLoaded\endinput\else\input pst-3d \fi +\ifx\MultidoLoaded\endinput\else \input multido.tex\fi +\ifx\PSTXKeyLoaded\endinput\else \input pst-xkey \fi +% +\def\fileversion{1.10} +\def\filedate{2010/05/16} +\message{`pst-magneticfield' v\fileversion, \filedate\space (ml,jg,hv)} +% +\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax +% +\SpecialCoor +\pst@addfams{pst-magneticfield} +% the first three parameter cannot be read with \pst@getint, because \pstFP.. do not like +% the values ... used in \psmagenticfieldThreeD +\define@key[psset]{pst-magneticfield}{R}[1]{\def\psk@magneticfieldR{#1}}% rayon d'une spire +\define@key[psset]{pst-magneticfield}{N}[6]{\def\psk@magneticfieldN{#1}}% nombre de spires +\define@key[psset]{pst-magneticfield}{L}[4]{\def\psk@magneticfieldL{#1}}% Longueur de la bobine +\define@key[psset]{pst-magneticfield}{nL}[8]{\pst@getint{#1}\psk@magneticfieldNL}% nombre de lignes de champ +\define@key[psset]{pst-magneticfield}{numSpires}[]{\def\psk@magneticfieldChoixSpires{#1}}% choix individuel des spires +\psset[pst-magneticfield]{numSpires=}% toutes les spires par défaut +\define@key[psset]{pst-magneticfield}{pointsB}[500]{\pst@getint{#1}\psk@magneticfieldB} +\define@key[psset]{pst-magneticfield}{pointsS}[1000]{\pst@getint{#1}\psk@magneticfieldS}% nombre de points autour de chaque spire +\define@key[psset]{pst-magneticfield}{PasB}[0.02]{\pst@checknum{#1}\psk@magneticfieldPasB}% incrément du tracé autour de la bobine +\define@key[psset]{pst-magneticfield}{PasS}[0.00275]{\pst@checknum{#1}\psk@magneticfieldPasS}% incrément du tracé autour de chaque spire +\define@key[psset]{pst-magneticfield}{nS}[1]{\pst@getint{#1}\psk@magneticfieldNS}% nombre de lignes autour de chaque spire +\define@key[psset]{pst-magneticfield}{styleSpire}[styleSpire]{\def\psk@styleSpire{#1}} +\define@key[psset]{pst-magneticfield}{styleCourant}[sensCourant]{\def\psk@styleCourant{#1}} +% +\newpsstyle{styleSpire}{linecap=1,linecolor=red,linewidth=2\pslinewidth} +\newpsstyle{sensCourant}{linecolor=red,linewidth=2\pslinewidth,arrowinset=0.1} +\newpsstyle{grille}{subgriddiv=0,gridcolor=lightgray,griddots=10} +\newpsstyle{cadre}{linecolor=green!20} +% +\define@boolkey[psset]{pst-magneticfield}[Pst@]{drawSelf}[true]{} +\define@boolkey[psset]{pst-magneticfield}[Pst@]{AntiHelmholtz}[true]{} +% +\psset[pst-magneticfield]{R=1,L=4,N=6,pointsB=500,pointsS=1000, + PasB=0.02,PasS=0.00275,nS=1,nL=8,drawSelf,styleSpire=styleSpire, + styleCourant=sensCourant,AntiHelmholtz=false} +% +\def\psmagneticfield{\pst@object{psmagneticfield}} +\def\psmagneticfield@i{% + \pst@killglue% +% \ifPst@AntiHelmholtz\addto@par{N=2}\fi + \begin@SpecialObj% + \pst@Verb{% make it global + /NombreSpires \psk@magneticfieldN\space def + /Radius \psk@magneticfieldR\space def + /nombreLignes \psk@magneticfieldNL\space def + /TableauSpires [\psk@magneticfieldChoixSpires] def + \ifPst@AntiHelmholtz + TableauSpires length 0 eq {/TS [1 2] def} + {/TS TableauSpires def } ifelse + \else + TableauSpires length 0 eq {/TS [1 1 NombreSpires {} for] def} + {/TS TableauSpires def } ifelse + \fi + /StepLines Radius nombreLignes 1 add div def + NombreSpires 1 eq + { /Longueur 0 def + /inter 0 def } + { /Longueur \psk@magneticfieldL\space def + /inter Longueur NombreSpires 1 sub div def } ifelse % intervalle entre 2 spires + /NbrePointsB \psk@magneticfieldB\space def + /NbrePointsS \psk@magneticfieldS\space def + \ifPst@AntiHelmholtz + /inter Radius def + /yA Radius 2 div def + \else + /yA Longueur 2 div def + \fi + /PasB \psk@magneticfieldPasB\space def + /PasS \psk@magneticfieldPasS\space def + /nS \psk@magneticfieldNS\space def + }% + \addto@pscode{ + /fleche { + gsave + x2 y2 moveto + y2 y1 sub x2 x1 sub atan rotate % 1 1 scale + -1 CLW mul 2 CLW mul rlineto + 7 CLW mul -2 CLW mul rlineto + -7 CLW mul -2 CLW mul rlineto + closepath + fill + grestore + } def + /Calcul_B_Spires { + /Bx 0 def + /By 0 def + 1 1 NombreSpires { % on calcule le champ resultant de toutes les spires + /iS ED % numero de la spire + /yi yA iS 1 sub inter mul sub def % position de la spire + /Bx0 { + /arz {1 Radius xP add dup mul yP yi add dup mul add sqrt div} def + yP yi add xP div arz mul + EllipticK neg + Radius dup mul xP dup mul add yP yi add dup mul add + Radius xP sub dup mul yP yi add dup mul add div + EllipticE mul + add + mul + } def + /By0 { + /arz {1 Radius xP add dup mul yP yi add dup mul add sqrt div} def + arz + EllipticK + Radius dup mul xP dup mul sub yP yi add dup mul sub + Radius xP sub dup mul yP yi add dup mul add div + EllipticE mul + add + mul + } def + \ifPst@AntiHelmholtz + iS 2 eq {/Bx0 Bx0 neg def /By0 By0 neg def} if + \fi + /Bx Bx Bx0 add def + /By By By0 add def + } for + } def + /EllipticKE{ + /K {2 Radius xP mul sqrt mul arz mul} def + /m1 {1 K dup mul sub} def + /m2 {m1 dup mul} def + /m3 {m2 m1 mul} def + /m4 {m2 dup mul} def + /m_1 {1 m1 div} def + /EllipticK { + 0.5 + 0.12498593597 m1 mul add + 0.06880248576 m2 mul add + 0.03328355376 m3 mul add + 0.00441787012 m4 mul add + m_1 ln mul + 1.38629436112 add + 0.09666344259 m1 mul add + 0.03590092383 m2 mul add + 0.03742563713 m3 mul add + 0.01451196212 m4 mul add + } def + /EllipticE { + 0.24998368310 m1 mul + 0.09200180037 m2 mul add + 0.04069697526 m3 mul add + 0.00526449639 m4 mul add + m_1 ln mul + 1 add + 0.44325141463 m1 mul add + 0.062606012206 m2 mul add + 0.04757383546 m3 mul add + 0.01736506451 m4 mul add + } def + Calcul_B_Spires +% au point Pi + /xPi xP def + /yPi yP def + /NormeB Bx dup mul By dup mul add sqrt def + /dX Bx NormeB div Pas mul def + /dXi dX def + /dY By NormeB div Pas mul def + /dYi dY def + /xCi xPi dX add def + /yCi yPi dY add def + /xP xCi def + /yP yCi def + Calcul_B_Spires +% au point C + /NormeB Bx dup mul By dup mul add sqrt def + /dX Bx NormeB div Pas mul def + /dY By NormeB div Pas mul def + /yP yPi dY dYi add 2 div add def + } def +% + 0 0 translate + /Lignes_Champ { + /Ligne_Champ [ + NbrePoints {% + EllipticKE + [ xP yP \tx@ScreenCoor ] + trace 1 eq {By 0 lt Bx 0 lt and {exit} if} if + } repeat + ] def +% + Ligne_Champ 0 get aload pop moveto % xP yP + 1 1 Ligne_Champ length 1 sub { + /iCompteur exch def + Ligne_Champ iCompteur get aload pop lineto + } for + stroke +% les flèches (xP,yP) + Ligne_Champ dup length 1 sub 3 div cvi get aload pop /y1 exch def /x1 exch def + Ligne_Champ dup length 1 sub 3 div cvi 1 add get aload pop /y2 exch def /x2 exch def + nCount 0 eq {/yAxe1 y1 def /yAxe2 y2 def} if + fleche +% + Ligne_Champ 0 get aload pop neg moveto % xP -yP + 1 1 Ligne_Champ length 1 sub { + /iCompteur ED + Ligne_Champ iCompteur get aload pop neg lineto + } for + stroke + trace 1 eq { +% (xP,-yP) + Ligne_Champ dup length 1 sub 3 div cvi get aload pop /y2 exch neg def /x2 ED + Ligne_Champ dup length 1 sub 3 div cvi 1 add get aload pop /y1 exch neg def /x1 ED + fleche + } if + Ligne_Champ 0 get aload pop exch neg exch moveto % -xP yP + 1 1 Ligne_Champ length 1 sub { + /iCompteur ED + Ligne_Champ iCompteur get aload pop exch neg exch lineto + } for + stroke +% (-xP,yP) + Ligne_Champ dup length 1 sub 3 div cvi get aload pop /y1 exch def /x1 exch neg def + Ligne_Champ dup length 1 sub 3 div cvi 1 add get aload pop /y2 exch def /x2 exch neg def + fleche + Ligne_Champ 0 get aload pop exch neg exch neg moveto % -xP -yP + 1 1 Ligne_Champ length 1 sub { + /iCompteur ED + Ligne_Champ iCompteur get aload pop exch neg exch neg lineto + } for + stroke + trace 1 eq { +% (-xP,-yP) + Ligne_Champ dup length 1 sub 3 div cvi get aload pop /y2 exch neg def /x2 exch neg def + Ligne_Champ dup length 1 sub 3 div cvi 1 add get aload pop /y1 exch neg def /x1 exch neg def + fleche + } if + } def +% +% lignes de champ de l'ensemble de la bobine + /trace 1 def + /nCount 0 def +% 0.1 Radius mul StepLines Radius mul 0.9 Radius mul { + StepLines StepLines Radius 1.5 StepLines mul sub { + /NbrePoints NbrePointsB def + /xStart ED + /yStart 0 def + /Pas PasB def + /xP xStart def + /yP yStart Pas sub def + Lignes_Champ + /nCount nCount 1 add def + } for + \ifPst@AntiHelmholtz\else + % l'axe orienté de la bobine + 0 -10 \tx@ScreenCoor moveto + 0 10 \tx@ScreenCoor lineto + stroke + /x1 0 def + /y1 yAxe1 def + /y2 yAxe2 def + /x2 0 def + fleche + %/x1 0 def + /y1 yAxe2 neg def + /y2 yAxe1 neg def + %/x2 0 def + fleche + \fi + % quelques lignes de champ autour de chaque spire + /trace 0 def + /increment 0.25 Radius mul def + \ifPst@AntiHelmholtz + /Pas PasS def + /NbrePoints NbrePointsS def + \fi + nS { % nS lignes + 0 1 TS length 1 sub { + /nTemp ED + /iS TS nTemp get def % numero de la spire en partant du haut + iS 0 eq { /iS 1 def } if % iS ne peut pas = 0 + iS NombreSpires gt { /iS NombreSpires def } if % iS ne peut pas > nbre spires + /yi yA iS 1 sub inter mul sub def % position du centre de la spire + \ifPst@AntiHelmholtz\else + /NbrePoints NbrePointsS def + /Pas PasS def + \fi + /xStart Radius increment add def + /yStart yi def + /xP xStart def + /yP yStart Pas sub def + Lignes_Champ + } for + \ifPst@AntiHelmholtz /NbrePoints NbrePoints 750 add def \fi + /increment increment 0.2 Radius mul add def + } repeat + }% + \ifPst@drawSelf + \ifPst@AntiHelmholtz + \psline[style=\psk@styleSpire](!Radius neg Radius 2 div)(!Radius Radius 2 div) + \psline[style=\psk@styleCourant]{<-}(!-0.2 Radius 2 div)(!0.2 Radius 2 div) + \psline[style=\psk@styleSpire](!Radius neg Radius 2 div neg)(!Radius Radius 2 div neg) + \psline[style=\psk@styleCourant]{->}(!-0.2 Radius 2 div neg)(!0.2 Radius 2 div neg) + \else + \multido{\i=1+1}{\psk@magneticfieldN}{% numero de la spire + \pst@Verb{ /Yspire yA \i\space 1 sub inter mul sub def } % position de la spire + \psline[style=\psk@styleSpire](! Radius neg Yspire)(! Radius Yspire) + \psline[style=\psk@styleCourant]{->}(!-0.2 Yspire)(!0.2 Yspire)} + \fi + \fi% + \end@SpecialObj% + \ignorespaces} +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%\psmagneticfieldThreeD%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +\def\psmagneticfieldThreeD{\pst@object{psmagneticfieldThreeD}} +\def\psmagneticfieldThreeD@i(#1,#2)(#3,#4){% +% \ifPst@AntiHelmholtz\addto@par{N=2}\fi + \begingroup + \use@par + \ifPst@AntiHelmholtz + \pstFPdiv\yA{\psk@magneticfieldR}{2} + \ThreeDput{% + \begin{psclip}{\psframe(#1,#2)(#3,#4)} + \psframe*[style=cadre](#1,#2)(#3,#4) + \psgrid[style=grille](#1,#2)(#3,#4) + \psmagneticfield[drawSelf=false]% + \end{psclip}} + \ThreeDput[normal=0 1 0](0,\yA,0){% + \psarc[linecolor=red,linewidth=3\pslinewidth](0,0){\psk@magneticfieldR}{0}{180} + \psarc[linecolor=red,linewidth=3\pslinewidth]{<-}(0,0){\psk@magneticfieldR}{80}{90} + \psarc[linecolor=red,linewidth=1\pslinewidth,linestyle=dashed](0,0){\psk@magneticfieldR}{180}{360}} + \ThreeDput[normal=0 1 0](0,-\yA,0){% + \psarc[linecolor=red,linewidth=3\pslinewidth](0,0){\psk@magneticfieldR}{0}{180} + \psarc[linecolor=red,linewidth=3\pslinewidth]{->}(0,0){\psk@magneticfieldR}{80}{90} + \psarc[linecolor=red,linewidth=1\pslinewidth,linestyle=dashed](0,0){\psk@magneticfieldR}{180}{360}} + \else + \ifnum\psk@magneticfieldN=1 + \def\MF@inter{0} + \def\yA{0} + \else + \pstFPsub\CalcIntermediaire{\psk@magneticfieldN}{1} + \pstFPdiv\MF@inter{\psk@magneticfieldL}{\CalcIntermediaire} + \pstFPdiv\yA{\psk@magneticfieldL}{2} + \fi + \ThreeDput{% + \begin{psclip}{\psframe(#1,#2)(#3,#4)} + \psframe*[style=cadre](#1,#2)(#3,#4) + \psgrid[style=grille](#1,#2)(#3,#4) + \psmagneticfield[drawSelf=false]% + \end{psclip}} + \multido{\iN=1+1,\iS=0+1}{\psk@magneticfieldN}{% + \pstFPmul\MF@calcA{\iS}{\MF@inter} + \pstFPsub\posSpire{\yA}{\MF@calcA} + \ThreeDput[normal=0 1 0](0,\posSpire,0){% + \psarc[linecolor=red,linewidth=3\pslinewidth](0,0){\psk@magneticfieldR}{0}{180} + \psarc[linecolor=red,linewidth=3\pslinewidth]{->}(0,0){\psk@magneticfieldR}{80}{90} + \psarc[linecolor=red,linewidth=1\pslinewidth,linestyle=dashed](0,0){\psk@magneticfieldR}{180}{360}}% + }% + \fi + \endgroup} +% +\catcode`\@=\PstAtCode\relax +% +%% END +\endinput + diff --git a/Master/texmf-dist/tex/latex/pst-magneticfield/pst-magneticfield.sty b/Master/texmf-dist/tex/latex/pst-magneticfield/pst-magneticfield.sty new file mode 100644 index 00000000000..3ae0e4bd760 --- /dev/null +++ b/Master/texmf-dist/tex/latex/pst-magneticfield/pst-magneticfield.sty @@ -0,0 +1,9 @@ +\RequirePackage{pstricks} +\RequirePackage{pst-3d} +\RequirePackage{multido} +\ProvidesPackage{pst-magneticfield}[2010/05/15 package wrapper for + pst-magneticfield.tex] +\input{pst-magneticfield.tex} +\ProvidesFile{pst-magneticfield.tex} + [\filedate\space v\fileversion\space `pst-magneticfield' (ML&JG)] +\endinput diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index 058be613765..df2f8e8b416 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -245,7 +245,7 @@ my @TLP_working = qw( pst-eps pst-eucl pst-exa pst-fill pst-fr3d pst-fractal pst-fun pst-func pst-gantt pst-geo pst-grad pst-infixplot pst-jtree pst-knot pst-labo - pst-lens pst-light3d pst-math pst-mirror pst-node + pst-lens pst-light3d pst-magneticfield pst-math pst-mirror pst-node pst-ob3d pst-optexp pst-optic pst-osci pst-pad pst-pdgr pst-platon pst-plot pst-poly pst-pdf pst-qtree diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index d581675d0b6..e885c1892e0 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -540,6 +540,7 @@ $Master = "$mydir/../.."; 'pst-labo', "&MAKEpst", 'pst-lens', "&MAKEpst", 'pst-light3d', "&MAKEpst", + 'pst-magneticfield', "&MAKEpst", 'pst-math', "&MAKEpst", 'pst-mirror', "&MAKEpst", 'pst-node', "&MAKEpst", diff --git a/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc b/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc index 9397e17385d..83199663d0b 100644 --- a/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc @@ -41,6 +41,7 @@ depend pst-knot depend pst-labo depend pst-lens depend pst-light3d +depend pst-magneticfield depend pst-math depend pst-mirror depend pst-node diff --git a/Master/tlpkg/tlpsrc/pst-magneticfield.tlpsrc b/Master/tlpkg/tlpsrc/pst-magneticfield.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/Master/tlpkg/tlpsrc/pst-magneticfield.tlpsrc |