nucleardatapy 0.2.1__py3-none-any.whl → 1.0.1__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 (172) hide show
  1. nucleardatapy/__init__.py +3 -1
  2. nucleardatapy/astro/setup_gw.py +18 -18
  3. nucleardatapy/astro/setup_mr.py +123 -33
  4. nucleardatapy/astro/setup_mup.py +10 -10
  5. nucleardatapy/corr/setup_EsymDen.py +0 -5
  6. nucleardatapy/corr/setup_EsymLsym.py +50 -17
  7. nucleardatapy/corr/setup_KsatQsat.py +170 -69
  8. nucleardatapy/create_folder.py +2 -2
  9. nucleardatapy/crust/setup_crust.py +364 -126
  10. nucleardatapy/data/astro/HESS/J1731-347.dat +4 -0
  11. nucleardatapy/data/astro/NICER/J0030+0451.dat +6 -6
  12. nucleardatapy/data/astro/NICER/J0437-4715.dat +4 -3
  13. nucleardatapy/data/astro/NICER/J0614-3329.dat +4 -0
  14. nucleardatapy/data/astro/NICER/J0740+6620.dat +5 -4
  15. nucleardatapy/data/hnuclei/1991-2L-Yamamoto.csv +6 -0
  16. nucleardatapy/data/hnuclei/2013-2L-Ahn.csv +1 -1
  17. nucleardatapy/data/hnuclei/2019-2L-Ekawa.csv +7 -0
  18. nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-Av18-E2A-NM.dat +8 -8
  19. nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-414-E2A.dat +21 -0
  20. nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-414-TD.dat +22 -0
  21. nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-450-E2A.dat +20 -0
  22. nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-450-TD.dat +22 -0
  23. nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-500-E2A.dat +23 -0
  24. nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-500-TD.dat +22 -0
  25. nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-414-E2A.dat +15 -0
  26. nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-414-TD.dat +21 -0
  27. nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-450-E2A.dat +15 -0
  28. nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-450-TD.dat +21 -0
  29. nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-500-E2A.dat +20 -0
  30. nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-500-TD.dat +20 -0
  31. nucleardatapy/data/matter/micro/2024-ABI-NM-DeltaNNLO450.dat +28 -0
  32. nucleardatapy/data/matter/micro/2024-ABI-NM-DeltaNNLO500.dat +28 -0
  33. nucleardatapy/data/matter/micro/2024-ABI-NM-DeltaNNLOgo394.dat +28 -0
  34. nucleardatapy/data/matter/micro/2024-ABI-NM-DeltaNNLOgo450.dat +28 -0
  35. nucleardatapy/data/matter/micro/2024-ABI-NM-NNLOsat.dat +28 -0
  36. nucleardatapy/data/matter/micro/2024-ABI-SM-DeltaNNLO450.dat +28 -0
  37. nucleardatapy/data/matter/micro/2024-ABI-SM-DeltaNNLO500.dat +28 -0
  38. nucleardatapy/data/matter/micro/2024-ABI-SM-DeltaNNLOgo394.dat +28 -0
  39. nucleardatapy/data/matter/micro/2024-ABI-SM-DeltaNNLOgo450.dat +28 -0
  40. nucleardatapy/data/matter/micro/2024-ABI-SM-NNLOsat.dat +28 -0
  41. nucleardatapy/data/matter/nep/NEPESkyrme.dat +2 -3
  42. nucleardatapy/data/matter/nep/NEPGSkyrme.dat +7 -0
  43. nucleardatapy/data/matter/nep/NEPSkyrme.dat +4 -2
  44. nucleardatapy/data/matter/nep/NEPxEFT.dat +8 -0
  45. nucleardatapy/data/matter/nep/best67DDSkyrme.dat +28 -0
  46. nucleardatapy/data/matter/nep/best90DDSkyrme.dat +46 -0
  47. nucleardatapy/data/matter/nep/best95DDSkyrme.dat +54 -0
  48. nucleardatapy/data/matter/pheno/ESkyrme/BSk31-NM.dat +996 -996
  49. nucleardatapy/data/matter/pheno/ESkyrme/BSk31-SM.dat +991 -991
  50. nucleardatapy/data/matter/pheno/ESkyrme/BSkG4-NM.dat +1002 -0
  51. nucleardatapy/data/matter/pheno/ESkyrme/BSkG4-SM.dat +1002 -0
  52. nucleardatapy/data/matter/pheno/Skyrme/BSkG1-NM.dat +102 -0
  53. nucleardatapy/data/matter/pheno/Skyrme/BSkG1-SM.dat +102 -0
  54. nucleardatapy/data/matter/pheno/Skyrme/BSkG2-NM.dat +102 -0
  55. nucleardatapy/data/matter/pheno/Skyrme/BSkG2-SM.dat +102 -0
  56. nucleardatapy/env.py +1 -1
  57. nucleardatapy/eos/__init__.py +4 -3
  58. nucleardatapy/eos/setupCC.py +429 -0
  59. nucleardatapy/eos/setup_am.py +39 -14
  60. nucleardatapy/eos/setup_am_Beq.py +40 -15
  61. nucleardatapy/eos/setup_am_Leq.py +40 -15
  62. nucleardatapy/fig/__init__.py +24 -15
  63. nucleardatapy/fig/astro_setupGW_fig.py +9 -7
  64. nucleardatapy/fig/astro_setupMR_fig.py +26 -18
  65. nucleardatapy/fig/astro_setupMasses_fig.py +8 -6
  66. nucleardatapy/fig/astro_setupMtov_fig.py +10 -6
  67. nucleardatapy/fig/astro_setupMup_fig.py +9 -7
  68. nucleardatapy/fig/corr_setupEsymDen_fig.py +22 -9
  69. nucleardatapy/fig/corr_setupEsymLsym_fig.py +25 -8
  70. nucleardatapy/fig/corr_setupKsatQsat_fig.py +23 -17
  71. nucleardatapy/fig/crust_setupCrust_fig.py +11 -9
  72. nucleardatapy/fig/eos_setupAMBeq_fig.py +641 -156
  73. nucleardatapy/fig/eos_setupAMLeq_fig.py +53 -50
  74. nucleardatapy/fig/eos_setupAM_asy_lep_fig.py +373 -0
  75. nucleardatapy/fig/eos_setupAM_asy_nuc_fig.py +346 -0
  76. nucleardatapy/fig/eos_setupAM_asy_tot_fig.py +352 -0
  77. nucleardatapy/fig/eos_setupAM_fig.py +519 -0
  78. nucleardatapy/fig/eos_setupCC_fig.py +270 -0
  79. nucleardatapy/fig/hnuc_setupChart_fig.py +19 -16
  80. nucleardatapy/fig/hnuc_setupRE1LExp_fig.py +15 -5
  81. nucleardatapy/fig/matter_all_fig.py +971 -0
  82. nucleardatapy/fig/matter_setupCheck_fig.py +106 -0
  83. nucleardatapy/fig/matter_setupFFGLep_fig.py +74 -0
  84. nucleardatapy/fig/matter_setupFFGNuc_fig.py +286 -115
  85. nucleardatapy/fig/matter_setupHIC_fig.py +107 -67
  86. nucleardatapy/fig/matter_setupMicroEsym_fig.py +259 -73
  87. nucleardatapy/fig/matter_setupMicro_LP_fig.py +185 -82
  88. nucleardatapy/fig/matter_setupMicro_band_fig.py +126 -53
  89. nucleardatapy/fig/matter_setupMicro_effmass_fig.py +253 -77
  90. nucleardatapy/fig/matter_setupMicro_err_NM_fig.py +45 -20
  91. nucleardatapy/fig/matter_setupMicro_fig.py +317 -77
  92. nucleardatapy/fig/matter_setupMicro_gap_fig.py +237 -100
  93. nucleardatapy/fig/matter_setupNEPStats_fig.py +106 -0
  94. nucleardatapy/fig/matter_setupPhenoEsym_fig.py +204 -65
  95. nucleardatapy/fig/matter_setupPheno_fig.py +395 -93
  96. nucleardatapy/fig/nuc_setupBEExp_chart_fig.py +93 -73
  97. nucleardatapy/fig/nuc_setupBEExp_fig.py +97 -87
  98. nucleardatapy/fig/nuc_setupBETheo_fig.py +114 -81
  99. nucleardatapy/fig/nuc_setupISGMRExp_fig.py +12 -15
  100. nucleardatapy/fig/nuc_setupRchExp_fig.py +14 -22
  101. nucleardatapy/fig/nuc_setupRchTheo_fig.py +37 -40
  102. nucleardatapy/fig/nuc_setupRnpExp_fig.py +86 -106
  103. nucleardatapy/fig/nuc_setupRnpTheo_fig.py +105 -94
  104. nucleardatapy/hello.py +6 -0
  105. nucleardatapy/hnuc/setup_re1L_exp.py +6 -6
  106. nucleardatapy/hnuc/setup_re1Xi_exp.py +5 -5
  107. nucleardatapy/hnuc/setup_re2L_exp.py +36 -13
  108. nucleardatapy/matter/__init__.py +14 -14
  109. nucleardatapy/matter/setup_check.py +6 -6
  110. nucleardatapy/matter/setup_ffg.py +66 -39
  111. nucleardatapy/matter/setup_hic.py +91 -74
  112. nucleardatapy/matter/setup_micro.py +2033 -1007
  113. nucleardatapy/matter/setup_micro_band.py +6 -6
  114. nucleardatapy/matter/setup_micro_esym.py +56 -54
  115. nucleardatapy/matter/setup_micro_gap.py +24 -17
  116. nucleardatapy/matter/setup_micro_lp.py +2 -2
  117. nucleardatapy/matter/setup_nep.py +175 -92
  118. nucleardatapy/matter/{setup_nep_model_dist.py → setup_nep_stat_model.py} +13 -8
  119. nucleardatapy/matter/{setup_nep_dist.py → setup_nep_stat_models.py} +12 -8
  120. nucleardatapy/matter/setup_pheno.py +129 -49
  121. nucleardatapy/matter/setup_pheno_esym.py +22 -19
  122. nucleardatapy/nuc/setup_be_exp.py +306 -292
  123. nucleardatapy/nuc/setup_be_theo.py +288 -105
  124. nucleardatapy/nuc/setup_isgmr_exp.py +4 -4
  125. nucleardatapy/nuc/setup_rnp_exp.py +1 -0
  126. nucleardatapy/nuc/setup_rnp_theo.py +2 -1
  127. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.1.dist-info}/METADATA +48 -16
  128. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.1.dist-info}/RECORD +157 -124
  129. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.1.dist-info}/WHEEL +1 -1
  130. tests/test_corr_setupKsatQsat.py +3 -1
  131. tests/test_matter_setupMicro.py +37 -10
  132. nucleardatapy/data/matter/pheno/ESkyrme/BSkG1-NM.dat +0 -1002
  133. nucleardatapy/data/matter/pheno/ESkyrme/BSkG1-SM.dat +0 -1002
  134. nucleardatapy/data/matter/pheno/ESkyrme/BSkG2-NM.dat +0 -1002
  135. nucleardatapy/data/matter/pheno/ESkyrme/BSkG2-SM.dat +0 -1002
  136. nucleardatapy/fig/eos_setupAM_e_asy_lep_fig.py +0 -125
  137. nucleardatapy/fig/eos_setupAM_e_asy_nuc_fig.py +0 -115
  138. nucleardatapy/fig/eos_setupAM_e_asy_tot_fig.py +0 -117
  139. nucleardatapy/fig/eos_setupAM_e_fig.py +0 -173
  140. nucleardatapy/fig/matter_ENM_fig.py +0 -128
  141. nucleardatapy/fig/matter_ESM_fig.py +0 -140
  142. nucleardatapy/fig/matter_Esym_fig.py +0 -134
  143. nucleardatapy/fig/matter_cs2_fig.py +0 -83
  144. nucleardatapy/fig/matter_preNM_fig.py +0 -146
  145. nucleardatapy/fig/matter_preSM_fig.py +0 -144
  146. nucleardatapy/fig/matter_setupNEPModelDist_fig.py +0 -68
  147. /nucleardatapy/data/LandauParameters/micro/{2006-IBHF-NM-AV18.dat → 2006-EBHF-NM-AV18.dat} +0 -0
  148. /nucleardatapy/data/LandauParameters/micro/{2006-IBHF-SM-AV18.dat → 2006-EBHF-SM-AV18.dat} +0 -0
  149. /nucleardatapy/data/crust/{2022-crustGMRS-BSK14.dat → 2022-GMRS-BSK14.dat} +0 -0
  150. /nucleardatapy/data/crust/{2022-crustGMRS-BSK16.dat → 2022-GMRS-BSK16.dat} +0 -0
  151. /nucleardatapy/data/crust/{2022-crustGMRS-DHSL59.dat → 2022-GMRS-DHSL59.dat} +0 -0
  152. /nucleardatapy/data/crust/{2022-crustGMRS-DHSL69.dat → 2022-GMRS-DHSL69.dat} +0 -0
  153. /nucleardatapy/data/crust/{2022-crustGMRS-F0.dat → 2022-GMRS-F0.dat} +0 -0
  154. /nucleardatapy/data/crust/{2022-crustGMRS-H1.dat → 2022-GMRS-H1.dat} +0 -0
  155. /nucleardatapy/data/crust/{2022-crustGMRS-H2.dat → 2022-GMRS-H2.dat} +0 -0
  156. /nucleardatapy/data/crust/{2022-crustGMRS-H3.dat → 2022-GMRS-H3.dat} +0 -0
  157. /nucleardatapy/data/crust/{2022-crustGMRS-H4.dat → 2022-GMRS-H4.dat} +0 -0
  158. /nucleardatapy/data/crust/{2022-crustGMRS-H5.dat → 2022-GMRS-H5.dat} +0 -0
  159. /nucleardatapy/data/crust/{2022-crustGMRS-H7.dat → 2022-GMRS-H7.dat} +0 -0
  160. /nucleardatapy/data/crust/{2022-crustGMRS-LNS5.dat → 2022-GMRS-LNS5.dat} +0 -0
  161. /nucleardatapy/data/crust/{2022-crustGMRS-RATP.dat → 2022-GMRS-RATP.dat} +0 -0
  162. /nucleardatapy/data/crust/{2022-crustGMRS-SGII.dat → 2022-GMRS-SGII.dat} +0 -0
  163. /nucleardatapy/data/crust/{2022-crustGMRS-SLY5.dat → 2022-GMRS-SLY5.dat} +0 -0
  164. /nucleardatapy/data/matter/micro/{2013-QMC-NM.dat → 2013-MBPT-NM.dat} +0 -0
  165. /nucleardatapy/data/{NeutronSkin/ddrhNskin-208Pb.dat → rnp/ddrhrnp-208Pb.dat} +0 -0
  166. /nucleardatapy/data/{NeutronSkin/ddrhNskin-48Ca.dat → rnp/ddrhrnp-48Ca.dat} +0 -0
  167. /nucleardatapy/data/{NeutronSkin/nlrhNskin-208Pb.dat → rnp/nlrhrnp-208Pb.dat} +0 -0
  168. /nucleardatapy/data/{NeutronSkin/nlrhNskin-48Ca.dat → rnp/nlrhrnp-48Ca.dat} +0 -0
  169. /nucleardatapy/data/{NeutronSkin/skyrmeNskin-208Pb.dat → rnp/skyrmernp-208Pb.dat} +0 -0
  170. /nucleardatapy/data/{NeutronSkin/skyrmeNskin-48Ca.dat → rnp/skyrmernp-48Ca.dat} +0 -0
  171. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.1.dist-info}/licenses/LICENSE +0 -0
  172. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.1.dist-info}/top_level.txt +0 -0
@@ -1,24 +1,24 @@
1
- import os
2
- import sys
3
- import math
4
1
  import numpy as np # 1.15.0
2
+ import os
5
3
  from scipy.interpolate import CubicSpline
6
4
  from scipy.optimize import curve_fit
7
5
  import random
8
6
 
9
7
  import nucleardatapy as nuda
10
8
 
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)
9
+
10
+ def uncertainty_stat(den, err="MBPT"):
11
+ if err.lower() == "qmc":
12
+ return 0.21 * (den / nuda.cst.nsat)
13
+ elif err.lower() == "mbpt":
14
+ return 0.07 * (den / nuda.cst.nsat)
16
15
  else:
17
- print('no model uncertainty is given')
18
- print('err:',err)
19
- print('exit()')
16
+ print("no model uncertainty is given")
17
+ print("err:", err)
18
+ print("exit()")
20
19
  exit()
21
20
 
21
+
22
22
  def micro_mbs():
23
23
  """
24
24
  Return a list of many-bodys (mbs) approaches available in this toolkit and print them all on the prompt.
@@ -27,16 +27,19 @@ def micro_mbs():
27
27
  :rtype: list[str].
28
28
  """
29
29
  #
30
- if nuda.env.verb: print("\nEnter micro_mbs()")
30
+ if nuda.env.verb:
31
+ print("\nEnter micro_mbs()")
31
32
  #
32
- mbs = [ 'VAR', 'AFDMC', 'BHF2', 'BHF23', 'QMC', 'MBPT', 'NLEFT' ]
33
+ mbs = [ "VAR", "AFDMC", "BHF2", "BHF23", "QMC", "MBPT", "NLEFT", "SCGF", "CC" ]
33
34
  mbs_lower = [ item.lower() for item in mbs ]
34
35
  #
35
- if nuda.env.verb: print("Exit micro_mbs()")
36
+ if nuda.env.verb:
37
+ print("Exit micro_mbs()")
36
38
  #
37
39
  return mbs, mbs_lower
38
40
 
39
- def micro_models_mb( mb ):
41
+
42
+ def micro_models_mb(mb):
40
43
  """
41
44
  Return a list with the name of the models available in this toolkit \
42
45
  for a given mb appoach and print them all on the prompt.
@@ -67,270 +70,274 @@ def micro_models_mb( mb ):
67
70
  '2024-BHF-AM-23BFmicro-Av18', '2024-BHF-AM-23BFmicro-BONNB', '2024-BHF-AM-23BFmicro-NSC93',\
68
71
  If `mb` == 'QMC': \
69
72
  '2008-QMC-NM-swave', '2010-QMC-NM-AV4', '2009-DLQMC-NM', \
70
- '2013-QMC-NM', '2014-AFQMC-NM', '2016-QMC-NM', \
73
+ '2014-AFQMC-NM', '2016-QMC-NM', \
71
74
  '2018-QMC-NM', '2024-QMC-NM', \
72
75
  If `mb` == 'MBPT': \
73
- '2010-MBPT-NM', '2020-MBPT-AM', '2019-MBPT-AM-L59', '2019-MBPT-AM-L69'
76
+ '2013-MBPT-NM', '2010-MBPT-NM', '2020-MBPT-AM', '2019-MBPT-AM-L59', '2019-MBPT-AM-L69',\
77
+ "2024-MBPT-AM-DN2LO-450", "2024-MBPT-AM-DN2LO-500", "2024-MBPT-AM-DN2LOgo-394", "2024-MBPT-AM-DN2LOgo-450", "2024-MBPT-AM-N2LOsat",\
78
+ If `mb` == 'SCGF': \
79
+ "2020-SCGF-AM-N3LO-414", "2020-SCGF-AM-N3LO-450", "2020-SCGF-AM-N3LO-500", "2024-SCGF-AM-DN2LO-450",\
80
+ "2024-SCGF-AM-DN2LO-500", "2024-SCGF-AM-DN2LOgo-394", "2024-SCGF-AM-DN2LOgo-450", "2024-SCGF-AM-N2LOsat",\
74
81
  If `mb` == 'NLEFT': \
75
82
  '2024-NLEFT-AM', \
83
+ If `mb` == 'CC': \
84
+ "2024-CC-AM-DN2LO-450", "2024-CC-AM-DN2LO-500", "2024-CC-AM-DN2LOgo-394", "2024-CC-AM-DN2LOgo-450", "2024-CC-AM-N2LOsat",\
76
85
  """
77
86
  #
78
- if nuda.env.verb: print("\nEnter micro_models_mb()")
87
+ if nuda.env.verb:
88
+ print("\nEnter micro_models_mb()")
79
89
  #
80
- #print('mb:',mb)
81
- if mb.lower() == 'var':
82
- models = [ '1981-VAR-AM-FP', '1998-VAR-AM-APR', '1998-VAR-AM-APR-fit' ]
83
- elif mb.lower() == 'afdmc':
84
- models = [ '2012-AFDMC-NM-RES-1', '2012-AFDMC-NM-RES-2', '2012-AFDMC-NM-RES-3', '2012-AFDMC-NM-RES-4', \
85
- '2012-AFDMC-NM-RES-5', '2012-AFDMC-NM-RES-6', '2012-AFDMC-NM-RES-7', \
86
- '2012-AFDMC-NM-FIT-1', '2012-AFDMC-NM-FIT-2', '2012-AFDMC-NM-FIT-3', '2012-AFDMC-NM-FIT-4', \
87
- '2012-AFDMC-NM-FIT-5', '2012-AFDMC-NM-FIT-6', '2012-AFDMC-NM-FIT-7', '2022-AFDMC-NM' ]
88
- elif mb.lower() == 'bhf2':
89
- models = [ '2024-BHF-AM-2BF-Av18', '2024-BHF-AM-2BF-BONN', '2024-BHF-AM-2BF-CDBONN', \
90
- '2024-BHF-AM-2BF-NSC97a', '2024-BHF-AM-2BF-NSC97b', '2024-BHF-AM-2BF-NSC97c', '2024-BHF-AM-2BF-NSC97d', \
91
- '2024-BHF-AM-2BF-NSC97e', '2024-BHF-AM-2BF-NSC97f' ]
92
- #models = [ '2024-BHF-AM-2BF-Av8p', '2024-BHF-AM-2BF-Av18', '2024-BHF-AM-2BF-BONN', '2024-BHF-AM-2BF-CDBONN', \
90
+ # print('mb:',mb)
91
+ if mb.lower() == "var":
92
+ models = ["1981-VAR-AM-FP", "1998-VAR-AM-APR", "1998-VAR-AM-APR-fit"]
93
+ elif mb.lower() == "afdmc":
94
+ models = [
95
+ "2012-AFDMC-NM-RES-1",
96
+ "2012-AFDMC-NM-RES-2",
97
+ "2012-AFDMC-NM-RES-3",
98
+ "2012-AFDMC-NM-RES-4",
99
+ "2012-AFDMC-NM-RES-5",
100
+ "2012-AFDMC-NM-RES-6",
101
+ "2012-AFDMC-NM-RES-7",
102
+ "2012-AFDMC-NM-FIT-1",
103
+ "2012-AFDMC-NM-FIT-2",
104
+ "2012-AFDMC-NM-FIT-3",
105
+ "2012-AFDMC-NM-FIT-4",
106
+ "2012-AFDMC-NM-FIT-5",
107
+ "2012-AFDMC-NM-FIT-6",
108
+ "2012-AFDMC-NM-FIT-7",
109
+ "2022-AFDMC-NM",
110
+ ]
111
+ elif mb.lower() == "bhf2":
112
+ models = [
113
+ "2024-BHF-AM-2BF-Av18",
114
+ "2024-BHF-AM-2BF-BONN",
115
+ "2024-BHF-AM-2BF-CDBONN",
116
+ "2024-BHF-AM-2BF-NSC97a",
117
+ "2024-BHF-AM-2BF-NSC97b",
118
+ "2024-BHF-AM-2BF-NSC97c",
119
+ "2024-BHF-AM-2BF-NSC97d",
120
+ "2024-BHF-AM-2BF-NSC97e",
121
+ "2024-BHF-AM-2BF-NSC97f",
122
+ ]
123
+ # models = [ '2024-BHF-AM-2BF-Av8p', '2024-BHF-AM-2BF-Av18', '2024-BHF-AM-2BF-BONN', '2024-BHF-AM-2BF-CDBONN', \
93
124
  # '2024-BHF-AM-2BF-NSC97a', '2024-BHF-AM-2BF-NSC97b', '2024-BHF-AM-2BF-NSC97c', '2024-BHF-AM-2BF-NSC97d', \
94
125
  # '2024-BHF-AM-2BF-NSC97e', '2024-BHF-AM-2BF-NSC97f', '2024-BHF-AM-2BF-SSCV14' ]
95
- elif mb.lower() == 'bhf23':
96
- models = [ '2006-BHF-AM-Av18', '2024-BHF-AM-23BF-Av18', '2024-BHF-AM-23BF-BONN', \
97
- '2024-BHF-AM-23BF-CDBONN', '2024-BHF-AM-23BF-NSC97a', '2024-BHF-AM-23BF-NSC97b', '2024-BHF-AM-23BF-NSC97c', \
98
- '2024-BHF-AM-23BF-NSC97d', '2024-BHF-AM-23BF-NSC97e', '2024-BHF-AM-23BF-NSC97f' ]
99
- #models = [ '2006-BHF-AM-Av18', '2024-BHF-AM-23BF-Av8p', '2024-BHF-AM-23BF-Av18', '2024-BHF-AM-23BF-BONN', \
126
+ elif mb.lower() == "bhf23":
127
+ models = [
128
+ "2006-BHF-AM-Av18",
129
+ "2024-BHF-AM-23BF-Av18",
130
+ "2024-BHF-AM-23BF-BONN",
131
+ "2024-BHF-AM-23BF-CDBONN",
132
+ "2024-BHF-AM-23BF-NSC97a",
133
+ "2024-BHF-AM-23BF-NSC97b",
134
+ "2024-BHF-AM-23BF-NSC97c",
135
+ "2024-BHF-AM-23BF-NSC97d",
136
+ "2024-BHF-AM-23BF-NSC97e",
137
+ "2024-BHF-AM-23BF-NSC97f",
138
+ ]
139
+ # models = [ '2006-BHF-AM-Av18', '2024-BHF-AM-23BF-Av8p', '2024-BHF-AM-23BF-Av18', '2024-BHF-AM-23BF-BONN', \
100
140
  # '2024-BHF-AM-23BF-CDBONN', '2024-BHF-AM-23BF-NSC97a', '2024-BHF-AM-23BF-NSC97b', '2024-BHF-AM-23BF-NSC97c', \
101
141
  # '2024-BHF-AM-23BF-NSC97d', '2024-BHF-AM-23BF-NSC97e', '2024-BHF-AM-23BF-NSC97f', '2024-BHF-AM-23BF-SSCV14' ]
102
- elif mb.lower() == 'qmc':
103
- models = [ '2008-QMC-NM-swave', '2010-QMC-NM-AV4', '2009-DLQMC-NM', \
104
- '2013-QMC-NM', '2014-AFQMC-NM', '2016-QMC-NM', \
105
- '2018-QMC-NM', '2024-QMC-NM' ]
106
- elif mb.lower() == 'mbpt':
107
- models = [ '2016-MBPT-AM', '2019-MBPT-AM-L59', '2019-MBPT-AM-L69', '2020-MBPT-AM' ]
108
- # '2010-MBPT-NM' is removed because they do not provide e2a, only pressure
109
- elif mb.lower() == 'nleft':
110
- models = [ '2024-NLEFT-AM' ]
142
+ elif mb.lower() == "qmc":
143
+ models = [
144
+ "2008-QMC-NM-swave",
145
+ "2010-QMC-NM-AV4",
146
+ "2009-DLQMC-NM",
147
+ "2014-AFQMC-NM",
148
+ "2016-QMC-NM",
149
+ "2018-QMC-NM",
150
+ "2024-QMC-NM",
151
+ ]
152
+ elif mb.lower() == "mbpt":
153
+ models = [
154
+ "2013-MBPT-NM",
155
+ "2016-MBPT-AM",
156
+ "2019-MBPT-AM-L59",
157
+ "2019-MBPT-AM-L69",
158
+ "2020-MBPT-AM",
159
+ "2024-MBPT-AM-DN2LO-450",
160
+ "2024-MBPT-AM-DN2LO-500",
161
+ "2024-MBPT-AM-DN2LOgo-394",
162
+ "2024-MBPT-AM-DN2LOgo-450",
163
+ "2024-MBPT-AM-N2LOsat",
164
+ ]
165
+ elif mb.lower() == "scgf":
166
+ models = [
167
+ "2020-SCGF-AM-N3LO-414",
168
+ "2020-SCGF-AM-N3LO-450",
169
+ "2020-SCGF-AM-N3LO-500",
170
+ "2024-SCGF-AM-DN2LO-450",
171
+ "2024-SCGF-AM-DN2LO-500",
172
+ "2024-SCGF-AM-DN2LOgo-394",
173
+ "2024-SCGF-AM-DN2LOgo-450",
174
+ "2024-SCGF-AM-N2LOsat",
175
+ ]
176
+ # '2010-MBPT-NM' is removed because they do not provide e2a, only pressure
177
+ elif mb.lower() == "nleft":
178
+ models = ["2024-NLEFT-AM"]
179
+ elif mb.lower() == "cc":
180
+ models = [
181
+ "2024-CC-AM-DN2LO-450",
182
+ "2024-CC-AM-DN2LO-500",
183
+ "2024-CC-AM-DN2LOgo-394",
184
+ "2024-CC-AM-DN2LOgo-450",
185
+ "2024-CC-AM-N2LOsat",
186
+ ]
111
187
  #
112
- if nuda.env.verb: print('models available in the toolkit:',models)
188
+ if nuda.env.verb:
189
+ print("models available in the toolkit:", models)
113
190
  #
114
- models_lower = [ item.lower() for item in models ]
191
+ models_lower = [item.lower() for item in models]
115
192
  #
116
- if nuda.env.verb: print("\nExit micro_models_mb()")
193
+ if nuda.env.verb:
194
+ print("\nExit micro_models_mb()")
117
195
  #
118
196
  return models, models_lower
119
197
 
120
- def micro_models_mbs( mbs ):
198
+
199
+ def micro_models_mbs(mbs):
121
200
  #
122
- if nuda.env.verb: print("\nEnter micro_models_mbs()")
201
+ if nuda.env.verb:
202
+ print("\nEnter micro_models_mbs()")
123
203
  #
124
- #print('mbs:',mbs)
204
+ # print('mbs:',mbs)
125
205
  #
126
206
  models = []
127
207
  for mb in mbs:
128
- new_models, new_models_lower = micro_models_mb( mb )
129
- models.extend( new_models )
208
+ new_models, new_models_lower = micro_models_mb(mb)
209
+ models.extend(new_models)
130
210
  #
131
- if nuda.env.verb: print('models available in the toolkit:',models)
211
+ if nuda.env.verb:
212
+ print("models available in the toolkit:", models)
132
213
  #
133
- models_lower = [ item.lower() for item in models ]
214
+ models_lower = [item.lower() for item in models]
134
215
  #
135
- if nuda.env.verb: print("Exit micro_models_mbs()")
216
+ if nuda.env.verb:
217
+ print("Exit micro_models_mbs()")
136
218
  #
137
219
  return models, models_lower
138
220
 
221
+
139
222
  def micro_models():
140
223
  #
141
- if nuda.env.verb: print("\nEnter micro_models()")
224
+ if nuda.env.verb:
225
+ print("\nEnter micro_models()")
142
226
  #
143
227
  mbs, mbs_lower = micro_mbs()
144
- #print('mbs:',mbs)
145
- #
146
- models, models_lower = micro_models_mbs( mbs )
147
- #
148
- if nuda.env.verb: print("Exit micro_models()")
149
- #
150
- return models, models_lower
151
-
152
- def micro_models_old():
153
- """
154
- Return a list with the name of the models available in this toolkit and \
155
- print them all on the prompt. These models are the following ones: \
156
- '1981-VAR-AM-FP', '1998-VAR-AM-APR', '1998-VAR-AM-APR-fit', '2006-BHF-AM*', \
157
- '2012-AFDMC-NM-RES-1', '2012-AFDMC-NM-RES-2', '2012-AFDMC-NM-RES-3', '2012-AFDMC-NM-RES-4', \
158
- '2012-AFDMC-NM-RES-5', '2012-AFDMC-NM-RES-6', '2012-AFDMC-NM-RES-7', \
159
- '2012-AFDMC-NM-FIT-1', '2012-AFDMC-NM-FIT-2', '2012-AFDMC-NM-FIT-3', '2012-AFDMC-NM-FIT-4', \
160
- '2012-AFDMC-NM-FIT-5', '2012-AFDMC-NM-FIT-6', '2012-AFDMC-NM-FIT-7', \
161
- '2008-QMC-NM-swave', '2010-QMC-NM-AV4', '2009-DLQMC-NM', '2010-MBPT-NM', \
162
- '2013-QMC-NM', '2014-AFQMC-NM', '2016-QMC-NM', '2016-MBPT-AM', \
163
- '2018-QMC-NM', '2019-MBPT-AM-L59', '2019-MBPT-AM-L69', \
164
- '2020-MBPT-AM', '2022-AFDMC-NM', '2024-NLEFT-AM', \
165
- '2006-BHF-AM', \
166
- '2024-BHF-AM-2BF-Av8p', '2024-BHF-AM-2BF-Av18', '2024-BHF-AM-2BF-BONN', '2024-BHF-AM-2BF-CDBONN', \
167
- '2024-BHF-AM-2BF-NSC97a', '2024-BHF-AM-2BF-NSC97b', '2024-BHF-AM-2BF-NSC97c', '2024-BHF-AM-2BF-NSC97d', \
168
- '2024-BHF-AM-2BF-NSC97e', '2024-BHF-AM-2BF-NSC97f', '2024-BHF-AM-2BF-SSCV14',\
169
- '2024-BHF-AM-23BF-Av8p', '2024-BHF-AM-23BF-Av18', '2024-BHF-AM-23BF-BONN', '2024-BHF-AM-23BF-CDBONN', \
170
- '2024-BHF-AM-23BF-NSC97a', '2024-BHF-AM-23BF-NSC97b', '2024-BHF-AM-23BF-NSC97c', '2024-BHF-AM-23BF-NSC97d', \
171
- '2024-BHF-AM-23BF-NSC97e', '2024-BHF-AM-23BF-NSC97f', '2024-BHF-AM-23BF-SSCV14',\
172
- '2024-BHF-AM-23BFmicro-Av18', '2024-BHF-AM-23BFmicro-BONNB', '2024-BHF-AM-23BFmicro-NSC93',\
173
- '2024-QMC-NM'
174
-
175
- :return: The list of models.
176
- :rtype: list[str].
177
- """
178
- #
179
- if nuda.env.verb: print("\nEnter micro_models_old()")
180
- #
181
- models = [ '1981-VAR-AM-FP', '1998-VAR-AM-APR', '1998-VAR-AM-APR-fit', \
182
- '2008-QMC-NM-swave', '2010-QMC-NM-AV4', '2009-DLQMC-NM', '2010-MBPT-NM', \
183
- '2012-AFDMC-NM-RES-1', '2012-AFDMC-NM-RES-2', '2012-AFDMC-NM-RES-3', '2012-AFDMC-NM-RES-4', \
184
- '2012-AFDMC-NM-RES-5', '2012-AFDMC-NM-RES-6', '2012-AFDMC-NM-RES-7', \
185
- '2012-AFDMC-NM-FIT-1', '2012-AFDMC-NM-FIT-2', '2012-AFDMC-NM-FIT-3', '2012-AFDMC-NM-FIT-4', \
186
- '2012-AFDMC-NM-FIT-5', '2012-AFDMC-NM-FIT-6', '2012-AFDMC-NM-FIT-7',
187
- '2013-QMC-NM', '2014-AFQMC-NM', '2016-QMC-NM', '2016-MBPT-AM', \
188
- '2018-QMC-NM', '2019-MBPT-AM-L59', '2019-MBPT-AM-L69', \
189
- '2020-MBPT-AM', '2022-AFDMC-NM', '2024-NLEFT-AM', \
190
- '2006-BHF-AM-Av18', \
191
- '2024-BHF-AM-2BF-Av8p', '2024-BHF-AM-2BF-Av18', '2024-BHF-AM-2BF-BONN', '2024-BHF-AM-2BF-CDBONN', \
192
- '2024-BHF-AM-2BF-NSC97a', '2024-BHF-AM-2BF-NSC97b', '2024-BHF-AM-2BF-NSC97c', '2024-BHF-AM-2BF-NSC97d', \
193
- '2024-BHF-AM-2BF-NSC97e', '2024-BHF-AM-2BF-NSC97f', '2024-BHF-AM-2BF-SSCV14',\
194
- '2024-BHF-AM-23BF-Av8p', '2024-BHF-AM-23BF-Av18', '2024-BHF-AM-23BF-BONN', '2024-BHF-AM-23BF-CDBONN', \
195
- '2024-BHF-AM-23BF-NSC97a', '2024-BHF-AM-23BF-NSC97b', '2024-BHF-AM-23BF-NSC97c', '2024-BHF-AM-23BF-NSC97d', \
196
- '2024-BHF-AM-23BF-NSC97e', '2024-BHF-AM-23BF-NSC97f', '2024-BHF-AM-23BF-SSCV14', '2024-QMC-NM' ]
228
+ # print('mbs:',mbs)
197
229
  #
198
- if nuda.env.verb: print('models available in the toolkit:',models)
199
- models_lower = [ item.lower() for item in models ]
230
+ models, models_lower = micro_models_mbs(mbs)
200
231
  #
201
- if nuda.env.verb: print("Exit micro_models()")
232
+ if nuda.env.verb:
233
+ print("Exit micro_models()")
202
234
  #
203
235
  return models, models_lower
204
236
 
205
- def micro_models_mb_matter( mb, matter ):
237
+ def micro_models_mb_matter(mb, matter):
206
238
  """
207
239
  matter can be 'sm', 'SM' or 'nm', 'NM'
208
240
  """
209
241
  #
210
- if nuda.env.verb: print("\nEnter micro_models_mb_matter()")
211
- #
212
- print('For mb (in '+matter+'):',mb)
213
- #
214
- models, models_lower = micro_models_mb( mb )
215
- #
216
- models2 = []
217
- for j,model in enumerate(models):
218
- if matter.upper() in model or 'AM' in model:
219
- models2.append( model )
220
- #
221
- print('models2:',models2)
222
- models2_lower = [ item.lower() for item in models2 ]
223
- #
224
- return models2, models2_lower
225
-
226
- def micro_models_mb_SM_old( mb ):
227
- """
228
- """
229
- #
230
- if nuda.env.verb: print("\nEnter micro_models_mb_SM()")
231
- #
232
- print('For mb (in SM):',mb)
233
- #
234
- models, models_lower = micro_models()
235
- #
236
- models2 = []
237
- for j,model in enumerate(models):
238
- if mb in model and '2BF' not in model and ( 'SM' in model or 'AM' in model ):
239
- models2.append( model )
240
- #print(' models:',model)
241
- #
242
- print('models2:',models2)
243
- models2_lower = [ item.lower() for item in models2 ]
244
- #
245
- return models2, models2_lower
246
-
247
- def micro_models_mb_NM_old( mb ):
248
- """
249
- """
250
- #
251
- if nuda.env.verb: print("\nEnter micro_models_mb_NM()")
242
+ if nuda.env.verb:
243
+ print("\nEnter micro_models_mb_matter()")
252
244
  #
253
- print('For mb (in NM):',mb)
245
+ print("For mb (in " + matter + "):", mb)
254
246
  #
255
- models, models_lower = micro_models()
247
+ models, models_lower = micro_models_mb(mb)
256
248
  #
257
249
  models2 = []
258
- for j,model in enumerate(models):
259
- if mb in model and '2BF' not in model and ( 'NM' in model or 'AM' in model ):
260
- models2.append( model )
261
- #print(' models:',model)
250
+ for j, model in enumerate(models):
251
+ if matter.upper() in model or "AM" in model:
252
+ models2.append(model)
262
253
  #
263
- print('models2:',models2)
264
- models2_lower = [ item.lower() for item in models2 ]
254
+ print("models2:", models2)
255
+ models2_lower = [item.lower() for item in models2]
265
256
  #
266
257
  return models2, models2_lower
267
258
 
268
259
  # Define functions for APRfit
269
260
 
270
- def APRfit_compute( n, x ):
271
- p53 = 5.0/3.0
272
- p83 = 8.0/3.0
273
- asy = 1.0-2.0*x
261
+ def APRfit_compute(n, x):
262
+ p53 = 5.0 / 3.0
263
+ p83 = 8.0 / 3.0
264
+ asy = 1.0 - 2.0 * x
274
265
  n2 = n * n
275
- G = ( 3.0*np.pi**2 )**p53 / ( 5.0*np.pi**2 )
276
- Hk = G * nuda.cst.hbc**2 / ( 2.0 * nuda.cst.mnuc2_approx ) * n**p53 * ( (1 - x)**p53 + x**p53 )
277
- Hm = G * ( p3 * ( (1-x)**p53 + x**p53 ) + p5 * ( (1-x)**p83 + x**p83 ) ) * n**p83 * np.exp( -p4*n )
278
- g1L = -n2 * ( p1 + p2*n + p6*n2 + (p10 + p11*n) * np.exp( -(p9**2)*n2 ) )
279
- g2L = -n2 * ( p12/n + p7 + p8*n + p13*np.exp( -(p9**2)*n2 ) )
280
- g1H = g1L - n2*( p17*(n-p19) + p21*(n-p19)**2)*np.exp( p18*(n-p19) )
281
- g2H = g2L - n2*( p15*(n-p20) + p14*(n-p20)**2)*np.exp( p16*(n-p20) )
282
- HdL = g1L * (1.0-asy**2) + g2L * asy**2
283
- HdH = g1H * (1.0-asy**2) + g2H * asy**2
266
+ G = (3.0 * np.pi**2) ** p53 / (5.0 * np.pi**2)
267
+ Hk = (
268
+ G
269
+ * nuda.cst.hbc**2
270
+ / (2.0 * nuda.cst.mnuc2_approx)
271
+ * n**p53
272
+ * ((1 - x) ** p53 + x**p53)
273
+ )
274
+ Hm = (
275
+ G
276
+ * (p3 * ((1 - x) ** p53 + x**p53) + p5 * ((1 - x) ** p83 + x**p83))
277
+ * n**p83
278
+ * np.exp(-p4 * n)
279
+ )
280
+ g1L = -n2 * (p1 + p2 * n + p6 * n2 + (p10 + p11 * n) * np.exp(-(p9**2) * n2))
281
+ g2L = -n2 * (p12 / n + p7 + p8 * n + p13 * np.exp(-(p9**2) * n2))
282
+ g1H = g1L - n2 * (p17 * (n - p19) + p21 * (n - p19) ** 2) * np.exp(p18 * (n - p19))
283
+ g2H = g2L - n2 * (p15 * (n - p20) + p14 * (n - p20) ** 2) * np.exp(p16 * (n - p20))
284
+ HdL = g1L * (1.0 - asy**2) + g2L * asy**2
285
+ HdH = g1H * (1.0 - asy**2) + g2H * asy**2
284
286
  #
285
287
  HL = Hk + Hm + HdL
286
288
  HH = Hk + Hm + HdH
287
289
  #
288
- nt = 0.32-0.12*(1-2*x)**2 # transition density in fm^-3
289
- #print('nt:',nt)
290
- e2v = np.zeros( len(n) )
291
- for ind,den in enumerate(n):
290
+ nt = 0.32 - 0.12 * (1 - 2 * x) ** 2 # transition density in fm^-3
291
+ eps = np.zeros(len(n))
292
+ for ind, den in enumerate(n):
292
293
  if den < nt:
293
- e2v[ind] = HL[ind]
294
+ eps[ind] = HL[ind]
294
295
  indref = ind
295
- #print(ind,den,HL[ind],' low')
296
296
  else:
297
- e2v[ind] = HH[ind]
298
- #print(ind,den,HH[ind],' high')
299
- #print('indref:',indref,'/',len(n))
300
- #imin = max( 0, indref-2 )
301
- #imax = min( len(n), indref+3 )
302
- #for ind in range(imin,imax+1):
303
- #xh = ( n[ind] - n[imin] ) / ( n[imax] - n[imin] )
304
- #print('ind:',ind,' xh',xh)
305
- #e2v[ind] = (1-xh)*e2v[imin] + xh*e2v[imax]
306
- return e2v
297
+ eps[ind] = HH[ind]
298
+ return eps
307
299
 
308
- def func_GCR_e2a(den,a,alfa,b,beta):
309
- return a * (den/nuda.cst.nsat)**alfa + b * (den/nuda.cst.nsat)**beta
300
+ def func_GCR_e2a(den, a, alfa, b, beta):
301
+ return a * (den / nuda.cst.nsat) ** alfa + b * (den / nuda.cst.nsat) ** beta
310
302
 
311
- def func_GCR_pre(den,a,alfa,b,beta):
312
- return den * ( a * alfa * (den/nuda.cst.nsat)**alfa + b * beta * (den/nuda.cst.nsat)**beta )
303
+ def func_GCR_pre(den, a, alfa, b, beta):
304
+ return den * (
305
+ a * alfa * (den / nuda.cst.nsat) ** alfa
306
+ + b * beta * (den / nuda.cst.nsat) ** beta
307
+ )
313
308
 
314
- def func_GCR_cs2(den,a,alfa,b,beta):
315
- dp_dn = a * alfa * ( alfa + 1.0 ) * (den/nuda.cst.nsat)**alfa + b * beta * ( beta + 1.0 ) * (den/nuda.cst.nsat)**beta
316
- enth = nuda.cst.mnuc2 + func_GCR_e2a(den,a,alfa,b,beta) + func_GCR_pre(den,a,alfa,b,beta) / den
317
- return dp_dn / enth
309
+ def func_GCR_cs2(den, a, alfa, b, beta):
310
+ dp_dn = (
311
+ a * alfa * (alfa + 1.0) * (den / nuda.cst.nsat) ** alfa
312
+ + b * beta * (beta + 1.0) * (den / nuda.cst.nsat) ** beta
313
+ )
314
+ h2a = (
315
+ nuda.cst.mnuc2
316
+ + func_GCR_e2a(den, a, alfa, b, beta)
317
+ + func_GCR_pre(den, a, alfa, b, beta) / den
318
+ )
319
+ return dp_dn / h2a
318
320
 
319
- def func_e2a_NLEFT2024( kfn, b, c, d ):
321
+ def func_e2a_NLEFT2024(kfn, b, c, d):
320
322
  a = 1.0
321
- func = a + b*kfn + c*kfn**2 + d*kfn**3
322
- return func * nuda.effg_nr( kfn )
323
+ func = a + b * kfn + c * kfn**2 + d * kfn**3
324
+ return func * nuda.effg_nr(kfn)
323
325
 
324
- def func_pre_NLEFT2024( kfn, den, b, c, d ):
325
- func = nuda.cst.two + nuda.cst.three * b * kfn + \
326
- nuda.cst.four * c * kfn**2 + nuda.cst.five * d * kfn**3
327
- return func * nuda.cst.third * den * nuda.effg_nr( kfn )
326
+ def func_pre_NLEFT2024(kfn, den, b, c, d):
327
+ func = (
328
+ nuda.cst.two
329
+ + nuda.cst.three * b * kfn
330
+ + nuda.cst.four * c * kfn**2
331
+ + nuda.cst.five * d * kfn**3
332
+ )
333
+ return func * nuda.cst.third * den * nuda.effg_nr(kfn)
328
334
 
329
- def func_dpredn_NLEFT2024( kfn, den, b, c, d ):
335
+ def func_dpredn_NLEFT2024(kfn, den, b, c, d):
330
336
  func = nuda.cst.four + 9.0 * b * kfn + 20.0 * c * kfn**2 + 25.0 * d * kfn**3
331
- return func_pre_NLEFT2024( kfn, den, b, c, d ) / den + func * nuda.effg_nr( kfn ) / 9.0
337
+ return func_pre_NLEFT2024(kfn, den, b, c, d) / den + func * nuda.effg_nr(kfn) / 9.0
332
338
 
333
- class setupMicro():
339
+
340
+ class setupMicro:
334
341
  """
335
342
  Instantiate the object with microscopic results choosen \
336
343
  by the toolkit practitioner.
@@ -343,7 +350,7 @@ class setupMicro():
343
350
  '2012-AFDMC-NM-RES-5', '2012-AFDMC-NM-RES-6', '2012-AFDMC-NM-RES-7', \
344
351
  '2012-AFDMC-NM-FIT-1', '2012-AFDMC-NM-FIT-2', '2012-AFDMC-NM-FIT-3', '2012-AFDMC-NM-FIT-4', \
345
352
  '2012-AFDMC-NM-FIT-5', '2012-AFDMC-NM-FIT-6', '2012-AFDMC-NM-FIT-7', \
346
- '2013-QMC-NM', '2014-AFQMC-NM', '2016-QMC-NM', '2016-MBPT-AM', \
353
+ '2013-MBPT-NM', '2014-AFQMC-NM', '2016-QMC-NM', '2016-MBPT-AM', \
347
354
  '2018-QMC-NM', '2019-MBPT-AM-L59', '2019-MBPT-AM-L69', \
348
355
  '2020-MBPT-AM', '2022-AFDMC-NM', '2024-NLEFT-AM', \
349
356
  '2024-BHF-AM-2BF-Av8p', '2024-BHF-AM-2BF-Av18', '2024-BHF-AM-2BF-BONN', '2024-BHF-AM-2BF-CDBONN', \
@@ -358,8 +365,11 @@ class setupMicro():
358
365
 
359
366
  **Attributes:**
360
367
  """
368
+
361
369
  #
362
- def __init__( self, model = '1998-VAR-AM-APR', var1 = np.linspace(0.01,0.4,20), var2 = 0.0 ):
370
+ def __init__(
371
+ self, model="1998-VAR-AM-APR", var1=np.linspace(0.01, 0.4, 20), var2=0.0
372
+ ):
363
373
  """
364
374
  Parameters
365
375
  ----------
@@ -369,297 +379,381 @@ class setupMicro():
369
379
  var1 = np.array([0.1,0.15,0.16,0.17,0.2,0.25])
370
380
  """
371
381
  #
372
- if nuda.env.verb: print("Enter setupMicro()")
382
+ if nuda.env.verb:
383
+ print("Enter setupMicro()")
373
384
  #
374
385
  #: Attribute model.
375
386
  self.model = model
376
- if nuda.env.verb: print("model:",model)
377
- print("model -> ",model)
387
+ if nuda.env.verb:
388
+ print("model:", model)
389
+ print("model -> ", model)
378
390
  #
379
- self = setupMicro.init_self( self )
391
+ self = setupMicro.init_self(self)
380
392
  #
381
393
  # read var and define den, asy and xpr:
382
- self.den = var1[:] # density n_b=n_n+n_p
383
- self.asy = var2 # asymmetry parameter = (n_n-n_p)/n_b
384
- self.kfn = nuda.kf_n( (1.0+self.asy) / 2.0 * self.den )
385
- self.xpr = ( 1.0 - self.asy ) / 2.0 # proton fraction = n_p/n_b
386
- #print('den:',self.den)
387
- #print('asy:',self.asy)
388
- #print('xpr:',self.xpr)
394
+ self.den = var1[:] # density n_b=n_n+n_p
395
+ self.asy = var2 # asymmetry parameter = (n_n-n_p)/n_b
396
+ self.kfn = nuda.kf_n((1.0 + self.asy) / 2.0 * self.den)
397
+ self.xpr = (1.0 - self.asy) / 2.0 # proton fraction = n_p/n_b
398
+ # print('den:',self.den)
399
+ # print('asy:',self.asy)
400
+ # print('xpr:',self.xpr)
389
401
  #
390
402
  models, models_lower = micro_models()
391
403
  #
392
404
  if model.lower() not in models_lower:
393
- print('setup_micro: The model name ',model,' is not in the list of models.')
394
- print('setup_micro: list of models:',models)
395
- print('setup_micro: -- Exit the code --')
405
+ print(
406
+ "setup_micro: The model name ", model, " is not in the list of models."
407
+ )
408
+ print("setup_micro: list of models:", models)
409
+ print("setup_micro: -- Exit the code --")
396
410
  exit()
397
411
  #
398
412
  # ==============================
399
413
  # Read files associated to model
400
414
  # ==============================
401
415
  #
402
- if model.lower() == '1981-var-am-fp':
416
+ self.nm_rmass = nuda.cst.mnc2
417
+ self.sm_rmass = 0.5 * (nuda.cst.mnc2 + nuda.cst.mpc2)
418
+ self.rmass = (1.0 - self.xpr) * nuda.cst.mnc2 + self.xpr * nuda.cst.mpc2
419
+ #
420
+ if model.lower() == "1981-var-am-fp":
403
421
  #
404
422
  self.flag_nm = True
405
423
  self.flag_sm = True
406
424
  self.flag_kf = True
407
425
  self.flag_den = False
408
426
  #
409
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/1981-VAR-NM-FP.dat')
410
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/1981-VAR-SM-FP.dat')
411
- if nuda.env.verb: print('Reads file:',file_in1)
412
- if nuda.env.verb: print('Reads file:',file_in2)
413
- self.ref = 'Friedman and Pandharipande, Nucl. Phys. A. 361, 502 (1981)'
427
+ file_in1 = os.path.join( nuda.param.path_data, "matter/micro/1981-VAR-NM-FP.dat" )
428
+ file_in2 = os.path.join( nuda.param.path_data, "matter/micro/1981-VAR-SM-FP.dat" )
429
+ if nuda.env.verb: print("Reads file:", file_in1)
430
+ if nuda.env.verb: print("Reads file:", file_in2)
431
+ self.ref = "Friedman and Pandharipande, Nucl. Phys. A. 361, 502 (1981)"
414
432
  self.note = "write here notes about this EOS."
415
- self.label = 'FP-1981'
416
- self.marker = 'o'
433
+ self.label = "FP-1981"
434
+ self.marker = "o"
417
435
  self.every = 1
418
436
  self.e_err = False
419
437
  self.p_err = False
420
- self.linestyle = 'solid'
421
- self.nm_den, self.nm_e2a = np.loadtxt( file_in1, usecols=(0,1), unpack = True )
422
- self.sm_den, self.sm_e2a = np.loadtxt( file_in2, usecols=(0,1), unpack = True )
423
- self.nm_e2v = self.nm_e2a * self.nm_den
424
- self.sm_e2v = self.sm_e2a * self.sm_den
438
+ self.cs2_err = False
439
+ self.linestyle = "solid"
440
+ self.nm_den, self.nm_e2a_int = np.loadtxt( file_in1, usecols=(0, 1), unpack=True )
441
+ self.sm_den, self.sm_e2a_int = np.loadtxt( file_in2, usecols=(0, 1), unpack=True )
442
+ self.nm_e2a = self.nm_rmass + self.nm_e2a_int
443
+ self.sm_e2a = self.sm_rmass + self.sm_e2a_int
444
+ self.nm_eps = self.nm_e2a * self.nm_den
445
+ self.sm_eps = self.sm_e2a * self.sm_den
425
446
  self.nm_kfn = nuda.kf_n( self.nm_den )
426
447
  self.sm_kfn = nuda.kf_n( nuda.cst.half * self.sm_den )
427
- self.nm_e2a_err = np.abs( uncertainty_stat(self.nm_den,err='MBPT') * self.nm_e2a )
428
- self.sm_e2a_err = np.abs( uncertainty_stat(self.sm_den,err='MBPT') * self.sm_e2a )
429
- self.nm_e2v_err = self.nm_e2a_err * self.nm_den
430
- self.sm_e2v_err = self.sm_e2a_err * self.sm_den
448
+ self.nm_e2a_err = np.abs( uncertainty_stat(self.nm_den, err="MBPT") * self.nm_e2a_int )
449
+ self.sm_e2a_err = np.abs( uncertainty_stat(self.sm_den, err="MBPT") * self.sm_e2a_int )
450
+ self.nm_eps_err = self.nm_e2a_err * self.nm_den
451
+ self.sm_eps_err = self.sm_e2a_err * self.sm_den
431
452
  #
432
- elif model.lower() == '1998-var-am-apr':
453
+ elif model.lower() == "1998-var-am-apr":
433
454
  #
434
455
  self.flag_nm = True
435
456
  self.flag_sm = True
436
457
  self.flag_kf = False
437
458
  self.flag_den = True
438
459
  #
439
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/1998-VAR-NM-APR.dat')
440
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/1998-VAR-SM-APR.dat')
441
- if nuda.env.verb: print('Reads file:',file_in1)
442
- if nuda.env.verb: print('Reads file:',file_in2)
443
- self.ref = 'Akmal, Pandharipande and Ravenhall, Phys. Rev. C 58, 1804 (1998)'
460
+ file_in1 = os.path.join( nuda.param.path_data, "matter/micro/1998-VAR-NM-APR.dat" )
461
+ file_in2 = os.path.join( nuda.param.path_data, "matter/micro/1998-VAR-SM-APR.dat" )
462
+ if nuda.env.verb: print("Reads file:", file_in1)
463
+ if nuda.env.verb: print("Reads file:", file_in2)
464
+ self.ref = ( "Akmal, Pandharipande and Ravenhall, Phys. Rev. C 58, 1804 (1998)" )
444
465
  self.note = "write here notes about this EOS."
445
- self.label = 'APR-1998'
446
- self.marker = '^'
466
+ self.label = "APR-1998"
467
+ self.marker = "^"
447
468
  self.every = 1
448
469
  self.e_err = False
449
470
  self.p_err = False
450
- self.linestyle = 'solid'
451
- self.nm_den, self.nm_e2a = np.loadtxt( file_in1, usecols=(0,1), unpack = True )
452
- self.sm_den, self.sm_e2a = np.loadtxt( file_in2, usecols=(0,1), unpack = True )
453
- self.nm_e2v = self.nm_e2a * self.nm_den
454
- self.sm_e2v = self.sm_e2a * self.sm_den
455
- self.nm_kfn = nuda.kf_n( self.nm_den )
456
- self.sm_kfn = nuda.kf_n( nuda.cst.half * self.sm_den )
457
- self.nm_e2a_err = np.abs( uncertainty_stat(self.nm_den,err='MBPT') * self.nm_e2a )
458
- self.sm_e2a_err = np.abs( uncertainty_stat(self.sm_den,err='MBPT') * self.sm_e2a )
459
- self.nm_e2v_err = self.nm_e2a_err * self.nm_den
460
- self.sm_e2v_err = self.sm_e2a_err * self.sm_den
461
- #
462
- elif model.lower() == '1998-var-am-apr-fit':
471
+ self.cs2_err = False
472
+ self.linestyle = "solid"
473
+ self.nm_den, self.nm_e2a_int = np.loadtxt( file_in1, usecols=(0, 1), unpack=True )
474
+ self.sm_den, self.sm_e2a_int = np.loadtxt( file_in2, usecols=(0, 1), unpack=True )
475
+ self.nm_e2a = self.nm_rmass + self.nm_e2a_int
476
+ self.sm_e2a = self.sm_rmass + self.sm_e2a_int
477
+ self.nm_eps = self.nm_e2a * self.nm_den
478
+ self.sm_eps = self.sm_e2a * self.sm_den
479
+ self.nm_kfn = nuda.kf_n(self.nm_den)
480
+ self.sm_kfn = nuda.kf_n(nuda.cst.half * self.sm_den)
481
+ self.nm_e2a_err = np.abs( uncertainty_stat(self.nm_den, err="MBPT") * self.nm_e2a_int )
482
+ self.sm_e2a_err = np.abs( uncertainty_stat(self.sm_den, err="MBPT") * self.sm_e2a_int )
483
+ self.nm_eps_err = self.nm_e2a_err * self.nm_den
484
+ self.sm_eps_err = self.sm_e2a_err * self.sm_den
485
+ #
486
+ elif model.lower() == "1998-var-am-apr-fit":
463
487
  #
464
488
  self.flag_nm = True
465
489
  self.flag_sm = True
466
490
  self.flag_kf = False
467
491
  self.flag_den = False
468
492
  #
469
- self.ref = 'Akmal, Pandharipande and Ravenhall, Phys. Rev. C 58, 1804 (1998)'
493
+ self.ref = ( "Akmal, Pandharipande and Ravenhall, Phys. Rev. C 58, 1804 (1998)" )
470
494
  self.note = "Use interpolation functions suggested in APR paper."
471
- self.label = 'APR-1998-Fit'
472
- self.marker = '.'
495
+ self.label = "APR-1998-Fit"
496
+ self.marker = "."
473
497
  self.every = 1
474
498
  self.e_err = False
475
499
  self.p_err = False
476
- self.linestyle = 'dashed'
500
+ self.cs2_err = False
501
+ self.linestyle = "dashed"
477
502
  # Define constants for APRfit and for A18+dv+UIX*
478
503
  global p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21
479
- ( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21 ) = \
480
- ( 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 )
504
+ (
505
+ p1,
506
+ p2,
507
+ p3,
508
+ p4,
509
+ p5,
510
+ p6,
511
+ p7,
512
+ p8,
513
+ p9,
514
+ p10,
515
+ p11,
516
+ p12,
517
+ p13,
518
+ p14,
519
+ p15,
520
+ p16,
521
+ p17,
522
+ p18,
523
+ p19,
524
+ p20,
525
+ p21,
526
+ ) = (
527
+ 337.2,
528
+ -382.0,
529
+ 89.8,
530
+ 0.457,
531
+ -59.0,
532
+ -19.1,
533
+ 214.6,
534
+ -384.0,
535
+ 6.4,
536
+ 69.0,
537
+ -33.0,
538
+ 0.35,
539
+ 0.0,
540
+ 0.0,
541
+ 287.0,
542
+ -1.54,
543
+ 175.0,
544
+ -1.45,
545
+ 0.32,
546
+ 0.195,
547
+ 0.0,
548
+ )
481
549
  #
482
- # density
483
- #self.nm_den = self.den
484
- #self.sm_den = self.den
485
550
  # energy per unit volume
486
- self.e2v = APRfit_compute( self.den, self.xpr )
551
+ self.eps_int = APRfit_compute( self.den, self.xpr )
487
552
  # energy per particle
488
- self.e2a = self.e2v / self.den
489
- self.e2a_err = np.abs( uncertainty_stat(self.den,err='MBPT') * self.e2a )
490
- self.e2v_err = self.e2a_err * self.den
553
+ self.e2a_int = self.eps_int / self.den
554
+ self.e2a = self.rmass + self.e2a_int
555
+ self.eps = self.e2a * self.den
556
+ self.e2a_err = np.abs( uncertainty_stat(self.den, err="MBPT") * self.e2a_int )
557
+ self.eps_err = self.e2a_err * self.den
491
558
  # pressure as the first derivative of E/A
492
- cs_e2a = CubicSpline( self.den, self.e2a )
493
- #pre = n**2 * np.gradient( e2a, n)
559
+ cs_e2a = CubicSpline( self.den, self.e2a_int )
560
+ # pre = n**2 * np.gradient( e2a, n)
494
561
  self.pre = self.den**2 * cs_e2a( self.den, 1 )
495
562
  # chemical potential
496
- self.chempot = ( self.e2v + self.pre ) / self.den
563
+ #self.chempot = ( self.eps + self.pre ) / self.den
497
564
  # enthalpy
498
- self.h2a = nuda.cst.mnuc2 + self.chempot
565
+ self.h2a = self.e2a + self.pre / self.den
499
566
  # sound speed
500
567
  cs_pre = CubicSpline( self.den, self.pre )
501
568
  self.cs2 = cs_pre( self.den, 1 ) / self.h2a
502
569
  #
503
- elif model.lower() == '2006-bhf-am-av18':
570
+ elif model.lower() == "2006-bhf-am-av18":
504
571
  #
505
572
  self.flag_nm = True
506
573
  self.flag_sm = True
507
574
  self.flag_kf = False
508
- self.flag_den = False
575
+ self.flag_den = True
509
576
  #
510
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2006-BHF/2006-BHF-Av18-E2A-NM.dat')
511
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2006-BHF/2006-BHF-Av18-E2A-SM.dat')
512
- if nuda.env.verb: print('Reads file:',file_in1)
513
- if nuda.env.verb: print('Reads file:',file_in2)
514
- self.ref = 'L.G. Cao, U. Lombardo, C.W. Shen, N.V. Giai, Phys. Rev. C 73, 014313 (2006)'
577
+ file_in1 = os.path.join( nuda.param.path_data, "matter/micro/2006-BHF/2006-BHF-Av18-E2A-NM.dat" )
578
+ file_in2 = os.path.join( nuda.param.path_data, "matter/micro/2006-BHF/2006-BHF-Av18-E2A-SM.dat" )
579
+ if nuda.env.verb: print("Reads file:", file_in1)
580
+ if nuda.env.verb: print("Reads file:", file_in2)
581
+ self.ref = "L.G. Cao, U. Lombardo, C.W. Shen, N.V. Giai, Phys. Rev. C 73, 014313 (2006)"
515
582
  self.note = ""
516
- self.label = 'BHF-2006-23BF-Av18'
517
- self.marker = 'o'
583
+ self.label = "BHF-2006-23BF-Av18"
584
+ self.marker = "o"
518
585
  self.every = 1
519
- self.linestyle = 'solid'
586
+ self.linestyle = "solid"
520
587
  self.e_err = False
521
588
  self.p_err = False
589
+ self.cs2_err = False
522
590
  #
523
- self.nm_den, self.nm_e2a \
524
- = np.loadtxt( file_in1, usecols=(0,1), unpack = True )
525
- self.nm_kfn = nuda.kf_n( self.nm_den )
526
- self.nm_e2a_err = np.abs( uncertainty_stat(self.nm_den,err='MBPT') * self.nm_e2a )
527
- self.nm_e2v = self.nm_e2a * self.nm_den
528
- self.nm_e2v_err = self.nm_e2a_err * self.nm_den
591
+ self.nm_den, self.nm_e2a_int = np.loadtxt( file_in1, usecols=(0, 1), unpack=True )
592
+ self.nm_kfn = nuda.kf_n(self.nm_den)
593
+ self.nm_e2a = self.nm_rmass + self.nm_e2a_int
594
+ self.nm_e2a_err = np.abs( uncertainty_stat(self.nm_den, err="MBPT") * self.nm_e2a_int )
595
+ self.nm_eps = self.nm_e2a * self.nm_den
596
+ self.nm_eps_err = self.nm_e2a_err * self.nm_den
529
597
  #
530
- self.sm_den, self.sm_e2a \
531
- = np.loadtxt( file_in2, usecols=(0,1), unpack = True )
532
- self.sm_e2a_err = np.abs( uncertainty_stat(self.sm_den,err='MBPT') * self.sm_e2a )
533
- self.sm_kfn = nuda.kf_n( nuda.cst.half * self.sm_den )
534
- self.sm_e2v = self.sm_e2a * self.sm_den
535
- self.sm_e2v_err = self.sm_e2a_err * self.sm_den
598
+ self.sm_den, self.sm_e2a_int = np.loadtxt( file_in2, usecols=(0, 1), unpack=True )
599
+ self.sm_kfn = nuda.kf_n(nuda.cst.half * self.sm_den)
600
+ self.sm_e2a = self.sm_rmass + self.sm_e2a_int
601
+ self.sm_e2a_err = np.abs( uncertainty_stat(self.sm_den, err="MBPT") * self.sm_e2a_int )
602
+ self.sm_eps = self.sm_e2a * self.sm_den
603
+ self.sm_eps_err = self.sm_e2a_err * self.sm_den
536
604
  #
537
- elif model.lower() == '2008-qmc-nm-swave':
605
+ elif model.lower() == "2008-qmc-nm-swave":
538
606
  #
539
607
  self.flag_nm = True
540
608
  self.flag_sm = False
541
609
  self.flag_kf = True
542
610
  self.flag_den = False
543
611
  #
544
- file_in = os.path.join(nuda.param.path_data,'matter/micro/2008-QMC-NM-swave.dat')
545
- if nuda.env.verb: print('Reads file:',file_in)
546
- self.ref = 'A. Gezerlis and J. Carlson PRC 81, 025803 (2010)'
612
+ file_in = os.path.join(
613
+ nuda.param.path_data, "matter/micro/2008-QMC-NM-swave.dat"
614
+ )
615
+ if nuda.env.verb:
616
+ print("Reads file:", file_in)
617
+ self.ref = "A. Gezerlis and J. Carlson PRC 81, 025803 (2010)"
547
618
  self.note = ""
548
- self.label = 'QMC-swave-2008'
549
- self.marker = 'o'
619
+ self.label = "QMC-swave-2008"
620
+ self.marker = "o"
550
621
  self.every = 1
551
- self.linestyle = 'solid'
622
+ self.linestyle = "solid"
552
623
  self.e_err = True
553
624
  self.p_err = False
554
- self.nm_kfn, gap2ef, gap2ef_err, e2effg, e2effg_err \
555
- = np.loadtxt( file_in, usecols=(0,1,2,3,4), unpack = True )
556
- self.nm_den = nuda.den_n( self.nm_kfn )
557
- self.nm_e2a = e2effg * nuda.effg_nr( self.nm_kfn )
558
- self.nm_e2a_err = e2effg_err * nuda.effg_nr( self.nm_kfn )
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-afdmc-nm':
625
+ self.cs2_err = False
626
+ self.nm_kfn, gap2ef, gap2ef_err, e2effg, e2effg_err = np.loadtxt(
627
+ file_in, usecols=(0, 1, 2, 3, 4), unpack=True
628
+ )
629
+ self.nm_den = nuda.den_n(self.nm_kfn)
630
+ self.nm_e2a_int = e2effg * nuda.effg_nr(self.nm_kfn)
631
+ self.nm_e2a = self.nm_rmass + self.nm_e2a_int
632
+ self.nm_e2a_err = e2effg_err * nuda.effg_nr(self.nm_kfn)
633
+ self.nm_eps = self.nm_e2a * self.nm_den
634
+ self.nm_eps_err = self.nm_e2a_err * self.nm_den
635
+ #
636
+ elif model.lower() == "2009-afdmc-nm":
563
637
  #
564
638
  self.flag_nm = True
565
639
  self.flag_sm = False
566
640
  self.flag_kf = True
567
641
  self.flag_den = False
568
642
  #
569
- file_in = os.path.join(nuda.param.path_data,'matter/micro/2009-AFDMC-NM.dat')
570
- if nuda.env.verb: print('Reads file:',file_in)
571
- self.ref = 'S. Gandolfi, A.Y. Illarionov, F. Pederiva, K.E. Schmidt, S. Fantoni, Phys. Rev. C 80, 045802 (2009).'
643
+ file_in = os.path.join(
644
+ nuda.param.path_data, "matter/micro/2009-AFDMC-NM.dat"
645
+ )
646
+ if nuda.env.verb:
647
+ print("Reads file:", file_in)
648
+ self.ref = "S. Gandolfi, A.Y. Illarionov, F. Pederiva, K.E. Schmidt, S. Fantoni, Phys. Rev. C 80, 045802 (2009)."
572
649
  self.note = ""
573
- self.label = 'AFDMC-2009'
574
- self.marker = 'o'
650
+ self.label = "AFDMC-2009"
651
+ self.marker = "o"
575
652
  self.every = 1
576
- self.linestyle = 'solid'
653
+ self.linestyle = "solid"
577
654
  self.e_err = True
578
- self.p_err = False
579
- self.nm_kfn, self.nm_e2a, self.nm_e2a_err \
580
- = np.loadtxt( file_in, usecols=(0,1,2), unpack = True )
581
- self.nm_den = nuda.den_n( self.nm_kfn )
582
- #self.nm_e2a_err = abs( 0.01 * self.nm_e2a )
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() == '2009-dlqmc-nm':
655
+ self.p_err = False
656
+ self.cs2_err = False
657
+ self.nm_kfn, self.nm_e2a_int, self.nm_e2a_err = np.loadtxt(
658
+ file_in, usecols=(0, 1, 2), unpack=True
659
+ )
660
+ self.nm_den = nuda.den_n(self.nm_kfn)
661
+ self.nm_e2a = self.nm_rmass + self.nm_e2a_int
662
+ # self.nm_e2a_err = abs( 0.01 * self.nm_e2a )
663
+ self.nm_eps = self.nm_e2a * self.nm_den
664
+ self.nm_eps_err = self.nm_e2a_err * self.nm_den
665
+ #
666
+ elif model.lower() == "2009-dlqmc-nm":
587
667
  #
588
668
  self.flag_nm = True
589
669
  self.flag_sm = False
590
670
  self.flag_kf = True
591
671
  self.flag_den = False
592
672
  #
593
- file_in = os.path.join(nuda.param.path_data,'matter/micro/2009-dQMC-NM.dat')
594
- if nuda.env.verb: print('Reads file:',file_in)
595
- self.ref = 'T. Abe, R. Seki, Phys. Rev. C 79, 054002 (2009)'
673
+ file_in = os.path.join(
674
+ nuda.param.path_data, "matter/micro/2009-dQMC-NM.dat"
675
+ )
676
+ if nuda.env.verb:
677
+ print("Reads file:", file_in)
678
+ self.ref = "T. Abe, R. Seki, Phys. Rev. C 79, 054002 (2009)"
596
679
  self.note = ""
597
- self.label = 'dLQMC-2009'
598
- self.marker = 'v'
680
+ self.label = "dLQMC-2009"
681
+ self.marker = "v"
599
682
  self.every = 1
600
- self.linestyle = 'solid'
683
+ self.linestyle = "solid"
601
684
  self.e_err = True
602
685
  self.p_err = False
603
- self.nm_kfn, gap2ef, gap2ef_err, e2effg, e2effg_err \
604
- = np.loadtxt( file_in, usecols=(0,1,2,3,4), unpack = True )
605
- self.nm_den = nuda.den_n( self.nm_kfn )
606
- self.nm_e2a = np.array( e2effg * nuda.effg_nr( self.nm_kfn ) )
607
- self.nm_e2a_err = e2effg_err * nuda.effg_nr( self.nm_kfn )
608
- self.nm_e2v = self.nm_e2a * self.nm_den
609
- self.nm_e2v_err = self.nm_e2a_err * self.nm_den
610
- #
611
- elif model.lower() == '2010-qmc-nm-av4':
686
+ self.cs2_err = False
687
+ self.nm_kfn, gap2ef, gap2ef_err, e2effg, e2effg_err = np.loadtxt(
688
+ file_in, usecols=(0, 1, 2, 3, 4), unpack=True
689
+ )
690
+ self.nm_den = nuda.den_n(self.nm_kfn)
691
+ self.nm_e2a_int = np.array(e2effg * nuda.effg_nr(self.nm_kfn))
692
+ self.nm_e2a = self.nm_rmass + self.nm_e2a_int
693
+ self.nm_e2a_err = e2effg_err * nuda.effg_nr(self.nm_kfn)
694
+ self.nm_eps = self.nm_e2a * self.nm_den
695
+ self.nm_eps_err = self.nm_e2a_err * self.nm_den
696
+ #
697
+ elif model.lower() == "2010-qmc-nm-av4":
612
698
  #
613
699
  self.flag_nm = True
614
700
  self.flag_sm = False
615
701
  self.flag_kf = True
616
702
  self.flag_den = False
617
703
  #
618
- file_in = os.path.join(nuda.param.path_data,'matter/micro/2010-QMC-NM-AV4.dat')
619
- if nuda.env.verb: print('Reads file:',file_in)
620
- self.ref = 'A. Gezerlis and J. Carlson PRC 81, 025803 (2010)'
704
+ file_in = os.path.join(
705
+ nuda.param.path_data, "matter/micro/2010-QMC-NM-AV4.dat"
706
+ )
707
+ if nuda.env.verb:
708
+ print("Reads file:", file_in)
709
+ self.ref = "A. Gezerlis and J. Carlson PRC 81, 025803 (2010)"
621
710
  self.note = ""
622
- self.label = 'QMC-AV4-2008'
623
- self.marker = 's'
711
+ self.label = "QMC-AV4-2008"
712
+ self.marker = "s"
624
713
  self.every = 1
625
714
  self.e_err = True
626
715
  self.p_err = False
627
- self.linestyle = 'solid'
628
- self.nm_kfn, gap2ef, gap2ef_err, e2effg, e2effg_err \
629
- = np.loadtxt( file_in, usecols=(0,1,2,3,4), unpack = True )
630
- self.nm_den = nuda.den_n( self.nm_kfn )
631
- self.nm_e2a = np.array( e2effg * nuda.effg_nr( self.nm_kfn ) )
632
- self.nm_e2a_err = e2effg_err * nuda.effg_nr( self.nm_kfn )
633
- self.nm_e2v = self.nm_e2a * self.nm_den
634
- self.nm_e2v_err = self.nm_e2a_err * self.nm_den
635
- #
636
- elif model.lower() == '2010-mbpt-nm':
716
+ self.cs2_err = False
717
+ self.linestyle = "solid"
718
+ self.nm_kfn, gap2ef, gap2ef_err, e2effg, e2effg_err = np.loadtxt(
719
+ file_in, usecols=(0, 1, 2, 3, 4), unpack=True
720
+ )
721
+ self.nm_den = nuda.den_n(self.nm_kfn)
722
+ self.nm_e2a_int = np.array(e2effg * nuda.effg_nr(self.nm_kfn))
723
+ self.nm_e2a = self.nm_rmass + self.nm_e2a_int
724
+ self.nm_e2a_err = e2effg_err * nuda.effg_nr(self.nm_kfn)
725
+ self.nm_eps = self.nm_e2a * self.nm_den
726
+ self.nm_eps_err = self.nm_e2a_err * self.nm_den
727
+ #
728
+ elif model.lower() == "2010-mbpt-nm":
637
729
  #
638
730
  self.flag_nm = True
639
731
  self.flag_sm = False
640
732
  self.flag_kf = False
641
733
  self.flag_den = False
642
734
  #
643
- file_in = os.path.join(nuda.param.path_data,'matter/micro/2010-NM-Hebeler.dat')
644
- if nuda.env.verb: print('Reads file:',file_in)
645
- self.ref = 'K. Hebeler, et al, Phys. Rev. Lett. 105, 161102 (2010)'
735
+ file_in = os.path.join(
736
+ nuda.param.path_data, "matter/micro/2010-NM-Hebeler.dat"
737
+ )
738
+ if nuda.env.verb:
739
+ print("Reads file:", file_in)
740
+ self.ref = "K. Hebeler, et al, Phys. Rev. Lett. 105, 161102 (2010)"
646
741
  self.note = "chiral NN forces with SRG and leading 3N forces."
647
- self.label = 'MBPT-2010'
648
- self.marker = 's'
742
+ self.label = "MBPT-2010"
743
+ self.marker = "s"
649
744
  self.every = 1
650
745
  self.e_err = False
651
746
  self.p_err = False
652
- self.linestyle = 'solid'
653
- self.nm_den, self.nm_pre = np.loadtxt( file_in, usecols=(0,1), unpack = True )
654
- self.nm_kfn = nuda.kf_n( self.nm_den )
655
- #self.nm_pre_err = np.abs( 0.01 * self.nm_pre )
656
- #
657
- # compute nm_e2v by integrating the pressure
747
+ self.cs2_err = False
748
+ self.linestyle = "solid"
749
+ self.nm_den, self.nm_pre = np.loadtxt(file_in, usecols=(0, 1), unpack=True)
750
+ self.nm_kfn = nuda.kf_n(self.nm_den)
751
+ # self.nm_pre_err = np.abs( 0.01 * self.nm_pre )
658
752
  #
659
753
  # chemical potential
660
- #self.nm_chempot = ( self.nm_pre + self.nm_e2v ) / self.nm_den
754
+ # self.nm_chempot = ( self.nm_pre + self.nm_eps ) / self.nm_den
661
755
  #
662
- elif '2012-afdmc-nm-res' in model.lower():
756
+ elif "2012-afdmc-nm-res" in model.lower():
663
757
  #
664
758
  self.flag_nm = True
665
759
  self.flag_sm = False
@@ -667,38 +761,53 @@ class setupMicro():
667
761
  self.flag_den = True
668
762
  #
669
763
  # We do not have the data for this model, but we have a fit of the data
670
- k=int(model.split(sep='-')[4])
671
- #print('k:',k)
672
- file_in = os.path.join(nuda.param.path_data,'matter/micro/2012-AFDMC-NM-'+str(k)+'.dat')
673
- if nuda.env.verb: print('Reads file:',file_in)
674
- self.ref = 'S. Gandolfi, J. Carlson, S. Reddy, Phys. Rev. C 85, 032801(R) (2012).'
675
- self.note = "We do not have the data for this model, but we have a fit of the data."
676
- self.label = 'AFDMC-2012-'+str(k)
677
- self.marker = 's'
764
+ k = int(model.split(sep="-")[4])
765
+ # print('k:',k)
766
+ file_in = os.path.join(
767
+ nuda.param.path_data, "matter/micro/2012-AFDMC-NM-" + str(k) + ".dat"
768
+ )
769
+ if nuda.env.verb:
770
+ print("Reads file:", file_in)
771
+ self.ref = (
772
+ "S. Gandolfi, J. Carlson, S. Reddy, Phys. Rev. C 85, 032801(R) (2012)."
773
+ )
774
+ self.note = (
775
+ "We have the data for this model, which are used for the fit in the next section."
776
+ )
777
+ self.label = "AFDMC-2012-" + str(k)
778
+ self.marker = "s"
678
779
  self.every = 3
679
- if k==1: self.every = 4
680
- if k==7: self.every = 4
780
+ if k == 1:
781
+ self.every = 4
782
+ if k == 7:
783
+ self.every = 4
681
784
  self.e_err = True
682
785
  self.p_err = False
683
- self.linestyle = 'solid'
684
- #self.linestyle = 'None'
685
- if k in [ 1, 7 ]:
686
- self.nm_den, ETOT, ETOT_ERR = np.loadtxt( file_in, usecols=(0,1,2), unpack = True )
687
- elif k in [ 2, 3, 4, 5, 6 ]:
688
- V0, MU, self.nm_den, ETOT, ETOT_ERR = np.loadtxt( file_in, usecols=(0,1,2,3,4), unpack = True )
786
+ self.cs2_err = False
787
+ self.linestyle = "solid"
788
+ # self.linestyle = 'None'
789
+ if k in [1, 7]:
790
+ self.nm_den, ETOT, ETOT_ERR = np.loadtxt(
791
+ file_in, usecols=(0, 1, 2), unpack=True
792
+ )
793
+ elif k in [2, 3, 4, 5, 6]:
794
+ V0, MU, self.nm_den, ETOT, ETOT_ERR = np.loadtxt(
795
+ file_in, usecols=(0, 1, 2, 3, 4), unpack=True
796
+ )
689
797
  else:
690
- print('The value of k is no correct ',k)
798
+ print("The value of k is no correct ", k)
691
799
  exit()
692
- self.nm_kfn = nuda.kf_n( self.nm_den )
693
- self.nm_e2a = ETOT# / 66.0
694
- self.nm_e2a_err = ETOT_ERR# / 66.0
695
- self.nm_e2v = self.nm_den * self.nm_e2a
696
- self.nm_e2v_err = self.nm_den * self.nm_e2a_err
697
- #self.nm_pre =
698
- #self.nm_chempot =
699
- #self.nm_cs2 =
700
- #
701
- elif '2012-afdmc-nm-fit' in model.lower():
800
+ self.nm_kfn = nuda.kf_n(self.nm_den)
801
+ self.nm_e2a_int = ETOT # / 66.0
802
+ self.nm_e2a = self.nm_rmass + self.nm_e2a_int
803
+ self.nm_e2a_err = ETOT_ERR # / 66.0
804
+ self.nm_eps = self.nm_den * self.nm_e2a
805
+ self.nm_eps_err = self.nm_den * self.nm_e2a_err
806
+ # self.nm_pre =
807
+ # self.nm_chempot =
808
+ # self.nm_cs2 =
809
+ #
810
+ elif "2012-afdmc-nm-fit" in model.lower():
702
811
  #
703
812
  self.flag_nm = True
704
813
  self.flag_sm = False
@@ -706,243 +815,351 @@ class setupMicro():
706
815
  self.flag_den = False
707
816
  #
708
817
  # We do not have the data for this model, but we have a fit of the data
709
- k=int(model.split(sep='-')[4])
710
- #print('k:',k)
711
- file_in = os.path.join(nuda.param.path_data,'matter/micro/2012-AFDMC-NM-fit.dat')
712
- if nuda.env.verb: print('Reads file:',file_in)
713
- self.ref = 'S. Gandolfi, J. Carlson, S. Reddy, Phys. Rev. C 85, 032801(R) (2012).'
714
- self.note = "We do not have the data for this model, but we have a fit of the data."
715
- self.label = 'AFDMC-2012-'+str(k)+'-FIT'
716
- self.marker = 's'
818
+ k = int(model.split(sep="-")[4])
819
+ # print('k:',k)
820
+ file_in = os.path.join(
821
+ nuda.param.path_data, "matter/micro/2012-AFDMC-NM-fit.dat"
822
+ )
823
+ if nuda.env.verb:
824
+ print("Reads file:", file_in)
825
+ self.ref = (
826
+ "S. Gandolfi, J. Carlson, S. Reddy, Phys. Rev. C 85, 032801(R) (2012)."
827
+ )
828
+ self.note = (
829
+ "This is the fit using the data from the previous section."
830
+ )
831
+ self.label = "AFDMC-2012-" + str(k) + "-FIT"
832
+ self.marker = "s"
717
833
  self.every = 1
718
834
  self.e_err = True
719
835
  self.p_err = False
720
- self.linestyle = 'dashed'
721
- ind, a, alfa, b, beta = np.loadtxt( file_in, usecols=(0,1,2,3,4), unpack = True )
722
- #name = np.loadtxt( file_in, usecols=(5), unpack = True )
836
+ self.cs2_err = False
837
+ self.linestyle = "dashed"
838
+ ind, a, alfa, b, beta = np.loadtxt(
839
+ file_in, usecols=(0, 1, 2, 3, 4), unpack=True
840
+ )
841
+ # name = np.loadtxt( file_in, usecols=(5), unpack = True )
723
842
  nmodel = np.size(alfa)
724
- #print('nmodel:',nmodel)
843
+ # print('nmodel:',nmodel)
725
844
  if k < 0 or k > nmodel:
726
- print('issue with the model number k:',k)
727
- print('exit')
845
+ print("issue with the model number k:", k)
846
+ print("exit")
728
847
  exit()
729
- #for i in range(nmodel):
848
+ # for i in range(nmodel):
730
849
  # print('i:',i,' ind:',ind[i],' a:',a[i],' alfa:',alfa[i],' b:',b[i],' beta:',beta[i])
731
- self.nm_den_fit = 0.04 + 0.45 * np.arange(self.nden+1)/float(self.nden)
732
- self.nm_kfn_fit = nuda.kf_n( self.nm_den_fit )
850
+ self.nm_den_fit = 0.04 + 0.45 * np.arange(self.nden + 1) / float(self.nden)
851
+ self.nm_kfn_fit = nuda.kf_n(self.nm_den_fit)
733
852
  # energy in NM
734
- self.nm_e2a_fit = func_GCR_e2a(self.nm_den_fit,a[k-1],alfa[k-1],b[k-1],beta[k-1])
735
- self.nm_e2a_fit_err = np.abs( uncertainty_stat(self.nm_den_fit,err='MBPT') * self.nm_e2a_fit )
736
- self.nm_e2v_fit = self.nm_den_fit * self.nm_e2a_fit
737
- self.nm_e2v_fit_err = self.nm_den_fit * self.nm_e2a_fit_err
853
+ self.nm_e2a_int_fit = func_GCR_e2a(
854
+ self.nm_den_fit, a[k - 1], alfa[k - 1], b[k - 1], beta[k - 1]
855
+ )
856
+ self.nm_e2a_fit = self.nm_rmass + self.nm_e2a_int_fit
857
+ self.nm_e2a_fit_err = np.abs(
858
+ uncertainty_stat(self.nm_den_fit, err="MBPT") * self.nm_e2a_fit
859
+ )
860
+ self.nm_eps_fit = self.nm_den_fit * self.nm_e2a_fit
861
+ self.nm_eps_fit_err = self.nm_den_fit * self.nm_e2a_fit_err
738
862
  # pressure in NM
739
- self.nm_pre_fit = func_GCR_pre(self.nm_den_fit,a[k-1],alfa[k-1],b[k-1],beta[k-1])
863
+ self.nm_pre_fit = func_GCR_pre(
864
+ self.nm_den_fit, a[k - 1], alfa[k - 1], b[k - 1], beta[k - 1]
865
+ )
740
866
  # chemical potential
741
- self.nm_chempot_fit = ( self.nm_pre_fit + self.nm_e2v_fit ) / self.nm_den_fit
867
+ #self.nm_chempot_fit = (self.nm_pre_fit + self.nm_eps_fit) / self.nm_den_fit
742
868
  # enthalpy per particle
743
- self.nm_h2a_fit = nuda.cst.mnuc2 + self.nm_e2a_fit + self.nm_pre_fit / self.nm_den_fit
869
+ self.nm_h2a_fit = self.nm_e2a_fit + self.nm_pre_fit / self.nm_den_fit
744
870
  # sound speed in NM
745
- self.nm_cs2_fit = func_GCR_cs2(self.nm_den_fit,a[k-1],alfa[k-1],b[k-1],beta[k-1])
871
+ self.nm_cs2_fit = func_GCR_cs2(
872
+ self.nm_den_fit, a[k - 1], alfa[k - 1], b[k - 1], beta[k - 1]
873
+ )
746
874
  #
747
875
  self.nm_den = self.nm_den_fit
748
876
  self.nm_kfn = self.nm_kfn_fit
749
- self.nm_e2a = self.nm_e2a_fit
877
+ self.nm_e2a_int = self.nm_e2a_fit
878
+ self.nm_e2a = self.nm_rmass + self.nm_e2a_int
750
879
  self.nm_e2a_err = self.nm_e2a_fit_err
751
- self.nm_e2v = self.nm_e2v_fit
752
- self.nm_e2v_err = self.nm_e2v_fit_err
880
+ self.nm_eps = self.nm_eps_fit
881
+ self.nm_eps_err = self.nm_eps_fit_err
753
882
  self.nm_pre = self.nm_pre_fit
754
- self.nm_chempot = self.nm_chempot_fit
883
+ #self.nm_chempot = self.nm_chempot_fit
755
884
  self.nm_cs2 = self.nm_cs2_fit
756
885
  #
757
- elif model.lower() == '2013-qmc-nm':
886
+ elif model.lower() == "2013-mbpt-nm":
758
887
  #
759
888
  self.flag_nm = True
760
889
  self.flag_sm = False
761
890
  self.flag_kf = False
762
- self.flag_den = False
891
+ self.flag_den = True
763
892
  #
764
- file_in = os.path.join(nuda.param.path_data,'matter/micro/2013-QMC-NM.dat')
765
- if nuda.env.verb: print('Reads file:',file_in)
766
- self.ref = 'I. Tews et al., PRL 110, 032504 (2013)'
893
+ file_in = os.path.join(nuda.param.path_data, "matter/micro/2013-MBPT-NM.dat")
894
+ if nuda.env.verb:
895
+ print("Reads file:", file_in)
896
+ self.ref = "I. Tews et al., PRL 110, 032504 (2013)"
767
897
  self.note = "write here notes about this EOS."
768
- self.label = 'QMC-2013'
769
- self.marker = 's'
898
+ self.label = "MBPT-2013"
899
+ self.marker = "s"
770
900
  self.every = 1
771
- self.linestyle = 'solid'
901
+ self.linestyle = "solid"
772
902
  self.e_err = True
773
903
  self.p_err = False
774
- self.nm_den, self.nm_e2a_low, self.nm_e2a_up, self.nm_pre_low, self.nm_pre_up \
775
- = np.loadtxt( file_in, usecols=(0,1,2,3,4), unpack = True )
776
- self.nm_kfn = nuda.kf_n( self.nm_den )
777
- self.nm_e2a = np.array( 0.5 * ( self.nm_e2a_up + self.nm_e2a_low ) )
778
- self.nm_e2a_err = 0.5 * ( self.nm_e2a_up - self.nm_e2a_low )
779
- self.nm_e2v = self.nm_e2a * self.nm_den
780
- self.nm_e2v_err = self.nm_e2a_err * self.nm_den
781
- self.nm_pre = 0.5 * ( self.nm_pre_up + self.nm_pre_low )
782
- self.nm_pre_err = 0.5 * ( self.nm_pre_up - self.nm_pre_low )
904
+ self.cs2_err = False
905
+ (
906
+ self.nm_den,
907
+ self.nm_e2a_int_low,
908
+ self.nm_e2a_int_up,
909
+ self.nm_pre_low,
910
+ self.nm_pre_up,
911
+ ) = np.loadtxt(file_in, usecols=(0, 1, 2, 3, 4), unpack=True)
912
+ self.nm_kfn = nuda.kf_n(self.nm_den)
913
+ self.nm_e2a_int = np.array(0.5 * (self.nm_e2a_int_up + self.nm_e2a_int_low))
914
+ self.nm_e2a = self.nm_rmass + self.nm_e2a_int
915
+ self.nm_e2a_err = 0.5 * (self.nm_e2a_int_up - self.nm_e2a_int_low)
916
+ self.nm_eps = self.nm_e2a * self.nm_den
917
+ self.nm_eps_err = self.nm_e2a_err * self.nm_den
918
+ self.nm_pre = 0.5 * (self.nm_pre_up + self.nm_pre_low)
919
+ self.nm_pre_err = 0.5 * (self.nm_pre_up - self.nm_pre_low)
783
920
  #
784
921
  # chemical potential
785
- self.nm_chempot = ( np.array(self.nm_pre) + np.array(self.nm_e2v) ) / np.array(self.nm_den)
786
- self.nm_chempot_err = ( np.array(self.nm_pre_err) + np.array(self.nm_e2v_err) ) / np.array(self.nm_den)
922
+ #self.nm_chempot = (
923
+ # np.array(self.nm_pre) + np.array(self.nm_eps)
924
+ #) / np.array(self.nm_den)
925
+ #self.nm_chempot_err = (
926
+ # np.array(self.nm_pre_err) + np.array(self.nm_eps_err)
927
+ #) / np.array(self.nm_den)
787
928
  #
788
929
  # enthalpy
789
- self.nm_h2a = nuda.cst.mnuc2 + self.nm_e2a + self.nm_pre / self.nm_den
930
+ self.nm_h2a = self.nm_e2a + self.nm_pre / self.nm_den
790
931
  #
791
932
  # sound speed
792
- x = np.insert( self.nm_den, 0, 0.0 )
793
- y = np.insert( self.nm_pre, 0, 0.0 )
794
- cs_nm_pre = CubicSpline( x, y )
795
- nm_cs2 = cs_nm_pre( self.nm_den, 1) / self.nm_h2a
933
+ x = np.insert(self.nm_den, 0, 0.0)
934
+ y = np.insert(self.nm_pre, 0, 0.0)
935
+ cs_nm_pre = CubicSpline(x, y)
936
+ self.nm_cs2 = cs_nm_pre(self.nm_den, 1) / self.nm_h2a
796
937
  #
797
- elif model.lower() == '2014-afqmc-nm':
938
+ elif model.lower() == "2014-afqmc-nm":
798
939
  #
799
940
  self.flag_nm = True
800
941
  self.flag_sm = False
801
942
  self.flag_kf = True
802
943
  self.flag_den = False
803
944
  #
804
- file_in = os.path.join(nuda.param.path_data,'matter/micro/2014-AFQMC-NM.dat')
805
- if nuda.env.verb: print('Reads file:',file_in)
806
- self.ref = 'G. Wlazłowski, J.W. Holt, S. Moroz, A. Bulgac, and K.J. Roche Phys. Rev. Lett. 113, 182503 (2014)'
945
+ file_in = os.path.join(
946
+ nuda.param.path_data, "matter/micro/2014-AFQMC-NM.dat"
947
+ )
948
+ if nuda.env.verb:
949
+ print("Reads file:", file_in)
950
+ self.ref = "G. Wlazłowski, J.W. Holt, S. Moroz, A. Bulgac, and K.J. Roche Phys. Rev. Lett. 113, 182503 (2014)"
807
951
  self.note = "write here notes about this EOS."
808
- self.label = 'AFQMC-2014'
809
- self.marker = 's'
952
+ self.label = "AFQMC-2014"
953
+ self.marker = "s"
810
954
  self.every = 1
811
955
  self.e_err = False
812
956
  self.p_err = False
813
- self.linestyle = 'solid'
814
- self.nm_den, self.nm_e2a_2bf, self.nm_e2a_23bf \
815
- = np.loadtxt( file_in, usecols=(0,1,2), unpack = True )
816
- self.nm_kfn = nuda.kf_n( self.nm_den )
817
- self.nm_e2a = self.nm_e2a_23bf
818
- self.nm_e2a_err = np.abs( uncertainty_stat(self.nm_den,err='MBPT') * self.nm_e2a )
819
- #self.nm_e2a_err = np.abs( 0.01 * self.nm_e2a )
820
- self.nm_e2v = self.nm_e2a * self.nm_den
821
- self.nm_e2v_err = self.nm_e2a_err * self.nm_den
822
- #
823
- elif model.lower() == '2016-qmc-nm':
957
+ self.cs2_err = False
958
+ self.linestyle = "solid"
959
+ self.nm_den, self.nm_e2a_int_2bf, self.nm_e2a_int_23bf = np.loadtxt(
960
+ file_in, usecols=(0, 1, 2), unpack=True
961
+ )
962
+ self.nm_kfn = nuda.kf_n(self.nm_den)
963
+ self.nm_e2a_int = self.nm_e2a_int_23bf
964
+ self.nm_e2a = self.nm_rmass + self.nm_e2a_int
965
+ self.nm_e2a_err = np.abs(
966
+ uncertainty_stat(self.nm_den, err="MBPT") * self.nm_e2a_int
967
+ )
968
+ # self.nm_e2a_err = np.abs( 0.01 * self.nm_e2a )
969
+ self.nm_eps = self.nm_e2a * self.nm_den
970
+ self.nm_eps_err = self.nm_e2a_err * self.nm_den
971
+ #
972
+ elif model.lower() == "2016-qmc-nm":
824
973
  #
825
974
  self.flag_nm = True
826
975
  self.flag_sm = False
827
976
  self.flag_kf = True
828
977
  self.flag_den = False
829
978
  #
830
- file_in = os.path.join(nuda.param.path_data,'matter/micro/2016-QMC-NM.dat')
831
- if nuda.env.verb: print('Reads file:',file_in)
832
- self.ref = ' I. Tews, S. Gandolfi, A. Gezerlis, A. Schwenk, Phys. Rev. C 93, 024305 (2016).'
979
+ file_in = os.path.join(nuda.param.path_data, "matter/micro/2016-QMC-NM.dat")
980
+ if nuda.env.verb:
981
+ print("Reads file:", file_in)
982
+ self.ref = " I. Tews, S. Gandolfi, A. Gezerlis, A. Schwenk, Phys. Rev. C 93, 024305 (2016)."
833
983
  self.note = ""
834
- self.label = 'QMC-2016'
835
- self.marker = 's'
836
- self.linestyle = 'solid'
984
+ self.label = "QMC-2016"
985
+ self.marker = "s"
986
+ self.linestyle = "solid"
837
987
  self.e_err = True
838
988
  self.p_err = False
989
+ self.cs2_err = False
839
990
  self.every = 1
840
- self.nm_den, self.nm_e2a_low, self.nm_e2a_up \
841
- = np.loadtxt( file_in, usecols=(0,1,2), unpack = True )
842
- self.nm_kfn = nuda.kf_n( self.nm_den )
843
- self.nm_e2a = np.array( 0.5 * ( self.nm_e2a_up + self.nm_e2a_low ) )
844
- self.nm_e2a_err = 0.5 * ( self.nm_e2a_up - self.nm_e2a_low )
845
- self.nm_e2v = self.nm_e2a * self.nm_den
846
- self.nm_e2v_err = self.nm_e2a_err * self.nm_den
847
- #
848
- elif model.lower() == '2016-mbpt-am':
991
+ self.nm_den, self.nm_e2a_int_low, self.nm_e2a_int_up = np.loadtxt(
992
+ file_in, usecols=(0, 1, 2), unpack=True
993
+ )
994
+ self.nm_kfn = nuda.kf_n(self.nm_den)
995
+ self.nm_e2a_int = np.array(0.5 * (self.nm_e2a_int_up + self.nm_e2a_int_low))
996
+ self.nm_e2a = self.nm_rmass + self.nm_e2a_int
997
+ self.nm_e2a_err = 0.5 * (self.nm_e2a_int_up - self.nm_e2a_int_low)
998
+ self.nm_eps = self.nm_e2a * self.nm_den
999
+ self.nm_eps_err = self.nm_e2a_err * self.nm_den
1000
+ #
1001
+ elif model.lower() == "2016-mbpt-am":
849
1002
  #
850
1003
  self.flag_nm = True
851
1004
  self.flag_sm = True
852
1005
  self.flag_kf = False
853
1006
  self.flag_den = True
854
1007
  #
855
- self.ref = 'C. Drischler, K. Hebeler, A. Schwenk, Phys. Rev. C 93, 054314 (2016).'
1008
+ self.ref = (
1009
+ "C. Drischler, K. Hebeler, A. Schwenk, Phys. Rev. C 93, 054314 (2016)."
1010
+ )
856
1011
  self.note = ""
857
- self.label = 'MBPT-2016'
858
- self.marker = 's'
859
- self.linestyle = 'solid'
1012
+ self.label = "MBPT-2016"
1013
+ self.marker = "s"
1014
+ self.linestyle = "solid"
860
1015
  self.e_err = True
861
1016
  self.p_err = False
1017
+ self.cs2_err = False
862
1018
  self.every = 4
863
1019
  # read the results for the 7 hamiltonians
864
- length = np.zeros( (11), dtype=int )
865
- den = np.zeros( (11,35) )
866
- e2a = np.zeros( (10,11,35) )
867
- e2a_up = np.zeros( (11,35) )
868
- e2a_low = np.zeros( (11,35) )
869
- e2a_av = np.zeros( (11,35) )
870
- e2a_err = np.zeros( (11,35) )
871
- for i in range(0,11):
872
- beta = i/10.0
873
- if i<10:
874
- file_in = os.path.join(nuda.param.path_data,'matter/micro/2016-MBPT-AM/EOS_spec_4_beta_0.'+str(i)+'.txt')
875
- if i==10:
876
- file_in = os.path.join(nuda.param.path_data,'matter/micro/2016-MBPT-AM/EOS_spec_4_beta_1.0.txt')
877
- if nuda.env.verb: print('Reads file:',file_in)
878
- 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)
1020
+ length = np.zeros((11), dtype=int)
1021
+ den = np.zeros((11, 35))
1022
+ e2a = np.zeros((10, 11, 35))
1023
+ e2a_up = np.zeros((11, 35))
1024
+ e2a_low = np.zeros((11, 35))
1025
+ e2a_av = np.zeros((11, 35))
1026
+ e2a_err = np.zeros((11, 35))
1027
+ for i in range(0, 11):
1028
+ beta = i / 10.0
1029
+ if i < 10:
1030
+ file_in = os.path.join(
1031
+ nuda.param.path_data,
1032
+ "matter/micro/2016-MBPT-AM/EOS_spec_4_beta_0."
1033
+ + str(i)
1034
+ + ".txt",
1035
+ )
1036
+ if i == 10:
1037
+ file_in = os.path.join(
1038
+ nuda.param.path_data,
1039
+ "matter/micro/2016-MBPT-AM/EOS_spec_4_beta_1.0.txt",
1040
+ )
1041
+ if nuda.env.verb:
1042
+ print("Reads file:", file_in)
1043
+ deni, e2a_1, e2a_2, e2a_3, e2a_4, e2a_5, e2a_6, e2a_7 = np.genfromtxt(
1044
+ file_in, usecols=(0, 1, 2, 3, 4, 5, 6, 7), comments="#", unpack=True
1045
+ )
879
1046
  length[i] = len(deni)
880
- den[i,0:length[i]] = deni
881
- den_n = deni * (1.0+beta)/2.0
882
- e2a[1,i,0:length[i]] = e2a_1
883
- e2a[2,i,0:length[i]] = e2a_2
884
- e2a[3,i,0:length[i]] = e2a_3
885
- e2a[4,i,0:length[i]] = e2a_4
886
- e2a[5,i,0:length[i]] = e2a_5
887
- e2a[6,i,0:length[i]] = e2a_6
888
- e2a[7,i,0:length[i]] = e2a_7
1047
+ den[i, 0 : length[i]] = deni
1048
+ den_n = deni * (1.0 + beta) / 2.0
1049
+ e2a[1, i, 0 : length[i]] = e2a_1
1050
+ e2a[2, i, 0 : length[i]] = e2a_2
1051
+ e2a[3, i, 0 : length[i]] = e2a_3
1052
+ e2a[4, i, 0 : length[i]] = e2a_4
1053
+ e2a[5, i, 0 : length[i]] = e2a_5
1054
+ e2a[6, i, 0 : length[i]] = e2a_6
1055
+ e2a[7, i, 0 : length[i]] = e2a_7
889
1056
  # performs average and compute boundaries
890
- e2a_up[i,0:length[i]] = e2a_1
891
- e2a_low[i,0:length[i]] = e2a_1
1057
+ e2a_up[i, 0 : length[i]] = e2a_1
1058
+ e2a_low[i, 0 : length[i]] = e2a_1
892
1059
  for j in range(length[i]):
893
- for k in range(2,8):
894
- if e2a[k,i,j] > e2a_up[i,j]: e2a_up[i,j] = e2a[k,i,j]
895
- if e2a[k,i,j] < e2a_low[i,j]: e2a_low[i,j] = e2a[k,i,j]
896
- e2a_av[i,j] = 0.5* ( e2a_up[i,j] + e2a_low[i,j] )
897
- e2a_err[i,j] = 0.5* ( e2a_up[i,j] - e2a_low[i,j] )
898
- if nuda.env.verb: print('length:',length[:])
1060
+ for k in range(2, 8):
1061
+ if e2a[k, i, j] > e2a_up[i, j]:
1062
+ e2a_up[i, j] = e2a[k, i, j]
1063
+ if e2a[k, i, j] < e2a_low[i, j]:
1064
+ e2a_low[i, j] = e2a[k, i, j]
1065
+ e2a_av[i, j] = 0.5 * (e2a_up[i, j] + e2a_low[i, j])
1066
+ e2a_err[i, j] = 0.5 * (e2a_up[i, j] - e2a_low[i, j])
1067
+ if nuda.env.verb:
1068
+ print("length:", length[:])
899
1069
  # NM
900
- self.nm_den = np.array( den[10,:] )
901
- self.nm_kfn = nuda.kf_n( self.nm_den )
902
- self.nm_e2a_up = e2a_up[10,:]
903
- self.nm_e2a_low = e2a_low[10,:]
904
- self.nm_e2a = np.array( e2a_av[10,:] )
905
- self.nm_e2a_err = e2a_err[10,:]
906
- self.nm_e2v = self.nm_e2a * self.nm_den
907
- self.nm_e2v_err = self.nm_e2a_err * self.nm_den
1070
+ self.nm_den = np.array(den[10, :])
1071
+ self.nm_kfn = nuda.kf_n(self.nm_den)
1072
+ self.nm_e2a_int_up = e2a_up[10, :]
1073
+ self.nm_e2a_int_low = e2a_low[10, :]
1074
+ self.nm_e2a_int = np.array(e2a_av[10, :])
1075
+ self.nm_e2a = self.nm_rmass + self.nm_e2a_int
1076
+ self.nm_e2a_err = e2a_err[10, :]
1077
+ self.nm_eps = self.nm_e2a * self.nm_den
1078
+ self.nm_eps_err = self.nm_e2a_err * self.nm_den
908
1079
  # SM
909
- self.sm_den = np.array( den[0,:] )
910
- self.sm_kfn = nuda.kf_n( nuda.cst.half * self.sm_den )
911
- self.sm_e2a_up = e2a_up[0,:]
912
- self.sm_e2a_low = e2a_low[0,:]
913
- self.sm_e2a = np.array( e2a_av[0,:] )
914
- self.sm_e2a_err = e2a_err[0,:]
915
- self.sm_e2v = self.sm_e2a * self.sm_den
916
- self.sm_e2v_err = self.sm_e2a_err * self.sm_den
1080
+ self.sm_den = np.array(den[0, :])
1081
+ self.sm_kfn = nuda.kf_n(nuda.cst.half * self.sm_den)
1082
+ self.sm_e2a_int_up = e2a_up[0, :]
1083
+ self.sm_e2a_int_low = e2a_low[0, :]
1084
+ self.sm_e2a_int = np.array(e2a_av[0, :])
1085
+ self.sm_e2a = self.sm_rmass + self.sm_e2a_int
1086
+ self.sm_e2a_err = e2a_err[0, :]
1087
+ self.sm_eps = self.sm_e2a * self.sm_den
1088
+ self.sm_eps_err = self.sm_e2a_err * self.sm_den
1089
+ # AM
1090
+ self.am_den = np.zeros((11,35))
1091
+ self.am_xn = np.zeros((11))
1092
+ self.am_xp = np.zeros((11))
1093
+ self.am_kfn = np.zeros((11,35))
1094
+ self.am_rmass = np.zeros((11))
1095
+ self.am_e2a_int = np.zeros((11,8,35))
1096
+ self.am_eps_int = np.zeros((11,8,35))
1097
+ self.am_e2a = np.zeros((11,8,35))
1098
+ self.am_eps = np.zeros((11,8,35))
1099
+ self.am_e2a_int_av = np.zeros((11,35))
1100
+ self.am_e2a_int_err = np.zeros((11,35))
1101
+ self.am_eps_int_av = np.zeros((11,35))
1102
+ self.am_eps_int_err = np.zeros((11,35))
1103
+ self.am_e2a_av = np.zeros((11,35))
1104
+ self.am_e2a_err = np.zeros((11,35))
1105
+ self.am_eps_av = np.zeros((11,35))
1106
+ self.am_eps_err = np.zeros((11,35))
1107
+ for i in range(0, 11):
1108
+ self.am_den[i] = np.array(den[i, :])
1109
+ self.am_xn[i] = 0.5*(1.0+i/10.0)
1110
+ self.am_xp[i] = 0.5*(1.0-i/10.0)
1111
+ self.am_kfn[i] = nuda.kf_n( self.am_xn[i] * self.am_den[i] )
1112
+ self.am_rmass[i] = self.am_xn[i] * nuda.cst.mnc2 + self.am_xp[i] * nuda.cst.mpc2
1113
+ for j in range(1, 8):
1114
+ self.am_e2a_int[i,j] = np.array(e2a[j,i,:])
1115
+ self.am_eps_int[i,j] = self.am_e2a_int[i,j] * self.am_den[i]
1116
+ self.am_e2a[i,j] = self.am_rmass[i] + self.am_e2a_int[i,j]
1117
+ self.am_eps[i,j] = self.am_e2a[i,j] * self.am_den[i]
1118
+ self.am_e2a_int_av[i] = np.array(e2a_av[i, :])
1119
+ self.am_e2a_int_err[i] = np.array(e2a_err[i, :])
1120
+ self.am_eps_int_av[i] = self.am_e2a_int_av[i] * self.am_den[i]
1121
+ self.am_eps_int_err[i] = self.am_e2a_int_err[i] * self.am_den[i]
1122
+ self.am_e2a_av[i] = self.am_rmass[i] + self.am_e2a_int_av[i]
1123
+ self.am_e2a_err[i] = self.am_rmass[i] + self.am_e2a_int_err[i]
1124
+ self.am_eps_av[i] = self.am_e2a_av[i] * self.am_den[i]
1125
+ self.am_eps_err[i] = self.am_e2a_err[i] * self.am_den[i]
917
1126
  #
918
1127
  # Note: here I define the pressure as the derivative of the centroid energy
919
1128
  # It would however be better to compute the presure for each models and only
920
1129
  # after that, estimate the centroid and uncertainty.
921
1130
  #
922
- elif model.lower() == '2018-qmc-nm':
1131
+ elif model.lower() == "2018-qmc-nm":
923
1132
  #
924
1133
  self.flag_nm = True
925
1134
  self.flag_sm = False
926
1135
  self.flag_kf = True
927
1136
  self.flag_den = False
928
1137
  #
929
- file_in = os.path.join(nuda.param.path_data,'matter/micro/2018-QMC-NM.dat')
930
- if nuda.env.verb: print('Reads file:',file_in)
931
- self.ref = 'I. Tews, J. Carlson, S. Gandolfi, S. Reddy, Astroph. J. 860(2), 149 (2018).'
1138
+ file_in = os.path.join(nuda.param.path_data, "matter/micro/2018-QMC-NM.dat")
1139
+ if nuda.env.verb:
1140
+ print("Reads file:", file_in)
1141
+ self.ref = "I. Tews, J. Carlson, S. Gandolfi, S. Reddy, Astroph. J. 860(2), 149 (2018)."
932
1142
  self.note = ""
933
- self.label = 'QMC-2018'
934
- self.marker = 's'
1143
+ self.label = "QMC-2018"
1144
+ self.marker = "s"
935
1145
  self.every = 2
936
- self.linestyle = 'solid'
1146
+ self.linestyle = "solid"
937
1147
  self.e_err = True
938
1148
  self.p_err = False
939
- self.nm_den, self.nm_e2a_low, self.nm_e2a_up, self.nm_e2a, self.nm_e2a_err \
940
- = np.loadtxt( file_in, usecols=(0,1,2,3,4), unpack = True )
941
- self.nm_kfn = nuda.kf_n( self.nm_den )
942
- self.nm_e2v = self.nm_e2a * self.nm_den
943
- self.nm_e2v_err = self.nm_e2a_err * self.nm_den
944
- #
945
- elif model.lower() == '2019-mbpt-am-l59':
1149
+ self.cs2_err = False
1150
+ (
1151
+ self.nm_den,
1152
+ self.nm_e2a_int_low,
1153
+ self.nm_e2a_int_up,
1154
+ self.nm_e2a_int,
1155
+ self.nm_e2a_err,
1156
+ ) = np.loadtxt(file_in, usecols=(0, 1, 2, 3, 4), unpack=True)
1157
+ self.nm_e2a = self.nm_rmass + self.nm_e2a_int
1158
+ self.nm_kfn = nuda.kf_n(self.nm_den)
1159
+ self.nm_eps = self.nm_e2a * self.nm_den
1160
+ self.nm_eps_err = self.nm_e2a_err * self.nm_den
1161
+ #
1162
+ elif model.lower() == "2019-mbpt-am-l59":
946
1163
  #
947
1164
  self.flag_nm = True
948
1165
  self.flag_sm = True
@@ -952,30 +1169,63 @@ class setupMicro():
952
1169
  # here, the L59 case is compute alone, it would be interesting to compute the uncertainty
953
1170
  # in the previous MBPT calculation (based on H1-H7) adding this new calculation.
954
1171
  #
955
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2019-MBPT-SM-DHSL59.dat')
956
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2019-MBPT-NM-DHSL59.dat')
957
- if nuda.env.verb: print('Reads file1:',file_in1)
958
- if nuda.env.verb: print('Reads file2:',file_in2)
959
- self.ref = 'C. Drischler, K. Hebeler, A. Schwenk, Phys. Rev. Lett. 122, 042501 (2019)'
1172
+ file_in1 = os.path.join(
1173
+ nuda.param.path_data, "matter/micro/2019-MBPT-SM-DHSL59.dat"
1174
+ )
1175
+ file_in2 = os.path.join(
1176
+ nuda.param.path_data, "matter/micro/2019-MBPT-NM-DHSL59.dat"
1177
+ )
1178
+ if nuda.env.verb:
1179
+ print("Reads file1:", file_in1)
1180
+ if nuda.env.verb:
1181
+ print("Reads file2:", file_in2)
1182
+ self.ref = "C. Drischler, K. Hebeler, A. Schwenk, Phys. Rev. Lett. 122, 042501 (2019)"
960
1183
  self.note = ""
961
- self.label = 'MBPT-2019-L59'
962
- self.marker = 's'
1184
+ self.label = "MBPT-2019-L59"
1185
+ self.marker = "s"
963
1186
  self.every = 2
964
1187
  self.e_err = False
965
1188
  self.p_err = False
966
- self.linestyle = 'solid'
967
- self.sm_kfn, self.sm_den, Kin, HF_tot, Scnd_tot, Trd_tot, Fth_tot, self.sm_e2a \
968
- = np.loadtxt( file_in1, usecols = (0, 1, 2, 3, 4, 5, 6, 7), comments='#', unpack = True)
969
- self.sm_e2a_err = np.abs( uncertainty_stat(self.sm_den,err='MBPT') * self.sm_e2a )
970
- self.sm_e2v = self.sm_e2a * self.sm_den
971
- self.sm_e2v_err = self.sm_e2a_err * self.sm_den
972
- self.nm_kfn, self.nm_den, Kin, HF_tot, Scnd_tot, Trd_tot, Fth_tot, self.nm_e2a \
973
- = np.loadtxt( file_in2, usecols = (0, 1, 2, 3, 4, 5, 6, 7), comments='#', unpack = True)
974
- self.nm_e2a_err = np.abs( uncertainty_stat(self.nm_den,err='MBPT') * self.nm_e2a )
975
- self.nm_e2v = self.nm_e2a * self.nm_den
976
- self.nm_e2v_err = self.nm_e2a_err * self.nm_den
977
- #
978
- elif model.lower() == '2019-mbpt-am-l69':
1189
+ self.cs2_err = False
1190
+ self.linestyle = "solid"
1191
+ (
1192
+ self.sm_kfn,
1193
+ self.sm_den,
1194
+ Kin,
1195
+ HF_tot,
1196
+ Scnd_tot,
1197
+ Trd_tot,
1198
+ Fth_tot,
1199
+ self.sm_e2a_int,
1200
+ ) = np.loadtxt(
1201
+ file_in1, usecols=(0, 1, 2, 3, 4, 5, 6, 7), comments="#", unpack=True
1202
+ )
1203
+ self.sm_e2a = self.sm_rmass + self.sm_e2a_int
1204
+ self.sm_e2a_err = np.abs(
1205
+ uncertainty_stat(self.sm_den, err="MBPT") * self.sm_e2a_int
1206
+ )
1207
+ self.sm_eps = self.sm_e2a * self.sm_den
1208
+ self.sm_eps_err = self.sm_e2a_err * self.sm_den
1209
+ (
1210
+ self.nm_kfn,
1211
+ self.nm_den,
1212
+ Kin,
1213
+ HF_tot,
1214
+ Scnd_tot,
1215
+ Trd_tot,
1216
+ Fth_tot,
1217
+ self.nm_e2a_int,
1218
+ ) = np.loadtxt(
1219
+ file_in2, usecols=(0, 1, 2, 3, 4, 5, 6, 7), comments="#", unpack=True
1220
+ )
1221
+ self.nm_e2a = self.nm_rmass + self.nm_e2a_int
1222
+ self.nm_e2a_err = np.abs(
1223
+ uncertainty_stat(self.nm_den, err="MBPT") * self.nm_e2a_int
1224
+ )
1225
+ self.nm_eps = self.nm_e2a * self.nm_den
1226
+ self.nm_eps_err = self.nm_e2a_err * self.nm_den
1227
+ #
1228
+ elif model.lower() == "2019-mbpt-am-l69":
979
1229
  #
980
1230
  self.flag_nm = True
981
1231
  self.flag_sm = True
@@ -984,604 +1234,1380 @@ class setupMicro():
984
1234
  #
985
1235
  # same remarck as for L59
986
1236
  #
987
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2019-MBPT-SM-DHSL69.dat')
988
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2019-MBPT-NM-DHSL69.dat')
989
- if nuda.env.verb: print('Reads file1:',file_in1)
990
- if nuda.env.verb: print('Reads file2:',file_in2)
991
- self.ref = 'C. Drischler, K. Hebeler, A. Schwenk, Phys. Rev. Lett. 122, 042501 (2019)'
1237
+ file_in1 = os.path.join(
1238
+ nuda.param.path_data, "matter/micro/2019-MBPT-SM-DHSL69.dat"
1239
+ )
1240
+ file_in2 = os.path.join(
1241
+ nuda.param.path_data, "matter/micro/2019-MBPT-NM-DHSL69.dat"
1242
+ )
1243
+ if nuda.env.verb:
1244
+ print("Reads file1:", file_in1)
1245
+ if nuda.env.verb:
1246
+ print("Reads file2:", file_in2)
1247
+ self.ref = "C. Drischler, K. Hebeler, A. Schwenk, Phys. Rev. Lett. 122, 042501 (2019)"
992
1248
  self.note = ""
993
- self.label = 'MBPT-2019-L69'
994
- self.marker = 's'
1249
+ self.label = "MBPT-2019-L69"
1250
+ self.marker = "s"
995
1251
  self.every = 2
996
1252
  self.e_err = False
997
1253
  self.p_err = False
998
- self.linestyle = 'solid'
999
- self.sm_kfn, self.sm_den, Kin, HF_tot, Scnd_tot, Trd_tot, Fth_tot, self.sm_e2a \
1000
- = np.loadtxt( file_in1, usecols = (0, 1, 2, 3, 4, 5, 6, 7), comments='#', unpack = True)
1001
- self.sm_e2a_err = np.abs( uncertainty_stat(self.sm_den,err='MBPT') * self.sm_e2a )
1002
- self.sm_e2v = self.sm_e2a * self.sm_den
1003
- self.sm_e2v_err = self.sm_e2a_err * self.sm_den
1004
- self.nm_kfn, self.nm_den, Kin, HF_tot, Scnd_tot, Trd_tot, Fth_tot, self.nm_e2a \
1005
- = np.loadtxt( file_in2, usecols = (0, 1, 2, 3, 4, 5, 6, 7), comments='#', unpack = True)
1006
- self.nm_e2a_err = np.abs( uncertainty_stat(self.nm_den,err='MBPT') * self.nm_e2a )
1007
- self.nm_e2v = self.nm_e2a * self.nm_den
1008
- self.nm_e2v_err = self.nm_e2a_err * self.nm_den
1009
- #
1010
- elif model.lower() == '2020-mbpt-am':
1254
+ self.cs2_err = False
1255
+ self.linestyle = "solid"
1256
+ (
1257
+ self.sm_kfn,
1258
+ self.sm_den,
1259
+ Kin,
1260
+ HF_tot,
1261
+ Scnd_tot,
1262
+ Trd_tot,
1263
+ Fth_tot,
1264
+ self.sm_e2a_int,
1265
+ ) = np.loadtxt(
1266
+ file_in1, usecols=(0, 1, 2, 3, 4, 5, 6, 7), comments="#", unpack=True
1267
+ )
1268
+ self.sm_e2a = self.sm_rmass + self.sm_e2a_int
1269
+ self.sm_e2a_err = np.abs(
1270
+ uncertainty_stat(self.sm_den, err="MBPT") * self.sm_e2a_int
1271
+ )
1272
+ self.sm_eps = self.sm_e2a * self.sm_den
1273
+ self.sm_eps_err = self.sm_e2a_err * self.sm_den
1274
+ (
1275
+ self.nm_kfn,
1276
+ self.nm_den,
1277
+ Kin,
1278
+ HF_tot,
1279
+ Scnd_tot,
1280
+ Trd_tot,
1281
+ Fth_tot,
1282
+ self.nm_e2a_int,
1283
+ ) = np.loadtxt(
1284
+ file_in2, usecols=(0, 1, 2, 3, 4, 5, 6, 7), comments="#", unpack=True
1285
+ )
1286
+ self.nm_e2a = self.nm_rmass + self.nm_e2a_int
1287
+ self.nm_e2a_err = np.abs(
1288
+ uncertainty_stat(self.nm_den, err="MBPT") * self.nm_e2a_int
1289
+ )
1290
+ self.nm_eps = self.nm_e2a * self.nm_den
1291
+ self.nm_eps_err = self.nm_e2a_err * self.nm_den
1292
+ #
1293
+ elif model.lower() == "2020-mbpt-am":
1011
1294
  #
1012
1295
  self.flag_nm = True
1013
1296
  self.flag_sm = True
1014
1297
  self.flag_kf = False
1015
1298
  self.flag_den = True
1016
1299
  #
1017
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2020-MBPT-SM.csv')
1018
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2020-MBPT-NM.csv')
1019
- if nuda.env.verb: print('Reads file1:',file_in1)
1020
- if nuda.env.verb: print('Reads file2:',file_in2)
1021
- 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'
1300
+ file_in1 = os.path.join(
1301
+ nuda.param.path_data, "matter/micro/2020-MBPT-SM.csv"
1302
+ )
1303
+ file_in2 = os.path.join(
1304
+ nuda.param.path_data, "matter/micro/2020-MBPT-NM.csv"
1305
+ )
1306
+ if nuda.env.verb:
1307
+ print("Reads file1:", file_in1)
1308
+ if nuda.env.verb:
1309
+ print("Reads file2:", file_in2)
1310
+ 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"
1022
1311
  self.note = ""
1023
- self.label = 'MBPT-2020'
1024
- self.marker = 'o'
1025
- self.linestyle = 'solid'
1312
+ self.label = "MBPT-2020"
1313
+ self.marker = "o"
1314
+ self.linestyle = "solid"
1026
1315
  self.every = 6
1027
1316
  self.e_err = True
1028
1317
  self.p_err = False
1029
- self.sm_den, self.sm_e2a_lo, self.sm_e2a_lo_err, self.sm_e2a_nlo, self.sm_e2a_nlo_err, \
1030
- self.sm_e2a_n2lo, self.sm_e2a_n2lo_err, self.sm_e2a_n3lo, self.sm_e2a_n3lo_err \
1031
- = np.loadtxt( file_in1, usecols = (0, 1, 2, 3, 4, 5, 6, 7, 8), delimiter=',', comments='#', unpack = True)
1032
- self.sm_kfn = nuda.kf_n( nuda.cst.half * self.sm_den )
1033
- self.sm_e2a = self.sm_e2a_n3lo
1318
+ self.cs2_err = False
1319
+ (
1320
+ self.sm_den,
1321
+ self.sm_e2a_lo,
1322
+ self.sm_e2a_lo_err,
1323
+ self.sm_e2a_nlo,
1324
+ self.sm_e2a_nlo_err,
1325
+ self.sm_e2a_n2lo,
1326
+ self.sm_e2a_n2lo_err,
1327
+ self.sm_e2a_n3lo,
1328
+ self.sm_e2a_n3lo_err,
1329
+ ) = np.loadtxt(
1330
+ file_in1,
1331
+ usecols=(0, 1, 2, 3, 4, 5, 6, 7, 8),
1332
+ delimiter=",",
1333
+ comments="#",
1334
+ unpack=True,
1335
+ )
1336
+ self.sm_kfn = nuda.kf_n(nuda.cst.half * self.sm_den)
1337
+ self.sm_e2a_int = self.sm_e2a_n3lo
1338
+ self.sm_e2a = self.sm_rmass + self.sm_e2a_int
1034
1339
  self.sm_e2a_err = self.sm_e2a_n3lo_err
1035
- self.sm_e2v = self.sm_e2a * self.sm_den
1036
- self.sm_e2v_err = self.sm_e2a_err * self.sm_den
1037
- self.nm_den, self.nm_e2a_lo, self.nm_e2a_lo_err, self.nm_e2a_nlo, self.nm_e2a_nlo_err, \
1038
- self.nm_e2a_n2lo, self.nm_e2a_n2lo_err, self.nm_e2a_n3lo, self.nm_e2a_n3lo_err \
1039
- = np.loadtxt( file_in2, usecols = (0, 1, 2, 3, 4, 5, 6, 7, 8), delimiter=',', comments='#', unpack = True)
1040
- self.nm_kfn = nuda.kf_n( self.nm_den )
1041
- self.nm_e2a = self.nm_e2a_n3lo
1340
+ self.sm_eps = self.sm_e2a * self.sm_den
1341
+ self.sm_eps_err = self.sm_e2a_err * self.sm_den
1342
+ (
1343
+ self.nm_den,
1344
+ self.nm_e2a_lo,
1345
+ self.nm_e2a_lo_err,
1346
+ self.nm_e2a_nlo,
1347
+ self.nm_e2a_nlo_err,
1348
+ self.nm_e2a_n2lo,
1349
+ self.nm_e2a_n2lo_err,
1350
+ self.nm_e2a_n3lo,
1351
+ self.nm_e2a_n3lo_err,
1352
+ ) = np.loadtxt(
1353
+ file_in2,
1354
+ usecols=(0, 1, 2, 3, 4, 5, 6, 7, 8),
1355
+ delimiter=",",
1356
+ comments="#",
1357
+ unpack=True,
1358
+ )
1359
+ self.nm_kfn = nuda.kf_n(self.nm_den)
1360
+ self.nm_e2a_int = self.nm_e2a_n3lo
1361
+ self.nm_e2a = self.nm_rmass + self.nm_e2a_int
1042
1362
  self.nm_e2a_err = self.nm_e2a_n3lo_err
1043
- self.nm_e2v = self.nm_e2a * self.nm_den
1044
- self.nm_e2v_err = self.nm_e2a_err * self.nm_den
1363
+ self.nm_eps = self.nm_e2a * self.nm_den
1364
+ self.nm_eps_err = self.nm_e2a_err * self.nm_den
1365
+ #
1366
+ elif "2020-scgf-am" in model.lower():
1367
+ #
1368
+ self.flag_nm = True
1369
+ self.flag_sm = True
1370
+ self.flag_kf = False
1371
+ self.flag_den = True
1372
+ self.model = model
1373
+ #
1374
+ if model.lower() == "2020-scgf-am-n3lo-414":
1375
+ file_in1 = os.path.join(
1376
+ nuda.param.path_data, "matter/micro/2020-SCGF-SM-N3LO-414-TD.dat"
1377
+ )
1378
+ file_in2 = os.path.join(
1379
+ nuda.param.path_data, "matter/micro/2020-SCGF-NM-N3LO-414-TD.dat"
1380
+ )
1381
+ elif model.lower() == "2020-scgf-am-n3lo-450":
1382
+ file_in1 = os.path.join(
1383
+ nuda.param.path_data, "matter/micro/2020-SCGF-SM-N3LO-450-TD.dat"
1384
+ )
1385
+ file_in2 = os.path.join(
1386
+ nuda.param.path_data, "matter/micro/2020-SCGF-NM-N3LO-450-TD.dat"
1387
+ )
1388
+ elif model.lower() == "2020-scgf-am-n3lo-500":
1389
+ file_in1 = os.path.join(
1390
+ nuda.param.path_data, "matter/micro/2020-SCGF-SM-N3LO-500-TD.dat"
1391
+ )
1392
+ file_in2 = os.path.join(
1393
+ nuda.param.path_data, "matter/micro/2020-SCGF-NM-N3LO-500-TD.dat"
1394
+ )
1395
+ if nuda.env.verb:
1396
+ print("Reads file1:", file_in1)
1397
+ if nuda.env.verb:
1398
+ print("Reads file2:", file_in2)
1399
+ self.ref = "A. Rios, Front. Phys. 8 387 (2020)"
1400
+ self.note = ""
1401
+ self.label = "SCGF-2020"
1402
+ self.marker = "+"
1403
+ self.linestyle = "solid"
1404
+ self.every = 1
1405
+ self.e_err = False
1406
+ self.p_err = False
1407
+ self.cs2_err = False
1408
+ (
1409
+ self.sm_den,
1410
+ self.sm_chempot_n3lo,
1411
+ self.sm_e2a_n3lo,
1412
+ self.sm_pre_n3lo,
1413
+ ) = np.loadtxt(
1414
+ file_in1,
1415
+ usecols=(0, 2, 3, 6),
1416
+ comments="#",
1417
+ unpack=True,
1418
+ )
1419
+ self.sm_e2a_int = self.sm_e2a_n3lo
1420
+ (
1421
+ self.nm_den,
1422
+ self.nm_chempot_n3lo,
1423
+ self.nm_e2a_n3lo,
1424
+ self.nm_pre_n3lo,
1425
+ ) = np.loadtxt(
1426
+ file_in2,
1427
+ usecols=(0, 2, 3, 6),
1428
+ comments="#",
1429
+ unpack=True,
1430
+ )
1431
+ self.nm_e2a_int = self.nm_e2a_n3lo
1432
+ #
1433
+ self.nm_e2a = self.nm_rmass + self.nm_e2a_int
1434
+ self.sm_e2a = self.sm_rmass + self.sm_e2a_int
1435
+ self.nm_eps = self.nm_e2a * self.nm_den
1436
+ self.sm_eps = self.sm_e2a * self.sm_den
1437
+ self.nm_kfn = nuda.kf_n( self.nm_den )
1438
+ self.sm_kfn = nuda.kf_n( nuda.cst.half * self.sm_den )
1439
+ self.nm_e2a_err = np.abs( uncertainty_stat(self.nm_den, err="MBPT") * self.nm_e2a_int )
1440
+ self.sm_e2a_err = np.abs( uncertainty_stat(self.sm_den, err="MBPT") * self.sm_e2a_int )
1441
+ self.nm_eps_err = self.nm_e2a_err * self.nm_den
1442
+ self.sm_eps_err = self.sm_e2a_err * self.sm_den
1045
1443
  #
1046
- elif model.lower() == '2022-afdmc-nm':
1444
+ elif model.lower() == "2022-afdmc-nm":
1047
1445
  #
1048
1446
  self.flag_nm = True
1049
1447
  self.flag_sm = False
1050
1448
  self.flag_kf = False
1051
1449
  self.flag_den = True
1052
1450
  #
1053
- file_in = os.path.join(nuda.param.path_data,'matter/micro/2022-AFDMC-NM.csv')
1054
- if nuda.env.verb: print('Reads file:',file_in)
1055
- self.ref = 'S. Gandolfi, G. Palkanoglou, J. Carlson, A. Gezerlis, K.E. Schmidt, Condensed Matter 7(1) (2022).'
1451
+ file_in = os.path.join(
1452
+ nuda.param.path_data, "matter/micro/2022-AFDMC-NM.csv"
1453
+ )
1454
+ if nuda.env.verb:
1455
+ print("Reads file:", file_in)
1456
+ self.ref = "S. Gandolfi, G. Palkanoglou, J. Carlson, A. Gezerlis, K.E. Schmidt, Condensed Matter 7(1) (2022)."
1056
1457
  self.note = ""
1057
- self.label = 'AFDMC+corr.-2022'
1058
- self.linestyle = 'solid'
1059
- self.marker = 'o'
1060
- self.linestyle = 'solid'
1458
+ self.label = "AFDMC+corr.-2022"
1459
+ self.linestyle = "solid"
1460
+ self.marker = "o"
1461
+ self.linestyle = "solid"
1061
1462
  self.every = 1
1062
1463
  self.e_err = True
1063
1464
  self.p_err = False
1465
+ self.cs2_err = False
1064
1466
  # read e2a
1065
- self.nm_kfn, e2effg, e2effg_err = np.loadtxt( file_in, usecols=(0,1,2), delimiter=',', comments='#', unpack = True )
1066
- self.nm_den = nuda.den_n( self.nm_kfn )
1067
- self.nm_e2a = e2effg * nuda.effg_nr( self.nm_kfn )
1068
- self.nm_e2a_err = e2effg_err * nuda.effg_nr( self.nm_kfn )
1467
+ self.nm_kfn, e2effg, e2effg_err = np.loadtxt(
1468
+ file_in, usecols=(0, 1, 2), delimiter=",", comments="#", unpack=True
1469
+ )
1470
+ self.nm_den = nuda.den_n(self.nm_kfn)
1471
+ self.nm_e2a_int = e2effg * nuda.effg_nr(self.nm_kfn)
1472
+ self.nm_e2a = self.nm_rmass + self.nm_e2a_int
1473
+ self.nm_e2a_err = e2effg_err * nuda.effg_nr(self.nm_kfn)
1069
1474
  #
1070
- self.nm_e2v = self.nm_e2a * self.nm_den
1071
- self.nm_e2v_err = self.nm_e2a_err * self.nm_den
1072
- #self.nm_e2a_err = np.abs( uncertainty_stat(self.nm_den,err='MBPT') * self.nm_e2a )
1073
- #self.nm_e2a_err = self.nm_e2v_err / self.nm_den
1475
+ self.nm_eps = self.nm_e2a * self.nm_den
1476
+ self.nm_eps_err = self.nm_e2a_err * self.nm_den
1074
1477
  #
1075
- elif model.lower() == '2024-nleft-am':
1478
+ elif model.lower() == "2024-nleft-am":
1076
1479
  #
1077
- #print('enter here:',model)
1480
+ # print('enter here:',model)
1078
1481
  self.flag_nm = True
1079
1482
  self.flag_sm = True
1080
1483
  self.flag_kf = False
1081
1484
  self.flag_den = False
1082
1485
  #
1083
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-NLEFT-SM.dat')
1084
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-NLEFT-NM.dat')
1085
- if nuda.env.verb: print('Reads file1:',file_in1)
1086
- if nuda.env.verb: print('Reads file2:',file_in2)
1087
- self.ref = 'S. Elhatisari, L. Bovermann, Y.-Z. Ma et al., Nature 630, 59 (2024).'
1486
+ file_in1 = os.path.join(
1487
+ nuda.param.path_data, "matter/micro/2024-NLEFT-SM.dat"
1488
+ )
1489
+ file_in2 = os.path.join(
1490
+ nuda.param.path_data, "matter/micro/2024-NLEFT-NM.dat"
1491
+ )
1492
+ if nuda.env.verb:
1493
+ print("Reads file1:", file_in1)
1494
+ if nuda.env.verb:
1495
+ print("Reads file2:", file_in2)
1496
+ self.ref = (
1497
+ "S. Elhatisari, L. Bovermann, Y.-Z. Ma et al., Nature 630, 59 (2024)."
1498
+ )
1088
1499
  self.note = ""
1089
- self.label = 'NLEFT-2024'
1090
- self.marker = 's'
1091
- self.linestyle = 'solid'
1500
+ self.label = "NLEFT-2024"
1501
+ self.marker = "s"
1502
+ self.linestyle = "solid"
1092
1503
  self.every = 2
1093
1504
  self.e_err = True
1094
1505
  self.p_err = False
1506
+ self.cs2_err = False
1095
1507
  #
1096
1508
  # Read SM results
1097
1509
  #
1098
- 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 \
1099
- = np.loadtxt( file_in1, usecols = (0, 1, 2, 3, 4, 5, 6), comments='#', unpack = True, delimiter=',' )
1100
- self.sm_kfn = nuda.kf_n( nuda.cst.half * self.sm_den )
1101
- self.sm_e2adata = self.sm_etot / self.sm_A
1102
- self.sm_e2adata_err = self.sm_etot_err / self.sm_A
1103
- self.sm_e2adata_2bf = self.sm_etot_2bf / self.sm_A
1104
- self.sm_e2adata_2bf_err = self.sm_etot_2bf_err / self.sm_A
1105
- self.sm_e2vdata = self.sm_e2adata * self.sm_den
1106
- self.sm_e2vdata_err = self.sm_e2adata_err * self.sm_den
1510
+ (
1511
+ self.sm_A,
1512
+ self.sm_L,
1513
+ self.sm_den,
1514
+ self.sm_etot_int_2bf,
1515
+ self.sm_etot_2bf_err,
1516
+ self.sm_etot_int,
1517
+ self.sm_etot_err,
1518
+ ) = np.loadtxt(
1519
+ file_in1,
1520
+ usecols=(0, 1, 2, 3, 4, 5, 6),
1521
+ comments="#",
1522
+ unpack=True,
1523
+ delimiter=",",
1524
+ )
1525
+ self.sm_kfn = nuda.kf_n(nuda.cst.half * self.sm_den)
1526
+ self.sm_e2a_int_data = self.sm_etot_int / self.sm_A
1527
+ self.sm_e2a_err_data = self.sm_etot_err / self.sm_A
1528
+ self.sm_e2a_int_2bf_data = self.sm_etot_int_2bf / self.sm_A
1529
+ self.sm_e2a_2bf_err_data = self.sm_etot_2bf_err / self.sm_A
1530
+ self.sm_e2a_data = self.sm_rmass + self.sm_e2a_int_data
1531
+ self.sm_eps_data = self.sm_e2a_data * self.sm_den
1532
+ self.sm_eps_err_data = self.sm_e2a_err_data * self.sm_den
1107
1533
  # fit with EFFG
1108
1534
  xdata = self.sm_kfn
1109
- ydata = self.sm_e2adata
1110
- sm_popt, sm_pcov = curve_fit( func_e2a_NLEFT2024, xdata, ydata )
1111
- print('sm_popt:',sm_popt)
1112
- print('sm_pcov:',sm_pcov)
1535
+ ydata = self.sm_e2a_int_data
1536
+ sm_popt, sm_pcov = curve_fit(func_e2a_NLEFT2024, xdata, ydata)
1537
+ print("sm_popt:", sm_popt)
1538
+ print("sm_pcov:", sm_pcov)
1113
1539
  self.sm_pfit = sm_popt
1114
- self.sm_perr = np.sqrt( np.diag( sm_pcov ) )
1540
+ self.sm_perr = np.sqrt(np.diag(sm_pcov))
1115
1541
  # analyse the uncertainties for e2a, pre, cs2
1116
- self.sm_pcerr = np.zeros( (100,3), dtype=float )
1117
- self.sm_e2a = func_e2a_NLEFT2024( xdata, *self.sm_pfit )
1118
- self.sm_e2a_min = self.sm_e2a.copy()
1119
- self.sm_e2a_max = self.sm_e2a.copy()
1120
- self.sm_pre = func_pre_NLEFT2024( xdata, self.sm_den, *self.sm_pfit )
1542
+ self.sm_pcerr = np.zeros((100, 3), dtype=float)
1543
+ self.sm_e2a_int = func_e2a_NLEFT2024(xdata, *self.sm_pfit)
1544
+ self.sm_e2a = self.sm_rmass + self.sm_e2a_int
1545
+ self.sm_e2a_int_min = self.sm_e2a_int.copy()
1546
+ self.sm_e2a_int_max = self.sm_e2a_int.copy()
1547
+ self.sm_pre = func_pre_NLEFT2024(xdata, self.sm_den, *self.sm_pfit)
1121
1548
  self.sm_pre_min = self.sm_pre.copy()
1122
1549
  self.sm_pre_max = self.sm_pre.copy()
1123
- self.sm_dpredn = func_dpredn_NLEFT2024( xdata, self.sm_den, *self.sm_pfit )
1550
+ self.sm_dpredn = func_dpredn_NLEFT2024(xdata, self.sm_den, *self.sm_pfit)
1124
1551
  self.sm_dpredn_min = self.sm_dpredn.copy()
1125
1552
  self.sm_dpredn_max = self.sm_dpredn.copy()
1126
1553
  for k in range(100):
1127
- b = self.sm_pfit[0] + 0.1*(random.random()-0.5)*self.sm_perr[0]
1128
- c = self.sm_pfit[1] + 0.1*(random.random()-0.5)*self.sm_perr[1]
1129
- d = self.sm_pfit[2] + 0.1*(random.random()-0.5)*self.sm_perr[2]
1130
- self.sm_pcerr[k,0] = b
1131
- self.sm_pcerr[k,1] = c
1132
- self.sm_pcerr[k,2] = d
1133
- param = np.array( [ b, c, d ] )
1554
+ b = self.sm_pfit[0] + 0.1 * (random.random() - 0.5) * self.sm_perr[0]
1555
+ c = self.sm_pfit[1] + 0.1 * (random.random() - 0.5) * self.sm_perr[1]
1556
+ d = self.sm_pfit[2] + 0.1 * (random.random() - 0.5) * self.sm_perr[2]
1557
+ self.sm_pcerr[k, 0] = b
1558
+ self.sm_pcerr[k, 1] = c
1559
+ self.sm_pcerr[k, 2] = d
1560
+ param = np.array([b, c, d])
1134
1561
  # e2a
1135
- af = func_e2a_NLEFT2024( xdata, *param )
1136
- for l,val in enumerate(af):
1137
- if val > self.sm_e2a_max[l]: self.sm_e2a_max[l] = val
1138
- if val < self.sm_e2a_min[l]: self.sm_e2a_min[l] = val
1139
- self.sm_e2a_err = 0.5 * ( self.sm_e2a_max - self.sm_e2a_min )
1562
+ af = func_e2a_NLEFT2024(xdata, *param)
1563
+ for l, val in enumerate(af):
1564
+ if val > self.sm_e2a_int_max[l]:
1565
+ self.sm_e2a_int_max[l] = val
1566
+ if val < self.sm_e2a_int_min[l]:
1567
+ self.sm_e2a_int_min[l] = val
1568
+ self.sm_e2a_err = 0.5 * (self.sm_e2a_int_max - self.sm_e2a_int_min)
1140
1569
  # pre
1141
- af = func_pre_NLEFT2024( xdata, self.sm_den, *param )
1142
- for l,val in enumerate(af):
1143
- if val > self.sm_pre_max[l]: self.sm_pre_max[l] = val
1144
- if val < self.sm_pre_min[l]: self.sm_pre_min[l] = val
1145
- self.sm_pre_err = 0.5 * ( self.sm_pre_max - self.sm_pre_min )
1570
+ af = func_pre_NLEFT2024(xdata, self.sm_den, *param)
1571
+ for l, val in enumerate(af):
1572
+ if val > self.sm_pre_max[l]:
1573
+ self.sm_pre_max[l] = val
1574
+ if val < self.sm_pre_min[l]:
1575
+ self.sm_pre_min[l] = val
1576
+ self.sm_pre_err = 0.5 * (self.sm_pre_max - self.sm_pre_min)
1146
1577
  # dpdn
1147
- af = func_dpredn_NLEFT2024( xdata, self.sm_den, *param )
1148
- for l,val in enumerate(af):
1149
- if val > self.sm_dpredn_max[l]: self.sm_dpredn_max[l] = val
1150
- if val < self.sm_dpredn_min[l]: self.sm_dpredn_min[l] = val
1151
- self.sm_dpredn_err = 0.5 * ( self.sm_dpredn_max - self.sm_dpredn_min )
1152
- #print('sm_pcerr:',self.sm_pcerr)
1153
- #self.sm_e2a = self.sm_e2a_fit
1154
- #self.sm_e2a_err = self.sm_e2a_fit_err
1155
- self.sm_e2v = self.sm_e2a * self.sm_den
1156
- self.sm_e2v_err = self.sm_e2a_err * self.sm_den
1578
+ af = func_dpredn_NLEFT2024(xdata, self.sm_den, *param)
1579
+ for l, val in enumerate(af):
1580
+ if val > self.sm_dpredn_max[l]:
1581
+ self.sm_dpredn_max[l] = val
1582
+ if val < self.sm_dpredn_min[l]:
1583
+ self.sm_dpredn_min[l] = val
1584
+ self.sm_dpredn_err = 0.5 * (self.sm_dpredn_max - self.sm_dpredn_min)
1585
+ # print('sm_pcerr:',self.sm_pcerr)
1586
+ # self.sm_e2a = self.sm_e2a_fit
1587
+ # self.sm_e2a_err = self.sm_e2a_fit_err
1588
+ self.sm_eps = self.sm_e2a * self.sm_den
1589
+ self.sm_eps_err = self.sm_e2a_err * self.sm_den
1157
1590
  #
1158
1591
  # Read NM results
1159
- self.nm_A, self.nm_L, self.nm_den, self.nm_etot, self.nm_etot_err \
1160
- = np.loadtxt( file_in2, usecols = (0, 1, 2, 3, 4), comments='#', unpack = True, delimiter=',' )
1161
- self.nm_kfn = nuda.kf_n( self.nm_den )
1162
- self.nm_e2adata = self.nm_etot / self.nm_A
1163
- self.nm_e2adata_err = self.nm_etot_err / self.nm_A
1164
- self.nm_e2vdata = self.nm_e2adata * self.nm_den
1165
- self.nm_e2vdata_err = self.nm_e2adata_err * self.nm_den
1592
+ self.nm_A, self.nm_L, self.nm_den, self.nm_etot_int, self.nm_etot_err = (
1593
+ np.loadtxt(
1594
+ file_in2,
1595
+ usecols=(0, 1, 2, 3, 4),
1596
+ comments="#",
1597
+ unpack=True,
1598
+ delimiter=",",
1599
+ )
1600
+ )
1601
+ self.nm_kfn = nuda.kf_n(self.nm_den)
1602
+ self.nm_e2a_int_data = self.nm_etot_int / self.nm_A
1603
+ self.nm_e2a_err_data = self.nm_etot_err / self.nm_A
1604
+ self.nm_e2a_data = self.nm_rmass + self.nm_e2a_int_data
1605
+ self.nm_eps_data = self.nm_e2a_data * self.nm_den
1606
+ self.nm_eps_err_data = self.nm_e2a_err_data * self.nm_den
1166
1607
  # fit with EFFG
1167
1608
  xdata = self.nm_kfn
1168
- ydata = self.nm_e2adata
1169
- nm_popt, nm_pcov = curve_fit( func_e2a_NLEFT2024, xdata, ydata )
1170
- print('nm_popt:',nm_popt)
1171
- print('nm_pcov:',nm_pcov)
1609
+ ydata = self.nm_e2a_int_data
1610
+ nm_popt, nm_pcov = curve_fit(func_e2a_NLEFT2024, xdata, ydata)
1611
+ print("nm_popt:", nm_popt)
1612
+ print("nm_pcov:", nm_pcov)
1172
1613
  self.nm_pfit = nm_popt
1173
- self.nm_perr = np.sqrt( np.diag( nm_pcov ) )
1174
- self.nm_pcerr = np.zeros( (100,3), dtype=float )
1175
- self.nm_e2a = func_e2a_NLEFT2024( xdata, *self.nm_pfit )
1176
- self.nm_e2a_min = self.nm_e2a.copy()
1177
- self.nm_e2a_max = self.nm_e2a.copy()
1178
- self.nm_pre = func_pre_NLEFT2024( xdata, self.nm_den, *self.nm_pfit )
1614
+ self.nm_perr = np.sqrt(np.diag(nm_pcov))
1615
+ self.nm_pcerr = np.zeros((100, 3), dtype=float)
1616
+ self.nm_e2a_int = func_e2a_NLEFT2024(xdata, *self.nm_pfit)
1617
+ self.nm_e2a = self.nm_rmass + self.nm_e2a_int
1618
+ self.nm_e2a_int_min = self.nm_e2a_int.copy()
1619
+ self.nm_e2a_int_max = self.nm_e2a_int.copy()
1620
+ self.nm_pre = func_pre_NLEFT2024(xdata, self.nm_den, *self.nm_pfit)
1179
1621
  self.nm_pre_min = self.nm_pre.copy()
1180
1622
  self.nm_pre_max = self.nm_pre.copy()
1181
- self.nm_dpredn = func_dpredn_NLEFT2024( xdata, self.nm_den, *self.nm_pfit )
1623
+ self.nm_dpredn = func_dpredn_NLEFT2024(xdata, self.nm_den, *self.nm_pfit)
1182
1624
  self.nm_dpredn_min = self.nm_dpredn.copy()
1183
1625
  self.nm_dpredn_max = self.nm_dpredn.copy()
1184
1626
  for k in range(100):
1185
- b = self.nm_pfit[0] + 0.2*(random.random()-0.5)*self.nm_perr[0]
1186
- c = self.nm_pfit[1] + 0.2*(random.random()-0.5)*self.nm_perr[1]
1187
- d = self.nm_pfit[2] + 0.2*(random.random()-0.5)*self.nm_perr[2]
1188
- self.nm_pcerr[k,0] = b
1189
- self.nm_pcerr[k,1] = c
1190
- self.nm_pcerr[k,2] = d
1191
- param = np.array( [ b, c, d ] )
1627
+ b = self.nm_pfit[0] + 0.2 * (random.random() - 0.5) * self.nm_perr[0]
1628
+ c = self.nm_pfit[1] + 0.2 * (random.random() - 0.5) * self.nm_perr[1]
1629
+ d = self.nm_pfit[2] + 0.2 * (random.random() - 0.5) * self.nm_perr[2]
1630
+ self.nm_pcerr[k, 0] = b
1631
+ self.nm_pcerr[k, 1] = c
1632
+ self.nm_pcerr[k, 2] = d
1633
+ param = np.array([b, c, d])
1192
1634
  # e2a
1193
- af = func_e2a_NLEFT2024( xdata, *param )
1194
- for l,val in enumerate(af):
1195
- if val > self.nm_e2a_max[l]: self.nm_e2a_max[l] = val
1196
- if val < self.nm_e2a_min[l]: self.nm_e2a_min[l] = val
1197
- self.nm_e2a_err = 0.5 * ( self.nm_e2a_max - self.nm_e2a_min )
1635
+ af = func_e2a_NLEFT2024(xdata, *param)
1636
+ for l, val in enumerate(af):
1637
+ if val > self.nm_e2a_int_max[l]:
1638
+ self.nm_e2a_int_max[l] = val
1639
+ if val < self.nm_e2a_int_min[l]:
1640
+ self.nm_e2a_int_min[l] = val
1641
+ self.nm_e2a_err = 0.5 * (self.nm_e2a_int_max - self.nm_e2a_int_min)
1198
1642
  # pre
1199
- af = func_pre_NLEFT2024( xdata, self.nm_den, *param )
1200
- for l,val in enumerate(af):
1201
- if val > self.nm_pre_max[l]: self.nm_pre_max[l] = val
1202
- if val < self.nm_pre_min[l]: self.nm_pre_min[l] = val
1203
- self.nm_pre_err = 0.5 * ( self.nm_pre_max - self.nm_pre_min )
1643
+ af = func_pre_NLEFT2024(xdata, self.nm_den, *param)
1644
+ for l, val in enumerate(af):
1645
+ if val > self.nm_pre_max[l]:
1646
+ self.nm_pre_max[l] = val
1647
+ if val < self.nm_pre_min[l]:
1648
+ self.nm_pre_min[l] = val
1649
+ self.nm_pre_err = 0.5 * (self.nm_pre_max - self.nm_pre_min)
1204
1650
  # dpdn
1205
- af = func_dpredn_NLEFT2024( xdata, self.nm_den, *param )
1206
- for l,val in enumerate(af):
1207
- if val > self.nm_dpredn_max[l]: self.nm_dpredn_max[l] = val
1208
- if val < self.nm_dpredn_min[l]: self.nm_dpredn_min[l] = val
1209
- self.nm_dpredn_err = 0.5 * ( self.nm_dpredn_max - self.nm_dpredn_min )
1210
- #print('nm_pcerr:',self.nm_pcerr)
1211
- #self.nm_e2a = self.nm_e2a_fit
1212
- #self.nm_e2a_err = self.nm_e2a_fit_err
1213
- self.nm_e2v = self.nm_e2a * self.nm_den
1214
- self.nm_e2v_err = self.nm_e2a_err * self.nm_den
1651
+ af = func_dpredn_NLEFT2024(xdata, self.nm_den, *param)
1652
+ for l, val in enumerate(af):
1653
+ if val > self.nm_dpredn_max[l]:
1654
+ self.nm_dpredn_max[l] = val
1655
+ if val < self.nm_dpredn_min[l]:
1656
+ self.nm_dpredn_min[l] = val
1657
+ self.nm_dpredn_err = 0.5 * (self.nm_dpredn_max - self.nm_dpredn_min)
1658
+ # print('nm_pcerr:',self.nm_pcerr)
1659
+ # self.nm_e2a = self.nm_e2a_fit
1660
+ # self.nm_e2a_err = self.nm_e2a_fit_err
1661
+ self.nm_eps = self.nm_e2a * self.nm_den
1662
+ self.nm_eps_err = self.nm_e2a_err * self.nm_den
1215
1663
  self.nm_pre = self.nm_pre
1216
1664
  self.nm_pre_err = self.nm_pre_err
1217
1665
  self.nm_dpredn = self.nm_dpredn
1218
1666
  self.nm_dpredn_err = self.nm_dpredn_err
1219
1667
  #
1220
1668
  # chemical potential
1221
- self.nm_chempot = ( np.array(self.nm_pre) + np.array(self.nm_e2v) ) / np.array(self.nm_den)
1222
- self.nm_chempot_err = ( np.array(self.nm_pre_err) + np.array(self.nm_e2v_err) ) / np.array(self.nm_den)
1223
- self.sm_chempot = ( np.array(self.sm_pre) + np.array(self.sm_e2v) ) / np.array(self.sm_den)
1224
- self.sm_chempot_err = ( np.array(self.sm_pre_err) + np.array(self.sm_e2v_err) ) / np.array(self.sm_den)
1669
+ #self.nm_chempot = (
1670
+ # np.array(self.nm_pre) + np.array(self.nm_eps)
1671
+ #) / np.array(self.nm_den)
1672
+ #self.nm_chempot_err = (
1673
+ # np.array(self.nm_pre_err) + np.array(self.nm_eps_err)
1674
+ #) / np.array(self.nm_den)
1675
+ #self.sm_chempot = (
1676
+ # np.array(self.sm_pre) + np.array(self.sm_eps)
1677
+ #) / np.array(self.sm_den)
1678
+ #self.sm_chempot_err = (
1679
+ # np.array(self.sm_pre_err) + np.array(self.sm_eps_err)
1680
+ #) / np.array(self.sm_den)
1225
1681
  #
1226
1682
  # enthalpy
1227
- self.sm_h2a = nuda.cst.mnuc2 + self.sm_e2a + self.sm_pre / self.sm_den
1683
+ self.sm_h2a = self.sm_e2a + self.sm_pre / self.sm_den
1228
1684
  self.sm_h2a_err = self.sm_e2a_err + self.sm_pre_err / self.sm_den
1229
- self.nm_h2a = nuda.cst.mnuc2 + self.nm_e2a + self.nm_pre / self.nm_den
1685
+ self.nm_h2a = self.nm_e2a + self.nm_pre / self.nm_den
1230
1686
  self.nm_h2a_err = self.nm_e2a_err + self.nm_pre_err / self.nm_den
1231
1687
  #
1232
1688
  # sound speed
1233
1689
  self.sm_cs2 = self.sm_dpredn / self.sm_h2a
1234
- self.sm_cs2_err = np.abs( self.sm_dpredn_err / self.sm_h2a ) + \
1235
- np.abs( self.sm_dpredn * self.sm_h2a_err / self.sm_h2a )
1690
+ self.sm_cs2_err = np.abs(self.sm_dpredn_err / self.sm_h2a) + np.abs(
1691
+ self.sm_dpredn * self.sm_h2a_err / self.sm_h2a
1692
+ )
1236
1693
  self.nm_cs2 = self.nm_dpredn / self.nm_h2a
1237
- self.nm_cs2_err = np.abs( self.nm_dpredn_err / self.nm_h2a ) + \
1238
- np.abs( self.nm_dpredn * self.nm_h2a_err / self.nm_h2a )
1694
+ self.nm_cs2_err = np.abs(self.nm_dpredn_err / self.nm_h2a) + np.abs(
1695
+ self.nm_dpredn * self.nm_h2a_err / self.nm_h2a
1696
+ )
1239
1697
  #
1240
- elif '2024-bhf-am' in model.lower():
1698
+ elif "2024-bhf-am" in model.lower():
1241
1699
  #
1242
1700
  self.flag_nm = True
1243
1701
  self.flag_sm = True
1244
1702
  self.flag_kf = False
1245
1703
  self.flag_den = True
1246
1704
  # 2BF
1247
- if model.lower() == '2024-bhf-am-2bf-av8p':
1248
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-2BF/spin_isosp_Av8p2BF.dat')
1249
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-2BF/spin_isosp_Av8p2BF.dat')
1250
- self.label = 'BHF-2024-2BF-Av8p'
1251
- elif model.lower() == '2024-bhf-am-2bf-av18':
1252
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-2BF/spin_isosp_Av182BF.dat')
1253
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-2BF/spin_isosp_Av182BF.dat')
1254
- self.label = 'BHF-2024-2BF-Av18'
1255
- elif model.lower() == '2024-bhf-am-2bf-bonn':
1256
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-2BF/spin_isosp_BONN2BF.dat')
1257
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-2BF/spin_isosp_BONN2BF.dat')
1258
- self.label = 'BHF-2024-2BF-Bonn'
1259
- elif model.lower() == '2024-bhf-am-2bf-cdbonn':
1260
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-2BF/spin_isosp_CDBONN2BF.dat')
1261
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-2BF/spin_isosp_CDBONN2BF.dat')
1262
- self.label = 'BHF-2024-2BF-CDBonn'
1263
- elif model.lower() == '2024-bhf-am-2bf-sscv14':
1264
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-2BF/spin_isosp_SSCV142BF.dat')
1265
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-2BF/spin_isosp_SSCV142BF.dat')
1266
- self.label = 'BHF-2024-2BF-SSCV14'
1267
- elif model.lower() == '2024-bhf-am-2bf-nsc97a':
1268
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97a2BF.dat')
1269
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97a2BF.dat')
1270
- self.label = 'BHF-2024-2BF-NSC97a'
1271
- elif model.lower() == '2024-bhf-am-2bf-nsc97b':
1272
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97b2BF.dat')
1273
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97b2BF.dat')
1274
- self.label = 'BHF-2024-2BF-NSC97b'
1275
- elif model.lower() == '2024-bhf-am-2bf-nsc97c':
1276
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97c2BF.dat')
1277
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97c2BF.dat')
1278
- self.label = 'BHF-2024-2BF-NSC97c'
1279
- elif model.lower() == '2024-bhf-am-2bf-nsc97d':
1280
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97d2BF.dat')
1281
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97d2BF.dat')
1282
- self.label = 'BHF-2024-2BF-NSC97d'
1283
- elif model.lower() == '2024-bhf-am-2bf-nsc97e':
1284
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97e2BF.dat')
1285
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97e2BF.dat')
1286
- self.label = 'BHF-2024-2BF-NSC97e'
1287
- elif model.lower() == '2024-bhf-am-2bf-nsc97f':
1288
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97f2BF.dat')
1289
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97f2BF.dat')
1290
- self.label = 'BHF-2024-2BF-NSC97f'
1705
+ if model.lower() == "2024-bhf-am-2bf-av8p":
1706
+ file_in1 = os.path.join(
1707
+ nuda.param.path_data,
1708
+ "matter/micro/2024-BHF-SM-2BF/spin_isosp_Av8p2BF.dat",
1709
+ )
1710
+ file_in2 = os.path.join(
1711
+ nuda.param.path_data,
1712
+ "matter/micro/2024-BHF-NM-2BF/spin_isosp_Av8p2BF.dat",
1713
+ )
1714
+ self.label = "BHF-2024-2BF-Av8p"
1715
+ elif model.lower() == "2024-bhf-am-2bf-av18":
1716
+ file_in1 = os.path.join(
1717
+ nuda.param.path_data,
1718
+ "matter/micro/2024-BHF-SM-2BF/spin_isosp_Av182BF.dat",
1719
+ )
1720
+ file_in2 = os.path.join(
1721
+ nuda.param.path_data,
1722
+ "matter/micro/2024-BHF-NM-2BF/spin_isosp_Av182BF.dat",
1723
+ )
1724
+ self.label = "BHF-2024-2BF-Av18"
1725
+ elif model.lower() == "2024-bhf-am-2bf-bonn":
1726
+ file_in1 = os.path.join(
1727
+ nuda.param.path_data,
1728
+ "matter/micro/2024-BHF-SM-2BF/spin_isosp_BONN2BF.dat",
1729
+ )
1730
+ file_in2 = os.path.join(
1731
+ nuda.param.path_data,
1732
+ "matter/micro/2024-BHF-NM-2BF/spin_isosp_BONN2BF.dat",
1733
+ )
1734
+ self.label = "BHF-2024-2BF-Bonn"
1735
+ elif model.lower() == "2024-bhf-am-2bf-cdbonn":
1736
+ file_in1 = os.path.join(
1737
+ nuda.param.path_data,
1738
+ "matter/micro/2024-BHF-SM-2BF/spin_isosp_CDBONN2BF.dat",
1739
+ )
1740
+ file_in2 = os.path.join(
1741
+ nuda.param.path_data,
1742
+ "matter/micro/2024-BHF-NM-2BF/spin_isosp_CDBONN2BF.dat",
1743
+ )
1744
+ self.label = "BHF-2024-2BF-CDBonn"
1745
+ elif model.lower() == "2024-bhf-am-2bf-sscv14":
1746
+ file_in1 = os.path.join(
1747
+ nuda.param.path_data,
1748
+ "matter/micro/2024-BHF-SM-2BF/spin_isosp_SSCV142BF.dat",
1749
+ )
1750
+ file_in2 = os.path.join(
1751
+ nuda.param.path_data,
1752
+ "matter/micro/2024-BHF-NM-2BF/spin_isosp_SSCV142BF.dat",
1753
+ )
1754
+ self.label = "BHF-2024-2BF-SSCV14"
1755
+ elif model.lower() == "2024-bhf-am-2bf-nsc97a":
1756
+ file_in1 = os.path.join(
1757
+ nuda.param.path_data,
1758
+ "matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97a2BF.dat",
1759
+ )
1760
+ file_in2 = os.path.join(
1761
+ nuda.param.path_data,
1762
+ "matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97a2BF.dat",
1763
+ )
1764
+ self.label = "BHF-2024-2BF-NSC97a"
1765
+ elif model.lower() == "2024-bhf-am-2bf-nsc97b":
1766
+ file_in1 = os.path.join(
1767
+ nuda.param.path_data,
1768
+ "matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97b2BF.dat",
1769
+ )
1770
+ file_in2 = os.path.join(
1771
+ nuda.param.path_data,
1772
+ "matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97b2BF.dat",
1773
+ )
1774
+ self.label = "BHF-2024-2BF-NSC97b"
1775
+ elif model.lower() == "2024-bhf-am-2bf-nsc97c":
1776
+ file_in1 = os.path.join(
1777
+ nuda.param.path_data,
1778
+ "matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97c2BF.dat",
1779
+ )
1780
+ file_in2 = os.path.join(
1781
+ nuda.param.path_data,
1782
+ "matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97c2BF.dat",
1783
+ )
1784
+ self.label = "BHF-2024-2BF-NSC97c"
1785
+ elif model.lower() == "2024-bhf-am-2bf-nsc97d":
1786
+ file_in1 = os.path.join(
1787
+ nuda.param.path_data,
1788
+ "matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97d2BF.dat",
1789
+ )
1790
+ file_in2 = os.path.join(
1791
+ nuda.param.path_data,
1792
+ "matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97d2BF.dat",
1793
+ )
1794
+ self.label = "BHF-2024-2BF-NSC97d"
1795
+ elif model.lower() == "2024-bhf-am-2bf-nsc97e":
1796
+ file_in1 = os.path.join(
1797
+ nuda.param.path_data,
1798
+ "matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97e2BF.dat",
1799
+ )
1800
+ file_in2 = os.path.join(
1801
+ nuda.param.path_data,
1802
+ "matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97e2BF.dat",
1803
+ )
1804
+ self.label = "BHF-2024-2BF-NSC97e"
1805
+ elif model.lower() == "2024-bhf-am-2bf-nsc97f":
1806
+ file_in1 = os.path.join(
1807
+ nuda.param.path_data,
1808
+ "matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97f2BF.dat",
1809
+ )
1810
+ file_in2 = os.path.join(
1811
+ nuda.param.path_data,
1812
+ "matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97f2BF.dat",
1813
+ )
1814
+ self.label = "BHF-2024-2BF-NSC97f"
1291
1815
  # 2+3BF
1292
- elif model.lower() == '2024-bhf-am-23bf-av8p':
1293
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_Av8p23BF.dat')
1294
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_Av8p23BF.dat')
1295
- self.label = 'BHF-2024-23BF-Av8p'
1296
- elif model.lower() == '2024-bhf-am-23bf-av18':
1297
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_Av1823BF.dat')
1298
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_Av1823BF.dat')
1299
- self.label = 'BHF-2024-23BF-Av18'
1300
- elif model.lower() == '2024-bhf-am-23bfmicro-av18':
1301
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_Av1823BFmicro.dat')
1302
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_Av1823BFmicro.dat')
1303
- self.label = 'BHF-2024-23BFmicro-Av18'
1304
- elif model.lower() == '2024-bhf-am-23bf-bonn':
1305
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_BONN23BF.dat')
1306
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_BONN23BF.dat')
1307
- self.label = 'BHF-2024-23BF-Bonn'
1308
- elif model.lower() == '2024-bhf-am-23bfmicro-bonnb':
1309
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_BONNB23BFmicro.dat')
1310
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_BONNB23BFmicro.dat')
1311
- self.label = 'BHF-2024-23BFMicro-BonnB'
1312
- elif model.lower() == '2024-bhf-am-23bf-cdbonn':
1313
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_CDBONN23BF.dat')
1314
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_CDBONN23BF.dat')
1315
- self.label = 'BHF-2024-23BF-CDBonn'
1316
- elif model.lower() == '2024-bhf-am-23bf-sscv14':
1317
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_SSCV1423BF.dat')
1318
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_SSCV1423BF.dat')
1319
- self.label = 'BHF-2024-23BF-SSCV14'
1320
- elif model.lower() == '2024-bhf-am-23bfmicro-nsc93':
1321
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC9323BFmicro.dat')
1322
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC9323BFmicro.dat')
1323
- self.label = 'BHF-2024-23BFmicro-NSC93'
1324
- elif model.lower() == '2024-bhf-am-23bf-nsc97a':
1325
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97a23BF.dat')
1326
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97a23BF.dat')
1327
- self.label = 'BHF-2024-23BF-NSC97a'
1328
- elif model.lower() == '2024-bhf-am-23bf-nsc97b':
1329
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97b23BF.dat')
1330
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97b23BF.dat')
1331
- self.label = 'BHF-2024-23BF-NSC97b'
1332
- elif model.lower() == '2024-bhf-am-23bf-nsc97c':
1333
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97c23BF.dat')
1334
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97c23BF.dat')
1335
- self.label = 'BHF-2024-23BF-NSC97c'
1336
- elif model.lower() == '2024-bhf-am-23bf-nsc97d':
1337
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97d23BF.dat')
1338
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97d23BF.dat')
1339
- self.label = 'BHF-2024-23BF-NSC9d7'
1340
- elif model.lower() == '2024-bhf-am-23bf-nsc97e':
1341
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97e23BF.dat')
1342
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97e23BF.dat')
1343
- self.label = 'BHF-2024-23BF-NSC97e'
1344
- elif model.lower() == '2024-bhf-am-23bf-nsc97f':
1345
- file_in1 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97f23BF.dat')
1346
- file_in2 = os.path.join(nuda.param.path_data,'matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97f23BF.dat')
1347
- self.label = 'BHF-2024-23BF-NSC97f'
1348
- #
1349
- if nuda.env.verb: print('Reads file:',file_in1)
1350
- if nuda.env.verb: print('Reads file:',file_in2)
1351
- self.ref = 'I. Vida\\~na, J. Margueron, H.J. Schulze, Universe 10, 5 (2024).'
1816
+ elif model.lower() == "2024-bhf-am-23bf-av8p":
1817
+ file_in1 = os.path.join(
1818
+ nuda.param.path_data,
1819
+ "matter/micro/2024-BHF-SM-23BF/spin_isosp_Av8p23BF.dat",
1820
+ )
1821
+ file_in2 = os.path.join(
1822
+ nuda.param.path_data,
1823
+ "matter/micro/2024-BHF-NM-23BF/spin_isosp_Av8p23BF.dat",
1824
+ )
1825
+ self.label = "BHF-2024-23BF-Av8p"
1826
+ elif model.lower() == "2024-bhf-am-23bf-av18":
1827
+ file_in1 = os.path.join(
1828
+ nuda.param.path_data,
1829
+ "matter/micro/2024-BHF-SM-23BF/spin_isosp_Av1823BF.dat",
1830
+ )
1831
+ file_in2 = os.path.join(
1832
+ nuda.param.path_data,
1833
+ "matter/micro/2024-BHF-NM-23BF/spin_isosp_Av1823BF.dat",
1834
+ )
1835
+ self.label = "BHF-2024-23BF-Av18"
1836
+ elif model.lower() == "2024-bhf-am-23bfmicro-av18":
1837
+ file_in1 = os.path.join(
1838
+ nuda.param.path_data,
1839
+ "matter/micro/2024-BHF-SM-23BF/spin_isosp_Av1823BFmicro.dat",
1840
+ )
1841
+ file_in2 = os.path.join(
1842
+ nuda.param.path_data,
1843
+ "matter/micro/2024-BHF-NM-23BF/spin_isosp_Av1823BFmicro.dat",
1844
+ )
1845
+ self.label = "BHF-2024-23BFmicro-Av18"
1846
+ elif model.lower() == "2024-bhf-am-23bf-bonn":
1847
+ file_in1 = os.path.join(
1848
+ nuda.param.path_data,
1849
+ "matter/micro/2024-BHF-SM-23BF/spin_isosp_BONN23BF.dat",
1850
+ )
1851
+ file_in2 = os.path.join(
1852
+ nuda.param.path_data,
1853
+ "matter/micro/2024-BHF-NM-23BF/spin_isosp_BONN23BF.dat",
1854
+ )
1855
+ self.label = "BHF-2024-23BF-Bonn"
1856
+ elif model.lower() == "2024-bhf-am-23bfmicro-bonnb":
1857
+ file_in1 = os.path.join(
1858
+ nuda.param.path_data,
1859
+ "matter/micro/2024-BHF-SM-23BF/spin_isosp_BONNB23BFmicro.dat",
1860
+ )
1861
+ file_in2 = os.path.join(
1862
+ nuda.param.path_data,
1863
+ "matter/micro/2024-BHF-NM-23BF/spin_isosp_BONNB23BFmicro.dat",
1864
+ )
1865
+ self.label = "BHF-2024-23BFMicro-BonnB"
1866
+ elif model.lower() == "2024-bhf-am-23bf-cdbonn":
1867
+ file_in1 = os.path.join(
1868
+ nuda.param.path_data,
1869
+ "matter/micro/2024-BHF-SM-23BF/spin_isosp_CDBONN23BF.dat",
1870
+ )
1871
+ file_in2 = os.path.join(
1872
+ nuda.param.path_data,
1873
+ "matter/micro/2024-BHF-NM-23BF/spin_isosp_CDBONN23BF.dat",
1874
+ )
1875
+ self.label = "BHF-2024-23BF-CDBonn"
1876
+ elif model.lower() == "2024-bhf-am-23bf-sscv14":
1877
+ file_in1 = os.path.join(
1878
+ nuda.param.path_data,
1879
+ "matter/micro/2024-BHF-SM-23BF/spin_isosp_SSCV1423BF.dat",
1880
+ )
1881
+ file_in2 = os.path.join(
1882
+ nuda.param.path_data,
1883
+ "matter/micro/2024-BHF-NM-23BF/spin_isosp_SSCV1423BF.dat",
1884
+ )
1885
+ self.label = "BHF-2024-23BF-SSCV14"
1886
+ elif model.lower() == "2024-bhf-am-23bfmicro-nsc93":
1887
+ file_in1 = os.path.join(
1888
+ nuda.param.path_data,
1889
+ "matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC9323BFmicro.dat",
1890
+ )
1891
+ file_in2 = os.path.join(
1892
+ nuda.param.path_data,
1893
+ "matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC9323BFmicro.dat",
1894
+ )
1895
+ self.label = "BHF-2024-23BFmicro-NSC93"
1896
+ elif model.lower() == "2024-bhf-am-23bf-nsc97a":
1897
+ file_in1 = os.path.join(
1898
+ nuda.param.path_data,
1899
+ "matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97a23BF.dat",
1900
+ )
1901
+ file_in2 = os.path.join(
1902
+ nuda.param.path_data,
1903
+ "matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97a23BF.dat",
1904
+ )
1905
+ self.label = "BHF-2024-23BF-NSC97a"
1906
+ elif model.lower() == "2024-bhf-am-23bf-nsc97b":
1907
+ file_in1 = os.path.join(
1908
+ nuda.param.path_data,
1909
+ "matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97b23BF.dat",
1910
+ )
1911
+ file_in2 = os.path.join(
1912
+ nuda.param.path_data,
1913
+ "matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97b23BF.dat",
1914
+ )
1915
+ self.label = "BHF-2024-23BF-NSC97b"
1916
+ elif model.lower() == "2024-bhf-am-23bf-nsc97c":
1917
+ file_in1 = os.path.join(
1918
+ nuda.param.path_data,
1919
+ "matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97c23BF.dat",
1920
+ )
1921
+ file_in2 = os.path.join(
1922
+ nuda.param.path_data,
1923
+ "matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97c23BF.dat",
1924
+ )
1925
+ self.label = "BHF-2024-23BF-NSC97c"
1926
+ elif model.lower() == "2024-bhf-am-23bf-nsc97d":
1927
+ file_in1 = os.path.join(
1928
+ nuda.param.path_data,
1929
+ "matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97d23BF.dat",
1930
+ )
1931
+ file_in2 = os.path.join(
1932
+ nuda.param.path_data,
1933
+ "matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97d23BF.dat",
1934
+ )
1935
+ self.label = "BHF-2024-23BF-NSC9d7"
1936
+ elif model.lower() == "2024-bhf-am-23bf-nsc97e":
1937
+ file_in1 = os.path.join(
1938
+ nuda.param.path_data,
1939
+ "matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97e23BF.dat",
1940
+ )
1941
+ file_in2 = os.path.join(
1942
+ nuda.param.path_data,
1943
+ "matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97e23BF.dat",
1944
+ )
1945
+ self.label = "BHF-2024-23BF-NSC97e"
1946
+ elif model.lower() == "2024-bhf-am-23bf-nsc97f":
1947
+ file_in1 = os.path.join(
1948
+ nuda.param.path_data,
1949
+ "matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97f23BF.dat",
1950
+ )
1951
+ file_in2 = os.path.join(
1952
+ nuda.param.path_data,
1953
+ "matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97f23BF.dat",
1954
+ )
1955
+ self.label = "BHF-2024-23BF-NSC97f"
1956
+ #
1957
+ if nuda.env.verb:
1958
+ print("Reads file:", file_in1)
1959
+ if nuda.env.verb:
1960
+ print("Reads file:", file_in2)
1961
+ self.ref = (
1962
+ "I. Vida\\~na, J. Margueron, H.J. Schulze, Universe 10, 5 (2024)."
1963
+ )
1352
1964
  self.note = ""
1353
- self.marker = 'o'
1354
- self.linestyle = 'solid'
1965
+ self.marker = "o"
1966
+ self.linestyle = "solid"
1355
1967
  self.every = 2
1356
1968
  self.e_err = False
1357
1969
  self.p_err = False
1358
- #
1359
- self.sm_den, self.sm_vS0T0, self.sm_vS0T1, self.sm_vS1T0, self.sm_vS1T1, self.sm_vtot, self.sm_kin, self.sm_etot \
1360
- = np.loadtxt( file_in1, usecols = (0, 1, 2, 3, 4, 5, 6, 7), comments='#', unpack = True)
1361
- self.sm_den_min = min( self.sm_den ); self.sm_den_max = max( self.sm_den )
1362
- self.sm_kfn = nuda.kf_n( nuda.cst.half * self.sm_den )
1970
+ self.cs2_err = False
1971
+ #
1972
+ (
1973
+ self.sm_den,
1974
+ self.sm_vS0T0,
1975
+ self.sm_vS0T1,
1976
+ self.sm_vS1T0,
1977
+ self.sm_vS1T1,
1978
+ self.sm_vtot,
1979
+ self.sm_kin,
1980
+ self.sm_etot,
1981
+ ) = np.loadtxt(
1982
+ file_in1, usecols=(0, 1, 2, 3, 4, 5, 6, 7), comments="#", unpack=True
1983
+ )
1984
+ self.sm_den_min = min(self.sm_den)
1985
+ self.sm_den_max = max(self.sm_den)
1986
+ self.sm_kfn = nuda.kf_n(nuda.cst.half * self.sm_den)
1363
1987
  self.sm_kf = self.sm_kfn
1364
- self.sm_e2a = self.sm_etot
1365
- self.sm_e2a_err = np.abs( uncertainty_stat(self.sm_den,err='MBPT') * self.sm_e2a )
1366
- self.sm_e2v = self.sm_e2a * self.sm_den
1367
- self.sm_e2v_err = self.sm_e2a_err * self.sm_den
1368
- #
1369
- self.nm_den, self.nm_vS0T0, self.nm_vS0T1, self.nm_vS1T0, self.nm_vS1T1, self.nm_vtot, self.nm_kin, self.nm_etot \
1370
- = np.loadtxt( file_in2, usecols = (0, 1, 2, 3, 4, 5, 6, 7), comments='#', unpack = True)
1371
- self.nm_den_min = min( self.sm_den ); self.sm_den_max = max( self.sm_den )
1372
- self.nm_kfn = nuda.kf_n( self.nm_den )
1373
- self.nm_e2a = self.nm_etot
1374
- self.nm_e2a_err = np.abs( uncertainty_stat(self.nm_den,err='MBPT') * self.nm_e2a )
1375
- self.nm_e2v = self.nm_e2a * self.nm_den
1376
- self.nm_e2v_err = self.nm_e2a_err * self.nm_den
1377
- #
1378
- elif model.lower() == '2024-qmc-nm':
1988
+ self.sm_e2a_int = self.sm_etot
1989
+ self.sm_e2a = self.sm_rmass + self.sm_e2a_int
1990
+ self.sm_e2a_err = np.abs(
1991
+ uncertainty_stat(self.sm_den, err="MBPT") * self.sm_e2a_int
1992
+ )
1993
+ self.sm_eps = self.sm_e2a * self.sm_den
1994
+ self.sm_eps_err = self.sm_e2a_err * self.sm_den
1995
+ #
1996
+ (
1997
+ self.nm_den,
1998
+ self.nm_vS0T0,
1999
+ self.nm_vS0T1,
2000
+ self.nm_vS1T0,
2001
+ self.nm_vS1T1,
2002
+ self.nm_vtot,
2003
+ self.nm_kin,
2004
+ self.nm_etot,
2005
+ ) = np.loadtxt(
2006
+ file_in2, usecols=(0, 1, 2, 3, 4, 5, 6, 7), comments="#", unpack=True
2007
+ )
2008
+ self.nm_den_min = min(self.sm_den)
2009
+ self.sm_den_max = max(self.sm_den)
2010
+ self.nm_kfn = nuda.kf_n(self.nm_den)
2011
+ self.nm_e2a_int = self.nm_etot
2012
+ self.nm_e2a = self.nm_rmass + self.nm_e2a_int
2013
+ self.nm_e2a_err = np.abs(
2014
+ uncertainty_stat(self.nm_den, err="MBPT") * self.nm_e2a_int
2015
+ )
2016
+ self.nm_eps = self.nm_e2a * self.nm_den
2017
+ self.nm_eps_err = self.nm_e2a_err * self.nm_den
2018
+ #
2019
+ elif model.lower() == "2024-qmc-nm":
1379
2020
  #
1380
2021
  self.flag_nm = True
1381
2022
  self.flag_sm = False
1382
2023
  self.flag_kf = False
1383
2024
  self.flag_den = True
1384
2025
  #
1385
- file_in = os.path.join(nuda.param.path_data,'matter/micro/2024-DMC-NM.dat')
1386
- if nuda.env.verb: print('Reads file:',file_in)
1387
- 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]'
2026
+ file_in = os.path.join(nuda.param.path_data, "matter/micro/2024-DMC-NM.dat")
2027
+ if nuda.env.verb:
2028
+ print("Reads file:", file_in)
2029
+ 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]"
1388
2030
  self.note = ""
1389
- self.label = 'QMC-2024'
1390
- self.marker = 's'
2031
+ self.label = "QMC-2024"
2032
+ self.marker = "s"
1391
2033
  self.every = 1
1392
- self.linestyle = 'solid'
2034
+ self.linestyle = "solid"
1393
2035
  self.e_err = True
1394
2036
  self.p_err = False
1395
- self.nm_den, self.nm_e2a, self.nm_e2a_err_stat, self.nm_e2a_err_ekm, self.nm_e2a_err_gp \
1396
- = np.loadtxt( file_in, usecols=(0,1,2,3,4), unpack = True )
2037
+ self.cs2_err = False
2038
+ (
2039
+ self.nm_den,
2040
+ self.nm_e2a_int,
2041
+ self.nm_e2a_err_stat,
2042
+ self.nm_e2a_err_ekm,
2043
+ self.nm_e2a_err_gp,
2044
+ ) = np.loadtxt(file_in, usecols=(0, 1, 2, 3, 4), unpack=True)
2045
+ self.nm_kfn = nuda.kf_n(self.nm_den)
2046
+ self.nm_e2a = self.nm_rmass + self.nm_e2a_int
2047
+ self.nm_e2a_err = (
2048
+ self.nm_e2a_err_stat + self.nm_e2a_err_ekm + self.nm_e2a_err_gp
2049
+ )
2050
+ self.nm_eps = self.nm_e2a * self.nm_den
2051
+ self.nm_eps_err = self.nm_e2a_err * self.nm_den
2052
+ #
2053
+ elif "2024-mbpt-am" in model.lower():
2054
+ #
2055
+ self.flag_nm = True
2056
+ self.flag_sm = True
2057
+ self.flag_kf = False
2058
+ self.flag_den = True
2059
+ #
2060
+ if model.lower() == "2024-mbpt-am-dn2lo-450":
2061
+ file_in1 = os.path.join(
2062
+ nuda.param.path_data, "matter/micro/2024-ABI-SM-DeltaNNLO450.dat"
2063
+ )
2064
+ cols_sm=(0,3)
2065
+ file_in2 = os.path.join(
2066
+ nuda.param.path_data, "matter/micro/2024-ABI-NM-DeltaNNLO450.dat"
2067
+ )
2068
+ cols_nm=(0,2)
2069
+ elif model.lower() == "2024-mbpt-am-dn2lo-500":
2070
+ file_in1 = os.path.join(
2071
+ nuda.param.path_data, "matter/micro/2024-ABI-SM-DeltaNNLO500.dat"
2072
+ )
2073
+ cols_sm=(0,3)
2074
+ file_in2 = os.path.join(
2075
+ nuda.param.path_data, "matter/micro/2024-ABI-NM-DeltaNNLO500.dat"
2076
+ )
2077
+ cols_nm=(0,2)
2078
+ elif model.lower() == "2024-mbpt-am-dn2logo-394":
2079
+ file_in1 = os.path.join(
2080
+ nuda.param.path_data, "matter/micro/2024-ABI-SM-DeltaNNLOgo394.dat"
2081
+ )
2082
+ cols_sm=(0,3)
2083
+ file_in2 = os.path.join(
2084
+ nuda.param.path_data, "matter/micro/2024-ABI-NM-DeltaNNLOgo394.dat"
2085
+ )
2086
+ cols_nm=(0,2)
2087
+ elif model.lower() == "2024-mbpt-am-dn2logo-450":
2088
+ file_in1 = os.path.join(
2089
+ nuda.param.path_data, "matter/micro/2024-ABI-SM-DeltaNNLOgo450.dat"
2090
+ )
2091
+ cols_sm=(0,3)
2092
+ file_in2 = os.path.join(
2093
+ nuda.param.path_data, "matter/micro/2024-ABI-NM-DeltaNNLOgo450.dat"
2094
+ )
2095
+ cols_nm=(0,3)
2096
+ elif model.lower() == "2024-mbpt-am-n2losat":
2097
+ file_in1 = os.path.join(
2098
+ nuda.param.path_data, "matter/micro/2024-ABI-SM-NNLOsat.dat"
2099
+ )
2100
+ cols_sm=(0,3)
2101
+ file_in2 = os.path.join(
2102
+ nuda.param.path_data, "matter/micro/2024-ABI-NM-NNLOsat.dat"
2103
+ )
2104
+ cols_nm=(0,3)
2105
+ if nuda.env.verb:
2106
+ print("Reads file1:", file_in1)
2107
+ if nuda.env.verb:
2108
+ print("Reads file2:", file_in2)
2109
+ self.ref = "F. Marino, W.G. Jiang, and S.J. Novario, Phys. Rev. C 110, 054322 (2024)."
2110
+ self.note = "We consider MBPT(3) when possible, otherwise MBPT(2)."
2111
+ self.label = "MBPT-2024"
2112
+ self.model = model
2113
+ self.marker = "x"
2114
+ self.linestyle = "solid"
2115
+ self.every = 1
2116
+ self.e_err = False
2117
+ self.p_err = False
2118
+ self.cs2_err = False
2119
+ (
2120
+ self.sm_den,
2121
+ self.sm_e2a_n2lo,
2122
+ ) = np.loadtxt(
2123
+ file_in1,
2124
+ usecols=cols_sm,
2125
+ comments="#",
2126
+ unpack=True,
2127
+ )
2128
+ self.sm_e2a_int = self.sm_e2a_n2lo
2129
+ (
2130
+ self.nm_den,
2131
+ self.nm_e2a_n2lo,
2132
+ ) = np.loadtxt(
2133
+ file_in2,
2134
+ usecols=cols_nm,
2135
+ comments="#",
2136
+ unpack=True,
2137
+ )
2138
+ self.nm_e2a_int = self.nm_e2a_n2lo
2139
+ #
2140
+ self.nm_e2a = self.nm_rmass + self.nm_e2a_int
2141
+ self.sm_e2a = self.sm_rmass + self.sm_e2a_int
2142
+ self.nm_eps = self.nm_e2a * self.nm_den
2143
+ self.sm_eps = self.sm_e2a * self.sm_den
1397
2144
  self.nm_kfn = nuda.kf_n( self.nm_den )
1398
- self.nm_e2a_err = self.nm_e2a_err_stat + self.nm_e2a_err_ekm + self.nm_e2a_err_gp
1399
- self.nm_e2v = self.nm_e2a * self.nm_den
1400
- self.nm_e2v_err = self.nm_e2a_err * self.nm_den
2145
+ self.sm_kfn = nuda.kf_n( nuda.cst.half * self.sm_den )
2146
+ self.nm_e2a_err = np.abs( uncertainty_stat(self.nm_den, err="MBPT") * self.nm_e2a_int )
2147
+ self.sm_e2a_err = np.abs( uncertainty_stat(self.sm_den, err="MBPT") * self.sm_e2a_int )
2148
+ self.nm_eps_err = self.nm_e2a_err * self.nm_den
2149
+ self.sm_eps_err = self.sm_e2a_err * self.sm_den
2150
+ #
2151
+ elif "2024-scgf-am" in model.lower():
2152
+ #
2153
+ self.flag_nm = True
2154
+ self.flag_sm = True
2155
+ self.flag_kf = False
2156
+ self.flag_den = True
2157
+ #
2158
+ if model.lower() == "2024-scgf-am-dn2lo-450":
2159
+ file_in1 = os.path.join(
2160
+ nuda.param.path_data, "matter/micro/2024-ABI-SM-DeltaNNLO450.dat"
2161
+ )
2162
+ cols_sm=(0,7)
2163
+ file_in2 = os.path.join(
2164
+ nuda.param.path_data, "matter/micro/2024-ABI-NM-DeltaNNLO450.dat"
2165
+ )
2166
+ cols_nm=(0,5)
2167
+ elif model.lower() == "2024-scgf-am-dn2lo-500":
2168
+ file_in1 = os.path.join(
2169
+ nuda.param.path_data, "matter/micro/2024-ABI-SM-DeltaNNLO500.dat"
2170
+ )
2171
+ cols_sm=(0,7)
2172
+ file_in2 = os.path.join(
2173
+ nuda.param.path_data, "matter/micro/2024-ABI-NM-DeltaNNLO500.dat"
2174
+ )
2175
+ cols_nm=(0,5)
2176
+ elif model.lower() == "2024-scgf-am-dn2logo-394":
2177
+ file_in1 = os.path.join(
2178
+ nuda.param.path_data, "matter/micro/2024-ABI-SM-DeltaNNLOgo394.dat"
2179
+ )
2180
+ cols_sm=(0,7)
2181
+ file_in2 = os.path.join(
2182
+ nuda.param.path_data, "matter/micro/2024-ABI-NM-DeltaNNLOgo394.dat"
2183
+ )
2184
+ cols_nm=(0,5)
2185
+ elif model.lower() == "2024-scgf-am-dn2logo-450":
2186
+ file_in1 = os.path.join(
2187
+ nuda.param.path_data, "matter/micro/2024-ABI-SM-DeltaNNLOgo450.dat"
2188
+ )
2189
+ cols_sm=(0,7)
2190
+ file_in2 = os.path.join(
2191
+ nuda.param.path_data, "matter/micro/2024-ABI-NM-DeltaNNLOgo450.dat"
2192
+ )
2193
+ cols_nm=(0,7)
2194
+ elif model.lower() == "2024-scgf-am-n2losat":
2195
+ file_in1 = os.path.join(
2196
+ nuda.param.path_data, "matter/micro/2024-ABI-SM-NNLOsat.dat"
2197
+ )
2198
+ cols_sm=(0,7)
2199
+ file_in2 = os.path.join(
2200
+ nuda.param.path_data, "matter/micro/2024-ABI-NM-NNLOsat.dat"
2201
+ )
2202
+ cols_nm=(0,7)
2203
+ if nuda.env.verb:
2204
+ print("Reads file1:", file_in1)
2205
+ if nuda.env.verb:
2206
+ print("Reads file2:", file_in2)
2207
+ self.ref = "F. Marino, W.G. Jiang, and S.J. Novario, Phys. Rev. C 110, 054322 (2024)."
2208
+ self.note = "We consider ADC(3)-D when possible, otherwise ADC(3)"
2209
+ self.label = "SCGF-2024"
2210
+ self.marker = "x"
2211
+ self.linestyle = "solid"
2212
+ self.model = model
2213
+ self.every = 1
2214
+ self.e_err = False
2215
+ self.p_err = False
2216
+ self.cs2_err = False
2217
+ (
2218
+ self.sm_den,
2219
+ self.sm_e2a_n2lo,
2220
+ ) = np.loadtxt(
2221
+ file_in1,
2222
+ usecols=cols_sm,
2223
+ comments="#",
2224
+ unpack=True,
2225
+ )
2226
+ self.sm_e2a_int = self.sm_e2a_n2lo
2227
+ (
2228
+ self.nm_den,
2229
+ self.nm_e2a_n2lo,
2230
+ ) = np.loadtxt(
2231
+ file_in2,
2232
+ usecols=cols_nm,
2233
+ comments="#",
2234
+ unpack=True,
2235
+ )
2236
+ self.nm_e2a_int = self.nm_e2a_n2lo
2237
+ #
2238
+ self.nm_e2a = self.nm_rmass + self.nm_e2a_int
2239
+ self.sm_e2a = self.sm_rmass + self.sm_e2a_int
2240
+ self.nm_eps = self.nm_e2a * self.nm_den
2241
+ self.sm_eps = self.sm_e2a * self.sm_den
2242
+ self.nm_kfn = nuda.kf_n( self.nm_den )
2243
+ self.sm_kfn = nuda.kf_n( nuda.cst.half * self.sm_den )
2244
+ self.nm_e2a_err = np.abs( uncertainty_stat(self.nm_den, err="MBPT") * self.nm_e2a_int )
2245
+ self.sm_e2a_err = np.abs( uncertainty_stat(self.sm_den, err="MBPT") * self.sm_e2a_int )
2246
+ self.nm_eps_err = self.nm_e2a_err * self.nm_den
2247
+ self.sm_eps_err = self.sm_e2a_err * self.sm_den
2248
+ #
2249
+ elif "2024-cc-am" in model.lower():
2250
+ #
2251
+ self.flag_nm = True
2252
+ self.flag_sm = True
2253
+ self.flag_kf = False
2254
+ self.flag_den = True
2255
+ #
2256
+ if model.lower() == "2024-cc-am-dn2lo-450":
2257
+ file_in1 = os.path.join(
2258
+ nuda.param.path_data, "matter/micro/2024-ABI-SM-DeltaNNLO450.dat"
2259
+ )
2260
+ cols_sm=(0,5)
2261
+ file_in2 = os.path.join(
2262
+ nuda.param.path_data, "matter/micro/2024-ABI-NM-DeltaNNLO450.dat"
2263
+ )
2264
+ cols_nm=(0,4)
2265
+ elif model.lower() == "2024-cc-am-dn2lo-500":
2266
+ file_in1 = os.path.join(
2267
+ nuda.param.path_data, "matter/micro/2024-ABI-SM-DeltaNNLO500.dat"
2268
+ )
2269
+ cols_sm=(0,5)
2270
+ file_in2 = os.path.join(
2271
+ nuda.param.path_data, "matter/micro/2024-ABI-NM-DeltaNNLO500.dat"
2272
+ )
2273
+ cols_nm=(0,4)
2274
+ elif model.lower() == "2024-cc-am-dn2logo-394":
2275
+ file_in1 = os.path.join(
2276
+ nuda.param.path_data, "matter/micro/2024-ABI-SM-DeltaNNLOgo394.dat"
2277
+ )
2278
+ cols_sm=(0,5)
2279
+ file_in2 = os.path.join(
2280
+ nuda.param.path_data, "matter/micro/2024-ABI-NM-DeltaNNLOgo394.dat"
2281
+ )
2282
+ cols_nm=(0,4)
2283
+ elif model.lower() == "2024-cc-am-dn2logo-450":
2284
+ file_in1 = os.path.join(
2285
+ nuda.param.path_data, "matter/micro/2024-ABI-SM-DeltaNNLOgo450.dat"
2286
+ )
2287
+ cols_sm=(0,5)
2288
+ file_in2 = os.path.join(
2289
+ nuda.param.path_data, "matter/micro/2024-ABI-NM-DeltaNNLOgo450.dat"
2290
+ )
2291
+ cols_nm=(0,5)
2292
+ elif model.lower() == "2024-cc-am-n2losat":
2293
+ file_in1 = os.path.join(
2294
+ nuda.param.path_data, "matter/micro/2024-ABI-SM-NNLOsat.dat"
2295
+ )
2296
+ cols_sm=(0,5)
2297
+ file_in2 = os.path.join(
2298
+ nuda.param.path_data, "matter/micro/2024-ABI-NM-NNLOsat.dat"
2299
+ )
2300
+ cols_nm=(0,5)
2301
+ if nuda.env.verb:
2302
+ print("Reads file1:", file_in1)
2303
+ if nuda.env.verb:
2304
+ print("Reads file2:", file_in2)
2305
+ self.ref = "F. Marino, W.G. Jiang, and S.J. Novario, Phys. Rev. C 110, 054322 (2024)."
2306
+ self.note = "we consider CCD(T)"
2307
+ self.label = "CC-2024"
2308
+ self.marker = "x"
2309
+ self.linestyle = "solid"
2310
+ self.model = model
2311
+ # self.label = model
2312
+ self.every = 1
2313
+ self.e_err = False
2314
+ self.p_err = False
2315
+ self.cs2_err = False
2316
+ (
2317
+ self.sm_den,
2318
+ self.sm_e2a_n2lo,
2319
+ ) = np.loadtxt(
2320
+ file_in1,
2321
+ usecols=cols_sm,
2322
+ comments="#",
2323
+ unpack=True,
2324
+ )
2325
+ self.sm_e2a_int = self.sm_e2a_n2lo
2326
+ (
2327
+ self.nm_den,
2328
+ self.nm_e2a_n2lo,
2329
+ ) = np.loadtxt(
2330
+ file_in2,
2331
+ usecols=cols_nm,
2332
+ comments="#",
2333
+ unpack=True,
2334
+ )
2335
+ self.nm_e2a_int = self.nm_e2a_n2lo
2336
+ #
2337
+ self.nm_e2a = self.nm_rmass + self.nm_e2a_int
2338
+ self.sm_e2a = self.sm_rmass + self.sm_e2a_int
2339
+ self.nm_eps = self.nm_e2a * self.nm_den
2340
+ self.sm_eps = self.sm_e2a * self.sm_den
2341
+ self.nm_kfn = nuda.kf_n( self.nm_den )
2342
+ self.sm_kfn = nuda.kf_n( nuda.cst.half * self.sm_den )
2343
+ self.nm_e2a_err = np.abs( uncertainty_stat(self.nm_den, err="MBPT") * self.nm_e2a_int )
2344
+ self.sm_e2a_err = np.abs( uncertainty_stat(self.sm_den, err="MBPT") * self.sm_e2a_int )
2345
+ self.nm_eps_err = self.nm_e2a_err * self.nm_den
2346
+ self.sm_eps_err = self.sm_e2a_err * self.sm_den
2347
+ #
1401
2348
  #
1402
2349
  # ==============================
1403
2350
  # END OF
1404
2351
  # Read files associated to model
1405
2352
  # ==============================
1406
2353
  #
1407
- #
1408
2354
  # ==============================
1409
2355
  # Compute thermodynamic quantities
1410
2356
  # ==============================
1411
2357
  #
2358
+ print('flag_nm:',self.flag_nm)
2359
+ print('flag_sm:',self.flag_sm)
2360
+ print('flag_kf:',self.flag_kf)
2361
+ print('flag_den:',self.flag_den)
2362
+ #
1412
2363
  if self.flag_nm:
2364
+ #
1413
2365
  if self.flag_kf:
2366
+ #
1414
2367
  # pressure in NM
1415
- x = np.insert( self.nm_kfn, 0, 0.0 )
1416
- y = np.insert( self.nm_e2a, 0, 0.0 )
1417
- cs_nm_e2a = CubicSpline( x, y )
1418
- self.nm_pre = np.array( nuda.cst.third * self.nm_kfn * self.nm_den * cs_nm_e2a( self.nm_kfn, 1 ) )
1419
- y_err = np.insert( self.nm_e2a_err, 0, 0.0 )
1420
- cs_nm_e2a_err = CubicSpline( x, y_err )
1421
- self.nm_pre_err = nuda.cst.third * self.nm_kfn * self.nm_den * cs_nm_e2a_err( self.nm_kfn, 1 )
2368
+ x = np.insert(self.nm_kfn, 0, 0.0)
2369
+ y = np.insert(self.nm_e2a_int, 0, 0.0)
2370
+ cs_nm_e2a = CubicSpline(x, y)
2371
+ self.nm_pre = np.array( nuda.cst.third * self.nm_kfn * self.nm_den * cs_nm_e2a(self.nm_kfn, 1) )
2372
+ y_err = np.insert(self.nm_e2a_err, 0, 0.0)
2373
+ cs_nm_e2a_err = CubicSpline(x, y_err)
2374
+ self.nm_pre_err = np.array( nuda.cst.third * self.nm_kfn * self.nm_den * cs_nm_e2a_err(self.nm_kfn, 1) )
1422
2375
  # chemical potential
1423
- self.nm_chempot = ( np.array(self.nm_pre) + np.array(self.nm_e2v) ) / np.array(self.nm_den)
1424
- self.nm_chempot_err = ( np.array(self.nm_pre_err) + np.array(self.nm_e2v_err) ) / np.array(self.nm_den)
2376
+ self.nm_chempot = ( np.array(self.nm_pre) + np.array(self.nm_eps) ) / np.array(self.nm_den)
2377
+ self.nm_chempot_err = ( np.array(self.nm_pre_err) + np.array(self.nm_eps_err) ) / np.array(self.nm_den)
1425
2378
  #
1426
2379
  # enthalpy
1427
- self.nm_h2a = nuda.cst.mnuc2 + self.nm_e2a + self.nm_pre / self.nm_den
2380
+ self.nm_h2a = self.nm_e2a + self.nm_pre / self.nm_den
2381
+ #
2382
+ # sound speed as density derivative
2383
+ x = np.insert(self.nm_den, 0, 0.0)
2384
+ y = np.insert(self.nm_pre, 0, 0.0)
2385
+ cs_nm_pre = CubicSpline(x, y)
2386
+ self.nm_cs2 = cs_nm_pre(self.nm_den, 1) / self.nm_h2a
2387
+ #
2388
+ # sound speed as kF derivative
2389
+ #x = np.insert(self.nm_kfn, 0, 0.0)
2390
+ #y = np.insert(self.nm_pre, 0, 0.0)
2391
+ #cs_nm_pre = CubicSpline(x, y)
2392
+ #self.nm_cs2 = nuda.cst.third * self.nm_kfn / self.nm_den * cs_nm_pre(self.nm_den, 1) / self.nm_h2a
2393
+ #
2394
+ # calculate the last element for cs2 since the derivative is numerical
2395
+ #y = np.insert(self.nm_cs2, 0, 0.0)
2396
+ #cs_nm_cs2 = CubicSpline(x[:-2], y[:-2])
2397
+ #self.nm_cs2[-1] = cs_nm_cs2(self.nm_den[-1])
1428
2398
  #
1429
- # sound speed
1430
- x = np.insert( self.nm_den, 0, 0.0 )
1431
- y = np.insert( self.nm_pre, 0, 0.0 )
1432
- cs_nm_pre = CubicSpline( x, y )
1433
- nm_cs2 = cs_nm_pre( self.nm_den, 1) / self.nm_h2a
1434
2399
  if self.flag_den:
2400
+ #
1435
2401
  # pressure in NM
1436
- x = np.insert( self.nm_den, 0, 0.0 )
1437
- y = np.insert( self.nm_e2a, 0, 0.0 )
1438
- cs_nm_e2a = CubicSpline( x, y )
1439
- self.nm_pre = np.array( self.nm_den**2 * cs_nm_e2a( self.nm_den, 1 ) )
1440
- y_err = np.insert( self.nm_e2a_err, 0, 0.0 )
1441
- cs_nm_e2a_err = CubicSpline( x, y_err )
1442
- self.nm_pre_err = self.nm_den**2 * cs_nm_e2a_err( self.nm_den, 1 )
2402
+ x = np.insert(self.nm_den, 0, 0.0)
2403
+ y = np.insert(self.nm_e2a_int, 0, 0.0)
2404
+ cs_nm_e2a = CubicSpline(x, y)
2405
+ self.nm_pre = np.array(self.nm_den**2 * cs_nm_e2a(self.nm_den, 1))
2406
+ if "2020-scgf-am" in model.lower():
2407
+ self.nm_pre = self.nm_pre_n3lo
2408
+ y_err = np.insert(self.nm_e2a_err, 0, 0.0)
2409
+ cs_nm_e2a_err = CubicSpline(x, y_err)
2410
+ self.nm_pre_err = self.nm_den**2 * cs_nm_e2a_err(self.nm_den, 1)
1443
2411
  #
1444
2412
  # chemical potential
1445
- self.nm_chempot = ( np.array(self.nm_pre) + np.array(self.nm_e2v) ) / np.array(self.nm_den)
1446
- self.nm_chempot_err = ( np.array(self.nm_pre_err) + np.array(self.nm_e2v_err) ) / np.array(self.nm_den)
2413
+ self.nm_chempot = ( np.array(self.nm_pre) + np.array(self.nm_eps) ) / np.array(self.nm_den)
2414
+ self.nm_chempot_err = ( np.array(self.nm_pre_err) + np.array(self.nm_eps_err) ) / np.array(self.nm_den)
2415
+ if "2020-scgf-am" in model.lower():
2416
+ self.nm_chempot = self.nm_chempot_n3lo
1447
2417
  #
1448
2418
  # enthalpy
1449
- self.nm_h2a = nuda.cst.mnuc2 + self.nm_e2a + self.nm_pre / self.nm_den
2419
+ self.nm_h2a = self.nm_e2a + self.nm_pre / self.nm_den
1450
2420
  #
1451
2421
  # sound speed
1452
- x = np.insert( self.nm_den, 0, 0.0 )
1453
- y = np.insert( self.nm_pre, 0, 0.0 )
1454
- cs_nm_pre = CubicSpline( x, y )
1455
- nm_cs2 = cs_nm_pre( self.nm_den, 1) / self.nm_h2a
2422
+ x = np.insert(self.nm_den, 0, 0.0)
2423
+ y = np.insert(self.nm_pre, 0, 0.0)
2424
+ cs_nm_pre = CubicSpline(x, y)
2425
+ self.nm_cs2 = cs_nm_pre(self.nm_den, 1) / self.nm_h2a
2426
+ #
1456
2427
  #
1457
2428
  if self.flag_sm:
2429
+ #
1458
2430
  if self.flag_kf:
2431
+ #
1459
2432
  # pressure in SM
1460
- x = np.insert( self.sm_kfn, 0, 0.0 )
1461
- y = np.insert( self.sm_e2a, 0, 0.0 )
1462
- cs_sm_e2a = CubicSpline( x, y )
1463
- self.sm_pre = np.array( nuda.cst.third * self.sm_kfn * self.sm_den * cs_sm_e2a( self.sm_kfn, 1 ) )
1464
- y_err = np.insert( self.sm_e2a_err, 0, 0.0 )
1465
- cs_sm_e2a_err = CubicSpline( x, y_err )
1466
- self.sm_pre_err = nuda.cst.third * self.sm_kfn * self.sm_den * cs_sm_e2a_err( self.sm_kfn, 1 )
2433
+ x = np.insert(self.sm_kfn, 0, 0.0)
2434
+ y = np.insert(self.sm_e2a_int, 0, 0.0)
2435
+ cs_sm_e2a = CubicSpline(x, y)
2436
+ self.sm_pre = np.array( nuda.cst.third * self.sm_kfn * self.sm_den * cs_sm_e2a(self.sm_kfn, 1) )
2437
+ y_err = np.insert(self.sm_e2a_err, 0, 0.0)
2438
+ cs_sm_e2a_err = CubicSpline(x, y_err)
2439
+ self.sm_pre_err = ( nuda.cst.third * self.sm_kfn * self.sm_den * cs_sm_e2a_err(self.sm_kfn, 1) )
1467
2440
  #
1468
2441
  # chemical potential
1469
- self.sm_chempot = ( np.array(self.sm_pre) + np.array(self.sm_e2v) ) / np.array(self.sm_den)
1470
- self.sm_chempot_err = ( np.array(self.sm_pre_err) + np.array(self.sm_e2v_err) ) / np.array(self.sm_den)
2442
+ self.sm_chempot = ( np.array(self.sm_pre) + np.array(self.sm_eps) ) / np.array(self.sm_den)
2443
+ self.sm_chempot_err = ( np.array(self.sm_pre_err) + np.array(self.sm_eps_err) ) / np.array(self.sm_den)
1471
2444
  #
1472
2445
  # enthalpy
1473
- self.sm_h2a = nuda.cst.mnuc2 + self.sm_e2a + self.sm_pre / self.sm_den
2446
+ self.sm_h2a = self.sm_e2a + self.sm_pre / self.sm_den
1474
2447
  #
1475
- # sound speed
1476
- x = np.insert( self.sm_den, 0, 0.0 )
1477
- y = np.insert( self.sm_pre, 0, 0.0 )
1478
- cs_sm_pre = CubicSpline( x, y )
1479
- sm_cs2 = cs_sm_pre( self.sm_den, 1) / self.sm_h2a
2448
+ # sound speed as density derivative
2449
+ x = np.insert(self.sm_den, 0, 0.0)
2450
+ y = np.insert(self.sm_pre, 0, 0.0)
2451
+ cs_sm_pre = CubicSpline(x, y)
2452
+ self.sm_cs2 = cs_sm_pre(self.sm_den, 1) / self.sm_h2a
2453
+ #
2454
+ # sound speed as kF derivative
2455
+ #x = np.insert(self.nm_kfn, 0, 0.0)
2456
+ #y = np.insert(self.sm_pre, 0, 0.0)
2457
+ #cs_sm_pre = CubicSpline(x, y)
2458
+ #self.sm_cs2 = np.array( nuda.cst.third * self.sm_kfn / self.sm_den * cs_sm_pre(self.sm_den, 1) / self.sm_h2a )
1480
2459
  #
1481
2460
  if self.flag_den:
2461
+ #
1482
2462
  # pressure in NM
1483
- x = np.insert( self.sm_den, 0, 0.0 )
1484
- y = np.insert( self.sm_e2a, 0, 0.0 )
1485
- cs_sm_e2a = CubicSpline( x, y )
1486
- self.sm_pre = np.array( self.sm_den**2 * cs_sm_e2a( self.sm_den, 1 ) )
1487
- y_err = np.insert( self.sm_e2a_err, 0, 0.0 )
1488
- cs_sm_e2a_err = CubicSpline( x, y_err )
1489
- self.sm_pre_err = self.sm_den**2 * cs_sm_e2a_err( self.sm_den, 1 )
2463
+ x = np.insert(self.sm_den, 0, 0.0)
2464
+ y = np.insert(self.sm_e2a_int, 0, 0.0)
2465
+ cs_sm_e2a = CubicSpline(x, y)
2466
+ self.sm_pre = np.array( self.sm_den**2 * cs_sm_e2a(self.sm_den, 1) )
2467
+ if "2020-scgf-am" in model.lower():
2468
+ self.sm_pre = self.sm_pre_n3lo
2469
+ y_err = np.insert(self.sm_e2a_err, 0, 0.0)
2470
+ cs_sm_e2a_err = CubicSpline(x, y_err)
2471
+ self.sm_pre_err = self.sm_den**2 * cs_sm_e2a_err(self.sm_den, 1)
1490
2472
  #
1491
2473
  # chemical potential
1492
- self.sm_chempot = ( np.array(self.sm_pre) + np.array(self.sm_e2v) ) / np.array(self.sm_den)
1493
- self.sm_chempot_err = ( np.array(self.sm_pre_err) + np.array(self.sm_e2v_err) ) / np.array(self.sm_den)
2474
+ self.sm_chempot = ( np.array(self.sm_pre) + np.array(self.sm_eps) ) / np.array(self.sm_den)
2475
+ self.sm_chempot_err = ( np.array(self.sm_pre_err) + np.array(self.sm_eps_err) ) / np.array(self.sm_den)
2476
+ if "2020-scgf-am" in model.lower():
2477
+ self.sm_chempot = self.sm_chempot_n3lo
1494
2478
  #
1495
2479
  # enthalpy
1496
- self.sm_h2a = nuda.cst.mnuc2 + self.sm_e2a + self.sm_pre / self.sm_den
2480
+ self.sm_h2a = self.sm_e2a + self.sm_pre / self.sm_den
1497
2481
  #
1498
2482
  # sound speed
1499
- x = np.insert( self.sm_den, 0, 0.0 )
1500
- y = np.insert( self.sm_pre, 0, 0.0 )
1501
- cs_sm_pre = CubicSpline( x, y )
1502
- sm_cs2 = cs_sm_pre( self.sm_den, 1) / self.sm_h2a
2483
+ #x = np.insert(self.sm_den, 0, 0.0)
2484
+ y = np.insert(self.sm_pre, 0, 0.0)
2485
+ cs_sm_pre = CubicSpline(x, y)
2486
+ self.sm_cs2 = cs_sm_pre(self.sm_den, 1) / self.sm_h2a
1503
2487
  #
2488
+ #
1504
2489
  #
1505
2490
  # ==============================
1506
2491
  # END OF
1507
2492
  # Compute thermodynamic quantities
1508
2493
  # ==============================
1509
2494
  #
1510
- self.den_unit = 'fm$^{-3}$'
1511
- self.kf_unit = 'fm$^{-1}$'
1512
- self.e2a_unit = 'MeV'
1513
- self.e2v_unit = 'MeV fm$^{-3}$'
1514
- self.pre_unit = 'MeV fm$^{-3}$'
2495
+ self.den_unit = "fm$^{-3}$"
2496
+ self.kf_unit = "fm$^{-1}$"
2497
+ self.e2a_unit = "MeV"
2498
+ self.eps_unit = "MeV fm$^{-3}$"
2499
+ self.pre_unit = "MeV fm$^{-3}$"
1515
2500
  #
1516
- if nuda.env.verb: print("Exit setupMicro()")
2501
+ if nuda.env.verb:
2502
+ print("Exit setupMicro()")
1517
2503
  #
1518
- def print_outputs( self ):
2504
+
2505
+ def print_outputs(self):
1519
2506
  """
1520
2507
  Method which print outputs on terminal's screen.
1521
2508
  """
1522
2509
  #
1523
- if nuda.env.verb: print("Enter print_outputs()")
2510
+ if nuda.env.verb:
2511
+ print("Enter print_outputs()")
1524
2512
  #
1525
2513
  print("- Print output:")
1526
- print(" model:",self.model)
1527
- print(" ref: ",self.ref)
1528
- print(" label:",self.label)
1529
- print(" note: ",self.note)
1530
- print(" self.sm_den: ",self.sm_den)
1531
- print(" self.sm_effmass: ",self.sm_effmass)
1532
- #if any(self.sm_den): print(f" sm_den: {np.round(self.sm_den,3)} in {self.den_unit}")
1533
- if self.den is not None: print(f" den: {np.round(self.den,3)} in {self.den_unit}")
1534
- if self.kfn is not None: print(f" kfn: {np.round(self.den,3)} in {self.kf_unit}")
1535
- if self.asy is not None: print(f" asy: {np.round(self.asy,3)}")
1536
- if self.e2a is not None: print(f" e2a: {np.round(self.e2a,3)} in {self.e2a_unit}")
1537
- if self.e2v is not None: print(f" e2v: {np.round(self.e2v,3)} in {self.e2v_unit}")
1538
- if self.pre is not None: print(f" pre: {np.round(self.pre,3)} in {self.pre_unit}")
1539
- if self.cs2 is not None: print(f" cs2: {np.round(self.cs2,2)}")
1540
- if self.sm_den is not None: print(f" sm_den: {np.round(self.sm_den,3)} in {self.den_unit}")
1541
- if self.sm_kfn is not None: print(f" sm_kfn: {np.round(self.sm_kfn,3)} in {self.kf_unit}")
1542
- if self.sm_chempot is not None: print(f" sm_chempot: {np.round(self.sm_chempot,3)} in {self.e2a_unit}")
1543
- if self.sm_effmass is not None: print(f" sm_effmass: {np.round(self.sm_effmass,3)}")
1544
- if self.sm_e2a is not None: print(f" sm_e2a: {np.round(self.sm_e2a,3)} in {self.e2a_unit}")
1545
- if self.sm_e2a_err is not None: print(f" sm_e2a_err: {np.round(self.sm_e2a_err,3)} in {self.e2a_unit}")
1546
- if self.sm_e2a_fit is not None: print(f" sm_e2a_fit: {np.round(self.sm_e2a_fit,3)} in {self.e2a_unit}")
1547
- 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}")
1548
- if self.sm_e2v is not None: print(f" sm_e2v: {np.round(self.sm_e2v,3)} in {self.e2v_unit}")
1549
- if self.sm_e2v_err is not None: print(f" sm_e2v_err: {np.round(self.sm_e2v_err,3)} in {self.e2v_unit}")
1550
- if self.sm_pre is not None: print(f" sm_pre: {np.round(self.sm_pre,3)} in {self.pre_unit}")
1551
- if self.nm_den is not None: print(f" nm_den: {np.round(self.nm_den,3)} in {self.den_unit}")
1552
- if self.nm_kfn is not None: print(f" nm_kfn: {np.round(self.nm_kfn,3)} in {self.kf_unit}")
1553
- if self.nm_chempot is not None: print(f" nm_chempot: {np.round(self.nm_chempot,3)} in {self.e2a_unit}")
1554
- if self.nm_effmass is not None: print(f" nm_effmass: {np.round(self.nm_effmass,3)}")
1555
- if self.nm_e2a is not None: print(f" nm_e2a: {np.round(self.nm_e2a,3)} in {self.e2a_unit}")
1556
- if self.nm_e2a_err is not None: print(f" nm_e2a_err: {np.round(self.nm_e2a_err,3)} in {self.e2a_unit}")
1557
- if self.nm_e2a_fit is not None: print(f" nm_e2a_fit: {np.round(self.nm_e2a_fit,3)} in {self.e2a_unit}")
1558
- 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}")
1559
- if self.nm_e2v is not None: print(f" nm_e2v: {np.round(self.nm_e2v,3)} in {self.e2v_unit}")
1560
- if self.nm_e2v_err is not None: print(f" nm_e2v_err: {np.round(self.nm_e2v_err,3)} in {self.e2v_unit}")
1561
- if self.nm_pre is not None: print(f" nm_pre: {np.round(self.nm_pre,3)} in {self.pre_unit}")
1562
- if self.nm_cs2 is not None: print(f" nm_cs2: {np.round(self.nm_cs2,3)}")
2514
+ print(" model:", self.model)
2515
+ print(" ref: ", self.ref)
2516
+ print(" label:", self.label)
2517
+ print(" note: ", self.note)
2518
+ print(" self.sm_den: ", self.sm_den)
2519
+ print(" self.sm_effmass: ", self.sm_effmass)
2520
+ # if any(self.sm_den): print(f" sm_den: {np.round(self.sm_den,3)} in {self.den_unit}")
2521
+ if self.den is not None:
2522
+ print(f" den: {np.round(self.den,3)} in {self.den_unit}")
2523
+ if self.kfn is not None:
2524
+ print(f" kfn: {np.round(self.den,3)} in {self.kf_unit}")
2525
+ if self.asy is not None:
2526
+ print(f" asy: {np.round(self.asy,3)}")
2527
+ if self.e2a is not None:
2528
+ print(f" e2a: {np.round(self.e2a,3)} in {self.e2a_unit}")
2529
+ if self.eps is not None:
2530
+ print(f" eps: {np.round(self.eps,3)} in {self.eps_unit}")
2531
+ if self.pre is not None:
2532
+ print(f" pre: {np.round(self.pre,3)} in {self.pre_unit}")
2533
+ if self.cs2 is not None:
2534
+ print(f" cs2: {np.round(self.cs2,2)}")
2535
+ if self.sm_den is not None:
2536
+ print(f" sm_den: {np.round(self.sm_den,3)} in {self.den_unit}")
2537
+ if self.sm_kfn is not None:
2538
+ print(f" sm_kfn: {np.round(self.sm_kfn,3)} in {self.kf_unit}")
2539
+ #if self.sm_chempot is not None:
2540
+ # print(f" sm_chempot: {np.round(self.sm_chempot,3)} in {self.e2a_unit}")
2541
+ if self.sm_effmass is not None:
2542
+ print(f" sm_effmass: {np.round(self.sm_effmass,3)}")
2543
+ if self.sm_e2a is not None:
2544
+ print(f" sm_e2a: {np.round(self.sm_e2a,3)} in {self.e2a_unit}")
2545
+ if self.sm_e2a_err is not None:
2546
+ print(f" sm_e2a_err: {np.round(self.sm_e2a_err,3)} in {self.e2a_unit}")
2547
+ if self.sm_e2a_fit is not None:
2548
+ print(f" sm_e2a_fit: {np.round(self.sm_e2a_fit,3)} in {self.e2a_unit}")
2549
+ if self.sm_e2a_fit_err is not None:
2550
+ print(
2551
+ f" sm_e2a_fit_err: {np.round(self.sm_e2a_fit_err,3)} in {self.e2a_unit}"
2552
+ )
2553
+ if self.sm_eps is not None:
2554
+ print(f" sm_eps: {np.round(self.sm_eps,3)} in {self.eps_unit}")
2555
+ if self.sm_eps_err is not None:
2556
+ print(f" sm_eps_err: {np.round(self.sm_eps_err,3)} in {self.eps_unit}")
2557
+ if self.sm_pre is not None:
2558
+ print(f" sm_pre: {np.round(self.sm_pre,3)} in {self.pre_unit}")
2559
+ if self.sm_cs2 is not None:
2560
+ print(f" sm_cs2: {np.round(self.sm_cs2,3)}")
2561
+ #
2562
+ if self.nm_den is not None:
2563
+ print(f" nm_den: {np.round(self.nm_den,3)} in {self.den_unit}")
2564
+ if self.nm_kfn is not None:
2565
+ print(f" nm_kfn: {np.round(self.nm_kfn,3)} in {self.kf_unit}")
2566
+ #if self.nm_chempot is not None:
2567
+ # print(f" nm_chempot: {np.round(self.nm_chempot,3)} in {self.e2a_unit}")
2568
+ if self.nm_effmass is not None:
2569
+ print(f" nm_effmass: {np.round(self.nm_effmass,3)}")
2570
+ if self.nm_e2a is not None:
2571
+ print(f" nm_e2a: {np.round(self.nm_e2a,3)} in {self.e2a_unit}")
2572
+ if self.nm_e2a_err is not None:
2573
+ print(f" nm_e2a_err: {np.round(self.nm_e2a_err,3)} in {self.e2a_unit}")
2574
+ if self.nm_e2a_fit is not None:
2575
+ print(f" nm_e2a_fit: {np.round(self.nm_e2a_fit,3)} in {self.e2a_unit}")
2576
+ if self.nm_e2a_fit_err is not None:
2577
+ print(f" nm_e2a_fit_err: {np.round(self.nm_e2a_fit_err,3)} in {self.e2a_unit}" )
2578
+ if self.nm_eps is not None:
2579
+ print(f" nm_eps: {np.round(self.nm_eps,3)} in {self.eps_unit}")
2580
+ if self.nm_eps_err is not None:
2581
+ print(f" nm_eps_err: {np.round(self.nm_eps_err,3)} in {self.eps_unit}")
2582
+ if self.nm_pre is not None:
2583
+ print(f" nm_pre: {np.round(self.nm_pre,3)} in {self.pre_unit}")
2584
+ if self.nm_cs2 is not None:
2585
+ print(f" nm_cs2: {np.round(self.nm_cs2,3)}")
1563
2586
  #
1564
- if nuda.env.verb: print("Exit print_outputs()")
2587
+ if nuda.env.verb:
2588
+ print("Exit print_outputs()")
1565
2589
  #
1566
- def init_self( self ):
2590
+
2591
+ def init_self(self):
1567
2592
  """
1568
2593
  Initialize variables in self.
1569
2594
  """
1570
2595
  #
1571
- if nuda.env.verb: print("Enter init_self()")
2596
+ if nuda.env.verb:
2597
+ print("Enter init_self()")
1572
2598
  #
1573
2599
  #: Attribute the number of points for the density.
1574
- self.nden = 10;
2600
+ self.nden = 10
1575
2601
  #: Attribute providing the full reference to the paper to be citted.
1576
- self.ref = ''
2602
+ self.ref = ""
1577
2603
  #: Attribute providing additional notes about the data.
1578
- self.note = ''
2604
+ self.note = ""
1579
2605
  #: Attribute the plot linestyle.
1580
2606
  self.linestyle = None
1581
2607
  #: Attribute the plot to discriminate True uncertainties from False ones.
1582
2608
  self.err = False
1583
2609
  #: Attribute the plot label data.
1584
- self.label = ''
2610
+ self.label = ""
1585
2611
  #: Attribute the plot marker.
1586
2612
  self.marker = None
1587
2613
  #: Attribute the plot every data.
@@ -1596,7 +2622,7 @@ class setupMicro():
1596
2622
  #: Attribute the energy per particle.
1597
2623
  self.e2a = None
1598
2624
  #: Attribute the energy per unit volume.
1599
- self.e2v = None
2625
+ self.eps = None
1600
2626
  #: Attribute the pressure.
1601
2627
  self.pre = None
1602
2628
  #: Attribute the sound speed.
@@ -1622,13 +2648,13 @@ class setupMicro():
1622
2648
  #: Attribute the symmetric matter Fermi momentum.
1623
2649
  self.sm_kf = None
1624
2650
  #: Attribute the neutron matter chemical potential.
1625
- self.nm_chempot = None
2651
+ #self.nm_chempot = None
1626
2652
  #: Attribute the uncertainty in the neutron matter chemical potential.
1627
- self.nm_chempot_err = None
2653
+ #self.nm_chempot_err = None
1628
2654
  #: Attribute the symmetric matter chemical potential.
1629
- self.sm_chempot = None
2655
+ #self.sm_chempot = None
1630
2656
  #: Attribute the uncertainty in the symmetric matter chemical potential.
1631
- self.sm_chempot_err = None
2657
+ #self.sm_chempot_err = None
1632
2658
  #: Attribute the neutron matter effective mass.
1633
2659
  self.nm_effmass = None
1634
2660
  #: Attribute the symmetric matter effective mass.
@@ -1670,13 +2696,13 @@ class setupMicro():
1670
2696
  #: Attribute the symmetric matter total potential per particle.
1671
2697
  self.sm_vtot = None
1672
2698
  #: Attribute the neutron matter energy per unit volume.
1673
- self.nm_e2v = None
2699
+ self.nm_eps = None
1674
2700
  #: Attribute the uncertainty in the neutron matter energy per unit volume.
1675
- self.nm_e2v_err = None
2701
+ self.nm_eps_err = None
1676
2702
  #: Attribute the symmetric matter energy per unit volume.
1677
- self.sm_e2v = None
2703
+ self.sm_eps = None
1678
2704
  #: Attribute the uncertainty in the symmetric matter energy per unit volume.
1679
- self.sm_e2v_err = None
2705
+ self.sm_eps_err = None
1680
2706
  #: Attribute the neutron matter pressure.
1681
2707
  self.nm_pre = None
1682
2708
  #: Attribute the uncertainty in the neutron matter pressure.
@@ -1694,7 +2720,7 @@ class setupMicro():
1694
2720
  #: Attribute the uncertainty in the symmetric matter sound speed.
1695
2721
  self.sm_cs2_err = None
1696
2722
  #
1697
- if nuda.env.verb: print("Exit init_self()")
2723
+ if nuda.env.verb:
2724
+ print("Exit init_self()")
1698
2725
  #
1699
- return self
1700
-
2726
+ return self