Skip to content

ffavela/isonav

Repository files navigation

The program isonav (formerly isotope-navigator) is intended to be a
command line interface program (for now) for making quick and easy
calculations for nuclear reactions.

As any other command line software, the main advantage is that the
program is callable either from a user or from another program. This is
very attractive for various applications. See the "isonavScripts/"
directory for just a few script examples made for BaSH.

Works with python 2.x and 3.x.

In this new version (v1.4), the database was improved greatly by
incorporating data from:

https://www-nds.iaea.org/amdc/ame2012/mass.mas12

Thank you Silpion!

In the newest version (v1.4.2), a BE horrible BUG was found and corrected. Also
added a script to get the most tightly bound isotope. And options for
multiple emission of particles from a nucleus.

INSTALLATION:

The installation process was tested only on Ubuntu 14.04 machines.

To those unfamiliar to github, simply write on the command line (if you
haven't already):

$ git clone https://github.com/ffavela/isonav

(Note: if you have already cloned in order to get the newer version do a
$ git pull
whithin the isonav directory). Please do this regularly to keep it updated,
the program is in beta.

And the repository will be cloned to your computer.

Requirements:

The python package docopt is REQUIRED. In ubuntu the package can be
installed via:

$ sudo apt-get install python-docopt

Or for linux in general via:

$ pip install docopt==0.6.1

Run with sudo the install script via

$ sudo ./installScript.sh

If you don't have the latest database the install script will try to
download it, if it fails then it will tell you what might be wrong and
where to download it manually in case the failing continues. Make sure
that "curl" is installed, for ubuntu users you can install it via:

sudo apt-get install curl

If you have an Mac computer and you get an "Operation not permitted"
error there is a work around, you'll need to disable the System
Integrity Protection. Simply reboot and press Cmd-R then open a
terminal and type "csrutil disable" (without the quotes) reboot and
run the install script again. It is encouraged to reenable it after
the installation is done.

In case you need uninstalling, simply do a:

$ sudo ./installScript.sh --uninstall

In case you don't want to install system wide, just make sure the data
directory is available (as well as docopt) and you run it with:

$ python isonav.py ...

As a setback, the scripts probably won't work as expected.

Resources:

The program is far from finished, here are some resources online that
where partially used for building it.

The Isotope Explorer:
http://ie.lbl.gov/isoexpl/isoexpl.htm

Main inspiration for the program, the main problem with it is that is
only for windows, isonav does not do everything isotope explorer does
nor is it the intention.

Most of the data of isonav was taken from the ENSDF data files that the
isotope explorer uses.

TUNL:

http://www.tunl.duke.edu/

Provides an easy to use webapp for accessing nuclear data.

NNDC:

http://www.nndc.bnl.gov/

Another important resource.

USAGE:

The typical abbreviations for some isotopes can be used:

1n==n  #neutron
1H==p
2H==d
3H==t
4He==a

Examples:

Note: All energies are in MeV
The next gives a printout of the general usage (not all functions have been
implemented yet). The -v option can be used in almost all cases
(verbose).


$ isonav 
Usage:
  isonav <number> [-v] (-s|--symbol)
  isonav <symbol> [-v] ([-p|--protons])
  isonav <symbol> [-v] (--name)
  isonav <iso> [-v] [-n|--neutrons] [[-i|--isotopes] [-m --amu]]
  isonav <iso> [-v] ([-m|--mass]|--compton) [--amu --liquidDrop]
  isonav <iso> [-v] --mirror
  isonav <iso> [-v] ([-r | --radius]|[(-l|--levels) [--limit=val]])
  isonav <iso> [-v] --Elab=val [--redDeBroglie]
  isonav <iso> [-v] --decay
  isonav <iso> [-v] (--BE | --BEperNucleon) [--liquidDrop]
  isonav <iso1> <iso2> [-v] (--coulomb | --reactions [--latex] )
  isonav <iso1> <iso2> [-v] --fussion [--Elab=val]
  isonav <iso1> <iso2> [-v] --Elab=val --angle=val [[--xTreme|-x] --latex]
  isonav <iso1> <iso2> [-v] --scatE=val --angle=val
  isonav <isop> <isot> <isoEject> <isoRes> [-v] (-q|--QVal) [--amu]
  isonav <isop> <isot> <isoEject> <isoRes> [-v] --Elab=val --maxAng
  isonav <isop> <isot> <isoEject> <isoRes> [-v] --Elab=val --angle=val [-x|--xTreme]
  isonav [-v] ( -d | --donate ) [--QR]
  isonav -h | --version

$ isonav 22 -s
Ti

$ isonav Au --protons #A value can be ommited here
79

$ isonav Ag --name
Silver

$ isonav 195Au --neutrons
116

$ isonav Pb -i #A can be also ommitted here
185Pb
186Pb
.
.
.
213Pb
214Pb

Forcing amu (instead of MeV) and being verbose:

$ isonav Pb -iv
#Isotopes of given element, and optional mass
185Pb
186Pb
187Pb
188Pb
189Pb
190Pb
191Pb
.
.
.

$ isonav Au -im --amu
175Au 	174.981567
176Au 	175.98024
177Au 	176.977234
178Au 	177.975922
179Au 	178.973419
.
.
.

$ isonav 22Ne --mass #In MeV
20484.8397894

$ isonav 22Ne --mass --liquidDrop #Using the LD model
20477.9424464

$ isonav 22Ne --mirror
22Mg

$ isonav 40Ca -r #Radius in fm
4.10394227202

$ isonav 12C --levels --limit=10
1 0.0
2 4.43891
3 7.6542
4 9.641
5 10.3
6 10.844
7 11.16
8 11.828
9 12.71
10 13.352

$ isonav 12C --Elab=2.0 --redDeBroglie
9.33202252339e-06

These next parts are useful for identifying particles in terms of their
energy in a nuclear scattering experiment.

$ isonav d 14N a 12C --Elab=3.0 --angle=35
a 12C
13.935	49.475	2.647

12C a
5.883	47.431	10.699

$ isonav d 14N a 12C --Elab=3.0 --angle=35 --xTreme
*4He + 12C
1	0.000		13.935	49.475	2.647

4He + *12C
1	0.000		13.935	49.475	2.647
2	4.439		10.347	52.663	1.796
3	7.654		7.715	56.670	1.213
...
13	15.440		0.976	-53.580	0.165
14	16.106		0.211	-17.208	0.265

*12C + 4He
1	0.000		5.883	47.431	10.699
2	4.439		4.510	49.765	7.633
3	7.654		3.481	52.559	5.446
.
.
.
12	15.110		0.741	-89.554	0.731
13	15.440		0.561	-77.486	0.581

12C + *4He
1	0.000		5.883	47.431	10.699

Can also see Coulomb excitations
$ isonav d 14N d 14N --Elab=5.5 --angle=25 --xTreme
*2H + 14N
1	0.000		5.354	-75.758	0.146

2H + *14N
1	0.000		5.354	-75.758	0.146
2	2.313		3.024	-43.702	0.163
3	3.948		1.267	-19.746	0.285

*14N + 2H
1	0.000		1.987	56.922	3.513
2	2.313		1.342	71.855	1.845
3	3.948		0.516	-87.236	0.642

14N + *2H
1	0.000		1.987	56.922	3.513

$ isonav d 14N --reactions
0None	16O	None 	20.75
4He	12C	0.00 	13.58
1H	15N	0.00 	8.61
8Be	8Be	0.00 	6.12
1n	15O	0.00 	5.08
2H	14N	0.00 	0.00
3He	13C	2.35 	-2.06
3H	13N	4.92 	-4.30
5Li	11B	4.98 	-4.35
5He	11C	6.91 	-6.04
.
.
.

$ isonav p 14N  --fussion
15O	7	7.276	0.025

$ isonav p 14N --fussion --Elab=0.1 -v
#Prints the fused element, if isotope exists.
#Max populated level, and energy, and remaining KE in lab
15O	7	7.276	0.125

$ isonav d 14N --Elab=3.0 --angle=35
4He 	12C
13.935	49.475	2.647
5.883	47.431	10.699

1H 	15N
11.356	80.794	0.258
1.577	61.299	10.036

8Be 	8Be
5.912	51.150	3.207
5.912	51.150	3.207

1n 	15O
7.903	-84.902	0.176
1.198	67.341	6.882

2H 	14N
2.848	-70.134	0.152
0.885	78.091	2.115

3He 	13C
0.770	-35.844	0.171
0.278	88.707	0.394

Where the first row after the expression is when the ejectile is
expected at the given angle and the recond is when the residual is
expected.

$ isonav d 14N --Elab=3.0 --angle=35 --xTreme
*4He	12C
1	0.000		13.935	49.475	2.647

4He	*12C
1	0.000		13.935	49.475	2.647
2	4.439		10.347	52.663	1.796
.
.
.
14	16.106		0.211	-17.208	0.265

*12C	4He
1	0.000		5.883	47.431	10.699
2	4.439		4.510	49.765	7.633
.
.
.
13	15.440		0.561	-77.486	0.581

12C	*4He
1	0.000		5.883	47.431	10.699

*1H	15N
1	0.000		11.356	80.794	0.258

1H	*15N
1	0.000		11.356	80.794	0.258
2	5.270		6.195	-74.040	0.148
3	5.299		6.167	-73.832	0.148
4	6.324		5.152	-65.704	0.137
5	7.155		4.326	-58.067	0.133
6	7.301		4.180	-56.629	0.132
.
.

*15N	1H
1	0.000		1.577	61.299	10.036
2	5.270		0.992	72.358	5.351
.
.
.

*1n	15O
1	0.000		7.903	-84.902	0.176

1n	*15O
1	0.000		7.903	-84.902	0.176
2	5.183		2.756	-41.222	0.140
.
.

*15O	1n
1	0.000		1.198	67.341	6.882
2	5.183		0.480	88.102	2.352
3	5.241		0.468	89.160	2.289

15O	*1n
1	0.000		1.198	67.341	6.882

*2H	14N
1	0.000		2.848	-70.134	0.152
2	2.225		0.570	-21.252	0.205

2H	*14N
1	0.000		2.848	-70.134	0.152
2	2.313		0.468	-18.503	0.220

*14N	2H
1	0.000		0.885	78.091	2.115
.
.
.............. You get the idea.

$ isonav 235U --decay
76Zn	159Sm		111.947	53.485	165.431
77Zn	158Sm		110.923	54.037	164.960
75Zn	160Sm		111.483	52.232	163.714
74Zn	161Sm		111.932	51.417	163.349
73Zn	162Sm		111.038	50.006	161.044
72Zn	163Sm		110.853	48.933	159.786
75Cu	160Eu		108.181	50.692	158.872
74Cu	161Eu		108.753	49.966	158.718
73Cu	162Eu		109.351	49.252	158.603
76Cu	159Eu		106.871	51.069	157.940
72Cu	163Eu		109.153	48.190	157.343
71Cu	164Eu		109.562	47.404	156.965
.
.Lots of stuff
.


$ isonav 151Lu --pEmission
1H	150Yb		1.232	0.008	1.241

$ isonav 13Be --nEmission
1n	12Be		0.471	0.039	0.510

#Double proton emission
$ isonav 45Fe --pEmission --num=2
2(1H)	43Cr		1.154

$ isonav n --compton -v
#The compton wavelength in fm
1.31959074145

The --xTreme cases can take some time and the outputs can become very
large, here is an example of one case:

$ isonav 14N 167Yb --Elab=5.5 --angle=20 --xTreme>14N167YbxTreme5p5MeVAngle20.txt

#This took about 80 min in my computer

The txt file is in:

https://mega.co.nz/#!jMMQBJQR!tbHG6sQclgR895ezXMhqkBDMsel3E7vX0ATRKg8x4VE

Consider output redirection for such cases ">".

A discussion of the project can be followed in:

https://www.reddit.com/r/Physics/comments/3fdote/as_part_of_my_bucket_list_i_wanted_to_make/

This is still work in progress.

A note for potential developers; The code is written so it is
"expressive", that is every part is clear in what is does, as opposed to
have the best running time performance with unreadable code. So if you
want to modify it take this into account, upstream merges will not be
accepted if "guru" tricks that do the job "better" are not readable or
properly commented. I want to always keep the code upgradable in
whatever direction it is taken, and it can only be done if it is easy to
read and to modify.

Faster versions could be adopted in a different version of the project,
as long there is always an easy to read version.

Any donations can be sent to the following bitcoin address:

1LgQ8NuSVxbLmuhVjh9kxpoacKPr7kt4s2

The owner of the address is Francisco Favela.

If you are redistributing a modified version of the code, be sure to
change the beneficiary's name (be clear about it, even in the donation
part of the code) and the bitcoin address (that last part is optional
;).

This project was done without any financial support of any kind, so any
donations are greatly appreciated :).

Contact: preferably through github, or via email ffavela@gmail.com, with
the subject isonav.

About

A command line program for making nuclear physics calculations

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •