nucleardatapy 0.2.1__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 +363 -125
- nucleardatapy/data/astro/NICER/J0740+6620.dat +1 -0
- nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-Av18-E2A-NM.dat +8 -8
- 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 +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 +5 -5
- nucleardatapy/fig/eos_setupAMBeq_fig.py +523 -66
- nucleardatapy/fig/eos_setupAMLeq_fig.py +18 -18
- 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 +504 -0
- nucleardatapy/fig/eos_setupCC_fig.py +240 -0
- nucleardatapy/fig/hnuc_setupChart_fig.py +2 -2
- nucleardatapy/fig/hnuc_setupRE1LExp_fig.py +3 -3
- 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 +267 -104
- nucleardatapy/fig/matter_setupHIC_fig.py +98 -58
- nucleardatapy/fig/matter_setupMicroEsym_fig.py +248 -63
- nucleardatapy/fig/matter_setupMicro_LP_fig.py +175 -78
- nucleardatapy/fig/matter_setupMicro_band_fig.py +115 -47
- nucleardatapy/fig/matter_setupMicro_effmass_fig.py +248 -73
- nucleardatapy/fig/matter_setupMicro_err_NM_fig.py +41 -18
- nucleardatapy/fig/matter_setupMicro_fig.py +299 -67
- nucleardatapy/fig/matter_setupMicro_gap_fig.py +219 -92
- nucleardatapy/fig/matter_setupNEPStats_fig.py +96 -0
- nucleardatapy/fig/matter_setupPhenoEsym_fig.py +193 -55
- nucleardatapy/fig/matter_setupPheno_fig.py +385 -88
- nucleardatapy/fig/nuc_setupBEExp_chart_fig.py +59 -48
- nucleardatapy/fig/nuc_setupBEExp_fig.py +48 -41
- nucleardatapy/fig/nuc_setupBETheo_fig.py +59 -31
- nucleardatapy/fig/nuc_setupISGMRExp_fig.py +5 -5
- nucleardatapy/fig/nuc_setupRchExp_fig.py +2 -2
- nucleardatapy/fig/nuc_setupRchTheo_fig.py +21 -20
- nucleardatapy/fig/nuc_setupRnpExp_fig.py +77 -109
- nucleardatapy/fig/nuc_setupRnpTheo_fig.py +92 -93
- 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 +6 -6
- 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 +1623 -1009
- nucleardatapy/matter/setup_micro_band.py +6 -6
- nucleardatapy/matter/setup_micro_esym.py +11 -13
- 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 +121 -45
- nucleardatapy/matter/setup_pheno_esym.py +8 -13
- nucleardatapy/nuc/setup_be_exp.py +304 -292
- nucleardatapy/nuc/setup_be_theo.py +273 -97
- 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.0.dist-info}/METADATA +48 -16
- {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.0.dist-info}/RECORD +127 -120
- {nucleardatapy-0.2.1.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/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.0.dist-info}/licenses/LICENSE +0 -0
- {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.0.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,117 +513,172 @@ 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
|
-
|
|
533
|
-
#
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
#
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
N2 = self.nucN[ind2]
|
|
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] )
|
|
609
|
+
S2n_E = []
|
|
610
|
+
#
|
|
611
|
+
Nmin=self.itp_nucNmin
|
|
612
|
+
Nmax=self.itp_nucNmax
|
|
613
|
+
#
|
|
614
|
+
for N in range(Nmin+2,Nmax+1):
|
|
615
|
+
#
|
|
616
|
+
flagN = False; flagNm2 = False;
|
|
617
|
+
#
|
|
618
|
+
for ind,Z in enumerate(self.nucZ):
|
|
619
|
+
#
|
|
620
|
+
if Z == Zref and self.nucN[ind] == N:
|
|
621
|
+
indN = ind
|
|
622
|
+
flagN = True
|
|
623
|
+
if Z == Zref and self.nucN[ind] == N-2:
|
|
624
|
+
indNm2 = ind
|
|
625
|
+
flagNm2 = True
|
|
626
|
+
#
|
|
627
|
+
if flagN and flagNm2:
|
|
628
|
+
S2n_N.append( N )
|
|
629
|
+
S2n_E.append( self.nucBE[indN] - self.nucBE[indNm2] )
|
|
558
630
|
self.S2n_N = np.array( S2n_N, dtype = int )
|
|
559
|
-
self.
|
|
560
|
-
self.S2n = np.array( S2n, dtype = float )
|
|
561
|
-
#print('Z:',self.S2n_Z)
|
|
562
|
-
#print('N:',self.S2n_N)
|
|
563
|
-
#print('S2n:',self.S2n)
|
|
631
|
+
self.S2n_E = np.array( S2n_E, dtype = float )
|
|
564
632
|
#
|
|
565
633
|
if nuda.env.verb: print("Exit S2n()")
|
|
566
634
|
#
|
|
567
635
|
return self
|
|
568
|
-
|
|
569
|
-
def S2p( self,
|
|
636
|
+
#
|
|
637
|
+
def S2p( self, Nref = 50 ):
|
|
570
638
|
"""
|
|
571
|
-
Compute the two-proton separation energy (
|
|
572
|
-
S2p = E(Z,
|
|
639
|
+
Compute the two-proton separation energy (S2p)
|
|
640
|
+
S2p(Z,Nref) = E(Z,Nref)-E(Z-2,Nref)
|
|
573
641
|
"""
|
|
574
642
|
#
|
|
575
643
|
if nuda.env.verb: print("Enter S2p()")
|
|
576
644
|
#
|
|
577
|
-
if
|
|
578
|
-
print('
|
|
579
|
-
print('
|
|
580
|
-
print('
|
|
581
|
-
print('
|
|
582
|
-
print('
|
|
645
|
+
if Nref < 0:
|
|
646
|
+
print('setup_be_exp.py: In S2p attribute function of setup_be_exp.py:')
|
|
647
|
+
print('setup_be_exp.py: Bad definition of Nref')
|
|
648
|
+
print('setup_be_exp.py: It is expected that Nref>=0')
|
|
649
|
+
print('setup_be_exp.py: Nref:',Nref)
|
|
650
|
+
print('setup_be_exp.py: exit')
|
|
583
651
|
exit()
|
|
584
652
|
#
|
|
585
653
|
S2p_Z = []
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
if flag_find == 1:
|
|
608
|
-
Z2 = self.nucZ[ind2]
|
|
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 )
|
|
654
|
+
S2p_E = []
|
|
655
|
+
#
|
|
656
|
+
Zmin=self.itn_nucZmin
|
|
657
|
+
Zmax=self.itn_nucZmax
|
|
658
|
+
#
|
|
659
|
+
for Z in range(Zmin+2,Zmax+1):
|
|
660
|
+
#
|
|
661
|
+
flagZ = False; flagZm2 = False;
|
|
662
|
+
#
|
|
663
|
+
for ind,N in enumerate(self.nucN):
|
|
664
|
+
#
|
|
665
|
+
if N == Nref and self.nucZ[ind] == Z:
|
|
666
|
+
indZ = ind
|
|
667
|
+
flagZ = True
|
|
668
|
+
if N == Nref and self.nucZ[ind] == Z-2:
|
|
669
|
+
indZm2 = ind
|
|
670
|
+
flagZm2 = True
|
|
671
|
+
#
|
|
672
|
+
if flagZ and flagZm2:
|
|
673
|
+
S2p_Z.append( Z )
|
|
674
|
+
S2p_E.append( self.nucBE[indZ] - self.nucBE[indZm2] )
|
|
614
675
|
self.S2p_Z = np.array( S2p_Z, dtype = int )
|
|
615
|
-
self.
|
|
616
|
-
#print('Z:',self.S2n_Z)
|
|
617
|
-
#print('N:',self.S2n_N)
|
|
618
|
-
#print('S2n:',self.S2n)
|
|
619
|
-
#print('Z:',self.S2n_Z)
|
|
676
|
+
self.S2p_E = np.array( S2p_E, dtype = float )
|
|
620
677
|
#
|
|
621
678
|
if nuda.env.verb: print("Exit S2p()")
|
|
622
679
|
#
|
|
623
680
|
return self
|
|
624
|
-
|
|
681
|
+
#
|
|
625
682
|
def drip_S2n(self, Zmin = 1, Zmax = 95 ):
|
|
626
683
|
"""
|
|
627
684
|
Method which find the drip-line nuclei from S2n (neutron side).
|
|
@@ -726,8 +783,127 @@ class setupBETheo():
|
|
|
726
783
|
#
|
|
727
784
|
return self
|
|
728
785
|
#
|
|
729
|
-
|
|
730
|
-
|
|
786
|
+
def D3n( self, Zref = 50 ):
|
|
787
|
+
"""
|
|
788
|
+
Compute the three-points odd-even mass staggering (D3n)
|
|
789
|
+
D3n = (-)**N * ( 2*E(Z,N)-E(Z,N+1)-E(Z,N-1) ) / 2
|
|
790
|
+
"""
|
|
791
|
+
#
|
|
792
|
+
if nuda.env.verb: print("Enter D3n()")
|
|
793
|
+
#
|
|
794
|
+
if Zref < 0:
|
|
795
|
+
print('setup_be_theo: In D3n attribute function of setup_be_theo.py:')
|
|
796
|
+
print('setup_be_theo: Bad definition of Zref')
|
|
797
|
+
print('setup_be_theo: It is expected that Zref>=0')
|
|
798
|
+
print('setup_be_theo: Zref:',Zref)
|
|
799
|
+
print('setup_be_theo: exit')
|
|
800
|
+
exit()
|
|
801
|
+
#
|
|
802
|
+
D3n_N_even = []
|
|
803
|
+
D3n_E_even = []
|
|
804
|
+
D3n_N_odd = []
|
|
805
|
+
D3n_E_odd = []
|
|
806
|
+
#
|
|
807
|
+
Nmin=self.itp_nucNmin
|
|
808
|
+
Nmax=self.itp_nucNmax
|
|
809
|
+
#
|
|
810
|
+
for N in range(Nmin+1,Nmax+1):
|
|
811
|
+
#
|
|
812
|
+
flagN = False; flagNm1 = False; flagNp1 = False;
|
|
813
|
+
#
|
|
814
|
+
for ind,Z in enumerate(self.nucZ):
|
|
815
|
+
#
|
|
816
|
+
if Z == Zref and self.nucN[ind] == N:
|
|
817
|
+
indN = ind
|
|
818
|
+
flagN = True
|
|
819
|
+
if N % 2:
|
|
820
|
+
sign = -1.0 # odd
|
|
821
|
+
else:
|
|
822
|
+
sign = 1.0 # even
|
|
823
|
+
if Z == Zref and self.nucN[ind] == N-1:
|
|
824
|
+
indNm1 = ind
|
|
825
|
+
flagNm1 = True
|
|
826
|
+
if Z == Zref and self.nucN[ind] == N+1:
|
|
827
|
+
indNp1 = ind
|
|
828
|
+
flagNp1 = True
|
|
829
|
+
#
|
|
830
|
+
if flagN and flagNm1 and flagNp1:
|
|
831
|
+
if sign > 0.0: #even
|
|
832
|
+
D3n_N_even.append( N )
|
|
833
|
+
D3n_E_even.append( sign/2.0*( -2*self.nucBE[indN] + self.nucBE[indNm1] + self.nucBE[indNp1] ) )
|
|
834
|
+
else:
|
|
835
|
+
D3n_N_odd.append( N )
|
|
836
|
+
D3n_E_odd.append( sign/2.0*( -2*self.nucBE[indN] + self.nucBE[indNm1] + self.nucBE[indNp1] ) )
|
|
837
|
+
self.D3n_N_even = np.array( D3n_N_even, dtype = int )
|
|
838
|
+
self.D3n_E_even = np.array( D3n_E_even, dtype = float )
|
|
839
|
+
self.D3n_N_odd = np.array( D3n_N_odd, dtype = int )
|
|
840
|
+
self.D3n_E_odd = np.array( D3n_E_odd, dtype = float )
|
|
841
|
+
#
|
|
842
|
+
if nuda.env.verb: print("Exit D3n()")
|
|
843
|
+
#
|
|
844
|
+
return self
|
|
845
|
+
#
|
|
846
|
+
def D3p( self, Nref = 50 ):
|
|
847
|
+
"""
|
|
848
|
+
Compute the three-points odd-even mass staggering (D3n)
|
|
849
|
+
D3p = (-)**Z * ( 2*E(Z,N)-E(Z+1,N)-E(Z-1,N) ) / 2
|
|
850
|
+
"""
|
|
851
|
+
#
|
|
852
|
+
if nuda.env.verb: print("Enter D3p()")
|
|
853
|
+
#
|
|
854
|
+
if Nref < 0:
|
|
855
|
+
print('setup_be_theo: In D3p attribute function of setup_be_theo.py:')
|
|
856
|
+
print('setup_be_theo: Bad definition of Nref')
|
|
857
|
+
print('setup_be_theo: It is expected that Nref>=0')
|
|
858
|
+
print('setup_be_theo: Nref:',Nref)
|
|
859
|
+
print('setup_be_theo: exit')
|
|
860
|
+
exit()
|
|
861
|
+
#
|
|
862
|
+
D3p_Z_even = []
|
|
863
|
+
D3p_E_even = []
|
|
864
|
+
D3p_Z_odd = []
|
|
865
|
+
D3p_E_odd = []
|
|
866
|
+
#
|
|
867
|
+
Zmin=self.itn_nucZmin
|
|
868
|
+
Zmax=self.itn_nucZmax
|
|
869
|
+
#
|
|
870
|
+
for Z in range(Zmin+1,Zmax+1):
|
|
871
|
+
#
|
|
872
|
+
flagZ = False; flagZm1 = False; flagZp1 = False;
|
|
873
|
+
#
|
|
874
|
+
for ind,N in enumerate(self.nucN):
|
|
875
|
+
#
|
|
876
|
+
if N == Nref and self.nucZ[ind] == Z:
|
|
877
|
+
indZ = ind
|
|
878
|
+
flagZ = True
|
|
879
|
+
if Z % 2:
|
|
880
|
+
sign = -1.0 # odd
|
|
881
|
+
else:
|
|
882
|
+
sign = 1.0 # even
|
|
883
|
+
if N == Nref and self.nucZ[ind] == Z-1:
|
|
884
|
+
indZm1 = ind
|
|
885
|
+
flagZm1 = True
|
|
886
|
+
if N == Nref and self.nucZ[ind] == Z+1:
|
|
887
|
+
indZp1 = ind
|
|
888
|
+
flagZp1 = True
|
|
889
|
+
#
|
|
890
|
+
if flagZ and flagZm1 and flagZp1:
|
|
891
|
+
if sign > 0.0: #even
|
|
892
|
+
D3p_Z_even.append( Z )
|
|
893
|
+
D3p_E_even.append( sign/2.0*( -2*self.nucBE[indZ] + self.nucBE[indZm1] + self.nucBE[indZp1] ) )
|
|
894
|
+
else:
|
|
895
|
+
D3p_Z_odd.append( Z )
|
|
896
|
+
D3p_E_odd.append( sign/2.0*( -2*self.nucBE[indZ] + self.nucBE[indZm1] + self.nucBE[indZp1] ) )
|
|
897
|
+
self.D3p_Z_even = np.array( D3p_Z_even, dtype = int )
|
|
898
|
+
self.D3p_E_even = np.array( D3p_E_even, dtype = float )
|
|
899
|
+
self.D3p_Z_odd = np.array( D3p_Z_odd, dtype = int )
|
|
900
|
+
self.D3p_E_odd = np.array( D3p_E_odd, dtype = float )
|
|
901
|
+
#
|
|
902
|
+
if nuda.env.verb: print("Exit D3p()")
|
|
903
|
+
#
|
|
904
|
+
return self
|
|
905
|
+
#
|
|
906
|
+
def D3n_old( self, Zmin = 1, Zmax = 95 ):
|
|
731
907
|
"""
|
|
732
908
|
Compute the three-points odd-even mass staggering (D3n)
|
|
733
909
|
D3N = (-)**N * ( 2*E(Z,N)-E(Z,N+1)-E(Z,N-1) ) / 2
|
|
@@ -798,7 +974,7 @@ class setupBETheo():
|
|
|
798
974
|
#
|
|
799
975
|
return self
|
|
800
976
|
#
|
|
801
|
-
def
|
|
977
|
+
def D3p_old( self, Nmin = 1, Nmax = 95 ):
|
|
802
978
|
"""
|
|
803
979
|
Compute the three-points odd-even mass staggering (D3p)
|
|
804
980
|
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 )
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nucleardatapy
|
|
3
|
-
Version: 0.
|
|
4
|
-
Summary: A toolkit for nuclear data processing and
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: A toolkit for nuclear data processing and meta-analyses.
|
|
5
5
|
Author: Jerome Margueron, Sudhanva Lalit, Mariana Dutra, Guilherme Grams, Rohit Kumar
|
|
6
6
|
License: Attribution-NonCommercial-NoDerivatives 4.0 International
|
|
7
7
|
|
|
@@ -423,22 +423,36 @@ Dynamic: license-file
|
|
|
423
423
|
|
|
424
424
|
## Purpose:
|
|
425
425
|
|
|
426
|
-
|
|
426
|
+
<img align="right" width="250" src="book/logo.png">
|
|
427
427
|
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
428
|
+
The purpose of this toolkit is to provide an easy access to theoretical or experimental or observational data and allows meta-analyses in a straightforward way.
|
|
429
|
+
|
|
430
|
+
This python toolkit is designed to provide:
|
|
431
|
+
|
|
432
|
+
1. microscopic calculations in nuclear matter,
|
|
433
|
+
2. phenomenological predictions in nuclear matter,
|
|
434
|
+
3. experimental data for finite nuclei,
|
|
435
|
+
4. astrophysical observations and theoretical predictions.
|
|
436
|
+
|
|
437
|
+
All data are provided with their reference, so when using these data in a scientific paper, reference to data should be provided explicitly. The reference to this toolkit could be given, but it should not mask the reference to the original source of data.
|
|
432
438
|
|
|
433
439
|
## Installation of the toolkit:
|
|
434
440
|
|
|
435
441
|
To install the toolkit, launch:
|
|
442
|
+
|
|
436
443
|
```
|
|
437
444
|
$ pip install nucleardatapy
|
|
438
445
|
```
|
|
439
|
-
This installs the lattest version of the toolkit.
|
|
440
446
|
|
|
441
|
-
|
|
447
|
+
This installs the latest version of the toolkit.
|
|
448
|
+
|
|
449
|
+
If the github repository is downloaded, one can also install the toolkit using
|
|
450
|
+
|
|
451
|
+
```
|
|
452
|
+
$ pip install -e .
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
from within the root folder of the nucleardatapy directory.
|
|
442
456
|
|
|
443
457
|
## Test the python toolkit
|
|
444
458
|
|
|
@@ -453,37 +467,58 @@ $ bash run_tests.sh
|
|
|
453
467
|
## Short introduction to the toolkit:
|
|
454
468
|
|
|
455
469
|
The call of the toolkit in python code is performed in the usual way:
|
|
470
|
+
|
|
456
471
|
```Python
|
|
457
472
|
import nucleardatapy as nuda
|
|
458
473
|
```
|
|
459
474
|
|
|
460
475
|
The list of functions and global variables available in the toolkit can be printed from the following instruction:
|
|
476
|
+
|
|
461
477
|
```Python
|
|
462
478
|
print(dir(nuda))
|
|
463
479
|
```
|
|
464
480
|
|
|
465
481
|
A detailed view of the function can be obtained in the following way
|
|
482
|
+
|
|
466
483
|
```Python
|
|
467
484
|
print(help(nuda))
|
|
468
485
|
```
|
|
469
486
|
|
|
470
|
-
The
|
|
487
|
+
The toolkit classes instantiate objects that contain all the information available. For instance, the following command
|
|
488
|
+
|
|
471
489
|
```Python
|
|
472
490
|
mass = nuda.astro.setupMasses()
|
|
473
491
|
```
|
|
474
|
-
|
|
492
|
+
|
|
493
|
+
instantiates the object `mass` with the mass of PSR J1614-2230 which is the default case. All the properties of this object can be listed in the following way:
|
|
494
|
+
|
|
475
495
|
```Python
|
|
476
496
|
mass.__dict__
|
|
477
497
|
```
|
|
478
498
|
|
|
499
|
+
## Documentation
|
|
500
|
+
|
|
501
|
+
The documentation for the toolkit can be found here: [https://nucleardatapy.readthedocs.io/en/latest/index.html](https://nucleardatapy.readthedocs.io/en/latest/index.html). The documentation is also available in the docs/ folder and can be built using the following command:
|
|
502
|
+
|
|
503
|
+
```
|
|
504
|
+
sphinx-build -b html docs docs/build_html
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
The pdf version of the documentation can be found by clicking this [link](https://github.com/jeromemargueron/nucleardatapy/blob/main/docs/nucleardatapy.pdf).
|
|
508
|
+
|
|
509
|
+
## Tutorials
|
|
510
|
+
|
|
511
|
+
The tutorials to get started with nucleardatapy toolkit can be found here: [https://jeromemargueron.github.io/nucleardatapy/landing.html](https://jeromemargueron.github.io/nucleardatapy/landing.html). The tutorials are written using `jupyter notebook` and can be tried on your computer by downloading them or by using `google-colab`. In the github repository, the tutorials are available in the book/notebooks folder.
|
|
512
|
+
|
|
479
513
|
## Use nucleardatapy python toolkit
|
|
480
514
|
|
|
481
515
|
The GitHub folder `nucleardatapy/nucleardatapy_samples/` contains a lot of examples on how to use the function and to draw figures. They are all python scripts that can be launched with `python3`. For instance, you can grab these samples anywhere in your computer and try:
|
|
516
|
+
|
|
482
517
|
```
|
|
483
518
|
$ python3 matter_setupMicro_script.py
|
|
484
519
|
```
|
|
485
520
|
|
|
486
|
-
There are also tutorials that can be employed to learn how to use the different functions in the toolkit.
|
|
521
|
+
There are also tutorials that can be employed to learn how to use the different functions in the toolkit.
|
|
487
522
|
|
|
488
523
|
## Get started
|
|
489
524
|
|
|
@@ -501,7 +536,6 @@ micro.print_outputs( )
|
|
|
501
536
|
|
|
502
537
|
More examples are shown in the associated paper[Give reference here], as well as in the sample folder or tutorials as previously written.
|
|
503
538
|
|
|
504
|
-
|
|
505
539
|
## Contributing
|
|
506
540
|
|
|
507
541
|
The file `how_to_contribute.md` details how contributors could join our team or share their results.
|
|
@@ -512,10 +546,8 @@ CC BY-NC-ND 4.0
|
|
|
512
546
|
|
|
513
547
|
## Report issues
|
|
514
548
|
|
|
515
|
-
Issues can be reported using GitHub.
|
|
549
|
+
Issues can be reported using [GitHub Issues](https://github.com/jeromemargueron/nucleardatapy/issues).
|
|
516
550
|
|
|
517
551
|
## Thanks
|
|
518
552
|
|
|
519
553
|
A special thanks to all contributors who accepted to share their results in this toolkit.
|
|
520
|
-
|
|
521
|
-
|