Edit and compile if you like:
% Author: Izaak Neutelings (March 2020) \documentclass[border=3pt,tikz]{standalone} \usepackage{amsmath} % for \dfrac \usepackage{physics} \usepackage{ifthen} \usepackage{tikz,pgfplots} \usepackage{tikz-3dplot} \usepackage{auto-pst-pdf} \usepackage{pst-magneticfield} \usepackage[outline]{contour} % glow around text \usetikzlibrary{angles,quotes} % for pic (angle labels) \usetikzlibrary{arrows,arrows.meta} \usetikzlibrary{calc} \usetikzlibrary{decorations.markings} \tikzset{>=latex} % for LaTeX arrow head \usepackage{xcolor} \colorlet{Ecol}{orange!90!black} \colorlet{EcolFL}{orange!80!black} \colorlet{veccol}{green!45!black} \colorlet{projcol}{blue!70!black} \colorlet{EFcol}{red!60!black} \colorlet{Bcol}{violet!90} \colorlet{Bcol1}{violet!80!blue!90} \colorlet{Bcol2}{violet!80!red!90} \colorlet{BFcol}{red!70!black} \colorlet{veccol}{green!45!black} \colorlet{Icol}{blue!70!black} \colorlet{Ampcol}{green!60!black!70} \tikzstyle{BField}=[->,thick,Bcol] \tikzstyle{current}=[->,Icol,thick] \tikzstyle{force}=[->,thick,BFcol] \tikzstyle{vector}=[->,thick,veccol] \tikzstyle{velocity}=[->,very thick,vcol] \tikzstyle{metal}=[top color=black!15,bottom color=black!25,middle color=black!20,shading angle=10] \tikzstyle{darkmetal}=[top color=black!40,bottom color=black!70,middle color=black!30,shading angle=10] \tikzstyle{lightmetal}=[thin,black!20,top color=black!3,bottom color=black!6,middle color=black!1,shading angle=10] \tikzstyle{proj}=[projcol!80,line width=0.08] %very thin \tikzstyle{area}=[draw=veccol,fill=veccol!80,fill opacity=0.6] \tikzstyle{measline}=[{Latex[length=3]}-{Latex[length=3]}] \tikzset{ BFieldLine/.style={thick,Bcol,decoration={markings,mark=at position #1 with {\arrow{latex}}}, postaction={decorate}}, BFieldLine/.default=0.5, Ampcurve/.style={Ampcol,decoration={markings,mark=at position #1 with {\arrow{latex}}}, postaction={decorate}}, Ampcurve/.default=0.55, pics/Bin/.style={ code={ \def\R{0.12} \draw[pic actions,line width=0.6,#1,fill=white] % ,thick (0,0) circle (\R) (-135:.75*\R) -- (45:.75*\R) (-45:.75*\R) -- (135:.75*\R); }}, pics/Bout/.style={ code={ \def\R{0.12} \draw[pic actions,line width=0.6,#1,fill=white] (0,0) circle (\R); \fill[pic actions,#1] (0,0) circle (0.3*\R); }}, pics/Bin/.default=Bcol, pics/Bout/.default=Bcol, } \tikzstyle{measure}=[fill=white,midway,outer sep=2] %\newcommand\arrmark[1]{mark=at position #1 with {\arrow{latex}}} %\def\myarrmark#1{mark=at position #1 with {\arrow{latex}}} \contourlength{1.4pt} % RING SHADING \makeatletter \pgfdeclareradialshading[tikz@ball]{ring}{\pgfpoint{0cm}{0cm}}% {rgb(0cm)=(1,1,1); rgb(0.719cm)=(1,1,1); color(0.72cm)=(tikz@ball); rgb(0.9cm)=(1,1,1)} \tikzoption{ring color}{\pgfutil@colorlet{tikz@ball}{#1}\def\tikz@shading{ring}\tikz@addmode{\tikz@mode@shadetrue}} \makeatother \begin{document} % SOLENOID MAGNETIC FIELD + Ampère's law \contourlength{1.0pt} \begin{tikzpicture} \message{Loop with Ampere's law start. ^^J} \def\R{1} \def\N{12} \def\NB{3} \def\L{6} \def\t{0.20*\R} \def\w{\L/(\N-1)} %\draw[current] (-0.6*\R,-0.01*\R) arc (-94:-86:{0.6*\R/sin(4)}) % node[midway,below=0.6] {\contour{white}{$I$}}; % WIRE BACK \foreach \i [evaluate={\x=-\L/2+(\i-1)*\w; \ang=atan(4*\R/(\w));}] in {1,...,\N}{ \ifthenelse{\i<\N}{ \draw[lightmetal] ({\x+\w/2},-\R)++(\ang+90:\t/2) to[out=\ang+5,in=\ang-185]++ (\ang:2.02*\R) -- ({\x+\w},\R) --++ (\ang-90:\t/2) to[out=\ang-185,in=\ang+5]++ (\ang-180:2.02*\R) -- cycle; }{} } % MAGNETIC FIELDLINES \foreach \i [evaluate={\y=(\i-\NB/2-0.5)*1.4*\R/\NB}] in {1,...,\NB}{ \draw[BFieldLine={0.505}] (-0.55*\L,\y) -- (0.62*\L,\y); } \node[Bcol] at (0.61*\L,0.76*\R) {$\vb{B}$}; % AMPERE's LOOP \draw[Ampcol] (-0.27*\L,0.6*\R) -| (0.27*\L,1.5*\R) -| cycle; \draw[Ampcurve={0.54}] (-0.27*\L,0.6*\R) -- (0.27*\L,0.6*\R) node[midway,above,scale=0.8] {1}; \draw[Ampcurve={0.68}] ( 0.27*\L,0.6*\R) -- (0.27*\L,1.5*\R) node[midway,above=3,above right=-1,scale=0.8] {2}; \draw[Ampcurve={0.55}] ( 0.27*\L,1.5*\R) -- (-0.27*\L,1.5*\R) node[midway,above=3,above=-1,scale=0.8] {3}; \draw[Ampcurve={0.57}] (-0.27*\L,1.5*\R) -- (-0.27*\L,0.6*\R) node[midway,above=3,above left=-1,scale=0.8] {4}; % WIRE FRONT \foreach \i [evaluate={\x=-\L/2+(\i-1)*\w; \ang=atan(4*\R/(\w));}] in {1,...,\N}{ \draw[metal] (\x,\R)++(-90-\ang:\t/2) --++ (90-\ang:\t) to[out=-\ang-5,in=185-\ang]++ (-\ang:2.02*\R) -- ({\x+\w/2},-\R) --++ (-90-\ang:\t/2) to[out=185-\ang,in=-\ang-5] cycle; \pic[scale=0.81] at ({\x+\w/2},-\R) {Bin={Icol}}; \pic[scale=0.81] at (\x,\R) {Bout={Icol}}; } \node[Icol] at (-0.545*\L,1.02*\R) {$I$}; % \foreach \i [evaluate={\x=-\L/2+(\i-1)*\L/(\N-1); \ang=atan(2*\R*(\N-1)/\L)}] in {1,...,\N}{ % \ifthenelse{\i<\N}{ % \draw[lightmetal] % (\x,-\R)++(\ang+90:\t/2) --++ (\ang:2.08*\R) -- ({\x+\L/(\N-1)},\R) --++(\ang-90:\t/2) --++ (\ang-180:2.08*\R) ; % }{} % \draw[metal] (\x-\t/2,\R) arc (180:0:\t/2) --++ (0,-2*\R) arc (0:-180:\t/2) -- cycle; % \pic[scale=0.81] at (\x,-\R) {Bin={Icol}}; % \pic[scale=0.81] at (\x,\R) {Bout={Icol}}; % } \message{Loop with Ampere's law done. ^^J} \end{tikzpicture} % SOLENOID MAGNETIC FIELD \def\xmax{6} \def\ymax{3.5} \begin{tikzpicture}[shift={(\xmax+0.024,\ymax+0.024)}] \message{Solenoid start. ^^J} \def\R{1} \def\N{8} \def\L{6.5} \def\t{0.11*\R} \begin{scope} %[shift={(3,3)}] \clip (-\xmax,-\ymax) rectangle (\xmax,\ymax); \begin{pspicture*}(-\xmax,-\ymax)(\xmax,\ymax) %dotangle=-90 \rotatebox{-90}{ \psframe[linecolor=white](-\ymax,-\xmax)(\ymax,\xmax) \psmagneticfield[ N=\N,R=\R,L=\L, nL=4,pointsB=1000,%PasB=0.002, nS=1,numSpires=,PasS=0.001,pointsS=1200, %2 3 4 5 6 7,PasS=0.004 linewidth=1.0pt,linecolor=Bcol,drawSelf=false ](-\ymax,-\xmax)(\ymax,\xmax)} \end{pspicture*} \end{scope} \foreach \i [evaluate={\x=-\L/2+(\i-1)*\L/(\N-1);}] in {1,...,\N}{ \draw[metal] (\x-\t/2,\R) arc (180:0:\t/2) --++ (0,-2*\R) arc (0:-180:\t/2) -- cycle; } \message{Solenoid done. ^^J} \end{tikzpicture} \end{document}
Click to download: magnetic_field_solenoid.tex • magnetic_field_solenoid.pdf
Open in Overleaf: magnetic_field_solenoid.tex