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,1635 @@
1
+ import os
2
+ import sys
3
+ import math
4
+ import numpy as np # 1.15.0
5
+ from scipy.interpolate import CubicSpline
6
+ from scipy.optimize import curve_fit
7
+ import random
8
+
9
+ import nucleardatapy as nuda
10
+
11
+ def uncertainty_stat( den , err = 'MBPT' ):
12
+ if err.lower() == 'qmc':
13
+ return 0.21*(den/nuda.cst.nsat)
14
+ elif err.lower() == 'mbpt':
15
+ return 0.07*(den/nuda.cst.nsat)
16
+ else:
17
+ print('no model uncertainty is given')
18
+ print('err:',err)
19
+ print('exit()')
20
+ exit()
21
+
22
+ def micro_mbs():
23
+ """
24
+ Return a list of many-bodys (mbs) approaches available in this toolkit and print them all on the prompt.
25
+
26
+ :return: The list of models with can be 'VAR', 'AFDMC', 'BHF', 'QMC', 'MBPT', 'NLEFT'.
27
+ :rtype: list[str].
28
+ """
29
+ #
30
+ if nuda.env.verb: print("\nEnter micro_mbs()")
31
+ #
32
+ mbs = [ 'VAR', 'AFDMC', 'BHF', 'QMC', 'MBPT', 'NLEFT' ]
33
+ mbs_lower = [ item.lower() for item in mbs ]
34
+ #
35
+ if nuda.env.verb: print("Exit micro_mbs()")
36
+ #
37
+ return mbs, mbs_lower
38
+
39
+ def micro_models_mb( mb ):
40
+ """
41
+ Return a list with the name of the models available in this toolkit \
42
+ for a given mb appoach and print them all on the prompt.
43
+
44
+ :param mb: The mb approach for which there are parametrizations. \
45
+ They should be chosen among the following options: 'VAR', 'AFDMC', 'BHF', 'QMC', 'MBPT', 'NLEFT'.
46
+ :type mb: str.
47
+ :return: The list of parametrizations. \
48
+
49
+ These models are the following ones: \
50
+ If `mb` == 'VAR': \
51
+ '1981-VAR-AM-FP', '1998-VAR-AM-APR', '1998-VAR-AM-APR-fit', \
52
+ If `mb` == 'AFDMC': \
53
+ '2012-AFDMC-NM-RES-1', '2012-AFDMC-NM-RES-2', '2012-AFDMC-NM-RES-3', '2012-AFDMC-NM-RES-4', \
54
+ '2012-AFDMC-NM-RES-5', '2012-AFDMC-NM-RES-6', '2012-AFDMC-NM-RES-7', \
55
+ '2012-AFDMC-NM-FIT-1', '2012-AFDMC-NM-FIT-2', '2012-AFDMC-NM-FIT-3', '2012-AFDMC-NM-FIT-4', \
56
+ '2012-AFDMC-NM-FIT-5', '2012-AFDMC-NM-FIT-6', '2012-AFDMC-NM-FIT-7', \
57
+ '2022-AFDMC-NM',
58
+ If `mb` == 'BHF': \
59
+ '2006-BHF-AM', \
60
+ '2024-BHF-AM-2BF-Av8p', '2024-BHF-AM-2BF-Av18', '2024-BHF-AM-2BF-BONN', '2024-BHF-AM-2BF-CDBONN', \
61
+ '2024-BHF-AM-2BF-NSC97a', '2024-BHF-AM-2BF-NSC97b', '2024-BHF-AM-2BF-NSC97c', '2024-BHF-AM-2BF-NSC97d', \
62
+ '2024-BHF-AM-2BF-NSC97e', '2024-BHF-AM-2BF-NSC97f', '2024-BHF-AM-2BF-SSCV14',\
63
+ '2024-BHF-AM-23BF-Av8p', '2024-BHF-AM-23BF-Av18', '2024-BHF-AM-23BF-BONN', '2024-BHF-AM-23BF-CDBONN', \
64
+ '2024-BHF-AM-23BF-NSC97a', '2024-BHF-AM-23BF-NSC97b', '2024-BHF-AM-23BF-NSC97c', '2024-BHF-AM-23BF-NSC97d', \
65
+ '2024-BHF-AM-23BF-NSC97e', '2024-BHF-AM-23BF-NSC97f', '2024-BHF-AM-23BF-SSCV14',\
66
+ '2024-BHF-AM-23BFmicro-Av18', '2024-BHF-AM-23BFmicro-BONNB', '2024-BHF-AM-23BFmicro-NSC93',\
67
+ If `mb` == 'QMC': \
68
+ '2008-QMC-NM-swave', '2010-QMC-NM-AV4', '2009-DLQMC-NM', \
69
+ '2013-QMC-NM', '2014-AFQMC-NM', '2016-QMC-NM', '2016-MBPT-AM', \
70
+ '2018-QMC-NM', '2024-QMC-NM', \
71
+ If `mb` == 'MBPT': \
72
+ '2010-MBPT-NM', '2020-MBPT-AM', '2019-MBPT-AM-L59', '2019-MBPT-AM-L69'
73
+ If `mb` == 'NLEFT': \
74
+ '2024-NLEFT-AM', \
75
+ """
76
+ #
77
+ if nuda.env.verb: print("\nEnter micro_models_mb()")
78
+ #
79
+ #print('mb:',mb)
80
+ if mb.lower() == 'var':
81
+ models = [ '1981-VAR-AM-FP', '1998-VAR-AM-APR', '1998-VAR-AM-APR-fit' ]
82
+ elif mb.lower() == 'afdmc':
83
+ models = [ '2012-AFDMC-NM-RES-1', '2012-AFDMC-NM-RES-2', '2012-AFDMC-NM-RES-3', '2012-AFDMC-NM-RES-4', \
84
+ '2012-AFDMC-NM-RES-5', '2012-AFDMC-NM-RES-6', '2012-AFDMC-NM-RES-7', \
85
+ '2012-AFDMC-NM-FIT-1', '2012-AFDMC-NM-FIT-2', '2012-AFDMC-NM-FIT-3', '2012-AFDMC-NM-FIT-4', \
86
+ '2012-AFDMC-NM-FIT-5', '2012-AFDMC-NM-FIT-6', '2012-AFDMC-NM-FIT-7', '2022-AFDMC-NM' ]
87
+ elif mb.lower() == 'bhf':
88
+ models = [ '2006-BHF-AM', '2024-BHF-AM-2BF-Av8p', '2024-BHF-AM-2BF-Av18', '2024-BHF-AM-2BF-BONN', '2024-BHF-AM-2BF-CDBONN', \
89
+ '2024-BHF-AM-2BF-NSC97a', '2024-BHF-AM-2BF-NSC97b', '2024-BHF-AM-2BF-NSC97c', '2024-BHF-AM-2BF-NSC97d', \
90
+ '2024-BHF-AM-2BF-NSC97e', '2024-BHF-AM-2BF-NSC97f', '2024-BHF-AM-2BF-SSCV14',\
91
+ '2024-BHF-AM-23BF-Av8p', '2024-BHF-AM-23BF-Av18', '2024-BHF-AM-23BF-BONN', '2024-BHF-AM-23BF-CDBONN', \
92
+ '2024-BHF-AM-23BF-NSC97a', '2024-BHF-AM-23BF-NSC97b', '2024-BHF-AM-23BF-NSC97c', '2024-BHF-AM-23BF-NSC97d', \
93
+ '2024-BHF-AM-23BF-NSC97e', '2024-BHF-AM-23BF-NSC97f', '2024-BHF-AM-23BF-SSCV14' ]
94
+ elif mb.lower() == 'qmc':
95
+ models = [ '2008-QMC-NM-swave', '2010-QMC-NM-AV4', '2009-DLQMC-NM', \
96
+ '2013-QMC-NM', '2014-AFQMC-NM', '2016-QMC-NM', '2016-MBPT-AM', \
97
+ '2018-QMC-NM', '2024-QMC-NM' ]
98
+ elif mb.lower() == 'mbpt':
99
+ models = [ '2010-MBPT-NM', '2016-MBPT-AM', '2019-MBPT-AM-L59', '2019-MBPT-AM-L69', '2020-MBPT-AM' ]
100
+ elif mb.lower() == 'nleft':
101
+ models = [ '2024-NLEFT-AM' ]
102
+ #
103
+ if nuda.env.verb: print('models available in the toolkit:',models)
104
+ #
105
+ models_lower = [ item.lower() for item in models ]
106
+ #
107
+ if nuda.env.verb: print("\nExit micro_models_mb()")
108
+ #
109
+ return models, models_lower
110
+
111
+ def micro_models_mbs( mbs ):
112
+ #
113
+ if nuda.env.verb: print("\nEnter micro_models_mbs()")
114
+ #
115
+ #print('mbs:',mbs)
116
+ #
117
+ models = []
118
+ for mb in mbs:
119
+ new_models, new_models_lower = micro_models_mb( mb )
120
+ models.extend( new_models )
121
+ #
122
+ if nuda.env.verb: print('models available in the toolkit:',models)
123
+ #
124
+ models_lower = [ item.lower() for item in models ]
125
+ #
126
+ if nuda.env.verb: print("Exit micro_models_mbs()")
127
+ #
128
+ return models, models_lower
129
+
130
+ def micro_models():
131
+ #
132
+ if nuda.env.verb: print("\nEnter micro_models()")
133
+ #
134
+ mbs, mbs_lower = micro_mbs()
135
+ #print('mbs:',mbs)
136
+ #
137
+ models, models_lower = micro_models_mbs( mbs )
138
+ #
139
+ if nuda.env.verb: print("Exit micro_models()")
140
+ #
141
+ return models, models_lower
142
+
143
+ def micro_models_old():
144
+ """
145
+ Return a list with the name of the models available in this toolkit and \
146
+ print them all on the prompt. These models are the following ones: \
147
+ '1981-VAR-AM-FP', '1998-VAR-AM-APR', '1998-VAR-AM-APR-fit', '2006-BHF-AM*', \
148
+ '2012-AFDMC-NM-RES-1', '2012-AFDMC-NM-RES-2', '2012-AFDMC-NM-RES-3', '2012-AFDMC-NM-RES-4', \
149
+ '2012-AFDMC-NM-RES-5', '2012-AFDMC-NM-RES-6', '2012-AFDMC-NM-RES-7', \
150
+ '2012-AFDMC-NM-FIT-1', '2012-AFDMC-NM-FIT-2', '2012-AFDMC-NM-FIT-3', '2012-AFDMC-NM-FIT-4', \
151
+ '2012-AFDMC-NM-FIT-5', '2012-AFDMC-NM-FIT-6', '2012-AFDMC-NM-FIT-7', \
152
+ '2008-QMC-NM-swave', '2010-QMC-NM-AV4', '2009-DLQMC-NM', '2010-MBPT-NM', \
153
+ '2013-QMC-NM', '2014-AFQMC-NM', '2016-QMC-NM', '2016-MBPT-AM', \
154
+ '2018-QMC-NM', '2019-MBPT-AM-L59', '2019-MBPT-AM-L69', \
155
+ '2020-MBPT-AM', '2022-AFDMC-NM', '2024-NLEFT-AM', \
156
+ '2006-BHF-AM', \
157
+ '2024-BHF-AM-2BF-Av8p', '2024-BHF-AM-2BF-Av18', '2024-BHF-AM-2BF-BONN', '2024-BHF-AM-2BF-CDBONN', \
158
+ '2024-BHF-AM-2BF-NSC97a', '2024-BHF-AM-2BF-NSC97b', '2024-BHF-AM-2BF-NSC97c', '2024-BHF-AM-2BF-NSC97d', \
159
+ '2024-BHF-AM-2BF-NSC97e', '2024-BHF-AM-2BF-NSC97f', '2024-BHF-AM-2BF-SSCV14',\
160
+ '2024-BHF-AM-23BF-Av8p', '2024-BHF-AM-23BF-Av18', '2024-BHF-AM-23BF-BONN', '2024-BHF-AM-23BF-CDBONN', \
161
+ '2024-BHF-AM-23BF-NSC97a', '2024-BHF-AM-23BF-NSC97b', '2024-BHF-AM-23BF-NSC97c', '2024-BHF-AM-23BF-NSC97d', \
162
+ '2024-BHF-AM-23BF-NSC97e', '2024-BHF-AM-23BF-NSC97f', '2024-BHF-AM-23BF-SSCV14',\
163
+ '2024-BHF-AM-23BFmicro-Av18', '2024-BHF-AM-23BFmicro-BONNB', '2024-BHF-AM-23BFmicro-NSC93',\
164
+ '2024-QMC-NM'
165
+
166
+ :return: The list of models.
167
+ :rtype: list[str].
168
+ """
169
+ #
170
+ if nuda.env.verb: print("\nEnter micro_models_old()")
171
+ #
172
+ models = [ '1981-VAR-AM-FP', '1998-VAR-AM-APR', '1998-VAR-AM-APR-fit', \
173
+ '2008-QMC-NM-swave', '2010-QMC-NM-AV4', '2009-DLQMC-NM', '2010-MBPT-NM', \
174
+ '2012-AFDMC-NM-RES-1', '2012-AFDMC-NM-RES-2', '2012-AFDMC-NM-RES-3', '2012-AFDMC-NM-RES-4', \
175
+ '2012-AFDMC-NM-RES-5', '2012-AFDMC-NM-RES-6', '2012-AFDMC-NM-RES-7', \
176
+ '2012-AFDMC-NM-FIT-1', '2012-AFDMC-NM-FIT-2', '2012-AFDMC-NM-FIT-3', '2012-AFDMC-NM-FIT-4', \
177
+ '2012-AFDMC-NM-FIT-5', '2012-AFDMC-NM-FIT-6', '2012-AFDMC-NM-FIT-7',
178
+ '2013-QMC-NM', '2014-AFQMC-NM', '2016-QMC-NM', '2016-MBPT-AM', \
179
+ '2018-QMC-NM', '2019-MBPT-AM-L59', '2019-MBPT-AM-L69', \
180
+ '2020-MBPT-AM', '2022-AFDMC-NM', '2024-NLEFT-AM', \
181
+ '2006-BHF-AM', \
182
+ '2024-BHF-AM-2BF-Av8p', '2024-BHF-AM-2BF-Av18', '2024-BHF-AM-2BF-BONN', '2024-BHF-AM-2BF-CDBONN', \
183
+ '2024-BHF-AM-2BF-NSC97a', '2024-BHF-AM-2BF-NSC97b', '2024-BHF-AM-2BF-NSC97c', '2024-BHF-AM-2BF-NSC97d', \
184
+ '2024-BHF-AM-2BF-NSC97e', '2024-BHF-AM-2BF-NSC97f', '2024-BHF-AM-2BF-SSCV14',\
185
+ '2024-BHF-AM-23BF-Av8p', '2024-BHF-AM-23BF-Av18', '2024-BHF-AM-23BF-BONN', '2024-BHF-AM-23BF-CDBONN', \
186
+ '2024-BHF-AM-23BF-NSC97a', '2024-BHF-AM-23BF-NSC97b', '2024-BHF-AM-23BF-NSC97c', '2024-BHF-AM-23BF-NSC97d', \
187
+ '2024-BHF-AM-23BF-NSC97e', '2024-BHF-AM-23BF-NSC97f', '2024-BHF-AM-23BF-SSCV14', '2024-QMC-NM' ]
188
+ #
189
+ if nuda.env.verb: print('models available in the toolkit:',models)
190
+ models_lower = [ item.lower() for item in models ]
191
+ #
192
+ if nuda.env.verb: print("Exit micro_models()")
193
+ #
194
+ return models, models_lower
195
+
196
+ def micro_models_mb_matter( mb, matter ):
197
+ """
198
+ matter can be 'sm', 'SM' or 'nm', 'NM'
199
+ """
200
+ #
201
+ if nuda.env.verb: print("\nEnter micro_models_mb_matter()")
202
+ #
203
+ print('For mb (in SM):',mb)
204
+ #
205
+ models, models_lower = micro_models()
206
+ #
207
+ models2 = []
208
+ for j,model in enumerate(models):
209
+ if mb in model and '2BF' not in model and ( matter.upper() in model or 'AM' in model ):
210
+ models2.append( model )
211
+ #print(' models:',model)
212
+ #
213
+ print('models2:',models2)
214
+ models2_lower = [ item.lower() for item in models2 ]
215
+ #
216
+ return models2, models2_lower
217
+
218
+ def micro_models_mb_SM( mb ):
219
+ """
220
+ """
221
+ #
222
+ if nuda.env.verb: print("\nEnter micro_models_mb_SM()")
223
+ #
224
+ print('For mb (in SM):',mb)
225
+ #
226
+ models, models_lower = micro_models()
227
+ #
228
+ models2 = []
229
+ for j,model in enumerate(models):
230
+ if mb in model and '2BF' not in model and ( 'SM' in model or 'AM' in model ):
231
+ models2.append( model )
232
+ #print(' models:',model)
233
+ #
234
+ print('models2:',models2)
235
+ models2_lower = [ item.lower() for item in models2 ]
236
+ #
237
+ return models2, models2_lower
238
+
239
+ def micro_models_mb_NM( mb ):
240
+ """
241
+ """
242
+ #
243
+ if nuda.env.verb: print("\nEnter micro_models_mb_NM()")
244
+ #
245
+ print('For mb (in NM):',mb)
246
+ #
247
+ models, models_lower = micro_models()
248
+ #
249
+ models2 = []
250
+ for j,model in enumerate(models):
251
+ if mb in model and '2BF' not in model and ( 'NM' in model or 'AM' in model ):
252
+ models2.append( model )
253
+ #print(' models:',model)
254
+ #
255
+ print('models2:',models2)
256
+ models2_lower = [ item.lower() for item in models2 ]
257
+ #
258
+ return models2, models2_lower
259
+
260
+ # Define functions for APRfit
261
+
262
+ def APRfit_compute( n, x ):
263
+ p53 = 5.0/3.0
264
+ p83 = 8.0/3.0
265
+ asy = 1.0-2.0*x
266
+ n2 = n * n
267
+ G = ( 3.0*np.pi**2 )**p53 / ( 5.0*np.pi**2 )
268
+ Hk = G * nuda.cst.hbc**2 / ( 2.0 * nuda.cst.mnuc2_approx ) * n**p53 * ( (1 - x)**p53 + x**p53 )
269
+ Hm = G * ( p3 * ( (1-x)**p53 + x**p53 ) + p5 * ( (1-x)**p83 + x**p83 ) ) * n**p83 * np.exp( -p4*n )
270
+ g1L = -n2 * ( p1 + p2*n + p6*n2 + (p10 + p11*n) * np.exp( -(p9**2)*n2 ) )
271
+ g2L = -n2 * ( p12/n + p7 + p8*n + p13*np.exp( -(p9**2)*n2 ) )
272
+ g1H = g1L - n2*( p17*(n-p19) + p21*(n-p19)**2)*np.exp( p18*(n-p19) )
273
+ g2H = g2L - n2*( p15*(n-p20) + p14*(n-p20)**2)*np.exp( p16*(n-p20) )
274
+ HdL = g1L * (1.0-asy**2) + g2L * asy**2
275
+ HdH = g1H * (1.0-asy**2) + g2H * asy**2
276
+ #
277
+ HL = Hk + Hm + HdL
278
+ HH = Hk + Hm + HdH
279
+ #
280
+ nt = 0.32-0.12*(1-2*x)**2 # transition density in fm^-3
281
+ #print('nt:',nt)
282
+ e2v = np.zeros( len(n) )
283
+ for ind,den in enumerate(n):
284
+ if den < nt:
285
+ e2v[ind] = HL[ind]
286
+ indref = ind
287
+ #print(ind,den,HL[ind],' low')
288
+ else:
289
+ e2v[ind] = HH[ind]
290
+ #print(ind,den,HH[ind],' high')
291
+ #print('indref:',indref,'/',len(n))
292
+ #imin = max( 0, indref-2 )
293
+ #imax = min( len(n), indref+3 )
294
+ #for ind in range(imin,imax+1):
295
+ #xh = ( n[ind] - n[imin] ) / ( n[imax] - n[imin] )
296
+ #print('ind:',ind,' xh',xh)
297
+ #e2v[ind] = (1-xh)*e2v[imin] + xh*e2v[imax]
298
+ return e2v
299
+
300
+ def func_GCR_e2a(den,a,alfa,b,beta):
301
+ return a * (den/nuda.cst.nsat)**alfa + b * (den/nuda.cst.nsat)**beta
302
+
303
+ def func_GCR_pre(den,a,alfa,b,beta):
304
+ return den * ( a * alfa * (den/nuda.cst.nsat)**alfa + b * beta * (den/nuda.cst.nsat)**beta )
305
+
306
+ def func_GCR_cs2(den,a,alfa,b,beta):
307
+ dp_dn = a * alfa * ( alfa + 1.0 ) * (den/nuda.cst.nsat)**alfa + b * beta * ( beta + 1.0 ) * (den/nuda.cst.nsat)**beta
308
+ enth = nuda.cst.mnuc2 + func_GCR_e2a(den,a,alfa,b,beta) + func_GCR_pre(den,a,alfa,b,beta) / den
309
+ return dp_dn / enth
310
+
311
+ def func_e2a_NLEFT2024( kfn, b, c, d ):
312
+ a = 1.0
313
+ func = a + b*kfn + c*kfn**2 + d*kfn**3
314
+ return func * nuda.effg_nr( kfn )
315
+
316
+ def func_pre_NLEFT2024( kfn, den, b, c, d ):
317
+ func = nuda.cst.two + nuda.cst.three * b * kfn + \
318
+ nuda.cst.four * c * kfn**2 + nuda.cst.five * d * kfn**3
319
+ return func * nuda.cst.third * den * nuda.effg_nr( kfn )
320
+
321
+ def func_dpredn_NLEFT2024( kfn, den, b, c, d ):
322
+ func = nuda.cst.four + 9.0 * b * kfn + 20.0 * c * kfn**2 + 25.0 * d * kfn**3
323
+ return func_pre_NLEFT2024( kfn, den, b, c, d ) / den + func * nuda.effg_nr( kfn ) / 9.0
324
+
325
+ class setupMicro():
326
+ """
327
+ Instantiate the object with microscopic results choosen \
328
+ by the toolkit practitioner.
329
+
330
+ This choice is defined in `model`, which can chosen among \
331
+ the following choices: \
332
+ '1981-VAR-AM-FP', '1998-VAR-AM-APR', '1998-VAR-AM-APR-fit', '2006-BHF-AM*', \
333
+ '2008-QMC-NM-swave', '2010-QMC-NM-AV4', '2009-DLQMC-NM', '2010-MBPT-NM', \
334
+ '2012-AFDMC-NM-RES-1', '2012-AFDMC-NM-RES-2', '2012-AFDMC-NM-RES-3', '2012-AFDMC-NM-RES-4', \
335
+ '2012-AFDMC-NM-RES-5', '2012-AFDMC-NM-RES-6', '2012-AFDMC-NM-RES-7', \
336
+ '2012-AFDMC-NM-FIT-1', '2012-AFDMC-NM-FIT-2', '2012-AFDMC-NM-FIT-3', '2012-AFDMC-NM-FIT-4', \
337
+ '2012-AFDMC-NM-FIT-5', '2012-AFDMC-NM-FIT-6', '2012-AFDMC-NM-FIT-7', \
338
+ '2013-QMC-NM', '2014-AFQMC-NM', '2016-QMC-NM', '2016-MBPT-AM', \
339
+ '2018-QMC-NM', '2019-MBPT-AM-L59', '2019-MBPT-AM-L69', \
340
+ '2020-MBPT-AM', '2022-AFDMC-NM', '2024-NLEFT-AM', \
341
+ '2024-BHF-AM-2BF-Av8p', '2024-BHF-AM-2BF-Av18', '2024-BHF-AM-2BF-BONN', '2024-BHF-AM-2BF-CDBONN', \
342
+ '2024-BHF-AM-2BF-NSC97a', '2024-BHF-AM-2BF-NSC97b', '2024-BHF-AM-2BF-NSC97c', '2024-BHF-AM-2BF-NSC97d', \
343
+ '2024-BHF-AM-2BF-NSC97e', '2024-BHF-AM-2BF-NSC97f', '2024-BHF-AM-2BF-SSCV14', \
344
+ '2024-BHF-AM-23BF-Av8p', '2024-BHF-AM-23BF-Av18', '2024-BHF-AM-23BF-BONN', '2024-BHF-AM-23BF-CDBONN', \
345
+ '2024-BHF-AM-23BF-NSC97a', '2024-BHF-AM-23BF-NSC97b', '2024-BHF-AM-23BF-NSC97c', '2024-BHF-AM-23BF-NSC97d', \
346
+ '2024-BHF-AM-23BF-NSC97e', '2024-BHF-AM-23BF-NSC97f', '2024-BHF-AM-23BF-SSCV14', '2024-QMC-NM'
347
+
348
+ :param model: Fix the name of model. Default value: '1998-VAR-AM-APR'.
349
+ :type model: str, optional.
350
+
351
+ **Attributes:**
352
+ """
353
+ #
354
+ def __init__( self, model = '1998-VAR-AM-APR', var1 = np.linspace(0.01,0.4,20), var2 = 0.0 ):
355
+ """
356
+ Parameters
357
+ ----------
358
+ model : str, optional
359
+ The model to consider. Choose between: 1998-VAR-AM-APR (default), 2008-AFDMC-NM, ...
360
+ var1 and var2 : densities (array) and isospin asymmetry (scalar) if necessary (for interpolation function in APRfit for instance)
361
+ var1 = np.array([0.1,0.15,0.16,0.17,0.2,0.25])
362
+ """
363
+ #
364
+ if nuda.env.verb: print("Enter setupMicro()")
365
+ #
366
+ #: Attribute model.
367
+ self.model = model
368
+ if nuda.env.verb: print("model:",model)
369
+ print("model -> ",model)
370
+ #
371
+ self = setupMicro.init_self( self )
372
+ #
373
+ # read var and define den, asy and xpr:
374
+ self.den = var1[:] # density n_b=n_n+n_p
375
+ self.asy = var2 # asymmetry parameter = (n_n-n_p)/n_b
376
+ self.kfn = nuda.kf_n( (1.0+self.asy) / 2.0 * self.den )
377
+ self.xpr = ( 1.0 - self.asy ) / 2.0 # proton fraction = n_p/n_b
378
+ #print('den:',self.den)
379
+ #print('asy:',self.asy)
380
+ #print('xpr:',self.xpr)
381
+ #
382
+ models, models_lower = micro_models()
383
+ #
384
+ if model.lower() not in models_lower:
385
+ print('setup_micro: The model name ',model,' is not in the list of models.')
386
+ print('setup_micro: list of models:',models)
387
+ print('setup_micro: -- Exit the code --')
388
+ exit()
389
+ #
390
+ if model.lower() == '1981-var-am-fp':
391
+ #
392
+ self.flag_nm = True
393
+ self.flag_sm = True
394
+ self.flag_kf = True
395
+ self.flag_den = False
396
+ #
397
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/1981-VAR-NM-FP.dat')
398
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/1981-VAR-SM-FP.dat')
399
+ if nuda.env.verb: print('Reads file:',file_in1)
400
+ if nuda.env.verb: print('Reads file:',file_in2)
401
+ self.ref = 'Friedman and Pandharipande, Nucl. Phys. A. 361, 502 (1981)'
402
+ self.note = "write here notes about this EOS."
403
+ self.label = 'FP-1981'
404
+ self.marker = 'o'
405
+ self.every = 1
406
+ #self.linestyle = 'dashed'
407
+ self.nm_den, self.nm_e2a = np.loadtxt( file_in1, usecols=(0,1), unpack = True )
408
+ self.sm_den, self.sm_e2a = np.loadtxt( file_in2, usecols=(0,1), unpack = True )
409
+ self.nm_e2v = self.nm_e2a * self.nm_den
410
+ self.sm_e2v = self.sm_e2a * self.sm_den
411
+ self.nm_kfn = nuda.kf_n( self.nm_den )
412
+ self.sm_kfn = nuda.kf_n( nuda.cst.half * self.sm_den )
413
+ self.nm_e2a_err = np.abs( uncertainty_stat(self.nm_den,err='MBPT') * self.nm_e2a )
414
+ self.sm_e2a_err = np.abs( uncertainty_stat(self.sm_den,err='MBPT') * self.sm_e2a )
415
+ self.nm_e2v_err = self.nm_e2a_err * self.nm_den
416
+ self.sm_e2v_err = self.sm_e2a_err * self.sm_den
417
+ #
418
+ elif model.lower() == '1998-var-am-apr':
419
+ #
420
+ self.flag_nm = True
421
+ self.flag_sm = True
422
+ self.flag_kf = False
423
+ self.flag_den = True
424
+ #
425
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/1998-VAR-NM-APR.dat')
426
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/1998-VAR-SM-APR.dat')
427
+ if nuda.env.verb: print('Reads file:',file_in1)
428
+ if nuda.env.verb: print('Reads file:',file_in2)
429
+ self.ref = 'Akmal, Pandharipande and Ravenhall, Phys. Rev. C 58, 1804 (1998)'
430
+ self.note = "write here notes about this EOS."
431
+ self.label = 'APR-1998'
432
+ self.marker = '^'
433
+ self.every = 1
434
+ #self.linestyle = 'dashed'
435
+ self.nm_den, self.nm_e2a = np.loadtxt( file_in1, usecols=(0,1), unpack = True )
436
+ self.sm_den, self.sm_e2a = np.loadtxt( file_in2, usecols=(0,1), unpack = True )
437
+ self.nm_e2v = self.nm_e2a * self.nm_den
438
+ self.sm_e2v = self.sm_e2a * self.sm_den
439
+ self.nm_kfn = nuda.kf_n( self.nm_den )
440
+ self.sm_kfn = nuda.kf_n( nuda.cst.half * self.sm_den )
441
+ self.nm_e2a_err = np.abs( uncertainty_stat(self.nm_den,err='MBPT') * self.nm_e2a )
442
+ self.sm_e2a_err = np.abs( uncertainty_stat(self.sm_den,err='MBPT') * self.sm_e2a )
443
+ self.nm_e2v_err = self.nm_e2a_err * self.nm_den
444
+ self.sm_e2v_err = self.sm_e2a_err * self.sm_den
445
+ #
446
+ elif model.lower() == '1998-var-am-apr-fit':
447
+ #
448
+ self.flag_nm = True
449
+ self.flag_sm = True
450
+ self.flag_kf = False
451
+ self.flag_den = False
452
+ #
453
+ self.ref = 'Akmal, Pandharipande and Ravenhall, Phys. Rev. C 58, 1804 (1998)'
454
+ self.note = "Use interpolation functions suggested in APR paper."
455
+ self.label = 'APR-1998-Fit'
456
+ self.marker = None
457
+ self.every = 1
458
+ self.linestyle = 'solid'
459
+ # Define constants for APRfit and for A18+dv+UIX*
460
+ global p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21
461
+ ( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21 ) = \
462
+ ( 337.2, -382.0, 89.8, 0.457, -59.0, -19.1, 214.6, -384.0, 6.4, 69.0, -33.0, 0.35, 0.0, 0.0, 287.0, -1.54, 175.0, -1.45, 0.32, 0.195, 0.0 )
463
+ #
464
+ # energy per unit volume
465
+ self.e2v = APRfit_compute( self.den, self.xpr )
466
+ # energy per particle
467
+ self.e2a = self.e2v / self.den
468
+ self.e2a_err = np.abs( uncertainty_stat(self.den,err='MBPT') * self.e2a )
469
+ self.e2v_err = self.e2a_err * self.den
470
+ # pressure as the first derivative of E/A
471
+ cs_e2a = CubicSpline( self.den, self.e2a )
472
+ #pre = n**2 * np.gradient( e2a, n)
473
+ self.pre = self.den**2 * cs_e2a( self.den, 1 )
474
+ # chemical potential
475
+ self.chempot = ( self.e2v + self.pre ) / self.den
476
+ # enthalpy
477
+ self.h2a = nuda.cst.mnuc2 + self.chempot
478
+ # sound speed
479
+ cs_pre = CubicSpline( self.den, self.pre )
480
+ self.cs2 = cs_pre( self.den, 1 ) / self.h2a
481
+ #
482
+ elif model.lower() == '2006-bhf-am':
483
+ #
484
+ self.flag_nm = True
485
+ self.flag_sm = True
486
+ self.flag_kf = False
487
+ self.flag_den = False
488
+ #
489
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2006-BHF/2006-BHF-E2A-NM.dat')
490
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2006-BHF/2006-BHF-E2A-SM.dat')
491
+ if nuda.env.verb: print('Reads file:',file_in1)
492
+ if nuda.env.verb: print('Reads file:',file_in2)
493
+ self.ref = 'L.G. Cao, U. Lombardo, C.W. Shen, N.V. Giai, Phys. Rev. C 73, 014313 (2006)'
494
+ self.note = ""
495
+ self.label = 'BHF-2006'
496
+ self.marker = 'o'
497
+ self.every = 1
498
+ #self.linestyle = 'solid'
499
+ self.err = True
500
+ #
501
+ self.nm_den, self.nm_e2a \
502
+ = np.loadtxt( file_in1, usecols=(0,1), unpack = True )
503
+ self.nm_kfn = nuda.kf_n( self.nm_den )
504
+ self.nm_e2a_err = np.abs( uncertainty_stat(self.nm_den,err='MBPT') * self.nm_e2a )
505
+ self.nm_e2v = self.nm_e2a * self.nm_den
506
+ self.nm_e2v_err = self.nm_e2a_err * self.nm_den
507
+ #
508
+ self.sm_den, self.sm_e2a \
509
+ = np.loadtxt( file_in2, usecols=(0,1), unpack = True )
510
+ self.sm_e2a_err = np.abs( uncertainty_stat(self.sm_den,err='MBPT') * self.sm_e2a )
511
+ self.sm_kfn = nuda.kf_n( nuda.cst.half * self.sm_den )
512
+ self.sm_e2v = self.sm_e2a * self.sm_den
513
+ self.sm_e2v_err = self.sm_e2a_err * self.sm_den
514
+ #
515
+ elif model.lower() == '2008-qmc-nm-swave':
516
+ #
517
+ self.flag_nm = True
518
+ self.flag_sm = False
519
+ self.flag_kf = True
520
+ self.flag_den = False
521
+ #
522
+ file_in = os.path.join(nuda.param.path_data,'matter/micro/2008-QMC-NM-swave.dat')
523
+ if nuda.env.verb: print('Reads file:',file_in)
524
+ self.ref = 'A. Gezerlis and J. Carlson PRC 81, 025803 (2010)'
525
+ self.note = ""
526
+ self.label = 'QMC-swave-2008'
527
+ self.marker = 'o'
528
+ self.every = 1
529
+ #self.linestyle = 'solid'
530
+ self.err = True
531
+ self.nm_kfn, gap2ef, gap2ef_err, e2effg, e2effg_err \
532
+ = np.loadtxt( file_in, usecols=(0,1,2,3,4), unpack = True )
533
+ self.nm_den = nuda.den_n( self.nm_kfn )
534
+ self.nm_e2a = e2effg * nuda.effg_nr( self.nm_kfn )
535
+ self.nm_e2a_err = e2effg_err * nuda.effg_nr( self.nm_kfn )
536
+ self.nm_e2v = self.nm_e2a * self.nm_den
537
+ self.nm_e2v_err = self.nm_e2a_err * self.nm_den
538
+ #
539
+ elif model.lower() == '2009-afdmc-nm':
540
+ #
541
+ self.flag_nm = True
542
+ self.flag_sm = False
543
+ self.flag_kf = True
544
+ self.flag_den = False
545
+ #
546
+ file_in = os.path.join(nuda.param.path_data,'matter/micro/2009-AFDMC-NM.dat')
547
+ if nuda.env.verb: print('Reads file:',file_in)
548
+ self.ref = 'S. Gandolfi, A.Y. Illarionov, F. Pederiva, K.E. Schmidt, S. Fantoni, Phys. Rev. C 80, 045802 (2009).'
549
+ self.note = ""
550
+ self.label = 'AFDMC-2009'
551
+ self.marker = 'o'
552
+ self.every = 1
553
+ #self.linestyle = 'solid'
554
+ self.err = True
555
+ self.nm_kfn, self.nm_e2a, self.nm_e2a_err \
556
+ = np.loadtxt( file_in, usecols=(0,1,2), unpack = True )
557
+ self.nm_den = nuda.den_n( self.nm_kfn )
558
+ #self.nm_e2a_err = abs( 0.01 * self.nm_e2a )
559
+ self.nm_e2v = self.nm_e2a * self.nm_den
560
+ self.nm_e2v_err = self.nm_e2a_err * self.nm_den
561
+ #
562
+ elif model.lower() == '2009-dlqmc-nm':
563
+ #
564
+ self.flag_nm = True
565
+ self.flag_sm = False
566
+ self.flag_kf = True
567
+ self.flag_den = False
568
+ #
569
+ file_in = os.path.join(nuda.param.path_data,'matter/micro/2009-dQMC-NM.dat')
570
+ if nuda.env.verb: print('Reads file:',file_in)
571
+ self.ref = 'T. Abe, R. Seki, Phys. Rev. C 79, 054002 (2009)'
572
+ self.note = ""
573
+ self.label = 'dLQMC-2009'
574
+ self.marker = 'v'
575
+ self.every = 1
576
+ #self.linestyle = 'solid'
577
+ self.err = True
578
+ self.nm_kfn, gap2ef, gap2ef_err, e2effg, e2effg_err \
579
+ = np.loadtxt( file_in, usecols=(0,1,2,3,4), unpack = True )
580
+ self.nm_den = nuda.den_n( self.nm_kfn )
581
+ self.nm_e2a = np.array( e2effg * nuda.effg_nr( self.nm_kfn ) )
582
+ self.nm_e2a_err = e2effg_err * nuda.effg_nr( self.nm_kfn )
583
+ self.nm_e2v = self.nm_e2a * self.nm_den
584
+ self.nm_e2v_err = self.nm_e2a_err * self.nm_den
585
+ #
586
+ elif model.lower() == '2010-qmc-nm-av4':
587
+ #
588
+ self.flag_nm = True
589
+ self.flag_sm = False
590
+ self.flag_kf = True
591
+ self.flag_den = False
592
+ #
593
+ file_in = os.path.join(nuda.param.path_data,'matter/micro/2010-QMC-NM-AV4.dat')
594
+ if nuda.env.verb: print('Reads file:',file_in)
595
+ self.ref = 'A. Gezerlis and J. Carlson PRC 81, 025803 (2010)'
596
+ self.note = ""
597
+ self.label = 'QMC-AV4-2008'
598
+ self.marker = 's'
599
+ self.every = 1
600
+ #self.linestyle = 'solid'
601
+ self.err = True
602
+ self.nm_kfn, gap2ef, gap2ef_err, e2effg, e2effg_err \
603
+ = np.loadtxt( file_in, usecols=(0,1,2,3,4), unpack = True )
604
+ self.nm_den = nuda.den_n( self.nm_kfn )
605
+ self.nm_e2a = np.array( e2effg * nuda.effg_nr( self.nm_kfn ) )
606
+ self.nm_e2a_err = e2effg_err * nuda.effg_nr( self.nm_kfn )
607
+ self.nm_e2v = self.nm_e2a * self.nm_den
608
+ self.nm_e2v_err = self.nm_e2a_err * self.nm_den
609
+ #
610
+ elif model.lower() == '2010-mbpt-nm':
611
+ #
612
+ self.flag_nm = True
613
+ self.flag_sm = False
614
+ self.flag_kf = False
615
+ self.flag_den = False
616
+ #
617
+ file_in = os.path.join(nuda.param.path_data,'matter/micro/2010-NM-Hebeler.dat')
618
+ if nuda.env.verb: print('Reads file:',file_in)
619
+ self.ref = 'K. Hebeler, et al, Phys. Rev. Lett. 105, 161102 (2010)'
620
+ self.note = "chiral NN forces with SRG and leading 3N forces."
621
+ self.label = 'MBPT-2010'
622
+ self.marker = 's'
623
+ self.every = 1
624
+ #self.linestyle = 'solid'
625
+ self.nm_den, self.nm_pre = np.loadtxt( file_in, usecols=(0,1), unpack = True )
626
+ self.nm_kfn = nuda.kf_n( self.nm_den )
627
+ #self.nm_pre_err = np.abs( 0.01 * self.nm_pre )
628
+ #
629
+ # compute nm_e2v by integrating the pressure
630
+ #
631
+ # chemical potential
632
+ #self.nm_chempot = ( self.nm_pre + self.nm_e2v ) / self.nm_den
633
+ #
634
+ elif '2012-afdmc-nm-res' in model.lower():
635
+ #
636
+ self.flag_nm = True
637
+ self.flag_sm = False
638
+ self.flag_kf = False
639
+ self.flag_den = True
640
+ #
641
+ # We do not have the data for this model, but we have a fit of the data
642
+ k=int(model.split(sep='-')[4])
643
+ #print('k:',k)
644
+ file_in = os.path.join(nuda.param.path_data,'matter/micro/2012-AFDMC-NM-'+str(k)+'.dat')
645
+ if nuda.env.verb: print('Reads file:',file_in)
646
+ self.ref = 'S. Gandolfi, J. Carlson, S. Reddy, Phys. Rev. C 85, 032801(R) (2012).'
647
+ self.note = "We do not have the data for this model, but we have a fit of the data."
648
+ self.label = 'AFDMC-2012-'+str(k)
649
+ self.marker = 's'
650
+ self.every = 1
651
+ self.linestyle = 'None'
652
+ if k in [ 1, 7 ]:
653
+ self.nm_den, ETOT, ETOT_ERR = np.loadtxt( file_in, usecols=(0,1,2), unpack = True )
654
+ elif k in [ 2, 3, 4, 5, 6 ]:
655
+ V0, MU, self.nm_den, ETOT, ETOT_ERR = np.loadtxt( file_in, usecols=(0,1,2,3,4), unpack = True )
656
+ else:
657
+ print('The value of k is no correct ',k)
658
+ exit()
659
+ self.nm_kfn = nuda.kf_n( self.nm_den )
660
+ self.nm_e2a = ETOT# / 66.0
661
+ self.nm_e2a_err = ETOT_ERR# / 66.0
662
+ self.nm_e2v = self.nm_den * self.nm_e2a
663
+ self.nm_e2v_err = self.nm_den * self.nm_e2a_err
664
+ #self.nm_pre =
665
+ #self.nm_chempot =
666
+ #self.nm_cs2 =
667
+ #
668
+ elif '2012-afdmc-nm-fit' in model.lower():
669
+ #
670
+ self.flag_nm = True
671
+ self.flag_sm = False
672
+ self.flag_kf = False
673
+ self.flag_den = False
674
+ #
675
+ # We do not have the data for this model, but we have a fit of the data
676
+ k=int(model.split(sep='-')[4])
677
+ #print('k:',k)
678
+ file_in = os.path.join(nuda.param.path_data,'matter/micro/2012-AFDMC-NM-fit.dat')
679
+ if nuda.env.verb: print('Reads file:',file_in)
680
+ self.ref = 'S. Gandolfi, J. Carlson, S. Reddy, Phys. Rev. C 85, 032801(R) (2012).'
681
+ self.note = "We do not have the data for this model, but we have a fit of the data."
682
+ self.label = 'AFDMC-2012-'+str(k)+'-FIT'
683
+ self.marker = 's'
684
+ self.every = 1
685
+ self.linestyle = 'solid'
686
+ ind, a, alfa, b, beta = np.loadtxt( file_in, usecols=(0,1,2,3,4), unpack = True )
687
+ #name = np.loadtxt( file_in, usecols=(5), unpack = True )
688
+ nmodel = np.size(alfa)
689
+ #print('nmodel:',nmodel)
690
+ if k < 0 or k > nmodel:
691
+ print('issue with the model number k:',k)
692
+ print('exit')
693
+ exit()
694
+ #for i in range(nmodel):
695
+ # print('i:',i,' ind:',ind[i],' a:',a[i],' alfa:',alfa[i],' b:',b[i],' beta:',beta[i])
696
+ self.nm_den_fit = 0.04 + 0.45 * np.arange(self.nden+1)/float(self.nden)
697
+ self.nm_kfn_fit = nuda.kf_n( self.nm_den_fit )
698
+ # energy in NM
699
+ self.nm_e2a_fit = func_GCR_e2a(self.nm_den_fit,a[k-1],alfa[k-1],b[k-1],beta[k-1])
700
+ self.nm_e2a_fit_err = np.abs( uncertainty_stat(self.nm_den_fit,err='MBPT') * self.nm_e2a_fit )
701
+ self.nm_e2v_fit = self.nm_den_fit * self.nm_e2a_fit
702
+ self.nm_e2v_fit_err = self.nm_den_fit * self.nm_e2a_fit_err
703
+ # pressure in NM
704
+ self.nm_pre_fit = func_GCR_pre(self.nm_den_fit,a[k-1],alfa[k-1],b[k-1],beta[k-1])
705
+ # chemical potential
706
+ self.nm_chempot_fit = ( self.nm_pre_fit + self.nm_e2v_fit ) / self.nm_den_fit
707
+ # enthalpy per particle
708
+ self.nm_h2a_fit = nuda.cst.mnuc2 + self.nm_e2a_fit + self.nm_pre_fit / self.nm_den_fit
709
+ # sound speed in NM
710
+ self.nm_cs2_fit = func_GCR_cs2(self.nm_den_fit,a[k-1],alfa[k-1],b[k-1],beta[k-1])
711
+ #
712
+ self.nm_den = self.nm_den_fit
713
+ self.nm_kfn = self.nm_kfn_fit
714
+ self.nm_e2a = self.nm_e2a_fit
715
+ self.nm_e2a_err = self.nm_e2a_fit_err
716
+ self.nm_e2v = self.nm_e2v_fit
717
+ self.nm_e2v_err = self.nm_e2v_fit_err
718
+ self.nm_pre = self.nm_pre_fit
719
+ self.nm_chempot = self.nm_chempot_fit
720
+ self.nm_cs2 = self.nm_cs2_fit
721
+ #
722
+ elif model.lower() == '2013-qmc-nm':
723
+ #
724
+ self.flag_nm = True
725
+ self.flag_sm = False
726
+ self.flag_kf = False
727
+ self.flag_den = False
728
+ #
729
+ file_in = os.path.join(nuda.param.path_data,'matter/micro/2013-QMC-NM.dat')
730
+ if nuda.env.verb: print('Reads file:',file_in)
731
+ self.ref = 'I. Tews et al., PRL 110, 032504 (2013)'
732
+ self.note = "write here notes about this EOS."
733
+ self.label = 'QMC-2013'
734
+ self.marker = 's'
735
+ self.every = 1
736
+ #self.linestyle = 'solid'
737
+ self.err = True
738
+ self.nm_den, self.nm_e2a_low, self.nm_e2a_up, self.nm_pre_low, self.nm_pre_up \
739
+ = np.loadtxt( file_in, usecols=(0,1,2,3,4), unpack = True )
740
+ self.nm_kfn = nuda.kf_n( self.nm_den )
741
+ self.nm_e2a = np.array( 0.5 * ( self.nm_e2a_up + self.nm_e2a_low ) )
742
+ self.nm_e2a_err = 0.5 * ( self.nm_e2a_up - self.nm_e2a_low )
743
+ self.nm_e2v = self.nm_e2a * self.nm_den
744
+ self.nm_e2v_err = self.nm_e2a_err * self.nm_den
745
+ self.nm_pre = 0.5 * ( self.nm_pre_up + self.nm_pre_low )
746
+ self.nm_pre_err = 0.5 * ( self.nm_pre_up - self.nm_pre_low )
747
+ #
748
+ # chemical potential
749
+ self.nm_chempot = ( np.array(self.nm_pre) + np.array(self.nm_e2v) ) / np.array(self.nm_den)
750
+ self.nm_chempot_err = ( np.array(self.nm_pre_err) + np.array(self.nm_e2v_err) ) / np.array(self.nm_den)
751
+ #
752
+ # enthalpy
753
+ self.nm_h2a = nuda.cst.mnuc2 + self.nm_e2a + self.nm_pre / self.nm_den
754
+ #
755
+ # sound speed
756
+ x = np.insert( self.nm_den, 0, 0.0 )
757
+ y = np.insert( self.nm_pre, 0, 0.0 )
758
+ cs_nm_pre = CubicSpline( x, y )
759
+ nm_cs2 = cs_nm_pre( self.nm_den, 1) / self.nm_h2a
760
+ #
761
+ elif model.lower() == '2014-afqmc-nm':
762
+ #
763
+ self.flag_nm = True
764
+ self.flag_sm = False
765
+ self.flag_kf = True
766
+ self.flag_den = False
767
+ #
768
+ file_in = os.path.join(nuda.param.path_data,'matter/micro/2014-AFQMC-NM.dat')
769
+ if nuda.env.verb: print('Reads file:',file_in)
770
+ self.ref = 'G. Wlazłowski, J.W. Holt, S. Moroz, A. Bulgac, and K.J. Roche Phys. Rev. Lett. 113, 182503 (2014)'
771
+ self.note = "write here notes about this EOS."
772
+ self.label = 'AFQMC-2014'
773
+ self.marker = 's'
774
+ self.every = 1
775
+ #self.linestyle = 'solid'
776
+ self.nm_den, self.nm_e2a_2bf, self.nm_e2a_23bf \
777
+ = np.loadtxt( file_in, usecols=(0,1,2), unpack = True )
778
+ self.nm_kfn = nuda.kf_n( self.nm_den )
779
+ self.nm_e2a = self.nm_e2a_23bf
780
+ self.nm_e2a_err = np.abs( uncertainty_stat(self.nm_den,err='MBPT') * self.nm_e2a )
781
+ #self.nm_e2a_err = np.abs( 0.01 * self.nm_e2a )
782
+ self.nm_e2v = self.nm_e2a * self.nm_den
783
+ self.nm_e2v_err = self.nm_e2a_err * self.nm_den
784
+ #
785
+ elif model.lower() == '2016-qmc-nm':
786
+ #
787
+ self.flag_nm = True
788
+ self.flag_sm = False
789
+ self.flag_kf = True
790
+ self.flag_den = False
791
+ #
792
+ file_in = os.path.join(nuda.param.path_data,'matter/micro/2016-QMC-NM.dat')
793
+ if nuda.env.verb: print('Reads file:',file_in)
794
+ self.ref = ' I. Tews, S. Gandolfi, A. Gezerlis, A. Schwenk, Phys. Rev. C 93, 024305 (2016).'
795
+ self.note = ""
796
+ self.label = 'QMC-2016'
797
+ self.marker = 's'
798
+ #self.linestyle = 'solid'
799
+ self.err = True
800
+ self.every = 1
801
+ self.nm_den, self.nm_e2a_low, self.nm_e2a_up \
802
+ = np.loadtxt( file_in, usecols=(0,1,2), unpack = True )
803
+ self.nm_kfn = nuda.kf_n( self.nm_den )
804
+ self.nm_e2a = np.array( 0.5 * ( self.nm_e2a_up + self.nm_e2a_low ) )
805
+ self.nm_e2a_err = 0.5 * ( self.nm_e2a_up - self.nm_e2a_low )
806
+ self.nm_e2v = self.nm_e2a * self.nm_den
807
+ self.nm_e2v_err = self.nm_e2a_err * self.nm_den
808
+ #
809
+ elif model.lower() == '2016-mbpt-am':
810
+ #
811
+ self.flag_nm = True
812
+ self.flag_sm = True
813
+ self.flag_kf = False
814
+ self.flag_den = True
815
+ #
816
+ self.ref = 'C. Drischler, K. Hebeler, A. Schwenk, Phys. Rev. C 93, 054314 (2016).'
817
+ self.note = ""
818
+ self.label = 'MBPT-2016'
819
+ self.marker = 's'
820
+ #self.linestyle = 'solid'
821
+ self.err = True
822
+ self.every = 4
823
+ # read the results for the 7 hamiltonians
824
+ length = np.zeros( (11), dtype=int )
825
+ den = np.zeros( (11,35) )
826
+ e2a = np.zeros( (10,11,35) )
827
+ e2a_up = np.zeros( (11,35) )
828
+ e2a_low = np.zeros( (11,35) )
829
+ e2a_av = np.zeros( (11,35) )
830
+ e2a_err = np.zeros( (11,35) )
831
+ for i in range(0,11):
832
+ beta = i/10.0
833
+ if i<10:
834
+ file_in = os.path.join(nuda.param.path_data,'matter/micro/2016-MBPT-AM/EOS_spec_4_beta_0.'+str(i)+'.txt')
835
+ if i==10:
836
+ file_in = os.path.join(nuda.param.path_data,'matter/micro/2016-MBPT-AM/EOS_spec_4_beta_1.0.txt')
837
+ if nuda.env.verb: print('Reads file:',file_in)
838
+ deni, e2a_1, e2a_2, e2a_3, e2a_4, e2a_5, e2a_6, e2a_7 = np.genfromtxt( file_in, usecols = (0, 1, 2, 3, 4, 5, 6, 7), comments='#', unpack = True)
839
+ length[i] = len(deni)
840
+ den[i,0:length[i]] = deni
841
+ den_n = deni * (1.0+beta)/2.0
842
+ e2a[1,i,0:length[i]] = e2a_1
843
+ e2a[2,i,0:length[i]] = e2a_2
844
+ e2a[3,i,0:length[i]] = e2a_3
845
+ e2a[4,i,0:length[i]] = e2a_4
846
+ e2a[5,i,0:length[i]] = e2a_5
847
+ e2a[6,i,0:length[i]] = e2a_6
848
+ e2a[7,i,0:length[i]] = e2a_7
849
+ # performs average and compute boundaries
850
+ e2a_up[i,0:length[i]] = e2a_1
851
+ e2a_low[i,0:length[i]] = e2a_1
852
+ for j in range(length[i]):
853
+ for k in range(2,8):
854
+ if e2a[k,i,j] > e2a_up[i,j]: e2a_up[i,j] = e2a[k,i,j]
855
+ if e2a[k,i,j] < e2a_low[i,j]: e2a_low[i,j] = e2a[k,i,j]
856
+ e2a_av[i,j] = 0.5* ( e2a_up[i,j] + e2a_low[i,j] )
857
+ e2a_err[i,j] = 0.5* ( e2a_up[i,j] - e2a_low[i,j] )
858
+ if nuda.env.verb: print('length:',length[:])
859
+ # NM
860
+ self.nm_den = np.array( den[10,:] )
861
+ self.nm_kfn = nuda.kf_n( self.nm_den )
862
+ self.nm_e2a_up = e2a_up[10,:]
863
+ self.nm_e2a_low = e2a_low[10,:]
864
+ self.nm_e2a = np.array( e2a_av[10,:] )
865
+ self.nm_e2a_err = e2a_err[10,:]
866
+ self.nm_e2v = self.nm_e2a * self.nm_den
867
+ self.nm_e2v_err = self.nm_e2a_err * self.nm_den
868
+ # SM
869
+ self.sm_den = np.array( den[0,:] )
870
+ self.sm_kfn = nuda.kf_n( nuda.cst.half * self.sm_den )
871
+ self.sm_e2a_up = e2a_up[0,:]
872
+ self.sm_e2a_low = e2a_low[0,:]
873
+ self.sm_e2a = np.array( e2a_av[0,:] )
874
+ self.sm_e2a_err = e2a_err[0,:]
875
+ self.sm_e2v = self.sm_e2a * self.sm_den
876
+ self.sm_e2v_err = self.sm_e2a_err * self.sm_den
877
+ #
878
+ # Note: here I define the pressure as the derivative of the centroid energy
879
+ # It would however be better to compute the presure for each models and only
880
+ # after that, estimate the centroid and uncertainty.
881
+ #
882
+ elif model.lower() == '2018-qmc-nm':
883
+ #
884
+ self.flag_nm = True
885
+ self.flag_sm = False
886
+ self.flag_kf = True
887
+ self.flag_den = False
888
+ #
889
+ file_in = os.path.join(nuda.param.path_data,'matter/micro/2018-QMC-NM.dat')
890
+ if nuda.env.verb: print('Reads file:',file_in)
891
+ self.ref = 'I. Tews, J. Carlson, S. Gandolfi, S. Reddy, Astroph. J. 860(2), 149 (2018).'
892
+ self.note = ""
893
+ self.label = 'QMC-2018'
894
+ self.marker = 's'
895
+ self.every = 2
896
+ #self.linestyle = 'solid'
897
+ self.err = True
898
+ self.nm_den, self.nm_e2a_low, self.nm_e2a_up, self.nm_e2a, self.nm_e2a_err \
899
+ = np.loadtxt( file_in, usecols=(0,1,2,3,4), unpack = True )
900
+ self.nm_kfn = nuda.kf_n( self.nm_den )
901
+ self.nm_e2v = self.nm_e2a * self.nm_den
902
+ self.nm_e2v_err = self.nm_e2a_err * self.nm_den
903
+ #
904
+ elif model.lower() == '2019-mbpt-am-l59':
905
+ #
906
+ self.flag_nm = True
907
+ self.flag_sm = True
908
+ self.flag_kf = False
909
+ self.flag_den = True
910
+ #
911
+ # here, the L59 case is compute alone, it would be interesting to compute the uncertainty
912
+ # in the previous MBPT calculation (based on H1-H7) adding this new calculation.
913
+ #
914
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2020-MBPT-SM-DHSL59.dat')
915
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2020-MBPT-NM-DHSL59.dat')
916
+ if nuda.env.verb: print('Reads file1:',file_in1)
917
+ if nuda.env.verb: print('Reads file2:',file_in2)
918
+ self.ref = 'C. Drischler, K. Hebeler, A. Schwenk, Phys. Rev. Lett. 122, 042501 (2019)'
919
+ self.note = ""
920
+ self.label = 'MBPT-2019-L59'
921
+ self.marker = 's'
922
+ self.every = 2
923
+ #self.linestyle = 'solid'
924
+ self.sm_kfn, self.sm_den, Kin, HF_tot, Scnd_tot, Trd_tot, Fth_tot, self.sm_e2a \
925
+ = np.loadtxt( file_in1, usecols = (0, 1, 2, 3, 4, 5, 6, 7), comments='#', unpack = True)
926
+ self.sm_e2a_err = np.abs( uncertainty_stat(self.sm_den,err='MBPT') * self.sm_e2a )
927
+ self.sm_e2v = self.sm_e2a * self.sm_den
928
+ self.sm_e2v_err = self.sm_e2a_err * self.sm_den
929
+ self.nm_kfn, self.nm_den, Kin, HF_tot, Scnd_tot, Trd_tot, Fth_tot, self.nm_e2a \
930
+ = np.loadtxt( file_in2, usecols = (0, 1, 2, 3, 4, 5, 6, 7), comments='#', unpack = True)
931
+ self.nm_e2a_err = np.abs( uncertainty_stat(self.nm_den,err='MBPT') * self.nm_e2a )
932
+ self.nm_e2v = self.nm_e2a * self.nm_den
933
+ self.nm_e2v_err = self.nm_e2a_err * self.nm_den
934
+ #
935
+ elif model.lower() == '2019-mbpt-am-l69':
936
+ #
937
+ self.flag_nm = True
938
+ self.flag_sm = True
939
+ self.flag_kf = False
940
+ self.flag_den = True
941
+ #
942
+ # same remarck as for L59
943
+ #
944
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2020-MBPT-SM-DHSL69.dat')
945
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2020-MBPT-NM-DHSL69.dat')
946
+ if nuda.env.verb: print('Reads file1:',file_in1)
947
+ if nuda.env.verb: print('Reads file2:',file_in2)
948
+ self.ref = 'C. Drischler, K. Hebeler, A. Schwenk, Phys. Rev. Lett. 122, 042501 (2019)'
949
+ self.note = ""
950
+ self.label = 'MBPT-2019-L69'
951
+ self.marker = 's'
952
+ self.every = 2
953
+ #self.linestyle = 'solid'
954
+ self.sm_kfn, self.sm_den, Kin, HF_tot, Scnd_tot, Trd_tot, Fth_tot, self.sm_e2a \
955
+ = np.loadtxt( file_in1, usecols = (0, 1, 2, 3, 4, 5, 6, 7), comments='#', unpack = True)
956
+ self.sm_e2a_err = np.abs( uncertainty_stat(self.sm_den,err='MBPT') * self.sm_e2a )
957
+ self.sm_e2v = self.sm_e2a * self.sm_den
958
+ self.sm_e2v_err = self.sm_e2a_err * self.sm_den
959
+ self.nm_kfn, self.nm_den, Kin, HF_tot, Scnd_tot, Trd_tot, Fth_tot, self.nm_e2a \
960
+ = np.loadtxt( file_in2, usecols = (0, 1, 2, 3, 4, 5, 6, 7), comments='#', unpack = True)
961
+ self.nm_e2a_err = np.abs( uncertainty_stat(self.nm_den,err='MBPT') * self.nm_e2a )
962
+ self.nm_e2v = self.nm_e2a * self.nm_den
963
+ self.nm_e2v_err = self.nm_e2a_err * self.nm_den
964
+ #
965
+ elif model.lower() == '2020-mbpt-am':
966
+ #
967
+ self.flag_nm = True
968
+ self.flag_sm = True
969
+ self.flag_kf = False
970
+ self.flag_den = True
971
+ #
972
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2023-MBPT-SM.csv')
973
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2023-MBPT-NM.csv')
974
+ if nuda.env.verb: print('Reads file1:',file_in1)
975
+ if nuda.env.verb: print('Reads file2:',file_in2)
976
+ self.ref = 'C. Drischler, R.J. Furnstahl, J.A. Melendez, D.R. Phillips, Phys. Rev. Lett. 125(20), 202702 (2020).; C. Drischler, J. A. Melendez, R. J. Furnstahl, and D. R. Phillips, Phys. Rev. C 102, 054315'
977
+ self.note = ""
978
+ self.label = 'MBPT-2020'
979
+ self.marker = 's'
980
+ #self.linestyle = 'solid'
981
+ self.every = 6
982
+ self.err = True
983
+ self.sm_den, self.sm_e2a_lo, self.sm_e2a_lo_err, self.sm_e2a_nlo, self.sm_e2a_nlo_err, \
984
+ self.sm_e2a_n2lo, self.sm_e2a_n2lo_err, self.sm_e2a_n3lo, self.sm_e2a_n3lo_err \
985
+ = np.loadtxt( file_in1, usecols = (0, 1, 2, 3, 4, 5, 6, 7, 8), delimiter=',', comments='#', unpack = True)
986
+ self.sm_kfn = nuda.kf_n( nuda.cst.half * self.sm_den )
987
+ self.sm_e2a = self.sm_e2a_n3lo
988
+ self.sm_e2a_err = self.sm_e2a_n3lo_err
989
+ self.sm_e2v = self.sm_e2a * self.sm_den
990
+ self.sm_e2v_err = self.sm_e2a_err * self.sm_den
991
+ self.nm_den, self.nm_e2a_lo, self.nm_e2a_lo_err, self.nm_e2a_nlo, self.nm_e2a_nlo_err, \
992
+ self.nm_e2a_n2lo, self.nm_e2a_n2lo_err, self.nm_e2a_n3lo, self.nm_e2a_n3lo_err \
993
+ = np.loadtxt( file_in2, usecols = (0, 1, 2, 3, 4, 5, 6, 7, 8), delimiter=',', comments='#', unpack = True)
994
+ self.nm_kfn = nuda.kf_n( self.nm_den )
995
+ self.nm_e2a = self.nm_e2a_n3lo
996
+ self.nm_e2a_err = self.nm_e2a_n3lo_err
997
+ self.nm_e2v = self.nm_e2a * self.nm_den
998
+ self.nm_e2v_err = self.nm_e2a_err * self.nm_den
999
+ #
1000
+ elif model.lower() == '2022-afdmc-nm':
1001
+ #
1002
+ self.flag_nm = True
1003
+ self.flag_sm = False
1004
+ self.flag_kf = False
1005
+ self.flag_den = True
1006
+ #
1007
+ file_in = os.path.join(nuda.param.path_data,'matter/micro/2022-AFDMC-NM.csv')
1008
+ if nuda.env.verb: print('Reads file:',file_in)
1009
+ self.ref = 'S. Gandolfi, G. Palkanoglou, J. Carlson, A. Gezerlis, K.E. Schmidt, Condensed Matter 7(1) (2022).'
1010
+ self.note = ""
1011
+ self.label = 'AFDMC+corr.-2022'
1012
+ self.linestyle = 'solid'
1013
+ self.marker = 'o'
1014
+ #self.linestyle = 'solid'
1015
+ self.every = 1
1016
+ self.err = True
1017
+ # read e2a
1018
+ self.nm_kfn, e2effg, e2effg_err = np.loadtxt( file_in, usecols=(0,1,2), delimiter=',', comments='#', unpack = True )
1019
+ self.nm_den = nuda.den_n( self.nm_kfn )
1020
+ self.nm_e2a = e2effg * nuda.effg_nr( self.nm_kfn )
1021
+ self.nm_e2a_err = e2effg_err * nuda.effg_nr( self.nm_kfn )
1022
+ #
1023
+ self.nm_e2v = self.nm_e2a * self.nm_den
1024
+ self.nm_e2v_err = self.nm_e2a_err * self.nm_den
1025
+ #self.nm_e2a_err = np.abs( uncertainty_stat(self.nm_den,err='MBPT') * self.nm_e2a )
1026
+ #self.nm_e2a_err = self.nm_e2v_err / self.nm_den
1027
+ #
1028
+ elif model.lower() == '2024-nleft-am':
1029
+ #
1030
+ #print('enter here:',model)
1031
+ self.flag_nm = True
1032
+ self.flag_sm = True
1033
+ self.flag_kf = False
1034
+ self.flag_den = False
1035
+ #
1036
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-NLEFT-SM.dat')
1037
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-NLEFT-NM.dat')
1038
+ if nuda.env.verb: print('Reads file1:',file_in1)
1039
+ if nuda.env.verb: print('Reads file2:',file_in2)
1040
+ self.ref = 'S. Elhatisari, L. Bovermann, Y.-Z. Ma et al., Nature 630, 59 (2024).'
1041
+ self.note = ""
1042
+ self.label = 'NLEFT-2024'
1043
+ self.marker = 's'
1044
+ #self.linestyle = 'solid'
1045
+ self.every = 2
1046
+ self.err = True
1047
+ #
1048
+ # Read SM results
1049
+ #
1050
+ self.sm_A, self.sm_L, self.sm_den, self.sm_etot_2bf, self.sm_etot_2bf_err, self.sm_etot, self.sm_etot_err \
1051
+ = np.loadtxt( file_in1, usecols = (0, 1, 2, 3, 4, 5, 6), comments='#', unpack = True, delimiter=',' )
1052
+ self.sm_kfn = nuda.kf_n( nuda.cst.half * self.sm_den )
1053
+ self.sm_e2adata = self.sm_etot / self.sm_A
1054
+ self.sm_e2adata_err = self.sm_etot_err / self.sm_A
1055
+ self.sm_e2adata_2bf = self.sm_etot_2bf / self.sm_A
1056
+ self.sm_e2adata_2bf_err = self.sm_etot_2bf_err / self.sm_A
1057
+ self.sm_e2vdata = self.sm_e2adata * self.sm_den
1058
+ self.sm_e2vdata_err = self.sm_e2adata_err * self.sm_den
1059
+ # fit with EFFG
1060
+ xdata = self.sm_kfn
1061
+ ydata = self.sm_e2adata
1062
+ sm_popt, sm_pcov = curve_fit( func_e2a_NLEFT2024, xdata, ydata )
1063
+ print('sm_popt:',sm_popt)
1064
+ print('sm_pcov:',sm_pcov)
1065
+ self.sm_pfit = sm_popt
1066
+ self.sm_perr = np.sqrt( np.diag( sm_pcov ) )
1067
+ # analyse the uncertainties for e2a, pre, cs2
1068
+ self.sm_pcerr = np.zeros( (100,3), dtype=float )
1069
+ self.sm_e2a = func_e2a_NLEFT2024( xdata, *self.sm_pfit )
1070
+ self.sm_e2a_min = self.sm_e2a.copy()
1071
+ self.sm_e2a_max = self.sm_e2a.copy()
1072
+ self.sm_pre = func_pre_NLEFT2024( xdata, self.sm_den, *self.sm_pfit )
1073
+ self.sm_pre_min = self.sm_pre.copy()
1074
+ self.sm_pre_max = self.sm_pre.copy()
1075
+ self.sm_dpredn = func_dpredn_NLEFT2024( xdata, self.sm_den, *self.sm_pfit )
1076
+ self.sm_dpredn_min = self.sm_dpredn.copy()
1077
+ self.sm_dpredn_max = self.sm_dpredn.copy()
1078
+ for k in range(100):
1079
+ b = self.sm_pfit[0] + 0.1*(random.random()-0.5)*self.sm_perr[0]
1080
+ c = self.sm_pfit[1] + 0.1*(random.random()-0.5)*self.sm_perr[1]
1081
+ d = self.sm_pfit[2] + 0.1*(random.random()-0.5)*self.sm_perr[2]
1082
+ self.sm_pcerr[k,0] = b
1083
+ self.sm_pcerr[k,1] = c
1084
+ self.sm_pcerr[k,2] = d
1085
+ param = np.array( [ b, c, d ] )
1086
+ # e2a
1087
+ af = func_e2a_NLEFT2024( xdata, *param )
1088
+ for l,val in enumerate(af):
1089
+ if val > self.sm_e2a_max[l]: self.sm_e2a_max[l] = val
1090
+ if val < self.sm_e2a_min[l]: self.sm_e2a_min[l] = val
1091
+ self.sm_e2a_err = 0.5 * ( self.sm_e2a_max - self.sm_e2a_min )
1092
+ # pre
1093
+ af = func_pre_NLEFT2024( xdata, self.sm_den, *param )
1094
+ for l,val in enumerate(af):
1095
+ if val > self.sm_pre_max[l]: self.sm_pre_max[l] = val
1096
+ if val < self.sm_pre_min[l]: self.sm_pre_min[l] = val
1097
+ self.sm_pre_err = 0.5 * ( self.sm_pre_max - self.sm_pre_min )
1098
+ # dpdn
1099
+ af = func_dpredn_NLEFT2024( xdata, self.sm_den, *param )
1100
+ for l,val in enumerate(af):
1101
+ if val > self.sm_dpredn_max[l]: self.sm_dpredn_max[l] = val
1102
+ if val < self.sm_dpredn_min[l]: self.sm_dpredn_min[l] = val
1103
+ self.sm_dpredn_err = 0.5 * ( self.sm_dpredn_max - self.sm_dpredn_min )
1104
+ #print('sm_pcerr:',self.sm_pcerr)
1105
+ #self.sm_e2a = self.sm_e2a_fit
1106
+ #self.sm_e2a_err = self.sm_e2a_fit_err
1107
+ self.sm_e2v = self.sm_e2a * self.sm_den
1108
+ self.sm_e2v_err = self.sm_e2a_err * self.sm_den
1109
+ #
1110
+ # Read NM results
1111
+ self.nm_A, self.nm_L, self.nm_den, self.nm_etot, self.nm_etot_err \
1112
+ = np.loadtxt( file_in2, usecols = (0, 1, 2, 3, 4), comments='#', unpack = True, delimiter=',' )
1113
+ self.nm_kfn = nuda.kf_n( self.nm_den )
1114
+ self.nm_e2adata = self.nm_etot / self.nm_A
1115
+ self.nm_e2adata_err = self.nm_etot_err / self.nm_A
1116
+ self.nm_e2vdata = self.nm_e2adata * self.nm_den
1117
+ self.nm_e2vdata_err = self.nm_e2adata_err * self.nm_den
1118
+ # fit with EFFG
1119
+ xdata = self.nm_kfn
1120
+ ydata = self.nm_e2adata
1121
+ nm_popt, nm_pcov = curve_fit( func_e2a_NLEFT2024, xdata, ydata )
1122
+ print('nm_popt:',nm_popt)
1123
+ print('nm_pcov:',nm_pcov)
1124
+ self.nm_pfit = nm_popt
1125
+ self.nm_perr = np.sqrt( np.diag( nm_pcov ) )
1126
+ self.nm_pcerr = np.zeros( (100,3), dtype=float )
1127
+ self.nm_e2a = func_e2a_NLEFT2024( xdata, *self.nm_pfit )
1128
+ self.nm_e2a_min = self.nm_e2a.copy()
1129
+ self.nm_e2a_max = self.nm_e2a.copy()
1130
+ self.nm_pre = func_pre_NLEFT2024( xdata, self.nm_den, *self.nm_pfit )
1131
+ self.nm_pre_min = self.nm_pre.copy()
1132
+ self.nm_pre_max = self.nm_pre.copy()
1133
+ self.nm_dpredn = func_dpredn_NLEFT2024( xdata, self.nm_den, *self.nm_pfit )
1134
+ self.nm_dpredn_min = self.nm_dpredn.copy()
1135
+ self.nm_dpredn_max = self.nm_dpredn.copy()
1136
+ for k in range(100):
1137
+ b = self.nm_pfit[0] + 0.2*(random.random()-0.5)*self.nm_perr[0]
1138
+ c = self.nm_pfit[1] + 0.2*(random.random()-0.5)*self.nm_perr[1]
1139
+ d = self.nm_pfit[2] + 0.2*(random.random()-0.5)*self.nm_perr[2]
1140
+ self.nm_pcerr[k,0] = b
1141
+ self.nm_pcerr[k,1] = c
1142
+ self.nm_pcerr[k,2] = d
1143
+ param = np.array( [ b, c, d ] )
1144
+ # e2a
1145
+ af = func_e2a_NLEFT2024( xdata, *param )
1146
+ for l,val in enumerate(af):
1147
+ if val > self.nm_e2a_max[l]: self.nm_e2a_max[l] = val
1148
+ if val < self.nm_e2a_min[l]: self.nm_e2a_min[l] = val
1149
+ self.nm_e2a_err = 0.5 * ( self.nm_e2a_max - self.nm_e2a_min )
1150
+ # pre
1151
+ af = func_pre_NLEFT2024( xdata, self.nm_den, *param )
1152
+ for l,val in enumerate(af):
1153
+ if val > self.nm_pre_max[l]: self.nm_pre_max[l] = val
1154
+ if val < self.nm_pre_min[l]: self.nm_pre_min[l] = val
1155
+ self.nm_pre_err = 0.5 * ( self.nm_pre_max - self.nm_pre_min )
1156
+ # dpdn
1157
+ af = func_dpredn_NLEFT2024( xdata, self.nm_den, *param )
1158
+ for l,val in enumerate(af):
1159
+ if val > self.nm_dpredn_max[l]: self.nm_dpredn_max[l] = val
1160
+ if val < self.nm_dpredn_min[l]: self.nm_dpredn_min[l] = val
1161
+ self.nm_dpredn_err = 0.5 * ( self.nm_dpredn_max - self.nm_dpredn_min )
1162
+ #print('nm_pcerr:',self.nm_pcerr)
1163
+ #self.nm_e2a = self.nm_e2a_fit
1164
+ #self.nm_e2a_err = self.nm_e2a_fit_err
1165
+ self.nm_e2v = self.nm_e2a * self.nm_den
1166
+ self.nm_e2v_err = self.nm_e2a_err * self.nm_den
1167
+ self.nm_pre = self.nm_pre
1168
+ self.nm_pre_err = self.nm_pre_err
1169
+ self.nm_dpredn = self.nm_dpredn
1170
+ self.nm_dpredn_err = self.nm_dpredn_err
1171
+ #
1172
+ # chemical potential
1173
+ self.nm_chempot = ( np.array(self.nm_pre) + np.array(self.nm_e2v) ) / np.array(self.nm_den)
1174
+ self.nm_chempot_err = ( np.array(self.nm_pre_err) + np.array(self.nm_e2v_err) ) / np.array(self.nm_den)
1175
+ self.sm_chempot = ( np.array(self.sm_pre) + np.array(self.sm_e2v) ) / np.array(self.sm_den)
1176
+ self.sm_chempot_err = ( np.array(self.sm_pre_err) + np.array(self.sm_e2v_err) ) / np.array(self.sm_den)
1177
+ #
1178
+ # enthalpy
1179
+ self.sm_h2a = nuda.cst.mnuc2 + self.sm_e2a + self.sm_pre / self.sm_den
1180
+ self.sm_h2a_err = self.sm_e2a_err + self.sm_pre_err / self.sm_den
1181
+ self.nm_h2a = nuda.cst.mnuc2 + self.nm_e2a + self.nm_pre / self.nm_den
1182
+ self.nm_h2a_err = self.nm_e2a_err + self.nm_pre_err / self.nm_den
1183
+ #
1184
+ # sound speed
1185
+ self.sm_cs2 = self.sm_dpredn / self.sm_h2a
1186
+ self.sm_cs2_err = np.abs( self.sm_dpredn_err / self.sm_h2a ) + \
1187
+ np.abs( self.sm_dpredn * self.sm_h2a_err / self.sm_h2a )
1188
+ self.nm_cs2 = self.nm_dpredn / self.nm_h2a
1189
+ self.nm_cs2_err = np.abs( self.nm_dpredn_err / self.nm_h2a ) + \
1190
+ np.abs( self.nm_dpredn * self.nm_h2a_err / self.nm_h2a )
1191
+ #
1192
+ elif '2024-bhf-am' in model.lower():
1193
+ #
1194
+ self.flag_nm = True
1195
+ self.flag_sm = True
1196
+ self.flag_kf = False
1197
+ self.flag_den = True
1198
+ # 2BF
1199
+ if model.lower() == '2024-bhf-am-2bf-av8p':
1200
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-2BF/spin_isosp_Av8p2BF.dat')
1201
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-2BF/spin_isosp_Av8p2BF.dat')
1202
+ self.label = 'BHF-2024-2BF-Av8p'
1203
+ elif model.lower() == '2024-bhf-am-2bf-av18':
1204
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-2BF/spin_isosp_Av182BF.dat')
1205
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-2BF/spin_isosp_Av182BF.dat')
1206
+ self.label = 'BHF-2024-2BF-Av18'
1207
+ elif model.lower() == '2024-bhf-am-2bf-bonn':
1208
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-2BF/spin_isosp_BONN2BF.dat')
1209
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-2BF/spin_isosp_BONN2BF.dat')
1210
+ self.label = 'BHF-2024-2BF-Bonn'
1211
+ elif model.lower() == '2024-bhf-am-2bf-cdbonn':
1212
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-2BF/spin_isosp_CDBONN2BF.dat')
1213
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-2BF/spin_isosp_CDBONN2BF.dat')
1214
+ self.label = 'BHF-2024-2BF-CDBonn'
1215
+ elif model.lower() == '2024-bhf-am-2bf-sscv14':
1216
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-2BF/spin_isosp_SSCV142BF.dat')
1217
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-2BF/spin_isosp_SSCV142BF.dat')
1218
+ self.label = 'BHF-2024-2BF-SSCV14'
1219
+ elif model.lower() == '2024-bhf-am-2bf-nsc97a':
1220
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97a2BF.dat')
1221
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97a2BF.dat')
1222
+ self.label = 'BHF-2024-2BF-NSC97a'
1223
+ elif model.lower() == '2024-bhf-am-2bf-nsc97b':
1224
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97b2BF.dat')
1225
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97b2BF.dat')
1226
+ self.label = 'BHF-2024-2BF-NSC97b'
1227
+ elif model.lower() == '2024-bhf-am-2bf-nsc97c':
1228
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97c2BF.dat')
1229
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97c2BF.dat')
1230
+ self.label = 'BHF-2024-2BF-NSC97c'
1231
+ elif model.lower() == '2024-bhf-am-2bf-nsc97d':
1232
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97d2BF.dat')
1233
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97d2BF.dat')
1234
+ self.label = 'BHF-2024-2BF-NSC97d'
1235
+ elif model.lower() == '2024-bhf-am-2bf-nsc97e':
1236
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97e2BF.dat')
1237
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97e2BF.dat')
1238
+ self.label = 'BHF-2024-2BF-NSC97e'
1239
+ elif model.lower() == '2024-bhf-am-2bf-nsc97f':
1240
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97f2BF.dat')
1241
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97f2BF.dat')
1242
+ self.label = 'BHF-2024-2BF-NSC97f'
1243
+ # 2+3BF
1244
+ elif model.lower() == '2024-bhf-am-23bf-av8p':
1245
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_Av8p23BF.dat')
1246
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_Av8p23BF.dat')
1247
+ self.label = 'BHF-2024-23BF-Av8p'
1248
+ elif model.lower() == '2024-bhf-am-23bf-av18':
1249
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_Av1823BF.dat')
1250
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_Av1823BF.dat')
1251
+ self.label = 'BHF-2024-23BF-Av18'
1252
+ elif model.lower() == '2024-bhf-am-23bfmicro-av18':
1253
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_Av1823BFmicro.dat')
1254
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_Av1823BFmicro.dat')
1255
+ self.label = 'BHF-2024-23BFmicro-Av18'
1256
+ elif model.lower() == '2024-bhf-am-23bf-bonn':
1257
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_BONN23BF.dat')
1258
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_BONN23BF.dat')
1259
+ self.label = 'BHF-2024-23BF-Bonn'
1260
+ elif model.lower() == '2024-bhf-am-23bfmicro-bonnb':
1261
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_BONNB23BFmicro.dat')
1262
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_BONNB23BFmicro.dat')
1263
+ self.label = 'BHF-2024-23BFMicro-BonnB'
1264
+ elif model.lower() == '2024-bhf-am-23bf-cdbonn':
1265
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_CDBONN23BF.dat')
1266
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_CDBONN23BF.dat')
1267
+ self.label = 'BHF-2024-23BF-CDBonn'
1268
+ elif model.lower() == '2024-bhf-am-23bf-sscv14':
1269
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_SSCV1423BF.dat')
1270
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_SSCV1423BF.dat')
1271
+ self.label = 'BHF-2024-23BF-SSCV14'
1272
+ elif model.lower() == '2024-bhf-am-23bfmicro-nsc93':
1273
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC9323BFmicro.dat')
1274
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC9323BFmicro.dat')
1275
+ self.label = 'BHF-2024-23BFmicro-NSC93'
1276
+ elif model.lower() == '2024-bhf-am-23bf-nsc97a':
1277
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97a23BF.dat')
1278
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97a23BF.dat')
1279
+ self.label = 'BHF-2024-23BF-NSC97a'
1280
+ elif model.lower() == '2024-bhf-am-23bf-nsc97b':
1281
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97b23BF.dat')
1282
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97b23BF.dat')
1283
+ self.label = 'BHF-2024-23BF-NSC97b'
1284
+ elif model.lower() == '2024-bhf-am-23bf-nsc97c':
1285
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97c23BF.dat')
1286
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97c23BF.dat')
1287
+ self.label = 'BHF-2024-23BF-NSC97c'
1288
+ elif model.lower() == '2024-bhf-am-23bf-nsc97d':
1289
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97d23BF.dat')
1290
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97d23BF.dat')
1291
+ self.label = 'BHF-2024-23BF-NSC9d7'
1292
+ elif model.lower() == '2024-bhf-am-23bf-nsc97e':
1293
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97e23BF.dat')
1294
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97e23BF.dat')
1295
+ self.label = 'BHF-2024-23BF-NSC97e'
1296
+ elif model.lower() == '2024-bhf-am-23bf-nsc97f':
1297
+ file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97f23BF.dat')
1298
+ file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97f23BF.dat')
1299
+ self.label = 'BHF-2024-23BF-NSC97f'
1300
+ #
1301
+ if nuda.env.verb: print('Reads file:',file_in1)
1302
+ if nuda.env.verb: print('Reads file:',file_in2)
1303
+ self.ref = 'I. Vida\\~na, J. Margueron, H.J. Schulze, Universe 10, 5 (2024).'
1304
+ self.note = ""
1305
+ self.marker = 's'
1306
+ #self.linestyle = 'solid'
1307
+ self.every = 2
1308
+ self.err = False
1309
+ #
1310
+ self.sm_den, self.sm_vS0T0, self.sm_vS0T1, self.sm_vS1T0, self.sm_vS1T1, self.sm_vtot, self.sm_kin, self.sm_etot \
1311
+ = np.loadtxt( file_in1, usecols = (0, 1, 2, 3, 4, 5, 6, 7), comments='#', unpack = True)
1312
+ self.sm_den_min = min( self.sm_den ); self.sm_den_max = max( self.sm_den )
1313
+ self.sm_kfn = nuda.kf_n( nuda.cst.half * self.sm_den )
1314
+ self.sm_kf = self.sm_kfn
1315
+ self.sm_e2a = self.sm_etot
1316
+ self.sm_e2a_err = np.abs( uncertainty_stat(self.sm_den,err='MBPT') * self.sm_e2a )
1317
+ self.sm_e2v = self.sm_e2a * self.sm_den
1318
+ self.sm_e2v_err = self.sm_e2a_err * self.sm_den
1319
+ #
1320
+ self.nm_den, self.nm_vS0T0, self.nm_vS0T1, self.nm_vS1T0, self.nm_vS1T1, self.nm_vtot, self.nm_kin, self.nm_etot \
1321
+ = np.loadtxt( file_in2, usecols = (0, 1, 2, 3, 4, 5, 6, 7), comments='#', unpack = True)
1322
+ self.nm_den_min = min( self.sm_den ); self.sm_den_max = max( self.sm_den )
1323
+ self.nm_kfn = nuda.kf_n( self.nm_den )
1324
+ self.nm_e2a = self.nm_etot
1325
+ self.nm_e2a_err = np.abs( uncertainty_stat(self.nm_den,err='MBPT') * self.nm_e2a )
1326
+ self.nm_e2v = self.nm_e2a * self.nm_den
1327
+ self.nm_e2v_err = self.nm_e2a_err * self.nm_den
1328
+ #
1329
+ elif model.lower() == '2024-qmc-nm':
1330
+ #
1331
+ self.flag_nm = True
1332
+ self.flag_sm = False
1333
+ self.flag_kf = False
1334
+ self.flag_den = True
1335
+ #
1336
+ file_in = os.path.join(nuda.param.path_data,'matter/micro/2024-DMC-NM.dat')
1337
+ if nuda.env.verb: print('Reads file:',file_in)
1338
+ self.ref = 'I. Tews, R. Somasundaram, D. Lonardoni, H. Göttling, R. Seutin, J. Carlson, S. Gandolfi, K. Hebeler, A. Schwenk, arXiv:2407.08979 [nucl-th]'
1339
+ self.note = ""
1340
+ self.label = 'QMC-2024'
1341
+ self.marker = 's'
1342
+ self.every = 1
1343
+ #self.linestyle = 'solid'
1344
+ self.err = True
1345
+ self.nm_den, self.nm_e2a, self.nm_e2a_err_stat, self.nm_e2a_err_ekm, self.nm_e2a_err_gp \
1346
+ = np.loadtxt( file_in, usecols=(0,1,2,3,4), unpack = True )
1347
+ self.nm_kfn = nuda.kf_n( self.nm_den )
1348
+ self.nm_e2a_err = self.nm_e2a_err_stat + self.nm_e2a_err_ekm + self.nm_e2a_err_gp
1349
+ self.nm_e2v = self.nm_e2a * self.nm_den
1350
+ self.nm_e2v_err = self.nm_e2a_err * self.nm_den
1351
+ #
1352
+ if self.flag_nm:
1353
+ if self.flag_kf:
1354
+ # pressure in NM
1355
+ x = np.insert( self.nm_kfn, 0, 0.0 )
1356
+ y = np.insert( self.nm_e2a, 0, 0.0 )
1357
+ cs_nm_e2a = CubicSpline( x, y )
1358
+ self.nm_pre = np.array( nuda.cst.three * self.nm_kfn * self.nm_den * cs_nm_e2a( self.nm_kfn, 1 ) )
1359
+ y_err = np.insert( self.nm_e2a_err, 0, 0.0 )
1360
+ cs_nm_e2a_err = CubicSpline( x, y_err )
1361
+ self.nm_pre_err = nuda.cst.three * self.nm_kfn * self.nm_den * cs_nm_e2a_err( self.nm_kfn, 1 )
1362
+ # chemical potential
1363
+ self.nm_chempot = ( np.array(self.nm_pre) + np.array(self.nm_e2v) ) / np.array(self.nm_den)
1364
+ self.nm_chempot_err = ( np.array(self.nm_pre_err) + np.array(self.nm_e2v_err) ) / np.array(self.nm_den)
1365
+ #
1366
+ # enthalpy
1367
+ self.nm_h2a = nuda.cst.mnuc2 + self.nm_e2a + self.nm_pre / self.nm_den
1368
+ #
1369
+ # sound speed
1370
+ x = np.insert( self.nm_den, 0, 0.0 )
1371
+ y = np.insert( self.nm_pre, 0, 0.0 )
1372
+ cs_nm_pre = CubicSpline( x, y )
1373
+ nm_cs2 = cs_nm_pre( self.nm_den, 1) / self.nm_h2a
1374
+ if self.flag_den:
1375
+ # pressure in NM
1376
+ x = np.insert( self.nm_den, 0, 0.0 )
1377
+ y = np.insert( self.nm_e2a, 0, 0.0 )
1378
+ cs_nm_e2a = CubicSpline( x, y )
1379
+ self.nm_pre = np.array( cs_nm_e2a( self.nm_den, 1 ) )
1380
+ y_err = np.insert( self.nm_e2a_err, 0, 0.0 )
1381
+ cs_nm_e2a_err = CubicSpline( x, y_err )
1382
+ self.nm_pre_err = cs_nm_e2a_err( self.nm_den, 1 )
1383
+ #
1384
+ # chemical potential
1385
+ self.nm_chempot = ( np.array(self.nm_pre) + np.array(self.nm_e2v) ) / np.array(self.nm_den)
1386
+ self.nm_chempot_err = ( np.array(self.nm_pre_err) + np.array(self.nm_e2v_err) ) / np.array(self.nm_den)
1387
+ #
1388
+ # enthalpy
1389
+ self.nm_h2a = nuda.cst.mnuc2 + self.nm_e2a + self.nm_pre / self.nm_den
1390
+ #
1391
+ # sound speed
1392
+ x = np.insert( self.nm_den, 0, 0.0 )
1393
+ y = np.insert( self.nm_pre, 0, 0.0 )
1394
+ cs_nm_pre = CubicSpline( x, y )
1395
+ nm_cs2 = cs_nm_pre( self.nm_den, 1) / self.nm_h2a
1396
+ #
1397
+ if self.flag_sm:
1398
+ if self.flag_kf:
1399
+ # pressure in SM
1400
+ x = np.insert( self.sm_kfn, 0, 0.0 )
1401
+ y = np.insert( self.sm_e2a, 0, 0.0 )
1402
+ cs_sm_e2a = CubicSpline( x, y )
1403
+ self.sm_pre = np.array( nuda.cst.three * self.sm_kfn * self.sm_den * cs_sm_e2a( self.sm_kfn, 1 ) )
1404
+ y_err = np.insert( self.sm_e2a_err, 0, 0.0 )
1405
+ cs_sm_e2a_err = CubicSpline( x, y_err )
1406
+ self.sm_pre_err = nuda.cst.three * self.sm_kfn * self.sm_den * cs_sm_e2a_err( self.sm_kfn, 1 )
1407
+ #
1408
+ # chemical potential
1409
+ self.sm_chempot = ( np.array(self.sm_pre) + np.array(self.sm_e2v) ) / np.array(self.sm_den)
1410
+ self.sm_chempot_err = ( np.array(self.sm_pre_err) + np.array(self.sm_e2v_err) ) / np.array(self.sm_den)
1411
+ #
1412
+ # enthalpy
1413
+ self.sm_h2a = nuda.cst.mnuc2 + self.sm_e2a + self.sm_pre / self.sm_den
1414
+ #
1415
+ # sound speed
1416
+ x = np.insert( self.sm_den, 0, 0.0 )
1417
+ y = np.insert( self.sm_pre, 0, 0.0 )
1418
+ cs_sm_pre = CubicSpline( x, y )
1419
+ sm_cs2 = cs_sm_pre( self.sm_den, 1) / self.sm_h2a
1420
+ #
1421
+ if self.flag_den:
1422
+ # pressure in NM
1423
+ x = np.insert( self.sm_den, 0, 0.0 )
1424
+ y = np.insert( self.sm_e2a, 0, 0.0 )
1425
+ cs_sm_e2a = CubicSpline( x, y )
1426
+ self.sm_pre = np.array( cs_sm_e2a( self.sm_den, 1 ) )
1427
+ y_err = np.insert( self.sm_e2a_err, 0, 0.0 )
1428
+ cs_sm_e2a_err = CubicSpline( x, y_err )
1429
+ self.sm_pre_err = cs_sm_e2a_err( self.sm_den, 1 )
1430
+ #
1431
+ # chemical potential
1432
+ self.sm_chempot = ( np.array(self.sm_pre) + np.array(self.sm_e2v) ) / np.array(self.sm_den)
1433
+ self.sm_chempot_err = ( np.array(self.sm_pre_err) + np.array(self.sm_e2v_err) ) / np.array(self.sm_den)
1434
+ #
1435
+ # enthalpy
1436
+ self.sm_h2a = nuda.cst.mnuc2 + self.sm_e2a + self.sm_pre / self.sm_den
1437
+ #
1438
+ # sound speed
1439
+ x = np.insert( self.sm_den, 0, 0.0 )
1440
+ y = np.insert( self.sm_pre, 0, 0.0 )
1441
+ cs_sm_pre = CubicSpline( x, y )
1442
+ sm_cs2 = cs_sm_pre( self.sm_den, 1) / self.sm_h2a
1443
+ #
1444
+ #
1445
+ self.den_unit = 'fm$^{-3}$'
1446
+ self.kf_unit = 'fm$^{-1}$'
1447
+ self.e2a_unit = 'MeV'
1448
+ self.e2v_unit = 'MeV fm$^{-3}$'
1449
+ self.pre_unit = 'MeV fm$^{-3}$'
1450
+ #
1451
+ if nuda.env.verb: print("Exit setupMicro()")
1452
+ #
1453
+ def print_outputs( self ):
1454
+ """
1455
+ Method which print outputs on terminal's screen.
1456
+ """
1457
+ #
1458
+ if nuda.env.verb: print("Enter print_outputs()")
1459
+ #
1460
+ print("- Print output:")
1461
+ print(" model:",self.model)
1462
+ print(" ref: ",self.ref)
1463
+ print(" label:",self.label)
1464
+ print(" note: ",self.note)
1465
+ print(" self.sm_den: ",self.sm_den)
1466
+ print(" self.sm_effmass: ",self.sm_effmass)
1467
+ #if any(self.sm_den): print(f" sm_den: {np.round(self.sm_den,3)} in {self.den_unit}")
1468
+ if self.den is not None: print(f" den: {np.round(self.den,3)} in {self.den_unit}")
1469
+ if self.kfn is not None: print(f" kfn: {np.round(self.den,3)} in {self.kf_unit}")
1470
+ if self.asy is not None: print(f" asy: {np.round(self.asy,3)}")
1471
+ if self.e2a is not None: print(f" e2a: {np.round(self.e2a,3)} in {self.e2a_unit}")
1472
+ if self.e2v is not None: print(f" e2v: {np.round(self.e2v,3)} in {self.e2v_unit}")
1473
+ if self.pre is not None: print(f" pre: {np.round(self.pre,3)} in {self.pre_unit}")
1474
+ if self.cs2 is not None: print(f" cs2: {np.round(self.cs2,2)}")
1475
+ if self.sm_den is not None: print(f" sm_den: {np.round(self.sm_den,3)} in {self.den_unit}")
1476
+ if self.sm_kfn is not None: print(f" sm_kfn: {np.round(self.sm_kfn,3)} in {self.kf_unit}")
1477
+ if self.sm_chempot is not None: print(f" sm_chempot: {np.round(self.sm_chempot,3)} in {self.e2a_unit}")
1478
+ if self.sm_effmass is not None: print(f" sm_effmass: {np.round(self.sm_effmass,3)}")
1479
+ if self.sm_e2a is not None: print(f" sm_e2a: {np.round(self.sm_e2a,3)} in {self.e2a_unit}")
1480
+ if self.sm_e2a_err is not None: print(f" sm_e2a_err: {np.round(self.sm_e2a_err,3)} in {self.e2a_unit}")
1481
+ if self.sm_e2a_fit is not None: print(f" sm_e2a_fit: {np.round(self.sm_e2a_fit,3)} in {self.e2a_unit}")
1482
+ if self.sm_e2a_fit_err is not None: print(f" sm_e2a_fit_err: {np.round(self.sm_e2a_fit_err,3)} in {self.e2a_unit}")
1483
+ if self.sm_e2v is not None: print(f" sm_e2v: {np.round(self.sm_e2v,3)} in {self.e2v_unit}")
1484
+ if self.sm_e2v_err is not None: print(f" sm_e2v_err: {np.round(self.sm_e2v_err,3)} in {self.e2v_unit}")
1485
+ if self.sm_pre is not None: print(f" sm_pre: {np.round(self.sm_pre,3)} in {self.pre_unit}")
1486
+ if self.nm_den is not None: print(f" nm_den: {np.round(self.nm_den,3)} in {self.den_unit}")
1487
+ if self.nm_kfn is not None: print(f" nm_kfn: {np.round(self.nm_kfn,3)} in {self.kf_unit}")
1488
+ if self.nm_chempot is not None: print(f" nm_chempot: {np.round(self.nm_chempot,3)} in {self.e2a_unit}")
1489
+ if self.nm_effmass is not None: print(f" nm_effmass: {np.round(self.nm_effmass,3)}")
1490
+ if self.nm_e2a is not None: print(f" nm_e2a: {np.round(self.nm_e2a,3)} in {self.e2a_unit}")
1491
+ if self.nm_e2a_err is not None: print(f" nm_e2a_err: {np.round(self.nm_e2a_err,3)} in {self.e2a_unit}")
1492
+ if self.nm_e2a_fit is not None: print(f" nm_e2a_fit: {np.round(self.nm_e2a_fit,3)} in {self.e2a_unit}")
1493
+ if self.nm_e2a_fit_err is not None: print(f" nm_e2a_fit_err: {np.round(self.nm_e2a_fit_err,3)} in {self.e2a_unit}")
1494
+ if self.nm_e2v is not None: print(f" nm_e2v: {np.round(self.nm_e2v,3)} in {self.e2v_unit}")
1495
+ if self.nm_e2v_err is not None: print(f" nm_e2v_err: {np.round(self.nm_e2v_err,3)} in {self.e2v_unit}")
1496
+ if self.nm_pre is not None: print(f" nm_pre: {np.round(self.nm_pre,3)} in {self.pre_unit}")
1497
+ if self.nm_cs2 is not None: print(f" nm_cs2: {np.round(self.nm_cs2,3)}")
1498
+ #
1499
+ if nuda.env.verb: print("Exit print_outputs()")
1500
+ #
1501
+ def init_self( self ):
1502
+ """
1503
+ Initialize variables in self.
1504
+ """
1505
+ #
1506
+ if nuda.env.verb: print("Enter init_self()")
1507
+ #
1508
+ #: Attribute the number of points for the density.
1509
+ self.nden = 10;
1510
+ #: Attribute providing the full reference to the paper to be citted.
1511
+ self.ref = ''
1512
+ #: Attribute providing additional notes about the data.
1513
+ self.note = ''
1514
+ #: Attribute the plot linestyle.
1515
+ self.linestyle = None
1516
+ #: Attribute the plot to discriminate True uncertainties from False ones.
1517
+ self.err = False
1518
+ #: Attribute the plot label data.
1519
+ self.label = ''
1520
+ #: Attribute the plot marker.
1521
+ self.marker = None
1522
+ #: Attribute the plot every data.
1523
+ self.every = 1
1524
+ #
1525
+ #: Attribute the matter density.
1526
+ self.den = None
1527
+ #: Attribute the neutron Fermi momentum.
1528
+ self.kfn = None
1529
+ #: Attribute the matter asymmetry parameter (n_n-n_p)/(n_n+n_p).
1530
+ self.asy = None
1531
+ #: Attribute the energy per particle.
1532
+ self.e2a = None
1533
+ #: Attribute the energy per unit volume.
1534
+ self.e2v = None
1535
+ #: Attribute the pressure.
1536
+ self.pre = None
1537
+ #: Attribute the sound speed.
1538
+ self.cs2 = None
1539
+ #: Attribute the neutron matter density.
1540
+ self.nm_den = None
1541
+ #: Attribute the symmetric matter density.
1542
+ self.sm_den = None
1543
+ #: Attribute the minimum of the neutron matter density.
1544
+ self.nm_den_min = None
1545
+ #: Attribute the minimum of the symmetric matter density.
1546
+ self.sm_den_min = None
1547
+ #: Attribute the maximum of the neutron matter density.
1548
+ self.nm_den_max = None
1549
+ #: Attribute the maximum of the symmetric matter density.
1550
+ self.sm_den_max = None
1551
+ #: Attribute the neutron matter neutron Fermi momentum.
1552
+ self.nm_kfn = None
1553
+ #: Attribute the symmetric matter neutron Fermi momentum.
1554
+ self.sm_kfn = None
1555
+ #: Attribute the symmetric matter Fermi momentum.
1556
+ self.nm_kf = None
1557
+ #: Attribute the symmetric matter Fermi momentum.
1558
+ self.sm_kf = None
1559
+ #: Attribute the neutron matter chemical potential.
1560
+ self.nm_chempot = None
1561
+ #: Attribute the uncertainty in the neutron matter chemical potential.
1562
+ self.nm_chempot_err = None
1563
+ #: Attribute the symmetric matter chemical potential.
1564
+ self.sm_chempot = None
1565
+ #: Attribute the uncertainty in the symmetric matter chemical potential.
1566
+ self.sm_chempot_err = None
1567
+ #: Attribute the neutron matter effective mass.
1568
+ self.nm_effmass = None
1569
+ #: Attribute the symmetric matter effective mass.
1570
+ self.sm_effmass = None
1571
+ #: Attribute the neutron matter energy per particle.
1572
+ self.nm_e2a = None
1573
+ #: Attribute the uncertainty in the neutron matter energy per particle.
1574
+ self.nm_e2a_err = None
1575
+ #: Attribute the neutron matter energy per particle (fit).
1576
+ self.nm_e2a_fit = None
1577
+ #: Attribute the uncertainty in the neutron matter energy per particle (fit).
1578
+ self.nm_e2a_fit_err = None
1579
+ #: Attribute the neutron matter potential per particle in the (S=0,T=0) channel.
1580
+ self.nm_vS0T0 = None
1581
+ #: Attribute the neutron matter potential per particle in the (S=0,T=1) channel.
1582
+ self.nm_vS0T1 = None
1583
+ #: Attribute the neutron matter potential per particle in the (S=1,T=0) channel.
1584
+ self.nm_vS1T0 = None
1585
+ #: Attribute the neutron matter potential per particle in the (S=1,T=1) channel.
1586
+ self.nm_vS1T1 = None
1587
+ #: Attribute the neutron matter total potential per particle.
1588
+ self.nm_vtot = None
1589
+ #: Attribute the symmetric matter energy per particle.
1590
+ self.sm_e2a = None
1591
+ #: Attribute the uncertainty in the symmetric matter energy per particle.
1592
+ self.sm_e2a_err = None
1593
+ #: Attribute the symmetric matter energy per particle (fit).
1594
+ self.sm_e2a_fit = None
1595
+ #: Attribute the uncertainty in the symmetric matter energy per particle (fit).
1596
+ self.sm_e2a_fit_err = None
1597
+ #: Attribute the symmetric matter energy per particle in the (S=0,T=0) channel.
1598
+ self.sm_vS0T0 = None
1599
+ #: Attribute the symmetric matter energy per particle in the (S=0,T=1) channel.
1600
+ self.sm_vS0T1 = None
1601
+ #: Attribute the symmetric matter energy per particle in the (S=1,T=0) channel.
1602
+ self.sm_vS1T0 = None
1603
+ #: Attribute the symmetric matter energy per particle in the (S=1,T=1) channel.
1604
+ self.sm_vS1T1 = None
1605
+ #: Attribute the symmetric matter total potential per particle.
1606
+ self.sm_vtot = None
1607
+ #: Attribute the neutron matter energy per unit volume.
1608
+ self.nm_e2v = None
1609
+ #: Attribute the uncertainty in the neutron matter energy per unit volume.
1610
+ self.nm_e2v_err = None
1611
+ #: Attribute the symmetric matter energy per unit volume.
1612
+ self.sm_e2v = None
1613
+ #: Attribute the uncertainty in the symmetric matter energy per unit volume.
1614
+ self.sm_e2v_err = None
1615
+ #: Attribute the neutron matter pressure.
1616
+ self.nm_pre = None
1617
+ #: Attribute the uncertainty in the neutron matter pressure.
1618
+ self.nm_pre_err = None
1619
+ #: Attribute the neutron matter sound speed.
1620
+ self.nm_cs2 = None
1621
+ #: Attribute the uncertainty in the neutron matter sound speed.
1622
+ self.nm_cs2_err = None
1623
+ #: Attribute the symmetric matter pressure.
1624
+ self.sm_pre = None
1625
+ #: Attribute the uncertainty in the symmetric matter pressure.
1626
+ self.sm_pre_err = None
1627
+ #: Attribute the symmetric matter sound speed.
1628
+ self.sm_cs2 = None
1629
+ #: Attribute the uncertainty in the symmetric matter sound speed.
1630
+ self.sm_cs2_err = None
1631
+ #
1632
+ if nuda.env.verb: print("Exit init_self()")
1633
+ #
1634
+ return self
1635
+