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