TransWikia.com

How to draw Aston curve using TikZ?

TeX - LaTeX Asked on April 10, 2021

enter image description here

Is there any possible way to draw Aston curve without using begin{pspicture}, because here in this website they used it but I didn’t get their method, here’s the code they’ve used :

 documentclass{article}
usepackage[T1]{fontenc}
usepackage[latin1]{inputenc}
usepackage[a4paper]{geometry}
usepackage{lmodern}
usepackage{pst-plot,pst-node,pst-blur,url}
usepackage{frenchle}
SpecialCoor
newcommandencadre[2][0.8]{begin{center}
psframebox[fillstyle=solid,fillcolor=blue!20,linestyle=none,shadow=true,shadowcolor=gray,shadowsize=0.15cm,blur=true]{
  begin{minipage}{#1linewidth}
  {#2}
  end{minipage}}
end{center}}
makeatletter
defpnodeAston{defpst@par{}pst@object{pnodeAston}}
defpnodeAston@i(#1,#2,#3)#4{{%
  begin@ClosedObj
pnode(!%
    /m_e 0.000549 def % masse de l'électron
    /m_n 1.008665 def % masse du neutron
    /m_p 1.007287 def % masse du proton
    /u 931.5 def % unité de masse atomique en MeV
    /N_nu #1 def % nombre de nucléons
    /N_p #2 def  % nombre de protons
    /m_A #3 def  % masse atomique en u
    /N_ne N_nu N_p sub def % nombre de neutrons
    /M_c N_p m_p mul N_ne m_n mul add def % masse des constituants
    /M_nu m_A N_p m_e mul sub def % masse des nucléons
    /D_m M_c M_nu sub def % défaut de masse
    /Energy D_m u mul def % Énergie de liaison du noyau
    /E_B Energy N_nu div def  % Énergie de liaison du noyau/nucléon
    /x_A N_nu 20 div def
    x_A
    E_B neg
 ){#4}%
   end@ClosedObj}}
makeatother
savedata{NucleonsEnergy}[ %
 2 -1.12
 3 -2.83
 3 -2.58
 4 -7.08
 6 -5.34
 7 -5.61
 9 -6.47
 10 -6.48
 11 -6.93
 12 -6.032
 13 -7.47
 15 -7.7
 19 -7.78
 23 -8.11
 27 -8.33
 35 -8.52
 40 -8.55
 45 -8.62
 52 -8.78
 56 -8.79
 58 -8.74
 63 -8.76
 69 -8.73
 75 -8.7
 85 -8.7
 93 -8.67
 94 -8.597
 98 -8.64
 109 -8.55
 120 -8.51
 127 -8.45
 133 -8.42
 139 -8.312
 140 -8.376
 165 -8.15
 184 -8.01
 200 -7.91
 210 -7.84
 235 -7.591
 238 -7.57]
 %
%
savedata{NucleonsEnergyClip}[ %
 40 -8.55
 45 -8.62
 52 -8.78
 56 -8.79
 58 -8.74
 63 -8.76
 69 -8.73
 75 -8.7
 85 -8.7
 93 -8.67
 94 -8.597
 98 -8.64
 109 -8.55
 120 -8.51
 127 -8.45
 133 -8.42
 139 -8.312
 140 -8.376
 ]
title{Courbe d'textsc{Aston}}
author{Manuel Luque}
date{29 octobre 2,006}
begin{document}
maketitle
begin{abstract}
C'est un essai de dessin de la courbe d'textsc{Aston}, laquelle représente l'opposé de l'énergie de liaison par nucléon en fonction du nombre de
nucléons, avec une commande verb+pnodeAston+ permettant de placer sur la courbe un noyau quelconque défini par le triplet $(A,Z,mathrm{m})$ où
$A$ est le nombre de nucléons, $Z$ le nombre de protons et $mathrm{m}$ la masse atomique en unité de masse atomique.
end{abstract}
section{Courbe d'Aston}
begin{center}
begin{pspicture}(0,2)(12,-10)
pnodeAston(190,74,189.96318){W190}
pnodeAston(40,20,39.96259){Ca40}
pscustom[linestyle=none]{%
psline(W190)(!190 20 div 0)psline(!190 20 div 0)(!40 20 div 0)
psline(!40 20 div 0)(Ca40)
listplot[xunit=0.05]{NucleonsEnergyClip}
fill[fillstyle=solid,fillcolor=yellow!50]}%
listplot[xunit=0.05,showpoints=true]{NucleonsEnergy}
psgrid[gridlabels=0pt,subgriddiv=0](12,-10)%
psaxes[Dx=20,xunit=0.05](240,-10)
psline[xunit=0.05]{->}(250,0)
uput[u](12.5,0){$A$}
psline{->}(0,1)
uput[r](0,1){$displaystyle -frac{E_l}{A}$ en MeV par nucléon}
% fission
psset{dotsize=6pt}
pnodeAston(235,92,235.0439){U235}
psdot[dotstyle=o,dotsize=7pt](U235)
psdot[linecolor=red](U235)
uput[d](U235){$mathrm{^{235}_{hphantom{2}{92}}U}$}%
pnodeAston(139,54,138.918793){Xe139}
uput[d](Xe139){$mathrm{^{139}_{hphantom{1}{54}}Xe}$}
pnodeAston(94,38,93.915361){Sr94}
uput[d](Sr94){$mathrm{^{94}_{{38}}Sr}$}
nccurve[angleA=120,angleB=60,arrowsize=.2,arrowinset=0.2,linecolor=red,nodesepB=5pt]{->}{U235}{Xe139}
nccurve[angleA=120,angleB=60,arrowsize=.2,arrowinset=0.2,linecolor=red,nodesepB=5pt]{->}{U235}{Sr94}
psdot[dotstyle=o,dotsize=7pt](Xe139)
psdot[dotstyle=o,dotsize=7pt](Sr94)
psdot[linecolor=red](Xe139)psdot[linecolor=red](Sr94)
% fusion
pnodeAston(2,1,2.014101){H2}
psdot[dotstyle=o,dotsize=7pt](H2)
psdot[linecolor=green](H2)
uput[r](H2){$mathrm{^2_2H}$}%
pnodeAston(3,1,3.016049){H3}
psdot[dotstyle=o,dotsize=7pt](H3)
psdot[linecolor=green](H3)
uput[r](H3){$mathrm{^3_1H}$}
pnodeAston(4,2,4.002603){He4}
uput[d](He4){$mathrm{^4_2He}$}
nccurve[angleA=0,angleB=30,arrowsize=.2,arrowinset=0.2,linecolor=green,nodesepB=5pt]{->}{H2}{He4}
nccurve[angleA=0,angleB=30,arrowsize=.2,arrowinset=0.2,linecolor=green,nodesepB=5pt]{->}{H3}{He4}
psdot[dotstyle=o,dotsize=7pt](He4)
psdot[linecolor=green](He4)
pnodeAston(56,26,55.934937){Fe}
psdot[dotstyle=o,dotsize=7pt](Fe)
psdot[linecolor=blue](Fe)
uput[d](Fe){blue$mathrm{^{56}_{26}Fe}$}
end{pspicture}
end{center}
section{Quelques considérations}
Les calculs sont faits en textsf{postscript} en utilisant les relations classiques pour déterminer
l'énergie de liaison des noyaux. S'agissant de calculs relativement simples, ceux-ci pourraient aussi bien
être effectués en TeX{}, peut-être dans une autre version ? Y-a-t-il un volontaire ?
 
La courbe est tracée à partir d'un fichier de valeurs pré-calculées, qui peut lui aussi, être complété :
encadre[0.62]{$mathsf{backslash listplot[xunit=0.05,showpoints=true]{backslash NucleonsEnergy}}$}
Par contre les calculs de la commande :
encadre[0.25]{$mathsf{backslash pnodeAston(A,Z,m){X}}$} sont effectués, comme précisé ci-dessus, en textsf{postscript}.
begin{verbatim}
    /m_e 0.000549 def % masse de l'électron
    /m_n 1.008665 def % masse du neutron
    /m_p 1.007287 def % masse du proton
    /u 931.5 def % unité de masse atomique en MeV
    /N_nu #1 def % nombre de nucléons
    /N_p #2 def  % nombre de protons
    /m_A #3 def  % masse atomique en u
    /N_ne N_nu N_p sub def % nombre de neutrons
    /M_c N_p m_p mul N_ne m_n mul add def % masse des constituants
    /M_nu m_A N_p m_e mul sub def % masse des nucléons
    /D_m M_c M_nu sub def % défaut de masse
    /Energy D_m u mul def % Énergie de liaison du noyau
    /E_B Energy N_nu div def  % Énergie de liaison du noyau/nucléon
end{verbatim}
section{Un tableau de quelques masses atomiques}
Ce tableau ne demande, évidemment, qu'à être complété.
begin{center}
input{massesatomiques.tex}
end{center}
section{Quelques références}
Les données concernant les masses atomiques et les énergies de liaison sont sur le site :
encadre[0.65]{url{http://www-nds.iaea.org/masses/mass.mas03round}}
end{document}

I prefer if it’s with TikZ, it’s more understandable than this.

One Answer

Use foreach with two variables like foreach x/y in {x1/y1,x2/y2...}.

The list on graph plot below is copied and edited to be on format "x/y," instead of "x y".

Output: output of code

Code:

documentclass{article}
usepackage{tikz}

begin{document}

begin{tikzpicture}
  % x-axis
  draw[->] (-0.3,0) -- (240*0.05+1,0) node[above] {$A$};

  % y-axis
  draw[->] (0,-10.3) -- (0,1) node[right] {$-frac{E_ell}{A}$ (MeV par nucl'eon)};

  % grid and labels
  foreach x in {20,40,...,240}
  {
    draw (x*0.05,0) node[above] {small x};
    draw[lightgray] (x*0.05,0) -- ++(0,-10);
  }
  foreach y in {-10,-9,...,-1}
  {
    draw (0,y) node[left] {small y};
    draw[lightgray] (0,y) -- ++(240*0.05,0);
  }
  draw (0,0) node[above left] {0};
  
  % graph  
  draw[fill=black] (2*0.05,-1.12) % first point here 
  foreach x/y in {
    2/-1.12, % ... and here
    3/-2.83,
    3/-2.58,
    4/-7.08,
    6/-5.34,
    7/-5.61,
    9/-6.47,
    10/-6.48,
    11/-6.93,
    12/-6.032,
    13/-7.47,
    15/-7.7,
    19/-7.78,
    23/-8.11,
    27/-8.33,
    35/-8.52,
    40/-8.55,
    45/-8.62,
    52/-8.78,
    56/-8.79,
    58/-8.74,
    63/-8.76,
    69/-8.73,
    75/-8.7,
    85/-8.7,
    93/-8.67,
    94/-8.597,
    98/-8.64,
    109/-8.55,
    120/-8.51,
    127/-8.45,
    133/-8.42,
    139/-8.312,
    140/-8.376,
    165/-8.15,
    184/-8.01,
    200/-7.91,
    210/-7.84,
    235/-7.591,
    238/-7.57}
  {  -- (x*0.05,y) circle[radius=0.05] };

  % FE label
  draw[red,fill] (56*0.05,-8.79) circle[radius=0.06]
     node[below] {$^{56}_{26}$Fe};
end{tikzpicture}

end{document}

Correct answer by Miguel V. S. Frasson on April 10, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP