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
|
@@ -5,22 +5,23 @@ import numpy as np # 1.15.0
|
|
|
5
5
|
|
|
6
6
|
import nucleardatapy as nuda
|
|
7
7
|
|
|
8
|
-
def delta_emp(
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
8
|
+
def delta_emp( N, Z, formula ):
|
|
9
|
+
A = N + Z
|
|
10
|
+
if formula == 'classic':
|
|
11
|
+
return 12.0 / A**0.5
|
|
12
|
+
elif formula == 'Vogel':
|
|
13
|
+
return ( 7.2 - 44.0 * ( 1.0 - 2.0 * Z / A )**2 ) / A**0.3333
|
|
14
|
+
else:
|
|
15
|
+
print('setup_be_theo: formula is badly defined ',formula)
|
|
16
|
+
print('setup_be_theo: exit')
|
|
17
|
+
exit()
|
|
17
18
|
|
|
18
19
|
def be_theo_tables():
|
|
19
20
|
"""
|
|
20
21
|
Return a list of the tables available in this toolkit for the masses
|
|
21
22
|
predicted by theoretical approaches and print them all on the prompt.
|
|
22
23
|
These tables are the following ones: \
|
|
23
|
-
[ '1988-MJ', '1995-DZ', '1995-ETFSI', '1995-FRDM', \
|
|
24
|
+
[ '1988-GK', '1988-MJ', '1995-DZ', '1995-ETFSI', '1995-FRDM', \
|
|
24
25
|
'2005-KTUY', '2007-HFB14', '2010-WS*', '2010-HFB21', '2011-WS3', '2013-HFB22', \
|
|
25
26
|
'2013-HFB23', '2013-HFB24', '2013-HFB25', '2013-HFB26', '2021-BSkG1', \
|
|
26
27
|
'2022-BSkG2', '2023-BSkG3', '2025-BSkG4' ]
|
|
@@ -31,7 +32,7 @@ def be_theo_tables():
|
|
|
31
32
|
#
|
|
32
33
|
if nuda.env.verb: print("\nEnter be_theo_tables()")
|
|
33
34
|
#
|
|
34
|
-
tables = [ '1988-MJ', '1995-DZ', '1995-ETFSI', '1995-FRDM', \
|
|
35
|
+
tables = [ '1988-GK', '1988-MJ', '1995-DZ', '1995-ETFSI', '1995-FRDM', \
|
|
35
36
|
'2005-KTUY', '2007-HFB14', '2010-WS*', '2010-HFB21','2011-WS3', '2013-HFB22', \
|
|
36
37
|
'2013-HFB23', '2013-HFB24', '2013-HFB25', '2013-HFB26', '2021-BSkG1', \
|
|
37
38
|
'2022-BSkG2', '2023-BSkG3', '2025-BSkG4' ]
|
|
@@ -62,7 +63,7 @@ class setupBETheo():
|
|
|
62
63
|
This choice is defined in the variable `table`.
|
|
63
64
|
|
|
64
65
|
`table` can chosen among the following ones: \
|
|
65
|
-
[ '1988-MJ', '1995-DZ', '1995-ETFSI', '1995-FRDM', \
|
|
66
|
+
[ '1988-GK', '1988-MJ', '1995-DZ', '1995-ETFSI', '1995-FRDM', \
|
|
66
67
|
'2005-KTUY', '2007-HFB14', '2010-WS*', '2010-HFB21','2011-WS3', '2013-HFB26', '2021-BSkG1', \
|
|
67
68
|
'2022-BSkG2', '2023-BSkG3', '2025-BSkG4' ]
|
|
68
69
|
|
|
@@ -488,6 +489,7 @@ class setupBETheo():
|
|
|
488
489
|
self.nucBE2A = self.nucBE / self.nucA
|
|
489
490
|
self.Zmax = int( max( self.nucZ ) )
|
|
490
491
|
#
|
|
492
|
+
self.nucI = ( self.nucN - self.nucZ ) / self.nucA
|
|
491
493
|
#
|
|
492
494
|
if nuda.env.verb: print("Exit setupBETheo()")
|
|
493
495
|
#
|
|
@@ -511,118 +513,179 @@ class setupBETheo():
|
|
|
511
513
|
#
|
|
512
514
|
if nuda.env.verb: print("Exit print_outputs()")
|
|
513
515
|
#
|
|
514
|
-
def
|
|
516
|
+
def isotopes(self, Zref = 50 ):
|
|
517
|
+
"""
|
|
518
|
+
Method which find the first and last isotopes for Z=Zref.
|
|
519
|
+
|
|
520
|
+
:param Zref: Fix the charge for the search of isotopes.
|
|
521
|
+
:type Zref: int, optional. Default: 50.
|
|
522
|
+
|
|
523
|
+
**Attributes:**
|
|
524
|
+
"""
|
|
525
|
+
#
|
|
526
|
+
if nuda.env.verb: print("Enter isotopes()")
|
|
527
|
+
#
|
|
528
|
+
if Zref < 0:
|
|
529
|
+
print('setup_be_exp.py: issue with the function isotopes.')
|
|
530
|
+
print('setup_be_exp.py: Bad definition for Zref')
|
|
531
|
+
print('setup_be_exp.py: It is expected that Zref>0')
|
|
532
|
+
print('setup_be_exp.py: Zref:',Zref)
|
|
533
|
+
print('setup_be_exp.py: exit')
|
|
534
|
+
exit()
|
|
535
|
+
#
|
|
536
|
+
Nstable, Zstable = nuda.nuc.stable_fit_Z( Zmin = Zref, Zmax = Zref )
|
|
537
|
+
#
|
|
538
|
+
nucNmin = Nstable[0]
|
|
539
|
+
nucNmax = Nstable[0]
|
|
540
|
+
#
|
|
541
|
+
for ind,A in enumerate(self.nucA):
|
|
542
|
+
if self.nucZ[ind] == Zref and self.nucN[ind] < nucNmin:
|
|
543
|
+
nucNmin = self.nucN[ind]
|
|
544
|
+
if self.nucZ[ind] == Zref and self.nucN[ind] > nucNmax:
|
|
545
|
+
nucNmax = self.nucN[ind]
|
|
546
|
+
self.itp_nucZ = Zref
|
|
547
|
+
self.itp_nucNmin = nucNmin
|
|
548
|
+
self.itp_nucNmax = nucNmax
|
|
549
|
+
#
|
|
550
|
+
if nuda.env.verb: print("Exit isotopes()")
|
|
551
|
+
#
|
|
552
|
+
return self
|
|
553
|
+
#
|
|
554
|
+
def isotones(self, Nref = 50 ):
|
|
555
|
+
"""
|
|
556
|
+
Method which find the first and last isotones for N=Nref.
|
|
557
|
+
|
|
558
|
+
:param Nref: Fix the neutron number for the search of isotones.
|
|
559
|
+
:type Nref: int, optional. Default: 50.
|
|
560
|
+
|
|
561
|
+
**Attributes:**
|
|
562
|
+
"""
|
|
563
|
+
#
|
|
564
|
+
if nuda.env.verb: print("Enter isotones()")
|
|
565
|
+
#
|
|
566
|
+
if Nref < 0:
|
|
567
|
+
print('setup_be_exp.py: issue with the function isotones.')
|
|
568
|
+
print('setup_be_exp.py: Bad definition for Nref')
|
|
569
|
+
print('setup_be_exp.py: It is expected that Nref>0')
|
|
570
|
+
print('setup_be_exp.py: Nref:',Nref)
|
|
571
|
+
print('setup_be_exp.py: exit')
|
|
572
|
+
exit()
|
|
573
|
+
#
|
|
574
|
+
Nstable, Zstable = nuda.nuc.stable_fit_N( Nmin = Nref, Nmax = Nref )
|
|
575
|
+
#
|
|
576
|
+
nucZmin = Zstable[0]
|
|
577
|
+
nucZmax = Zstable[0]
|
|
578
|
+
#
|
|
579
|
+
for ind,A in enumerate(self.nucA):
|
|
580
|
+
if self.nucN[ind] == Nref and self.nucZ[ind] < nucZmin:
|
|
581
|
+
nucZmin = self.nucZ[ind]
|
|
582
|
+
if self.nucN[ind] == Nref and self.nucZ[ind] > nucZmax:
|
|
583
|
+
nucZmax = self.nucZ[ind]
|
|
584
|
+
self.itn_nucN = Nref
|
|
585
|
+
self.itn_nucZmin = nucZmin
|
|
586
|
+
self.itn_nucZmax = nucZmax
|
|
587
|
+
#
|
|
588
|
+
if nuda.env.verb: print("Exit isotones()")
|
|
589
|
+
#
|
|
590
|
+
return self
|
|
591
|
+
#
|
|
592
|
+
def S2n( self, Zref = 50 ):
|
|
515
593
|
"""
|
|
516
594
|
Compute the two-neutron separation energy (S2n)
|
|
517
|
-
S2n = E(Z,N)-E(Z,N
|
|
595
|
+
S2n = E(Z,N)-E(Z,N-2)
|
|
518
596
|
"""
|
|
519
597
|
#
|
|
520
598
|
if nuda.env.verb: print("Enter S2n()")
|
|
521
599
|
#
|
|
522
|
-
if
|
|
600
|
+
if Zref < 0:
|
|
523
601
|
print('setup_be_theo: In S2n attribute function of setup_be_theo.py:')
|
|
524
|
-
print('setup_be_theo: Bad definition of
|
|
525
|
-
print('setup_be_theo: It is expected that
|
|
526
|
-
print('setup_be_theo:
|
|
602
|
+
print('setup_be_theo: Bad definition of Zref')
|
|
603
|
+
print('setup_be_theo: It is expected that Zref>=0')
|
|
604
|
+
print('setup_be_theo: Zref:',Zref)
|
|
527
605
|
print('setup_be_theo: exit')
|
|
528
606
|
exit()
|
|
529
607
|
#
|
|
530
|
-
S2n_Z = []
|
|
531
608
|
S2n_N = []
|
|
532
|
-
|
|
609
|
+
S2n_E = []
|
|
610
|
+
S2n_Z = []
|
|
533
611
|
#
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
#
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
#print('N,N2:',N,N2,'ind,ind2:',ind,ind2)
|
|
555
|
-
S2n_Z.append( self.nucZ[ind] )
|
|
556
|
-
S2n_N.append( self.nucN[ind] )
|
|
557
|
-
S2n.append( self.nucBE[ind2] - self.nucBE[ind] )
|
|
612
|
+
Nmin=self.itp_nucNmin
|
|
613
|
+
Nmax=self.itp_nucNmax
|
|
614
|
+
#
|
|
615
|
+
for N in range(Nmin+2,Nmax+1):
|
|
616
|
+
#
|
|
617
|
+
flagN = False; flagNm2 = False;
|
|
618
|
+
#
|
|
619
|
+
for ind,Z in enumerate(self.nucZ):
|
|
620
|
+
#
|
|
621
|
+
if Z == Zref and self.nucN[ind] == N:
|
|
622
|
+
indN = ind
|
|
623
|
+
flagN = True
|
|
624
|
+
if Z == Zref and self.nucN[ind] == N-2:
|
|
625
|
+
indNm2 = ind
|
|
626
|
+
flagNm2 = True
|
|
627
|
+
#
|
|
628
|
+
if flagN and flagNm2:
|
|
629
|
+
S2n_N.append( N )
|
|
630
|
+
S2n_Z.append( Zref )
|
|
631
|
+
S2n_E.append( self.nucBE[indN] - self.nucBE[indNm2] )
|
|
558
632
|
self.S2n_N = np.array( S2n_N, dtype = int )
|
|
559
633
|
self.S2n_Z = np.array( S2n_Z, dtype = int )
|
|
560
|
-
self.
|
|
561
|
-
#print('Z:',self.S2n_Z)
|
|
562
|
-
#print('N:',self.S2n_N)
|
|
563
|
-
#print('S2n:',self.S2n)
|
|
634
|
+
self.S2n_E = np.array( S2n_E, dtype = float )
|
|
564
635
|
#
|
|
565
636
|
if nuda.env.verb: print("Exit S2n()")
|
|
566
637
|
#
|
|
567
638
|
return self
|
|
568
|
-
|
|
569
|
-
def S2p( self,
|
|
639
|
+
#
|
|
640
|
+
def S2p( self, Nref = 50 ):
|
|
570
641
|
"""
|
|
571
|
-
Compute the two-proton separation energy (
|
|
572
|
-
S2p = E(Z,
|
|
642
|
+
Compute the two-proton separation energy (S2p)
|
|
643
|
+
S2p(Z,Nref) = E(Z,Nref)-E(Z-2,Nref)
|
|
573
644
|
"""
|
|
574
645
|
#
|
|
575
646
|
if nuda.env.verb: print("Enter S2p()")
|
|
576
647
|
#
|
|
577
|
-
if
|
|
578
|
-
print('
|
|
579
|
-
print('
|
|
580
|
-
print('
|
|
581
|
-
print('
|
|
582
|
-
print('
|
|
648
|
+
if Nref < 0:
|
|
649
|
+
print('setup_be_exp.py: In S2p attribute function of setup_be_exp.py:')
|
|
650
|
+
print('setup_be_exp.py: Bad definition of Nref')
|
|
651
|
+
print('setup_be_exp.py: It is expected that Nref>=0')
|
|
652
|
+
print('setup_be_exp.py: Nref:',Nref)
|
|
653
|
+
print('setup_be_exp.py: exit')
|
|
583
654
|
exit()
|
|
584
655
|
#
|
|
585
656
|
S2p_Z = []
|
|
657
|
+
S2p_E = []
|
|
586
658
|
S2p_N = []
|
|
587
|
-
S2p = []
|
|
588
659
|
#
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
#
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
#print('N,N2:',N,N2,'ind,ind2:',ind,ind2)
|
|
610
|
-
S2p_Z.append( self.nucZ[ind] )
|
|
611
|
-
S2p_N.append( self.nucN[ind] )
|
|
612
|
-
S2p.append( self.nucBE[ind2] - self.nucBE[ind] )
|
|
613
|
-
self.S2p_N = np.array( S2p_N, dtype = int )
|
|
660
|
+
Zmin=self.itn_nucZmin
|
|
661
|
+
Zmax=self.itn_nucZmax
|
|
662
|
+
#
|
|
663
|
+
for Z in range(Zmin+2,Zmax+1):
|
|
664
|
+
#
|
|
665
|
+
flagZ = False; flagZm2 = False;
|
|
666
|
+
#
|
|
667
|
+
for ind,N in enumerate(self.nucN):
|
|
668
|
+
#
|
|
669
|
+
if N == Nref and self.nucZ[ind] == Z:
|
|
670
|
+
indZ = ind
|
|
671
|
+
flagZ = True
|
|
672
|
+
if N == Nref and self.nucZ[ind] == Z-2:
|
|
673
|
+
indZm2 = ind
|
|
674
|
+
flagZm2 = True
|
|
675
|
+
#
|
|
676
|
+
if flagZ and flagZm2:
|
|
677
|
+
S2p_Z.append( Z )
|
|
678
|
+
S2p_N.append( Nref )
|
|
679
|
+
S2p_E.append( self.nucBE[indZ] - self.nucBE[indZm2] )
|
|
614
680
|
self.S2p_Z = np.array( S2p_Z, dtype = int )
|
|
615
|
-
self.
|
|
616
|
-
|
|
617
|
-
#print('N:',self.S2n_N)
|
|
618
|
-
#print('S2n:',self.S2n)
|
|
619
|
-
#print('Z:',self.S2n_Z)
|
|
681
|
+
self.S2p_N = np.array( S2p_N, dtype = int )
|
|
682
|
+
self.S2p_E = np.array( S2p_E, dtype = float )
|
|
620
683
|
#
|
|
621
684
|
if nuda.env.verb: print("Exit S2p()")
|
|
622
685
|
#
|
|
623
686
|
return self
|
|
624
|
-
|
|
625
|
-
def drip_S2n(self,
|
|
687
|
+
#
|
|
688
|
+
def drip_S2n(self, Zref=50):
|
|
626
689
|
"""
|
|
627
690
|
Method which find the drip-line nuclei from S2n (neutron side).
|
|
628
691
|
|
|
@@ -636,13 +699,13 @@ class setupBETheo():
|
|
|
636
699
|
#
|
|
637
700
|
if nuda.env.verb: print("Enter drip_S2n()")
|
|
638
701
|
#
|
|
639
|
-
if Zmin > Zmax:
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
702
|
+
# if Zmin > Zmax:
|
|
703
|
+
# print('setup_be_theo: In drip_S2n attribute function of setup_be_theo.py:')
|
|
704
|
+
# print('setup_be_theo: Bad definition of Zmin and Zmax')
|
|
705
|
+
# print('setup_be_theo: It is expected that Zmin<=Zmax')
|
|
706
|
+
# print('setup_be_theo: Zmin,Zmax:',Zmin,Zmax)
|
|
707
|
+
# print('setup_be_theo: exit')
|
|
708
|
+
# exit()
|
|
646
709
|
#
|
|
647
710
|
if not any(self.S2n_Z):
|
|
648
711
|
print('setup_be_theo: In drip_S2n attribute function of setup_be_theo.py:')
|
|
@@ -655,12 +718,13 @@ class setupBETheo():
|
|
|
655
718
|
self.drip_S2n_Z = []
|
|
656
719
|
self.drip_S2n_N = []
|
|
657
720
|
#
|
|
721
|
+
print("S2n_Z:",self.S2n_Z)
|
|
658
722
|
for ind,Z in enumerate(self.S2n_Z):
|
|
659
723
|
#
|
|
660
|
-
if Z > Zmax :
|
|
661
|
-
|
|
662
|
-
if Z <
|
|
663
|
-
|
|
724
|
+
# if Z > Zmax :
|
|
725
|
+
# break
|
|
726
|
+
# if Z < Zref :
|
|
727
|
+
# continue
|
|
664
728
|
#
|
|
665
729
|
#Nmax = Nstable[ind]
|
|
666
730
|
Nmax = 0
|
|
@@ -726,8 +790,127 @@ class setupBETheo():
|
|
|
726
790
|
#
|
|
727
791
|
return self
|
|
728
792
|
#
|
|
729
|
-
|
|
730
|
-
|
|
793
|
+
def D3n( self, Zref = 50 ):
|
|
794
|
+
"""
|
|
795
|
+
Compute the three-points odd-even mass staggering (D3n)
|
|
796
|
+
D3n = (-)**N * ( 2*E(Z,N)-E(Z,N+1)-E(Z,N-1) ) / 2
|
|
797
|
+
"""
|
|
798
|
+
#
|
|
799
|
+
if nuda.env.verb: print("Enter D3n()")
|
|
800
|
+
#
|
|
801
|
+
if Zref < 0:
|
|
802
|
+
print('setup_be_theo: In D3n attribute function of setup_be_theo.py:')
|
|
803
|
+
print('setup_be_theo: Bad definition of Zref')
|
|
804
|
+
print('setup_be_theo: It is expected that Zref>=0')
|
|
805
|
+
print('setup_be_theo: Zref:',Zref)
|
|
806
|
+
print('setup_be_theo: exit')
|
|
807
|
+
exit()
|
|
808
|
+
#
|
|
809
|
+
D3n_N_even = []
|
|
810
|
+
D3n_E_even = []
|
|
811
|
+
D3n_N_odd = []
|
|
812
|
+
D3n_E_odd = []
|
|
813
|
+
#
|
|
814
|
+
Nmin=self.itp_nucNmin
|
|
815
|
+
Nmax=self.itp_nucNmax
|
|
816
|
+
#
|
|
817
|
+
for N in range(Nmin+1,Nmax+1):
|
|
818
|
+
#
|
|
819
|
+
flagN = False; flagNm1 = False; flagNp1 = False;
|
|
820
|
+
#
|
|
821
|
+
for ind,Z in enumerate(self.nucZ):
|
|
822
|
+
#
|
|
823
|
+
if Z == Zref and self.nucN[ind] == N:
|
|
824
|
+
indN = ind
|
|
825
|
+
flagN = True
|
|
826
|
+
if N % 2:
|
|
827
|
+
sign = -1.0 # odd
|
|
828
|
+
else:
|
|
829
|
+
sign = 1.0 # even
|
|
830
|
+
if Z == Zref and self.nucN[ind] == N-1:
|
|
831
|
+
indNm1 = ind
|
|
832
|
+
flagNm1 = True
|
|
833
|
+
if Z == Zref and self.nucN[ind] == N+1:
|
|
834
|
+
indNp1 = ind
|
|
835
|
+
flagNp1 = True
|
|
836
|
+
#
|
|
837
|
+
if flagN and flagNm1 and flagNp1:
|
|
838
|
+
if sign > 0.0: #even
|
|
839
|
+
D3n_N_even.append( N )
|
|
840
|
+
D3n_E_even.append( sign/2.0*( -2*self.nucBE[indN] + self.nucBE[indNm1] + self.nucBE[indNp1] ) )
|
|
841
|
+
else:
|
|
842
|
+
D3n_N_odd.append( N )
|
|
843
|
+
D3n_E_odd.append( sign/2.0*( -2*self.nucBE[indN] + self.nucBE[indNm1] + self.nucBE[indNp1] ) )
|
|
844
|
+
self.D3n_N_even = np.array( D3n_N_even, dtype = int )
|
|
845
|
+
self.D3n_E_even = np.array( D3n_E_even, dtype = float )
|
|
846
|
+
self.D3n_N_odd = np.array( D3n_N_odd, dtype = int )
|
|
847
|
+
self.D3n_E_odd = np.array( D3n_E_odd, dtype = float )
|
|
848
|
+
#
|
|
849
|
+
if nuda.env.verb: print("Exit D3n()")
|
|
850
|
+
#
|
|
851
|
+
return self
|
|
852
|
+
#
|
|
853
|
+
def D3p( self, Nref = 50 ):
|
|
854
|
+
"""
|
|
855
|
+
Compute the three-points odd-even mass staggering (D3n)
|
|
856
|
+
D3p = (-)**Z * ( 2*E(Z,N)-E(Z+1,N)-E(Z-1,N) ) / 2
|
|
857
|
+
"""
|
|
858
|
+
#
|
|
859
|
+
if nuda.env.verb: print("Enter D3p()")
|
|
860
|
+
#
|
|
861
|
+
if Nref < 0:
|
|
862
|
+
print('setup_be_theo: In D3p attribute function of setup_be_theo.py:')
|
|
863
|
+
print('setup_be_theo: Bad definition of Nref')
|
|
864
|
+
print('setup_be_theo: It is expected that Nref>=0')
|
|
865
|
+
print('setup_be_theo: Nref:',Nref)
|
|
866
|
+
print('setup_be_theo: exit')
|
|
867
|
+
exit()
|
|
868
|
+
#
|
|
869
|
+
D3p_Z_even = []
|
|
870
|
+
D3p_E_even = []
|
|
871
|
+
D3p_Z_odd = []
|
|
872
|
+
D3p_E_odd = []
|
|
873
|
+
#
|
|
874
|
+
Zmin=self.itn_nucZmin
|
|
875
|
+
Zmax=self.itn_nucZmax
|
|
876
|
+
#
|
|
877
|
+
for Z in range(Zmin+1,Zmax+1):
|
|
878
|
+
#
|
|
879
|
+
flagZ = False; flagZm1 = False; flagZp1 = False;
|
|
880
|
+
#
|
|
881
|
+
for ind,N in enumerate(self.nucN):
|
|
882
|
+
#
|
|
883
|
+
if N == Nref and self.nucZ[ind] == Z:
|
|
884
|
+
indZ = ind
|
|
885
|
+
flagZ = True
|
|
886
|
+
if Z % 2:
|
|
887
|
+
sign = -1.0 # odd
|
|
888
|
+
else:
|
|
889
|
+
sign = 1.0 # even
|
|
890
|
+
if N == Nref and self.nucZ[ind] == Z-1:
|
|
891
|
+
indZm1 = ind
|
|
892
|
+
flagZm1 = True
|
|
893
|
+
if N == Nref and self.nucZ[ind] == Z+1:
|
|
894
|
+
indZp1 = ind
|
|
895
|
+
flagZp1 = True
|
|
896
|
+
#
|
|
897
|
+
if flagZ and flagZm1 and flagZp1:
|
|
898
|
+
if sign > 0.0: #even
|
|
899
|
+
D3p_Z_even.append( Z )
|
|
900
|
+
D3p_E_even.append( sign/2.0*( -2*self.nucBE[indZ] + self.nucBE[indZm1] + self.nucBE[indZp1] ) )
|
|
901
|
+
else:
|
|
902
|
+
D3p_Z_odd.append( Z )
|
|
903
|
+
D3p_E_odd.append( sign/2.0*( -2*self.nucBE[indZ] + self.nucBE[indZm1] + self.nucBE[indZp1] ) )
|
|
904
|
+
self.D3p_Z_even = np.array( D3p_Z_even, dtype = int )
|
|
905
|
+
self.D3p_E_even = np.array( D3p_E_even, dtype = float )
|
|
906
|
+
self.D3p_Z_odd = np.array( D3p_Z_odd, dtype = int )
|
|
907
|
+
self.D3p_E_odd = np.array( D3p_E_odd, dtype = float )
|
|
908
|
+
#
|
|
909
|
+
if nuda.env.verb: print("Exit D3p()")
|
|
910
|
+
#
|
|
911
|
+
return self
|
|
912
|
+
#
|
|
913
|
+
def D3n_old( self, Zmin = 1, Zmax = 95 ):
|
|
731
914
|
"""
|
|
732
915
|
Compute the three-points odd-even mass staggering (D3n)
|
|
733
916
|
D3N = (-)**N * ( 2*E(Z,N)-E(Z,N+1)-E(Z,N-1) ) / 2
|
|
@@ -798,7 +981,7 @@ class setupBETheo():
|
|
|
798
981
|
#
|
|
799
982
|
return self
|
|
800
983
|
#
|
|
801
|
-
def
|
|
984
|
+
def D3p_old( self, Nmin = 1, Nmax = 95 ):
|
|
802
985
|
"""
|
|
803
986
|
Compute the three-points odd-even mass staggering (D3p)
|
|
804
987
|
D3Z = (-)**Z * ( 2*E(Z,N)-E(Z+1,N)-E(Z-1,N) ) / 2
|
|
@@ -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)
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import numpy as np # 1.15.0
|
|
2
|
+
import os
|
|
2
3
|
from scipy.interpolate import CubicSpline
|
|
3
4
|
|
|
4
5
|
import nucleardatapy as nuda
|
|
@@ -149,7 +150,7 @@ class setupRnpTheo():
|
|
|
149
150
|
# #
|
|
150
151
|
if model.lower() == 'skyrme':
|
|
151
152
|
#
|
|
152
|
-
file_in1 = os.path.join(nuda.param.path_data,'
|
|
153
|
+
file_in1 = os.path.join(nuda.param.path_data,'rnp/skyrmernp-'+nucleus+'.dat')
|
|
153
154
|
if nuda.env.verb: print('Reads file1:',file_in1)
|
|
154
155
|
name = np.loadtxt( file_in1, usecols=(0), comments='#', unpack = True, dtype=str )
|
|
155
156
|
Rn, Rp, Rnp = np.loadtxt( file_in1, usecols=(1,2,3), comments='#', unpack = True )
|