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.
- nucleardatapy/__init__.py +3 -1
- nucleardatapy/astro/setup_gw.py +18 -18
- nucleardatapy/astro/setup_mr.py +9 -1
- nucleardatapy/astro/setup_mup.py +10 -10
- nucleardatapy/corr/setup_EsymDen.py +0 -5
- nucleardatapy/corr/setup_EsymLsym.py +50 -17
- nucleardatapy/corr/setup_KsatQsat.py +170 -69
- nucleardatapy/crust/setup_crust.py +403 -120
- nucleardatapy/data/astro/NICER/J0740+6620.dat +1 -0
- nucleardatapy/data/crust/2018-PCPFDDG-BSK22.dat +83 -0
- nucleardatapy/data/crust/2018-PCPFDDG-BSK24.dat +74 -0
- nucleardatapy/data/crust/2018-PCPFDDG-BSK25.dat +130 -0
- nucleardatapy/data/crust/2018-PCPFDDG-BSK26.dat +81 -0
- nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-E2A-NM.dat → 2006-BHF-Av18-E2A-NM.dat} +8 -8
- nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-Av18-effmass-SM.dat +11 -0
- nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-Av18-effmass-beta0.2.dat +11 -0
- nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-Av18-effmass-beta0.4.dat +11 -0
- nucleardatapy/data/matter/nep/NEPESkyrme.dat +2 -3
- nucleardatapy/data/matter/nep/NEPGSkyrme.dat +7 -0
- nucleardatapy/data/matter/nep/NEPSkyrme.dat +4 -2
- nucleardatapy/data/matter/nep/NEPxEFT.dat +8 -0
- nucleardatapy/data/matter/nep/best67DDSkyrme.dat +28 -0
- nucleardatapy/data/matter/nep/best90DDSkyrme.dat +46 -0
- nucleardatapy/data/matter/nep/best95DDSkyrme.dat +54 -0
- nucleardatapy/data/matter/pheno/ESkyrme/BSk31-NM.dat +996 -996
- nucleardatapy/data/matter/pheno/ESkyrme/BSk31-SM.dat +991 -991
- nucleardatapy/data/matter/pheno/ESkyrme/BSkG4-NM.dat +1002 -0
- nucleardatapy/data/matter/pheno/ESkyrme/BSkG4-SM.dat +1002 -0
- nucleardatapy/data/matter/pheno/Skyrme/BSkG1-NM.dat +102 -0
- nucleardatapy/data/matter/pheno/Skyrme/BSkG1-SM.dat +102 -0
- nucleardatapy/data/matter/pheno/Skyrme/BSkG2-NM.dat +102 -0
- nucleardatapy/data/matter/pheno/Skyrme/BSkG2-SM.dat +102 -0
- nucleardatapy/data/nuclei/masses/Theory/2023-BSkG3.txt +0 -4
- nucleardatapy/data/nuclei/masses/Theory/2025-BSkG4.txt +0 -1
- nucleardatapy/env.py +1 -1
- nucleardatapy/eos/__init__.py +4 -3
- nucleardatapy/eos/setupCC.py +429 -0
- nucleardatapy/eos/setup_am.py +71 -34
- nucleardatapy/eos/setup_am_Beq.py +48 -17
- nucleardatapy/eos/setup_am_Leq.py +81 -50
- nucleardatapy/fig/__init__.py +29 -7
- nucleardatapy/fig/astro_setupGW_fig.py +5 -5
- nucleardatapy/fig/astro_setupMR_fig.py +12 -10
- nucleardatapy/fig/astro_setupMasses_fig.py +4 -4
- nucleardatapy/fig/astro_setupMtov_fig.py +4 -4
- nucleardatapy/fig/astro_setupMup_fig.py +5 -5
- nucleardatapy/fig/corr_setupEsymDen_fig.py +12 -5
- nucleardatapy/fig/corr_setupEsymLsym_fig.py +18 -5
- nucleardatapy/fig/corr_setupKsatQsat_fig.py +19 -15
- nucleardatapy/fig/crust_setupCrust_fig.py +7 -7
- nucleardatapy/fig/eos_setupAMBeq_fig.py +1338 -64
- nucleardatapy/fig/eos_setupAMLeq_fig.py +200 -68
- nucleardatapy/fig/eos_setupAM_asy_lep_fig.py +364 -0
- nucleardatapy/fig/eos_setupAM_asy_nuc_fig.py +337 -0
- nucleardatapy/fig/eos_setupAM_asy_tot_fig.py +343 -0
- nucleardatapy/fig/eos_setupAM_fig.py +470 -47
- nucleardatapy/fig/eos_setupCC_fig.py +240 -0
- nucleardatapy/fig/hnuc_setupChart_fig.py +2 -2
- nucleardatapy/fig/hnuc_setupRE1LExp_fig.py +4 -4
- nucleardatapy/fig/matter_all_fig.py +954 -0
- nucleardatapy/fig/matter_setupCheck_fig.py +103 -0
- nucleardatapy/fig/matter_setupFFGLep_fig.py +70 -0
- nucleardatapy/fig/matter_setupFFGNuc_fig.py +268 -104
- nucleardatapy/fig/matter_setupHIC_fig.py +98 -58
- nucleardatapy/fig/matter_setupMicroEsym_fig.py +267 -51
- nucleardatapy/fig/matter_setupMicro_LP_fig.py +175 -78
- nucleardatapy/fig/matter_setupMicro_band_fig.py +116 -47
- nucleardatapy/fig/matter_setupMicro_effmass_fig.py +264 -34
- nucleardatapy/fig/matter_setupMicro_err_NM_fig.py +41 -18
- nucleardatapy/fig/matter_setupMicro_fig.py +332 -98
- nucleardatapy/fig/matter_setupMicro_gap_fig.py +219 -92
- nucleardatapy/fig/matter_setupNEPStats_fig.py +96 -0
- nucleardatapy/fig/matter_setupPhenoEsym_fig.py +201 -61
- nucleardatapy/fig/matter_setupPheno_fig.py +392 -85
- nucleardatapy/fig/nuc_setupBEExp_chart_fig.py +286 -0
- nucleardatapy/fig/nuc_setupBEExp_fig.py +232 -70
- nucleardatapy/fig/nuc_setupBETheo_fig.py +344 -0
- nucleardatapy/fig/nuc_setupISGMRExp_fig.py +59 -0
- nucleardatapy/fig/nuc_setupRchExp_fig.py +139 -0
- nucleardatapy/fig/nuc_setupRchTheo_fig.py +143 -0
- nucleardatapy/fig/nuc_setupRnpExp_fig.py +88 -0
- nucleardatapy/fig/nuc_setupRnpTheo_fig.py +133 -0
- nucleardatapy/hello.py +6 -0
- nucleardatapy/hnuc/__init__.py +3 -3
- nucleardatapy/hnuc/{setup_be1L_exp.py → setup_re1L_exp.py} +6 -6
- nucleardatapy/hnuc/{setup_be1Xi_exp.py → setup_re1Xi_exp.py} +5 -5
- nucleardatapy/hnuc/{setup_be2L_exp.py → setup_re2L_exp.py} +6 -6
- nucleardatapy/matter/__init__.py +14 -13
- nucleardatapy/matter/setup_check.py +97 -0
- nucleardatapy/matter/setup_ffg.py +72 -38
- nucleardatapy/matter/setup_hic.py +91 -74
- nucleardatapy/matter/setup_micro.py +1698 -1019
- nucleardatapy/matter/setup_micro_band.py +11 -6
- nucleardatapy/matter/setup_micro_effmass.py +55 -2
- nucleardatapy/matter/setup_micro_esym.py +39 -34
- nucleardatapy/matter/setup_micro_gap.py +26 -19
- nucleardatapy/matter/setup_micro_lp.py +20 -19
- nucleardatapy/matter/setup_nep.py +175 -92
- nucleardatapy/matter/{setup_nep_model_dist.py → setup_nep_stat_model.py} +13 -8
- nucleardatapy/matter/{setup_nep_dist.py → setup_nep_stat_models.py} +12 -8
- nucleardatapy/matter/setup_pheno.py +121 -45
- nucleardatapy/matter/setup_pheno_esym.py +14 -19
- nucleardatapy/nuc/__init__.py +2 -2
- nucleardatapy/nuc/setup_be_exp.py +345 -333
- nucleardatapy/nuc/setup_be_theo.py +366 -178
- nucleardatapy/nuc/setup_isgmr_exp.py +4 -4
- nucleardatapy/nuc/setup_rch_exp.py +49 -6
- nucleardatapy/nuc/setup_rch_theo.py +72 -3
- nucleardatapy/nuc/{setup_nskin_exp.py → setup_rnp_exp.py} +59 -65
- nucleardatapy/nuc/{setup_nskin_theo.py → setup_rnp_theo.py} +35 -39
- nucleardatapy-1.0.0.dist-info/METADATA +553 -0
- {nucleardatapy-0.2.0.dist-info → nucleardatapy-1.0.0.dist-info}/RECORD +156 -128
- {nucleardatapy-0.2.0.dist-info → nucleardatapy-1.0.0.dist-info}/WHEEL +1 -1
- tests/test_corr_setupKsatQsat.py +3 -1
- tests/test_matter_setupMicro.py +37 -10
- nucleardatapy/data/matter/pheno/ESkyrme/BSkG1-NM.dat +0 -1002
- nucleardatapy/data/matter/pheno/ESkyrme/BSkG1-SM.dat +0 -1002
- nucleardatapy/data/matter/pheno/ESkyrme/BSkG2-NM.dat +0 -1002
- nucleardatapy/data/matter/pheno/ESkyrme/BSkG2-SM.dat +0 -1002
- nucleardatapy/fig/matter_ENM_fig.py +0 -119
- nucleardatapy/fig/matter_ESM_fig.py +0 -119
- nucleardatapy/fig/matter_Esym_fig.py +0 -122
- nucleardatapy/fig/matter_setupNEPModelDist_fig.py +0 -68
- nucleardatapy-0.2.0.dist-info/METADATA +0 -115
- /nucleardatapy/data/LandauParameters/micro/{2006-IBHF-NM-AV18.dat → 2006-EBHF-NM-AV18.dat} +0 -0
- /nucleardatapy/data/LandauParameters/micro/{2006-IBHF-SM-AV18.dat → 2006-EBHF-SM-AV18.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-BSK14.dat → 2022-GMRS-BSK14.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-BSK16.dat → 2022-GMRS-BSK16.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-DHSL59.dat → 2022-GMRS-DHSL59.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-DHSL69.dat → 2022-GMRS-DHSL69.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-F0.dat → 2022-GMRS-F0.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-H1.dat → 2022-GMRS-H1.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-H2.dat → 2022-GMRS-H2.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-H3.dat → 2022-GMRS-H3.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-H4.dat → 2022-GMRS-H4.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-H5.dat → 2022-GMRS-H5.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-H7.dat → 2022-GMRS-H7.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-LNS5.dat → 2022-GMRS-LNS5.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-RATP.dat → 2022-GMRS-RATP.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-SGII.dat → 2022-GMRS-SGII.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-SLY5.dat → 2022-GMRS-SLY5.dat} +0 -0
- /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-E2A-AM.dat → 2006-BHF-Av18-E2A-AM.dat} +0 -0
- /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-E2A-SM.dat → 2006-BHF-Av18-E2A-SM.dat} +0 -0
- /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-Esym2-SM.dat → 2006-BHF-Av18-Esym2-SM.dat} +0 -0
- /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-GAP-NM-FreeSpectrum.dat → 2006-BHF-Av18-GAP-NM-FreeSpectrum.dat} +0 -0
- /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-GAP-NM-SelfEnergy.dat → 2006-BHF-Av18-GAP-NM-SelfEnergy.dat} +0 -0
- /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-GAP-SM-FreeSpectrum.dat → 2006-BHF-Av18-GAP-SM-FreeSpectrum.dat} +0 -0
- /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-GAP-SM-SelfEnergy.dat → 2006-BHF-Av18-GAP-SM-SelfEnergy.dat} +0 -0
- /nucleardatapy/data/matter/micro/{2013-QMC-NM.dat → 2013-MBPT-NM.dat} +0 -0
- /nucleardatapy/data/matter/micro/{2020-MBPT-NM-DHSL59.dat → 2019-MBPT-NM-DHSL59.dat} +0 -0
- /nucleardatapy/data/matter/micro/{2020-MBPT-NM-DHSL69.dat → 2019-MBPT-NM-DHSL69.dat} +0 -0
- /nucleardatapy/data/matter/micro/{2020-MBPT-SM-DHSL59.dat → 2019-MBPT-SM-DHSL59.dat} +0 -0
- /nucleardatapy/data/matter/micro/{2020-MBPT-SM-DHSL69.dat → 2019-MBPT-SM-DHSL69.dat} +0 -0
- /nucleardatapy/data/matter/micro/{2023-MBPT-NM.csv → 2020-MBPT-NM.csv} +0 -0
- /nucleardatapy/data/matter/micro/{2023-MBPT-SM.csv → 2020-MBPT-SM.csv} +0 -0
- /nucleardatapy/data/nuclei/{nskin → rnp}/208Pb.dat +0 -0
- /nucleardatapy/data/nuclei/{nskin → rnp}/48Ca.dat +0 -0
- /nucleardatapy/data/{NeutronSkin/ddrhNskin-208Pb.dat → rnp/ddrhrnp-208Pb.dat} +0 -0
- /nucleardatapy/data/{NeutronSkin/ddrhNskin-48Ca.dat → rnp/ddrhrnp-48Ca.dat} +0 -0
- /nucleardatapy/data/{NeutronSkin/nlrhNskin-208Pb.dat → rnp/nlrhrnp-208Pb.dat} +0 -0
- /nucleardatapy/data/{NeutronSkin/nlrhNskin-48Ca.dat → rnp/nlrhrnp-48Ca.dat} +0 -0
- /nucleardatapy/data/{NeutronSkin/skyrmeNskin-208Pb.dat → rnp/skyrmernp-208Pb.dat} +0 -0
- /nucleardatapy/data/{NeutronSkin/skyrmeNskin-48Ca.dat → rnp/skyrmernp-48Ca.dat} +0 -0
- {nucleardatapy-0.2.0.dist-info → nucleardatapy-1.0.0.dist-info/licenses}/LICENSE +0 -0
- {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-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
135
|
+
if nuda.env.verb: print("Exit isotopes()")
|
|
136
136
|
#
|
|
137
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
23
|
+
if nuda.env.verb: print("Exit rnp_exp()")
|
|
28
24
|
#
|
|
29
25
|
return sources, sources_lower
|
|
30
26
|
|
|
31
|
-
def
|
|
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
|
|
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
|
|
46
|
+
if nuda.env.verb: print("Exit rnp_source()")
|
|
51
47
|
return cals
|
|
52
48
|
|
|
53
|
-
class
|
|
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
|
|
68
|
+
if nuda.env.verb: print("Enter setupRnpExp()")
|
|
73
69
|
#
|
|
74
70
|
# some checks
|
|
75
71
|
#
|
|
76
|
-
sources, sources_lower =
|
|
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 =
|
|
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/
|
|
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/
|
|
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.
|
|
444
|
+
self.rnp = None
|
|
449
445
|
#: Attribute the positive uncertainty.
|
|
450
|
-
self.
|
|
446
|
+
self.rnp_sig_up = None
|
|
451
447
|
#: Attribute the negative uncertainty.
|
|
452
|
-
self.
|
|
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.
|
|
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.
|
|
476
|
-
self.
|
|
477
|
-
self.
|
|
478
|
-
self.
|
|
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
|
|
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.
|
|
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.
|
|
498
|
-
print("
|
|
499
|
-
print(" sigma(
|
|
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
|
|
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
|
|
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 =
|
|
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
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
if
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
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
|
-
|
|
556
|
-
#
|
|
557
|
-
ay += gauss(ax,
|
|
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.
|
|
563
|
-
self.sig_std = round( math.sqrt( std/nor - self.
|
|
564
|
-
self.
|
|
565
|
-
#print('
|
|
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
|
|
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("
|
|
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,
|
|
595
|
-
if
|
|
596
|
-
|
|
597
|
-
if
|
|
598
|
-
|
|
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 <
|
|
603
|
-
z = ( x -
|
|
604
|
-
norm =
|
|
596
|
+
if x < rnp:
|
|
597
|
+
z = ( x - rnp ) / rnp_sig_lo
|
|
598
|
+
norm = rnp_sig_lo * fac
|
|
605
599
|
else:
|
|
606
|
-
z = ( x -
|
|
607
|
-
norm =
|
|
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
|
|