-
Notifications
You must be signed in to change notification settings - Fork 1
A command line program for making nuclear physics calculations
License
ffavela/isonav
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
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 0
No packages published