nucleardatapy 0.2.0__py3-none-any.whl → 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- nucleardatapy/__init__.py +3 -1
- nucleardatapy/astro/setup_gw.py +18 -18
- nucleardatapy/astro/setup_mr.py +9 -1
- nucleardatapy/astro/setup_mup.py +10 -10
- nucleardatapy/corr/setup_EsymDen.py +0 -5
- nucleardatapy/corr/setup_EsymLsym.py +50 -17
- nucleardatapy/corr/setup_KsatQsat.py +170 -69
- nucleardatapy/crust/setup_crust.py +403 -120
- nucleardatapy/data/astro/NICER/J0740+6620.dat +1 -0
- nucleardatapy/data/crust/2018-PCPFDDG-BSK22.dat +83 -0
- nucleardatapy/data/crust/2018-PCPFDDG-BSK24.dat +74 -0
- nucleardatapy/data/crust/2018-PCPFDDG-BSK25.dat +130 -0
- nucleardatapy/data/crust/2018-PCPFDDG-BSK26.dat +81 -0
- nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-E2A-NM.dat → 2006-BHF-Av18-E2A-NM.dat} +8 -8
- nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-Av18-effmass-SM.dat +11 -0
- nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-Av18-effmass-beta0.2.dat +11 -0
- nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-Av18-effmass-beta0.4.dat +11 -0
- nucleardatapy/data/matter/nep/NEPESkyrme.dat +2 -3
- nucleardatapy/data/matter/nep/NEPGSkyrme.dat +7 -0
- nucleardatapy/data/matter/nep/NEPSkyrme.dat +4 -2
- nucleardatapy/data/matter/nep/NEPxEFT.dat +8 -0
- nucleardatapy/data/matter/nep/best67DDSkyrme.dat +28 -0
- nucleardatapy/data/matter/nep/best90DDSkyrme.dat +46 -0
- nucleardatapy/data/matter/nep/best95DDSkyrme.dat +54 -0
- nucleardatapy/data/matter/pheno/ESkyrme/BSk31-NM.dat +996 -996
- nucleardatapy/data/matter/pheno/ESkyrme/BSk31-SM.dat +991 -991
- nucleardatapy/data/matter/pheno/ESkyrme/BSkG4-NM.dat +1002 -0
- nucleardatapy/data/matter/pheno/ESkyrme/BSkG4-SM.dat +1002 -0
- nucleardatapy/data/matter/pheno/Skyrme/BSkG1-NM.dat +102 -0
- nucleardatapy/data/matter/pheno/Skyrme/BSkG1-SM.dat +102 -0
- nucleardatapy/data/matter/pheno/Skyrme/BSkG2-NM.dat +102 -0
- nucleardatapy/data/matter/pheno/Skyrme/BSkG2-SM.dat +102 -0
- nucleardatapy/data/nuclei/masses/Theory/2023-BSkG3.txt +0 -4
- nucleardatapy/data/nuclei/masses/Theory/2025-BSkG4.txt +0 -1
- nucleardatapy/env.py +1 -1
- nucleardatapy/eos/__init__.py +4 -3
- nucleardatapy/eos/setupCC.py +429 -0
- nucleardatapy/eos/setup_am.py +71 -34
- nucleardatapy/eos/setup_am_Beq.py +48 -17
- nucleardatapy/eos/setup_am_Leq.py +81 -50
- nucleardatapy/fig/__init__.py +29 -7
- nucleardatapy/fig/astro_setupGW_fig.py +5 -5
- nucleardatapy/fig/astro_setupMR_fig.py +12 -10
- nucleardatapy/fig/astro_setupMasses_fig.py +4 -4
- nucleardatapy/fig/astro_setupMtov_fig.py +4 -4
- nucleardatapy/fig/astro_setupMup_fig.py +5 -5
- nucleardatapy/fig/corr_setupEsymDen_fig.py +12 -5
- nucleardatapy/fig/corr_setupEsymLsym_fig.py +18 -5
- nucleardatapy/fig/corr_setupKsatQsat_fig.py +19 -15
- nucleardatapy/fig/crust_setupCrust_fig.py +7 -7
- nucleardatapy/fig/eos_setupAMBeq_fig.py +1338 -64
- nucleardatapy/fig/eos_setupAMLeq_fig.py +200 -68
- nucleardatapy/fig/eos_setupAM_asy_lep_fig.py +364 -0
- nucleardatapy/fig/eos_setupAM_asy_nuc_fig.py +337 -0
- nucleardatapy/fig/eos_setupAM_asy_tot_fig.py +343 -0
- nucleardatapy/fig/eos_setupAM_fig.py +470 -47
- nucleardatapy/fig/eos_setupCC_fig.py +240 -0
- nucleardatapy/fig/hnuc_setupChart_fig.py +2 -2
- nucleardatapy/fig/hnuc_setupRE1LExp_fig.py +4 -4
- nucleardatapy/fig/matter_all_fig.py +954 -0
- nucleardatapy/fig/matter_setupCheck_fig.py +103 -0
- nucleardatapy/fig/matter_setupFFGLep_fig.py +70 -0
- nucleardatapy/fig/matter_setupFFGNuc_fig.py +268 -104
- nucleardatapy/fig/matter_setupHIC_fig.py +98 -58
- nucleardatapy/fig/matter_setupMicroEsym_fig.py +267 -51
- nucleardatapy/fig/matter_setupMicro_LP_fig.py +175 -78
- nucleardatapy/fig/matter_setupMicro_band_fig.py +116 -47
- nucleardatapy/fig/matter_setupMicro_effmass_fig.py +264 -34
- nucleardatapy/fig/matter_setupMicro_err_NM_fig.py +41 -18
- nucleardatapy/fig/matter_setupMicro_fig.py +332 -98
- nucleardatapy/fig/matter_setupMicro_gap_fig.py +219 -92
- nucleardatapy/fig/matter_setupNEPStats_fig.py +96 -0
- nucleardatapy/fig/matter_setupPhenoEsym_fig.py +201 -61
- nucleardatapy/fig/matter_setupPheno_fig.py +392 -85
- nucleardatapy/fig/nuc_setupBEExp_chart_fig.py +286 -0
- nucleardatapy/fig/nuc_setupBEExp_fig.py +232 -70
- nucleardatapy/fig/nuc_setupBETheo_fig.py +344 -0
- nucleardatapy/fig/nuc_setupISGMRExp_fig.py +59 -0
- nucleardatapy/fig/nuc_setupRchExp_fig.py +139 -0
- nucleardatapy/fig/nuc_setupRchTheo_fig.py +143 -0
- nucleardatapy/fig/nuc_setupRnpExp_fig.py +88 -0
- nucleardatapy/fig/nuc_setupRnpTheo_fig.py +133 -0
- nucleardatapy/hello.py +6 -0
- nucleardatapy/hnuc/__init__.py +3 -3
- nucleardatapy/hnuc/{setup_be1L_exp.py → setup_re1L_exp.py} +6 -6
- nucleardatapy/hnuc/{setup_be1Xi_exp.py → setup_re1Xi_exp.py} +5 -5
- nucleardatapy/hnuc/{setup_be2L_exp.py → setup_re2L_exp.py} +6 -6
- nucleardatapy/matter/__init__.py +14 -13
- nucleardatapy/matter/setup_check.py +97 -0
- nucleardatapy/matter/setup_ffg.py +72 -38
- nucleardatapy/matter/setup_hic.py +91 -74
- nucleardatapy/matter/setup_micro.py +1698 -1019
- nucleardatapy/matter/setup_micro_band.py +11 -6
- nucleardatapy/matter/setup_micro_effmass.py +55 -2
- nucleardatapy/matter/setup_micro_esym.py +39 -34
- nucleardatapy/matter/setup_micro_gap.py +26 -19
- nucleardatapy/matter/setup_micro_lp.py +20 -19
- nucleardatapy/matter/setup_nep.py +175 -92
- nucleardatapy/matter/{setup_nep_model_dist.py → setup_nep_stat_model.py} +13 -8
- nucleardatapy/matter/{setup_nep_dist.py → setup_nep_stat_models.py} +12 -8
- nucleardatapy/matter/setup_pheno.py +121 -45
- nucleardatapy/matter/setup_pheno_esym.py +14 -19
- nucleardatapy/nuc/__init__.py +2 -2
- nucleardatapy/nuc/setup_be_exp.py +345 -333
- nucleardatapy/nuc/setup_be_theo.py +366 -178
- nucleardatapy/nuc/setup_isgmr_exp.py +4 -4
- nucleardatapy/nuc/setup_rch_exp.py +49 -6
- nucleardatapy/nuc/setup_rch_theo.py +72 -3
- nucleardatapy/nuc/{setup_nskin_exp.py → setup_rnp_exp.py} +59 -65
- nucleardatapy/nuc/{setup_nskin_theo.py → setup_rnp_theo.py} +35 -39
- nucleardatapy-1.0.0.dist-info/METADATA +553 -0
- {nucleardatapy-0.2.0.dist-info → nucleardatapy-1.0.0.dist-info}/RECORD +156 -128
- {nucleardatapy-0.2.0.dist-info → nucleardatapy-1.0.0.dist-info}/WHEEL +1 -1
- tests/test_corr_setupKsatQsat.py +3 -1
- tests/test_matter_setupMicro.py +37 -10
- nucleardatapy/data/matter/pheno/ESkyrme/BSkG1-NM.dat +0 -1002
- nucleardatapy/data/matter/pheno/ESkyrme/BSkG1-SM.dat +0 -1002
- nucleardatapy/data/matter/pheno/ESkyrme/BSkG2-NM.dat +0 -1002
- nucleardatapy/data/matter/pheno/ESkyrme/BSkG2-SM.dat +0 -1002
- nucleardatapy/fig/matter_ENM_fig.py +0 -119
- nucleardatapy/fig/matter_ESM_fig.py +0 -119
- nucleardatapy/fig/matter_Esym_fig.py +0 -122
- nucleardatapy/fig/matter_setupNEPModelDist_fig.py +0 -68
- nucleardatapy-0.2.0.dist-info/METADATA +0 -115
- /nucleardatapy/data/LandauParameters/micro/{2006-IBHF-NM-AV18.dat → 2006-EBHF-NM-AV18.dat} +0 -0
- /nucleardatapy/data/LandauParameters/micro/{2006-IBHF-SM-AV18.dat → 2006-EBHF-SM-AV18.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-BSK14.dat → 2022-GMRS-BSK14.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-BSK16.dat → 2022-GMRS-BSK16.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-DHSL59.dat → 2022-GMRS-DHSL59.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-DHSL69.dat → 2022-GMRS-DHSL69.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-F0.dat → 2022-GMRS-F0.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-H1.dat → 2022-GMRS-H1.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-H2.dat → 2022-GMRS-H2.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-H3.dat → 2022-GMRS-H3.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-H4.dat → 2022-GMRS-H4.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-H5.dat → 2022-GMRS-H5.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-H7.dat → 2022-GMRS-H7.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-LNS5.dat → 2022-GMRS-LNS5.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-RATP.dat → 2022-GMRS-RATP.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-SGII.dat → 2022-GMRS-SGII.dat} +0 -0
- /nucleardatapy/data/crust/{2022-crustGMRS-SLY5.dat → 2022-GMRS-SLY5.dat} +0 -0
- /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-E2A-AM.dat → 2006-BHF-Av18-E2A-AM.dat} +0 -0
- /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-E2A-SM.dat → 2006-BHF-Av18-E2A-SM.dat} +0 -0
- /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-Esym2-SM.dat → 2006-BHF-Av18-Esym2-SM.dat} +0 -0
- /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-GAP-NM-FreeSpectrum.dat → 2006-BHF-Av18-GAP-NM-FreeSpectrum.dat} +0 -0
- /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-GAP-NM-SelfEnergy.dat → 2006-BHF-Av18-GAP-NM-SelfEnergy.dat} +0 -0
- /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-GAP-SM-FreeSpectrum.dat → 2006-BHF-Av18-GAP-SM-FreeSpectrum.dat} +0 -0
- /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-GAP-SM-SelfEnergy.dat → 2006-BHF-Av18-GAP-SM-SelfEnergy.dat} +0 -0
- /nucleardatapy/data/matter/micro/{2013-QMC-NM.dat → 2013-MBPT-NM.dat} +0 -0
- /nucleardatapy/data/matter/micro/{2020-MBPT-NM-DHSL59.dat → 2019-MBPT-NM-DHSL59.dat} +0 -0
- /nucleardatapy/data/matter/micro/{2020-MBPT-NM-DHSL69.dat → 2019-MBPT-NM-DHSL69.dat} +0 -0
- /nucleardatapy/data/matter/micro/{2020-MBPT-SM-DHSL59.dat → 2019-MBPT-SM-DHSL59.dat} +0 -0
- /nucleardatapy/data/matter/micro/{2020-MBPT-SM-DHSL69.dat → 2019-MBPT-SM-DHSL69.dat} +0 -0
- /nucleardatapy/data/matter/micro/{2023-MBPT-NM.csv → 2020-MBPT-NM.csv} +0 -0
- /nucleardatapy/data/matter/micro/{2023-MBPT-SM.csv → 2020-MBPT-SM.csv} +0 -0
- /nucleardatapy/data/nuclei/{nskin → rnp}/208Pb.dat +0 -0
- /nucleardatapy/data/nuclei/{nskin → rnp}/48Ca.dat +0 -0
- /nucleardatapy/data/{NeutronSkin/ddrhNskin-208Pb.dat → rnp/ddrhrnp-208Pb.dat} +0 -0
- /nucleardatapy/data/{NeutronSkin/ddrhNskin-48Ca.dat → rnp/ddrhrnp-48Ca.dat} +0 -0
- /nucleardatapy/data/{NeutronSkin/nlrhNskin-208Pb.dat → rnp/nlrhrnp-208Pb.dat} +0 -0
- /nucleardatapy/data/{NeutronSkin/nlrhNskin-48Ca.dat → rnp/nlrhrnp-48Ca.dat} +0 -0
- /nucleardatapy/data/{NeutronSkin/skyrmeNskin-208Pb.dat → rnp/skyrmernp-208Pb.dat} +0 -0
- /nucleardatapy/data/{NeutronSkin/skyrmeNskin-48Ca.dat → rnp/skyrmernp-48Ca.dat} +0 -0
- {nucleardatapy-0.2.0.dist-info → nucleardatapy-1.0.0.dist-info/licenses}/LICENSE +0 -0
- {nucleardatapy-0.2.0.dist-info → nucleardatapy-1.0.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
import matplotlib.pyplot as plt
|
|
3
|
+
|
|
4
|
+
import nucleardatapy as nuda
|
|
5
|
+
|
|
6
|
+
def nuc_setupBEExp_chart_lt_fig( pname, table, version, theo_tables ):
|
|
7
|
+
"""
|
|
8
|
+
Plot nuclear chart (N versus Z).\
|
|
9
|
+
The plot is 1x1 with:\
|
|
10
|
+
[0]: nuclear chart.
|
|
11
|
+
|
|
12
|
+
:param pname: name of the figure (*.png)
|
|
13
|
+
:type pname: str.
|
|
14
|
+
:param table: table.
|
|
15
|
+
:type table: str.
|
|
16
|
+
:param version: version of table to run on.
|
|
17
|
+
:type version: str.
|
|
18
|
+
:param theo_tables: object instantiated on the reference band.
|
|
19
|
+
:type theo_tables: object.
|
|
20
|
+
|
|
21
|
+
"""
|
|
22
|
+
#
|
|
23
|
+
print(f'Plot name: {pname}')
|
|
24
|
+
#
|
|
25
|
+
print('Table:',table)
|
|
26
|
+
#
|
|
27
|
+
# plot
|
|
28
|
+
#
|
|
29
|
+
fig, axs = plt.subplots(1,1)
|
|
30
|
+
fig.tight_layout() # Or equivalently, "plt.tight_layout()"
|
|
31
|
+
fig.subplots_adjust(left=0.12, bottom=0.15, right=None, top=0.85, wspace=0.3, hspace=0.3)
|
|
32
|
+
#
|
|
33
|
+
axs.set_title(r''+table+' mass table version '+version)
|
|
34
|
+
axs.set_ylabel(r'Z',fontsize='14')
|
|
35
|
+
axs.set_xlabel(r'N',fontsize='14')
|
|
36
|
+
axs.set_xlim([0, 200])
|
|
37
|
+
axs.set_ylim([0, 132])
|
|
38
|
+
axs.text(10,120,'Number of nuclei:')
|
|
39
|
+
#
|
|
40
|
+
# longlive nuclei
|
|
41
|
+
#
|
|
42
|
+
mas = nuda.nuc.setupBEExp( table = table, version = version )
|
|
43
|
+
ustbl = mas.select( state= 'gs', interp = 'n', nucleus = 'longlive' )
|
|
44
|
+
axs.scatter( ustbl.sel_nucN, ustbl.sel_nucZ, marker='s', s = 3, linewidth=0, color = 'grey', label='long-lived ('+str(ustbl.sel_nbNucSel)+')' )
|
|
45
|
+
#axs.text(10,96,'long live: '+str(ustbl.sel_nbNucSel))
|
|
46
|
+
#
|
|
47
|
+
# shortlive nuclei
|
|
48
|
+
#
|
|
49
|
+
mas = nuda.nuc.setupBEExp( table = table, version = version )
|
|
50
|
+
ustbl = mas.select( state= 'gs', interp = 'n', nucleus = 'shortlive' )
|
|
51
|
+
axs.scatter( ustbl.sel_nucN, ustbl.sel_nucZ, marker='s', s = 3, linewidth=0, color = 'r', label='short-lived ('+str(ustbl.sel_nbNucSel)+')' )
|
|
52
|
+
#axs.text(10,88,'short live: '+str(ustbl.sel_nbNucSel))
|
|
53
|
+
#
|
|
54
|
+
# veryshortlive nuclei
|
|
55
|
+
#
|
|
56
|
+
mas = nuda.nuc.setupBEExp( table = table, version = version )
|
|
57
|
+
ustbl = mas.select( state= 'gs', interp = 'n', nucleus = 'veryshortlive' )
|
|
58
|
+
axs.scatter( ustbl.sel_nucN, ustbl.sel_nucZ, marker='s', s = 3, linewidth=0, color = 'b', label='very-short-lived ('+str(ustbl.sel_nbNucSel)+')' )
|
|
59
|
+
#axs.text(10,80,'very short live: '+str(ustbl.sel_nbNucSel))
|
|
60
|
+
#
|
|
61
|
+
# hypershortlive nuclei
|
|
62
|
+
#
|
|
63
|
+
mas = nuda.nuc.setupBEExp( table = table, version = version )
|
|
64
|
+
ustbl = mas.select( state= 'gs', interp = 'n', nucleus = 'hypershortlive' )
|
|
65
|
+
axs.scatter( ustbl.sel_nucN, ustbl.sel_nucZ, marker='s', s = 3, linewidth=0, color = 'g', label='hyper-short-lived ('+str(ustbl.sel_nbNucSel)+')' )
|
|
66
|
+
#axs.text(10,80,'very short live: '+str(ustbl.sel_nbNucSel))
|
|
67
|
+
#
|
|
68
|
+
# unstable nuclei:
|
|
69
|
+
#
|
|
70
|
+
mas = nuda.nuc.setupBEExp( table = table, version = version )
|
|
71
|
+
ustbl = mas.select( state= 'gs', interp = 'n', nucleus = 'unstable' )
|
|
72
|
+
#axs.scatter( ustbl.sel_nucN, ustbl.sel_Z, marker='.', s = 1, linewidth=0, color = 'b' )
|
|
73
|
+
axs.text(10,104,'unstable: '+str(ustbl.sel_nbNucSel))
|
|
74
|
+
#
|
|
75
|
+
# drip line nuclei
|
|
76
|
+
#
|
|
77
|
+
legend = 0
|
|
78
|
+
for i,theo_table in enumerate( theo_tables ):
|
|
79
|
+
theo = nuda.nuc.setupBETheo( table = theo_table )
|
|
80
|
+
s2n = theo.S2n( Zmin=1, Zmax = 95 )
|
|
81
|
+
drip_S2n = s2n.drip_S2n( Zmin = 1, Zmax = 95 )
|
|
82
|
+
if legend == 0:
|
|
83
|
+
axs.scatter( drip_S2n.drip_S2n_N, drip_S2n.drip_S2n_Z, marker='o', s = 3, linewidth=0, color = 'purple', label='Drip Lines' )
|
|
84
|
+
legend = 1
|
|
85
|
+
else:
|
|
86
|
+
axs.scatter( drip_S2n.drip_S2n_N, drip_S2n.drip_S2n_Z, marker='o', s = 3, linewidth=0, color = 'purple' )
|
|
87
|
+
s2p = theo.S2p( Nmin=1, Nmax = 150 )
|
|
88
|
+
drip_S2p = s2p.drip_S2p( Nmin = 1, Nmax = 150 )
|
|
89
|
+
axs.scatter( drip_S2p.drip_S2p_N, drip_S2p.drip_S2p_Z, marker='o', s = 3, linewidth=0, color = 'purple' )
|
|
90
|
+
#
|
|
91
|
+
# First and last isotopes
|
|
92
|
+
#
|
|
93
|
+
#iso = ustbl.isotopes( Zmin=1, Zmax = 95 )
|
|
94
|
+
#axs.scatter( iso.isotopes_Nmin, iso.isotopes_Z, marker='s', s = 3, linewidth=0, color = 'green', label='Isotope bounds' )
|
|
95
|
+
#axs.scatter( iso.isotopes_Nmax, iso.isotopes_Z, marker='s', s = 3, linewidth=0, color = 'green' )
|
|
96
|
+
#
|
|
97
|
+
# stable nuclei:
|
|
98
|
+
#
|
|
99
|
+
mas = nuda.nuc.setupBEExp( table = table, version = version )
|
|
100
|
+
stbl = mas.select( state= 'gs', interp = 'n', nucleus = 'stable' )
|
|
101
|
+
axs.scatter( stbl.sel_nucN, stbl.sel_nucZ, marker='s', s = 3, linewidth=0, color = 'k' )
|
|
102
|
+
axs.text(10,112,'stable: '+str(stbl.sel_nbNucSel))
|
|
103
|
+
#
|
|
104
|
+
axs.text(49,120,str(ustbl.sel_nbNucSel+stbl.sel_nbNucSel))
|
|
105
|
+
#
|
|
106
|
+
# plot N=Z dotted line
|
|
107
|
+
#
|
|
108
|
+
axs.plot( [0, 130], [0, 130], linestyle='dotted', linewidth=1, color='k')
|
|
109
|
+
axs.text(105,120,'N=Z')
|
|
110
|
+
#
|
|
111
|
+
# plot stable_fit
|
|
112
|
+
#
|
|
113
|
+
N, Z = nuda.stable_fit_Z( Zmin = 1, Zmax = 120 )
|
|
114
|
+
axs.plot( N, Z, linestyle='dashed', linewidth=1, color='k')
|
|
115
|
+
#N, Z = nuda.stable_fit_N( Nmin = 1, Nmax = 200 )
|
|
116
|
+
#axs.plot( N, Z, linestyle='dashed', linewidth=1, color='r')
|
|
117
|
+
#
|
|
118
|
+
# plot shells for isotopes and isotones
|
|
119
|
+
#
|
|
120
|
+
axs = nuda.nuc.plot_shells(axs)
|
|
121
|
+
#
|
|
122
|
+
# set legend
|
|
123
|
+
#
|
|
124
|
+
axs.legend(loc='lower right',fontsize='10')
|
|
125
|
+
#
|
|
126
|
+
# set plot name and close
|
|
127
|
+
#
|
|
128
|
+
if pname is not None:
|
|
129
|
+
plt.savefig(pname, dpi=300)
|
|
130
|
+
plt.close()
|
|
131
|
+
#
|
|
132
|
+
|
|
133
|
+
def nuc_setupBEExp_chart_year_fig( pname, sYear, year_min, year_max ):
|
|
134
|
+
"""
|
|
135
|
+
Plot nuclear chart (N versus Z).\
|
|
136
|
+
The plot is 1x1 with:\
|
|
137
|
+
[0]: nuclear chart.
|
|
138
|
+
|
|
139
|
+
:param pname: name of the figure (*.png)
|
|
140
|
+
:type pname: str.
|
|
141
|
+
:param table: table.
|
|
142
|
+
:type table: str.
|
|
143
|
+
:param version: version of table to run on.
|
|
144
|
+
:type version: str.
|
|
145
|
+
:param theo_tables: object instantiated on the reference band.
|
|
146
|
+
:type theo_tables: object.
|
|
147
|
+
|
|
148
|
+
"""
|
|
149
|
+
#
|
|
150
|
+
print(f'Plot name: {pname}')
|
|
151
|
+
#
|
|
152
|
+
#print('Table:',table)
|
|
153
|
+
#
|
|
154
|
+
# plot
|
|
155
|
+
#
|
|
156
|
+
fig, axs = plt.subplots(1,1)
|
|
157
|
+
fig.tight_layout() # Or equivalently, "plt.tight_layout()"
|
|
158
|
+
fig.subplots_adjust(left=0.12, bottom=0.15, right=None, top=0.85, wspace=0.3, hspace=0.3)
|
|
159
|
+
#
|
|
160
|
+
#axs.set_title(r''+table+' mass table version '+version)
|
|
161
|
+
axs.set_ylabel(r'Z')
|
|
162
|
+
axs.set_xlabel(r'N')
|
|
163
|
+
axs.set_xlim([0, 200])
|
|
164
|
+
axs.set_ylim([0, 132])
|
|
165
|
+
#axs.text(10,120,'Number of nuclei:')
|
|
166
|
+
axs.text(10,100,'Year: '+str(year_min)+' to '+str(year_max))
|
|
167
|
+
#
|
|
168
|
+
# nuclei given in argument: sYear
|
|
169
|
+
#
|
|
170
|
+
axs.scatter( sYear.sel_N, sYear.sel_Z, marker='s', s = 3, linewidth=0, color = 'grey' )
|
|
171
|
+
#
|
|
172
|
+
# First and last isotopes
|
|
173
|
+
#
|
|
174
|
+
#iso = ustbl.isotopes( Zmin=1, Zmax = 95 )
|
|
175
|
+
#axs.scatter( iso.isotopes_Nmin, iso.isotopes_Z, marker='s', s = 3, linewidth=0, color = 'green', label='Isotope bounds' )
|
|
176
|
+
#axs.scatter( iso.isotopes_Nmax, iso.isotopes_Z, marker='s', s = 3, linewidth=0, color = 'green' )
|
|
177
|
+
#
|
|
178
|
+
# plot N=Z dotted line
|
|
179
|
+
#
|
|
180
|
+
axs.plot( [0, 130], [0, 130], linestyle='dotted', linewidth=1, color='k')
|
|
181
|
+
axs.text(105,120,'N=Z')
|
|
182
|
+
#
|
|
183
|
+
# plot stable_fit
|
|
184
|
+
#
|
|
185
|
+
N, Z = nuda.stable_fit_Z( Zmin = 1, Zmax = 120 )
|
|
186
|
+
axs.plot( N, Z, linestyle='dashed', linewidth=1, color='k')
|
|
187
|
+
N, Z = nuda.stable_fit_N( Nmin = 1, Nmax = 170 )
|
|
188
|
+
axs.plot( N, Z, linestyle='dashed', linewidth=1, color='r')
|
|
189
|
+
#
|
|
190
|
+
# plot shells for isotopes and isotones
|
|
191
|
+
#
|
|
192
|
+
axs = nuda.nuc.plot_shells(axs)
|
|
193
|
+
#
|
|
194
|
+
# set legend
|
|
195
|
+
#
|
|
196
|
+
#axs.legend(loc='lower right',fontsize='10')
|
|
197
|
+
#
|
|
198
|
+
# set plot name and close
|
|
199
|
+
#
|
|
200
|
+
if pname is not None:
|
|
201
|
+
plt.savefig(pname, dpi=300)
|
|
202
|
+
plt.close()
|
|
203
|
+
#
|
|
204
|
+
|
|
205
|
+
def nuc_setupBEExp_chart_Rch_fig( pname, table, version, Rch_table ):
|
|
206
|
+
"""
|
|
207
|
+
Plot nuclear chart (N versus Z).\
|
|
208
|
+
The plot is 1x1 with:\
|
|
209
|
+
[0]: nuclear chart.
|
|
210
|
+
|
|
211
|
+
:param pname: name of the figure (*.png)
|
|
212
|
+
:type pname: str.
|
|
213
|
+
:param table: table.
|
|
214
|
+
:type table: str.
|
|
215
|
+
:param version: version of table to run on.
|
|
216
|
+
:type version: str.
|
|
217
|
+
:param theo_tables: object instantiated on the reference band.
|
|
218
|
+
:type theo_tables: object.
|
|
219
|
+
|
|
220
|
+
"""
|
|
221
|
+
#
|
|
222
|
+
print(f'Plot name: {pname}')
|
|
223
|
+
#
|
|
224
|
+
print('Table:',table)
|
|
225
|
+
#
|
|
226
|
+
# plot
|
|
227
|
+
#
|
|
228
|
+
fig, axs = plt.subplots(1,1)
|
|
229
|
+
fig.tight_layout() # Or equivalently, "plt.tight_layout()"
|
|
230
|
+
fig.subplots_adjust(left=0.12, bottom=0.15, right=None, top=0.85, wspace=0.3, hspace=0.3)
|
|
231
|
+
#
|
|
232
|
+
axs.set_title(r''+table+' mass table version '+version+' + '+Rch_table+' charge radius table')
|
|
233
|
+
axs.set_ylabel(r'Z')
|
|
234
|
+
axs.set_xlabel(r'N')
|
|
235
|
+
axs.set_xlim([0, 200])
|
|
236
|
+
axs.set_xticks([0,25,50,75,100,125,150,175,200])
|
|
237
|
+
axs.set_ylim([0, 132])
|
|
238
|
+
axs.set_yticks([0,20,40,60,80,100,120])
|
|
239
|
+
axs.text(10,120,'Number of nuclei:')
|
|
240
|
+
#
|
|
241
|
+
# First and last isotopes
|
|
242
|
+
#
|
|
243
|
+
mas = nuda.nuc.setupBEExp( table = table, version = version )
|
|
244
|
+
ustbl = mas.select( state= 'gs', interp = 'n', nucleus = 'unstable' )
|
|
245
|
+
iso = ustbl.isotopes( Zmin=1, Zmax = 95 )
|
|
246
|
+
axs.scatter( iso.isotopes_Nmin, iso.isotopes_Z, marker='s', s = 3, linewidth=0, color = 'green', label='AME boundaries' )
|
|
247
|
+
axs.scatter( iso.isotopes_Nmax, iso.isotopes_Z, marker='s', s = 3, linewidth=0, color = 'green' )
|
|
248
|
+
#
|
|
249
|
+
# stable nuclei:
|
|
250
|
+
#
|
|
251
|
+
mas = nuda.nuc.setupBEExp( table = table, version = version )
|
|
252
|
+
stbl = mas.select( state= 'gs', interp = 'n', nucleus = 'stable' )
|
|
253
|
+
axs.scatter( stbl.sel_nucN, stbl.sel_nucZ, marker='s', s = 3, linewidth=0, color = 'k' )
|
|
254
|
+
axs.text(10,112,'stable: '+str(stbl.sel_nbNucSel))
|
|
255
|
+
axs.text(60,120,str(ustbl.sel_nbNucSel+stbl.sel_nbNucSel))
|
|
256
|
+
#
|
|
257
|
+
# Charge radii:
|
|
258
|
+
#
|
|
259
|
+
rch = nuda.nuc.setupRchExp( table = Rch_table )
|
|
260
|
+
axs.scatter( rch.nucN, rch.nucZ, marker='s', s = 3, linewidth=0, color = 'blue', label = 'charge radii' )
|
|
261
|
+
#
|
|
262
|
+
# plot N=Z dotted line
|
|
263
|
+
#
|
|
264
|
+
axs.plot( [0, 130], [0, 130], linestyle='dotted', linewidth=1, color='k')
|
|
265
|
+
axs.text(105,120,'N=Z')
|
|
266
|
+
#
|
|
267
|
+
# plot stable_fit
|
|
268
|
+
#
|
|
269
|
+
N, Z = nuda.stable_fit( Zmin = 1, Zmax = 120 )
|
|
270
|
+
axs.plot( N, Z, linestyle='dashed', linewidth=1, color='k')
|
|
271
|
+
#
|
|
272
|
+
# plot shells for isotopes and isotones
|
|
273
|
+
#
|
|
274
|
+
axs = nuda.nuc.plot_shells(axs)
|
|
275
|
+
#
|
|
276
|
+
# set legend
|
|
277
|
+
#
|
|
278
|
+
axs.legend(loc='lower right',fontsize='10')
|
|
279
|
+
#
|
|
280
|
+
# set plot name and close
|
|
281
|
+
#
|
|
282
|
+
if pname is not None:
|
|
283
|
+
plt.savefig(pname, dpi=300)
|
|
284
|
+
plt.close()
|
|
285
|
+
#
|
|
286
|
+
|
|
@@ -3,7 +3,7 @@ import matplotlib.pyplot as plt
|
|
|
3
3
|
|
|
4
4
|
import nucleardatapy as nuda
|
|
5
5
|
|
|
6
|
-
def
|
|
6
|
+
def nuc_setupBEExp_year_fig( pname, table, version ):
|
|
7
7
|
"""
|
|
8
8
|
Plot nuclear chart (N versus Z).\
|
|
9
9
|
The plot is 1x1 with:\
|
|
@@ -20,103 +20,265 @@ def nuc_setupBEExp_chart_lt_fig( pname, table, version, theo_tables ):
|
|
|
20
20
|
|
|
21
21
|
"""
|
|
22
22
|
#
|
|
23
|
+
print(50*'-')
|
|
24
|
+
print("Enter nuc_setupBEExp_year_fig.py:")
|
|
25
|
+
print(50*'-')
|
|
26
|
+
#
|
|
23
27
|
print(f'Plot name: {pname}')
|
|
24
28
|
#
|
|
25
29
|
print('Table:',table)
|
|
26
30
|
#
|
|
27
|
-
#
|
|
31
|
+
# read all the mass table:
|
|
32
|
+
#
|
|
33
|
+
mas = nuda.nuc.setupBEExp( table = table, version = version )
|
|
34
|
+
#
|
|
35
|
+
fig, axs = plt.subplots(1,2)
|
|
36
|
+
fig.tight_layout() # Or equivalently, "plt.tight_layout()"
|
|
37
|
+
fig.subplots_adjust(left=0.12, bottom=0.15, right=0.95, top=0.85, wspace=0.2, hspace=0.2)
|
|
38
|
+
#
|
|
39
|
+
axs[0].set_title(r''+table+' mass table version '+version)
|
|
40
|
+
axs[0].set_ylabel(r'number of discovered nuclei',fontsize='14')
|
|
41
|
+
axs[0].set_xlabel(r'year',fontsize='14')
|
|
42
|
+
axs[0].set_xlim([1890, 2020])
|
|
43
|
+
#axs.set_yscale('log')
|
|
44
|
+
axs[0].set_ylim([0, 250])
|
|
45
|
+
#axs.text(10,120,'Number of nuclei:')
|
|
46
|
+
#
|
|
47
|
+
axs[0].hist( mas.nucYear, bins=100 )
|
|
48
|
+
#axs.hist( mas.year, bins=100, linestyle='solid', linewidth=1, color='k')
|
|
49
|
+
#axs.plot( mas.dist_year*10, mas.dist_nbNuc, linestyle='solid', linewidth=1, color='k')
|
|
50
|
+
#
|
|
51
|
+
axs[1].set_title(r''+table+' mass table version '+version)
|
|
52
|
+
axs[1].set_xlabel(r'year',fontsize='14')
|
|
53
|
+
axs[1].set_xlim([2000, 2020])
|
|
54
|
+
axs[1].set_ylim([0, 100])
|
|
55
|
+
axs[1].hist( mas.nucYear, bins=100 )
|
|
56
|
+
#
|
|
57
|
+
#axs.legend(loc='lower right',fontsize='10')
|
|
58
|
+
#
|
|
59
|
+
if pname is not None:
|
|
60
|
+
plt.savefig(pname, dpi=200)
|
|
61
|
+
plt.close()
|
|
62
|
+
#
|
|
63
|
+
print(50*'-')
|
|
64
|
+
print("Exit nuc_setupBEExp_year_fig.py:")
|
|
65
|
+
print(50*'-')
|
|
66
|
+
#
|
|
67
|
+
|
|
68
|
+
def nuc_setupBEExp_S2n_fig( pname, tables, versions, Zref = 50 ):
|
|
69
|
+
"""
|
|
70
|
+
Plot nuclear chart (N versus Z).\
|
|
71
|
+
The plot is 1x1 with:\
|
|
72
|
+
[0]: nuclear chart.
|
|
73
|
+
|
|
74
|
+
:param pname: name of the figure (*.png)
|
|
75
|
+
:type pname: str.
|
|
76
|
+
:param table: table.
|
|
77
|
+
:type table: str.
|
|
78
|
+
:param version: version of table to run on.
|
|
79
|
+
:type version: str.
|
|
80
|
+
:param theo_tables: object instantiated on the reference band.
|
|
81
|
+
:type theo_tables: object.
|
|
82
|
+
|
|
83
|
+
"""
|
|
84
|
+
#
|
|
85
|
+
print(f'Plot name: {pname}')
|
|
86
|
+
#
|
|
87
|
+
print('Tables:',tables)
|
|
88
|
+
print('Zref:',Zref)
|
|
28
89
|
#
|
|
29
90
|
fig, axs = plt.subplots(1,1)
|
|
30
91
|
fig.tight_layout() # Or equivalently, "plt.tight_layout()"
|
|
31
|
-
fig.subplots_adjust(left=0.
|
|
92
|
+
fig.subplots_adjust(left=0.14, bottom=0.15, right=0.95, top=0.85, wspace=0.3, hspace=0.3)
|
|
32
93
|
#
|
|
33
|
-
axs.set_title(r'
|
|
34
|
-
axs.set_ylabel(r'
|
|
35
|
-
axs.set_xlabel(r'N')
|
|
36
|
-
axs.set_xlim([
|
|
37
|
-
axs.
|
|
38
|
-
axs.
|
|
94
|
+
axs.set_title(r'Experimental mass tables',fontsize='14')
|
|
95
|
+
axs.set_ylabel(r'$S_{2n}$ (MeV)',fontsize='14')
|
|
96
|
+
axs.set_xlabel(r'N',fontsize='14')
|
|
97
|
+
axs.set_xlim([Zref-5, int(1.85*Zref)])
|
|
98
|
+
axs.set_xticks(np.arange(start=Zref-5,stop=2*Zref,step=5))
|
|
99
|
+
#axs.set_ylim([-10, 10])
|
|
100
|
+
axs.text(int(Zref),10,'For Z='+str(Zref),fontsize='14')
|
|
39
101
|
#
|
|
40
|
-
#
|
|
102
|
+
# loop over the tables
|
|
41
103
|
#
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
104
|
+
for i,table in enumerate( tables ):
|
|
105
|
+
#
|
|
106
|
+
version = versions[i]
|
|
107
|
+
mas_exp = nuda.nuc.setupBEExp( table = table, version = version )
|
|
108
|
+
mas_exp2 = mas_exp.select( state = 'gs', interp = 'n' )
|
|
109
|
+
mas_exp3 = mas_exp2.isotopes( Zref = Zref )
|
|
110
|
+
s2n_exp = mas_exp3.S2n( Zref = Zref )
|
|
111
|
+
axs.errorbar( s2n_exp.S2n_N, s2n_exp.S2n_E, yerr=s2n_exp.S2n_E_err, fmt='o', label=table+' '+version )
|
|
112
|
+
#axs.scatter( s2n_exp.S2n_N, s2n_exp.S2n_E, label=exp_table+' '+exp_version )
|
|
46
113
|
#
|
|
47
|
-
|
|
114
|
+
axs.legend(loc='upper right',fontsize='10', ncol=1)
|
|
48
115
|
#
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
#axs.text(10,88,'short live: '+str(ustbl.sel_nbNucSel))
|
|
116
|
+
if pname is not None:
|
|
117
|
+
plt.savefig(pname, dpi=200)
|
|
118
|
+
plt.close()
|
|
53
119
|
#
|
|
54
|
-
|
|
120
|
+
|
|
121
|
+
def nuc_setupBEExp_S2p_fig( pname, tables, versions, Nref = 50 ):
|
|
122
|
+
"""
|
|
123
|
+
Plot nuclear chart (N versus Z).\
|
|
124
|
+
The plot is 1x1 with:\
|
|
125
|
+
[0]: nuclear chart.
|
|
126
|
+
|
|
127
|
+
:param pname: name of the figure (*.png)
|
|
128
|
+
:type pname: str.
|
|
129
|
+
:param table: table.
|
|
130
|
+
:type table: str.
|
|
131
|
+
:param version: version of table to run on.
|
|
132
|
+
:type version: str.
|
|
133
|
+
:param theo_tables: object instantiated on the reference band.
|
|
134
|
+
:type theo_tables: object.
|
|
135
|
+
|
|
136
|
+
"""
|
|
55
137
|
#
|
|
56
|
-
|
|
57
|
-
ustbl = mas.select( state= 'gs', interp = 'n', nucleus = 'veryshortlive' )
|
|
58
|
-
axs.scatter( ustbl.sel_nucN, ustbl.sel_nucZ, marker='s', s = 3, linewidth=0, color = 'b', label='veryshortlive ('+str(ustbl.sel_nbNucSel)+')' )
|
|
59
|
-
#axs.text(10,80,'very short live: '+str(ustbl.sel_nbNucSel))
|
|
138
|
+
print(f'Plot name: {pname}')
|
|
60
139
|
#
|
|
61
|
-
|
|
140
|
+
print('Tables:',tables)
|
|
141
|
+
print('Nref:',Nref)
|
|
62
142
|
#
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
axs.text(10,104,'unstable: '+str(ustbl.sel_nbNucSel))
|
|
67
|
-
#
|
|
68
|
-
# drip line nuclei
|
|
69
|
-
#
|
|
70
|
-
legend = 0
|
|
71
|
-
for i,theo_table in enumerate( theo_tables ):
|
|
72
|
-
theo = nuda.nuc.setupBETheo( table = theo_table )
|
|
73
|
-
s2n = theo.S2n( Zmin=1, Zmax = 95 )
|
|
74
|
-
drip_S2n = s2n.drip_S2n( Zmin = 1, Zmax = 95 )
|
|
75
|
-
if legend == 0:
|
|
76
|
-
axs.scatter( drip_S2n.drip_S2n_N, drip_S2n.drip_S2n_Z, marker='o', s = 3, linewidth=0, color = 'green', label='Drip Lines' )
|
|
77
|
-
legend = 1
|
|
78
|
-
else:
|
|
79
|
-
axs.scatter( drip_S2n.drip_S2n_N, drip_S2n.drip_S2n_Z, marker='o', s = 3, linewidth=0, color = 'green' )
|
|
80
|
-
s2p = theo.S2p( Nmin=1, Nmax = 150 )
|
|
81
|
-
drip_S2p = s2p.drip_S2p( Nmin = 1, Nmax = 150 )
|
|
82
|
-
axs.scatter( drip_S2p.drip_S2p_N, drip_S2p.drip_S2p_Z, marker='o', s = 3, linewidth=0, color = 'green' )
|
|
83
|
-
#
|
|
84
|
-
# First and last isotopes
|
|
85
|
-
#
|
|
86
|
-
#iso = ustbl.isotopes( Zmin=1, Zmax = 95 )
|
|
87
|
-
#axs.scatter( iso.isotopes_Nmin, iso.isotopes_Z, marker='s', s = 3, linewidth=0, color = 'green', label='Isotope bounds' )
|
|
88
|
-
#axs.scatter( iso.isotopes_Nmax, iso.isotopes_Z, marker='s', s = 3, linewidth=0, color = 'green' )
|
|
89
|
-
#
|
|
90
|
-
# stable nuclei:
|
|
143
|
+
fig, axs = plt.subplots(1,1)
|
|
144
|
+
fig.tight_layout() # Or equivalently, "plt.tight_layout()"
|
|
145
|
+
fig.subplots_adjust(left=0.14, bottom=0.15, right=0.95, top=0.85, wspace=0.3, hspace=0.3)
|
|
91
146
|
#
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
axs.
|
|
95
|
-
axs.
|
|
147
|
+
axs.set_title(r'Experimental mass tables',fontsize='14')
|
|
148
|
+
axs.set_ylabel(r'$S_{2p}$ (MeV)',fontsize='14')
|
|
149
|
+
axs.set_xlabel(r'Z',fontsize='14')
|
|
150
|
+
axs.set_xlim([0.4*Nref, 1.2*Nref])
|
|
151
|
+
axs.set_xticks(np.arange(start=int(0.4*Nref),stop=1.2*Nref,step=5))
|
|
152
|
+
#axs.set_ylim([-10, 10])
|
|
153
|
+
axs.text(int(0.7*Nref),10,'For N='+str(Nref),fontsize='14')
|
|
154
|
+
#
|
|
155
|
+
# loop over the tables
|
|
96
156
|
#
|
|
97
|
-
|
|
157
|
+
for i,table in enumerate( tables ):
|
|
158
|
+
#
|
|
159
|
+
version = versions[i]
|
|
160
|
+
mas_exp = nuda.nuc.setupBEExp( table = table, version = version )
|
|
161
|
+
mas_exp2 = mas_exp.select( state = 'gs', interp = 'n' )
|
|
162
|
+
mas_exp3 = mas_exp2.isotones( Nref = Nref )
|
|
163
|
+
s2p_exp = mas_exp3.S2p( Nref = Nref )
|
|
164
|
+
axs.errorbar( s2p_exp.S2p_Z, s2p_exp.S2p_E, yerr=s2p_exp.S2p_E_err, fmt='o', label=table+' '+version )
|
|
165
|
+
#axs.scatter( s2p_exp.S2p_Z, s2p_exp.S2p_E, label=table+' '+version )
|
|
98
166
|
#
|
|
99
|
-
|
|
167
|
+
axs.legend(loc='upper right',fontsize='10', ncol=1)
|
|
168
|
+
#
|
|
169
|
+
if pname is not None:
|
|
170
|
+
plt.savefig(pname, dpi=200)
|
|
171
|
+
plt.close()
|
|
100
172
|
#
|
|
101
|
-
|
|
102
|
-
|
|
173
|
+
|
|
174
|
+
def nuc_setupBEExp_D3n_fig( pname, tables, versions, Zref = 50 ):
|
|
175
|
+
"""
|
|
176
|
+
Plot nuclear chart (N versus Z).\
|
|
177
|
+
The plot is 1x1 with:\
|
|
178
|
+
[0]: nuclear chart.
|
|
179
|
+
|
|
180
|
+
:param pname: name of the figure (*.png)
|
|
181
|
+
:type pname: str.
|
|
182
|
+
:param table: table.
|
|
183
|
+
:type table: str.
|
|
184
|
+
:param version: version of table to run on.
|
|
185
|
+
:type version: str.
|
|
186
|
+
:param theo_tables: object instantiated on the reference band.
|
|
187
|
+
:type theo_tables: object.
|
|
188
|
+
|
|
189
|
+
"""
|
|
103
190
|
#
|
|
104
|
-
|
|
191
|
+
print(f'Plot name: {pname}')
|
|
105
192
|
#
|
|
106
|
-
|
|
107
|
-
|
|
193
|
+
print('Tables:',tables)
|
|
194
|
+
print('Zref:',Zref)
|
|
108
195
|
#
|
|
109
|
-
|
|
196
|
+
fig, axs = plt.subplots(1,1)
|
|
197
|
+
fig.tight_layout() # Or equivalently, "plt.tight_layout()"
|
|
198
|
+
fig.subplots_adjust(left=0.14, bottom=0.15, right=0.95, top=0.85, wspace=0.3, hspace=0.3)
|
|
110
199
|
#
|
|
111
|
-
axs =
|
|
200
|
+
axs.set_title(r'Experimental mass tables',fontsize='14')
|
|
201
|
+
axs.set_ylabel(r'$\Delta_{3n}$ (MeV)',fontsize='14')
|
|
202
|
+
axs.set_xlabel(r'N',fontsize='14')
|
|
203
|
+
axs.set_xlim([Zref-5, int(1.85*Zref)])
|
|
204
|
+
axs.set_xticks(np.arange(start=Zref-5,stop=2*Zref,step=5))
|
|
205
|
+
#axs.set_ylim([-10, 10])
|
|
206
|
+
axs.text(int(Zref),1.0,'For Z='+str(Zref),fontsize='14')
|
|
112
207
|
#
|
|
113
|
-
#
|
|
208
|
+
# loop over the tables
|
|
114
209
|
#
|
|
115
|
-
|
|
210
|
+
for i,table in enumerate( tables ):
|
|
211
|
+
#
|
|
212
|
+
version = versions[i]
|
|
213
|
+
# plot nuclear chart:
|
|
214
|
+
mas_exp = nuda.nuc.setupBEExp( table = table, version = version )
|
|
215
|
+
mas_exp2 = mas_exp.select( state = 'gs', interp = 'n' )
|
|
216
|
+
mas_exp3 = mas_exp2.isotopes( Zref = Zref )
|
|
217
|
+
D3n_exp = mas_exp3.D3n( Zref = Zref )
|
|
218
|
+
axs.errorbar( D3n_exp.D3n_N_even, D3n_exp.D3n_E_even, yerr=D3n_exp.D3n_E_err_even, fmt='o', label=table+' '+version )
|
|
219
|
+
axs.errorbar( D3n_exp.D3n_N_odd, D3n_exp.D3n_E_odd, yerr=D3n_exp.D3n_E_err_odd, fmt='o', label=table+' '+version )
|
|
220
|
+
#axs.scatter( d3n_exp.D3n_N_even, d3n_exp.D3n_E_even, label=table+' '+version+'(even)' )
|
|
221
|
+
#axs.scatter( d3n_exp.D3n_N_odd, d3n_exp.D3n_E_odd, label=table+' '+version+'(odd)' )
|
|
116
222
|
#
|
|
117
|
-
|
|
223
|
+
axs.legend(loc='upper right',fontsize='10', ncol=1)
|
|
118
224
|
#
|
|
119
225
|
if pname is not None:
|
|
120
|
-
plt.savefig(pname, dpi=
|
|
226
|
+
plt.savefig(pname, dpi=200)
|
|
121
227
|
plt.close()
|
|
122
228
|
#
|
|
229
|
+
|
|
230
|
+
def nuc_setupBEExp_D3p_fig( pname, tables, versions, Nref = 50 ):
|
|
231
|
+
"""
|
|
232
|
+
Plot nuclear chart (N versus Z).\
|
|
233
|
+
The plot is 1x1 with:\
|
|
234
|
+
[0]: nuclear chart.
|
|
235
|
+
|
|
236
|
+
:param pname: name of the figure (*.png)
|
|
237
|
+
:type pname: str.
|
|
238
|
+
:param table: table.
|
|
239
|
+
:type table: str.
|
|
240
|
+
:param version: version of table to run on.
|
|
241
|
+
:type version: str.
|
|
242
|
+
:param theo_tables: object instantiated on the reference band.
|
|
243
|
+
:type theo_tables: object.
|
|
244
|
+
|
|
245
|
+
"""
|
|
246
|
+
#
|
|
247
|
+
print(f'Plot name: {pname}')
|
|
248
|
+
#
|
|
249
|
+
print('Tables:',tables)
|
|
250
|
+
print('Nref:',Nref)
|
|
251
|
+
#
|
|
252
|
+
fig, axs = plt.subplots(1,1)
|
|
253
|
+
fig.tight_layout() # Or equivalently, "plt.tight_layout()"
|
|
254
|
+
fig.subplots_adjust(left=0.14, bottom=0.15, right=0.95, top=0.85, wspace=0.3, hspace=0.3)
|
|
255
|
+
#
|
|
256
|
+
axs.set_title(r'Experimental mass tables',fontsize='14')
|
|
257
|
+
axs.set_ylabel(r'$\Delta_{3p}$ (MeV)',fontsize='14')
|
|
258
|
+
axs.set_xlabel(r'Z',fontsize='14')
|
|
259
|
+
axs.set_xlim([0.4*Nref, 1.2*Nref])
|
|
260
|
+
axs.set_xticks(np.arange(start=int(0.4*Nref),stop=1.2*Nref,step=5))
|
|
261
|
+
#axs.set_ylim([-10, 10])
|
|
262
|
+
axs.text(int(0.7*Nref),1.4,'For N='+str(Nref),fontsize='14')
|
|
263
|
+
#
|
|
264
|
+
# loop over the tables
|
|
265
|
+
#
|
|
266
|
+
for i,table in enumerate( tables ):
|
|
267
|
+
#
|
|
268
|
+
version = versions[i]
|
|
269
|
+
# plot nuclear chart:
|
|
270
|
+
mas_exp = nuda.nuc.setupBEExp( table = table, version = version )
|
|
271
|
+
mas_exp2 = mas_exp.select( state = 'gs', interp = 'n' )
|
|
272
|
+
mas_exp3 = mas_exp2.isotones( Nref = Nref )
|
|
273
|
+
D3p_exp = mas_exp3.D3p( Nref = Nref )
|
|
274
|
+
axs.errorbar( D3p_exp.D3p_Z_even, D3p_exp.D3p_E_even, yerr=D3p_exp.D3p_E_err_even, fmt='o', label=table+' '+version )
|
|
275
|
+
axs.errorbar( D3p_exp.D3p_Z_odd, D3p_exp.D3p_E_odd, yerr=D3p_exp.D3p_E_err_odd, fmt='o', label=table+' '+version )
|
|
276
|
+
#axs.scatter( d3p_exp.D3p_Z_even, d3p_exp.D3p_E_even, label=table+' '+version+'(even)' )
|
|
277
|
+
#axs.scatter( d3p_exp.D3p_Z_odd, d3p_exp.D3p_E_odd, label=table+' '+version+'(odd)' )
|
|
278
|
+
#
|
|
279
|
+
axs.legend(loc='upper right',fontsize='10', ncol=1)
|
|
280
|
+
#
|
|
281
|
+
if pname is not None:
|
|
282
|
+
plt.savefig(pname, dpi=200)
|
|
283
|
+
plt.close()
|
|
284
|
+
#
|