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.
- nucleardatapy/__init__.py +3 -1
- nucleardatapy/astro/setup_gw.py +18 -18
- nucleardatapy/astro/setup_mr.py +123 -33
- 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/create_folder.py +2 -2
- nucleardatapy/crust/setup_crust.py +364 -126
- nucleardatapy/data/astro/HESS/J1731-347.dat +4 -0
- nucleardatapy/data/astro/NICER/J0030+0451.dat +6 -6
- nucleardatapy/data/astro/NICER/J0437-4715.dat +4 -3
- nucleardatapy/data/astro/NICER/J0614-3329.dat +4 -0
- nucleardatapy/data/astro/NICER/J0740+6620.dat +5 -4
- nucleardatapy/data/hnuclei/1991-2L-Yamamoto.csv +6 -0
- nucleardatapy/data/hnuclei/2013-2L-Ahn.csv +1 -1
- nucleardatapy/data/hnuclei/2019-2L-Ekawa.csv +7 -0
- nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-Av18-E2A-NM.dat +8 -8
- nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-414-E2A.dat +21 -0
- nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-414-TD.dat +22 -0
- nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-450-E2A.dat +20 -0
- nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-450-TD.dat +22 -0
- nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-500-E2A.dat +23 -0
- nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-500-TD.dat +22 -0
- nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-414-E2A.dat +15 -0
- nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-414-TD.dat +21 -0
- nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-450-E2A.dat +15 -0
- nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-450-TD.dat +21 -0
- nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-500-E2A.dat +20 -0
- nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-500-TD.dat +20 -0
- nucleardatapy/data/matter/micro/2024-ABI-NM-DeltaNNLO450.dat +28 -0
- nucleardatapy/data/matter/micro/2024-ABI-NM-DeltaNNLO500.dat +28 -0
- nucleardatapy/data/matter/micro/2024-ABI-NM-DeltaNNLOgo394.dat +28 -0
- nucleardatapy/data/matter/micro/2024-ABI-NM-DeltaNNLOgo450.dat +28 -0
- nucleardatapy/data/matter/micro/2024-ABI-NM-NNLOsat.dat +28 -0
- nucleardatapy/data/matter/micro/2024-ABI-SM-DeltaNNLO450.dat +28 -0
- nucleardatapy/data/matter/micro/2024-ABI-SM-DeltaNNLO500.dat +28 -0
- nucleardatapy/data/matter/micro/2024-ABI-SM-DeltaNNLOgo394.dat +28 -0
- nucleardatapy/data/matter/micro/2024-ABI-SM-DeltaNNLOgo450.dat +28 -0
- nucleardatapy/data/matter/micro/2024-ABI-SM-NNLOsat.dat +28 -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/env.py +1 -1
- nucleardatapy/eos/__init__.py +4 -3
- nucleardatapy/eos/setupCC.py +429 -0
- nucleardatapy/eos/setup_am.py +39 -14
- nucleardatapy/eos/setup_am_Beq.py +40 -15
- nucleardatapy/eos/setup_am_Leq.py +40 -15
- nucleardatapy/fig/__init__.py +24 -15
- nucleardatapy/fig/astro_setupGW_fig.py +9 -7
- nucleardatapy/fig/astro_setupMR_fig.py +26 -18
- nucleardatapy/fig/astro_setupMasses_fig.py +8 -6
- nucleardatapy/fig/astro_setupMtov_fig.py +10 -6
- nucleardatapy/fig/astro_setupMup_fig.py +9 -7
- nucleardatapy/fig/corr_setupEsymDen_fig.py +22 -9
- nucleardatapy/fig/corr_setupEsymLsym_fig.py +25 -8
- nucleardatapy/fig/corr_setupKsatQsat_fig.py +23 -17
- nucleardatapy/fig/crust_setupCrust_fig.py +11 -9
- nucleardatapy/fig/eos_setupAMBeq_fig.py +641 -156
- nucleardatapy/fig/eos_setupAMLeq_fig.py +53 -50
- nucleardatapy/fig/eos_setupAM_asy_lep_fig.py +373 -0
- nucleardatapy/fig/eos_setupAM_asy_nuc_fig.py +346 -0
- nucleardatapy/fig/eos_setupAM_asy_tot_fig.py +352 -0
- nucleardatapy/fig/eos_setupAM_fig.py +519 -0
- nucleardatapy/fig/eos_setupCC_fig.py +270 -0
- nucleardatapy/fig/hnuc_setupChart_fig.py +19 -16
- nucleardatapy/fig/hnuc_setupRE1LExp_fig.py +15 -5
- nucleardatapy/fig/matter_all_fig.py +971 -0
- nucleardatapy/fig/matter_setupCheck_fig.py +106 -0
- nucleardatapy/fig/matter_setupFFGLep_fig.py +74 -0
- nucleardatapy/fig/matter_setupFFGNuc_fig.py +286 -115
- nucleardatapy/fig/matter_setupHIC_fig.py +107 -67
- nucleardatapy/fig/matter_setupMicroEsym_fig.py +259 -73
- nucleardatapy/fig/matter_setupMicro_LP_fig.py +185 -82
- nucleardatapy/fig/matter_setupMicro_band_fig.py +126 -53
- nucleardatapy/fig/matter_setupMicro_effmass_fig.py +253 -77
- nucleardatapy/fig/matter_setupMicro_err_NM_fig.py +45 -20
- nucleardatapy/fig/matter_setupMicro_fig.py +317 -77
- nucleardatapy/fig/matter_setupMicro_gap_fig.py +237 -100
- nucleardatapy/fig/matter_setupNEPStats_fig.py +106 -0
- nucleardatapy/fig/matter_setupPhenoEsym_fig.py +204 -65
- nucleardatapy/fig/matter_setupPheno_fig.py +395 -93
- nucleardatapy/fig/nuc_setupBEExp_chart_fig.py +93 -73
- nucleardatapy/fig/nuc_setupBEExp_fig.py +97 -87
- nucleardatapy/fig/nuc_setupBETheo_fig.py +114 -81
- nucleardatapy/fig/nuc_setupISGMRExp_fig.py +12 -15
- nucleardatapy/fig/nuc_setupRchExp_fig.py +14 -22
- nucleardatapy/fig/nuc_setupRchTheo_fig.py +37 -40
- nucleardatapy/fig/nuc_setupRnpExp_fig.py +86 -106
- nucleardatapy/fig/nuc_setupRnpTheo_fig.py +105 -94
- nucleardatapy/hello.py +6 -0
- nucleardatapy/hnuc/setup_re1L_exp.py +6 -6
- nucleardatapy/hnuc/setup_re1Xi_exp.py +5 -5
- nucleardatapy/hnuc/setup_re2L_exp.py +36 -13
- nucleardatapy/matter/__init__.py +14 -14
- nucleardatapy/matter/setup_check.py +6 -6
- nucleardatapy/matter/setup_ffg.py +66 -39
- nucleardatapy/matter/setup_hic.py +91 -74
- nucleardatapy/matter/setup_micro.py +2033 -1007
- nucleardatapy/matter/setup_micro_band.py +6 -6
- nucleardatapy/matter/setup_micro_esym.py +56 -54
- nucleardatapy/matter/setup_micro_gap.py +24 -17
- nucleardatapy/matter/setup_micro_lp.py +2 -2
- 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 +129 -49
- nucleardatapy/matter/setup_pheno_esym.py +22 -19
- nucleardatapy/nuc/setup_be_exp.py +306 -292
- nucleardatapy/nuc/setup_be_theo.py +288 -105
- nucleardatapy/nuc/setup_isgmr_exp.py +4 -4
- nucleardatapy/nuc/setup_rnp_exp.py +1 -0
- nucleardatapy/nuc/setup_rnp_theo.py +2 -1
- {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.1.dist-info}/METADATA +48 -16
- {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.1.dist-info}/RECORD +157 -124
- {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.1.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/eos_setupAM_e_asy_lep_fig.py +0 -125
- nucleardatapy/fig/eos_setupAM_e_asy_nuc_fig.py +0 -115
- nucleardatapy/fig/eos_setupAM_e_asy_tot_fig.py +0 -117
- nucleardatapy/fig/eos_setupAM_e_fig.py +0 -173
- nucleardatapy/fig/matter_ENM_fig.py +0 -128
- nucleardatapy/fig/matter_ESM_fig.py +0 -140
- nucleardatapy/fig/matter_Esym_fig.py +0 -134
- nucleardatapy/fig/matter_cs2_fig.py +0 -83
- nucleardatapy/fig/matter_preNM_fig.py +0 -146
- nucleardatapy/fig/matter_preSM_fig.py +0 -144
- nucleardatapy/fig/matter_setupNEPModelDist_fig.py +0 -68
- /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/{2013-QMC-NM.dat → 2013-MBPT-NM.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.1.dist-info → nucleardatapy-1.0.1.dist-info}/licenses/LICENSE +0 -0
- {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.1.dist-info}/top_level.txt +0 -0
|
@@ -3,9 +3,6 @@ import sys
|
|
|
3
3
|
import math
|
|
4
4
|
import numpy as np # 1.15.0
|
|
5
5
|
|
|
6
|
-
#nucleardatapy_tk = os.getenv('NUCLEARDATAPY_TK')
|
|
7
|
-
#sys.path.insert(0, nucleardatapy_tk)
|
|
8
|
-
|
|
9
6
|
import nucleardatapy as nuda
|
|
10
7
|
|
|
11
8
|
CST_AtmMass = 931.494028
|
|
@@ -16,28 +13,33 @@ CST_mnc2 = 8.0713171
|
|
|
16
13
|
CST_dmnc2= 0.0000005
|
|
17
14
|
CST_mHc2 = 7.2889706
|
|
18
15
|
CST_dmHc2= 0.0000001
|
|
19
|
-
yearMin=
|
|
16
|
+
yearMin=1890
|
|
20
17
|
|
|
21
18
|
# time conversion (using tropical year as in NUBASE2020):
|
|
22
19
|
ns = 1e-9
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
years = 365.2422 * days # (year) in s
|
|
20
|
+
minute = 60 # in s
|
|
21
|
+
hour = 60 * minute # (hours) in s
|
|
22
|
+
day = 24 * hour # (day) in s # days = 86400 # in s
|
|
23
|
+
month = 30 * day # (month) (30 days) in s
|
|
24
|
+
year = 365.2422 * day # (year) in s
|
|
29
25
|
#print('years:',years)
|
|
30
26
|
#print('type(years):',type(years))
|
|
31
|
-
ILt = 1e30 *
|
|
27
|
+
ILt = 1e30 * year # infinite Large time
|
|
32
28
|
ISt = 1.e-30 # infinite Short time
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
HTsl = day # half-time for short live nuclei
|
|
30
|
+
HTvsl = 1.0 # half-time for very short live nuclei
|
|
31
|
+
HThsl = 1.e-3 # half-time for hyper short live nuclei
|
|
35
32
|
|
|
36
|
-
def
|
|
33
|
+
def stable_fit_Z(Zmin = 1, Zmax = 120):
|
|
37
34
|
Z = np.linspace(start=Zmin, stop=Zmax, num=1+Zmax-Zmin, dtype = int )
|
|
38
35
|
N = np.array( Z + 6.e-3*Z*Z, dtype = int )
|
|
39
36
|
return N, Z
|
|
40
37
|
|
|
38
|
+
def stable_fit_N(Nmin = 1, Nmax = 170):
|
|
39
|
+
N = np.linspace(start=Nmin, stop=Nmax, num=1+Nmax-Nmin, dtype = int )
|
|
40
|
+
Z = np.array( N - 3.8e-3*N*N + 9.e-6*N*N*N, dtype = int )
|
|
41
|
+
return N, Z
|
|
42
|
+
|
|
41
43
|
def be_exp_tables():
|
|
42
44
|
"""
|
|
43
45
|
Return a list of the tables available in this toolkit for the experimental masses and
|
|
@@ -165,6 +167,8 @@ class setupBEExp():
|
|
|
165
167
|
self.nucSymb = []
|
|
166
168
|
#: Attribute N (number of neutrons of the nucleus).
|
|
167
169
|
self.nucN = []
|
|
170
|
+
#: Attribute I (isospin asymmetry):
|
|
171
|
+
self.nucI = []
|
|
168
172
|
#: Attribute I.
|
|
169
173
|
self.flagI = []
|
|
170
174
|
#: Attribute Interp (interpolation). Interp='y' is the nucleus\
|
|
@@ -238,6 +242,7 @@ class setupBEExp():
|
|
|
238
242
|
#if nucZ < int(Zmin): continue
|
|
239
243
|
#if int(Z) != 0 and nucZ != int(Z): continue
|
|
240
244
|
NN = AA - ZZ
|
|
245
|
+
II = ( NN - ZZ ) / AA
|
|
241
246
|
if (nuda.env.verb): print(' nucleus:',AA,ZZ,NN)
|
|
242
247
|
#if ZZ == 20: print(' nucleus:',AA,ZZ,NN)
|
|
243
248
|
flagI=int(line[7:8]) # if nuci==0: ground-state (GS)
|
|
@@ -312,29 +317,29 @@ class setupBEExp():
|
|
|
312
317
|
elif htu==' s':
|
|
313
318
|
fac = 1.0 # print('second')
|
|
314
319
|
elif htu==' h':
|
|
315
|
-
fac =
|
|
320
|
+
fac = hour # print('hours')
|
|
316
321
|
elif htu==' d':
|
|
317
|
-
fac =
|
|
322
|
+
fac = day # print('day')
|
|
318
323
|
elif htu==' m':
|
|
319
|
-
fac =
|
|
324
|
+
fac = month # print('month')
|
|
320
325
|
elif htu==' y':
|
|
321
|
-
fac =
|
|
326
|
+
fac = year # print('year')
|
|
322
327
|
elif htu=='ky':
|
|
323
|
-
fac = 1e3 *
|
|
328
|
+
fac = 1e3 * year # print('Kiloyears (1e3)')
|
|
324
329
|
elif htu=='My':
|
|
325
|
-
fac = 1e6 *
|
|
330
|
+
fac = 1e6 * year # print('Megayears (1e6)')
|
|
326
331
|
elif htu=='Gy':
|
|
327
|
-
fac = 1e9 *
|
|
332
|
+
fac = 1e9 * year # print('Gigayears (1e9)')
|
|
328
333
|
elif htu=='Ty':
|
|
329
|
-
fac = 1e12 *
|
|
334
|
+
fac = 1e12 * year # print('Terayears (1e12)')
|
|
330
335
|
elif htu=='Py':
|
|
331
|
-
fac = 1e15 *
|
|
336
|
+
fac = 1e15 * year # print('Petayears (1e15)')
|
|
332
337
|
elif htu=='Ey':
|
|
333
|
-
fac = 1e18 *
|
|
338
|
+
fac = 1e18 * year # print('Exayears (1e18)')
|
|
334
339
|
elif htu=='Zy':
|
|
335
|
-
fac = 1e21 *
|
|
340
|
+
fac = 1e21 * year # print('Zettayears (1e21)')
|
|
336
341
|
elif htu=='Yy':
|
|
337
|
-
fac = 1e24 *
|
|
342
|
+
fac = 1e24 * year # print('Yottayears (1e24)')
|
|
338
343
|
else:
|
|
339
344
|
print('unknown lifetime unit')
|
|
340
345
|
print('ht:',ht,' unit:',htu)
|
|
@@ -403,6 +408,7 @@ class setupBEExp():
|
|
|
403
408
|
self.nucZ.append( ZZ )
|
|
404
409
|
if ZZ > self.Zmax: self.Zmax = ZZ
|
|
405
410
|
self.nucN.append( NN )
|
|
411
|
+
self.nucI.append( II )
|
|
406
412
|
self.nucSymb.append( symb )
|
|
407
413
|
self.flagI.append( flagI )
|
|
408
414
|
self.flagInterp.append( interp )
|
|
@@ -433,6 +439,18 @@ class setupBEExp():
|
|
|
433
439
|
self.dist_nbNuc[i_year] += 1
|
|
434
440
|
print( 'dist:',self.dist_nbNuc )
|
|
435
441
|
#
|
|
442
|
+
# convert to numpy array:
|
|
443
|
+
#
|
|
444
|
+
self.nucA = np.array( self.nucA , dtype = int )
|
|
445
|
+
self.nucN = np.array( self.nucN , dtype = int )
|
|
446
|
+
self.nucZ = np.array( self.nucZ , dtype = int )
|
|
447
|
+
self.flagI = np.array( self.flagI , dtype = int )
|
|
448
|
+
self.nucYear = np.array( self.nucYear , dtype = int )
|
|
449
|
+
self.nucI = np.array( self.nucI , dtype = float )
|
|
450
|
+
self.nucHT = np.array( self.nucHT , dtype = float )
|
|
451
|
+
self.nucBE = np.array( self.nucBE , dtype = float )
|
|
452
|
+
self.nucBE_err = np.array( self.nucBE_err , dtype = float )
|
|
453
|
+
#
|
|
436
454
|
if nuda.env.verb: print("Exit SetupNucBEExp()")
|
|
437
455
|
#
|
|
438
456
|
#
|
|
@@ -491,7 +509,7 @@ class setupBEExp():
|
|
|
491
509
|
self.state = state
|
|
492
510
|
if nuda.env.verb: print("state:",state)
|
|
493
511
|
#
|
|
494
|
-
nuclei = [ 'stable', 'unstable', 'longlive', 'shortlive', 'veryshortlive' ]
|
|
512
|
+
nuclei = [ 'stable', 'unstable', 'longlive', 'shortlive', 'veryshortlive', 'hypershortlive' ]
|
|
495
513
|
#
|
|
496
514
|
if nucleus.lower() not in nuclei:
|
|
497
515
|
print('setup_be_exp.py: Nucleus ',nucleus,' is not in the list: ',nuclei)
|
|
@@ -511,6 +529,7 @@ class setupBEExp():
|
|
|
511
529
|
#: Attribute sel_symb (symbol of the selected nuclei).
|
|
512
530
|
self.sel_nucSymb = []
|
|
513
531
|
self.sel_nucN = []
|
|
532
|
+
self.sel_nucI = []
|
|
514
533
|
self.sel_flagI = []
|
|
515
534
|
self.sel_flagInterp = []
|
|
516
535
|
self.sel_nucHT = [] # half-time in s
|
|
@@ -518,6 +537,7 @@ class setupBEExp():
|
|
|
518
537
|
self.sel_nucBE = []
|
|
519
538
|
self.sel_nucBE_err = []
|
|
520
539
|
#
|
|
540
|
+
self.sel_Zmin = 100
|
|
521
541
|
self.sel_Zmax = 0
|
|
522
542
|
#
|
|
523
543
|
for ind in range(self.nbNuc):
|
|
@@ -525,6 +545,7 @@ class setupBEExp():
|
|
|
525
545
|
nucA = self.nucA[ind]
|
|
526
546
|
nucZ = self.nucZ[ind]
|
|
527
547
|
nucN = self.nucN[ind]
|
|
548
|
+
nucI = self.nucI[ind]
|
|
528
549
|
flagI = self.flagI[ind]
|
|
529
550
|
nucSymb = self.nucSymb[ind]
|
|
530
551
|
flagInterp = self.flagInterp[ind]
|
|
@@ -546,7 +567,9 @@ class setupBEExp():
|
|
|
546
567
|
pass
|
|
547
568
|
elif nucleus.lower() == 'shortlive' and nucStbl == 'n' and nucHT < HTsl and nucHT > HTvsl:
|
|
548
569
|
pass
|
|
549
|
-
elif nucleus.lower() == 'veryshortlive' and nucStbl == 'n' and nucHT < HTvsl:
|
|
570
|
+
elif nucleus.lower() == 'veryshortlive' and nucStbl == 'n' and nucHT < HTvsl and nucHT > HThsl:
|
|
571
|
+
pass
|
|
572
|
+
elif nucleus.lower() == 'hypershortlive' and nucStbl == 'n' and nucHT < HThsl:
|
|
550
573
|
pass
|
|
551
574
|
else:
|
|
552
575
|
continue
|
|
@@ -565,8 +588,10 @@ class setupBEExp():
|
|
|
565
588
|
nbNucSel = nbNucSel + 1
|
|
566
589
|
self.sel_nucA.append( nucA )
|
|
567
590
|
self.sel_nucZ.append( nucZ )
|
|
591
|
+
if nucZ < self.sel_Zmin: self.sel_Zmin = nucZ
|
|
568
592
|
if nucZ > self.sel_Zmax: self.sel_Zmax = nucZ
|
|
569
593
|
self.sel_nucN.append( nucN )
|
|
594
|
+
self.sel_nucI.append( nucI )
|
|
570
595
|
self.sel_nucSymb.append( nucSymb )
|
|
571
596
|
self.sel_flagI.append( flagI )
|
|
572
597
|
self.sel_flagInterp.append( flagInterp )
|
|
@@ -580,74 +605,22 @@ class setupBEExp():
|
|
|
580
605
|
print('number of nuclei(Tot):',self.sel_nbNucTot)
|
|
581
606
|
print('number of nuclei(Sta):',self.sel_nbNucSta)
|
|
582
607
|
print('number of nuclei(Sel):',self.sel_nbNucSel)
|
|
608
|
+
#print(' sel_nucA:',self.sel_nucA)
|
|
609
|
+
# convert to numpy array:
|
|
610
|
+
self.sel_nucA = np.array( self.sel_nucA , dtype = int )
|
|
611
|
+
self.sel_nucN = np.array( self.sel_nucN , dtype = int )
|
|
612
|
+
self.sel_nucZ = np.array( self.sel_nucZ , dtype = int )
|
|
613
|
+
self.sel_flagI = np.array( self.sel_flagI , dtype = int )
|
|
614
|
+
self.sel_nucYear = np.array( self.sel_nucYear , dtype = int )
|
|
615
|
+
self.sel_nucI = np.array( self.sel_nucI , dtype = float )
|
|
616
|
+
self.sel_nucHT = np.array( self.sel_nucHT , dtype = float )
|
|
617
|
+
self.sel_nucBE = np.array( self.sel_nucBE , dtype = float )
|
|
618
|
+
self.sel_nucBE_err = np.array( self.sel_nucBE_err , dtype = float )
|
|
583
619
|
#
|
|
584
620
|
if nuda.env.verb: print("Exit select()")
|
|
585
621
|
#
|
|
586
622
|
return self
|
|
587
623
|
#
|
|
588
|
-
def isotopes(self, Zmin = 1, Zmax = 95 ):
|
|
589
|
-
"""
|
|
590
|
-
Method which find the first and last isotopes for each Zmin<Z<Zmax.
|
|
591
|
-
|
|
592
|
-
:param Zmin: Fix the minimum charge for the search of isotopes.
|
|
593
|
-
:type Zmin: int, optional. Default: 1.
|
|
594
|
-
:param Zmax: Fix the maximum charge for the search of isotopes.
|
|
595
|
-
:type Zmax: int, optional. Default: 95.
|
|
596
|
-
|
|
597
|
-
**Attributes:**
|
|
598
|
-
"""
|
|
599
|
-
#
|
|
600
|
-
if nuda.env.verb: print("Enter drip()")
|
|
601
|
-
#
|
|
602
|
-
if Zmin > Zmax:
|
|
603
|
-
print('setup_be_exp.py: In isotopes attribute function of setup_be_exp.py:')
|
|
604
|
-
print('setup_be_exp.py: Bad definition of Zmin and Zmax')
|
|
605
|
-
print('setup_be_exp.py: It is expected that Zmin<=Zmax')
|
|
606
|
-
print('setup_be_exp.py: Zmin,Zmax:',Zmin,Zmax)
|
|
607
|
-
print('setup_be_exp.py: exit')
|
|
608
|
-
exit()
|
|
609
|
-
#
|
|
610
|
-
Nstable, Zstable = stable_fit( Zmin = Zmin, Zmax = Zmax )
|
|
611
|
-
#
|
|
612
|
-
self.isotopes_Z = []
|
|
613
|
-
self.isotopes_Nmin = []
|
|
614
|
-
self.isotopes_Nmax = []
|
|
615
|
-
#
|
|
616
|
-
for ind,Z in enumerate(Zstable):
|
|
617
|
-
#
|
|
618
|
-
#print('ind,Z, Nstable:',ind,Z,Nstable[ind])
|
|
619
|
-
#
|
|
620
|
-
if Z > Zmax :
|
|
621
|
-
break
|
|
622
|
-
if Z < Zmin :
|
|
623
|
-
continue
|
|
624
|
-
#
|
|
625
|
-
Nmin = Nstable[ind]
|
|
626
|
-
Nmax = Nstable[ind]
|
|
627
|
-
#
|
|
628
|
-
#print('sel_Z:',self.sel_Z)
|
|
629
|
-
#exit()
|
|
630
|
-
for ind2 in range(self.sel_nbNucSel):
|
|
631
|
-
#if self.sel_Z[ind] == Z:
|
|
632
|
-
# print('sel_Z:',self.sel_Z)
|
|
633
|
-
# exit()
|
|
634
|
-
#print('ind:',ind,Z,self.sel_Zmax,self.sel_Z[ind2],Nmin,Nmax)
|
|
635
|
-
#print('sel_N:',self.sel_N[ind2])
|
|
636
|
-
if self.sel_nucZ[ind2] == Z and self.sel_nucN[ind2] < Nmin:
|
|
637
|
-
Nmin = self.sel_nucN[ind2]
|
|
638
|
-
if self.sel_nucZ[ind2] == Z and self.sel_nucN[ind2] > Nmax:
|
|
639
|
-
Nmax = self.sel_nucN[ind2]
|
|
640
|
-
self.isotopes_Z.append( Z )
|
|
641
|
-
self.isotopes_Nmin.append( Nmin )
|
|
642
|
-
self.isotopes_Nmax.append( Nmax )
|
|
643
|
-
#print('drip: Z',self.drip_Z)
|
|
644
|
-
#print('drip: Nmin:',self.drip_Nmin)
|
|
645
|
-
#print('drip: Nmax:',self.drip_Nmax)
|
|
646
|
-
#
|
|
647
|
-
if nuda.env.verb: print("Exit drip()")
|
|
648
|
-
#
|
|
649
|
-
return self
|
|
650
|
-
#
|
|
651
624
|
def select_year(self, year_min=1940, year_max=1960, state= 'gs'):
|
|
652
625
|
"""
|
|
653
626
|
Method which select some nuclei from the table according to the discovery year.
|
|
@@ -751,276 +724,317 @@ class setupBEExp():
|
|
|
751
724
|
#
|
|
752
725
|
return self
|
|
753
726
|
#
|
|
754
|
-
def
|
|
727
|
+
def isotopes(self, Zref = 50 ):
|
|
728
|
+
"""
|
|
729
|
+
Method which find the first and last isotopes for Z=Zref.
|
|
730
|
+
|
|
731
|
+
:param Zref: Fix the charge for the search of isotopes.
|
|
732
|
+
:type Zref: int, optional. Default: 50.
|
|
733
|
+
|
|
734
|
+
**Attributes:**
|
|
735
|
+
"""
|
|
736
|
+
#
|
|
737
|
+
if nuda.env.verb: print("Enter isotopes()")
|
|
738
|
+
#
|
|
739
|
+
if Zref < 0:
|
|
740
|
+
print('setup_be_exp.py: issue with the function isotopes.')
|
|
741
|
+
print('setup_be_exp.py: Bad definition for Zref')
|
|
742
|
+
print('setup_be_exp.py: It is expected that Zref>0')
|
|
743
|
+
print('setup_be_exp.py: Zref:',Zref)
|
|
744
|
+
print('setup_be_exp.py: exit')
|
|
745
|
+
exit()
|
|
746
|
+
#
|
|
747
|
+
Nstable, Zstable = stable_fit_Z( Zmin = Zref, Zmax = Zref )
|
|
748
|
+
#
|
|
749
|
+
nucNmin = Nstable[0]+4
|
|
750
|
+
nucNmax = Nstable[0]-4
|
|
751
|
+
#
|
|
752
|
+
for ind,A in enumerate(self.sel_nucA):
|
|
753
|
+
#
|
|
754
|
+
if self.sel_nucZ[ind] == Zref and self.sel_nucN[ind] < nucNmin:
|
|
755
|
+
nucNmin = self.sel_nucN[ind]
|
|
756
|
+
if self.sel_nucZ[ind] == Zref and self.sel_nucN[ind] > nucNmax:
|
|
757
|
+
nucNmax = self.sel_nucN[ind]
|
|
758
|
+
#
|
|
759
|
+
self.itp_nucZ = Zref
|
|
760
|
+
self.itp_nucNmin = nucNmin
|
|
761
|
+
self.itp_nucNmax = nucNmax
|
|
762
|
+
#
|
|
763
|
+
if nuda.env.verb: print("Exit isotopes()")
|
|
764
|
+
#
|
|
765
|
+
return self
|
|
766
|
+
#
|
|
767
|
+
def isotones(self, Nref = 50 ):
|
|
768
|
+
"""
|
|
769
|
+
Method which find the first and last isotones for N=Nref.
|
|
770
|
+
|
|
771
|
+
:param Nref: Fix the neutron number for the search of isotones.
|
|
772
|
+
:type Nref: int, optional. Default: 50.
|
|
773
|
+
|
|
774
|
+
**Attributes:**
|
|
775
|
+
"""
|
|
776
|
+
#
|
|
777
|
+
if nuda.env.verb: print("Enter isotones()")
|
|
778
|
+
#
|
|
779
|
+
if Nref < 0:
|
|
780
|
+
print('setup_be_exp.py: issue with the function isotones.')
|
|
781
|
+
print('setup_be_exp.py: Bad definition for Nref')
|
|
782
|
+
print('setup_be_exp.py: It is expected that Nref>0')
|
|
783
|
+
print('setup_be_exp.py: Nref:',Nref)
|
|
784
|
+
print('setup_be_exp.py: exit')
|
|
785
|
+
exit()
|
|
786
|
+
#
|
|
787
|
+
Nstable, Zstable = stable_fit_N( Nmin = Nref, Nmax = Nref )
|
|
788
|
+
#
|
|
789
|
+
nucZmin = Zstable[0]
|
|
790
|
+
nucZmax = Zstable[0]
|
|
791
|
+
#
|
|
792
|
+
for ind,A in enumerate(self.sel_nucA):
|
|
793
|
+
#
|
|
794
|
+
if self.sel_nucN[ind] == Nref and self.sel_nucZ[ind] < nucZmin:
|
|
795
|
+
nucZmin = self.sel_nucZ[ind]
|
|
796
|
+
if self.sel_nucN[ind] == Nref and self.sel_nucZ[ind] > nucZmax:
|
|
797
|
+
nucZmax = self.sel_nucZ[ind]
|
|
798
|
+
#
|
|
799
|
+
self.itn_nucN = Nref
|
|
800
|
+
self.itn_nucZmin = nucZmin
|
|
801
|
+
self.itn_nucZmax = nucZmax
|
|
802
|
+
#
|
|
803
|
+
if nuda.env.verb: print("Exit isotones()")
|
|
804
|
+
#
|
|
805
|
+
return self
|
|
806
|
+
#
|
|
807
|
+
def S2n( self, Zref = 50 ):
|
|
755
808
|
"""
|
|
756
809
|
Compute the two-neutron separation energy (S2n)
|
|
757
|
-
S2n = E(
|
|
810
|
+
S2n(Zref,N) = E(Zref,N)-E(Zref,N-2)
|
|
758
811
|
"""
|
|
759
812
|
#
|
|
760
813
|
if nuda.env.verb: print("Enter S2n()")
|
|
761
814
|
#
|
|
762
|
-
if
|
|
815
|
+
if Zref < 0:
|
|
763
816
|
print('setup_be_exp.py: In S2n attribute function of setup_be_exp.py:')
|
|
764
|
-
print('setup_be_exp.py: Bad definition of
|
|
765
|
-
print('setup_be_exp.py: It is expected that
|
|
766
|
-
print('setup_be_exp.py:
|
|
817
|
+
print('setup_be_exp.py: Bad definition of Zref')
|
|
818
|
+
print('setup_be_exp.py: It is expected that Zref>=0')
|
|
819
|
+
print('setup_be_exp.py: Zref:',Zref)
|
|
767
820
|
print('setup_be_exp.py: exit')
|
|
768
821
|
exit()
|
|
769
822
|
#
|
|
770
|
-
S2n_Z = []
|
|
771
823
|
S2n_N = []
|
|
772
|
-
|
|
824
|
+
S2n_E = []
|
|
825
|
+
S2n_E_err = []
|
|
773
826
|
#
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
continue
|
|
780
|
-
#
|
|
781
|
-
if self.flagI[ind] != 0:
|
|
782
|
-
continue
|
|
783
|
-
if self.flagInterp[ind] == 'y':
|
|
784
|
-
continue
|
|
785
|
-
N = self.nucN[ind]
|
|
786
|
-
#
|
|
787
|
-
#print('For Z,N:',Z,N)
|
|
827
|
+
Nmin=self.itp_nucNmin
|
|
828
|
+
Nmax=self.itp_nucNmax
|
|
829
|
+
print('Nmin,Nmax:',Nmin,Nmax)
|
|
830
|
+
#
|
|
831
|
+
for N in range(Nmin+2,Nmax+1):
|
|
788
832
|
#
|
|
789
|
-
|
|
833
|
+
flagN = False; flagNm2 = False;
|
|
790
834
|
#
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
if Z ==
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
835
|
+
for ind,Z in enumerate(self.sel_nucZ):
|
|
836
|
+
#
|
|
837
|
+
if Z == Zref and self.sel_nucN[ind] == N:
|
|
838
|
+
indN = ind
|
|
839
|
+
flagN = True
|
|
840
|
+
if Z == Zref and self.sel_nucN[ind] == N-2:
|
|
841
|
+
indNm2 = ind
|
|
842
|
+
flagNm2 = True
|
|
843
|
+
#
|
|
844
|
+
if flagN and flagNm2:
|
|
845
|
+
S2n_N.append( N )
|
|
846
|
+
S2n_E.append( self.sel_nucBE[indN] - self.sel_nucBE[indNm2] )
|
|
847
|
+
S2n_E_err.append( self.sel_nucBE_err[indN] + self.sel_nucBE_err[indNm2] )
|
|
802
848
|
self.S2n_N = np.array( S2n_N, dtype = int )
|
|
803
|
-
self.
|
|
804
|
-
self.
|
|
805
|
-
#print('Z:',self.S2n_Z)
|
|
806
|
-
#print('N:',self.S2n_N)
|
|
807
|
-
#print('S2n:',self.S2n)
|
|
808
|
-
#print('Z:',self.S2n_Z)
|
|
849
|
+
self.S2n_E = np.array( S2n_E, dtype = float )
|
|
850
|
+
self.S2n_E_err = np.array( S2n_E_err, dtype = float )
|
|
809
851
|
#
|
|
810
852
|
if nuda.env.verb: print("Exit S2n()")
|
|
811
853
|
#
|
|
812
854
|
return self
|
|
813
|
-
|
|
814
|
-
def S2p( self,
|
|
855
|
+
#
|
|
856
|
+
def S2p( self, Nref = 50 ):
|
|
815
857
|
"""
|
|
816
|
-
Compute the two-proton separation energy (
|
|
817
|
-
S2p = E(Z,
|
|
858
|
+
Compute the two-proton separation energy (S2p)
|
|
859
|
+
S2p(Z,Nref) = E(Z,Nref)-E(Z-2,Nref)
|
|
818
860
|
"""
|
|
819
861
|
#
|
|
820
862
|
if nuda.env.verb: print("Enter S2p()")
|
|
821
863
|
#
|
|
822
|
-
if
|
|
864
|
+
if Nref < 0:
|
|
823
865
|
print('setup_be_exp.py: In S2p attribute function of setup_be_exp.py:')
|
|
824
|
-
print('setup_be_exp.py: Bad definition of
|
|
825
|
-
print('setup_be_exp.py: It is expected that
|
|
826
|
-
print('setup_be_exp.py:
|
|
866
|
+
print('setup_be_exp.py: Bad definition of Nref')
|
|
867
|
+
print('setup_be_exp.py: It is expected that Nref>=0')
|
|
868
|
+
print('setup_be_exp.py: Nref:',Nref)
|
|
827
869
|
print('setup_be_exp.py: exit')
|
|
828
870
|
exit()
|
|
829
871
|
#
|
|
830
872
|
S2p_Z = []
|
|
831
|
-
|
|
832
|
-
|
|
873
|
+
S2p_E = []
|
|
874
|
+
S2p_E_err = []
|
|
833
875
|
#
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
continue
|
|
840
|
-
#
|
|
841
|
-
if self.flagI[ind] != 0:
|
|
842
|
-
continue
|
|
843
|
-
if self.flagInterp[ind] == 'y':
|
|
844
|
-
continue
|
|
845
|
-
Z = self.nucZ[ind]
|
|
846
|
-
#
|
|
847
|
-
#print('For Z,N:',Z,N)
|
|
876
|
+
Zmin=self.itn_nucZmin
|
|
877
|
+
Zmax=self.itn_nucZmax
|
|
878
|
+
print('Zmin,Zmax:',Zmin,Zmax)
|
|
879
|
+
#
|
|
880
|
+
for Z in range(Zmin+2,Zmax+1,2):
|
|
848
881
|
#
|
|
849
|
-
|
|
882
|
+
flagZ = False; flagZm2 = False;
|
|
850
883
|
#
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
if N ==
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
884
|
+
for ind,N in enumerate(self.sel_nucN):
|
|
885
|
+
#
|
|
886
|
+
if N == Nref and self.sel_nucZ[ind] == Z:
|
|
887
|
+
indZ = ind
|
|
888
|
+
flagZ = True
|
|
889
|
+
if N == Nref and self.sel_nucZ[ind] == Z-2:
|
|
890
|
+
indZm2 = ind
|
|
891
|
+
flagZm2 = True
|
|
892
|
+
#
|
|
893
|
+
if flagZ and flagZm2:
|
|
894
|
+
S2p_Z.append( Z )
|
|
895
|
+
S2p_E.append( self.sel_nucBE[indZ] - self.sel_nucBE[indZm2] )
|
|
896
|
+
S2p_E_err.append( self.sel_nucBE_err[indZ] + self.sel_nucBE_err[indZm2] )
|
|
863
897
|
self.S2p_Z = np.array( S2p_Z, dtype = int )
|
|
864
|
-
self.
|
|
865
|
-
|
|
866
|
-
#print('N:',self.S2n_N)
|
|
867
|
-
#print('S2n:',self.S2n)
|
|
868
|
-
#print('Z:',self.S2n_Z)
|
|
898
|
+
self.S2p_E = np.array( S2p_E, dtype = float )
|
|
899
|
+
self.S2p_E_err = np.array( S2p_E_err, dtype = float )
|
|
869
900
|
#
|
|
870
901
|
if nuda.env.verb: print("Exit S2p()")
|
|
871
902
|
#
|
|
872
903
|
return self
|
|
873
|
-
|
|
874
|
-
def D3n( self,
|
|
904
|
+
#
|
|
905
|
+
def D3n( self, Zref = 50 ):
|
|
875
906
|
"""
|
|
876
907
|
Compute the three-points odd-even mass staggering (D3p_n)
|
|
877
|
-
|
|
908
|
+
D3n(Z,N) = (-)**N * ( 2*E(Z,N)-E(Z,N+1)-E(Z,N-1) ) / 2
|
|
878
909
|
"""
|
|
879
910
|
#
|
|
880
|
-
if nuda.env.verb: print("Enter
|
|
911
|
+
if nuda.env.verb: print("Enter D3n()")
|
|
881
912
|
#
|
|
882
|
-
if
|
|
883
|
-
print('setup_be_exp.py: In
|
|
884
|
-
print('setup_be_exp.py: Bad definition of
|
|
885
|
-
print('setup_be_exp.py: It is expected that
|
|
886
|
-
print('setup_be_exp.py:
|
|
913
|
+
if Zref < 0:
|
|
914
|
+
print('setup_be_exp.py: In D3n attribute function of setup_be_exp.py:')
|
|
915
|
+
print('setup_be_exp.py: Bad definition of Zref')
|
|
916
|
+
print('setup_be_exp.py: It is expected that Zref>=0')
|
|
917
|
+
print('setup_be_exp.py: Zref:',Zref)
|
|
887
918
|
print('setup_be_exp.py: exit')
|
|
888
919
|
exit()
|
|
889
920
|
#
|
|
890
|
-
D3n_Z_even = []
|
|
891
|
-
D3n_Z_odd = []
|
|
892
921
|
D3n_N_even = []
|
|
893
922
|
D3n_N_odd = []
|
|
894
|
-
|
|
895
|
-
|
|
923
|
+
D3n_E_even = []
|
|
924
|
+
D3n_E_odd = []
|
|
925
|
+
D3n_E_err_even = []
|
|
926
|
+
D3n_E_err_odd = []
|
|
896
927
|
#
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
continue
|
|
903
|
-
#
|
|
904
|
-
if self.flagI[ind] != 0:
|
|
905
|
-
continue
|
|
906
|
-
if self.flagInterp[ind] == 'y':
|
|
907
|
-
continue
|
|
908
|
-
#
|
|
909
|
-
N = self.nucN[ind]
|
|
910
|
-
#
|
|
911
|
-
if N % 2 == 0:
|
|
912
|
-
sign = 1.0 #even
|
|
913
|
-
else:
|
|
914
|
-
sign = -1.0 # odd
|
|
915
|
-
#
|
|
916
|
-
#print('For Z,N:',Z,N)
|
|
928
|
+
Nmin=self.itp_nucNmin
|
|
929
|
+
Nmax=self.itp_nucNmax
|
|
930
|
+
print('Nmin,Nmax:',Nmin,Nmax)
|
|
931
|
+
#
|
|
932
|
+
for N in range(Nmin+1,Nmax):
|
|
917
933
|
#
|
|
918
|
-
|
|
934
|
+
flagN = False; flagNm1 = False; flagNp1 = False;
|
|
919
935
|
#
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
if Z ==
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
936
|
+
for ind,Z in enumerate(self.sel_nucZ):
|
|
937
|
+
#
|
|
938
|
+
if Z == Zref and self.sel_nucN[ind] == N:
|
|
939
|
+
indN = ind
|
|
940
|
+
flagN = True
|
|
941
|
+
if N % 2:
|
|
942
|
+
sign = -1.0 # odd
|
|
943
|
+
else:
|
|
944
|
+
sign = 1.0 # even
|
|
945
|
+
if Z == Zref and self.sel_nucN[ind] == N-1:
|
|
946
|
+
indNm1 = ind
|
|
947
|
+
flagNm1 = True
|
|
948
|
+
if Z == Zref and self.sel_nucN[ind] == N+1:
|
|
949
|
+
indNp1 = ind
|
|
950
|
+
flagNp1 = True
|
|
951
|
+
#
|
|
952
|
+
if flagN and flagNm1 and flagNp1:
|
|
953
|
+
if sign > 0.0: #even
|
|
954
|
+
D3n_N_even.append( N )
|
|
955
|
+
D3n_E_even.append( sign/2.0*( -2*self.sel_nucBE[indN] + self.sel_nucBE[indNm1] + self.sel_nucBE[indNp1] ) )
|
|
956
|
+
D3n_E_err_even.append( 0.5*( 2*self.sel_nucBE_err[indN] + self.sel_nucBE_err[indNm1] + self.sel_nucBE_err[indNp1] ) )
|
|
935
957
|
else:
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
958
|
+
D3n_N_odd.append( N )
|
|
959
|
+
D3n_E_odd.append( sign/2.0*( -2*self.sel_nucBE[indN] + self.sel_nucBE[indNm1] + self.sel_nucBE[indNp1] ) )
|
|
960
|
+
D3n_E_err_odd.append( 0.5*( 2*self.sel_nucBE_err[indN] + self.sel_nucBE_err[indNm1] + self.sel_nucBE_err[indNp1] ) )
|
|
961
|
+
#
|
|
939
962
|
self.D3n_N_even = np.array( D3n_N_even, dtype = int )
|
|
940
|
-
self.
|
|
941
|
-
self.
|
|
942
|
-
self.
|
|
943
|
-
self.
|
|
944
|
-
self.
|
|
963
|
+
self.D3n_E_even = np.array( D3n_E_even, dtype = float )
|
|
964
|
+
self.D3n_E_err_even = np.array( D3n_E_err_even, dtype = float )
|
|
965
|
+
self.D3n_N_odd = np.array( D3n_N_odd, dtype = int )
|
|
966
|
+
self.D3n_E_odd = np.array( D3n_E_odd, dtype = float )
|
|
967
|
+
self.D3n_E_err_odd = np.array( D3n_E_err_odd, dtype = float )
|
|
945
968
|
#
|
|
946
|
-
if nuda.env.verb: print("Exit
|
|
969
|
+
if nuda.env.verb: print("Exit D3n()")
|
|
947
970
|
#
|
|
948
971
|
return self
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
def D3p( self, Nmin = 1, Nmax = 95 ):
|
|
972
|
+
#
|
|
973
|
+
def D3p( self, Nref = 50 ):
|
|
952
974
|
"""
|
|
953
|
-
Compute the three-points odd-even mass staggering (
|
|
954
|
-
|
|
975
|
+
Compute the three-points odd-even mass staggering (D3p_n)
|
|
976
|
+
D3p(Z,N) = (-)**Z * ( 2*E(Z,N)-E(Z+1,N)-E(Z-1,N) ) / 2
|
|
955
977
|
"""
|
|
956
978
|
#
|
|
957
|
-
if nuda.env.verb: print("Enter
|
|
979
|
+
if nuda.env.verb: print("Enter D3p()")
|
|
958
980
|
#
|
|
959
|
-
if
|
|
960
|
-
print('setup_be_exp.py: In
|
|
961
|
-
print('setup_be_exp.py: Bad definition of
|
|
962
|
-
print('setup_be_exp.py: It is expected that
|
|
963
|
-
print('setup_be_exp.py:
|
|
981
|
+
if Nref < 0:
|
|
982
|
+
print('setup_be_exp.py: In D3p attribute function of setup_be_exp.py:')
|
|
983
|
+
print('setup_be_exp.py: Bad definition of Nref')
|
|
984
|
+
print('setup_be_exp.py: It is expected that Nref>=0')
|
|
985
|
+
print('setup_be_exp.py: Nref:',Nref)
|
|
964
986
|
print('setup_be_exp.py: exit')
|
|
965
987
|
exit()
|
|
966
988
|
#
|
|
967
989
|
D3p_Z_even = []
|
|
968
990
|
D3p_Z_odd = []
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
991
|
+
D3p_E_even = []
|
|
992
|
+
D3p_E_odd = []
|
|
993
|
+
D3p_E_err_even = []
|
|
994
|
+
D3p_E_err_odd = []
|
|
973
995
|
#
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
continue
|
|
980
|
-
#
|
|
981
|
-
if self.flagI[ind] != 0:
|
|
982
|
-
continue
|
|
983
|
-
if self.flagInterp[ind] == 'y':
|
|
984
|
-
continue
|
|
985
|
-
#
|
|
986
|
-
Z = self.nucZ[ind]
|
|
987
|
-
#
|
|
988
|
-
if Z % 2 == 0:
|
|
989
|
-
sign = 1.0 #even
|
|
990
|
-
else:
|
|
991
|
-
sign = -1.0 # odd
|
|
992
|
-
#
|
|
993
|
-
#print('For Z,N:',Z,N)
|
|
996
|
+
Zmin=self.itn_nucZmin
|
|
997
|
+
Zmax=self.itn_nucZmax
|
|
998
|
+
print('Zmin,Zmax:',Zmin,Zmax)
|
|
999
|
+
#
|
|
1000
|
+
for Z in range(Zmin+1,Zmax):
|
|
994
1001
|
#
|
|
995
|
-
|
|
1002
|
+
flagZ = False; flagZm1 = False; flagZp1 = False;
|
|
996
1003
|
#
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
if N ==
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1004
|
+
for ind,N in enumerate(self.sel_nucN):
|
|
1005
|
+
#
|
|
1006
|
+
if N == Nref and self.sel_nucZ[ind] == Z:
|
|
1007
|
+
indZ = ind
|
|
1008
|
+
flagZ = True
|
|
1009
|
+
if Z % 2:
|
|
1010
|
+
sign = -1.0 # odd
|
|
1011
|
+
else:
|
|
1012
|
+
sign = 1.0 # even
|
|
1013
|
+
if N == Nref and self.sel_nucZ[ind] == Z-1:
|
|
1014
|
+
indZm1 = ind
|
|
1015
|
+
flagZm1 = True
|
|
1016
|
+
if N == Nref and self.sel_nucZ[ind] == Z+1:
|
|
1017
|
+
indZp1 = ind
|
|
1018
|
+
flagZp1 = True
|
|
1019
|
+
#
|
|
1020
|
+
if flagZ and flagZm1 and flagZp1:
|
|
1021
|
+
if sign > 0.0: #even
|
|
1022
|
+
D3p_Z_even.append( Z )
|
|
1023
|
+
D3p_E_even.append( sign/2.0*( -2*self.sel_nucBE[indZ] + self.sel_nucBE[indZm1] + self.sel_nucBE[indZp1] ) )
|
|
1024
|
+
D3p_E_err_even.append( 0.5*( 2*self.sel_nucBE_err[indZ] + self.sel_nucBE_err[indZm1] + self.sel_nucBE_err[indZp1] ) )
|
|
1012
1025
|
else:
|
|
1013
|
-
D3p_Z_odd.append(
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
self.D3p_N_odd = np.array( D3p_N_odd, dtype = int )
|
|
1026
|
+
D3p_Z_odd.append( Z )
|
|
1027
|
+
D3p_E_odd.append( sign/2.0*( -2*self.sel_nucBE[indZ] + self.sel_nucBE[indZm1] + self.sel_nucBE[indZp1] ) )
|
|
1028
|
+
D3p_E_err_odd.append( 0.5*( 2*self.sel_nucBE_err[indZ] + self.sel_nucBE_err[indZm1] + self.sel_nucBE_err[indZp1] ) )
|
|
1029
|
+
#
|
|
1018
1030
|
self.D3p_Z_even = np.array( D3p_Z_even, dtype = int )
|
|
1019
|
-
self.
|
|
1020
|
-
self.
|
|
1021
|
-
self.
|
|
1031
|
+
self.D3p_E_even = np.array( D3p_E_even, dtype = float )
|
|
1032
|
+
self.D3p_E_err_even = np.array( D3p_E_err_even, dtype = float )
|
|
1033
|
+
self.D3p_Z_odd = np.array( D3p_Z_odd, dtype = int )
|
|
1034
|
+
self.D3p_E_odd = np.array( D3p_E_odd, dtype = float )
|
|
1035
|
+
self.D3p_E_err_odd = np.array( D3p_E_err_odd, dtype = float )
|
|
1022
1036
|
#
|
|
1023
|
-
if nuda.env.verb: print("Exit
|
|
1037
|
+
if nuda.env.verb: print("Exit D3p()")
|
|
1024
1038
|
#
|
|
1025
1039
|
return self
|
|
1026
|
-
|
|
1040
|
+
#
|