nucleardatapy 0.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (491) hide show
  1. nucleardatapy/__init__.py +23 -0
  2. nucleardatapy/astro/__init__.py +9 -0
  3. nucleardatapy/astro/setup_gw.py +370 -0
  4. nucleardatapy/astro/setup_masses.py +366 -0
  5. nucleardatapy/astro/setup_mr.py +399 -0
  6. nucleardatapy/astro/setup_mtov.py +143 -0
  7. nucleardatapy/astro/setup_mup.py +302 -0
  8. nucleardatapy/corr/__init__.py +8 -0
  9. nucleardatapy/corr/setup_EsymDen.py +154 -0
  10. nucleardatapy/corr/setup_EsymLsym.py +468 -0
  11. nucleardatapy/corr/setup_KsatQsat.py +226 -0
  12. nucleardatapy/create_folder.py +7 -0
  13. nucleardatapy/crust/__init__.py +6 -0
  14. nucleardatapy/crust/setup_crust.py +475 -0
  15. nucleardatapy/cst.py +72 -0
  16. nucleardatapy/data/LandauParameters/micro/1994-BHF-SM.dat +33 -0
  17. nucleardatapy/data/LandauParameters/micro/2006-BHF-NM-AV18.dat +2701 -0
  18. nucleardatapy/data/LandauParameters/micro/2006-BHF-SM-AV18.dat +6001 -0
  19. nucleardatapy/data/LandauParameters/micro/2006-IBHF-NM-AV18.dat +2701 -0
  20. nucleardatapy/data/LandauParameters/micro/2006-IBHF-SM-AV18.dat +6001 -0
  21. nucleardatapy/data/LandauParameters/micro/2007-BHF-NM.dat +12 -0
  22. nucleardatapy/data/LandauParameters/pheno/2013-BSk22.dat +7 -0
  23. nucleardatapy/data/LandauParameters/pheno/2016-BSk31.dat +9 -0
  24. nucleardatapy/data/LandauParameters/pheno/2016-BSk32.dat +9 -0
  25. nucleardatapy/data/LandauParameters/pheno/2021-BSkG1.dat +9 -0
  26. nucleardatapy/data/LandauParameters/pheno/2022-BSkG2.dat +9 -0
  27. nucleardatapy/data/LandauParameters/pheno/2023-BSkG3.dat +9 -0
  28. nucleardatapy/data/NeutronSkin/ddrhNskin-208Pb.dat +6 -0
  29. nucleardatapy/data/NeutronSkin/ddrhNskin-48Ca.dat +6 -0
  30. nucleardatapy/data/NeutronSkin/nlrhNskin-208Pb.dat +6 -0
  31. nucleardatapy/data/NeutronSkin/nlrhNskin-48Ca.dat +6 -0
  32. nucleardatapy/data/NeutronSkin/skyrmeNskin-208Pb.dat +34 -0
  33. nucleardatapy/data/NeutronSkin/skyrmeNskin-48Ca.dat +34 -0
  34. nucleardatapy/data/astro/GW/GW170817.dat +6 -0
  35. nucleardatapy/data/astro/GW/GW190425.dat +3 -0
  36. nucleardatapy/data/astro/NICER/J0030+0451.dat +6 -0
  37. nucleardatapy/data/astro/NICER/J0437-4715.dat +3 -0
  38. nucleardatapy/data/astro/NICER/J0740+6620.dat +4 -0
  39. nucleardatapy/data/astro/masses/GW170817.dat +5 -0
  40. nucleardatapy/data/astro/masses/GW190814.dat +2 -0
  41. nucleardatapy/data/astro/masses/J0348+0432.dat +2 -0
  42. nucleardatapy/data/astro/masses/J0740+6620.dat +4 -0
  43. nucleardatapy/data/astro/masses/J1600+3053.dat +2 -0
  44. nucleardatapy/data/astro/masses/J1614/342/200/2232230.dat +6 -0
  45. nucleardatapy/data/astro/masses/J2215+5135.dat +2 -0
  46. nucleardatapy/data/corr/EsymDen/2014-IAS+NS.dat +8 -0
  47. nucleardatapy/data/corr/EsymDen/2014-IAS.dat +9 -0
  48. nucleardatapy/data/corr/EsymLsym/2010-RNP.dat +8 -0
  49. nucleardatapy/data/corr/EsymLsym/2012-FRDM.dat +6 -0
  50. nucleardatapy/data/corr/EsymLsym/2013-NS.dat +7 -0
  51. nucleardatapy/data/corr/EsymLsym/2014-IAS+RNP-err.dat +15 -0
  52. nucleardatapy/data/corr/EsymLsym/2014-IAS+RNP-plot.py +24 -0
  53. nucleardatapy/data/corr/EsymLsym/2014-IAS+RNP.dat +15 -0
  54. nucleardatapy/data/corr/EsymLsym/2014-IAS-err.dat +9 -0
  55. nucleardatapy/data/corr/EsymLsym/2014-IAS-plot.py +24 -0
  56. nucleardatapy/data/corr/EsymLsym/2014-IAS.dat +7 -0
  57. nucleardatapy/data/corr/EsymLsym/2021-PREXII-Reed.dat +3 -0
  58. nucleardatapy/data/corr/EsymLsym/2021-PREXII-Reinhard.dat +3 -0
  59. nucleardatapy/data/corr/EsymLsym/2023-PREXII-Zhang.dat +3 -0
  60. nucleardatapy/data/corr/EsymLsym/test.png +0 -0
  61. nucleardatapy/data/crust/1973-Negele-Vautherin.dat +18 -0
  62. nucleardatapy/data/crust/2020-MVCD-D1M.dat +16 -0
  63. nucleardatapy/data/crust/2020-MVCD-D1MS-full.dat +71 -0
  64. nucleardatapy/data/crust/2020-MVCD-D1MS.dat +17 -0
  65. nucleardatapy/data/crust/2020-MVCD-D1S.dat +17 -0
  66. nucleardatapy/data/crust/2022-crustGMRS-BSK14.dat +1455 -0
  67. nucleardatapy/data/crust/2022-crustGMRS-BSK16.dat +1538 -0
  68. nucleardatapy/data/crust/2022-crustGMRS-DHSL59.dat +1413 -0
  69. nucleardatapy/data/crust/2022-crustGMRS-DHSL69.dat +1424 -0
  70. nucleardatapy/data/crust/2022-crustGMRS-F0.dat +1525 -0
  71. nucleardatapy/data/crust/2022-crustGMRS-H1.dat +1651 -0
  72. nucleardatapy/data/crust/2022-crustGMRS-H2.dat +1621 -0
  73. nucleardatapy/data/crust/2022-crustGMRS-H3.dat +1537 -0
  74. nucleardatapy/data/crust/2022-crustGMRS-H4.dat +1598 -0
  75. nucleardatapy/data/crust/2022-crustGMRS-H5.dat +1562 -0
  76. nucleardatapy/data/crust/2022-crustGMRS-H7.dat +1523 -0
  77. nucleardatapy/data/crust/2022-crustGMRS-LNS5.dat +1396 -0
  78. nucleardatapy/data/crust/2022-crustGMRS-RATP.dat +1552 -0
  79. nucleardatapy/data/crust/2022-crustGMRS-SGII.dat +1345 -0
  80. nucleardatapy/data/crust/2022-crustGMRS-SLY5.dat +1455 -0
  81. nucleardatapy/data/hnuclei/2013-2L-Ahn.csv +5 -0
  82. nucleardatapy/data/hnuclei/2015-1Xi-Nakazawa.csv +5 -0
  83. nucleardatapy/data/hnuclei/2016-1L-GHM.csv +67 -0
  84. nucleardatapy/data/matter/hic/2002-DLL-NM-soft.dat +6 -0
  85. nucleardatapy/data/matter/hic/2002-DLL-NM-stiff.dat +5 -0
  86. nucleardatapy/data/matter/hic/2002-DLL-SM.dat +6 -0
  87. nucleardatapy/data/matter/hic/2002-KAON.dat +45 -0
  88. nucleardatapy/data/matter/hic/2009-ISO-DIFF.dat +3 -0
  89. nucleardatapy/data/matter/hic/2011-FOPI-LAND.dat +32 -0
  90. nucleardatapy/data/matter/hic/2016-ASY-EOS.dat +31 -0
  91. nucleardatapy/data/matter/hic/2016-FOPI-E2A.dat +19 -0
  92. nucleardatapy/data/matter/hic/2016-FOPI-SM.dat +31 -0
  93. nucleardatapy/data/matter/hic/2019-N2P-RATIO.dat +3 -0
  94. nucleardatapy/data/matter/hic/2021-SPIRIT.dat +3 -0
  95. nucleardatapy/data/matter/micro/1981-VAR-NM-FP.dat +26 -0
  96. nucleardatapy/data/matter/micro/1981-VAR-SM-FP.dat +26 -0
  97. nucleardatapy/data/matter/micro/1998-VAR-NM-APR.dat +16 -0
  98. nucleardatapy/data/matter/micro/1998-VAR-SM-APR.dat +15 -0
  99. nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-E2A-AM.dat +17 -0
  100. nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-E2A-NM.dat +21 -0
  101. nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-E2A-SM.dat +30 -0
  102. nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-Esym2-SM.dat +19 -0
  103. nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-GAP-NM-FreeSpectrum.dat +9 -0
  104. nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-GAP-NM-SelfEnergy.dat +8 -0
  105. nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-GAP-SM-FreeSpectrum.dat +8 -0
  106. nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-GAP-SM-SelfEnergy.dat +6 -0
  107. nucleardatapy/data/matter/micro/2008-AFDMC-NM-bkup.dat +11 -0
  108. nucleardatapy/data/matter/micro/2008-AFDMC-NM.dat +11 -0
  109. nucleardatapy/data/matter/micro/2008-BCS-NM.dat +16 -0
  110. nucleardatapy/data/matter/micro/2008-QMC-NM-swave-bkup.dat +8 -0
  111. nucleardatapy/data/matter/micro/2008-QMC-NM-swave.dat +8 -0
  112. nucleardatapy/data/matter/micro/2009-AFDMC-NM.dat +7 -0
  113. nucleardatapy/data/matter/micro/2009-dQMC-NM.dat +7 -0
  114. nucleardatapy/data/matter/micro/2010-NM-Hebeler.dat +12 -0
  115. nucleardatapy/data/matter/micro/2010-QMC-NM-AV4-bkup.dat +9 -0
  116. nucleardatapy/data/matter/micro/2010-QMC-NM-AV4.dat +7 -0
  117. nucleardatapy/data/matter/micro/2012-AFDMC-NM-1.dat +29 -0
  118. nucleardatapy/data/matter/micro/2012-AFDMC-NM-2.dat +10 -0
  119. nucleardatapy/data/matter/micro/2012-AFDMC-NM-3.dat +11 -0
  120. nucleardatapy/data/matter/micro/2012-AFDMC-NM-4.dat +10 -0
  121. nucleardatapy/data/matter/micro/2012-AFDMC-NM-5.dat +11 -0
  122. nucleardatapy/data/matter/micro/2012-AFDMC-NM-6.dat +10 -0
  123. nucleardatapy/data/matter/micro/2012-AFDMC-NM-7.dat +37 -0
  124. nucleardatapy/data/matter/micro/2012-AFDMC-NM-fit.dat +10 -0
  125. nucleardatapy/data/matter/micro/2012-AFDMC-NM.txt +252 -0
  126. nucleardatapy/data/matter/micro/2013-QMC-NM.dat +12 -0
  127. nucleardatapy/data/matter/micro/2014-AFQMC-NM.dat +14 -0
  128. nucleardatapy/data/matter/micro/2016-MBPT-AM/EOS_spec_4_beta_0.0.txt +35 -0
  129. nucleardatapy/data/matter/micro/2016-MBPT-AM/EOS_spec_4_beta_0.1.txt +35 -0
  130. nucleardatapy/data/matter/micro/2016-MBPT-AM/EOS_spec_4_beta_0.2.txt +35 -0
  131. nucleardatapy/data/matter/micro/2016-MBPT-AM/EOS_spec_4_beta_0.3.txt +35 -0
  132. nucleardatapy/data/matter/micro/2016-MBPT-AM/EOS_spec_4_beta_0.4.txt +35 -0
  133. nucleardatapy/data/matter/micro/2016-MBPT-AM/EOS_spec_4_beta_0.5.txt +35 -0
  134. nucleardatapy/data/matter/micro/2016-MBPT-AM/EOS_spec_4_beta_0.6.txt +35 -0
  135. nucleardatapy/data/matter/micro/2016-MBPT-AM/EOS_spec_4_beta_0.7.txt +35 -0
  136. nucleardatapy/data/matter/micro/2016-MBPT-AM/EOS_spec_4_beta_0.8.txt +35 -0
  137. nucleardatapy/data/matter/micro/2016-MBPT-AM/EOS_spec_4_beta_0.9.txt +35 -0
  138. nucleardatapy/data/matter/micro/2016-MBPT-AM/EOS_spec_4_beta_1.0.txt +35 -0
  139. nucleardatapy/data/matter/micro/2016-QMC-NM.dat +10 -0
  140. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_500_effmass_1S0_HF_spectrum_N2LO_3N_forces.csv +45 -0
  141. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_500_effmass_1S0_HF_spectrum_N3LO_3N_forces.csv +45 -0
  142. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_500_effmass_3PF2_HF_spectrum_N2LO_3N_forces.csv +32 -0
  143. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_500_effmass_3PF2_HF_spectrum_N3LO_3N_forces.csv +32 -0
  144. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_500_gap_1S0_HF_spectrum_N2LO_3N_forces.csv +45 -0
  145. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_500_gap_1S0_HF_spectrum_N3LO_3N_forces.csv +45 -0
  146. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_500_gap_1S0_free_spectrum_N2LO_3N_forces.csv +45 -0
  147. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_500_gap_1S0_free_spectrum_N3LO_3N_forces.csv +45 -0
  148. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_500_gap_3PF2_HF_spectrum_N2LO_3N_forces.csv +32 -0
  149. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_500_gap_3PF2_HF_spectrum_N3LO_3N_forces.csv +32 -0
  150. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_500_gap_3PF2_free_spectrum_N2LO_3N_forces.csv +32 -0
  151. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_500_gap_3PF2_free_spectrum_N3LO_3N_forces.csv +32 -0
  152. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_700_effmass_1S0_HF_spectrum_N2LO_3N_forces.csv +45 -0
  153. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_700_effmass_1S0_HF_spectrum_N3LO_3N_forces.csv +45 -0
  154. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_700_effmass_3PF2_HF_spectrum_N2LO_3N_forces.csv +32 -0
  155. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_700_effmass_3PF2_HF_spectrum_N3LO_3N_forces.csv +32 -0
  156. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_700_gap_1S0_HF_spectrum_N2LO_3N_forces.csv +45 -0
  157. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_700_gap_1S0_HF_spectrum_N3LO_3N_forces.csv +45 -0
  158. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_700_gap_1S0_free_spectrum_N2LO_3N_forces.csv +45 -0
  159. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_700_gap_1S0_free_spectrum_N3LO_3N_forces.csv +45 -0
  160. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_700_gap_3PF2_HF_spectrum_N2LO_3N_forces.csv +32 -0
  161. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_700_gap_3PF2_HF_spectrum_N3LO_3N_forces.csv +32 -0
  162. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_700_gap_3PF2_free_spectrum_N2LO_3N_forces.csv +32 -0
  163. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_700_gap_3PF2_free_spectrum_N3LO_3N_forces.csv +32 -0
  164. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EM500_effmass_1S0_HF_spectrum_N2LO_3N_forces.csv +45 -0
  165. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EM500_effmass_1S0_HF_spectrum_N3LO_3N_forces.csv +45 -0
  166. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EM500_effmass_3PF2_HF_spectrum_N2LO_3N_forces.csv +32 -0
  167. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EM500_effmass_3PF2_HF_spectrum_N3LO_3N_forces.csv +32 -0
  168. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EM500_gap_1S0_HF_spectrum_N2LO_3N_forces.csv +45 -0
  169. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EM500_gap_1S0_HF_spectrum_N3LO_3N_forces.csv +45 -0
  170. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EM500_gap_1S0_free_spectrum_N2LO_3N_forces.csv +45 -0
  171. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EM500_gap_1S0_free_spectrum_N3LO_3N_forces.csv +45 -0
  172. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EM500_gap_3PF2_HF_spectrum_N2LO_3N_forces.csv +32 -0
  173. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EM500_gap_3PF2_HF_spectrum_N3LO_3N_forces.csv +32 -0
  174. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EM500_gap_3PF2_free_spectrum_N2LO_3N_forces.csv +32 -0
  175. nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EM500_gap_3PF2_free_spectrum_N3LO_3N_forces.csv +32 -0
  176. nucleardatapy/data/matter/micro/2018-QMC-NM.dat +18 -0
  177. nucleardatapy/data/matter/micro/2020-MBPT-NM-DHSL59.dat +18 -0
  178. nucleardatapy/data/matter/micro/2020-MBPT-NM-DHSL69.dat +18 -0
  179. nucleardatapy/data/matter/micro/2020-MBPT-SM-DHSL59.dat +18 -0
  180. nucleardatapy/data/matter/micro/2020-MBPT-SM-DHSL69.dat +18 -0
  181. nucleardatapy/data/matter/micro/2022-AFDMC-NM-gap.csv +17 -0
  182. nucleardatapy/data/matter/micro/2022-AFDMC-NM.csv +11 -0
  183. nucleardatapy/data/matter/micro/2023-MBPT-NM.csv +60 -0
  184. nucleardatapy/data/matter/micro/2023-MBPT-SM.csv +60 -0
  185. nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_Av1823BF.dat +14 -0
  186. nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_Av1823BFmicro.dat +13 -0
  187. nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_Av8p23BF.dat +14 -0
  188. nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_BONN23BF.dat +14 -0
  189. nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_BONNB23BFmicro.dat +13 -0
  190. nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_CDBONN23BF.dat +14 -0
  191. nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC9323BFmicro.dat +13 -0
  192. nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97a23BF.dat +14 -0
  193. nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97b23BF.dat +14 -0
  194. nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97c23BF.dat +14 -0
  195. nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97d23BF.dat +14 -0
  196. nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97e23BF.dat +14 -0
  197. nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97f23BF.dat +14 -0
  198. nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_SSCV1423BF.dat +14 -0
  199. nucleardatapy/data/matter/micro/2024-BHF-NM-2BF/spin_isosp_Av182BF.dat +14 -0
  200. nucleardatapy/data/matter/micro/2024-BHF-NM-2BF/spin_isosp_Av8p2BF.dat +14 -0
  201. nucleardatapy/data/matter/micro/2024-BHF-NM-2BF/spin_isosp_BONN2BF.dat +14 -0
  202. nucleardatapy/data/matter/micro/2024-BHF-NM-2BF/spin_isosp_CDBONN2BF.dat +14 -0
  203. nucleardatapy/data/matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97a2BF.dat +14 -0
  204. nucleardatapy/data/matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97b2BF.dat +14 -0
  205. nucleardatapy/data/matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97c2BF.dat +14 -0
  206. nucleardatapy/data/matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97d2BF.dat +14 -0
  207. nucleardatapy/data/matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97e2BF.dat +14 -0
  208. nucleardatapy/data/matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97f2BF.dat +14 -0
  209. nucleardatapy/data/matter/micro/2024-BHF-NM-2BF/spin_isosp_SSCV142BF.dat +14 -0
  210. nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_Av1823BF.dat +14 -0
  211. nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_Av1823BFmicro.dat +13 -0
  212. nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_Av8p23BF.dat +14 -0
  213. nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_BONN23BF.dat +14 -0
  214. nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_BONNB23BFmicro.dat +11 -0
  215. nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_CDBONN23BF.dat +14 -0
  216. nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC9323BFmicro.dat +13 -0
  217. nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97a23BF.dat +14 -0
  218. nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97b23BF.dat +14 -0
  219. nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97c23BF.dat +14 -0
  220. nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97d23BF.dat +14 -0
  221. nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97e23BF.dat +14 -0
  222. nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97f23BF.dat +14 -0
  223. nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_SSCV1423BF.dat +14 -0
  224. nucleardatapy/data/matter/micro/2024-BHF-SM-2BF/spin_isosp_Av182BF.dat +14 -0
  225. nucleardatapy/data/matter/micro/2024-BHF-SM-2BF/spin_isosp_Av8p2BF.dat +14 -0
  226. nucleardatapy/data/matter/micro/2024-BHF-SM-2BF/spin_isosp_BONN2BF.dat +14 -0
  227. nucleardatapy/data/matter/micro/2024-BHF-SM-2BF/spin_isosp_CDBONN2BF.dat +14 -0
  228. nucleardatapy/data/matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97a2BF.dat +14 -0
  229. nucleardatapy/data/matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97b2BF.dat +14 -0
  230. nucleardatapy/data/matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97c2BF.dat +14 -0
  231. nucleardatapy/data/matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97d2BF.dat +14 -0
  232. nucleardatapy/data/matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97e2BF.dat +14 -0
  233. nucleardatapy/data/matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97f2BF.dat +14 -0
  234. nucleardatapy/data/matter/micro/2024-BHF-SM-2BF/spin_isosp_SSCV142BF.dat +14 -0
  235. nucleardatapy/data/matter/micro/2024-DMC-NM.dat +15 -0
  236. nucleardatapy/data/matter/micro/2024-NLEFT-NM-bkp.dat +38 -0
  237. nucleardatapy/data/matter/micro/2024-NLEFT-NM.dat +28 -0
  238. nucleardatapy/data/matter/micro/2024-NLEFT-SM-bkp.dat +33 -0
  239. nucleardatapy/data/matter/micro/2024-NLEFT-SM.dat +16 -0
  240. nucleardatapy/data/matter/micro/BSTmicro-NM.dat +12 -0
  241. nucleardatapy/data/matter/micro/BSTmicro-SM.dat +10 -0
  242. nucleardatapy/data/matter/micro/BSTph-NM.dat +13 -0
  243. nucleardatapy/data/matter/micro/BSTph-SM.dat +13 -0
  244. nucleardatapy/data/matter/micro/convert.sh +6 -0
  245. nucleardatapy/data/matter/nep/NEPESkyrme.dat +10 -0
  246. nucleardatapy/data/matter/nep/NEPFayans.dat +5 -0
  247. nucleardatapy/data/matter/nep/NEPGogny.dat +8 -0
  248. nucleardatapy/data/matter/nep/NEPMBPT2016.dat +8 -0
  249. nucleardatapy/data/matter/nep/NEPSkyrme.dat +45 -0
  250. nucleardatapy/data/matter/nep/NEPSkyrme2.dat +18 -0
  251. nucleardatapy/data/matter/nep/NEPddrh.dat +6 -0
  252. nucleardatapy/data/matter/nep/NEPddrhf.dat +5 -0
  253. nucleardatapy/data/matter/nep/NEPnlrh.dat +7 -0
  254. nucleardatapy/data/matter/pheno/ESkyrme/BSk22-NM.dat +1002 -0
  255. nucleardatapy/data/matter/pheno/ESkyrme/BSk22-SM.dat +1002 -0
  256. nucleardatapy/data/matter/pheno/ESkyrme/BSk24-NM.dat +1002 -0
  257. nucleardatapy/data/matter/pheno/ESkyrme/BSk24-SM.dat +1002 -0
  258. nucleardatapy/data/matter/pheno/ESkyrme/BSk25-NM.dat +1002 -0
  259. nucleardatapy/data/matter/pheno/ESkyrme/BSk25-SM.dat +1002 -0
  260. nucleardatapy/data/matter/pheno/ESkyrme/BSk26-NM.dat +1002 -0
  261. nucleardatapy/data/matter/pheno/ESkyrme/BSk26-SM.dat +1002 -0
  262. nucleardatapy/data/matter/pheno/ESkyrme/BSk31-NM.dat +1002 -0
  263. nucleardatapy/data/matter/pheno/ESkyrme/BSk31-SM.dat +1002 -0
  264. nucleardatapy/data/matter/pheno/ESkyrme/BSk32-NM-old.dat +1002 -0
  265. nucleardatapy/data/matter/pheno/ESkyrme/BSk32-NM.dat +1002 -0
  266. nucleardatapy/data/matter/pheno/ESkyrme/BSk32-SM-old.dat +1002 -0
  267. nucleardatapy/data/matter/pheno/ESkyrme/BSk32-SM.dat +1002 -0
  268. nucleardatapy/data/matter/pheno/ESkyrme/BSkG1-NM.dat +1002 -0
  269. nucleardatapy/data/matter/pheno/ESkyrme/BSkG1-SM.dat +1002 -0
  270. nucleardatapy/data/matter/pheno/ESkyrme/BSkG2-NM.dat +1002 -0
  271. nucleardatapy/data/matter/pheno/ESkyrme/BSkG2-SM.dat +1002 -0
  272. nucleardatapy/data/matter/pheno/ESkyrme/BSkG3-NM.dat +1002 -0
  273. nucleardatapy/data/matter/pheno/ESkyrme/BSkG3-SM.dat +1002 -0
  274. nucleardatapy/data/matter/pheno/Skyrme/BSK14-NM.dat +99 -0
  275. nucleardatapy/data/matter/pheno/Skyrme/BSK14-SM.dat +99 -0
  276. nucleardatapy/data/matter/pheno/Skyrme/BSK16-NM.dat +99 -0
  277. nucleardatapy/data/matter/pheno/Skyrme/BSK16-SM.dat +99 -0
  278. nucleardatapy/data/matter/pheno/Skyrme/BSK17-NM.dat +99 -0
  279. nucleardatapy/data/matter/pheno/Skyrme/BSK17-SM.dat +99 -0
  280. nucleardatapy/data/matter/pheno/Skyrme/BSK27-NM.dat +99 -0
  281. nucleardatapy/data/matter/pheno/Skyrme/BSK27-SM.dat +99 -0
  282. nucleardatapy/data/matter/pheno/Skyrme/F+-NM.dat +99 -0
  283. nucleardatapy/data/matter/pheno/Skyrme/F+-SM.dat +99 -0
  284. nucleardatapy/data/matter/pheno/Skyrme/F--NM.dat +99 -0
  285. nucleardatapy/data/matter/pheno/Skyrme/F--SM.dat +99 -0
  286. nucleardatapy/data/matter/pheno/Skyrme/F0-NM.dat +99 -0
  287. nucleardatapy/data/matter/pheno/Skyrme/F0-SM.dat +99 -0
  288. nucleardatapy/data/matter/pheno/Skyrme/FPL-NM.dat +99 -0
  289. nucleardatapy/data/matter/pheno/Skyrme/FPL-SM.dat +99 -0
  290. nucleardatapy/data/matter/pheno/Skyrme/LNS-NM.dat +99 -0
  291. nucleardatapy/data/matter/pheno/Skyrme/LNS-SM.dat +99 -0
  292. nucleardatapy/data/matter/pheno/Skyrme/LNS1-NM.dat +99 -0
  293. nucleardatapy/data/matter/pheno/Skyrme/LNS1-SM.dat +99 -0
  294. nucleardatapy/data/matter/pheno/Skyrme/LNS5-NM.dat +99 -0
  295. nucleardatapy/data/matter/pheno/Skyrme/LNS5-SM.dat +99 -0
  296. nucleardatapy/data/matter/pheno/Skyrme/NRAPR-NM.dat +99 -0
  297. nucleardatapy/data/matter/pheno/Skyrme/NRAPR-SM.dat +99 -0
  298. nucleardatapy/data/matter/pheno/Skyrme/RATP-NM.dat +99 -0
  299. nucleardatapy/data/matter/pheno/Skyrme/RATP-SM.dat +99 -0
  300. nucleardatapy/data/matter/pheno/Skyrme/SAMI-NM.dat +99 -0
  301. nucleardatapy/data/matter/pheno/Skyrme/SAMI-SM.dat +99 -0
  302. nucleardatapy/data/matter/pheno/Skyrme/SGII-NM.dat +99 -0
  303. nucleardatapy/data/matter/pheno/Skyrme/SGII-SM.dat +99 -0
  304. nucleardatapy/data/matter/pheno/Skyrme/SIII-NM.dat +99 -0
  305. nucleardatapy/data/matter/pheno/Skyrme/SIII-SM.dat +99 -0
  306. nucleardatapy/data/matter/pheno/Skyrme/SKGSIGMA-NM.dat +99 -0
  307. nucleardatapy/data/matter/pheno/Skyrme/SKGSIGMA-SM.dat +99 -0
  308. nucleardatapy/data/matter/pheno/Skyrme/SKI2-NM.dat +99 -0
  309. nucleardatapy/data/matter/pheno/Skyrme/SKI2-SM.dat +99 -0
  310. nucleardatapy/data/matter/pheno/Skyrme/SKI4-NM.dat +99 -0
  311. nucleardatapy/data/matter/pheno/Skyrme/SKI4-SM.dat +99 -0
  312. nucleardatapy/data/matter/pheno/Skyrme/SKMP-NM.dat +99 -0
  313. nucleardatapy/data/matter/pheno/Skyrme/SKMP-SM.dat +99 -0
  314. nucleardatapy/data/matter/pheno/Skyrme/SKMS-NM.dat +99 -0
  315. nucleardatapy/data/matter/pheno/Skyrme/SKMS-SM.dat +99 -0
  316. nucleardatapy/data/matter/pheno/Skyrme/SKO-NM.dat +99 -0
  317. nucleardatapy/data/matter/pheno/Skyrme/SKO-SM.dat +99 -0
  318. nucleardatapy/data/matter/pheno/Skyrme/SKOP-NM.dat +99 -0
  319. nucleardatapy/data/matter/pheno/Skyrme/SKOP-SM.dat +99 -0
  320. nucleardatapy/data/matter/pheno/Skyrme/SKP-NM.dat +99 -0
  321. nucleardatapy/data/matter/pheno/Skyrme/SKP-SM.dat +99 -0
  322. nucleardatapy/data/matter/pheno/Skyrme/SKRSIGMA-NM.dat +99 -0
  323. nucleardatapy/data/matter/pheno/Skyrme/SKRSIGMA-SM.dat +99 -0
  324. nucleardatapy/data/matter/pheno/Skyrme/SKX-NM.dat +99 -0
  325. nucleardatapy/data/matter/pheno/Skyrme/SKX-SM.dat +99 -0
  326. nucleardatapy/data/matter/pheno/Skyrme/SLY230A-NM.dat +99 -0
  327. nucleardatapy/data/matter/pheno/Skyrme/SLY230A-SM.dat +99 -0
  328. nucleardatapy/data/matter/pheno/Skyrme/SLY230B-NM.dat +99 -0
  329. nucleardatapy/data/matter/pheno/Skyrme/SLY230B-SM.dat +99 -0
  330. nucleardatapy/data/matter/pheno/Skyrme/SLY4-NM.dat +99 -0
  331. nucleardatapy/data/matter/pheno/Skyrme/SLY4-SM.dat +99 -0
  332. nucleardatapy/data/matter/pheno/Skyrme/SLY5-NM.dat +99 -0
  333. nucleardatapy/data/matter/pheno/Skyrme/SLY5-SM.dat +99 -0
  334. nucleardatapy/data/matter/pheno/Skyrme/SV-NM.dat +99 -0
  335. nucleardatapy/data/matter/pheno/Skyrme/SV-SM.dat +99 -0
  336. nucleardatapy/data/matter/pheno/Skyrme/Skz2-NM.dat +99 -0
  337. nucleardatapy/data/matter/pheno/Skyrme/Skz2-SM.dat +99 -0
  338. nucleardatapy/data/matter/pheno/Skyrme/T44-NM.dat +99 -0
  339. nucleardatapy/data/matter/pheno/Skyrme/T44-SM.dat +99 -0
  340. nucleardatapy/data/matter/pheno/Skyrme/T6-NM.dat +99 -0
  341. nucleardatapy/data/matter/pheno/Skyrme/T6-SM.dat +99 -0
  342. nucleardatapy/data/matter/pheno/Skyrme/UNEDF0-NM.dat +99 -0
  343. nucleardatapy/data/matter/pheno/Skyrme/UNEDF0-SM.dat +99 -0
  344. nucleardatapy/data/matter/pheno/Skyrme/UNEDF1-NM.dat +99 -0
  345. nucleardatapy/data/matter/pheno/Skyrme/UNEDF1-SM.dat +99 -0
  346. nucleardatapy/data/matter/pheno/ddrh/DDME1-NM.dat +200 -0
  347. nucleardatapy/data/matter/pheno/ddrh/DDME1-SM.dat +176 -0
  348. nucleardatapy/data/matter/pheno/ddrh/DDME2-NM.dat +200 -0
  349. nucleardatapy/data/matter/pheno/ddrh/DDME2-SM.dat +169 -0
  350. nucleardatapy/data/matter/pheno/ddrh/DDMEd-NM.dat +200 -0
  351. nucleardatapy/data/matter/pheno/ddrh/DDMEd-SM.dat +200 -0
  352. nucleardatapy/data/matter/pheno/ddrh/PKDD-NM.dat +200 -0
  353. nucleardatapy/data/matter/pheno/ddrh/PKDD-SM.dat +191 -0
  354. nucleardatapy/data/matter/pheno/ddrh/PKDD.pdf +0 -0
  355. nucleardatapy/data/matter/pheno/ddrh/TW99-NM.dat +200 -0
  356. nucleardatapy/data/matter/pheno/ddrh/TW99-SM.dat +200 -0
  357. nucleardatapy/data/matter/pheno/ddrhf/PKA1-NM.dat +200 -0
  358. nucleardatapy/data/matter/pheno/ddrhf/PKA1-SM.dat +200 -0
  359. nucleardatapy/data/matter/pheno/ddrhf/PKO1-NM.dat +200 -0
  360. nucleardatapy/data/matter/pheno/ddrhf/PKO1-SM.dat +200 -0
  361. nucleardatapy/data/matter/pheno/ddrhf/PKO2-NM.dat +200 -0
  362. nucleardatapy/data/matter/pheno/ddrhf/PKO2-SM.dat +200 -0
  363. nucleardatapy/data/matter/pheno/ddrhf/PKO3-NM.dat +200 -0
  364. nucleardatapy/data/matter/pheno/ddrhf/PKO3-SM.dat +200 -0
  365. nucleardatapy/data/matter/pheno/nlrh/NL-SH-NM.dat +101 -0
  366. nucleardatapy/data/matter/pheno/nlrh/NL-SH-SM.dat +101 -0
  367. nucleardatapy/data/matter/pheno/nlrh/NL3-NM.dat +101 -0
  368. nucleardatapy/data/matter/pheno/nlrh/NL3-SM.dat +101 -0
  369. nucleardatapy/data/matter/pheno/nlrh/NL3II-NM.dat +101 -0
  370. nucleardatapy/data/matter/pheno/nlrh/NL3II-SM.dat +101 -0
  371. nucleardatapy/data/matter/pheno/nlrh/PK1-NM.dat +101 -0
  372. nucleardatapy/data/matter/pheno/nlrh/PK1-SM.dat +101 -0
  373. nucleardatapy/data/matter/pheno/nlrh/PK1R-NM.dat +101 -0
  374. nucleardatapy/data/matter/pheno/nlrh/PK1R-SM.dat +101 -0
  375. nucleardatapy/data/matter/pheno/nlrh/TM1-NM.dat +157 -0
  376. nucleardatapy/data/matter/pheno/nlrh/TM1-SM.dat +140 -0
  377. nucleardatapy/data/nuclei/esym/Danielewicz-2014-S.dat +8 -0
  378. nucleardatapy/data/nuclei/isgmr/2010-ISGMR-Li.dat +16 -0
  379. nucleardatapy/data/nuclei/isgmr/2018-ISGMR-Garg.dat +17 -0
  380. nucleardatapy/data/nuclei/isgmr/2018-ISGMR-Garg.tex +76 -0
  381. nucleardatapy/data/nuclei/isgmr/2022-ISGMR-average.dat +17 -0
  382. nucleardatapy/data/nuclei/isgmr/isgmr.pdf +0 -0
  383. nucleardatapy/data/nuclei/masses/AME/2012_nubase.mas12.txt +5513 -0
  384. nucleardatapy/data/nuclei/masses/AME/2016_nubase2016.txt +5625 -0
  385. nucleardatapy/data/nuclei/masses/AME/2020_nubase_4.mas20.txt +5868 -0
  386. nucleardatapy/data/nuclei/masses/Theory/1988-GK.txt +1 -0
  387. nucleardatapy/data/nuclei/masses/Theory/1988-MJ.txt +1 -0
  388. nucleardatapy/data/nuclei/masses/Theory/1995-DZ.txt +1 -0
  389. nucleardatapy/data/nuclei/masses/Theory/1995-ETFSI.txt +8245 -0
  390. nucleardatapy/data/nuclei/masses/Theory/1995-FRDM.dat +8982 -0
  391. nucleardatapy/data/nuclei/masses/Theory/1995-FRDM.txt +8980 -0
  392. nucleardatapy/data/nuclei/masses/Theory/2005-KTUY.txt +9437 -0
  393. nucleardatapy/data/nuclei/masses/Theory/2007-HFB14.txt +8389 -0
  394. nucleardatapy/data/nuclei/masses/Theory/2010-HFB21.dat +8389 -0
  395. nucleardatapy/data/nuclei/masses/Theory/2010-WS3.txt +1 -0
  396. nucleardatapy/data/nuclei/masses/Theory/2011-WS3.txt +1 -0
  397. nucleardatapy/data/nuclei/masses/Theory/2013-HFB22.txt +8396 -0
  398. nucleardatapy/data/nuclei/masses/Theory/2013-HFB23.txt +8396 -0
  399. nucleardatapy/data/nuclei/masses/Theory/2013-HFB24.txt +8396 -0
  400. nucleardatapy/data/nuclei/masses/Theory/2013-HFB25.txt +9488 -0
  401. nucleardatapy/data/nuclei/masses/Theory/2013-HFB26-old.txt +9512 -0
  402. nucleardatapy/data/nuclei/masses/Theory/2013-HFB26.txt +9515 -0
  403. nucleardatapy/data/nuclei/masses/Theory/2021-BSkG1-old.txt +7017 -0
  404. nucleardatapy/data/nuclei/masses/Theory/2021-BSkG1.txt +6574 -0
  405. nucleardatapy/data/nuclei/masses/Theory/2022-BSkG2-old.txt +6722 -0
  406. nucleardatapy/data/nuclei/masses/Theory/2022-BSkG2.txt +6719 -0
  407. nucleardatapy/data/nuclei/masses/Theory/2023-BSkG3-old.txt +8489 -0
  408. nucleardatapy/data/nuclei/masses/Theory/2023-BSkG3.txt +8486 -0
  409. nucleardatapy/data/nuclei/masses/Theory/2024-BSkG4-old.txt +7848 -0
  410. nucleardatapy/data/nuclei/masses/Theory/2025-BSkG4.txt +7845 -0
  411. nucleardatapy/data/nuclei/masses/UNEDF/ExpDatabase_Fortran90_v04/DataSet04.dat +1497 -0
  412. nucleardatapy/data/nuclei/masses/UNEDF/ExpDatabase_Fortran90_v04/Makefile_ifc +16 -0
  413. nucleardatapy/data/nuclei/masses/UNEDF/ExpDatabase_Fortran90_v04/input04.f90 +515 -0
  414. nucleardatapy/data/nuclei/masses/UNEDF/ExpDatabase_Fortran90_v04/main04.f90 +14 -0
  415. nucleardatapy/data/nuclei/masses/UNEDF/ExpDatabase_Fortran90_v04.tar +0 -0
  416. nucleardatapy/data/nuclei/nskin/208Pb.dat +25 -0
  417. nucleardatapy/data/nuclei/nskin/48Ca.dat +21 -0
  418. nucleardatapy/data/nuclei/radch/2013-Angeli.csv +960 -0
  419. nucleardatapy/env.py +9 -0
  420. nucleardatapy/eos/__init__.py +7 -0
  421. nucleardatapy/eos/setup_am.py +198 -0
  422. nucleardatapy/eos/setup_am_Beq.py +240 -0
  423. nucleardatapy/eos/setup_am_Leq.py +229 -0
  424. nucleardatapy/fig/__init__.py +43 -0
  425. nucleardatapy/fig/astro_setupGW_fig.py +67 -0
  426. nucleardatapy/fig/astro_setupMR_fig.py +88 -0
  427. nucleardatapy/fig/astro_setupMasses_fig.py +64 -0
  428. nucleardatapy/fig/astro_setupMtov_fig.py +84 -0
  429. nucleardatapy/fig/astro_setupMup_fig.py +68 -0
  430. nucleardatapy/fig/corr_setupEsymDen_fig.py +47 -0
  431. nucleardatapy/fig/corr_setupEsymLsym_fig.py +56 -0
  432. nucleardatapy/fig/corr_setupKsatQsat_fig.py +64 -0
  433. nucleardatapy/fig/crust_setupCrust_fig.py +52 -0
  434. nucleardatapy/fig/eos_setupAMBeq_fig.py +204 -0
  435. nucleardatapy/fig/eos_setupAMLeq_fig.py +209 -0
  436. nucleardatapy/fig/eos_setupAM_fig.py +81 -0
  437. nucleardatapy/fig/hnuc_setupChart_fig.py +54 -0
  438. nucleardatapy/fig/hnuc_setupRE1LExp_fig.py +44 -0
  439. nucleardatapy/fig/matter_ENM_fig.py +119 -0
  440. nucleardatapy/fig/matter_ESM_fig.py +119 -0
  441. nucleardatapy/fig/matter_Esym_fig.py +122 -0
  442. nucleardatapy/fig/matter_setupFFGNuc_fig.py +172 -0
  443. nucleardatapy/fig/matter_setupHIC_fig.py +101 -0
  444. nucleardatapy/fig/matter_setupMicroEsym_fig.py +85 -0
  445. nucleardatapy/fig/matter_setupMicro_LP_fig.py +109 -0
  446. nucleardatapy/fig/matter_setupMicro_band_fig.py +85 -0
  447. nucleardatapy/fig/matter_setupMicro_effmass_fig.py +70 -0
  448. nucleardatapy/fig/matter_setupMicro_err_NM_fig.py +47 -0
  449. nucleardatapy/fig/matter_setupMicro_fig.py +165 -0
  450. nucleardatapy/fig/matter_setupMicro_gap_fig.py +161 -0
  451. nucleardatapy/fig/matter_setupNEPModelDist_fig.py +68 -0
  452. nucleardatapy/fig/matter_setupPhenoEsym_fig.py +100 -0
  453. nucleardatapy/fig/matter_setupPheno_fig.py +121 -0
  454. nucleardatapy/fig/nuc_setupBEExp_fig.py +122 -0
  455. nucleardatapy/hnuc/__init__.py +8 -0
  456. nucleardatapy/hnuc/setup_be1L_exp.py +233 -0
  457. nucleardatapy/hnuc/setup_be1Xi_exp.py +192 -0
  458. nucleardatapy/hnuc/setup_be2L_exp.py +202 -0
  459. nucleardatapy/matter/__init__.py +17 -0
  460. nucleardatapy/matter/setup_ffg.py +410 -0
  461. nucleardatapy/matter/setup_hic.py +314 -0
  462. nucleardatapy/matter/setup_micro.py +1635 -0
  463. nucleardatapy/matter/setup_micro_band.py +233 -0
  464. nucleardatapy/matter/setup_micro_effmass.py +215 -0
  465. nucleardatapy/matter/setup_micro_esym.py +352 -0
  466. nucleardatapy/matter/setup_micro_gap.py +381 -0
  467. nucleardatapy/matter/setup_micro_lp.py +347 -0
  468. nucleardatapy/matter/setup_nep.py +478 -0
  469. nucleardatapy/matter/setup_nep_dist.py +187 -0
  470. nucleardatapy/matter/setup_nep_model_dist.py +202 -0
  471. nucleardatapy/matter/setup_pheno.py +353 -0
  472. nucleardatapy/matter/setup_pheno_esym.py +271 -0
  473. nucleardatapy/nuc/__init__.py +12 -0
  474. nucleardatapy/nuc/setup_be_exp.py +1026 -0
  475. nucleardatapy/nuc/setup_be_theo.py +1086 -0
  476. nucleardatapy/nuc/setup_isgmr_exp.py +494 -0
  477. nucleardatapy/nuc/setup_nskin_exp.py +610 -0
  478. nucleardatapy/nuc/setup_nskin_theo.py +263 -0
  479. nucleardatapy/nuc/setup_rch_exp.py +159 -0
  480. nucleardatapy/nuc/setup_rch_theo.py +198 -0
  481. nucleardatapy/param.py +247 -0
  482. nucleardatapy-0.2.0.dist-info/LICENSE +402 -0
  483. nucleardatapy-0.2.0.dist-info/METADATA +115 -0
  484. nucleardatapy-0.2.0.dist-info/RECORD +491 -0
  485. nucleardatapy-0.2.0.dist-info/WHEEL +5 -0
  486. nucleardatapy-0.2.0.dist-info/top_level.txt +2 -0
  487. tests/__init__.py +16 -0
  488. tests/test_astro_setupMasses.py +18 -0
  489. tests/test_corr_setupKsatQsat.py +22 -0
  490. tests/test_matter_setupFFGNuc.py +21 -0
  491. tests/test_matter_setupMicro.py +20 -0
@@ -0,0 +1,1026 @@
1
+ import os
2
+ import sys
3
+ import math
4
+ import numpy as np # 1.15.0
5
+
6
+ #nucleardatapy_tk = os.getenv('NUCLEARDATAPY_TK')
7
+ #sys.path.insert(0, nucleardatapy_tk)
8
+
9
+ import nucleardatapy as nuda
10
+
11
+ CST_AtmMass = 931.494028
12
+ #CST_mpc2 = 938.272081
13
+ #CST_mnc2 = 939.565413
14
+ #CST_mec2 = 0.5109989461
15
+ CST_mnc2 = 8.0713171
16
+ CST_dmnc2= 0.0000005
17
+ CST_mHc2 = 7.2889706
18
+ CST_dmHc2= 0.0000001
19
+ yearMin=1851
20
+
21
+ # time conversion (using tropical year as in NUBASE2020):
22
+ ns = 1e-9
23
+ minutes = 60 # in s
24
+ hours = 60 * minutes # (hours) in s
25
+ days = 24 * hours # (day) in s
26
+ days = 86400 # in s
27
+ months = 30 * days # (month) (30 days) in s
28
+ years = 365.2422 * days # (year) in s
29
+ #print('years:',years)
30
+ #print('type(years):',type(years))
31
+ ILt = 1e30 * years # infinite Large time
32
+ ISt = 1.e-30 # infinite Short time
33
+ HTvsl = 1e-3 # half-time for very short live nuclei
34
+ HTsl = hours # half-time for short live nuclei
35
+
36
+ def stable_fit(Zmin = 1, Zmax = 120):
37
+ Z = np.linspace(start=Zmin, stop=Zmax, num=1+Zmax-Zmin, dtype = int )
38
+ N = np.array( Z + 6.e-3*Z*Z, dtype = int )
39
+ return N, Z
40
+
41
+ def be_exp_tables():
42
+ """
43
+ Return a list of the tables available in this toolkit for the experimental masses and
44
+ print them all on the prompt. These tables are the following
45
+ ones: 'AME'.
46
+
47
+ :return: The list of tables.
48
+ :rtype: list[str].
49
+ """
50
+ #
51
+ if nuda.env.verb: print("\nEnter be_exp_tables()")
52
+ #
53
+ tables = [ 'AME' ]
54
+ #
55
+ #print('tables available in the toolkit:',tables)
56
+ tables_lower = [ item.lower() for item in tables ]
57
+ #print('tables available in the toolkit:',tables_lower)
58
+ #
59
+ if nuda.env.verb: print("Exit be_exp_tables()")
60
+ #
61
+ return tables, tables_lower
62
+
63
+ def be_exp_versions( table ):
64
+ """
65
+ Return a list of versions of tables available in
66
+ this toolkit for a given model and print them all on the prompt.
67
+
68
+ :param table: The table for which there are different versions.
69
+ :type table: str.
70
+ :return: The list of versions. \
71
+ If table == 'AME': '2020', '2016', '2012'.
72
+ :rtype: list[str].
73
+ """
74
+ #
75
+ if nuda.env.verb: print("\nEnter be_exp_versions()")
76
+ #
77
+ if table.lower()=='ame':
78
+ versions= [ '2020', '2016', '2012' ]
79
+ #
80
+ #print('Versions available in the toolkit:',versions)
81
+ versions_lower = [ item.lower() for item in versions ]
82
+ #
83
+ if nuda.env.verb: print("Exit be_exp_tables_versions()")
84
+ #
85
+ return versions, versions_lower
86
+
87
+ def plot_shells(axs):
88
+ #
89
+ # plot shells for isotopes and isotones
90
+ #
91
+ axs.plot( [0,40], [7,7], linestyle='dotted', linewidth=1, color='gray')
92
+ axs.plot( [0,40], [9,9], linestyle='dotted', linewidth=1, color='gray')
93
+ axs.plot( [6,60], [19,19], linestyle='dotted', linewidth=1, color='gray')
94
+ axs.plot( [6,60], [21,21], linestyle='dotted', linewidth=1, color='gray')
95
+ axs.plot( [12,90], [27,27], linestyle='dotted', linewidth=1, color='gray')
96
+ axs.plot( [12,90], [29,29], linestyle='dotted', linewidth=1, color='gray')
97
+ axs.plot( [34,138], [49,49], linestyle='dotted', linewidth=1, color='gray')
98
+ axs.plot( [34,138], [51,51], linestyle='dotted', linewidth=1, color='gray')
99
+ axs.plot( [76,170], [81,81], linestyle='dotted', linewidth=1, color='gray')
100
+ axs.plot( [76,170], [83,83], linestyle='dotted', linewidth=1, color='gray')
101
+ axs.plot( [126,190], [127,127], linestyle='dotted', linewidth=1, color='gray')
102
+ axs.plot( [126,190], [129,129], linestyle='dotted', linewidth=1, color='gray')
103
+ #
104
+ # plot shells for isotones
105
+ #
106
+ axs.plot( [7,7], [0,24], linestyle='dotted', linewidth=1, color='gray')
107
+ axs.plot( [9,9], [0,24], linestyle='dotted', linewidth=1, color='gray')
108
+ axs.plot( [19,19], [4,40], linestyle='dotted', linewidth=1, color='gray')
109
+ axs.plot( [21,21], [4,40], linestyle='dotted', linewidth=1, color='gray')
110
+ axs.plot( [27,27], [4,46], linestyle='dotted', linewidth=1, color='gray')
111
+ axs.plot( [29,29], [4,46], linestyle='dotted', linewidth=1, color='gray')
112
+ axs.plot( [49,49], [14,60], linestyle='dotted', linewidth=1, color='gray')
113
+ axs.plot( [51,51], [14,60], linestyle='dotted', linewidth=1, color='gray')
114
+ axs.plot( [81,81], [20,86], linestyle='dotted', linewidth=1, color='gray')
115
+ axs.plot( [83,83], [20,86], linestyle='dotted', linewidth=1, color='gray')
116
+ axs.plot( [127,127], [40,132], linestyle='dotted', linewidth=1, color='gray')
117
+ axs.plot( [129,129], [40,132], linestyle='dotted', linewidth=1, color='gray')
118
+ #
119
+ return axs
120
+
121
+ class setupBEExp():
122
+ """
123
+ Instantiate the experimental nuclear masses from AME mass table.
124
+
125
+ This choice is defined in the variables `table` and `version`.
126
+
127
+ `table` can chosen among the following ones: 'AME'.
128
+
129
+ `version` can be chosen among the following choices: '2020', '2016', '2012'.
130
+
131
+ :param table: Fix the name of `table`. Default value: 'AME'.
132
+ :type table: str, optional.
133
+ :param version: Fix the name of `version`. Default value: 2020'.
134
+ :type version: str, optional.
135
+
136
+ **Attributes:**
137
+ """
138
+ def __init__(self, table = 'AME', version = '2020'):
139
+ #
140
+ if nuda.env.verb: print("Enter setupBEExp()")
141
+ #
142
+ tables, tables_lower = be_exp_tables()
143
+ if table.lower() not in tables_lower:
144
+ print('Table ',table,' is not in the list of tables.')
145
+ print('list of tables:',tables)
146
+ print('-- Exit the code --')
147
+ exit()
148
+ self.table = table
149
+ if nuda.env.verb: print("table:",table)
150
+ #
151
+ versions, versions_lower = be_exp_versions( table = table )
152
+ if version.lower() not in versions_lower:
153
+ print('Version ',version,' is not in the list of versions.')
154
+ print('list of versions:',versions)
155
+ print('-- Exit the code --')
156
+ exit()
157
+ self.version = version
158
+ if nuda.env.verb: print("version:",version)
159
+ #
160
+ #: Attribute A (mass of the nucleus).
161
+ self.nucA = []
162
+ #: Attribute Z (charge of the nucleus).
163
+ self.nucZ = []
164
+ #: Attribute symb (symbol) of the element, e.g., Fe.
165
+ self.nucSymb = []
166
+ #: Attribute N (number of neutrons of the nucleus).
167
+ self.nucN = []
168
+ #: Attribute I.
169
+ self.flagI = []
170
+ #: Attribute Interp (interpolation). Interp='y' is the nucleus\
171
+ #: has not been measured but is in the table based on interpolation expressions.\
172
+ #: otherwise Interp = 'n' for nuclei produced in laboratory and measured.
173
+ self.flagInterp = []
174
+ #: Attribute stbl. stbl='y' if the nucleus is stable (according to the table). Otherwise stbl = 'n'.
175
+ self.nucStbl = [] # ='y' if stable nucleus
176
+ #: Attribute HT (half-Time) of the nucleus.
177
+ self.nucHT = [] # half-time in s
178
+ #: Attribute year of the discovery of the nucleus.
179
+ self.nucYear = []
180
+ #: Attribute BE (Binding Energy) of the nucleus.
181
+ self.nucBE = []
182
+ #: Attribute uncertainty in the BE (Binding Energy) of the nucleus.
183
+ self.nucBE_err = []
184
+ #: Attribute Zmax: maximum charge of nuclei present in the table.
185
+ self.Zmax=0
186
+ #
187
+ if table.lower()=='ame':
188
+ if version=='2012':
189
+ file_in = nuda.param.path_data+'nuclei/masses/AME/2012_nubase.mas12.txt'
190
+ nbLine_skip = 3 # lines in the header to skip
191
+ cbe = 18 # column giving the binding energy
192
+ cdbe = 29 # column giving the uncertainty in the binding energy
193
+ cdbee = 38 # column ??
194
+ cyear=105 # column for the discovery year
195
+ elif version=='2016':
196
+ file_in = nuda.param.path_data+'nuclei/masses/AME/2016_nubase2016.txt'
197
+ nbLine_skip = 0
198
+ cbe = 18
199
+ cdbe = 29
200
+ cdbee = 38
201
+ cyear=105 # column for the discovery year
202
+ elif version=='2020':
203
+ file_in = nuda.param.path_data+'nuclei/masses/AME/2020_nubase_4.mas20.txt'
204
+ nbLine_skip = 26
205
+ cbe = 18
206
+ cdbe = 31
207
+ cdbee = 42
208
+ cyear=114 # column for the discovery year
209
+ #: Attribute providing the full reference to the paper to be citted.
210
+ self.ref='F.G. Kondev, M. Wang, W.J. Huang, S. Naimi, and G. Audi, Chin. Phys. C45, 030001 (2021)'
211
+ #: Attribute providing the label the data is references for figures.
212
+ self.label = 'AME-2020'
213
+ #: Attribute providing additional notes about the data.
214
+ self.note = "write here notes about this table."
215
+ #
216
+ # read the AME table
217
+ #
218
+ nbLine = 0
219
+ nbNuc = 0
220
+ #
221
+ self.ind_min = 10000
222
+ self.ind_max = 0
223
+ self.year_min = 3000
224
+ self.year_max = 1600
225
+ #
226
+ with open(file_in,'r') as file:
227
+ for line in file:
228
+ nbLine = nbLine + 1
229
+ # skip the header of the file
230
+ if nbLine < nbLine_skip: continue
231
+ if (nuda.env.verb): print('line:'+str(nbLine)+':'+line[0:-2])
232
+ # if '#' in line[14:40]: continue
233
+ # Read input file:
234
+ AA=int(line[0:3])
235
+ #if nucA < int(Amin): continue
236
+ #if int(A) != 0 and nucA != int(A): continue
237
+ ZZ=int(line[4:7])
238
+ #if nucZ < int(Zmin): continue
239
+ #if int(Z) != 0 and nucZ != int(Z): continue
240
+ NN = AA - ZZ
241
+ if (nuda.env.verb): print(' nucleus:',AA,ZZ,NN)
242
+ #if ZZ == 20: print(' nucleus:',AA,ZZ,NN)
243
+ flagI=int(line[7:8]) # if nuci==0: ground-state (GS)
244
+ if (nuda.env.verb): print(' flagI:'+str(flagI))
245
+ # select only GS by skiping all contributions from other states (flagI = 0)
246
+ #if flagI != 0: continue
247
+ #
248
+ name=line[11:16]
249
+ if ( name[0:3].isdigit() ):
250
+ symb=name[3:5]
251
+ elif ( name[0:2].isdigit() ):
252
+ symb=name[2:4]
253
+ else:
254
+ symb=name[1:3]
255
+ if nuda.env.verb: print(' Symbol:',symb)
256
+ isomer=line[16:17]
257
+ if nuda.env.verb: print(' Isomer:',isomer)
258
+ stbl = 'n'
259
+ ht=line[69:78]
260
+ htu=line[78:80]
261
+ #print('ht:',ht,' unit:',htu)
262
+ fac = 1.0
263
+ if 'stbl' in ht:
264
+ stbl = 'y'
265
+ ht = ILt
266
+ elif 'p-unst' in ht:
267
+ stbl = 'n'
268
+ ht = ISt
269
+ elif ht==' '*9: # be carefull: there is no time associated, so it gives a short time by default
270
+ stbl = 'n'
271
+ ht = ISt
272
+ elif '\n' in ht: # be carefull: there is no data given here, so it gives short time by default
273
+ stbl = 'n'
274
+ ht = ISt
275
+ elif '>' in ht and '#' in ht: # be carefull: there is only upper limit for the half-time, so it gives it by default
276
+ stbl = 'n'
277
+ ht = float( ht.replace('#','').replace('>','') )
278
+ elif '<' in ht and '#' in ht: # be carefull: there is only upper limit for the half-time, so it gives it by default
279
+ stbl = 'n'
280
+ ht = float( ht.replace('#','').replace('<','') )
281
+ elif '>' in ht: # be carefull: there is only lower limit for the half-time, so it gives it by default
282
+ stbl = 'n'
283
+ ht = float( ht.replace('>','') )
284
+ elif '<' in ht: # be carefull: there is only upper limit for the half-time, so it gives it by default
285
+ stbl = 'n'
286
+ ht = float( ht.replace('<','') )
287
+ elif '#' in ht: # be carefull: there is only upper limit for the half-time, so it gives it by default
288
+ stbl = 'n'
289
+ ht = float( ht.replace('#','') )
290
+ elif '~' in ht: # be carefull: there is only upper limit for the half-time, so it gives it by default
291
+ stbl = 'n'
292
+ ht = float( ht.replace('~','') )
293
+ else:
294
+ stbl = 'n'
295
+ ht = float( ht )
296
+ if htu=='ys':
297
+ fac = 1.e-24 #print('yoctoseconds (1.e-24)')
298
+ elif htu=='zs':
299
+ fac = 1.e-21 # print('zeptoseconds (1.e-21)')
300
+ elif htu=='as':
301
+ fac = 1.e-18 # print('attoseconds (1.e-18)')
302
+ elif htu=='fs':
303
+ fac = 1.e-15 # print('femtosecond (1.e-15)')
304
+ elif htu=='ps':
305
+ fac = 1.e-12 # print('picoseconds (1.e-12)')
306
+ elif htu=='ns':
307
+ fac = 1.e-9 # print('nano-second (1.e-9)')
308
+ elif htu=='us':
309
+ fac = 1.e-6 # print('us (microsecond?) (1.e-6)')
310
+ elif htu=='ms':
311
+ fac = 1.e-3 # print('milliseconds (1.e-3)')
312
+ elif htu==' s':
313
+ fac = 1.0 # print('second')
314
+ elif htu==' h':
315
+ fac = hours # print('hours')
316
+ elif htu==' d':
317
+ fac = days # print('day')
318
+ elif htu==' m':
319
+ fac = months # print('month')
320
+ elif htu==' y':
321
+ fac = years # print('year')
322
+ elif htu=='ky':
323
+ fac = 1e3 * years # print('Kiloyears (1e3)')
324
+ elif htu=='My':
325
+ fac = 1e6 * years # print('Megayears (1e6)')
326
+ elif htu=='Gy':
327
+ fac = 1e9 * years # print('Gigayears (1e9)')
328
+ elif htu=='Ty':
329
+ fac = 1e12 * years # print('Terayears (1e12)')
330
+ elif htu=='Py':
331
+ fac = 1e15 * years # print('Petayears (1e15)')
332
+ elif htu=='Ey':
333
+ fac = 1e18 * years # print('Exayears (1e18)')
334
+ elif htu=='Zy':
335
+ fac = 1e21 * years # print('Zettayears (1e21)')
336
+ elif htu=='Yy':
337
+ fac = 1e24 * years # print('Yottayears (1e24)')
338
+ else:
339
+ print('unknown lifetime unit')
340
+ print('ht:',ht,' unit:',htu)
341
+ print('Exit()')
342
+ exit()
343
+ hts = ht * fac
344
+ year=line[cyear:cyear+4]
345
+ if nuda.env.verb: print(' year:',year)
346
+ # check if there is '#' in the string or if the value is absent:
347
+ #if ' '*11 in line[18:31]: continue
348
+ #print(" test:",line[cbe:cdbe],".",(cdbe-cbe))
349
+ #if '#' in line[cbe:cdbe]:
350
+ # check that there is a data for the measured mass:
351
+ if line[cbe:cdbe] == ' '*(cdbe-cbe): continue
352
+ if '#' in line[cbe:cdbe]:
353
+ ME=float(line[cbe:cdbe].replace('#',''))
354
+ ME_err=float(line[cdbe:cdbee].replace('#',''))
355
+ interp = 'y'
356
+ year=int(version)+10 # define a fake year which is after the table release
357
+ else:
358
+ ME=float(line[cbe:cdbe])
359
+ ME_err=float(line[cdbe:cdbee])
360
+ interp = 'n'
361
+ #print('type(year):',type(year))
362
+ #print('len(year):',len(year))
363
+ #nucYear=int(year)
364
+ if len(year) == 4 and year != ' '*4:
365
+ year=int(year)
366
+ else:
367
+ year=int(version)+10
368
+ #if year != ' '*4: nucYear=int(year)
369
+ if (nuda.env.verb): print(" ME:",ME,' +- ',ME_err,' keV')
370
+ # date could be missing even if the mass measurement exists
371
+ #if ( len(year) == 4 and year == ' '*4 and nucInterp == 'n' ): continue # to be checked
372
+ #
373
+ # Additional options: analyze the year of discovery
374
+ #
375
+ #print(nucA,nucZ,nucName)
376
+ #if ( len(yearStr) == 4 and yearStr == ' '*4 and nucInterp == 'n' ):
377
+ # print('issue with:',nucA,nucZ,nucName)
378
+ #yearInt = 0
379
+ #yearInt=int(yearStr)
380
+ #
381
+ # When all tests passed sucessfully: the new line can be stored
382
+ #
383
+ #yearFull.append(yearInt)
384
+ #yearInd=int((yearInt-yearMin)/10)
385
+ #if (env.verb): print(' year:'+str(yearInt)+',index:'+str(yearInd))
386
+ #
387
+ if year > self.year_max:
388
+ self.year_max = year
389
+ #self.i_max = nbNuc
390
+ if year < self.year_min:
391
+ self.year_min = year
392
+ #self.i_min = nbNuc
393
+ #print('nucYear:',nucYear,self.year_min)
394
+ #
395
+ Mass = AA * CST_AtmMass + ME / 1000.0 # conversion to MeV
396
+ Mass_err = ME_err / 1000.0
397
+ # nucBE = ( nucMass - nucZ * ( CST_mpc2 + CST_mec2 ) - nucN * CST_mnc2 )
398
+ BE = ME / 1000.0 - ZZ * CST_mHc2 - NN * CST_mnc2
399
+ BE_err = math.sqrt( Mass_err**2 + ZZ * CST_dmHc2**2 + NN * CST_dmnc2**2 )
400
+ if (nuda.env.verb): print(" BE:",BE,' +- ',BE_err)
401
+ # add nucleus to the table
402
+ self.nucA.append( AA )
403
+ self.nucZ.append( ZZ )
404
+ if ZZ > self.Zmax: self.Zmax = ZZ
405
+ self.nucN.append( NN )
406
+ self.nucSymb.append( symb )
407
+ self.flagI.append( flagI )
408
+ self.flagInterp.append( interp )
409
+ self.nucStbl.append( stbl )
410
+ self.nucHT.append( hts )
411
+ self.nucYear.append( year )
412
+ self.nucBE.append( BE )
413
+ self.nucBE_err.append( BE_err )
414
+ nbNuc = nbNuc + 1
415
+ if self.year_max > int(version): self.year_max = int(version)
416
+ #: Attribute with the number of line in the file.
417
+ self.nbLine = nbLine
418
+ #: Attribute with the number of nuclei read in the file.
419
+ self.nbNuc = nbNuc
420
+ print('Oldest discovery is from: ',self.year_min)
421
+ print('Most recent discovery is from: ',self.year_max)
422
+ #
423
+ # clasify per year of discovery discovered
424
+ #
425
+ dist_nyear = 20
426
+ #mas = nuda.SetupMasses( table = table, version = '2020' )
427
+ #: attribute distribution of years
428
+ self.dist_year = int(self.year_min/10) + np.arange(dist_nyear)
429
+ #: attribute number of nuclei discovered per year
430
+ self.dist_nbNuc = np.zeros( (dist_nyear) )
431
+ for i in range(self.nbNuc):
432
+ i_year = int( (self.nucYear[i]-self.year_min)/10 )
433
+ self.dist_nbNuc[i_year] += 1
434
+ print( 'dist:',self.dist_nbNuc )
435
+ #
436
+ if nuda.env.verb: print("Exit SetupNucBEExp()")
437
+ #
438
+ #
439
+ def print_outputs( self ):
440
+ """
441
+ Method which print outputs on terminal's screen.
442
+ """
443
+ print("")
444
+ #
445
+ if nuda.env.verb: print("Enter print_outputs()")
446
+ #
447
+ print("- Print output:")
448
+ print(" table: ",self.table)
449
+ print(" version:",self.version)
450
+ print(" ref: ",self.ref)
451
+ print(" label: ",self.label)
452
+ print(" note: ",self.note)
453
+ if any(self.nucZ): print(f" Z: {self.nucZ[0:-1:10]}")
454
+ if any(self.nucA): print(f" A: {self.nucA[0:-1:10]}")
455
+ #
456
+ if nuda.env.verb: print("Exit print_outputs()")
457
+ #
458
+ def select(self, Amin = 0, Zmin = 0, interp = 'n', state= 'gs', nucleus = 'unstable', every = 1):
459
+ """
460
+ Method which select some nuclei from the table according to some criteria.
461
+
462
+ :param interp: If interp='n', exclude the interpolated nuclei from the selected ones. \
463
+ If interp='y' consider them in the table, in addition to the others.
464
+ :type interp: str, optional. Default = 'n'.
465
+ :param state: select the kind of state. If state='gs', select nuclei measured in their ground state.
466
+ :type state: str, optional. Default 'gs'.
467
+ :param nucleus: 'unstable'.
468
+ :type nucleus: str, optional. Default 'unstable'. \
469
+ It can be set to 'stable', 'longlive' (with LT>10 min), 'shortlive' (with 10min>LT>1 ns), \
470
+ 'veryshortlive' (with LT< 1ns)
471
+ :param every: consider only 1 out of `every` nuclei in the table.
472
+ :type every: int, optional. Default every = 1.
473
+
474
+ **Attributes:**
475
+ """
476
+
477
+ #
478
+ if nuda.env.verb: print("Enter select()")
479
+ #
480
+ if interp.lower() not in [ 'y', 'n' ]:
481
+ print('Interp ',interp,' is not "y" or "n".')
482
+ print('-- Exit the code --')
483
+ exit()
484
+ self.nucInterp = interp
485
+ if nuda.env.verb: print("interp:",interp)
486
+ #
487
+ if state.lower() not in [ 'gs' ]:
488
+ print('State ',state,' is not "gs".')
489
+ print('-- Exit the code --')
490
+ exit()
491
+ self.state = state
492
+ if nuda.env.verb: print("state:",state)
493
+ #
494
+ nuclei = [ 'stable', 'unstable', 'longlive', 'shortlive', 'veryshortlive' ]
495
+ #
496
+ if nucleus.lower() not in nuclei:
497
+ print('Nucleus ',nucleus,' is not in the list: ',nuclei)
498
+ print('-- Exit the code --')
499
+ exit()
500
+ self.nucleus = nucleus
501
+ if nuda.env.verb: print("nucleus:",nucleus)
502
+ #
503
+ nbNucTot = 0
504
+ nbNucSta = 0
505
+ nbNucSel = 0
506
+ #
507
+ #: Attribute sel_A (mass of the selected nuclei).
508
+ self.sel_nucA = []
509
+ #: Attribute sel_Z (charge of the selected nuclei).
510
+ self.sel_nucZ = []
511
+ #: Attribute sel_symb (symbol of the selected nuclei).
512
+ self.sel_nucSymb = []
513
+ self.sel_nucN = []
514
+ self.sel_flagI = []
515
+ self.sel_flagInterp = []
516
+ self.sel_nucHT = [] # half-time in s
517
+ self.sel_nucYear = []
518
+ self.sel_nucBE = []
519
+ self.sel_nucBE_err = []
520
+ #
521
+ self.sel_Zmax = 0
522
+ #
523
+ for ind in range(self.nbNuc):
524
+ #
525
+ nucA = self.nucA[ind]
526
+ nucZ = self.nucZ[ind]
527
+ nucN = self.nucN[ind]
528
+ flagI = self.flagI[ind]
529
+ nucSymb = self.nucSymb[ind]
530
+ flagInterp = self.flagInterp[ind]
531
+ nucStbl = self.nucStbl[ind]
532
+ nucHT = self.nucHT[ind]
533
+ nucYear = self.nucYear[ind]
534
+ nucBE = self.nucBE[ind]
535
+ nucBE_err = self.nucBE_err[ind]
536
+ #print('select:',ind,nucA,nucZ,nucN,nucSymb)
537
+ # skip nuclei below Amin and Zmin:
538
+ if nucA < Amin or nucZ < Zmin:
539
+ continue
540
+ #
541
+ if nucleus.lower() == 'stable' and nucStbl == 'y':
542
+ pass
543
+ elif nucleus.lower() == 'unstable' and nucStbl == 'n':
544
+ pass
545
+ elif nucleus.lower() == 'longlive' and nucStbl == 'n' and nucHT > HTsl:
546
+ pass
547
+ elif nucleus.lower() == 'shortlive' and nucStbl == 'n' and nucHT < HTsl and nucHT > HTvsl:
548
+ pass
549
+ elif nucleus.lower() == 'veryshortlive' and nucStbl == 'n' and nucHT < HTvsl:
550
+ pass
551
+ else:
552
+ continue
553
+ #
554
+ nbNucTot = nbNucTot + 1
555
+ # skip nucleus if interpolated data
556
+ if flagInterp == 'y':
557
+ continue
558
+ # skip nuclei not in GS
559
+ if state == 'gs' and flagI != 0:
560
+ continue
561
+ nbNucSta = nbNucSta + 1
562
+ # skip nuclei depending on every:
563
+ if nbNucSta % every != 0 :
564
+ continue
565
+ nbNucSel = nbNucSel + 1
566
+ self.sel_nucA.append( nucA )
567
+ self.sel_nucZ.append( nucZ )
568
+ if nucZ > self.sel_Zmax: self.sel_Zmax = nucZ
569
+ self.sel_nucN.append( nucN )
570
+ self.sel_nucSymb.append( nucSymb )
571
+ self.sel_flagI.append( flagI )
572
+ self.sel_flagInterp.append( flagInterp )
573
+ self.sel_nucHT.append( nucHT )
574
+ self.sel_nucYear.append( nucYear )
575
+ self.sel_nucBE.append( nucBE )
576
+ self.sel_nucBE_err.append( nucBE_err )
577
+ self.sel_nbNucTot = nbNucTot
578
+ self.sel_nbNucSta = nbNucSta
579
+ self.sel_nbNucSel = nbNucSel
580
+ print('number of nuclei(Tot):',self.sel_nbNucTot)
581
+ print('number of nuclei(Sta):',self.sel_nbNucSta)
582
+ print('number of nuclei(Sel):',self.sel_nbNucSel)
583
+ #
584
+ if nuda.env.verb: print("Exit select()")
585
+ #
586
+ return self
587
+ #
588
+ def isotopes(self, Zmin = 1, Zmax = 95 ):
589
+ """
590
+ Method which find the first and last isotopes for each Zmin<Z<Zmax.
591
+
592
+ :param Zmin: Fix the minimum charge for the search of isotopes.
593
+ :type Zmin: int, optional. Default: 1.
594
+ :param Zmax: Fix the maximum charge for the search of isotopes.
595
+ :type Zmax: int, optional. Default: 95.
596
+
597
+ **Attributes:**
598
+ """
599
+ #
600
+ if nuda.env.verb: print("Enter drip()")
601
+ #
602
+ if Zmin > Zmax:
603
+ print('In isotopes attribute function of setup_be_exp.py:')
604
+ print('Bad definition of Zmin and Zmax')
605
+ print('It is expected that Zmin<=Zmax')
606
+ print('Zmin,Zmax:',Zmin,Zmax)
607
+ print('exit')
608
+ exit()
609
+ #
610
+ Nstable, Zstable = stable_fit( Zmin = Zmin, Zmax = Zmax )
611
+ #
612
+ self.isotopes_Z = []
613
+ self.isotopes_Nmin = []
614
+ self.isotopes_Nmax = []
615
+ #
616
+ for ind,Z in enumerate(Zstable):
617
+ #
618
+ #print('ind,Z, Nstable:',ind,Z,Nstable[ind])
619
+ #
620
+ if Z > Zmax :
621
+ break
622
+ if Z < Zmin :
623
+ continue
624
+ #
625
+ Nmin = Nstable[ind]
626
+ Nmax = Nstable[ind]
627
+ #
628
+ #print('sel_Z:',self.sel_Z)
629
+ #exit()
630
+ for ind2 in range(self.sel_nbNucSel):
631
+ #if self.sel_Z[ind] == Z:
632
+ # print('sel_Z:',self.sel_Z)
633
+ # exit()
634
+ #print('ind:',ind,Z,self.sel_Zmax,self.sel_Z[ind2],Nmin,Nmax)
635
+ #print('sel_N:',self.sel_N[ind2])
636
+ if self.sel_nucZ[ind2] == Z and self.sel_nucN[ind2] < Nmin:
637
+ Nmin = self.sel_nucN[ind2]
638
+ if self.sel_nucZ[ind2] == Z and self.sel_nucN[ind2] > Nmax:
639
+ Nmax = self.sel_nucN[ind2]
640
+ self.isotopes_Z.append( Z )
641
+ self.isotopes_Nmin.append( Nmin )
642
+ self.isotopes_Nmax.append( Nmax )
643
+ #print('drip: Z',self.drip_Z)
644
+ #print('drip: Nmin:',self.drip_Nmin)
645
+ #print('drip: Nmax:',self.drip_Nmax)
646
+ #
647
+ if nuda.env.verb: print("Exit drip()")
648
+ #
649
+ return self
650
+ #
651
+ def select_year(self, year_min=1940, year_max=1960, state= 'gs'):
652
+ """
653
+ Method which select some nuclei from the table according to the discovery year.
654
+
655
+ :param year_min:
656
+ :type year_min:
657
+ :param year_max:
658
+ :type year_max:
659
+ :param state: select the kind of state. If state='gs', select nuclei measured in their ground state.
660
+ :type state: str, optional. Default 'gs'.
661
+
662
+ **Attributes:**
663
+ """
664
+ #
665
+ if self.year is None:
666
+ print('There is no year in the experimental mass table')
667
+ print('Table:',self.table)
668
+ print('Version:',self.version)
669
+ print('Exit()')
670
+ exit()
671
+ if year_min > int(self.version) or year_max < yearMin:
672
+ print('year_min or year_max is not well defined')
673
+ print('year_min:',year_min,' >? ',int(self.version))
674
+ print('year_max:',year_max,' <? ',yearMin)
675
+ print('-- Exit the code --')
676
+ exit()
677
+ self.year_min = year_min
678
+ self.year_max = year_max
679
+ #
680
+ if state.lower() not in [ 'gs' ]:
681
+ print('State ',state,' is not "gs".')
682
+ print('-- Exit the code --')
683
+ exit()
684
+ self.state = state
685
+ #
686
+ nbNucTot = 0
687
+ nbNucSta = 0
688
+ nbNucSel = 0
689
+ #
690
+ #: Attribute sel_A (mass of the selected nuclei).
691
+ self.sel_A = []
692
+ #: Attribute sel_Z (charge of the selected nuclei).
693
+ self.sel_Z = []
694
+ #: Attribute sel_symb (symbol of the selected nuclei).
695
+ self.sel_symb = []
696
+ self.sel_N = []
697
+ self.sel_I = []
698
+ self.sel_Interp = []
699
+ self.sel_HT = [] # half-time in s
700
+ self.sel_year = []
701
+ self.sel_BE = []
702
+ self.sel_BE_err = []
703
+ #
704
+ self.sel_Zmax = 0
705
+ for ind in range(self.nbNuc):
706
+ #
707
+ nucA = self.nucA[ind]
708
+ nucZ = self.nucZ[ind]
709
+ nucN = self.nucN[ind]
710
+ nucI = self.flagI[ind]
711
+ nucSymb = self.nucSymb[ind]
712
+ nucInterp = self.flagInterp[ind]
713
+ nucStbl = self.nucStbl[ind]
714
+ nucHT = self.nucHT[ind]
715
+ nucYear = self.nucYear[ind]
716
+ nucBE = self.nucBE[ind]
717
+ nucdBE = self.nucBE_err[ind]
718
+ # skip nuclei out of the year range:
719
+ if nucYear < year_min or nucYear >= year_max:
720
+ continue
721
+ #
722
+ #print('discovery year:',nucYear)
723
+ nbNucTot = nbNucTot + 1
724
+ # skip nucleus if interpolated data
725
+ if flagInterp == 'y':
726
+ continue
727
+ # skip nuclei not in GS
728
+ if state == 'gs' and nucI != 0:
729
+ continue
730
+ nbNucSta = nbNucSta + 1
731
+ nbNucSel = nbNucSel + 1
732
+ self.sel_A.append( nucA )
733
+ self.sel_Z.append( nucZ )
734
+ if nucZ > self.sel_Zmax: self.sel_Zmax = nucZ
735
+ self.sel_N.append( nucN )
736
+ self.sel_symb.append( nucSymb )
737
+ self.sel_I.append( flagI )
738
+ self.sel_Interp.append( flagInterp )
739
+ self.sel_HT.append( nucHT )
740
+ self.sel_year.append( nucYear )
741
+ self.sel_BE.append( nucBE )
742
+ self.sel_BE_err.append( nucBE_err )
743
+ self.sel_nbNucTot = nbNucTot
744
+ self.sel_nbNucSta = nbNucSta
745
+ self.sel_nbNucSel = nbNucSel
746
+ print('number of nuclei(Tot):',self.sel_nbNucTot)
747
+ print('number of nuclei(Sta):',self.sel_nbNucSta)
748
+ print('number of nuclei(Sel):',self.sel_nbNucSel)
749
+ #
750
+ if nuda.env.verb: print("Exit select()")
751
+ #
752
+ return self
753
+ #
754
+ def S2n( self, Zmin = 1, Zmax = 95 ):
755
+ """
756
+ Compute the two-neutron separation energy (S2n)
757
+ S2n = E(Z,N)-E(Z,N-2)
758
+ """
759
+ #
760
+ if nuda.env.verb: print("Enter S2n()")
761
+ #
762
+ if Zmin > Zmax:
763
+ print('In S2n attribute function of setup_be_exp.py:')
764
+ print('Bad definition of Zmin and Zmax')
765
+ print('It is expected that Zmin<=Zmax')
766
+ print('Zmin,Zmax:',Zmin,Zmax)
767
+ print('exit')
768
+ exit()
769
+ #
770
+ S2n_Z = []
771
+ S2n_N = []
772
+ S2n = []
773
+ #
774
+ for ind,Z in enumerate(self.nucZ):
775
+ #
776
+ if Z > Zmax :
777
+ continue
778
+ if Z < Zmin :
779
+ continue
780
+ #
781
+ if self.flagI[ind] != 0:
782
+ continue
783
+ if self.flagInterp[ind] == 'y':
784
+ continue
785
+ N = self.nucN[ind]
786
+ #
787
+ #print('For Z,N:',Z,N)
788
+ #
789
+ # search index for Z,N+2
790
+ #
791
+ flag_find = 0
792
+ for ind2,Z2 in enumerate(self.nucZ):
793
+ if Z == Z2 and self.nucN[ind2] == N-2 and self.flagI[ind2] == 0 and self.flagInterp[ind2] == 'n':
794
+ flag_find = 1
795
+ break
796
+ if flag_find == 1:
797
+ N2 = self.nucN[ind2]
798
+ #print('N,N2:',N,N2,'ind,ind2:',ind,ind2)
799
+ S2n_Z.append( self.nucZ[ind] )
800
+ S2n_N.append( self.nucN[ind] )
801
+ S2n.append( self.nucBE[ind2] - self.nucBE[ind] )
802
+ self.S2n_N = np.array( S2n_N, dtype = int )
803
+ self.S2n_Z = np.array( S2n_Z, dtype = int )
804
+ self.S2n = np.array( S2n, dtype = float )
805
+ #print('Z:',self.S2n_Z)
806
+ #print('N:',self.S2n_N)
807
+ #print('S2n:',self.S2n)
808
+ #print('Z:',self.S2n_Z)
809
+ #
810
+ if nuda.env.verb: print("Exit S2n()")
811
+ #
812
+ return self
813
+ #
814
+ def S2p( self, Nmin = 1, Nmax = 95 ):
815
+ """
816
+ Compute the two-proton separation energy (S2n)
817
+ S2p = E(Z,N)-E(Z-2,N)
818
+ """
819
+ #
820
+ if nuda.env.verb: print("Enter S2p()")
821
+ #
822
+ if Nmin > Nmax:
823
+ print('In S2p attribute function of setup_be_exp.py:')
824
+ print('Bad definition of Nmin and Nmax')
825
+ print('It is expected that Nmin<=Nmax')
826
+ print('Nmin,Nmax:',Nmin,Nmax)
827
+ print('exit')
828
+ exit()
829
+ #
830
+ S2p_Z = []
831
+ S2p_N = []
832
+ S2p = []
833
+ #
834
+ for ind,N in enumerate(self.nucN):
835
+ #
836
+ if N > Nmax :
837
+ continue
838
+ if N < Nmin :
839
+ continue
840
+ #
841
+ if self.flagI[ind] != 0:
842
+ continue
843
+ if self.flagInterp[ind] == 'y':
844
+ continue
845
+ Z = self.nucZ[ind]
846
+ #
847
+ #print('For Z,N:',Z,N)
848
+ #
849
+ # search index for Z-2,N
850
+ #
851
+ flag_find = 0
852
+ for ind2,N2 in enumerate(self.nucN):
853
+ if N == N2 and self.nucZ[ind2] == Z-2 and self.flagI[ind2] == 0 and self.flagInterp[ind2] == 'n':
854
+ flag_find = 1
855
+ break
856
+ if flag_find == 1:
857
+ Z2 = self.nucZ[ind2]
858
+ #print('N,N2:',N,N2,'ind,ind2:',ind,ind2)
859
+ S2p_Z.append( self.nucZ[ind] )
860
+ S2p_N.append( self.nucN[ind] )
861
+ S2p.append( self.nucBE[ind2] - self.nucBE[ind] )
862
+ self.S2p_N = np.array( S2p_N, dtype = int )
863
+ self.S2p_Z = np.array( S2p_Z, dtype = int )
864
+ self.S2p = np.array( S2p, dtype = float )
865
+ #print('Z:',self.S2n_Z)
866
+ #print('N:',self.S2n_N)
867
+ #print('S2n:',self.S2n)
868
+ #print('Z:',self.S2n_Z)
869
+ #
870
+ if nuda.env.verb: print("Exit S2p()")
871
+ #
872
+ return self
873
+ #
874
+ def D3p_n( self, Zmin = 1, Zmax = 95 ):
875
+ """
876
+ Compute the three-points odd-even mass staggering (D3p_n)
877
+ D_3p^N = (-)**N * ( 2*E(Z,N)-E(Z,N+1)-E(Z,N-1) ) / 2
878
+ """
879
+ #
880
+ if nuda.env.verb: print("Enter D3p_n()")
881
+ #
882
+ if Zmin > Zmax:
883
+ print('In D3p_n attribute function of setup_be_exp.py:')
884
+ print('Bad definition of Zmin and Zmax')
885
+ print('It is expected that Zmin<=Zmax')
886
+ print('Zmin,Zmax:',Zmin,Zmax)
887
+ print('exit')
888
+ exit()
889
+ #
890
+ D3p_n_Z_even = []
891
+ D3p_n_Z_odd = []
892
+ D3p_n_N_even = []
893
+ D3p_n_N_odd = []
894
+ D3p_n_even = []
895
+ D3p_n_odd = []
896
+ #
897
+ for ind,Z in enumerate(self.nucZ):
898
+ #
899
+ if Z > Zmax :
900
+ continue
901
+ if Z < Zmin :
902
+ continue
903
+ #
904
+ if self.flagI[ind] != 0:
905
+ continue
906
+ if self.flagInterp[ind] == 'y':
907
+ continue
908
+ #
909
+ N = self.nucN[ind]
910
+ #
911
+ if N % 2 == 0:
912
+ sign = 1.0 #even
913
+ else:
914
+ sign = -1.0 # odd
915
+ #
916
+ #print('For Z,N:',Z,N)
917
+ #
918
+ # search index for Z,N+2
919
+ #
920
+ flag_find1 = 0
921
+ for ind1,Z1 in enumerate(self.nucZ):
922
+ if Z == Z1 and self.nucN[ind1] == N+1 and self.flagI[ind1] == 0 and self.flagInterp[ind1] == 'n':
923
+ flag_find1 = 1
924
+ break
925
+ flag_find2 = 0
926
+ for ind2,Z2 in enumerate(self.nucZ):
927
+ if Z == Z2 and self.nucN[ind2] == N-1 and self.flagI[ind2] == 0 and self.flagInterp[ind2] == 'n':
928
+ flag_find2 = 1
929
+ break
930
+ if flag_find1*flag_find2 == 1:
931
+ if sign > 0: #even
932
+ D3p_n_Z_even.append( self.nucZ[ind] )
933
+ D3p_n_N_even.append( self.nucN[ind] )
934
+ D3p_n_even.append( sign/2.0*( -2*self.nucBE[ind] + self.nucBE[ind1] + self.nucBE[ind2] ) )
935
+ else:
936
+ D3p_n_Z_odd.append( self.nucZ[ind] )
937
+ D3p_n_N_odd.append( self.nucN[ind] )
938
+ D3p_n_odd.append( sign/2.0*( -2*self.nucBE[ind] + self.nucBE[ind1] + self.nucBE[ind2] ) )
939
+ self.D3p_n_N_even = np.array( D3p_n_N_even, dtype = int )
940
+ self.D3p_n_N_odd = np.array( D3p_n_N_odd, dtype = int )
941
+ self.D3p_n_Z_even = np.array( D3p_n_Z_even, dtype = int )
942
+ self.D3p_n_Z_odd = np.array( D3p_n_Z_odd, dtype = int )
943
+ self.D3p_n_even = np.array( D3p_n_even, dtype = float )
944
+ self.D3p_n_odd = np.array( D3p_n_odd, dtype = float )
945
+ #
946
+ if nuda.env.verb: print("Exit D3p_n()")
947
+ #
948
+ return self
949
+ #
950
+ #
951
+ def D3p_p( self, Nmin = 1, Nmax = 95 ):
952
+ """
953
+ Compute the three-points odd-even mass staggering (D3p_p)
954
+ D_3p^P = (-)**Z * ( 2*E(Z,N)-E(Z+1,N)-E(Z-1,N) ) / 2
955
+ """
956
+ #
957
+ if nuda.env.verb: print("Enter D3p_p()")
958
+ #
959
+ if Nmin > Nmax:
960
+ print('In D3p_p attribute function of setup_be_exp.py:')
961
+ print('Bad definition of Nmin and Nmax')
962
+ print('It is expected that Nmin<=Nmax')
963
+ print('Nmin,Nmax:',Nmin,Nmax)
964
+ print('exit')
965
+ exit()
966
+ #
967
+ D3p_p_Z_even = []
968
+ D3p_p_Z_odd = []
969
+ D3p_p_N_even = []
970
+ D3p_p_N_odd = []
971
+ D3p_p_even = []
972
+ D3p_p_odd = []
973
+ #
974
+ for ind,N in enumerate(self.nucN):
975
+ #
976
+ if N > Nmax :
977
+ continue
978
+ if N < Nmin :
979
+ continue
980
+ #
981
+ if self.flagI[ind] != 0:
982
+ continue
983
+ if self.flagInterp[ind] == 'y':
984
+ continue
985
+ #
986
+ Z = self.nucZ[ind]
987
+ #
988
+ if Z % 2 == 0:
989
+ sign = 1.0 #even
990
+ else:
991
+ sign = -1.0 # odd
992
+ #
993
+ #print('For Z,N:',Z,N)
994
+ #
995
+ # search index for Z,N+2
996
+ #
997
+ flag_find1 = 0
998
+ for ind1,N1 in enumerate(self.nucN):
999
+ if N == N1 and self.nucZ[ind1] == Z+1 and self.flagI[ind1] == 0 and self.flagInterp[ind1] == 'n':
1000
+ flag_find1 = 1
1001
+ break
1002
+ flag_find2 = 0
1003
+ for ind2,N2 in enumerate(self.nucN):
1004
+ if N == N2 and self.nucZ[ind2] == Z-1 and self.flagI[ind2] == 0 and self.flagInterp[ind2] == 'n':
1005
+ flag_find2 = 1
1006
+ break
1007
+ if flag_find1*flag_find2 == 1:
1008
+ if sign > 0: #even
1009
+ D3p_p_Z_even.append( self.nucZ[ind] )
1010
+ D3p_p_N_even.append( self.nucN[ind] )
1011
+ D3p_p_even.append( sign/2.0*( -2*self.nucBE[ind] + self.nucBE[ind1] + self.nucBE[ind2] ) )
1012
+ else:
1013
+ D3p_p_Z_odd.append( self.nucZ[ind] )
1014
+ D3p_p_N_odd.append( self.nucN[ind] )
1015
+ D3p_p_odd.append( sign/2.0*( -2*self.nucBE[ind] + self.nucBE[ind1] + self.nucBE[ind2] ) )
1016
+ self.D3p_p_N_even = np.array( D3p_p_N_even, dtype = int )
1017
+ self.D3p_p_N_odd = np.array( D3p_p_N_odd, dtype = int )
1018
+ self.D3p_p_Z_even = np.array( D3p_p_Z_even, dtype = int )
1019
+ self.D3p_p_Z_odd = np.array( D3p_p_Z_odd, dtype = int )
1020
+ self.D3p_p_even = np.array( D3p_p_even, dtype = float )
1021
+ self.D3p_p_odd = np.array( D3p_p_odd, dtype = float )
1022
+ #
1023
+ if nuda.env.verb: print("Exit D3p_p()")
1024
+ #
1025
+ return self
1026
+ #