nucleardatapy 0.2.0__py3-none-any.whl → 1.0.0__py3-none-any.whl

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