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,1086 @@
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
+ def be_theo_tables():
12
+ """
13
+ Return a list of the tables available in this toolkit for the masses
14
+ predicted by theoretical approaches and print them all on the prompt.
15
+ These tables are the following ones: \
16
+ [ '1988-MJ', '1995-DZ', '1995-ETFSI', '1995-FRDM', \
17
+ '2005-KTUY', '2007-HFB14', '2010-WS*', '2010-HFB21', '2011-WS3', '2013-HFB22', \
18
+ '2013-HFB23', '2013-HFB24', '2013-HFB25', '2013-HFB26', '2021-BSkG1', \
19
+ '2022-BSkG2', '2023-BSkG3', '2025-BSkG4' ]
20
+
21
+ :return: The list of tables.
22
+ :rtype: list[str].
23
+ """
24
+ #
25
+ if nuda.env.verb: print("\nEnter be_theo_tables()")
26
+ #
27
+ tables = [ '1988-MJ', '1995-DZ', '1995-ETFSI', '1995-FRDM', \
28
+ '2005-KTUY', '2007-HFB14', '2010-WS*', '2010-HFB21','2011-WS3', '2013-HFB22', \
29
+ '2013-HFB23', '2013-HFB24', '2013-HFB25', '2013-HFB26', '2021-BSkG1', \
30
+ '2022-BSkG2', '2023-BSkG3', '2025-BSkG4' ]
31
+ #
32
+ #print('theory tables available in the toolkit:',tables)
33
+ tables_lower = [ item.lower() for item in tables ]
34
+ #print('theory tables available in the toolkit:',tables_lower)
35
+ #
36
+ if nuda.env.verb: print("Exit be_theo_tables()")
37
+ #
38
+ return tables, tables_lower
39
+
40
+ def conversionMBE(M,N,Z):
41
+ """
42
+ Convert the mass excess of a nucleus to its binding energy.
43
+ """
44
+ xmn=8.07132281 # Neutron mass - atomic unit
45
+ xmh=7.28896940 # Proton mass + electron mass - atomic unit
46
+ rydb=13.6056981e-6 # binding energy of a Hydrogen atom
47
+ B = -M + N*xmn+Z*(xmh+rydb) - 0.0000144381*Z**2.39 - 1.55468e-12*Z**5.35
48
+ return - B
49
+
50
+
51
+ class setupBETheo():
52
+ """
53
+ Instantiate the theory nuclear masses.
54
+
55
+ This choice is defined in the variable `table`.
56
+
57
+ `table` can chosen among the following ones: \
58
+ [ '1988-MJ', '1995-DZ', '1995-ETFSI', '1995-FRDM', \
59
+ '2005-KTUY', '2007-HFB14', '2010-WS*', '2010-HFB21','2011-WS3', '2013-HFB26', '2021-BSkG1', \
60
+ '2022-BSkG2', '2023-BSkG3', '2025-BSkG4' ]
61
+
62
+ :param table: Fix the name of `table`. Default value: '1995-DZ'.
63
+ :type table: str, optional.
64
+
65
+ **Attributes:**
66
+ """
67
+ def __init__(self, table = '1995-DZ' ):
68
+ #
69
+ if nuda.env.verb: print("Enter setupBETheo()")
70
+ #
71
+ tables, tables_lower = be_theo_tables()
72
+ if table.lower() not in tables_lower:
73
+ print('Table ',table,' is not in the list of tables.')
74
+ print('list of tables:',tables)
75
+ print('-- Exit the code --')
76
+ exit()
77
+ self.table = table
78
+ if nuda.env.verb: print("table:",table)
79
+ #
80
+ self = setupBETheo.init_self( self )
81
+ #
82
+ if table.lower()=='1988-gk':
83
+ #
84
+ # read the Masson-Janecke theoretical mass table
85
+ #
86
+ file_in = nuda.param.path_data+'nuclei/masses/Theory/1988-GK.txt'
87
+ if nuda.env.verb: print('Reads file:',file_in)
88
+ self.ref = 'J. Jaenecke and P.J. Masson, At. Data and Nuc. Data Tables 39, 265 (1988).'
89
+ self.note = "write here notes about this EOS."
90
+ self.label = 'GK-1988'
91
+ self.nucZr, self.nucNr, self.nucMass = np.loadtxt( file_in, usecols=(0,1,2), unpack = True )
92
+ self.nucZ = np.array( [ int(ele) for ele in self.nucZr ] )
93
+ self.nucN = np.array( [ int(ele) for ele in self.nucNr ] )
94
+ self.nucA = self.nucZ + self.nucN
95
+ #self.nucBE = self.nucBE2A * self.nucA
96
+ self.nucBE = conversionMBE(self.nucMass,self.nucN,self.nucZ)
97
+ self.nucBE2A = self.nucBE / self.nucA
98
+ self.Zmax = int( max( self.nucZ ) )
99
+ #
100
+ elif table.lower()=='1988-mj':
101
+ #
102
+ # read the Masson-Janecke theoretical mass table
103
+ #
104
+ file_in = nuda.param.path_data+'nuclei/masses/Theory/1988-MJ.txt'
105
+ if nuda.env.verb: print('Reads file:',file_in)
106
+ self.ref = 'P.J. Masson and J. Jaenecke, At. Data and Nuc. Data Tables 39, 273 (1988).'
107
+ self.note = "write here notes about this EOS."
108
+ self.label = 'MJ-1988'
109
+ self.nucZr, self.nucNr, self.nucMass = np.loadtxt( file_in, usecols=(0,1,2), unpack = True )
110
+ self.nucZ = np.array( [ int(ele) for ele in self.nucZr ] )
111
+ self.nucN = np.array( [ int(ele) for ele in self.nucNr ] )
112
+ self.nucA = self.nucZ + self.nucN
113
+ #self.nucBE = self.nucBE2A * self.nucA
114
+ self.nucBE = conversionMBE(self.nucMass,self.nucN,self.nucZ)
115
+ self.nucBE2A = self.nucBE / self.nucA
116
+ self.Zmax = int( max( self.nucZ ) )
117
+ #
118
+ elif table.lower()=='1995-dz':
119
+ #
120
+ # read the Duflo-Zuker theoretical mass table
121
+ #
122
+ file_in = nuda.param.path_data+'nuclei/masses/Theory/1995-DZ.txt'
123
+ if nuda.env.verb: print('Reads file:',file_in)
124
+ self.ref = 'J. Duflo and A.P. Zuker, Phys. Rev. C 52, (1995)'
125
+ self.note = "write here notes about this EOS."
126
+ self.label = 'DZ-1995'
127
+ self.nucZr, self.nucNr, self.nucMass = np.loadtxt( file_in, usecols=(0,1,2), unpack = True )
128
+ self.nucZ = np.array( [ int(ele) for ele in self.nucZr ] )
129
+ self.nucN = np.array( [ int(ele) for ele in self.nucNr ] )
130
+ self.nucA = self.nucZ + self.nucN
131
+ #self.nucBE = self.nucBE2A * self.nucA
132
+ self.nucBE = conversionMBE(self.nucMass,self.nucN,self.nucZ)
133
+ self.nucBE2A = self.nucBE / self.nucA
134
+ self.Zmax = int( max( self.nucZ ) )
135
+ #
136
+ elif table.lower()=='1995-etfsi':
137
+ #
138
+ # read the ETFSI theoretical mass table
139
+ #
140
+ file_in = nuda.param.path_data+'nuclei/masses/Theory/1995-ETFSI.txt'
141
+ if nuda.env.verb: print('Reads file:',file_in)
142
+ self.ref = 'Y. Aboussir et al., At. Data and Nuc. Data Tables 61, 127 (1995).'
143
+ self.note = "write here notes about this EOS."
144
+ self.label = 'ETFSI-1995'
145
+ self.nucZr, self.nucNr, self.nucMass = np.loadtxt( file_in, usecols=(0,1,2), unpack = True )
146
+ self.nucZ = np.array( [ int(ele) for ele in self.nucZr ] )
147
+ self.nucN = np.array( [ int(ele) for ele in self.nucNr ] )
148
+ self.nucA = self.nucZ + self.nucN
149
+ #self.nucBE = self.nucBE2A * self.nucA
150
+ self.nucBE = conversionMBE(self.nucMass,self.nucN,self.nucZ)
151
+ self.nucBE2A = self.nucBE / self.nucA
152
+ self.Zmax = int( max( self.nucZ ) )
153
+ #
154
+ elif table.lower()=='1995-frdm':
155
+ #
156
+ # read the FRDM theoretical mass table
157
+ #
158
+ #file_in = nuda.param.path_data+'nuclei/masses/Theory/1995-FRDM.txt'
159
+ file_in = nuda.param.path_data+'nuclei/masses/Theory/1995-FRDM.dat'
160
+ if nuda.env.verb: print('Reads file:',file_in)
161
+ self.ref = 'P. Moeller, J.R. Nix, W.D. Myers, W.J. Swiatecki, At. Data and Nuc. Data Tables 59, 185 (1995).'
162
+ self.note = "write here notes about this EOS."
163
+ self.label = 'FRDM-1995'
164
+ self.nucZ = []; self.nucN = []; self.nucA = []; self.eps2 = []; self.eps3 = [];
165
+ self.eps4 = []; self.eps6 = []; self.eps6sym = []; self.beta2 = []; self.beta3 = [];
166
+ self.beta4 = []; self.beta6 = []; self.Emic = []; self.nucMass = []; self.Mexp = [];
167
+ self.Mexp_err = []; self.EmicFL = []; self.MthFL = [];
168
+ with open(file_in,'r') as file:
169
+ for line in file:
170
+ #print('line:',line)
171
+ if '#' in line:
172
+ continue
173
+ #ele = line.split()
174
+ #print('ele:',ele)
175
+ #exit()
176
+ self.nucZ.append( int(line[0:5]) )
177
+ self.nucN.append( int(line[6:10]) )
178
+ self.nucA.append( int(line[11:16]) )
179
+ self.eps2.append( float(line[17:25]) )
180
+ if line[26:35] != ' '*9: self.eps3.append( float(line[26:35]) )
181
+ else: self.eps3.append( 0.0 )
182
+ self.eps4.append( float(line[36:45]) )
183
+ self.eps6.append( float(line[46:56]) )
184
+ if line[57:66] != ' '*9: self.eps6sym.append( float(line[57:66]) )
185
+ else: self.eps6sym.append( 0.0 )
186
+ self.beta2.append( float(line[67:76]) )
187
+ if line[77:86] != ' '*9: self.beta3.append( float(line[77:86]) )
188
+ else: self.beta3.append( 0.0 )
189
+ self.beta4.append( float(line[87:96]) )
190
+ self.beta6.append( float(line[97:106]) )
191
+ self.Emic.append( float(line[107:116]) )
192
+ self.nucMass.append( float(line[117:126]) )
193
+ if line[127:136] != ' '*9: self.Mexp.append( float(line[127:136]) )
194
+ else: self.Mexp.append( 0.0 )
195
+ if line[137:146] != ' '*9: self.Mexp_err.append( float(line[137:146]) )
196
+ else: self.Mexp_err.append( 0.0 )
197
+ self.EmicFL.append( float(line[147:156]) )
198
+ self.MthFL.append( float(line[157:166]) )
199
+ #print('N,Z:',self.nucN, self.nucZ)
200
+ #self.nucZr, self.nucNr, self.nucAr, self.eps2, self.eps3, self.eps4, self.eps6, self.eps6sym, \
201
+ # self.beta2, self.beta3, self.beta4, self.beta6, self.Emic, self.Mth, self.Mexp, self.Mexp_err, \
202
+ # self.EmicFL, self.MthFL \
203
+ # = np.loadtxt( file_in, usecols=(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17), delimiter=' ', unpack = True )
204
+ #self.nucZ = np.array( [ int(ele) for ele in self.nucZr ] )
205
+ #self.nucN = np.array( [ int(ele) for ele in self.nucNr ] )
206
+ #self.nucA = self.nucZ + self.nucN
207
+ self.nucA = np.array( self.nucA )
208
+ self.nucN = np.array( self.nucN )
209
+ self.nucZ = np.array( self.nucZ )
210
+ self.nucMass = np.array( self.nucMass )
211
+ #self.nucBE = self.Mth * self.nucA
212
+ self.nucBE = conversionMBE(self.nucMass,self.nucN,self.nucZ)
213
+ self.nucBE2A = self.nucBE / self.nucA
214
+ #print('nucZ:',self.nucZ)
215
+ self.Zmax = max( self.nucZ )
216
+ #
217
+ elif table.lower()=='2005-ktuy':
218
+ #
219
+ # read the KTUY theoretical mass table
220
+ #
221
+ file_in = nuda.param.path_data+'nuclei/masses/Theory/2005-KTUY.txt'
222
+ if nuda.env.verb: print('Reads file:',file_in)
223
+ self.ref = 'H. Koura, T. Tachibana, M. Uno, M. Yamada, Prog. Theor. Phys. 119, 305 (2005).'
224
+ self.note = "write here notes about this EOS."
225
+ self.label = 'KTUY-2005'
226
+ self.nucZr, self.nucNr, self.nucMass = np.loadtxt( file_in, usecols=(0,1,2), unpack = True )
227
+ self.nucZ = np.array( [ int(ele) for ele in self.nucZr ] )
228
+ self.nucN = np.array( [ int(ele) for ele in self.nucNr ] )
229
+ self.nucA = self.nucZ + self.nucN
230
+ #self.nucBE = self.nucBE2A * self.nucA
231
+ self.nucBE = conversionMBE(self.nucMass,self.nucN,self.nucZ)
232
+ self.nucBE2A = self.nucBE / self.nucA
233
+ self.Zmax = int( max( self.nucZ ) )
234
+ #
235
+ elif table.lower()=='2007-hfb14':
236
+ #
237
+ # read the HFB14 theoretical mass table
238
+ #
239
+ file_in = nuda.param.path_data+'nuclei/masses/Theory/2007-HFB14.txt'
240
+ if nuda.env.verb: print('Reads file:',file_in)
241
+ self.ref = 'S. Goriely, M. Samyn, J.M. Pearson, Phys. Rev. C 75, 064312 (2007).'
242
+ self.note = "write here notes about this EOS."
243
+ self.label = 'HFB14-2007'
244
+ self.nucZr, self.nucNr, self.nucMass = np.loadtxt( file_in, usecols=(0,1,2), unpack = True )
245
+ self.nucZ = np.array( [ int(ele) for ele in self.nucZr ] )
246
+ self.nucN = np.array( [ int(ele) for ele in self.nucNr ] )
247
+ self.nucA = self.nucZ + self.nucN
248
+ #self.nucBE = self.nucBE2A * self.nucA
249
+ self.nucBE = conversionMBE(self.nucMass,self.nucN,self.nucZ)
250
+ self.nucBE2A = self.nucBE / self.nucA
251
+ self.Zmax = int( max( self.nucZ ) )
252
+ #
253
+ elif table.lower()=='2010-hfb21':
254
+ #
255
+ # read the HFB21 theoretical mass table
256
+ #
257
+ #file_in = nuda.param.path_data+'nuclei/masses/Theory/2007-HFB14.txt'
258
+ file_in = nuda.param.path_data+'nuclei/masses/Theory/2010-HFB21.dat'
259
+ if nuda.env.verb: print('Reads file:',file_in)
260
+ self.ref = 'S. Goriely, N. Chamel, and J. M. Pearson, Phys. Rev. C 82, 035804 (2010).'
261
+ self.note = "write here notes about this EOS."
262
+ self.label = 'HFB21-2010'
263
+ self.nucZr, self.nucAr, self.beta2, self.beta4, self.Rch, self.Edef, self.Sn, self.Sp, \
264
+ self.Qbet, self.nucMass, self.dif, self.Jexp, self.Jth, self.Pexp, self.Pth = \
265
+ np.loadtxt( file_in, usecols=(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14), unpack = True )
266
+ self.nucZ = np.array( [ int(ele) for ele in self.nucZr ] )
267
+ self.nucA = np.array( [ int(ele) for ele in self.nucAr ] )
268
+ self.nucN = self.nucA - self.nucZ
269
+ #self.nucBE = self.Mcal * self.nucA
270
+ self.nucBE = conversionMBE(self.nucMass,self.nucN,self.nucZ)
271
+ self.nucBE2A = self.nucBE / self.nucA
272
+ self.Zmax = int( max( self.nucZ ) )
273
+ #
274
+ elif table.lower()=='2010-ws*':
275
+ #
276
+ # read the WS3 theoretical mass table
277
+ #
278
+ file_in = nuda.param.path_data+'nuclei/masses/Theory/2010-WS3.txt'
279
+ if nuda.env.verb: print('Reads file:',file_in)
280
+ self.ref = 'N. Wang, Z. Liang, M. Liu, X. Wu, Phys. Rev. C 82, 044304 (2010).'
281
+ self.note = "write here notes about this EOS."
282
+ self.label = 'WS3-2010'
283
+ self.nucZr, self.nucNr, self.nucMass = np.loadtxt( file_in, usecols=(0,1,2), unpack = True )
284
+ self.nucZ = np.array( [ int(ele) for ele in self.nucZr ] )
285
+ self.nucN = np.array( [ int(ele) for ele in self.nucNr ] )
286
+ self.nucA = self.nucZ + self.nucN
287
+ #self.nucBE = self.nucBE2A * self.nucA
288
+ self.nucBE = conversionMBE(self.nucMass,self.nucN,self.nucZ)
289
+ self.nucBE2A = self.nucBE / self.nucA
290
+ self.Zmax = int( max( self.nucZ ) )
291
+ #
292
+ elif table.lower()=='2011-ws3':
293
+ #
294
+ # read the WS3 theoretical mass table
295
+ #
296
+ file_in = nuda.param.path_data+'nuclei/masses/Theory/2011-WS3.txt'
297
+ if nuda.env.verb: print('Reads file:',file_in)
298
+ self.ref = 'M. Liu, N. Wang, Y. Deng, X. Wu, Phys. Rev. C 84, 014333 (2011).'
299
+ self.note = "write here notes about this EOS."
300
+ self.label = 'WS3-2011'
301
+ self.nucZr, self.nucNr, self.nucMass = np.loadtxt( file_in, usecols=(0,1,2), unpack = True )
302
+ self.nucZ = np.array( [ int(ele) for ele in self.nucZr ] )
303
+ self.nucN = np.array( [ int(ele) for ele in self.nucNr ] )
304
+ self.nucA = self.nucZ + self.nucN
305
+ #self.nucBE = self.nucBE2A * self.nucA
306
+ self.nucBE = conversionMBE(self.nucMass,self.nucN,self.nucZ)
307
+ self.nucBE2A = self.nucBE / self.nucA
308
+ self.Zmax = int( max( self.nucZ ) )
309
+ #
310
+ elif table.lower()=='2013-hfb22':
311
+ #
312
+ # read the HFB22 theoretical mass table
313
+ #
314
+ file_in = nuda.param.path_data+'nuclei/masses/Theory/2013-HFB22.txt'
315
+ if nuda.env.verb: print('Reads file:',file_in)
316
+ self.ref = 'S. Goriely, N. Chamel, J.M. Pearson, Phys. Rev. C 88, 024308 (2013).'
317
+ self.note = "write here notes about this EOS."
318
+ self.label = 'HFB22-2013'
319
+ self.nucZr, self.nucNr, self.nucMass = np.loadtxt( file_in, usecols=(0,1,2), unpack = True )
320
+ self.nucZ = np.array( [ int(ele) for ele in self.nucZr ] )
321
+ self.nucN = np.array( [ int(ele) for ele in self.nucNr ] )
322
+ self.nucA = self.nucZ + self.nucN
323
+ #self.nucBE = self.nucBE2A * self.nucA
324
+ self.nucBE = conversionMBE(self.nucMass,self.nucN,self.nucZ)
325
+ self.nucBE2A = self.nucBE / self.nucA
326
+ self.Zmax = int( max( self.nucZ ) )
327
+ #
328
+ elif table.lower()=='2013-hfb23':
329
+ #
330
+ # read the HFB23 theoretical mass table
331
+ #
332
+ file_in = nuda.param.path_data+'nuclei/masses/Theory/2013-HFB23.txt'
333
+ if nuda.env.verb: print('Reads file:',file_in)
334
+ self.ref = 'S. Goriely, N. Chamel, J.M. Pearson, Phys. Rev. C 88, 024308 (2013).'
335
+ self.note = "write here notes about this EOS."
336
+ self.label = 'HFB23-2013'
337
+ self.nucZr, self.nucNr, self.nucMass = np.loadtxt( file_in, usecols=(0,1,2), unpack = True )
338
+ self.nucZ = np.array( [ int(ele) for ele in self.nucZr ] )
339
+ self.nucN = np.array( [ int(ele) for ele in self.nucNr ] )
340
+ self.nucA = self.nucZ + self.nucN
341
+ #self.nucBE = self.nucBE2A * self.nucA
342
+ self.nucBE = conversionMBE(self.nucMass,self.nucN,self.nucZ)
343
+ self.nucBE2A = self.nucBE / self.nucA
344
+ self.Zmax = int( max( self.nucZ ) )
345
+ #
346
+ elif table.lower()=='2013-hfb24':
347
+ #
348
+ # read the HFB24 theoretical mass table
349
+ #
350
+ file_in = nuda.param.path_data+'nuclei/masses/Theory/2013-HFB24.txt'
351
+ if nuda.env.verb: print('Reads file:',file_in)
352
+ self.ref = 'S. Goriely, N. Chamel, J.M. Pearson, Phys. Rev. C 88, 024308 (2013).'
353
+ self.note = "write here notes about this EOS."
354
+ self.label = 'HFB24-2013'
355
+ self.nucZr, self.nucNr, self.nucMass = np.loadtxt( file_in, usecols=(0,1,2), unpack = True )
356
+ self.nucZ = np.array( [ int(ele) for ele in self.nucZr ] )
357
+ self.nucN = np.array( [ int(ele) for ele in self.nucNr ] )
358
+ self.nucA = self.nucZ + self.nucN
359
+ #self.nucBE = self.nucBE2A * self.nucA
360
+ self.nucBE = conversionMBE(self.nucMass,self.nucN,self.nucZ)
361
+ self.nucBE2A = self.nucBE / self.nucA
362
+ self.Zmax = int( max( self.nucZ ) )
363
+ #
364
+ elif table.lower()=='2013-hfb25':
365
+ #
366
+ # read the HFB25 theoretical mass table
367
+ #
368
+ file_in = nuda.param.path_data+'nuclei/masses/Theory/2013-HFB25.txt'
369
+ if nuda.env.verb: print('Reads file:',file_in)
370
+ self.ref = 'S. Goriely, N. Chamel, J.M. Pearson, Phys. Rev. C 88, 024308 (2013).'
371
+ self.note = "write here notes about this EOS."
372
+ self.label = 'HFB25-2013'
373
+ self.nucZr, self.nucNr, self.nucMass = np.loadtxt( file_in, usecols=(0,1,2), unpack = True )
374
+ self.nucZ = np.array( [ int(ele) for ele in self.nucZr ] )
375
+ self.nucN = np.array( [ int(ele) for ele in self.nucNr ] )
376
+ self.nucA = self.nucZ + self.nucN
377
+ #self.nucBE = self.nucBE2A * self.nucA
378
+ self.nucBE = conversionMBE(self.nucMass,self.nucN,self.nucZ)
379
+ self.nucBE2A = self.nucBE / self.nucA
380
+ self.Zmax = int( max( self.nucZ ) )
381
+ #
382
+ elif table.lower()=='2013-hfb26':
383
+ #
384
+ # read the HFB14 theoretical mass table
385
+ #
386
+ file_in = nuda.param.path_data+'nuclei/masses/Theory/2013-HFB26.txt'
387
+ if nuda.env.verb: print('Reads file:',file_in)
388
+ self.ref = 'S. Goriely, N. Chamel, J.M. Pearson, Phys. Rev. C 88, 024308 (2013).'
389
+ self.note = "write here notes about this EOS."
390
+ self.label = 'HFB26-2013'
391
+ self.nucZr, self.nucNr, self.nucMass = np.loadtxt( file_in, usecols=(0,1,2), unpack = True )
392
+ self.nucZ = np.array( [ int(ele) for ele in self.nucZr ] )
393
+ self.nucN = np.array( [ int(ele) for ele in self.nucNr ] )
394
+ self.nucA = self.nucZ + self.nucN
395
+ #self.nucBE = self.nucBE2A * self.nucA
396
+ self.nucBE = conversionMBE(self.nucMass,self.nucN,self.nucZ)
397
+ self.nucBE2A = self.nucBE / self.nucA
398
+ self.Zmax = int( max( self.nucZ ) )
399
+ #
400
+ elif table.lower()=='2021-bskg1':
401
+ #
402
+ # read the BSkG1 theoretical mass table
403
+ #
404
+ file_in = nuda.param.path_data+'nuclei/masses/Theory/2021-BSkG1.txt'
405
+ if nuda.env.verb: print('Reads file:',file_in)
406
+ self.ref = 'G. Scamps, S. Goriely, E. Olsen, M. Bender, and W. Ryssens, EPJA 57, 333 (2021).'
407
+ self.note = "write here notes about this EOS."
408
+ self.label = 'BSkG1-2021'
409
+ #self.nucZr, self.nucNr, self.nucBE2A = np.loadtxt( file_in, usecols=(0,1,2), unpack = True )
410
+ self.nucZr, self.nucNr, self.nucMass, self.Ebind, self.beta20, self.beta22, self.beta2, self.Erot, \
411
+ self.gap_n, self.gap_p, self.moi = \
412
+ np.loadtxt( file_in, usecols=(0,1,3,5,6,7,8,9,10,11,15), unpack = True )
413
+ self.nucZ = np.array( [ int(ele) for ele in self.nucZr ] )
414
+ self.nucN = np.array( [ int(ele) for ele in self.nucNr ] )
415
+ self.nucA = self.nucZ + self.nucN
416
+ #self.nucBE = self.nucBE2A * self.nucA
417
+ self.nucBE = conversionMBE(self.nucMass,self.nucN,self.nucZ)
418
+ self.nucBE2A = self.nucBE / self.nucA
419
+ self.Zmax = int( max( self.nucZ ) )
420
+ #
421
+ elif table.lower()=='2022-bskg2':
422
+ #
423
+ # read the BSkG2 theoretical mass table
424
+ #
425
+ file_in = nuda.param.path_data+'nuclei/masses/Theory/2022-BSkG2.txt'
426
+ if nuda.env.verb: print('Reads file:',file_in)
427
+ self.ref = 'W. Ryssens, G. Scamps, S. Goriely, and M. Bender, EPJA 58, 246 (2022).'
428
+ self.note = "write here notes about this EOS."
429
+ self.label = 'BSkG2-2022'
430
+ #self.nucZr, self.nucNr, self.nucBE2A = np.loadtxt( file_in, usecols=(0,1,2), unpack = True )
431
+ self.nucZr, self.nucNr, self.nucMass, self.Ebind, self.beta20, self.beta22, self.beta2, self.Erot, \
432
+ self.gap_n, self.gap_p, self.moi = \
433
+ np.loadtxt( file_in, usecols=(0,1,3,5,6,7,8,9,10,11,15), unpack = True )
434
+ self.nucZ = np.array( [ int(ele) for ele in self.nucZr ] )
435
+ self.nucN = np.array( [ int(ele) for ele in self.nucNr ] )
436
+ self.nucA = self.nucZ + self.nucN
437
+ #self.nucBE = self.nucBE2A * self.nucA
438
+ self.nucBE = conversionMBE(self.nucMass,self.nucN,self.nucZ)
439
+ self.nucBE2A = self.nucBE / self.nucA
440
+ self.Zmax = int( max( self.nucZ ) )
441
+ #
442
+ elif table.lower()=='2023-bskg3':
443
+ #
444
+ # read the BSkG3 theoretical mass table
445
+ #
446
+ file_in = nuda.param.path_data+'nuclei/masses/Theory/2023-BSkG3.txt'
447
+ if nuda.env.verb: print('Reads file:',file_in)
448
+ self.ref = 'G. Grams, W. Ryssens, G. Scamps, S. Goriely, and N. Chamel, EPJA 59, 270 (2023).'
449
+ self.note = "write here notes about this EOS."
450
+ self.label = 'BSkG3-2023'
451
+ #self.nucZr, self.nucNr, self.nucBE2A = np.loadtxt( file_in, usecols=(0,1,2), unpack = True )
452
+ self.nucZr, self.nucNr, self.nucMass, self.Ebind, self.beta20, self.beta22, self.beta2, \
453
+ self.beta30, self.beta32, self.Erot, self.gap_n, self.gap_p, self.moi = \
454
+ np.loadtxt( file_in, usecols=(0,1,3,5,6,7,8,9,10,11,12,13,17), unpack = True )
455
+ self.nucZ = np.array( [ int(ele) for ele in self.nucZr ] )
456
+ self.nucN = np.array( [ int(ele) for ele in self.nucNr ] )
457
+ self.nucA = self.nucZ + self.nucN
458
+ #self.nucBE = self.nucBE2A * self.nucA
459
+ self.nucBE = conversionMBE(self.nucMass,self.nucN,self.nucZ)
460
+ self.nucBE2A = self.nucBE / self.nucA
461
+ self.Zmax = int( max( self.nucZ ) )
462
+ #
463
+ elif table.lower()=='2025-bskg4':
464
+ #
465
+ # read the BSkG4 theoretical mass table
466
+ #
467
+ file_in = nuda.param.path_data+'nuclei/masses/Theory/2025-BSkG4.txt'
468
+ if nuda.env.verb: print('Reads file:',file_in)
469
+ self.ref = 'G. Grams, W. Ryssens, N. Shchechilin, A. Sanchez-Fernandez, N. Chamel, and S. Goriely, EPJA 61, 35 (2025).'
470
+ self.note = "write here notes about this EOS."
471
+ self.label = 'BSkG4-2024'
472
+ self.nucZr, self.nucNr, self.nucBE2A = np.loadtxt( file_in, usecols=(0,1,2), unpack = True )
473
+ self.nucZ = np.array( [ int(ele) for ele in self.nucZr ] )
474
+ self.nucN = np.array( [ int(ele) for ele in self.nucNr ] )
475
+ self.nucA = self.nucZ + self.nucN
476
+ self.nucBE = self.nucBE2A * self.nucA
477
+ self.Zmax = int( max( self.nucZ ) )
478
+ #
479
+ #
480
+ if nuda.env.verb: print("Exit setupBETheo()")
481
+ #
482
+ #
483
+ def print_outputs( self ):
484
+ """
485
+ Method which print outputs on terminal's screen.
486
+ """
487
+ print("")
488
+ #
489
+ if nuda.env.verb: print("Enter print_outputs()")
490
+ #
491
+ print("- Print output:")
492
+ print(" table: ",self.table)
493
+ print(" ref: ",self.ref)
494
+ print(" label: ",self.label)
495
+ print(" note: ",self.note)
496
+ if self.Zmax is not None: print(f" Zmax: {self.Zmax}")
497
+ if self.nucZ is not None: print(f" Z: {self.nucZ[0:-1:10]}")
498
+ if self.nucA is not None: print(f" A: {self.nucA[0:-1:10]}")
499
+ #
500
+ if nuda.env.verb: print("Exit print_outputs()")
501
+ #
502
+ def S2n( self, Zmin = 1, Zmax = 95 ):
503
+ """
504
+ Compute the two-neutron separation energy (S2n)
505
+ S2n = E(Z,N)-E(Z,N+2)
506
+ """
507
+ #
508
+ if nuda.env.verb: print("Enter S2n()")
509
+ #
510
+ if Zmin > Zmax:
511
+ print('In S2n attribute function of setup_be_theo.py:')
512
+ print('Bad definition of Zmin and Zmax')
513
+ print('It is expected that Zmin<=Zmax')
514
+ print('Zmin,Zmax:',Zmin,Zmax)
515
+ print('exit')
516
+ exit()
517
+ #
518
+ S2n_Z = []
519
+ S2n_N = []
520
+ S2n = []
521
+ #
522
+ for ind,Z in enumerate(self.nucZ):
523
+ #
524
+ if Z > Zmax :
525
+ break
526
+ if Z < Zmin :
527
+ continue
528
+ #
529
+ N = self.nucN[ind]
530
+ #
531
+ #print('For Z,N:',Z,N)
532
+ #
533
+ # search index for Z,N+2
534
+ #
535
+ flag_find = 0
536
+ for ind2,Z2 in enumerate(self.nucZ):
537
+ if Z == Z2 and self.nucN[ind2] == N-2:
538
+ flag_find = 1
539
+ break
540
+ if flag_find == 1:
541
+ N2 = self.nucN[ind2]
542
+ #print('N,N2:',N,N2,'ind,ind2:',ind,ind2)
543
+ S2n_Z.append( self.nucZ[ind] )
544
+ S2n_N.append( self.nucN[ind] )
545
+ S2n.append( self.nucBE[ind2] - self.nucBE[ind] )
546
+ self.S2n_N = np.array( S2n_N, dtype = int )
547
+ self.S2n_Z = np.array( S2n_Z, dtype = int )
548
+ self.S2n = np.array( S2n, dtype = float )
549
+ #print('Z:',self.S2n_Z)
550
+ #print('N:',self.S2n_N)
551
+ #print('S2n:',self.S2n)
552
+ #
553
+ if nuda.env.verb: print("Exit S2n()")
554
+ #
555
+ return self
556
+ #
557
+ def S2p( self, Nmin = 1, Nmax = 95 ):
558
+ """
559
+ Compute the two-proton separation energy (S2n)
560
+ S2p = E(Z,N)-E(Z-2,N)
561
+ """
562
+ #
563
+ if nuda.env.verb: print("Enter S2p()")
564
+ #
565
+ if Nmin > Nmax:
566
+ print('In S2p attribute function of setup_be_exp.py:')
567
+ print('Bad definition of Nmin and Nmax')
568
+ print('It is expected that Nmin<=Nmax')
569
+ print('Nmin,Nmax:',Nmin,Nmax)
570
+ print('exit')
571
+ exit()
572
+ #
573
+ S2p_Z = []
574
+ S2p_N = []
575
+ S2p = []
576
+ #
577
+ for ind,N in enumerate(self.nucN):
578
+ #
579
+ if N > Nmax :
580
+ continue
581
+ if N < Nmin :
582
+ continue
583
+ #
584
+ Z = self.nucZ[ind]
585
+ #
586
+ #print('For Z,N:',Z,N)
587
+ #
588
+ # search index for Z-2,N
589
+ #
590
+ flag_find = 0
591
+ for ind2,N2 in enumerate(self.nucN):
592
+ if N == N2 and self.nucZ[ind2] == Z-2:
593
+ flag_find = 1
594
+ break
595
+ if flag_find == 1:
596
+ Z2 = self.nucZ[ind2]
597
+ #print('N,N2:',N,N2,'ind,ind2:',ind,ind2)
598
+ S2p_Z.append( self.nucZ[ind] )
599
+ S2p_N.append( self.nucN[ind] )
600
+ S2p.append( self.nucBE[ind2] - self.nucBE[ind] )
601
+ self.S2p_N = np.array( S2p_N, dtype = int )
602
+ self.S2p_Z = np.array( S2p_Z, dtype = int )
603
+ self.S2p = np.array( S2p, dtype = float )
604
+ #print('Z:',self.S2n_Z)
605
+ #print('N:',self.S2n_N)
606
+ #print('S2n:',self.S2n)
607
+ #print('Z:',self.S2n_Z)
608
+ #
609
+ if nuda.env.verb: print("Exit S2p()")
610
+ #
611
+ return self
612
+ #
613
+ def drip_S2n(self, Zmin = 1, Zmax = 95 ):
614
+ """
615
+ Method which find the drip-line nuclei from S2n (neutron side).
616
+
617
+ :param Zmin: Fix the minimum charge for the search of the neutron drip line.
618
+ :type Zmin: int, optional. Default: 1.
619
+ :param Zmax: Fix the maximum charge for the search of the neutron drip line.
620
+ :type Zmax: int, optional. Default: 95.
621
+
622
+ **Attributes:**
623
+ """
624
+ #
625
+ if nuda.env.verb: print("Enter drip_S2n()")
626
+ #
627
+ if Zmin > Zmax:
628
+ print('In drip_S2n attribute function of setup_be_theo.py:')
629
+ print('Bad definition of Zmin and Zmax')
630
+ print('It is expected that Zmin<=Zmax')
631
+ print('Zmin,Zmax:',Zmin,Zmax)
632
+ print('exit')
633
+ exit()
634
+ #
635
+ if not any(self.S2n_Z):
636
+ print('In drip_S2n attribute function of setup_be_theo.py:')
637
+ print('Should compute first S2n')
638
+ print('exit')
639
+ exit()
640
+ #
641
+ #Nstable, Zstable = stable_fit( Zmin = Zmin, Zmax = Zmax )
642
+ #
643
+ self.drip_S2n_Z = []
644
+ self.drip_S2n_N = []
645
+ #
646
+ for ind,Z in enumerate(self.S2n_Z):
647
+ #
648
+ if Z > Zmax :
649
+ break
650
+ if Z < Zmin :
651
+ continue
652
+ #
653
+ #Nmax = Nstable[ind]
654
+ Nmax = 0
655
+ #
656
+ for ind2,Z2 in enumerate(self.S2n_Z):
657
+ if Z2 == Z and self.S2n_N[ind2] > Nmax and self.S2n[ind2] > 0.0:
658
+ Nmax = self.S2n_N[ind2]
659
+ self.drip_S2n_Z.append( Z )
660
+ self.drip_S2n_N.append( Nmax )
661
+ #
662
+ if nuda.env.verb: print("Exit drip_S2n()")
663
+ #
664
+ return self
665
+ #
666
+ #
667
+ def drip_S2p(self, Nmin = 1, Nmax = 95 ):
668
+ """
669
+ Method which find the drip-line nuclei from S2p (proton side).
670
+
671
+ :param Nmin: Fix the minimum neutron number for the search of the proton drip line.
672
+ :type Nmin: int, optional. Default: 1.
673
+ :param Nmax: Fix the maximum neutron number for the search of the proton drip line.
674
+ :type Nmax: int, optional. Default: 95.
675
+
676
+ **Attributes:**
677
+ """
678
+ #
679
+ if nuda.env.verb: print("Enter drip_S2p()")
680
+ #
681
+ if Nmin > Nmax:
682
+ print('In drip_S2p attribute function of setup_be_theo.py:')
683
+ print('Bad definition of Nmin and Nmax')
684
+ print('It is expected that Nmin<=Nmax')
685
+ print('Nmin,Nmax:',Nmin,Nmax)
686
+ print('exit')
687
+ exit()
688
+ #
689
+ if not any(self.S2p_N):
690
+ print('In drip_S2p attribute function of setup_be_theo.py:')
691
+ print('Should compute first S2p')
692
+ print('exit')
693
+ exit()
694
+ #
695
+ self.drip_S2p_Z = []
696
+ self.drip_S2p_N = []
697
+ #
698
+ for ind,N in enumerate(self.S2p_N):
699
+ #
700
+ if N > Nmax :
701
+ break
702
+ if N < Nmin :
703
+ continue
704
+ #
705
+ Zmax = 0
706
+ #
707
+ for ind2,N2 in enumerate(self.S2p_N):
708
+ if N2 == N and self.S2p_Z[ind2] > Zmax and self.S2p[ind2] > 0.0:
709
+ Zmax = self.S2p_Z[ind2]
710
+ self.drip_S2p_N.append( N )
711
+ self.drip_S2p_Z.append( Zmax )
712
+ #
713
+ if nuda.env.verb: print("Exit drip_S2p()")
714
+ #
715
+ return self
716
+ #
717
+ #
718
+ def D3p_n( self, Zmin = 1, Zmax = 95 ):
719
+ """
720
+ Compute the three-points odd-even mass staggering (D3p_n)
721
+ D3p^N = (-)**N * ( 2*E(Z,N)-E(Z,N+1)-E(Z,N-1) ) / 2
722
+ """
723
+ #
724
+ if nuda.env.verb: print("Enter D3p_n()")
725
+ #
726
+ if Zmin > Zmax:
727
+ print('In D3p_n attribute function of setup_be_exp.py:')
728
+ print('Bad definition of Zmin and Zmax')
729
+ print('It is expected that Zmin<=Zmax')
730
+ print('Zmin,Zmax:',Zmin,Zmax)
731
+ print('exit')
732
+ exit()
733
+ #
734
+ D3p_n_Z_even = []
735
+ D3p_n_Z_odd = []
736
+ D3p_n_N_even = []
737
+ D3p_n_N_odd = []
738
+ D3p_n_even = []
739
+ D3p_n_odd = []
740
+ #
741
+ for ind,Z in enumerate(self.nucZ):
742
+ #
743
+ if Z > Zmax :
744
+ continue
745
+ if Z < Zmin :
746
+ continue
747
+ #
748
+ N = self.nucN[ind]
749
+ #
750
+ if N % 2 == 0:
751
+ sign = 1.0 #even
752
+ else:
753
+ sign = -1.0 # odd
754
+ #
755
+ #print('For Z,N:',Z,N)
756
+ #
757
+ # search index for Z,N+2
758
+ #
759
+ flag_find1 = 0
760
+ for ind1,Z1 in enumerate(self.nucZ):
761
+ if Z == Z1 and self.nucN[ind1] == N+1:
762
+ flag_find1 = 1
763
+ break
764
+ flag_find2 = 0
765
+ for ind2,Z2 in enumerate(self.nucZ):
766
+ if Z == Z2 and self.nucN[ind2] == N-1:
767
+ flag_find2 = 1
768
+ break
769
+ if flag_find1*flag_find2 == 1:
770
+ if sign > 0: #even
771
+ D3p_n_Z_even.append( self.nucZ[ind] )
772
+ D3p_n_N_even.append( self.nucN[ind] )
773
+ D3p_n_even.append( sign/2.0*( -2*self.nucBE[ind] + self.nucBE[ind1] + self.nucBE[ind2] ) )
774
+ else:
775
+ D3p_n_Z_odd.append( self.nucZ[ind] )
776
+ D3p_n_N_odd.append( self.nucN[ind] )
777
+ D3p_n_odd.append( sign/2.0*( -2*self.nucBE[ind] + self.nucBE[ind1] + self.nucBE[ind2] ) )
778
+ self.D3p_n_N_even = np.array( D3p_n_N_even, dtype = int )
779
+ self.D3p_n_N_odd = np.array( D3p_n_N_odd, dtype = int )
780
+ self.D3p_n_Z_even = np.array( D3p_n_Z_even, dtype = int )
781
+ self.D3p_n_Z_odd = np.array( D3p_n_Z_odd, dtype = int )
782
+ self.D3p_n_even = np.array( D3p_n_even, dtype = float )
783
+ self.D3p_n_odd = np.array( D3p_n_odd, dtype = float )
784
+ #
785
+ if nuda.env.verb: print("Exit D3p_n()")
786
+ #
787
+ return self
788
+ #
789
+ def D3p_p( self, Nmin = 1, Nmax = 95 ):
790
+ """
791
+ Compute the three-points odd-even mass staggering (D3p_p)
792
+ D3p^Z = (-)**Z * ( 2*E(Z,N)-E(Z+1,N)-E(Z-1,N) ) / 2
793
+ """
794
+ #
795
+ if nuda.env.verb: print("Enter D3p_p()")
796
+ #
797
+ if Nmin > Nmax:
798
+ print('In D3p_p attribute function of setup_be_exp.py:')
799
+ print('Bad definition of Nmin and Nmax')
800
+ print('It is expected that Nmin<=Nmax')
801
+ print('Nmin,Nmax:',Nmin,Nmax)
802
+ print('exit')
803
+ exit()
804
+ #
805
+ D3p_p_Z_even = []
806
+ D3p_p_Z_odd = []
807
+ D3p_p_N_even = []
808
+ D3p_p_N_odd = []
809
+ D3p_p_even = []
810
+ D3p_p_odd = []
811
+ #
812
+ for ind,N in enumerate(self.nucN):
813
+ #
814
+ if N > Nmax :
815
+ continue
816
+ if N < Nmin :
817
+ continue
818
+ #
819
+ Z = self.nucZ[ind]
820
+ #
821
+ if Z % 2 == 0:
822
+ sign = 1.0 #even
823
+ else:
824
+ sign = -1.0 # odd
825
+ #
826
+ #print('For Z,N:',Z,N)
827
+ #
828
+ # search index for Z,N+2
829
+ #
830
+ flag_find1 = 0
831
+ for ind1,N1 in enumerate(self.nucN):
832
+ if N == N1 and self.nucZ[ind1] == Z+1:
833
+ flag_find1 = 1
834
+ break
835
+ flag_find2 = 0
836
+ for ind2,N2 in enumerate(self.nucN):
837
+ if N == N2 and self.nucZ[ind2] == Z-1:
838
+ flag_find2 = 1
839
+ break
840
+ if flag_find1*flag_find2 == 1:
841
+ if sign > 0: #even
842
+ D3p_p_Z_even.append( self.nucZ[ind] )
843
+ D3p_p_N_even.append( self.nucN[ind] )
844
+ D3p_p_even.append( sign/2.0*( -2*self.nucBE[ind] + self.nucBE[ind1] + self.nucBE[ind2] ) )
845
+ else:
846
+ D3p_p_Z_odd.append( self.nucZ[ind] )
847
+ D3p_p_N_odd.append( self.nucN[ind] )
848
+ D3p_p_odd.append( sign/2.0*( -2*self.nucBE[ind] + self.nucBE[ind1] + self.nucBE[ind2] ) )
849
+ self.D3p_p_N_even = np.array( D3p_p_N_even, dtype = int )
850
+ self.D3p_p_N_odd = np.array( D3p_p_N_odd, dtype = int )
851
+ self.D3p_p_Z_even = np.array( D3p_p_Z_even, dtype = int )
852
+ self.D3p_p_Z_odd = np.array( D3p_p_Z_odd, dtype = int )
853
+ self.D3p_p_even = np.array( D3p_p_even, dtype = float )
854
+ self.D3p_p_odd = np.array( D3p_p_odd, dtype = float )
855
+ #
856
+ if nuda.env.verb: print("Exit D3p_p()")
857
+ #
858
+ return self
859
+ #
860
+ def diff(self, table, Zref = 50 ):
861
+ """
862
+ Method calculates the difference between a given mass
863
+ model and table_ref.
864
+
865
+ :param table: Fix the table to analyze.
866
+ :type table: str.
867
+ :param Zref: Fix the isotopic chain to study.
868
+ :type Zref: int, optional. Default: 50.
869
+
870
+ **Attributes:**
871
+ """
872
+ #
873
+ if nuda.env.verb: print("Enter diff()")
874
+ #
875
+ if self.table == table:
876
+ print('we have self.table = table')
877
+ print('self.table:',self.table)
878
+ print('table:',table)
879
+ print('exit()')
880
+ exit()
881
+ #
882
+ # table_ref
883
+ #
884
+ BE_ref = []
885
+ N_ref = []
886
+ A_ref = []
887
+ for k in range(len(self.nucZ)):
888
+ if int( self.nucZ[k] ) == Zref:
889
+ BE_ref.append( self.nucBE[k] )
890
+ N_ref.append( self.nucN[k] )
891
+ A_ref.append( self.nucA[k] )
892
+ N_ref = np.array( N_ref )
893
+ #print('N_ref:',N_ref)
894
+ #
895
+ # table
896
+ #
897
+ mod = nuda.setupBETheo( table = table )
898
+ BE_mod = []
899
+ N_mod = []
900
+ A_mod = []
901
+ for k in range(len(mod.nucZ)):
902
+ if int( mod.nucZ[k] ) == Zref:
903
+ BE_mod.append( mod.nucBE[k] )
904
+ N_mod.append( mod.nucN[k] )
905
+ A_mod.append( mod.nucA[k] )
906
+ N_mod = np.array( N_mod )
907
+ print('N_ref:',N_ref)
908
+ print('N_mod:',N_mod)
909
+ N_min = max( N_ref[0], N_mod[0] )
910
+ print('N_min:',N_min)
911
+ N_max = min( N_ref[-1], N_mod[-1] )
912
+ print('N_max:',N_max)
913
+ k_ref_min, = np.where( N_ref[:] == N_min )[0]
914
+ print('k_ref_min:',k_ref_min)
915
+ k_mod_min, = np.where( N_mod[:] == N_min )[0]
916
+ print('k_mod_min:',k_mod_min)
917
+ #
918
+ # diff
919
+ #
920
+ N_diff = []
921
+ A_diff = []
922
+ BE_diff = []
923
+ print('k goes from 0 to ',N_max-N_min+1)
924
+ print('Last elements of:')
925
+ #print('ref:',N_ref[k_ref_min+N_max-N_min])
926
+ #print('mod:',N_mod[k_mod_min+N_max-N_min-1])
927
+ for k in range(N_max-N_min+1):
928
+ k_ref = k_ref_min + k
929
+ k_mod = k_mod_min + k
930
+ print('k,k_ref,k_mod,N_ref,N_mod:',k,k_ref,k_mod,N_ref[k_ref],N_mod[k_mod])
931
+ if N_ref[k_ref] > N_mod[k_mod]:
932
+ k_ref_min -= 1
933
+ continue
934
+ elif N_mod[k_mod] > N_ref[k_ref]:
935
+ k_mod_min -= 1
936
+ continue
937
+ elif N_ref[k_ref] == N_mod[k_mod]:
938
+ N_diff.append( int( N_mod[k_mod] ) )
939
+ A_diff.append( int( A_mod[k_mod] ) )
940
+ BE_diff.append( BE_mod[k_mod]-BE_ref[k_ref] )
941
+ else:
942
+ print('impossible case')
943
+ print('Exit()')
944
+ exit()
945
+ #print('N_diff:',N_diff)
946
+ N_diff = np.array( N_diff )
947
+ A_diff = np.array( A_diff )
948
+ BE_diff = np.array( BE_diff )
949
+ BE2A_diff = BE_diff / A_diff
950
+ #
951
+ if nuda.env.verb: print("Exit diff()")
952
+ #
953
+ return N_diff, A_diff, BE_diff, BE2A_diff
954
+ #
955
+ def diff_exp(self, table_exp, version_exp, Zref = 50 ):
956
+ """
957
+ Method calculates the difference between a given experimental
958
+ mass (identified by `table_exp` and `version_exp`) and table_ref.
959
+
960
+ :param table: Fix the table to analyze.
961
+ :type table: str.
962
+ :param Zref: Fix the isotopic chain to study.
963
+ :type Zref: int, optional. Default: 50.
964
+
965
+ **Attributes:**
966
+ """
967
+ #
968
+ if nuda.env.verb: print("Enter diff()")
969
+ #
970
+ if self.table == table_exp:
971
+ print('we have self.table = table_exp')
972
+ print('self.table:',self.table)
973
+ print('table:',table_exp)
974
+ print('exit()')
975
+ exit()
976
+ #
977
+ # table_ref
978
+ #
979
+ BE_ref = []
980
+ N_ref = []
981
+ A_ref = []
982
+ for k in range(len(self.nucZ)):
983
+ if int( self.nucZ[k] ) == Zref:
984
+ BE_ref.append( self.nucBE[k] )
985
+ N_ref.append( self.nucN[k] )
986
+ A_ref.append( self.nucA[k] )
987
+ N_ref = np.array( N_ref )
988
+ #print('N_ref:',N_ref)
989
+ #
990
+ # table
991
+ #
992
+ exp = nuda.setupBEExp( table = table_exp, version = version_exp )
993
+ exp2 = exp.select( state= 'gs', interp = 'n', nucleus = 'unstable' )
994
+ BE_exp = []
995
+ N_exp = []
996
+ A_exp = []
997
+ for k in range(len(exp2.sel_nucZ)):
998
+ if int( exp2.sel_nucZ[k] ) == Zref:
999
+ BE_exp.append( exp2.sel_nucBE[k] )
1000
+ N_exp.append( exp2.sel_nucN[k] )
1001
+ A_exp.append( exp2.sel_nucA[k] )
1002
+ #print('N,Z(exp),I:',N_exp[-1],A_exp[-1]-N_exp[-1],exp2.sel_flagI[k])
1003
+ N_exp = np.array( N_exp )
1004
+ N_min = max( N_ref[0], N_exp[0] )
1005
+ N_max = min( N_ref[-1], N_exp[-1] )
1006
+ k_ref_min, = np.where( N_ref == N_min )[0]
1007
+ k_exp_min, = np.where( N_exp == N_min )[0]
1008
+ #
1009
+ # diff
1010
+ #
1011
+ N_diff = []
1012
+ A_diff = []
1013
+ BE_diff = []
1014
+ for k in range(N_max-N_min+1):
1015
+ k_ref = k_ref_min + k
1016
+ k_exp = k_exp_min + k
1017
+ #print('k,k_ref,k_exp,N_ref,N_exp:',k,k_ref,k_exp,N_ref[k_ref],N_exp[k_exp])
1018
+ if N_ref[k_ref] > N_exp[k_exp]:
1019
+ k_ref_min -= 1
1020
+ continue
1021
+ elif N_exp[k_exp] > N_ref[k_ref]:
1022
+ k_exp_min -= 1
1023
+ continue
1024
+ elif N_ref[k_ref] == N_exp[k_exp]:
1025
+ N_diff.append( int( N_exp[k_exp] ) )
1026
+ A_diff.append( int( A_exp[k_exp] ) )
1027
+ BE_diff.append( BE_exp[k_exp]-BE_ref[k_ref] )
1028
+ else:
1029
+ print('impossible case')
1030
+ print('Exit()')
1031
+ exit()
1032
+
1033
+ N_diff.append( int( N_exp[k_exp] ) )
1034
+ A_diff.append( int( A_exp[k_exp] ) )
1035
+ BE_diff.append( BE_exp[k_exp]-BE_ref[k_ref] )
1036
+ #print('N_diff:',N_diff)
1037
+ N_diff = np.array( N_diff )
1038
+ A_diff = np.array( A_diff )
1039
+ BE_diff = np.array( BE_diff )
1040
+ BE2A_diff = BE_diff / A_diff
1041
+ #
1042
+ if nuda.env.verb: print("Exit diff()")
1043
+ #
1044
+ return N_diff, A_diff, BE_diff, BE2A_diff
1045
+ #
1046
+ def init_self( self ):
1047
+ """
1048
+ Initialize variables in self.
1049
+ """
1050
+ #
1051
+ if nuda.env.verb: print("Enter init_self()")
1052
+ #
1053
+ #: Attribute A (mass of the nucleus).
1054
+ self.nucA = None
1055
+ #: Attribute Z (charge of the nucleus).
1056
+ self.nucZ = None
1057
+ #: Attribute N (number of neutrons of the nucleus).
1058
+ self.nucN = None
1059
+ #: Attribute deformations
1060
+ self.beta20 = None
1061
+ self.beta22 = None
1062
+ self.beta2 = None
1063
+ self.beta30 = None
1064
+ self.beta32 = None
1065
+ #: Attribute rotation energy
1066
+ self.Erot = None
1067
+ #: Attribute average pairing energy
1068
+ self.gap_n = None
1069
+ self.gap_p = None
1070
+ #: Attribute moment of inertia (moi)
1071
+ self.moi = None
1072
+ #: Attribute Mass of the nucleus.
1073
+ self.nucMass = None
1074
+ #: Attribute Ebind of the nucleus.
1075
+ self.Ebind = None
1076
+ #: Attribute BE (Binding Energy) of the nucleus.
1077
+ self.nucBE = None
1078
+ #: Attribute uncertainty in the BE (Binding Energy) of the nucleus.
1079
+ self.nucBE2A = None
1080
+ #: Attribute Zmax: maximum charge of nuclei present in the table.
1081
+ self.Zmax = None
1082
+ #
1083
+ if nuda.env.verb: print("Exit init_self()")
1084
+ #
1085
+ return self
1086
+