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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. nucleardatapy/__init__.py +3 -1
  2. nucleardatapy/astro/setup_gw.py +18 -18
  3. nucleardatapy/astro/setup_mr.py +9 -1
  4. nucleardatapy/astro/setup_mup.py +10 -10
  5. nucleardatapy/corr/setup_EsymDen.py +0 -5
  6. nucleardatapy/corr/setup_EsymLsym.py +50 -17
  7. nucleardatapy/corr/setup_KsatQsat.py +170 -69
  8. nucleardatapy/crust/setup_crust.py +403 -120
  9. nucleardatapy/data/astro/NICER/J0740+6620.dat +1 -0
  10. nucleardatapy/data/crust/2018-PCPFDDG-BSK22.dat +83 -0
  11. nucleardatapy/data/crust/2018-PCPFDDG-BSK24.dat +74 -0
  12. nucleardatapy/data/crust/2018-PCPFDDG-BSK25.dat +130 -0
  13. nucleardatapy/data/crust/2018-PCPFDDG-BSK26.dat +81 -0
  14. nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-E2A-NM.dat → 2006-BHF-Av18-E2A-NM.dat} +8 -8
  15. nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-Av18-effmass-SM.dat +11 -0
  16. nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-Av18-effmass-beta0.2.dat +11 -0
  17. nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-Av18-effmass-beta0.4.dat +11 -0
  18. nucleardatapy/data/matter/nep/NEPESkyrme.dat +2 -3
  19. nucleardatapy/data/matter/nep/NEPGSkyrme.dat +7 -0
  20. nucleardatapy/data/matter/nep/NEPSkyrme.dat +4 -2
  21. nucleardatapy/data/matter/nep/NEPxEFT.dat +8 -0
  22. nucleardatapy/data/matter/nep/best67DDSkyrme.dat +28 -0
  23. nucleardatapy/data/matter/nep/best90DDSkyrme.dat +46 -0
  24. nucleardatapy/data/matter/nep/best95DDSkyrme.dat +54 -0
  25. nucleardatapy/data/matter/pheno/ESkyrme/BSk31-NM.dat +996 -996
  26. nucleardatapy/data/matter/pheno/ESkyrme/BSk31-SM.dat +991 -991
  27. nucleardatapy/data/matter/pheno/ESkyrme/BSkG4-NM.dat +1002 -0
  28. nucleardatapy/data/matter/pheno/ESkyrme/BSkG4-SM.dat +1002 -0
  29. nucleardatapy/data/matter/pheno/Skyrme/BSkG1-NM.dat +102 -0
  30. nucleardatapy/data/matter/pheno/Skyrme/BSkG1-SM.dat +102 -0
  31. nucleardatapy/data/matter/pheno/Skyrme/BSkG2-NM.dat +102 -0
  32. nucleardatapy/data/matter/pheno/Skyrme/BSkG2-SM.dat +102 -0
  33. nucleardatapy/data/nuclei/masses/Theory/2023-BSkG3.txt +0 -4
  34. nucleardatapy/data/nuclei/masses/Theory/2025-BSkG4.txt +0 -1
  35. nucleardatapy/env.py +1 -1
  36. nucleardatapy/eos/__init__.py +4 -3
  37. nucleardatapy/eos/setupCC.py +429 -0
  38. nucleardatapy/eos/setup_am.py +71 -34
  39. nucleardatapy/eos/setup_am_Beq.py +48 -17
  40. nucleardatapy/eos/setup_am_Leq.py +81 -50
  41. nucleardatapy/fig/__init__.py +29 -7
  42. nucleardatapy/fig/astro_setupGW_fig.py +5 -5
  43. nucleardatapy/fig/astro_setupMR_fig.py +12 -10
  44. nucleardatapy/fig/astro_setupMasses_fig.py +4 -4
  45. nucleardatapy/fig/astro_setupMtov_fig.py +4 -4
  46. nucleardatapy/fig/astro_setupMup_fig.py +5 -5
  47. nucleardatapy/fig/corr_setupEsymDen_fig.py +12 -5
  48. nucleardatapy/fig/corr_setupEsymLsym_fig.py +18 -5
  49. nucleardatapy/fig/corr_setupKsatQsat_fig.py +19 -15
  50. nucleardatapy/fig/crust_setupCrust_fig.py +7 -7
  51. nucleardatapy/fig/eos_setupAMBeq_fig.py +1338 -64
  52. nucleardatapy/fig/eos_setupAMLeq_fig.py +200 -68
  53. nucleardatapy/fig/eos_setupAM_asy_lep_fig.py +364 -0
  54. nucleardatapy/fig/eos_setupAM_asy_nuc_fig.py +337 -0
  55. nucleardatapy/fig/eos_setupAM_asy_tot_fig.py +343 -0
  56. nucleardatapy/fig/eos_setupAM_fig.py +470 -47
  57. nucleardatapy/fig/eos_setupCC_fig.py +240 -0
  58. nucleardatapy/fig/hnuc_setupChart_fig.py +2 -2
  59. nucleardatapy/fig/hnuc_setupRE1LExp_fig.py +4 -4
  60. nucleardatapy/fig/matter_all_fig.py +954 -0
  61. nucleardatapy/fig/matter_setupCheck_fig.py +103 -0
  62. nucleardatapy/fig/matter_setupFFGLep_fig.py +70 -0
  63. nucleardatapy/fig/matter_setupFFGNuc_fig.py +268 -104
  64. nucleardatapy/fig/matter_setupHIC_fig.py +98 -58
  65. nucleardatapy/fig/matter_setupMicroEsym_fig.py +267 -51
  66. nucleardatapy/fig/matter_setupMicro_LP_fig.py +175 -78
  67. nucleardatapy/fig/matter_setupMicro_band_fig.py +116 -47
  68. nucleardatapy/fig/matter_setupMicro_effmass_fig.py +264 -34
  69. nucleardatapy/fig/matter_setupMicro_err_NM_fig.py +41 -18
  70. nucleardatapy/fig/matter_setupMicro_fig.py +332 -98
  71. nucleardatapy/fig/matter_setupMicro_gap_fig.py +219 -92
  72. nucleardatapy/fig/matter_setupNEPStats_fig.py +96 -0
  73. nucleardatapy/fig/matter_setupPhenoEsym_fig.py +201 -61
  74. nucleardatapy/fig/matter_setupPheno_fig.py +392 -85
  75. nucleardatapy/fig/nuc_setupBEExp_chart_fig.py +286 -0
  76. nucleardatapy/fig/nuc_setupBEExp_fig.py +232 -70
  77. nucleardatapy/fig/nuc_setupBETheo_fig.py +344 -0
  78. nucleardatapy/fig/nuc_setupISGMRExp_fig.py +59 -0
  79. nucleardatapy/fig/nuc_setupRchExp_fig.py +139 -0
  80. nucleardatapy/fig/nuc_setupRchTheo_fig.py +143 -0
  81. nucleardatapy/fig/nuc_setupRnpExp_fig.py +88 -0
  82. nucleardatapy/fig/nuc_setupRnpTheo_fig.py +133 -0
  83. nucleardatapy/hello.py +6 -0
  84. nucleardatapy/hnuc/__init__.py +3 -3
  85. nucleardatapy/hnuc/{setup_be1L_exp.py → setup_re1L_exp.py} +6 -6
  86. nucleardatapy/hnuc/{setup_be1Xi_exp.py → setup_re1Xi_exp.py} +5 -5
  87. nucleardatapy/hnuc/{setup_be2L_exp.py → setup_re2L_exp.py} +6 -6
  88. nucleardatapy/matter/__init__.py +14 -13
  89. nucleardatapy/matter/setup_check.py +97 -0
  90. nucleardatapy/matter/setup_ffg.py +72 -38
  91. nucleardatapy/matter/setup_hic.py +91 -74
  92. nucleardatapy/matter/setup_micro.py +1698 -1019
  93. nucleardatapy/matter/setup_micro_band.py +11 -6
  94. nucleardatapy/matter/setup_micro_effmass.py +55 -2
  95. nucleardatapy/matter/setup_micro_esym.py +39 -34
  96. nucleardatapy/matter/setup_micro_gap.py +26 -19
  97. nucleardatapy/matter/setup_micro_lp.py +20 -19
  98. nucleardatapy/matter/setup_nep.py +175 -92
  99. nucleardatapy/matter/{setup_nep_model_dist.py → setup_nep_stat_model.py} +13 -8
  100. nucleardatapy/matter/{setup_nep_dist.py → setup_nep_stat_models.py} +12 -8
  101. nucleardatapy/matter/setup_pheno.py +121 -45
  102. nucleardatapy/matter/setup_pheno_esym.py +14 -19
  103. nucleardatapy/nuc/__init__.py +2 -2
  104. nucleardatapy/nuc/setup_be_exp.py +345 -333
  105. nucleardatapy/nuc/setup_be_theo.py +366 -178
  106. nucleardatapy/nuc/setup_isgmr_exp.py +4 -4
  107. nucleardatapy/nuc/setup_rch_exp.py +49 -6
  108. nucleardatapy/nuc/setup_rch_theo.py +72 -3
  109. nucleardatapy/nuc/{setup_nskin_exp.py → setup_rnp_exp.py} +59 -65
  110. nucleardatapy/nuc/{setup_nskin_theo.py → setup_rnp_theo.py} +35 -39
  111. nucleardatapy-1.0.0.dist-info/METADATA +553 -0
  112. {nucleardatapy-0.2.0.dist-info → nucleardatapy-1.0.0.dist-info}/RECORD +156 -128
  113. {nucleardatapy-0.2.0.dist-info → nucleardatapy-1.0.0.dist-info}/WHEEL +1 -1
  114. tests/test_corr_setupKsatQsat.py +3 -1
  115. tests/test_matter_setupMicro.py +37 -10
  116. nucleardatapy/data/matter/pheno/ESkyrme/BSkG1-NM.dat +0 -1002
  117. nucleardatapy/data/matter/pheno/ESkyrme/BSkG1-SM.dat +0 -1002
  118. nucleardatapy/data/matter/pheno/ESkyrme/BSkG2-NM.dat +0 -1002
  119. nucleardatapy/data/matter/pheno/ESkyrme/BSkG2-SM.dat +0 -1002
  120. nucleardatapy/fig/matter_ENM_fig.py +0 -119
  121. nucleardatapy/fig/matter_ESM_fig.py +0 -119
  122. nucleardatapy/fig/matter_Esym_fig.py +0 -122
  123. nucleardatapy/fig/matter_setupNEPModelDist_fig.py +0 -68
  124. nucleardatapy-0.2.0.dist-info/METADATA +0 -115
  125. /nucleardatapy/data/LandauParameters/micro/{2006-IBHF-NM-AV18.dat → 2006-EBHF-NM-AV18.dat} +0 -0
  126. /nucleardatapy/data/LandauParameters/micro/{2006-IBHF-SM-AV18.dat → 2006-EBHF-SM-AV18.dat} +0 -0
  127. /nucleardatapy/data/crust/{2022-crustGMRS-BSK14.dat → 2022-GMRS-BSK14.dat} +0 -0
  128. /nucleardatapy/data/crust/{2022-crustGMRS-BSK16.dat → 2022-GMRS-BSK16.dat} +0 -0
  129. /nucleardatapy/data/crust/{2022-crustGMRS-DHSL59.dat → 2022-GMRS-DHSL59.dat} +0 -0
  130. /nucleardatapy/data/crust/{2022-crustGMRS-DHSL69.dat → 2022-GMRS-DHSL69.dat} +0 -0
  131. /nucleardatapy/data/crust/{2022-crustGMRS-F0.dat → 2022-GMRS-F0.dat} +0 -0
  132. /nucleardatapy/data/crust/{2022-crustGMRS-H1.dat → 2022-GMRS-H1.dat} +0 -0
  133. /nucleardatapy/data/crust/{2022-crustGMRS-H2.dat → 2022-GMRS-H2.dat} +0 -0
  134. /nucleardatapy/data/crust/{2022-crustGMRS-H3.dat → 2022-GMRS-H3.dat} +0 -0
  135. /nucleardatapy/data/crust/{2022-crustGMRS-H4.dat → 2022-GMRS-H4.dat} +0 -0
  136. /nucleardatapy/data/crust/{2022-crustGMRS-H5.dat → 2022-GMRS-H5.dat} +0 -0
  137. /nucleardatapy/data/crust/{2022-crustGMRS-H7.dat → 2022-GMRS-H7.dat} +0 -0
  138. /nucleardatapy/data/crust/{2022-crustGMRS-LNS5.dat → 2022-GMRS-LNS5.dat} +0 -0
  139. /nucleardatapy/data/crust/{2022-crustGMRS-RATP.dat → 2022-GMRS-RATP.dat} +0 -0
  140. /nucleardatapy/data/crust/{2022-crustGMRS-SGII.dat → 2022-GMRS-SGII.dat} +0 -0
  141. /nucleardatapy/data/crust/{2022-crustGMRS-SLY5.dat → 2022-GMRS-SLY5.dat} +0 -0
  142. /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-E2A-AM.dat → 2006-BHF-Av18-E2A-AM.dat} +0 -0
  143. /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-E2A-SM.dat → 2006-BHF-Av18-E2A-SM.dat} +0 -0
  144. /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-Esym2-SM.dat → 2006-BHF-Av18-Esym2-SM.dat} +0 -0
  145. /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-GAP-NM-FreeSpectrum.dat → 2006-BHF-Av18-GAP-NM-FreeSpectrum.dat} +0 -0
  146. /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-GAP-NM-SelfEnergy.dat → 2006-BHF-Av18-GAP-NM-SelfEnergy.dat} +0 -0
  147. /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-GAP-SM-FreeSpectrum.dat → 2006-BHF-Av18-GAP-SM-FreeSpectrum.dat} +0 -0
  148. /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-GAP-SM-SelfEnergy.dat → 2006-BHF-Av18-GAP-SM-SelfEnergy.dat} +0 -0
  149. /nucleardatapy/data/matter/micro/{2013-QMC-NM.dat → 2013-MBPT-NM.dat} +0 -0
  150. /nucleardatapy/data/matter/micro/{2020-MBPT-NM-DHSL59.dat → 2019-MBPT-NM-DHSL59.dat} +0 -0
  151. /nucleardatapy/data/matter/micro/{2020-MBPT-NM-DHSL69.dat → 2019-MBPT-NM-DHSL69.dat} +0 -0
  152. /nucleardatapy/data/matter/micro/{2020-MBPT-SM-DHSL59.dat → 2019-MBPT-SM-DHSL59.dat} +0 -0
  153. /nucleardatapy/data/matter/micro/{2020-MBPT-SM-DHSL69.dat → 2019-MBPT-SM-DHSL69.dat} +0 -0
  154. /nucleardatapy/data/matter/micro/{2023-MBPT-NM.csv → 2020-MBPT-NM.csv} +0 -0
  155. /nucleardatapy/data/matter/micro/{2023-MBPT-SM.csv → 2020-MBPT-SM.csv} +0 -0
  156. /nucleardatapy/data/nuclei/{nskin → rnp}/208Pb.dat +0 -0
  157. /nucleardatapy/data/nuclei/{nskin → rnp}/48Ca.dat +0 -0
  158. /nucleardatapy/data/{NeutronSkin/ddrhNskin-208Pb.dat → rnp/ddrhrnp-208Pb.dat} +0 -0
  159. /nucleardatapy/data/{NeutronSkin/ddrhNskin-48Ca.dat → rnp/ddrhrnp-48Ca.dat} +0 -0
  160. /nucleardatapy/data/{NeutronSkin/nlrhNskin-208Pb.dat → rnp/nlrhrnp-208Pb.dat} +0 -0
  161. /nucleardatapy/data/{NeutronSkin/nlrhNskin-48Ca.dat → rnp/nlrhrnp-48Ca.dat} +0 -0
  162. /nucleardatapy/data/{NeutronSkin/skyrmeNskin-208Pb.dat → rnp/skyrmernp-208Pb.dat} +0 -0
  163. /nucleardatapy/data/{NeutronSkin/skyrmeNskin-48Ca.dat → rnp/skyrmernp-48Ca.dat} +0 -0
  164. {nucleardatapy-0.2.0.dist-info → nucleardatapy-1.0.0.dist-info/licenses}/LICENSE +0 -0
  165. {nucleardatapy-0.2.0.dist-info → nucleardatapy-1.0.0.dist-info}/top_level.txt +0 -0
@@ -20,7 +20,7 @@ def isgmr_exp_tables():
20
20
  #
21
21
  if nuda.env.verb: print("\nEnter isgmr_exp_tables()")
22
22
  #
23
- tables = [ '2010-ISGMR-LI', '2018-ISGMR-GARG', '2018-ISGMR-GARG-LATEX', '2022-ISGMR-average' ]
23
+ tables = [ '2010-ISGMR-LI', '2018-ISGMR-GARG', '2018-ISGMR-GARG-few', '2022-ISGMR-average' ]
24
24
  #print('tables available in the toolkit:',tables)
25
25
  tables_lower = [ item.lower() for item in tables ]
26
26
  #print('tables available in the toolkit:',tables_lower)
@@ -100,12 +100,12 @@ class setupISGMRExp():
100
100
  nucM32M1.append( None ); nucM32M1_errp.append( None ); nucM32M1_errm.append( None )
101
101
  nuc = len( nucZ ); nbk = nuc
102
102
  #
103
- elif table.lower() == '2018-isgmr-garg':
103
+ elif table.lower() == '2018-isgmr-garg-few':
104
104
  #
105
105
  file_in = os.path.join(nuda.param.path_data,'nuclei/isgmr/2018-ISGMR-Garg.dat')
106
106
  if nuda.env.verb: print('Reads file:',file_in)
107
107
  self.ref = 'U. Garg and G. Colo, Prog. Part. Nucl. Phys. 101, 55 (2018)'
108
- self.label = 'Garg-Colo-2018'
108
+ self.label = 'Garg-Colo-2018-few'
109
109
  self.note = "write here notes about this table."
110
110
  nucZ, nucA, nucM12Mm1, nucM12Mm1_errp, nucM12Mm1_errm = \
111
111
  np.loadtxt( file_in, usecols=(0,1,2,3,4), comments='#', unpack = True )
@@ -122,7 +122,7 @@ class setupISGMRExp():
122
122
  nucM32M1.append( None ); nucM32M1_errp.append( None ); nucM32M1_errm.append( None )
123
123
  nuc = len( nucZ ); nbk = nuc
124
124
  #
125
- elif table.lower() == '2018-isgmr-garg-latex':
125
+ elif table.lower() == '2018-isgmr-garg':
126
126
  #
127
127
  file_in = os.path.join(nuda.param.path_data,'nuclei/isgmr/2018-ISGMR-Garg.tex')
128
128
  if nuda.env.verb: print('Reads file:',file_in)
@@ -21,9 +21,9 @@ def rch_exp_tables():
21
21
  #
22
22
  tables = [ '2013-Angeli' ]
23
23
  #
24
- print('tables available in the toolkit:',tables)
24
+ #print('tables available in the toolkit:',tables)
25
25
  tables_lower = [ item.lower() for item in tables ]
26
- print('tables available in the toolkit:',tables_lower)
26
+ #print('tables available in the toolkit:',tables_lower)
27
27
  #
28
28
  if nuda.env.verb: print("Exit rch_exp_tables()")
29
29
  #
@@ -109,13 +109,13 @@ class setupRchExp():
109
109
  #
110
110
  if nuda.env.verb: print("Exit setupRchExp()")
111
111
  #
112
- def Rch_isotopes(self, Zref = 50 ):
112
+ def isotopes(self, Zref = 50 ):
113
113
  """
114
114
  This method provide a list if radii for an isotopic chain defined by Zref.
115
115
 
116
116
  """
117
117
  #
118
- if nuda.env.verb: print("Enter Rch_isotopes()")
118
+ if nuda.env.verb: print("Enter isotopes()")
119
119
  #
120
120
  Nref = []
121
121
  Aref = []
@@ -132,9 +132,9 @@ class setupRchExp():
132
132
  Rchref = np.array( Rchref, dtype = float )
133
133
  Rchref_err = np.array( Rchref_err, dtype = float )
134
134
  #
135
- return Nref, Aref, Rchref, Rchref_err
135
+ if nuda.env.verb: print("Exit isotopes()")
136
136
  #
137
- if nuda.env.verb: print("Exit Rch_isotopes()")
137
+ return Nref, Aref, Rchref, Rchref_err
138
138
  #
139
139
  def print_outputs( self ):
140
140
  """
@@ -157,3 +157,46 @@ class setupRchExp():
157
157
  if nuda.env.verb: print("Exit print_outputs()")
158
158
  #
159
159
 
160
+ class setupRchExpIsotopes():
161
+ """
162
+ Instantiate the object with charge radii choosen \
163
+ from a table.
164
+
165
+ This method provide a list if radii for an isotopic chain defined by Zref.
166
+
167
+ :param table: Fix the name of `table`. Default value: '2013-Angeli'.
168
+ :type table: str, optional.
169
+
170
+ **Attributes:**
171
+ """
172
+ #
173
+ def __init__( self, rch, Zref = 50 ):
174
+ """
175
+ Parameters
176
+ ----------
177
+ model : str, optional
178
+ The model to consider. Choose between: 1998-VAR-AM-APR (default), 2008-AFDMC-NM, ...
179
+ """
180
+ #
181
+ if nuda.env.verb: print("\nEnter setupRchExpIsotopes()")
182
+ #
183
+ self.label = 'Isotope Z='+str(Zref)
184
+ #
185
+ Nref = []
186
+ Aref = []
187
+ Rchref = []
188
+ Rchref_err = []
189
+ for k in range(len(rch.nucZ)):
190
+ if int( rch.nucZ[k] ) == Zref:
191
+ Nref.append( rch.nucN[k] )
192
+ Aref.append( rch.nucA[k] )
193
+ Rchref.append( rch.nucRch[k] )
194
+ Rchref_err.append( rch.nucRch_err[k] )
195
+ self.N = np.array( Nref, dtype = int )
196
+ self.A = np.array( Aref, dtype = int )
197
+ self.Z = Zref * np.ones( self.N.size )
198
+ self.Rch = np.array( Rchref, dtype = float )
199
+ self.Rch_err = np.array( Rchref_err, dtype = float )
200
+ #
201
+ if nuda.env.verb: print("Exit setupRchExpIsotopes()")
202
+ #
@@ -2,11 +2,38 @@ import os
2
2
  import sys
3
3
  import numpy as np # 1.15.0
4
4
 
5
- #nucleardatapy_tk = os.getenv('NUCLEARDATAPY_TK')
6
- #sys.path.insert(0, nucleardatapy_tk)
7
-
8
5
  import nucleardatapy as nuda
9
6
 
7
+ def rch_emp( A, Z, formula ):
8
+ if formula == 'classic':
9
+ return 1.2 * A**0.3333
10
+ elif formula == '1994-NPP':
11
+ # B. Nerlo-Pomorska and K. Pomorski, Z. Phys. A 348, 169 (1994)
12
+ r0 = 1.240
13
+ b = 0.191
14
+ c = 1.646
15
+ elif formula == '2013-BAKS-1':
16
+ # T. Bayram, S. Akkoyun, S. Okan Kara, A. Sinan, Acta Phys. Pol. B 44, 1791 (2013)
17
+ r0 = 0.951
18
+ b = 0.0
19
+ c = 0.0
20
+ elif formula == '2013-BAKS-2':
21
+ # T. Bayram, S. Akkoyun, S. Okan Kara, A. Sinan, Acta Phys. Pol. B 44, 1791 (2013)
22
+ r0 = 0.996
23
+ b = 0.278
24
+ c = 0.0
25
+ elif formula == '2013-BAKS-3':
26
+ # T. Bayram, S. Akkoyun, S. Okan Kara, A. Sinan, Acta Phys. Pol. B 44, 1791 (2013)
27
+ r0 = 0.966
28
+ b = 0.182
29
+ c = 1.652
30
+ else:
31
+ print('setup_rch_theo: formula is badly defined ',formula)
32
+ print('setup_rch_theo: exit')
33
+ exit()
34
+ #return ( 1.19 - 0.8 * (1-2*Z/A)**2 ) * A**0.3333 - 0.3* A**0.1666
35
+ return r0 * ( 1.0 - b * (1.0-2.0*Z/A) + c/ A ) * A**0.3333
36
+
10
37
  def rch_theo_tables():
11
38
  """
12
39
  Return a list of the tables available in this toolkit for the charge radiuus and
@@ -196,3 +223,45 @@ class setupRchTheo():
196
223
  if nuda.env.verb: print("Exit print_outputs()")
197
224
  #
198
225
 
226
+ class setupRchTheoIsotopes():
227
+ """
228
+ Instantiate the object with charge radii choosen \
229
+ from a table.
230
+
231
+ This method provide a list if radii for an isotopic chain defined by Zref.
232
+
233
+ :param table: Fix the name of `table`. Default value: '2013-Angeli'.
234
+ :type table: str, optional.
235
+
236
+ **Attributes:**
237
+ """
238
+ #
239
+ def __init__( self, rch, Zref = 50 ):
240
+ """
241
+ Parameters
242
+ ----------
243
+ model : str, optional
244
+ The model to consider. Choose between: 1998-VAR-AM-APR (default), 2008-AFDMC-NM, ...
245
+ """
246
+ #
247
+ if nuda.env.verb: print("\nEnter setupRchExpIsotopes()")
248
+ #
249
+ self.label = 'Isotope Z='+str(Zref)
250
+ #
251
+ Nref = []
252
+ Aref = []
253
+ Rchref = []
254
+ Rchref_err = []
255
+ for k in range(len(rch.nucZ)):
256
+ if int( rch.nucZ[k] ) == Zref:
257
+ Nref.append( rch.nucN[k] )
258
+ Aref.append( rch.nucA[k] )
259
+ Rchref.append( rch.nucRch[k] )
260
+ self.N = np.array( Nref, dtype = int )
261
+ self.A = np.array( Aref, dtype = int )
262
+ self.Z = Zref * np.ones( self.N.size )
263
+ self.Rch = np.array( Rchref, dtype = float )
264
+ #
265
+ if nuda.env.verb: print("Exit setupRchExpIsotopes()")
266
+ #
267
+
@@ -1,14 +1,10 @@
1
- import os
2
- import sys
1
+ import numpy as np
3
2
  import math
4
- import numpy as np # 1.15.0
5
-
6
- # nucleardatapy_tk = os.getenv('NUCLEARDATAPY_TK')
7
- # sys.path.insert(0, nucleardatapy_tk)
3
+ #import numpy as np # 1.15.0
8
4
 
9
5
  import nucleardatapy as nuda
10
6
 
11
- def nskin_exp():
7
+ def rnp_exp():
12
8
  """
13
9
  Return a list of the nuclei (source) for which a neutron skin is given
14
10
 
@@ -16,7 +12,7 @@ def nskin_exp():
16
12
  :rtype: list[str].
17
13
  """
18
14
  #
19
- if nuda.env.verb: print("\nEnter nskin_exp()")
15
+ if nuda.env.verb: print("\nEnter rnp_exp()")
20
16
  #
21
17
  sources = [ '48Ca', '208Pb' ]
22
18
  #
@@ -24,11 +20,11 @@ def nskin_exp():
24
20
  sources_lower = [ item.lower() for item in sources ]
25
21
  # print('sources available in the toolkit:',sources_lower)
26
22
  #
27
- if nuda.env.verb: print("Exit nskin_exp()")
23
+ if nuda.env.verb: print("Exit rnp_exp()")
28
24
  #
29
25
  return sources, sources_lower
30
26
 
31
- def nskin_exp_source(source):
27
+ def rnp_exp_source(source):
32
28
  """
33
29
  Return a list of values for a given source (nuclei).
34
30
 
@@ -37,7 +33,7 @@ def nskin_exp_source(source):
37
33
  :return: The list of calculations.
38
34
  :rtype: list[int].
39
35
  """
40
- if nuda.env.verb: print("\nEnter nskin_exp_source()")
36
+ if nuda.env.verb: print("\nEnter rnp_exp_source()")
41
37
 
42
38
  cals = []
43
39
  if source.lower() == '48ca':
@@ -47,10 +43,10 @@ def nskin_exp_source(source):
47
43
  else:
48
44
  raise ValueError(f"Source '{source}' is not supported. Supported sources are: '48Ca' and '208Pb'.")
49
45
 
50
- if nuda.env.verb: print("Exit nskin_source()")
46
+ if nuda.env.verb: print("Exit rnp_source()")
51
47
  return cals
52
48
 
53
- class SetupNeutronSkinExp():
49
+ class setupRnpExp():
54
50
  """
55
51
  Instantiate the neutron skin calculations for a given source and cal.
56
52
 
@@ -69,11 +65,11 @@ class SetupNeutronSkinExp():
69
65
  """
70
66
  def __init__(self, source = '208Pb', cal = 1 ):
71
67
  #
72
- if nuda.env.verb: print("Enter SetupNeutronSkin()")
68
+ if nuda.env.verb: print("Enter setupRnpExp()")
73
69
  #
74
70
  # some checks
75
71
  #
76
- sources, sources_lower = nskin_exp()
72
+ sources, sources_lower = rnp_exp()
77
73
  if source.lower() not in sources_lower:
78
74
  print('Source ',source,' is not in the list of sources.')
79
75
  print('list of sources:',sources)
@@ -82,7 +78,7 @@ class SetupNeutronSkinExp():
82
78
  self.source = source
83
79
  if nuda.env.verb: print("source:",source)
84
80
  #
85
- cals = nskin_exp_source( source = source )
81
+ cals = rnp_exp_source( source = source )
86
82
  if cal not in cals:
87
83
  print('cal ',cal,' is not in the list of cal.')
88
84
  print('list of cal:',cals)
@@ -95,9 +91,9 @@ class SetupNeutronSkinExp():
95
91
  #
96
92
  file_in = None
97
93
  if source.lower() == '48ca':
98
- file_in = nuda.param.path_data + 'nuclei/nskin/48Ca.dat'
94
+ file_in = nuda.param.path_data + 'nuclei/rnp/48Ca.dat'
99
95
  elif source.lower() == '208pb':
100
- file_in = nuda.param.path_data + 'nuclei/nskin/208Pb.dat'
96
+ file_in = nuda.param.path_data + 'nuclei/rnp/208Pb.dat'
101
97
  else:
102
98
  raise ValueError(f"Unsupported source '{source}'. Expected '48Ca' or '208Pb'.")
103
99
  if file_in is None:
@@ -445,11 +441,11 @@ class SetupNeutronSkinExp():
445
441
  #: Attribute the negative uncertainty.
446
442
  self.prad_sig_do = None
447
443
  #: Attributethe neutron skin of the source.
448
- self.nskin = None
444
+ self.rnp = None
449
445
  #: Attribute the positive uncertainty.
450
- self.nskin_sig_up = None
446
+ self.rnp_sig_up = None
451
447
  #: Attribute the negative uncertainty.
452
- self.nskin_sig_do = None
448
+ self.rnp_sig_lo = None
453
449
  #: Attribute latexCite.
454
450
  self.latexCite = None
455
451
  #
@@ -469,16 +465,16 @@ class SetupNeutronSkinExp():
469
465
  if int(a) == cal:
470
466
  self.nrad = safe_float(ele[1])
471
467
  self.nrad_sig_up = safe_float(ele[2])
472
- self.nrad_sig_do = safe_float(ele[3])
468
+ self.nrad_sig_lo = safe_float(ele[3])
473
469
  self.prad = safe_float(ele[4])
474
470
  self.prad_sig_up = safe_float(ele[5])
475
- self.prad_sig_do = safe_float(ele[6])
476
- self.nskin = safe_float(ele[7])
477
- self.nskin_sig_up = safe_float(ele[8])
478
- self.nskin_sig_do = safe_float(ele[9])
471
+ self.prad_sig_lo = safe_float(ele[6])
472
+ self.rnp = safe_float(ele[7])
473
+ self.rnp_sig_up = safe_float(ele[8])
474
+ self.rnp_sig_lo = safe_float(ele[9])
479
475
  self.latexCite = ele[10].replace('\n','').replace(' ','')
480
476
  #
481
- if nuda.env.verb: print("Exit SetupNeutronSkin()")
477
+ if nuda.env.verb: print("Exit setupRnpExp()")
482
478
  #
483
479
  #
484
480
  def print_outputs( self ):
@@ -492,11 +488,11 @@ class SetupNeutronSkinExp():
492
488
  print(" source: ",self.source)
493
489
  print(" cal:",self.cal)
494
490
  print(" Rn:",self.nrad,' in fm')
495
- print(" sigma(Rn):",self.nrad_sig_up,self.nrad_sig_do,' in fm')
491
+ print(" sigma(Rn):",self.nrad_sig_up,self.nrad_sig_lo,' in fm')
496
492
  print(" Rp:",self.prad,' in fm')
497
- print(" sigma(Rp):",self.prad_sig_up,self.prad_sig_do,' in fm')
498
- print(" Rskin:",self.nskin,' in fm')
499
- print(" sigma(Rskin):",self.nskin_sig_up,self.nskin_sig_do,' in fm')
493
+ print(" sigma(Rp):",self.prad_sig_up,self.prad_sig_lo,' in fm')
494
+ print(" Rnp:",self.rnp,' in fm')
495
+ print(" sigma(Rnp):",self.rnp_sig_up,self.rnp_sig_lo,' in fm')
500
496
  print(" latexCite:",self.latexCite)
501
497
  print(" ref: ",self.ref)
502
498
  print(" label: ",self.label)
@@ -505,7 +501,7 @@ class SetupNeutronSkinExp():
505
501
  if nuda.env.verb: print("Exit print_output()")
506
502
  #
507
503
  #
508
- class setupNeutronSkinAverage():
504
+ class setupRnpAverage():
509
505
  """
510
506
  Instantiate the experimental/analitical data for a given source and averaged over cal.
511
507
 
@@ -520,7 +516,7 @@ class setupNeutronSkinAverage():
520
516
  """
521
517
  def __init__(self, source = '208Pb' ):
522
518
  #
523
- if nuda.env.verb: print("Enter setupNeutronSkinAverage()")
519
+ if nuda.env.verb: print("Enter setupRnpAverage()")
524
520
  #
525
521
  self.source = source
526
522
  self.latexCite = None
@@ -528,22 +524,20 @@ class setupNeutronSkinAverage():
528
524
  self.label = source+' average'
529
525
  self.note = 'compute the centroid and standard deviation from the data.'
530
526
  #
531
- cals = nskin_exp_source( source = source )
527
+ cals = rnp_exp_source( source = source )
532
528
  # print('cals:',cals)
533
529
  #
534
530
  # search for the boundary for the neutron skin:
535
531
  nsmin = 0.5; nsmax = 0.0;
536
532
  for cal in cals:
537
- nskin = nuda.SetupNeutronSkinExp( source = source, cal = cal )
538
- # nskin.print_outputs( )
539
- # print(f"Valor de nskin_sig_do: {nskin.nskin_sig_do}")
540
- if nskin.nskin_sig_do is None or nskin.nskin_sig_do >= 1000:
541
- nskin.nskin_sig_do = 0
542
- if nskin.nskin_sig_up is None or nskin.nskin_sig_up >= 1000:
543
- nskin.nskin_sig_up = 0
544
- nsdo = nskin.nskin - 0.5*nskin.nskin_sig_do
545
- nsup = nskin.nskin + 0.5*nskin.nskin_sig_up
546
- if nsdo < nsmin: nsmin = nsdo
533
+ rnp = nuda.nuc.setupRnpExp( source = source, cal = cal )
534
+ if rnp.rnp_sig_lo is None or rnp.rnp_sig_lo >= 1000:
535
+ rnp.rnp_sig_lo = 0
536
+ if rnp.rnp_sig_up is None or rnp.rnp_sig_up >= 1000:
537
+ rnp.rnp_sig_up = 0
538
+ nslo = rnp.rnp - 0.5*rnp.rnp_sig_lo
539
+ nsup = rnp.rnp + 0.5*rnp.rnp_sig_up
540
+ if nslo < nsmin: nsmin = nslo
547
541
  if nsup > nsmax: nsmax = nsup
548
542
  #print('nsmin:',nsmin)
549
543
  #print('nsmax:',nsmax)
@@ -552,20 +546,20 @@ class setupNeutronSkinAverage():
552
546
  #print('ax:',ax)
553
547
  ay = np.zeros(300)
554
548
  for cal in cals:
555
- nskin = nuda.SetupNeutronSkinExp( source = source, cal = cal )
556
- #nskin.print_outputs( )
557
- ay += gauss(ax,nskin.nskin,nskin.nskin_sig_up,nskin.nskin_sig_do)
549
+ rnp = nuda.nuc.setupRnpExp( source = source, cal = cal )
550
+ #rnp.print_outputs( )
551
+ ay += gauss(ax,rnp.rnp,rnp.rnp_sig_up,rnp.rnp_sig_lo)
558
552
  # determine the centroid and standard deviation from the distribution of cal.
559
553
  nor = sum( ay )
560
554
  cen = sum( ay*ax )
561
555
  std = sum ( ay*ax**2 )
562
- self.nskin_cen = cen / nor
563
- self.sig_std = round( math.sqrt( std/nor - self.nskin_cen**2 ), 3 )
564
- self.nskin_cen = round( self.nskin_cen, 3)
565
- #print('nskin:',self.nskin_cen)
556
+ self.rnp_cen = cen / nor
557
+ self.sig_std = round( math.sqrt( std/nor - self.rnp_cen**2 ), 3 )
558
+ self.rnp_cen = round( self.rnp_cen, 3)
559
+ #print('rnp:',self.rnp_cen)
566
560
  #print('std:',self.sig_std)
567
561
  #
568
- if nuda.env.verb: print("Exit setupNeutronSkinAverage()")
562
+ if nuda.env.verb: print("Exit setupRnpAverage()")
569
563
  #
570
564
  def print_output( self ):
571
565
  """
@@ -578,7 +572,7 @@ class setupNeutronSkinAverage():
578
572
  if nuda.env.verb_output:
579
573
  print("- Print output:")
580
574
  print(" source: ",self.source)
581
- print(" nskin_cen:",self.nskin_cen)
575
+ print(" rnp_cen:",self.rnp_cen)
582
576
  print(" sig_std:",self.sig_std)
583
577
  print(" latexCite:",self.latexCite)
584
578
  print(" ref: ",self.ref)
@@ -591,20 +585,20 @@ class setupNeutronSkinAverage():
591
585
  #
592
586
  #
593
587
 
594
- def gauss( ax, nskin, nskin_sig_up, nskin_sig_do ):
595
- if nskin_sig_do is None or nskin_sig_do == 0 or nskin_sig_do >= 1000:
596
- nskin_sig_do = 0.0001
597
- if nskin_sig_up is None or nskin_sig_up == 0 or nskin_sig_up >= 1000:
598
- nskin_sig_up = 0.0001
599
- fac = math.sqrt( 2*math.pi )
588
+ def gauss( ax, rnp, rnp_sig_up, rnp_sig_lo ):
589
+ if rnp_sig_lo is None or rnp_sig_lo == 0 or rnp_sig_lo >= 1000:
590
+ rnp_sig_lo = 0.0001
591
+ if rnp_sig_up is None or rnp_sig_up == 0 or rnp_sig_up >= 1000:
592
+ rnp_sig_up = 0.0001
593
+ fac = math.sqrt( 2.0 * math.pi )
600
594
  gauss = []
601
595
  for x in ax:
602
- if x < nskin:
603
- z = ( x - nskin ) / nskin_sig_do
604
- norm = nskin_sig_do * fac
596
+ if x < rnp:
597
+ z = ( x - rnp ) / rnp_sig_lo
598
+ norm = rnp_sig_lo * fac
605
599
  else:
606
- z = ( x - nskin ) / nskin_sig_up
607
- norm = nskin_sig_up * fac
608
- gauss.append( math.exp( -0.5*z**2 ) / norm )
600
+ z = ( x - rnp ) / rnp_sig_up
601
+ norm = rnp_sig_up * fac
602
+ gauss.append( math.exp( -0.5 * z**2 ) / norm )
609
603
  return gauss
610
604