nucleardatapy 0.2.1__py3-none-any.whl → 1.0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. nucleardatapy/__init__.py +3 -1
  2. nucleardatapy/astro/setup_gw.py +18 -18
  3. nucleardatapy/astro/setup_mr.py +123 -33
  4. nucleardatapy/astro/setup_mup.py +10 -10
  5. nucleardatapy/corr/setup_EsymDen.py +0 -5
  6. nucleardatapy/corr/setup_EsymLsym.py +50 -17
  7. nucleardatapy/corr/setup_KsatQsat.py +170 -69
  8. nucleardatapy/create_folder.py +2 -2
  9. nucleardatapy/crust/setup_crust.py +364 -126
  10. nucleardatapy/data/astro/HESS/J1731-347.dat +4 -0
  11. nucleardatapy/data/astro/NICER/J0030+0451.dat +6 -6
  12. nucleardatapy/data/astro/NICER/J0437-4715.dat +4 -3
  13. nucleardatapy/data/astro/NICER/J0614-3329.dat +4 -0
  14. nucleardatapy/data/astro/NICER/J0740+6620.dat +5 -4
  15. nucleardatapy/data/hnuclei/1991-2L-Yamamoto.csv +6 -0
  16. nucleardatapy/data/hnuclei/2013-2L-Ahn.csv +1 -1
  17. nucleardatapy/data/hnuclei/2019-2L-Ekawa.csv +7 -0
  18. nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-Av18-E2A-NM.dat +8 -8
  19. nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-414-E2A.dat +21 -0
  20. nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-414-TD.dat +22 -0
  21. nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-450-E2A.dat +20 -0
  22. nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-450-TD.dat +22 -0
  23. nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-500-E2A.dat +23 -0
  24. nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-500-TD.dat +22 -0
  25. nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-414-E2A.dat +15 -0
  26. nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-414-TD.dat +21 -0
  27. nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-450-E2A.dat +15 -0
  28. nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-450-TD.dat +21 -0
  29. nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-500-E2A.dat +20 -0
  30. nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-500-TD.dat +20 -0
  31. nucleardatapy/data/matter/micro/2024-ABI-NM-DeltaNNLO450.dat +28 -0
  32. nucleardatapy/data/matter/micro/2024-ABI-NM-DeltaNNLO500.dat +28 -0
  33. nucleardatapy/data/matter/micro/2024-ABI-NM-DeltaNNLOgo394.dat +28 -0
  34. nucleardatapy/data/matter/micro/2024-ABI-NM-DeltaNNLOgo450.dat +28 -0
  35. nucleardatapy/data/matter/micro/2024-ABI-NM-NNLOsat.dat +28 -0
  36. nucleardatapy/data/matter/micro/2024-ABI-SM-DeltaNNLO450.dat +28 -0
  37. nucleardatapy/data/matter/micro/2024-ABI-SM-DeltaNNLO500.dat +28 -0
  38. nucleardatapy/data/matter/micro/2024-ABI-SM-DeltaNNLOgo394.dat +28 -0
  39. nucleardatapy/data/matter/micro/2024-ABI-SM-DeltaNNLOgo450.dat +28 -0
  40. nucleardatapy/data/matter/micro/2024-ABI-SM-NNLOsat.dat +28 -0
  41. nucleardatapy/data/matter/nep/NEPESkyrme.dat +2 -3
  42. nucleardatapy/data/matter/nep/NEPGSkyrme.dat +7 -0
  43. nucleardatapy/data/matter/nep/NEPSkyrme.dat +4 -2
  44. nucleardatapy/data/matter/nep/NEPxEFT.dat +8 -0
  45. nucleardatapy/data/matter/nep/best67DDSkyrme.dat +28 -0
  46. nucleardatapy/data/matter/nep/best90DDSkyrme.dat +46 -0
  47. nucleardatapy/data/matter/nep/best95DDSkyrme.dat +54 -0
  48. nucleardatapy/data/matter/pheno/ESkyrme/BSk31-NM.dat +996 -996
  49. nucleardatapy/data/matter/pheno/ESkyrme/BSk31-SM.dat +991 -991
  50. nucleardatapy/data/matter/pheno/ESkyrme/BSkG4-NM.dat +1002 -0
  51. nucleardatapy/data/matter/pheno/ESkyrme/BSkG4-SM.dat +1002 -0
  52. nucleardatapy/data/matter/pheno/Skyrme/BSkG1-NM.dat +102 -0
  53. nucleardatapy/data/matter/pheno/Skyrme/BSkG1-SM.dat +102 -0
  54. nucleardatapy/data/matter/pheno/Skyrme/BSkG2-NM.dat +102 -0
  55. nucleardatapy/data/matter/pheno/Skyrme/BSkG2-SM.dat +102 -0
  56. nucleardatapy/env.py +1 -1
  57. nucleardatapy/eos/__init__.py +4 -3
  58. nucleardatapy/eos/setupCC.py +429 -0
  59. nucleardatapy/eos/setup_am.py +39 -14
  60. nucleardatapy/eos/setup_am_Beq.py +40 -15
  61. nucleardatapy/eos/setup_am_Leq.py +40 -15
  62. nucleardatapy/fig/__init__.py +24 -15
  63. nucleardatapy/fig/astro_setupGW_fig.py +9 -7
  64. nucleardatapy/fig/astro_setupMR_fig.py +26 -18
  65. nucleardatapy/fig/astro_setupMasses_fig.py +8 -6
  66. nucleardatapy/fig/astro_setupMtov_fig.py +10 -6
  67. nucleardatapy/fig/astro_setupMup_fig.py +9 -7
  68. nucleardatapy/fig/corr_setupEsymDen_fig.py +22 -9
  69. nucleardatapy/fig/corr_setupEsymLsym_fig.py +25 -8
  70. nucleardatapy/fig/corr_setupKsatQsat_fig.py +23 -17
  71. nucleardatapy/fig/crust_setupCrust_fig.py +11 -9
  72. nucleardatapy/fig/eos_setupAMBeq_fig.py +641 -156
  73. nucleardatapy/fig/eos_setupAMLeq_fig.py +53 -50
  74. nucleardatapy/fig/eos_setupAM_asy_lep_fig.py +373 -0
  75. nucleardatapy/fig/eos_setupAM_asy_nuc_fig.py +346 -0
  76. nucleardatapy/fig/eos_setupAM_asy_tot_fig.py +352 -0
  77. nucleardatapy/fig/eos_setupAM_fig.py +519 -0
  78. nucleardatapy/fig/eos_setupCC_fig.py +270 -0
  79. nucleardatapy/fig/hnuc_setupChart_fig.py +19 -16
  80. nucleardatapy/fig/hnuc_setupRE1LExp_fig.py +15 -5
  81. nucleardatapy/fig/matter_all_fig.py +971 -0
  82. nucleardatapy/fig/matter_setupCheck_fig.py +106 -0
  83. nucleardatapy/fig/matter_setupFFGLep_fig.py +74 -0
  84. nucleardatapy/fig/matter_setupFFGNuc_fig.py +286 -115
  85. nucleardatapy/fig/matter_setupHIC_fig.py +107 -67
  86. nucleardatapy/fig/matter_setupMicroEsym_fig.py +259 -73
  87. nucleardatapy/fig/matter_setupMicro_LP_fig.py +185 -82
  88. nucleardatapy/fig/matter_setupMicro_band_fig.py +126 -53
  89. nucleardatapy/fig/matter_setupMicro_effmass_fig.py +253 -77
  90. nucleardatapy/fig/matter_setupMicro_err_NM_fig.py +45 -20
  91. nucleardatapy/fig/matter_setupMicro_fig.py +317 -77
  92. nucleardatapy/fig/matter_setupMicro_gap_fig.py +237 -100
  93. nucleardatapy/fig/matter_setupNEPStats_fig.py +106 -0
  94. nucleardatapy/fig/matter_setupPhenoEsym_fig.py +204 -65
  95. nucleardatapy/fig/matter_setupPheno_fig.py +395 -93
  96. nucleardatapy/fig/nuc_setupBEExp_chart_fig.py +93 -73
  97. nucleardatapy/fig/nuc_setupBEExp_fig.py +97 -87
  98. nucleardatapy/fig/nuc_setupBETheo_fig.py +114 -81
  99. nucleardatapy/fig/nuc_setupISGMRExp_fig.py +12 -15
  100. nucleardatapy/fig/nuc_setupRchExp_fig.py +14 -22
  101. nucleardatapy/fig/nuc_setupRchTheo_fig.py +37 -40
  102. nucleardatapy/fig/nuc_setupRnpExp_fig.py +86 -106
  103. nucleardatapy/fig/nuc_setupRnpTheo_fig.py +105 -94
  104. nucleardatapy/hello.py +6 -0
  105. nucleardatapy/hnuc/setup_re1L_exp.py +6 -6
  106. nucleardatapy/hnuc/setup_re1Xi_exp.py +5 -5
  107. nucleardatapy/hnuc/setup_re2L_exp.py +36 -13
  108. nucleardatapy/matter/__init__.py +14 -14
  109. nucleardatapy/matter/setup_check.py +6 -6
  110. nucleardatapy/matter/setup_ffg.py +66 -39
  111. nucleardatapy/matter/setup_hic.py +91 -74
  112. nucleardatapy/matter/setup_micro.py +2033 -1007
  113. nucleardatapy/matter/setup_micro_band.py +6 -6
  114. nucleardatapy/matter/setup_micro_esym.py +56 -54
  115. nucleardatapy/matter/setup_micro_gap.py +24 -17
  116. nucleardatapy/matter/setup_micro_lp.py +2 -2
  117. nucleardatapy/matter/setup_nep.py +175 -92
  118. nucleardatapy/matter/{setup_nep_model_dist.py → setup_nep_stat_model.py} +13 -8
  119. nucleardatapy/matter/{setup_nep_dist.py → setup_nep_stat_models.py} +12 -8
  120. nucleardatapy/matter/setup_pheno.py +129 -49
  121. nucleardatapy/matter/setup_pheno_esym.py +22 -19
  122. nucleardatapy/nuc/setup_be_exp.py +306 -292
  123. nucleardatapy/nuc/setup_be_theo.py +288 -105
  124. nucleardatapy/nuc/setup_isgmr_exp.py +4 -4
  125. nucleardatapy/nuc/setup_rnp_exp.py +1 -0
  126. nucleardatapy/nuc/setup_rnp_theo.py +2 -1
  127. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.1.dist-info}/METADATA +48 -16
  128. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.1.dist-info}/RECORD +157 -124
  129. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.1.dist-info}/WHEEL +1 -1
  130. tests/test_corr_setupKsatQsat.py +3 -1
  131. tests/test_matter_setupMicro.py +37 -10
  132. nucleardatapy/data/matter/pheno/ESkyrme/BSkG1-NM.dat +0 -1002
  133. nucleardatapy/data/matter/pheno/ESkyrme/BSkG1-SM.dat +0 -1002
  134. nucleardatapy/data/matter/pheno/ESkyrme/BSkG2-NM.dat +0 -1002
  135. nucleardatapy/data/matter/pheno/ESkyrme/BSkG2-SM.dat +0 -1002
  136. nucleardatapy/fig/eos_setupAM_e_asy_lep_fig.py +0 -125
  137. nucleardatapy/fig/eos_setupAM_e_asy_nuc_fig.py +0 -115
  138. nucleardatapy/fig/eos_setupAM_e_asy_tot_fig.py +0 -117
  139. nucleardatapy/fig/eos_setupAM_e_fig.py +0 -173
  140. nucleardatapy/fig/matter_ENM_fig.py +0 -128
  141. nucleardatapy/fig/matter_ESM_fig.py +0 -140
  142. nucleardatapy/fig/matter_Esym_fig.py +0 -134
  143. nucleardatapy/fig/matter_cs2_fig.py +0 -83
  144. nucleardatapy/fig/matter_preNM_fig.py +0 -146
  145. nucleardatapy/fig/matter_preSM_fig.py +0 -144
  146. nucleardatapy/fig/matter_setupNEPModelDist_fig.py +0 -68
  147. /nucleardatapy/data/LandauParameters/micro/{2006-IBHF-NM-AV18.dat → 2006-EBHF-NM-AV18.dat} +0 -0
  148. /nucleardatapy/data/LandauParameters/micro/{2006-IBHF-SM-AV18.dat → 2006-EBHF-SM-AV18.dat} +0 -0
  149. /nucleardatapy/data/crust/{2022-crustGMRS-BSK14.dat → 2022-GMRS-BSK14.dat} +0 -0
  150. /nucleardatapy/data/crust/{2022-crustGMRS-BSK16.dat → 2022-GMRS-BSK16.dat} +0 -0
  151. /nucleardatapy/data/crust/{2022-crustGMRS-DHSL59.dat → 2022-GMRS-DHSL59.dat} +0 -0
  152. /nucleardatapy/data/crust/{2022-crustGMRS-DHSL69.dat → 2022-GMRS-DHSL69.dat} +0 -0
  153. /nucleardatapy/data/crust/{2022-crustGMRS-F0.dat → 2022-GMRS-F0.dat} +0 -0
  154. /nucleardatapy/data/crust/{2022-crustGMRS-H1.dat → 2022-GMRS-H1.dat} +0 -0
  155. /nucleardatapy/data/crust/{2022-crustGMRS-H2.dat → 2022-GMRS-H2.dat} +0 -0
  156. /nucleardatapy/data/crust/{2022-crustGMRS-H3.dat → 2022-GMRS-H3.dat} +0 -0
  157. /nucleardatapy/data/crust/{2022-crustGMRS-H4.dat → 2022-GMRS-H4.dat} +0 -0
  158. /nucleardatapy/data/crust/{2022-crustGMRS-H5.dat → 2022-GMRS-H5.dat} +0 -0
  159. /nucleardatapy/data/crust/{2022-crustGMRS-H7.dat → 2022-GMRS-H7.dat} +0 -0
  160. /nucleardatapy/data/crust/{2022-crustGMRS-LNS5.dat → 2022-GMRS-LNS5.dat} +0 -0
  161. /nucleardatapy/data/crust/{2022-crustGMRS-RATP.dat → 2022-GMRS-RATP.dat} +0 -0
  162. /nucleardatapy/data/crust/{2022-crustGMRS-SGII.dat → 2022-GMRS-SGII.dat} +0 -0
  163. /nucleardatapy/data/crust/{2022-crustGMRS-SLY5.dat → 2022-GMRS-SLY5.dat} +0 -0
  164. /nucleardatapy/data/matter/micro/{2013-QMC-NM.dat → 2013-MBPT-NM.dat} +0 -0
  165. /nucleardatapy/data/{NeutronSkin/ddrhNskin-208Pb.dat → rnp/ddrhrnp-208Pb.dat} +0 -0
  166. /nucleardatapy/data/{NeutronSkin/ddrhNskin-48Ca.dat → rnp/ddrhrnp-48Ca.dat} +0 -0
  167. /nucleardatapy/data/{NeutronSkin/nlrhNskin-208Pb.dat → rnp/nlrhrnp-208Pb.dat} +0 -0
  168. /nucleardatapy/data/{NeutronSkin/nlrhNskin-48Ca.dat → rnp/nlrhrnp-48Ca.dat} +0 -0
  169. /nucleardatapy/data/{NeutronSkin/skyrmeNskin-208Pb.dat → rnp/skyrmernp-208Pb.dat} +0 -0
  170. /nucleardatapy/data/{NeutronSkin/skyrmeNskin-48Ca.dat → rnp/skyrmernp-48Ca.dat} +0 -0
  171. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.1.dist-info}/licenses/LICENSE +0 -0
  172. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.1.dist-info}/top_level.txt +0 -0
@@ -2,13 +2,10 @@ import os
2
2
  import sys
3
3
  import math
4
4
  import numpy as np # 1.15.0
5
-
6
- #nucleardatapy_tk = os.getenv('NUCLEARDATAPY_TK')
7
- #sys.path.insert(0, nucleardatapy_tk)
5
+ from scipy.interpolate import CubicSpline
8
6
 
9
7
  import nucleardatapy as nuda
10
8
 
11
-
12
9
  def crust_models():
13
10
  """
14
11
  Return a list of the tables available in this toolkit for the experimental masses and
@@ -21,12 +18,13 @@ def crust_models():
21
18
  #
22
19
  if nuda.env.verb: print("\nEnter models_crust()")
23
20
  #
24
- models = [ '1973-Negele-Vautherin', '2018-PCPFDDG-BSK22', '2018-PCPFDDG-BSK24', '2018-PCPFDDG-BSK25', '2018-PCPFDDG-BSK26',\
21
+ models = [ '1973-Negele-Vautherin', '2018-PCPFDDG-BSK22', \
22
+ '2018-PCPFDDG-BSK24', '2018-PCPFDDG-BSK25', '2018-PCPFDDG-BSK26',\
25
23
  '2020-MVCD-D1S', '2020-MVCD-D1M', '2020-MVCD-D1MS',\
26
- '2022-crustGMRS-BSK14', '2022-crustGMRS-BSK16', '2022-crustGMRS-DHSL59', '2022-crustGMRS-DHSL69',\
27
- '2022-crustGMRS-F0', '2022-crustGMRS-H1', '2022-crustGMRS-H2', '2022-crustGMRS-H3', \
28
- '2022-crustGMRS-H4', '2022-crustGMRS-H5', '2022-crustGMRS-H7', '2022-crustGMRS-LNS5', \
29
- '2022-crustGMRS-RATP', '2022-crustGMRS-SGII', '2022-crustGMRS-SLY5' ]
24
+ '2022-GMRS-BSK14', '2022-GMRS-BSK16', '2022-GMRS-DHSL59', '2022-GMRS-DHSL69',\
25
+ '2022-GMRS-F0', '2022-GMRS-H1', '2022-GMRS-H2', '2022-GMRS-H3', \
26
+ '2022-GMRS-H4', '2022-GMRS-H5', '2022-GMRS-H7', '2022-GMRS-LNS5', \
27
+ '2022-GMRS-RATP', '2022-GMRS-SGII', '2022-GMRS-SLY5' ]
30
28
  #
31
29
  #print('crust models available in the toolkit:',models)
32
30
  models_lower = [ item.lower() for item in models ]
@@ -77,8 +75,8 @@ class setupCrust():
77
75
  self.linestyle = 'solid'
78
76
  self.latexCite = 'JWNegele:1973'
79
77
  self.ncl = 0.17 # in fm-3
80
- self.den_cgs, self.N, self.Z, self.mu_n, self.mu_p, self.n_g, self.xpn_bound, self.e2a_int2, \
81
- self.e2a_int_g = np.loadtxt( file_in, usecols=(0,1,2,3,4,5,6,7,8), unpack = True )
78
+ self.den_cgs, self.N, self.Z, self.mu_n, self.mu_p, self.den_f, self.xpn_bound, self.e2a_int2, \
79
+ self.e2a_int_f = np.loadtxt( file_in, usecols=(0,1,2,3,4,5,6,7,8), unpack = True )
82
80
  self.den = self.den_cgs * 1.e-39 # in fm-3
83
81
  self.N = np.array([ int(item) for item in self.N ])
84
82
  self.Z = np.array([ int(item) for item in self.Z ])
@@ -91,12 +89,12 @@ class setupCrust():
91
89
  self.xp_bound = self.Z_bound / self.A_bound
92
90
  self.xn_bound = self.N_bound / self.A_bound
93
91
  self.I_bound = ( self.N_bound - self.Z_bound ) / self.A_bound
94
- self.N_g = self.N - self.N_bound
92
+ self.N_f = self.N - self.N_bound
95
93
  # cluster volume and radius
96
94
  self.Vcl = 2 * self.Z_bound / ( (1-self.I_bound) * self.ncl )
97
95
  self.Rcl = ( 3 / ( 4 * nuda.cst.pi ) * self.Vcl )**nuda.cst.third
98
96
  # unbound (gas) neutrons
99
- self.VWS = self.Vcl + self.N_g / self.n_g
97
+ self.VWS = self.Vcl + self.N_f / self.den_f
100
98
  self.RWS = ( 3 / ( 4 * nuda.cst.pi ) * self.VWS )**nuda.cst.third
101
99
  # volume fraction
102
100
  self.u = self.Vcl / self.VWS
@@ -104,21 +102,48 @@ class setupCrust():
104
102
  self.e2a_tot = self.e2a_int2 + nuda.cst.mnuc2
105
103
  self.e2a_rm = self.xn * nuda.cst.mnc2 + self.xp * ( nuda.cst.mpc2 + nuda.cst.mec2 )
106
104
  self.e2a_int = self.e2a_tot - self.e2a_rm
105
+ # NEP
106
+ self.nsat = 0.16
107
+ self.Esym = 32.0
108
+ self.Lsym = 50.0
109
+ self.Ksym = -100.0
110
+ self.Qsym = 500.0
107
111
  #
108
112
  elif '2020-mvcd' in model.lower():
109
113
  #
110
- # Note: N_bound or N_g cannot be determined from the tables (Jerome).
114
+ # Note: N_bound or N_f cannot be determined from the tables (Jerome).
111
115
  # It is right?
112
116
  #
113
117
  if model.lower()=='2020-mvcd-d1s':
114
118
  file_in = nuda.param.path_data+'crust/2020-MVCD-D1S.dat'
115
119
  self.label = 'MVCD-D1S-2020'
120
+ # NEP
121
+ self.nsat = 0.16
122
+ self.Esym = 32.0
123
+ self.Lsym = 50.0
124
+ self.Ksym = -100.0
125
+ self.Qsym = 500.0
126
+ #
116
127
  elif model.lower()=='2020-mvcd-d1m':
117
128
  file_in = nuda.param.path_data+'crust/2020-MVCD-D1M.dat'
118
129
  self.label = 'MVCD-D1M-2020'
130
+ # NEP
131
+ self.nsat = 0.16
132
+ self.Esym = 32.0
133
+ self.Lsym = 50.0
134
+ self.Ksym = -100.0
135
+ self.Qsym = 500.0
136
+ #
119
137
  elif model.lower()=='2020-mvcd-d1ms':
120
138
  file_in = nuda.param.path_data+'crust/2020-MVCD-D1MS.dat'
121
139
  self.label = 'MVCD-D1M$^*$-2020'
140
+ # NEP
141
+ self.nsat = 0.16
142
+ self.Esym = 32.0
143
+ self.Lsym = 50.0
144
+ self.Ksym = -100.0
145
+ self.Qsym = 500.0
146
+ #
122
147
  if nuda.env.verb: print('Reads file:',file_in)
123
148
  self.ref = 'C. Mondal, X. Viñas, M. Centelles, and J.N. De, Phys. Rev. C 102, 015802 (2020).'
124
149
  self.note = "semiclassical variational Wigner-Kirkwood method along with shell and pairing corrections calculated with the Strutinsky integral method and the BCS approximation."
@@ -135,36 +160,91 @@ class setupCrust():
135
160
  self.xn = self.N / self.A
136
161
  #self.N_bound = [ int(item) for item in self.Z * self.xpn_bound ]
137
162
  #self.xn_bound = self.N_bound / self.A
138
- #self.N_g = self.N - self.N_bound
163
+ #self.N_f = self.N - self.N_bound
139
164
  self.e2a_tot = self.e2a_int2 + nuda.cst.mnuc2_approx
140
165
  self.e2a_rm = self.xn * nuda.cst.mnc2 + self.xp * ( nuda.cst.mpc2 + nuda.cst.mec2 )
141
166
  self.e2a_int = self.e2a_tot - self.e2a_rm
142
167
  #
143
- #
144
168
  elif '2018-pcpfddg' in model.lower():
145
169
  #
146
- # Note: N_bound or N_g cannot be determined from the tables (Jerome).
170
+ # Note: N_bound or N_f cannot be determined from the tables (Jerome).
147
171
  # It is right?
148
172
  #
149
173
  if model.lower()=='2018-pcpfddg-bsk22':
174
+ #
150
175
  file_in = nuda.param.path_data+'crust/2018-PCPFDDG-BSK22.dat'
151
176
  self.label = 'PCPFDDG-BSK22-2018'
177
+ # NEP
178
+ nep = nuda.matter.setupNEP( model = 'ESkyrme', param = 'BSk22' )
179
+ self.nsat = nep.nsat
180
+ self.Esym = nep.Esym
181
+ self.Lsym = nep.Lsym
182
+ self.Ksym = nep.Ksym
183
+ self.Qsym = nep.Qsym
184
+ #self.nsat = 0.16
185
+ #self.Esym = 32.0
186
+ #self.Lsym = 50.0
187
+ #self.Ksym = -100.0
188
+ #self.Qsym = 500.0
189
+ #
152
190
  elif model.lower()=='2018-pcpfddg-bsk24':
191
+ #
153
192
  file_in = nuda.param.path_data+'crust/2018-PCPFDDG-BSK24.dat'
154
193
  self.label = 'PCPFDDG-BSK24-2018'
194
+ # NEP
195
+ nep = nuda.matter.setupNEP( model = 'ESkyrme', param = 'BSk24' )
196
+ self.nsat = nep.nsat
197
+ self.Esym = nep.Esym
198
+ self.Lsym = nep.Lsym
199
+ self.Ksym = nep.Ksym
200
+ self.Qsym = nep.Qsym
201
+ #self.nsat = 0.16
202
+ #self.Esym = 32.0
203
+ #self.Lsym = 50.0
204
+ #self.Ksym = -100.0
205
+ #self.Qsym = 500.0
206
+ #
155
207
  elif model.lower()=='2018-pcpfddg-bsk25':
208
+ #
156
209
  file_in = nuda.param.path_data+'crust/2018-PCPFDDG-BSK25.dat'
157
210
  self.label = 'PCPFDDG-BSK25-2018'
211
+ # NEP
212
+ nep = nuda.matter.setupNEP( model = 'ESkyrme', param = 'BSk25' )
213
+ self.nsat = nep.nsat
214
+ self.Esym = nep.Esym
215
+ self.Lsym = nep.Lsym
216
+ self.Ksym = nep.Ksym
217
+ self.Qsym = nep.Qsym
218
+ #self.nsat = 0.16
219
+ #self.Esym = 32.0
220
+ #self.Lsym = 50.0
221
+ #self.Ksym = -100.0
222
+ #self.Qsym = 500.0
223
+ #
158
224
  elif model.lower()=='2018-pcpfddg-bsk26':
225
+ #
159
226
  file_in = nuda.param.path_data+'crust/2018-PCPFDDG-BSK26.dat'
160
227
  self.label = 'PCPFDDG-BSK26-2018'
228
+ # NEP
229
+ nep = nuda.matter.setupNEP( model = 'ESkyrme', param = 'BSk26' )
230
+ self.nsat = nep.nsat
231
+ self.Esym = nep.Esym
232
+ self.Lsym = nep.Lsym
233
+ self.Ksym = nep.Ksym
234
+ self.Qsym = nep.Qsym
235
+ #self.nsat = 0.16
236
+ #self.Esym = 32.0
237
+ #self.Lsym = 50.0
238
+ #self.Ksym = -100.0
239
+ #self.Qsym = 500.0
240
+ #
161
241
  if nuda.env.verb: print('Reads file:',file_in)
162
242
  self.ref = 'Pearson J.M., Chamel N., Potekhin A.Y., Fantina, A.F., Ducoin C., Dutta A.K., Goriely S., MNRS 481, 2994 (2018).'
163
243
  self.note = "4th-order Extended Thomas-Fermi (ETF) method with proton shell correction via the Strutinsky integral (SI) with Brussels-Montreal functionals."
164
244
  self.linestyle = 'dashdot'
165
245
  self.latexCite = 'MPearson:2018'
166
246
  self.ncl = 0.16 # in fm-3
167
- self.den, self.Z, self.xp, self.N, self.RWS, self.pre, self.e2a_etf, self.e2a_int, self.e2a_tot, self.mu_p, self.mu_n, self.mu_e, self.ng,self.Zcl, self.Ncl \
247
+ self.den, self.Z, self.xp, self.N, self.RWS, self.pre, self.e2a_etf, self.e2a_int, self.e2a_tot, self.mu_p, self.mu_n, self.mu_e, self.den_f,self.Zcl, self.Ncl \
168
248
  = np.loadtxt( file_in, usecols=(0,1,2,3,5,7,8,9,10,14,15,16,23,25,27), unpack = True )
169
249
  self.den_cgs = self.den / 1.e-39 # in cm-3
170
250
  self.N = np.array([ int(item) for item in self.N ])
@@ -179,16 +259,16 @@ class setupCrust():
179
259
  self.xn_bound = self.N_bound / self.A_bound
180
260
  #
181
261
  #self.xn_bound = self.N_bound / self.A
182
- #self.N_g = self.N - self.N_bound
262
+ #self.N_f = self.N - self.N_bound
183
263
  #self.e2a_tot = self.e2a_int2 + nuda.cst.mnuc2_approx
184
264
  self.e2a_rm = self.xn * nuda.cst.mnc2 + self.xp * ( nuda.cst.mpc2 + nuda.cst.mec2 )
185
265
  #self.e2a_int = self.e2a_tot - self.e2a_rm
186
266
  #
187
- elif '2022-crustgmrs' in model.lower():
188
- #
267
+ elif '2022-gmrs' in model.lower():
189
268
  #
190
- if model.lower()=='2022-crustgmrs-bsk14':
191
- file_in = nuda.param.path_data+'crust/2022-crustGMRS-BSK14.dat'
269
+ if model.lower()=='2022-gmrs-bsk14':
270
+ #
271
+ file_in = nuda.param.path_data+'crust/2022-GMRS-BSK14.dat'
192
272
  self.label = 'GMRS BSK14 2022'
193
273
  # Outer-Inner Crust (OIC) Transition :
194
274
  self.nb_oic = 2.5617840312066730E-004 # in fm-3
@@ -200,8 +280,17 @@ class setupCrust():
200
280
  self.rho_cc = 15.799976089478367 # in MeV/fm3
201
281
  self.pre_cc = 0.32687267610704895 # in MeV/fm3
202
282
  self.mu_n_cc = 7.6209998100288209E-002 # in MeV
203
- elif model.lower()=='2022-crustgmrs-bsk16':
204
- file_in = nuda.param.path_data+'crust/2022-crustGMRS-BSK16.dat'
283
+ # NEP
284
+ nep = nuda.matter.setupNEP( model = 'Skyrme', param = 'BSk14' )
285
+ self.nsat = nep.nsat
286
+ self.Esym = nep.Esym
287
+ self.Lsym = nep.Lsym
288
+ self.Ksym = nep.Ksym
289
+ self.Qsym = nep.Qsym
290
+ #
291
+ elif model.lower()=='2022-gmrs-bsk16':
292
+ #
293
+ file_in = nuda.param.path_data+'crust/2022-GMRS-BSK16.dat'
205
294
  self.label = 'GMRS BSK16 2022'
206
295
  # Outer-Inner Crust (OIC) Transition :
207
296
  self.nb_oic = 2.5282142292259004E-004 # in fm-3
@@ -213,34 +302,17 @@ class setupCrust():
213
302
  self.rho_cc = 16.920900617363277 # in MeV/fm3
214
303
  self.pre_cc = 0.36795626298336570 # in MeV/fm3
215
304
  self.mu_n_cc = 8.4609997888086361E-002 # in MeV
216
- elif model.lower()=='2022-crustgmrs-dhsl59':
217
- file_in = nuda.param.path_data+'crust/2022-crustGMRS-DHSL59.dat'
218
- self.label = 'GMRS DHSL59 2022'
219
- # Outer-Inner Crust (OIC) Transition :
220
- self.nb_oic = 2.6651916429173218E-004 # in fm-3
221
- self.rho_oic = 7.7840639496076998 # in MeV/fm3
222
- self.pre_oic = 6.3684106061817061E-004 # in MeV/fm3
223
- self.mu_n_oic = 2.8095904260657669E-004 # in MeV
224
- # Crust-Core Transition:
225
- self.nb_cc = 7.2109998203862921E-002 # in fm-3
226
- self.rho_cc = 17.733669529186933 # in MeV/fm3
227
- self.pre_cc = 0.33617646422062142 # in MeV/fm3
228
- self.mu_n_cc = 7.2109998203862921E-002 # in MeV
229
- elif model.lower()=='2022-crustgmrs-dhsl69':
230
- file_in = nuda.param.path_data+'crust/2022-crustGMRS-DHSL69.dat'
231
- self.label = 'GMRS DHSL69 2022'
232
- # Outer-Inner Crust (OIC) Transition :
233
- self.nb_oic = 2.4301212474202996E-004 # in fm-3
234
- self.rho_oic = 7.3077129271105594 # in MeV/fm3
235
- self.pre_oic = 5.6022465054447420E-004 # in MeV/fm3
236
- self.mu_n_oic = 2.5617840312066730E-004 # in MeV
237
- # Crust-Core Transition:
238
- self.nb_cc = 7.3209998176074584E-002 # in fm-3
239
- self.rho_cc = 17.399615979167670 # in MeV/fm3
240
- self.pre_cc = 0.38035277580973315 # in MeV/fm3
241
- self.mu_n_cc = 7.3209998176074584E-002 # in MeV
242
- elif model.lower()=='2022-crustgmrs-f0':
243
- file_in = nuda.param.path_data+'crust/2022-crustGMRS-F0.dat'
305
+ # NEP
306
+ nep = nuda.matter.setupNEP( model = 'Skyrme', param = 'BSk16' )
307
+ self.nsat = nep.nsat
308
+ self.Esym = nep.Esym
309
+ self.Lsym = nep.Lsym
310
+ self.Ksym = nep.Ksym
311
+ self.Qsym = nep.Qsym
312
+ #
313
+ elif model.lower()=='2022-gmrs-f0':
314
+ #
315
+ file_in = nuda.param.path_data+'crust/2022-GMRS-F0.dat'
244
316
  self.label = 'GMRS F0 2022'
245
317
  # Outer-Inner Crust (OIC) Transition :
246
318
  self.nb_oic = 2.4950843283419027E-004 # in fm-3
@@ -252,8 +324,105 @@ class setupCrust():
252
324
  self.rho_cc = 18.078177464065167 # in MeV/fm3
253
325
  self.pre_cc = 0.33181818756433845 # in MeV/fm3
254
326
  self.mu_n_cc = 8.3309997920927123E-002 # in MeV
255
- elif model.lower()=='2022-crustgmrs-h1':
256
- file_in = nuda.param.path_data+'crust/2022-crustGMRS-H1.dat'
327
+ # NEP
328
+ nep = nuda.matter.setupNEP( model = 'Skyrme', param = 'F0' )
329
+ self.nsat = nep.nsat
330
+ self.Esym = nep.Esym
331
+ self.Lsym = nep.Lsym
332
+ self.Ksym = nep.Ksym
333
+ self.Qsym = nep.Qsym
334
+ #
335
+ elif model.lower()=='2022-gmrs-lns5':
336
+ #
337
+ file_in = nuda.param.path_data+'crust/2022-GMRS-LNS5.dat'
338
+ self.label = 'GMRS LNS5 2022'
339
+ # Outer-Inner Crust (OIC) Transition :
340
+ self.nb_oic = 2.6651916429173218E-004 # in fm-3
341
+ self.rho_oic = 7.2220830810240075 # in MeV/fm3
342
+ self.pre_oic = 5.3768304050759832E-004 # in MeV/fm3
343
+ self.mu_n_oic = 2.8095904260657669E-004 # in MeV
344
+ # Crust-Core Transition:
345
+ self.nb_cc = 7.0409998246808533E-002 # in fm-3
346
+ self.rho_cc = 14.391278079363289 # in MeV/fm3
347
+ self.pre_cc = 0.26627562388273884 # in MeV/fm3
348
+ self.mu_n_cc = 7.0409998246808533E-002 # in MeV
349
+ # NEP
350
+ nep = nuda.matter.setupNEP( model = 'Skyrme', param = 'LNS5' )
351
+ self.nsat = nep.nsat
352
+ self.Esym = nep.Esym
353
+ self.Lsym = nep.Lsym
354
+ self.Ksym = nep.Ksym
355
+ self.Qsym = nep.Qsym
356
+ #
357
+ elif model.lower()=='2022-gmrs-ratp':
358
+ #
359
+ file_in = nuda.param.path_data+'crust/2022-GMRS-RATP.dat'
360
+ self.label = 'GMRS RATP 2022'
361
+ # Outer-Inner Crust (OIC) Transition :
362
+ self.nb_oic = 2.5617840312066730E-004 # in fm-3
363
+ self.rho_oic = 7.1702995055472227 # in MeV/fm3
364
+ self.pre_oic = 5.1984846488072468E-004 # in MeV/fm3
365
+ self.mu_n_oic = 2.7005802403942604E-004 # in MeV
366
+ # Crust-Core Transition:
367
+ self.nb_cc = 8.6009997852719386E-002 # in fm-3
368
+ self.rho_cc = 16.557394274307612 # in MeV/fm3
369
+ self.pre_cc = 0.35277408994086884 # in MeV/fm3
370
+ self.mu_n_cc = 8.6009997852719386E-002 # in MeV
371
+ # NEP
372
+ nep = nuda.matter.setupNEP( model = 'Skyrme', param = 'RATP' )
373
+ self.nsat = nep.nsat
374
+ self.Esym = nep.Esym
375
+ self.Lsym = nep.Lsym
376
+ self.Ksym = nep.Ksym
377
+ self.Qsym = nep.Qsym
378
+ #
379
+ elif model.lower()=='2022-gmrs-sgii':
380
+ #
381
+ file_in = nuda.param.path_data+'crust/2022-GMRS-SGII.dat'
382
+ self.label = 'GMRS SGII 2022'
383
+ # Outer-Inner Crust (OIC) Transition :
384
+ self.nb_oic = 2.6651916429173218E-004 # in fm-3
385
+ self.rho_oic = 7.2454048591257214 # in MeV/fm3
386
+ self.pre_oic = 5.3291857700309511E-004 # in MeV/fm3
387
+ self.mu_n_oic = 2.8095904260657669E-004 # in MeV
388
+ # Crust-Core Transition:
389
+ self.nb_cc = 6.5309998375645370E-002 # in fm-3
390
+ self.rho_cc = 13.413876317015074 # in MeV/fm3
391
+ self.pre_cc = 0.20198467236572187 # in MeV/fm3
392
+ self.mu_n_cc = 6.5309998375645370E-002 # in MeV
393
+ # NEP
394
+ nep = nuda.matter.setupNEP( model = 'Skyrme', param = 'SGII' )
395
+ self.nsat = nep.nsat
396
+ self.Esym = nep.Esym
397
+ self.Lsym = nep.Lsym
398
+ self.Ksym = nep.Ksym
399
+ self.Qsym = nep.Qsym
400
+ #
401
+ elif model.lower()=='2022-gmrs-sly5':
402
+ #
403
+ file_in = nuda.param.path_data+'crust/2022-GMRS-SLY5.dat'
404
+ self.label = 'GMRS SLy5 2022'
405
+ # Outer-Inner Crust (OIC) Transition :
406
+ self.nb_oic = 2.4623885640591057E-004 # in fm-3
407
+ self.rho_oic = 7.0872886477160133 # in MeV/fm3
408
+ self.pre_oic = 5.1240271689332565E-004 # in MeV/fm3
409
+ self.mu_n_oic = 2.5957995753211628E-004 # in MeV
410
+ # Crust-Core Transition:
411
+ self.nb_cc = 7.6309998097761997E-002 # in fm-3
412
+ self.rho_cc = 17.103178025699933 # in MeV/fm3
413
+ self.pre_cc = 0.31728157118252842 # in MeV/fm3
414
+ self.mu_n_cc = 7.6309998097761997E-002 # in MeV
415
+ # NEP
416
+ nep = nuda.matter.setupNEP( model = 'Skyrme', param = 'SLY5' )
417
+ self.nsat = nep.nsat
418
+ self.Esym = nep.Esym
419
+ self.Lsym = nep.Lsym
420
+ self.Ksym = nep.Ksym
421
+ self.Qsym = nep.Qsym
422
+ #
423
+ elif model.lower()=='2022-gmrs-h1':
424
+ #
425
+ file_in = nuda.param.path_data+'crust/2022-GMRS-H1.dat'
257
426
  self.label = 'GMRS H1 2022'
258
427
  # Outer-Inner Crust (OIC) Transition :
259
428
  self.nb_oic = 2.5957995753211628E-004 # in fm-3
@@ -265,8 +434,17 @@ class setupCrust():
265
434
  self.rho_cc = 17.803660783830789 # in MeV/fm3
266
435
  self.pre_cc = 0.48159809254574409 # in MeV/fm3
267
436
  self.mu_n_cc = 9.5909997602624350E-002 # in MeV
268
- elif model.lower()=='2022-crustgmrs-h2':
269
- file_in = nuda.param.path_data+'crust/2022-crustGMRS-H2.dat'
437
+ # NEP
438
+ nep = nuda.matter.setupNEP( model = 'xEFT', param = 'H1MM' )
439
+ self.nsat = nep.nsat
440
+ self.Esym = nep.Esym
441
+ self.Lsym = nep.Lsym
442
+ self.Ksym = nep.Ksym
443
+ self.Qsym = nep.Qsym
444
+ #
445
+ elif model.lower()=='2022-gmrs-h2':
446
+ #
447
+ file_in = nuda.param.path_data+'crust/2022-GMRS-H2.dat'
270
448
  self.label = 'GMRS H2 2022'
271
449
  # Outer-Inner Crust (OIC) Transition :
272
450
  self.nb_oic = 2.4301212474202996E-004 # in fm-3
@@ -278,8 +456,17 @@ class setupCrust():
278
456
  self.rho_cc = 17.632170792314291 # in MeV/fm3
279
457
  self.pre_cc = 0.48032175761400209 # in MeV/fm3
280
458
  self.mu_n_cc = 9.2909997678410725E-002 # in MeV
281
- elif model.lower()=='2022-crustgmrs-h3':
282
- file_in = nuda.param.path_data+'crust/2022-crustGMRS-H3.dat'
459
+ # NEP
460
+ nep = nuda.matter.setupNEP( model = 'xEFT', param = 'H2MM' )
461
+ self.nsat = nep.nsat
462
+ self.Esym = nep.Esym
463
+ self.Lsym = nep.Lsym
464
+ self.Ksym = nep.Ksym
465
+ self.Qsym = nep.Qsym
466
+ #
467
+ elif model.lower()=='2022-gmrs-h3':
468
+ #
469
+ file_in = nuda.param.path_data+'crust/2022-GMRS-H3.dat'
283
470
  self.label = 'GMRS H3 2022'
284
471
  # Outer-Inner Crust (OIC) Transition :
285
472
  self.nb_oic = 2.4623885640591057E-004 # in fm-3
@@ -291,8 +478,17 @@ class setupCrust():
291
478
  self.rho_cc = 17.236262111228385 # in MeV/fm3
292
479
  self.pre_cc = 0.40705940455120337 # in MeV/fm3
293
480
  self.mu_n_cc = 8.4509997890612573E-002 # in MeV
294
- elif model.lower()=='2022-crustgmrs-h4':
295
- file_in = nuda.param.path_data+'crust/2022-crustGMRS-H4.dat'
481
+ # NEP
482
+ nep = nuda.matter.setupNEP( model = 'xEFT', param = 'H3MM' )
483
+ self.nsat = nep.nsat
484
+ self.Esym = nep.Esym
485
+ self.Lsym = nep.Lsym
486
+ self.Ksym = nep.Ksym
487
+ self.Qsym = nep.Qsym
488
+ #
489
+ elif model.lower()=='2022-gmrs-h4':
490
+ #
491
+ file_in = nuda.param.path_data+'crust/2022-GMRS-H4.dat'
296
492
  self.label = 'GMRS H4 2022'
297
493
  # Outer-Inner Crust (OIC) Transition :
298
494
  self.nb_oic = 2.5282142292259004E-004 # in fm-3
@@ -304,8 +500,17 @@ class setupCrust():
304
500
  self.rho_cc = 18.131463559875652 # in MeV/fm3
305
501
  self.pre_cc = 0.47616516763123967 # in MeV/fm3
306
502
  self.mu_n_cc = 9.0609997736513612E-002 # in MeV
307
- elif model.lower()=='2022-crustgmrs-h5':
308
- file_in = nuda.param.path_data+'crust/2022-crustGMRS-H5.dat'
503
+ # NEP
504
+ nep = nuda.matter.setupNEP( model = 'xEFT', param = 'H4MM' )
505
+ self.nsat = nep.nsat
506
+ self.Esym = nep.Esym
507
+ self.Lsym = nep.Lsym
508
+ self.Ksym = nep.Ksym
509
+ self.Qsym = nep.Qsym
510
+ #
511
+ elif model.lower()=='2022-gmrs-h5':
512
+ #
513
+ file_in = nuda.param.path_data+'crust/2022-GMRS-H5.dat'
309
514
  self.label = 'GMRS H5 2022'
310
515
  # Outer-Inner Crust (OIC) Transition :
311
516
  self.nb_oic = 2.8468963604916567E-004 # in fm-3
@@ -317,8 +522,17 @@ class setupCrust():
317
522
  self.rho_cc = 19.069132247958592 # in MeV/fm3
318
523
  self.pre_cc = 0.46337573665856840 # in MeV/fm3
319
524
  self.mu_n_cc = 8.7009997827457261E-002 # in MeV
320
- elif model.lower()=='2022-crustgmrs-h7':
321
- file_in = nuda.param.path_data+'crust/2022-crustGMRS-H7.dat'
525
+ # NEP
526
+ nep = nuda.matter.setupNEP( model = 'xEFT', param = 'H5MM' )
527
+ self.nsat = nep.nsat
528
+ self.Esym = nep.Esym
529
+ self.Lsym = nep.Lsym
530
+ self.Ksym = nep.Ksym
531
+ self.Qsym = nep.Qsym
532
+ #
533
+ elif model.lower()=='2022-gmrs-h7':
534
+ #
535
+ file_in = nuda.param.path_data+'crust/2022-GMRS-H7.dat'
322
536
  self.label = 'GMRS H7 2022'
323
537
  # Outer-Inner Crust (OIC) Transition :
324
538
  self.nb_oic = 3.2914459584803760E-004 # in fm-3
@@ -330,64 +544,62 @@ class setupCrust():
330
544
  self.rho_cc = 19.885261960955020 # in MeV/fm3
331
545
  self.pre_cc = 0.48143960493062543 # in MeV/fm3
332
546
  self.mu_n_cc = 8.3109997925979548E-002 # in MeV
333
- elif model.lower()=='2022-crustgmrs-lns5':
334
- file_in = nuda.param.path_data+'crust/2022-crustGMRS-LNS5.dat'
335
- self.label = 'GMRS LNS5 2022'
336
- # Outer-Inner Crust (OIC) Transition :
337
- self.nb_oic = 2.6651916429173218E-004 # in fm-3
338
- self.rho_oic = 7.2220830810240075 # in MeV/fm3
339
- self.pre_oic = 5.3768304050759832E-004 # in MeV/fm3
340
- self.mu_n_oic = 2.8095904260657669E-004 # in MeV
341
- # Crust-Core Transition:
342
- self.nb_cc = 7.0409998246808533E-002 # in fm-3
343
- self.rho_cc = 14.391278079363289 # in MeV/fm3
344
- self.pre_cc = 0.26627562388273884 # in MeV/fm3
345
- self.mu_n_cc = 7.0409998246808533E-002 # in MeV
346
- elif model.lower()=='2022-crustgmrs-ratp':
347
- file_in = nuda.param.path_data+'crust/2022-crustGMRS-RATP.dat'
348
- self.label = 'GMRS RATP 2022'
349
- # Outer-Inner Crust (OIC) Transition :
350
- self.nb_oic = 2.5617840312066730E-004 # in fm-3
351
- self.rho_oic = 7.1702995055472227 # in MeV/fm3
352
- self.pre_oic = 5.1984846488072468E-004 # in MeV/fm3
353
- self.mu_n_oic = 2.7005802403942604E-004 # in MeV
354
- # Crust-Core Transition:
355
- self.nb_cc = 8.6009997852719386E-002 # in fm-3
356
- self.rho_cc = 16.557394274307612 # in MeV/fm3
357
- self.pre_cc = 0.35277408994086884 # in MeV/fm3
358
- self.mu_n_cc = 8.6009997852719386E-002 # in MeV
359
- elif model.lower()=='2022-crustgmrs-sgii':
360
- file_in = nuda.param.path_data+'crust/2022-crustGMRS-SGII.dat'
361
- self.label = 'GMRS SGII 2022'
547
+ # NEP
548
+ nep = nuda.matter.setupNEP( model = 'xEFT', param = 'H7MM' )
549
+ self.nsat = nep.nsat
550
+ self.Esym = nep.Esym
551
+ self.Lsym = nep.Lsym
552
+ self.Ksym = nep.Ksym
553
+ self.Qsym = nep.Qsym
554
+ #
555
+ elif model.lower()=='2022-gmrs-dhsl59':
556
+ #
557
+ file_in = nuda.param.path_data+'crust/2022-GMRS-DHSL59.dat'
558
+ self.label = 'GMRS DHSL59 2022'
362
559
  # Outer-Inner Crust (OIC) Transition :
363
560
  self.nb_oic = 2.6651916429173218E-004 # in fm-3
364
- self.rho_oic = 7.2454048591257214 # in MeV/fm3
365
- self.pre_oic = 5.3291857700309511E-004 # in MeV/fm3
561
+ self.rho_oic = 7.7840639496076998 # in MeV/fm3
562
+ self.pre_oic = 6.3684106061817061E-004 # in MeV/fm3
366
563
  self.mu_n_oic = 2.8095904260657669E-004 # in MeV
367
564
  # Crust-Core Transition:
368
- self.nb_cc = 6.5309998375645370E-002 # in fm-3
369
- self.rho_cc = 13.413876317015074 # in MeV/fm3
370
- self.pre_cc = 0.20198467236572187 # in MeV/fm3
371
- self.mu_n_cc = 6.5309998375645370E-002 # in MeV
372
- elif model.lower()=='2022-crustgmrs-sly5':
373
- file_in = nuda.param.path_data+'crust/2022-crustGMRS-SLY5.dat'
374
- self.label = 'GMRS SLy5 2022'
565
+ self.nb_cc = 7.2109998203862921E-002 # in fm-3
566
+ self.rho_cc = 17.733669529186933 # in MeV/fm3
567
+ self.pre_cc = 0.33617646422062142 # in MeV/fm3
568
+ self.mu_n_cc = 7.2109998203862921E-002 # in MeV
569
+ # NEP
570
+ self.nsat = 0.16
571
+ self.Esym = 32.0
572
+ self.Lsym = 59.0
573
+ self.Ksym = -100.0
574
+ self.Qsym = 500.0
575
+ #
576
+ elif model.lower()=='2022-gmrs-dhsl69':
577
+ #
578
+ file_in = nuda.param.path_data+'crust/2022-GMRS-DHSL69.dat'
579
+ self.label = 'GMRS DHSL69 2022'
375
580
  # Outer-Inner Crust (OIC) Transition :
376
- self.nb_oic = 2.4623885640591057E-004 # in fm-3
377
- self.rho_oic = 7.0872886477160133 # in MeV/fm3
378
- self.pre_oic = 5.1240271689332565E-004 # in MeV/fm3
379
- self.mu_n_oic = 2.5957995753211628E-004 # in MeV
581
+ self.nb_oic = 2.4301212474202996E-004 # in fm-3
582
+ self.rho_oic = 7.3077129271105594 # in MeV/fm3
583
+ self.pre_oic = 5.6022465054447420E-004 # in MeV/fm3
584
+ self.mu_n_oic = 2.5617840312066730E-004 # in MeV
380
585
  # Crust-Core Transition:
381
- self.nb_cc = 7.6309998097761997E-002 # in fm-3
382
- self.rho_cc = 17.103178025699933 # in MeV/fm3
383
- self.pre_cc = 0.31728157118252842 # in MeV/fm3
384
- self.mu_n_cc = 7.6309998097761997E-002 # in MeV
586
+ self.nb_cc = 7.3209998176074584E-002 # in fm-3
587
+ self.rho_cc = 17.399615979167670 # in MeV/fm3
588
+ self.pre_cc = 0.38035277580973315 # in MeV/fm3
589
+ self.mu_n_cc = 7.3209998176074584E-002 # in MeV
590
+ # NEP
591
+ self.nsat = 0.16
592
+ self.Esym = 32.0
593
+ self.Lsym = 69.0
594
+ self.Ksym = -100.0
595
+ self.Qsym = 500.0
596
+ #
385
597
  if nuda.env.verb: print('Reads file:',file_in)
386
598
  self.ref = 'G. Grams, J. Margueron, R. Somasundaram, and S. Reddy, EPJA 58, 56 (2022).'
387
599
  self.note = "."
388
600
  self.linestyle = 'dotted'
389
601
  self.latexCite = 'GGrams:2022'
390
- self.den, self.Acl, self.Zcl, self.ncl, self.xe, self.ng, self.VWS, self.e2a_int2, self.pre, self.mu_n, self.mu_p \
602
+ self.den, self.Acl, self.Zcl, self.ncl, self.xe, self.den_f, self.VWS, self.e2a_int2, self.pre, self.mu_n, self.mu_p \
391
603
  = np.loadtxt( file_in, usecols=(0,1,2,3,4,5,6,7,8,9,10), unpack = True )
392
604
  self.den_cgs = self.den / 1.e-39 # in cm-3
393
605
  # bound nucleons
@@ -404,11 +616,11 @@ class setupCrust():
404
616
  self.u = self.Vcl / self.VWS
405
617
  # unbound (gas) neutrons
406
618
  self.RWS = ( 3 / ( 4 * nuda.cst.pi ) * self.VWS )**nuda.cst.third
407
- self.N_g = self.ng * ( self.VWS - self.Vcl )
619
+ self.N_f = self.den_f * ( self.VWS - self.Vcl )
408
620
  # total number of nucleons
409
621
  self.Z = self.Z_bound
410
- self.N = self.N_bound + self.N_g
411
- self.A = self.A_bound + self.N_g
622
+ self.N = self.N_bound + self.N_f
623
+ self.A = self.A_bound + self.N_f
412
624
  self.xn = self.N / self.A
413
625
  self.xp = self.Z / self.A
414
626
  # energy
@@ -417,6 +629,26 @@ class setupCrust():
417
629
  self.e2a_int = self.e2a_tot - self.e2a_rm
418
630
  # electrons
419
631
  self.mu_e = self.mu_n - self.mu_p
632
+ #
633
+ #
634
+ # For all models:
635
+ #
636
+ self.eps_tot = self.e2a_tot * self.den
637
+ self.eps_rm = self.e2a_rm * self.den
638
+ self.eps_int = self.e2a_int * self.den
639
+ # compute the pressure from the derivative of the total energy per nucleon
640
+ x = np.insert(self.den, 0, 0.0)
641
+ y = np.insert(self.e2a_tot, 0, 0.0)
642
+ cs_e2a_tot = CubicSpline(x, y)
643
+ self.pre_tot = np.array( self.den**2 * cs_e2a_tot(self.den, 1) )
644
+ # enthalpy
645
+ self.h2a_tot = self.e2a_tot + self.pre_tot / self.den
646
+ # sound speed in the crust
647
+ x = np.insert(self.den, 0, 0.0)
648
+ y = np.insert(self.pre_tot, 0, 0.0)
649
+ cs_pre_tot = CubicSpline(x, y)
650
+ self.cs2_tot = cs_pre_tot(self.den, 1) / self.h2a_tot
651
+ self.cs2_tot = np.abs( self.cs2_tot ) # this shows that the second derivative is not well calculated
420
652
  #
421
653
  def print_outputs( self ):
422
654
  """
@@ -427,7 +659,7 @@ class setupCrust():
427
659
  if nuda.env.verb: print("Enter print_outputs()")
428
660
  #
429
661
  print("- Print output:")
430
- print(" modcrust:",self.modcrust)
662
+ print(" model:",self.model)
431
663
  print(" ref: ",self.ref)
432
664
  print(" label: ",self.label)
433
665
  print(" note: ",self.note)
@@ -436,17 +668,17 @@ class setupCrust():
436
668
  if self.Z is not None: print(f" Z: {self.Z}")
437
669
  if self.N is not None: print(f" N: {self.N}")
438
670
  if self.N_bound is not None: print(f" N_bound: {self.N_bound}")
439
- if self.N_g is not None: print(f" N_g: {self.N_g}")
671
+ if self.N_f is not None: print(f" N_f: {self.N_f}")
440
672
  if self.mu_n is not None: print(f" mu_n(MeV): {self.mu_n}")
441
673
  if self.mu_p is not None: print(f" mu_p(MeV): {self.mu_p}")
442
- if self.den_g is not None: print(f" den_g(fm-3): {self.den_g}")
674
+ if self.den_f is not None: print(f" den_f(fm-3): {self.den_f}")
443
675
  if self.RWS is not None: print(f" RWS(fm): {np.round(self.RWS,3)}")
444
676
  if self.xpn_bound is not None: print(f" xpn_bound: {self.xpn_bound}")
445
677
  if self.e2a_tot is not None: print(f" e2a_tot(MeV): {np.round(self.e2a_tot,3)}")
446
678
  if self.e2a_rm is not None: print(f" e2a_rm(MeV): {np.round(self.e2a_rm,3)}")
447
679
  if self.e2a_int2 is not None: print(f" e2a_int2(MeV): {np.round(self.e2a_int2,3)}")
448
680
  if self.e2a_int is not None: print(f" e2a_int(MeV): {np.round(self.e2a_int,3)}")
449
- if self.e2a_int_g is not None: print(f" e2a_int_g(MeV): {np.round(self.e2a_int_g,3)}")
681
+ if self.e2a_int_f is not None: print(f" e2a_int_f(MeV): {np.round(self.e2a_int_f,3)}")
450
682
  #
451
683
  if nuda.env.verb: print("Exit print_outputs()")
452
684
  #
@@ -467,10 +699,10 @@ class setupCrust():
467
699
  self.Z_bound = None
468
700
  #: Attribute N_bound (number of neutrons in the cluster).
469
701
  self.N_bound = None
470
- #: Attribute N_g (number of neutrons in the gas).
471
- self.N_g = None
472
- #: Attribute n_g (neutron density in the gas).
473
- self.n_g = None
702
+ #: Attribute N_f (number of free neutrons).
703
+ self.N_f = None
704
+ #: Attribute den_f (free neutron density).
705
+ self.den_f = None
474
706
  #: Attribute A (total number of nucleons of the WS cell).
475
707
  self.A = None
476
708
  #: Attribute Z (total number of protons of the WS cell).
@@ -493,8 +725,6 @@ class setupCrust():
493
725
  self.mu_n = None
494
726
  #: Attribute the proton chemical potential (in MeV).
495
727
  self.mu_p = None
496
- #: Attribute the approximate density of neutron in the gas (in fm-3).
497
- self.den_g = None
498
728
  #: Attribute the radius of the cluster (in fm).
499
729
  self.Rcl = None
500
730
  #: Attribute the radius of the WS cell (in fm).
@@ -505,8 +735,16 @@ class setupCrust():
505
735
  self.e2a_int2 = None
506
736
  #: Attribute the internal energy (in MeV).
507
737
  self.e2a_int = None
738
+ #: Attribute the total internal energy (in MeV).
739
+ self.e2a_tot = None
508
740
  #: Attribute the internal energy of the gas component (in MeV).
509
- self.e2a_int_g = None
741
+ self.e2a_int_f = None
742
+ #: Attribute the rest mass energy density (in MeV fm3).
743
+ self.eps_rm = None
744
+ #: Attribute the internal energy density (in MeV fm3).
745
+ self.eps_int = None
746
+ #: Attribute the total energy density (in MeV fm3).
747
+ self.eps_tot = None
510
748
  #
511
749
  self.ref = None
512
750
  self.note = None