nucleardatapy 0.2.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 +23 -0
- nucleardatapy/astro/__init__.py +9 -0
- nucleardatapy/astro/setup_gw.py +370 -0
- nucleardatapy/astro/setup_masses.py +366 -0
- nucleardatapy/astro/setup_mr.py +399 -0
- nucleardatapy/astro/setup_mtov.py +143 -0
- nucleardatapy/astro/setup_mup.py +302 -0
- nucleardatapy/corr/__init__.py +8 -0
- nucleardatapy/corr/setup_EsymDen.py +154 -0
- nucleardatapy/corr/setup_EsymLsym.py +468 -0
- nucleardatapy/corr/setup_KsatQsat.py +226 -0
- nucleardatapy/create_folder.py +7 -0
- nucleardatapy/crust/__init__.py +6 -0
- nucleardatapy/crust/setup_crust.py +475 -0
- nucleardatapy/cst.py +72 -0
- nucleardatapy/data/LandauParameters/micro/1994-BHF-SM.dat +33 -0
- nucleardatapy/data/LandauParameters/micro/2006-BHF-NM-AV18.dat +2701 -0
- nucleardatapy/data/LandauParameters/micro/2006-BHF-SM-AV18.dat +6001 -0
- nucleardatapy/data/LandauParameters/micro/2006-IBHF-NM-AV18.dat +2701 -0
- nucleardatapy/data/LandauParameters/micro/2006-IBHF-SM-AV18.dat +6001 -0
- nucleardatapy/data/LandauParameters/micro/2007-BHF-NM.dat +12 -0
- nucleardatapy/data/LandauParameters/pheno/2013-BSk22.dat +7 -0
- nucleardatapy/data/LandauParameters/pheno/2016-BSk31.dat +9 -0
- nucleardatapy/data/LandauParameters/pheno/2016-BSk32.dat +9 -0
- nucleardatapy/data/LandauParameters/pheno/2021-BSkG1.dat +9 -0
- nucleardatapy/data/LandauParameters/pheno/2022-BSkG2.dat +9 -0
- nucleardatapy/data/LandauParameters/pheno/2023-BSkG3.dat +9 -0
- nucleardatapy/data/NeutronSkin/ddrhNskin-208Pb.dat +6 -0
- nucleardatapy/data/NeutronSkin/ddrhNskin-48Ca.dat +6 -0
- nucleardatapy/data/NeutronSkin/nlrhNskin-208Pb.dat +6 -0
- nucleardatapy/data/NeutronSkin/nlrhNskin-48Ca.dat +6 -0
- nucleardatapy/data/NeutronSkin/skyrmeNskin-208Pb.dat +34 -0
- nucleardatapy/data/NeutronSkin/skyrmeNskin-48Ca.dat +34 -0
- nucleardatapy/data/astro/GW/GW170817.dat +6 -0
- nucleardatapy/data/astro/GW/GW190425.dat +3 -0
- nucleardatapy/data/astro/NICER/J0030+0451.dat +6 -0
- nucleardatapy/data/astro/NICER/J0437-4715.dat +3 -0
- nucleardatapy/data/astro/NICER/J0740+6620.dat +4 -0
- nucleardatapy/data/astro/masses/GW170817.dat +5 -0
- nucleardatapy/data/astro/masses/GW190814.dat +2 -0
- nucleardatapy/data/astro/masses/J0348+0432.dat +2 -0
- nucleardatapy/data/astro/masses/J0740+6620.dat +4 -0
- nucleardatapy/data/astro/masses/J1600+3053.dat +2 -0
- nucleardatapy/data/astro/masses/J1614/342/200/2232230.dat +6 -0
- nucleardatapy/data/astro/masses/J2215+5135.dat +2 -0
- nucleardatapy/data/corr/EsymDen/2014-IAS+NS.dat +8 -0
- nucleardatapy/data/corr/EsymDen/2014-IAS.dat +9 -0
- nucleardatapy/data/corr/EsymLsym/2010-RNP.dat +8 -0
- nucleardatapy/data/corr/EsymLsym/2012-FRDM.dat +6 -0
- nucleardatapy/data/corr/EsymLsym/2013-NS.dat +7 -0
- nucleardatapy/data/corr/EsymLsym/2014-IAS+RNP-err.dat +15 -0
- nucleardatapy/data/corr/EsymLsym/2014-IAS+RNP-plot.py +24 -0
- nucleardatapy/data/corr/EsymLsym/2014-IAS+RNP.dat +15 -0
- nucleardatapy/data/corr/EsymLsym/2014-IAS-err.dat +9 -0
- nucleardatapy/data/corr/EsymLsym/2014-IAS-plot.py +24 -0
- nucleardatapy/data/corr/EsymLsym/2014-IAS.dat +7 -0
- nucleardatapy/data/corr/EsymLsym/2021-PREXII-Reed.dat +3 -0
- nucleardatapy/data/corr/EsymLsym/2021-PREXII-Reinhard.dat +3 -0
- nucleardatapy/data/corr/EsymLsym/2023-PREXII-Zhang.dat +3 -0
- nucleardatapy/data/corr/EsymLsym/test.png +0 -0
- nucleardatapy/data/crust/1973-Negele-Vautherin.dat +18 -0
- nucleardatapy/data/crust/2020-MVCD-D1M.dat +16 -0
- nucleardatapy/data/crust/2020-MVCD-D1MS-full.dat +71 -0
- nucleardatapy/data/crust/2020-MVCD-D1MS.dat +17 -0
- nucleardatapy/data/crust/2020-MVCD-D1S.dat +17 -0
- nucleardatapy/data/crust/2022-crustGMRS-BSK14.dat +1455 -0
- nucleardatapy/data/crust/2022-crustGMRS-BSK16.dat +1538 -0
- nucleardatapy/data/crust/2022-crustGMRS-DHSL59.dat +1413 -0
- nucleardatapy/data/crust/2022-crustGMRS-DHSL69.dat +1424 -0
- nucleardatapy/data/crust/2022-crustGMRS-F0.dat +1525 -0
- nucleardatapy/data/crust/2022-crustGMRS-H1.dat +1651 -0
- nucleardatapy/data/crust/2022-crustGMRS-H2.dat +1621 -0
- nucleardatapy/data/crust/2022-crustGMRS-H3.dat +1537 -0
- nucleardatapy/data/crust/2022-crustGMRS-H4.dat +1598 -0
- nucleardatapy/data/crust/2022-crustGMRS-H5.dat +1562 -0
- nucleardatapy/data/crust/2022-crustGMRS-H7.dat +1523 -0
- nucleardatapy/data/crust/2022-crustGMRS-LNS5.dat +1396 -0
- nucleardatapy/data/crust/2022-crustGMRS-RATP.dat +1552 -0
- nucleardatapy/data/crust/2022-crustGMRS-SGII.dat +1345 -0
- nucleardatapy/data/crust/2022-crustGMRS-SLY5.dat +1455 -0
- nucleardatapy/data/hnuclei/2013-2L-Ahn.csv +5 -0
- nucleardatapy/data/hnuclei/2015-1Xi-Nakazawa.csv +5 -0
- nucleardatapy/data/hnuclei/2016-1L-GHM.csv +67 -0
- nucleardatapy/data/matter/hic/2002-DLL-NM-soft.dat +6 -0
- nucleardatapy/data/matter/hic/2002-DLL-NM-stiff.dat +5 -0
- nucleardatapy/data/matter/hic/2002-DLL-SM.dat +6 -0
- nucleardatapy/data/matter/hic/2002-KAON.dat +45 -0
- nucleardatapy/data/matter/hic/2009-ISO-DIFF.dat +3 -0
- nucleardatapy/data/matter/hic/2011-FOPI-LAND.dat +32 -0
- nucleardatapy/data/matter/hic/2016-ASY-EOS.dat +31 -0
- nucleardatapy/data/matter/hic/2016-FOPI-E2A.dat +19 -0
- nucleardatapy/data/matter/hic/2016-FOPI-SM.dat +31 -0
- nucleardatapy/data/matter/hic/2019-N2P-RATIO.dat +3 -0
- nucleardatapy/data/matter/hic/2021-SPIRIT.dat +3 -0
- nucleardatapy/data/matter/micro/1981-VAR-NM-FP.dat +26 -0
- nucleardatapy/data/matter/micro/1981-VAR-SM-FP.dat +26 -0
- nucleardatapy/data/matter/micro/1998-VAR-NM-APR.dat +16 -0
- nucleardatapy/data/matter/micro/1998-VAR-SM-APR.dat +15 -0
- nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-E2A-AM.dat +17 -0
- nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-E2A-NM.dat +21 -0
- nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-E2A-SM.dat +30 -0
- nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-Esym2-SM.dat +19 -0
- nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-GAP-NM-FreeSpectrum.dat +9 -0
- nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-GAP-NM-SelfEnergy.dat +8 -0
- nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-GAP-SM-FreeSpectrum.dat +8 -0
- nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-GAP-SM-SelfEnergy.dat +6 -0
- nucleardatapy/data/matter/micro/2008-AFDMC-NM-bkup.dat +11 -0
- nucleardatapy/data/matter/micro/2008-AFDMC-NM.dat +11 -0
- nucleardatapy/data/matter/micro/2008-BCS-NM.dat +16 -0
- nucleardatapy/data/matter/micro/2008-QMC-NM-swave-bkup.dat +8 -0
- nucleardatapy/data/matter/micro/2008-QMC-NM-swave.dat +8 -0
- nucleardatapy/data/matter/micro/2009-AFDMC-NM.dat +7 -0
- nucleardatapy/data/matter/micro/2009-dQMC-NM.dat +7 -0
- nucleardatapy/data/matter/micro/2010-NM-Hebeler.dat +12 -0
- nucleardatapy/data/matter/micro/2010-QMC-NM-AV4-bkup.dat +9 -0
- nucleardatapy/data/matter/micro/2010-QMC-NM-AV4.dat +7 -0
- nucleardatapy/data/matter/micro/2012-AFDMC-NM-1.dat +29 -0
- nucleardatapy/data/matter/micro/2012-AFDMC-NM-2.dat +10 -0
- nucleardatapy/data/matter/micro/2012-AFDMC-NM-3.dat +11 -0
- nucleardatapy/data/matter/micro/2012-AFDMC-NM-4.dat +10 -0
- nucleardatapy/data/matter/micro/2012-AFDMC-NM-5.dat +11 -0
- nucleardatapy/data/matter/micro/2012-AFDMC-NM-6.dat +10 -0
- nucleardatapy/data/matter/micro/2012-AFDMC-NM-7.dat +37 -0
- nucleardatapy/data/matter/micro/2012-AFDMC-NM-fit.dat +10 -0
- nucleardatapy/data/matter/micro/2012-AFDMC-NM.txt +252 -0
- nucleardatapy/data/matter/micro/2013-QMC-NM.dat +12 -0
- nucleardatapy/data/matter/micro/2014-AFQMC-NM.dat +14 -0
- nucleardatapy/data/matter/micro/2016-MBPT-AM/EOS_spec_4_beta_0.0.txt +35 -0
- nucleardatapy/data/matter/micro/2016-MBPT-AM/EOS_spec_4_beta_0.1.txt +35 -0
- nucleardatapy/data/matter/micro/2016-MBPT-AM/EOS_spec_4_beta_0.2.txt +35 -0
- nucleardatapy/data/matter/micro/2016-MBPT-AM/EOS_spec_4_beta_0.3.txt +35 -0
- nucleardatapy/data/matter/micro/2016-MBPT-AM/EOS_spec_4_beta_0.4.txt +35 -0
- nucleardatapy/data/matter/micro/2016-MBPT-AM/EOS_spec_4_beta_0.5.txt +35 -0
- nucleardatapy/data/matter/micro/2016-MBPT-AM/EOS_spec_4_beta_0.6.txt +35 -0
- nucleardatapy/data/matter/micro/2016-MBPT-AM/EOS_spec_4_beta_0.7.txt +35 -0
- nucleardatapy/data/matter/micro/2016-MBPT-AM/EOS_spec_4_beta_0.8.txt +35 -0
- nucleardatapy/data/matter/micro/2016-MBPT-AM/EOS_spec_4_beta_0.9.txt +35 -0
- nucleardatapy/data/matter/micro/2016-MBPT-AM/EOS_spec_4_beta_1.0.txt +35 -0
- nucleardatapy/data/matter/micro/2016-QMC-NM.dat +10 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_500_effmass_1S0_HF_spectrum_N2LO_3N_forces.csv +45 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_500_effmass_1S0_HF_spectrum_N3LO_3N_forces.csv +45 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_500_effmass_3PF2_HF_spectrum_N2LO_3N_forces.csv +32 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_500_effmass_3PF2_HF_spectrum_N3LO_3N_forces.csv +32 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_500_gap_1S0_HF_spectrum_N2LO_3N_forces.csv +45 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_500_gap_1S0_HF_spectrum_N3LO_3N_forces.csv +45 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_500_gap_1S0_free_spectrum_N2LO_3N_forces.csv +45 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_500_gap_1S0_free_spectrum_N3LO_3N_forces.csv +45 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_500_gap_3PF2_HF_spectrum_N2LO_3N_forces.csv +32 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_500_gap_3PF2_HF_spectrum_N3LO_3N_forces.csv +32 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_500_gap_3PF2_free_spectrum_N2LO_3N_forces.csv +32 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_500_gap_3PF2_free_spectrum_N3LO_3N_forces.csv +32 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_700_effmass_1S0_HF_spectrum_N2LO_3N_forces.csv +45 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_700_effmass_1S0_HF_spectrum_N3LO_3N_forces.csv +45 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_700_effmass_3PF2_HF_spectrum_N2LO_3N_forces.csv +32 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_700_effmass_3PF2_HF_spectrum_N3LO_3N_forces.csv +32 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_700_gap_1S0_HF_spectrum_N2LO_3N_forces.csv +45 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_700_gap_1S0_HF_spectrum_N3LO_3N_forces.csv +45 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_700_gap_1S0_free_spectrum_N2LO_3N_forces.csv +45 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_700_gap_1S0_free_spectrum_N3LO_3N_forces.csv +45 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_700_gap_3PF2_HF_spectrum_N2LO_3N_forces.csv +32 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_700_gap_3PF2_HF_spectrum_N3LO_3N_forces.csv +32 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_700_gap_3PF2_free_spectrum_N2LO_3N_forces.csv +32 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EGM450_700_gap_3PF2_free_spectrum_N3LO_3N_forces.csv +32 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EM500_effmass_1S0_HF_spectrum_N2LO_3N_forces.csv +45 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EM500_effmass_1S0_HF_spectrum_N3LO_3N_forces.csv +45 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EM500_effmass_3PF2_HF_spectrum_N2LO_3N_forces.csv +32 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EM500_effmass_3PF2_HF_spectrum_N3LO_3N_forces.csv +32 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EM500_gap_1S0_HF_spectrum_N2LO_3N_forces.csv +45 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EM500_gap_1S0_HF_spectrum_N3LO_3N_forces.csv +45 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EM500_gap_1S0_free_spectrum_N2LO_3N_forces.csv +45 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EM500_gap_1S0_free_spectrum_N3LO_3N_forces.csv +45 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EM500_gap_3PF2_HF_spectrum_N2LO_3N_forces.csv +32 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EM500_gap_3PF2_HF_spectrum_N3LO_3N_forces.csv +32 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EM500_gap_3PF2_free_spectrum_N2LO_3N_forces.csv +32 -0
- nucleardatapy/data/matter/micro/2017-Drischler/N3LO_EM500_gap_3PF2_free_spectrum_N3LO_3N_forces.csv +32 -0
- nucleardatapy/data/matter/micro/2018-QMC-NM.dat +18 -0
- nucleardatapy/data/matter/micro/2020-MBPT-NM-DHSL59.dat +18 -0
- nucleardatapy/data/matter/micro/2020-MBPT-NM-DHSL69.dat +18 -0
- nucleardatapy/data/matter/micro/2020-MBPT-SM-DHSL59.dat +18 -0
- nucleardatapy/data/matter/micro/2020-MBPT-SM-DHSL69.dat +18 -0
- nucleardatapy/data/matter/micro/2022-AFDMC-NM-gap.csv +17 -0
- nucleardatapy/data/matter/micro/2022-AFDMC-NM.csv +11 -0
- nucleardatapy/data/matter/micro/2023-MBPT-NM.csv +60 -0
- nucleardatapy/data/matter/micro/2023-MBPT-SM.csv +60 -0
- nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_Av1823BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_Av1823BFmicro.dat +13 -0
- nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_Av8p23BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_BONN23BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_BONNB23BFmicro.dat +13 -0
- nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_CDBONN23BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC9323BFmicro.dat +13 -0
- nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97a23BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97b23BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97c23BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97d23BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97e23BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_NSC97f23BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-NM-23BF/spin_isosp_SSCV1423BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-NM-2BF/spin_isosp_Av182BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-NM-2BF/spin_isosp_Av8p2BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-NM-2BF/spin_isosp_BONN2BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-NM-2BF/spin_isosp_CDBONN2BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97a2BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97b2BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97c2BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97d2BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97e2BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-NM-2BF/spin_isosp_NSC97f2BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-NM-2BF/spin_isosp_SSCV142BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_Av1823BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_Av1823BFmicro.dat +13 -0
- nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_Av8p23BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_BONN23BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_BONNB23BFmicro.dat +11 -0
- nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_CDBONN23BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC9323BFmicro.dat +13 -0
- nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97a23BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97b23BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97c23BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97d23BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97e23BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_NSC97f23BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-SM-23BF/spin_isosp_SSCV1423BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-SM-2BF/spin_isosp_Av182BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-SM-2BF/spin_isosp_Av8p2BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-SM-2BF/spin_isosp_BONN2BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-SM-2BF/spin_isosp_CDBONN2BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97a2BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97b2BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97c2BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97d2BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97e2BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-SM-2BF/spin_isosp_NSC97f2BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-BHF-SM-2BF/spin_isosp_SSCV142BF.dat +14 -0
- nucleardatapy/data/matter/micro/2024-DMC-NM.dat +15 -0
- nucleardatapy/data/matter/micro/2024-NLEFT-NM-bkp.dat +38 -0
- nucleardatapy/data/matter/micro/2024-NLEFT-NM.dat +28 -0
- nucleardatapy/data/matter/micro/2024-NLEFT-SM-bkp.dat +33 -0
- nucleardatapy/data/matter/micro/2024-NLEFT-SM.dat +16 -0
- nucleardatapy/data/matter/micro/BSTmicro-NM.dat +12 -0
- nucleardatapy/data/matter/micro/BSTmicro-SM.dat +10 -0
- nucleardatapy/data/matter/micro/BSTph-NM.dat +13 -0
- nucleardatapy/data/matter/micro/BSTph-SM.dat +13 -0
- nucleardatapy/data/matter/micro/convert.sh +6 -0
- nucleardatapy/data/matter/nep/NEPESkyrme.dat +10 -0
- nucleardatapy/data/matter/nep/NEPFayans.dat +5 -0
- nucleardatapy/data/matter/nep/NEPGogny.dat +8 -0
- nucleardatapy/data/matter/nep/NEPMBPT2016.dat +8 -0
- nucleardatapy/data/matter/nep/NEPSkyrme.dat +45 -0
- nucleardatapy/data/matter/nep/NEPSkyrme2.dat +18 -0
- nucleardatapy/data/matter/nep/NEPddrh.dat +6 -0
- nucleardatapy/data/matter/nep/NEPddrhf.dat +5 -0
- nucleardatapy/data/matter/nep/NEPnlrh.dat +7 -0
- nucleardatapy/data/matter/pheno/ESkyrme/BSk22-NM.dat +1002 -0
- nucleardatapy/data/matter/pheno/ESkyrme/BSk22-SM.dat +1002 -0
- nucleardatapy/data/matter/pheno/ESkyrme/BSk24-NM.dat +1002 -0
- nucleardatapy/data/matter/pheno/ESkyrme/BSk24-SM.dat +1002 -0
- nucleardatapy/data/matter/pheno/ESkyrme/BSk25-NM.dat +1002 -0
- nucleardatapy/data/matter/pheno/ESkyrme/BSk25-SM.dat +1002 -0
- nucleardatapy/data/matter/pheno/ESkyrme/BSk26-NM.dat +1002 -0
- nucleardatapy/data/matter/pheno/ESkyrme/BSk26-SM.dat +1002 -0
- nucleardatapy/data/matter/pheno/ESkyrme/BSk31-NM.dat +1002 -0
- nucleardatapy/data/matter/pheno/ESkyrme/BSk31-SM.dat +1002 -0
- nucleardatapy/data/matter/pheno/ESkyrme/BSk32-NM-old.dat +1002 -0
- nucleardatapy/data/matter/pheno/ESkyrme/BSk32-NM.dat +1002 -0
- nucleardatapy/data/matter/pheno/ESkyrme/BSk32-SM-old.dat +1002 -0
- nucleardatapy/data/matter/pheno/ESkyrme/BSk32-SM.dat +1002 -0
- nucleardatapy/data/matter/pheno/ESkyrme/BSkG1-NM.dat +1002 -0
- nucleardatapy/data/matter/pheno/ESkyrme/BSkG1-SM.dat +1002 -0
- nucleardatapy/data/matter/pheno/ESkyrme/BSkG2-NM.dat +1002 -0
- nucleardatapy/data/matter/pheno/ESkyrme/BSkG2-SM.dat +1002 -0
- nucleardatapy/data/matter/pheno/ESkyrme/BSkG3-NM.dat +1002 -0
- nucleardatapy/data/matter/pheno/ESkyrme/BSkG3-SM.dat +1002 -0
- nucleardatapy/data/matter/pheno/Skyrme/BSK14-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/BSK14-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/BSK16-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/BSK16-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/BSK17-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/BSK17-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/BSK27-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/BSK27-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/F+-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/F+-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/F--NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/F--SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/F0-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/F0-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/FPL-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/FPL-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/LNS-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/LNS-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/LNS1-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/LNS1-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/LNS5-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/LNS5-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/NRAPR-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/NRAPR-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/RATP-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/RATP-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SAMI-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SAMI-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SGII-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SGII-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SIII-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SIII-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SKGSIGMA-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SKGSIGMA-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SKI2-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SKI2-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SKI4-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SKI4-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SKMP-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SKMP-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SKMS-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SKMS-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SKO-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SKO-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SKOP-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SKOP-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SKP-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SKP-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SKRSIGMA-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SKRSIGMA-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SKX-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SKX-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SLY230A-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SLY230A-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SLY230B-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SLY230B-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SLY4-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SLY4-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SLY5-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SLY5-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SV-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/SV-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/Skz2-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/Skz2-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/T44-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/T44-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/T6-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/T6-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/UNEDF0-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/UNEDF0-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/UNEDF1-NM.dat +99 -0
- nucleardatapy/data/matter/pheno/Skyrme/UNEDF1-SM.dat +99 -0
- nucleardatapy/data/matter/pheno/ddrh/DDME1-NM.dat +200 -0
- nucleardatapy/data/matter/pheno/ddrh/DDME1-SM.dat +176 -0
- nucleardatapy/data/matter/pheno/ddrh/DDME2-NM.dat +200 -0
- nucleardatapy/data/matter/pheno/ddrh/DDME2-SM.dat +169 -0
- nucleardatapy/data/matter/pheno/ddrh/DDMEd-NM.dat +200 -0
- nucleardatapy/data/matter/pheno/ddrh/DDMEd-SM.dat +200 -0
- nucleardatapy/data/matter/pheno/ddrh/PKDD-NM.dat +200 -0
- nucleardatapy/data/matter/pheno/ddrh/PKDD-SM.dat +191 -0
- nucleardatapy/data/matter/pheno/ddrh/PKDD.pdf +0 -0
- nucleardatapy/data/matter/pheno/ddrh/TW99-NM.dat +200 -0
- nucleardatapy/data/matter/pheno/ddrh/TW99-SM.dat +200 -0
- nucleardatapy/data/matter/pheno/ddrhf/PKA1-NM.dat +200 -0
- nucleardatapy/data/matter/pheno/ddrhf/PKA1-SM.dat +200 -0
- nucleardatapy/data/matter/pheno/ddrhf/PKO1-NM.dat +200 -0
- nucleardatapy/data/matter/pheno/ddrhf/PKO1-SM.dat +200 -0
- nucleardatapy/data/matter/pheno/ddrhf/PKO2-NM.dat +200 -0
- nucleardatapy/data/matter/pheno/ddrhf/PKO2-SM.dat +200 -0
- nucleardatapy/data/matter/pheno/ddrhf/PKO3-NM.dat +200 -0
- nucleardatapy/data/matter/pheno/ddrhf/PKO3-SM.dat +200 -0
- nucleardatapy/data/matter/pheno/nlrh/NL-SH-NM.dat +101 -0
- nucleardatapy/data/matter/pheno/nlrh/NL-SH-SM.dat +101 -0
- nucleardatapy/data/matter/pheno/nlrh/NL3-NM.dat +101 -0
- nucleardatapy/data/matter/pheno/nlrh/NL3-SM.dat +101 -0
- nucleardatapy/data/matter/pheno/nlrh/NL3II-NM.dat +101 -0
- nucleardatapy/data/matter/pheno/nlrh/NL3II-SM.dat +101 -0
- nucleardatapy/data/matter/pheno/nlrh/PK1-NM.dat +101 -0
- nucleardatapy/data/matter/pheno/nlrh/PK1-SM.dat +101 -0
- nucleardatapy/data/matter/pheno/nlrh/PK1R-NM.dat +101 -0
- nucleardatapy/data/matter/pheno/nlrh/PK1R-SM.dat +101 -0
- nucleardatapy/data/matter/pheno/nlrh/TM1-NM.dat +157 -0
- nucleardatapy/data/matter/pheno/nlrh/TM1-SM.dat +140 -0
- nucleardatapy/data/nuclei/esym/Danielewicz-2014-S.dat +8 -0
- nucleardatapy/data/nuclei/isgmr/2010-ISGMR-Li.dat +16 -0
- nucleardatapy/data/nuclei/isgmr/2018-ISGMR-Garg.dat +17 -0
- nucleardatapy/data/nuclei/isgmr/2018-ISGMR-Garg.tex +76 -0
- nucleardatapy/data/nuclei/isgmr/2022-ISGMR-average.dat +17 -0
- nucleardatapy/data/nuclei/isgmr/isgmr.pdf +0 -0
- nucleardatapy/data/nuclei/masses/AME/2012_nubase.mas12.txt +5513 -0
- nucleardatapy/data/nuclei/masses/AME/2016_nubase2016.txt +5625 -0
- nucleardatapy/data/nuclei/masses/AME/2020_nubase_4.mas20.txt +5868 -0
- nucleardatapy/data/nuclei/masses/Theory/1988-GK.txt +1 -0
- nucleardatapy/data/nuclei/masses/Theory/1988-MJ.txt +1 -0
- nucleardatapy/data/nuclei/masses/Theory/1995-DZ.txt +1 -0
- nucleardatapy/data/nuclei/masses/Theory/1995-ETFSI.txt +8245 -0
- nucleardatapy/data/nuclei/masses/Theory/1995-FRDM.dat +8982 -0
- nucleardatapy/data/nuclei/masses/Theory/1995-FRDM.txt +8980 -0
- nucleardatapy/data/nuclei/masses/Theory/2005-KTUY.txt +9437 -0
- nucleardatapy/data/nuclei/masses/Theory/2007-HFB14.txt +8389 -0
- nucleardatapy/data/nuclei/masses/Theory/2010-HFB21.dat +8389 -0
- nucleardatapy/data/nuclei/masses/Theory/2010-WS3.txt +1 -0
- nucleardatapy/data/nuclei/masses/Theory/2011-WS3.txt +1 -0
- nucleardatapy/data/nuclei/masses/Theory/2013-HFB22.txt +8396 -0
- nucleardatapy/data/nuclei/masses/Theory/2013-HFB23.txt +8396 -0
- nucleardatapy/data/nuclei/masses/Theory/2013-HFB24.txt +8396 -0
- nucleardatapy/data/nuclei/masses/Theory/2013-HFB25.txt +9488 -0
- nucleardatapy/data/nuclei/masses/Theory/2013-HFB26-old.txt +9512 -0
- nucleardatapy/data/nuclei/masses/Theory/2013-HFB26.txt +9515 -0
- nucleardatapy/data/nuclei/masses/Theory/2021-BSkG1-old.txt +7017 -0
- nucleardatapy/data/nuclei/masses/Theory/2021-BSkG1.txt +6574 -0
- nucleardatapy/data/nuclei/masses/Theory/2022-BSkG2-old.txt +6722 -0
- nucleardatapy/data/nuclei/masses/Theory/2022-BSkG2.txt +6719 -0
- nucleardatapy/data/nuclei/masses/Theory/2023-BSkG3-old.txt +8489 -0
- nucleardatapy/data/nuclei/masses/Theory/2023-BSkG3.txt +8486 -0
- nucleardatapy/data/nuclei/masses/Theory/2024-BSkG4-old.txt +7848 -0
- nucleardatapy/data/nuclei/masses/Theory/2025-BSkG4.txt +7845 -0
- nucleardatapy/data/nuclei/masses/UNEDF/ExpDatabase_Fortran90_v04/DataSet04.dat +1497 -0
- nucleardatapy/data/nuclei/masses/UNEDF/ExpDatabase_Fortran90_v04/Makefile_ifc +16 -0
- nucleardatapy/data/nuclei/masses/UNEDF/ExpDatabase_Fortran90_v04/input04.f90 +515 -0
- nucleardatapy/data/nuclei/masses/UNEDF/ExpDatabase_Fortran90_v04/main04.f90 +14 -0
- nucleardatapy/data/nuclei/masses/UNEDF/ExpDatabase_Fortran90_v04.tar +0 -0
- nucleardatapy/data/nuclei/nskin/208Pb.dat +25 -0
- nucleardatapy/data/nuclei/nskin/48Ca.dat +21 -0
- nucleardatapy/data/nuclei/radch/2013-Angeli.csv +960 -0
- nucleardatapy/env.py +9 -0
- nucleardatapy/eos/__init__.py +7 -0
- nucleardatapy/eos/setup_am.py +198 -0
- nucleardatapy/eos/setup_am_Beq.py +240 -0
- nucleardatapy/eos/setup_am_Leq.py +229 -0
- nucleardatapy/fig/__init__.py +43 -0
- nucleardatapy/fig/astro_setupGW_fig.py +67 -0
- nucleardatapy/fig/astro_setupMR_fig.py +88 -0
- nucleardatapy/fig/astro_setupMasses_fig.py +64 -0
- nucleardatapy/fig/astro_setupMtov_fig.py +84 -0
- nucleardatapy/fig/astro_setupMup_fig.py +68 -0
- nucleardatapy/fig/corr_setupEsymDen_fig.py +47 -0
- nucleardatapy/fig/corr_setupEsymLsym_fig.py +56 -0
- nucleardatapy/fig/corr_setupKsatQsat_fig.py +64 -0
- nucleardatapy/fig/crust_setupCrust_fig.py +52 -0
- nucleardatapy/fig/eos_setupAMBeq_fig.py +204 -0
- nucleardatapy/fig/eos_setupAMLeq_fig.py +209 -0
- nucleardatapy/fig/eos_setupAM_fig.py +81 -0
- nucleardatapy/fig/hnuc_setupChart_fig.py +54 -0
- nucleardatapy/fig/hnuc_setupRE1LExp_fig.py +44 -0
- nucleardatapy/fig/matter_ENM_fig.py +119 -0
- nucleardatapy/fig/matter_ESM_fig.py +119 -0
- nucleardatapy/fig/matter_Esym_fig.py +122 -0
- nucleardatapy/fig/matter_setupFFGNuc_fig.py +172 -0
- nucleardatapy/fig/matter_setupHIC_fig.py +101 -0
- nucleardatapy/fig/matter_setupMicroEsym_fig.py +85 -0
- nucleardatapy/fig/matter_setupMicro_LP_fig.py +109 -0
- nucleardatapy/fig/matter_setupMicro_band_fig.py +85 -0
- nucleardatapy/fig/matter_setupMicro_effmass_fig.py +70 -0
- nucleardatapy/fig/matter_setupMicro_err_NM_fig.py +47 -0
- nucleardatapy/fig/matter_setupMicro_fig.py +165 -0
- nucleardatapy/fig/matter_setupMicro_gap_fig.py +161 -0
- nucleardatapy/fig/matter_setupNEPModelDist_fig.py +68 -0
- nucleardatapy/fig/matter_setupPhenoEsym_fig.py +100 -0
- nucleardatapy/fig/matter_setupPheno_fig.py +121 -0
- nucleardatapy/fig/nuc_setupBEExp_fig.py +122 -0
- nucleardatapy/hnuc/__init__.py +8 -0
- nucleardatapy/hnuc/setup_be1L_exp.py +233 -0
- nucleardatapy/hnuc/setup_be1Xi_exp.py +192 -0
- nucleardatapy/hnuc/setup_be2L_exp.py +202 -0
- nucleardatapy/matter/__init__.py +17 -0
- nucleardatapy/matter/setup_ffg.py +410 -0
- nucleardatapy/matter/setup_hic.py +314 -0
- nucleardatapy/matter/setup_micro.py +1635 -0
- nucleardatapy/matter/setup_micro_band.py +233 -0
- nucleardatapy/matter/setup_micro_effmass.py +215 -0
- nucleardatapy/matter/setup_micro_esym.py +352 -0
- nucleardatapy/matter/setup_micro_gap.py +381 -0
- nucleardatapy/matter/setup_micro_lp.py +347 -0
- nucleardatapy/matter/setup_nep.py +478 -0
- nucleardatapy/matter/setup_nep_dist.py +187 -0
- nucleardatapy/matter/setup_nep_model_dist.py +202 -0
- nucleardatapy/matter/setup_pheno.py +353 -0
- nucleardatapy/matter/setup_pheno_esym.py +271 -0
- nucleardatapy/nuc/__init__.py +12 -0
- nucleardatapy/nuc/setup_be_exp.py +1026 -0
- nucleardatapy/nuc/setup_be_theo.py +1086 -0
- nucleardatapy/nuc/setup_isgmr_exp.py +494 -0
- nucleardatapy/nuc/setup_nskin_exp.py +610 -0
- nucleardatapy/nuc/setup_nskin_theo.py +263 -0
- nucleardatapy/nuc/setup_rch_exp.py +159 -0
- nucleardatapy/nuc/setup_rch_theo.py +198 -0
- nucleardatapy/param.py +247 -0
- nucleardatapy-0.2.0.dist-info/LICENSE +402 -0
- nucleardatapy-0.2.0.dist-info/METADATA +115 -0
- nucleardatapy-0.2.0.dist-info/RECORD +491 -0
- nucleardatapy-0.2.0.dist-info/WHEEL +5 -0
- nucleardatapy-0.2.0.dist-info/top_level.txt +2 -0
- tests/__init__.py +16 -0
- tests/test_astro_setupMasses.py +18 -0
- tests/test_corr_setupKsatQsat.py +22 -0
- tests/test_matter_setupFFGNuc.py +21 -0
- tests/test_matter_setupMicro.py +20 -0
|
@@ -0,0 +1,1026 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import sys
|
|
3
|
+
import math
|
|
4
|
+
import numpy as np # 1.15.0
|
|
5
|
+
|
|
6
|
+
#nucleardatapy_tk = os.getenv('NUCLEARDATAPY_TK')
|
|
7
|
+
#sys.path.insert(0, nucleardatapy_tk)
|
|
8
|
+
|
|
9
|
+
import nucleardatapy as nuda
|
|
10
|
+
|
|
11
|
+
CST_AtmMass = 931.494028
|
|
12
|
+
#CST_mpc2 = 938.272081
|
|
13
|
+
#CST_mnc2 = 939.565413
|
|
14
|
+
#CST_mec2 = 0.5109989461
|
|
15
|
+
CST_mnc2 = 8.0713171
|
|
16
|
+
CST_dmnc2= 0.0000005
|
|
17
|
+
CST_mHc2 = 7.2889706
|
|
18
|
+
CST_dmHc2= 0.0000001
|
|
19
|
+
yearMin=1851
|
|
20
|
+
|
|
21
|
+
# time conversion (using tropical year as in NUBASE2020):
|
|
22
|
+
ns = 1e-9
|
|
23
|
+
minutes = 60 # in s
|
|
24
|
+
hours = 60 * minutes # (hours) in s
|
|
25
|
+
days = 24 * hours # (day) in s
|
|
26
|
+
days = 86400 # in s
|
|
27
|
+
months = 30 * days # (month) (30 days) in s
|
|
28
|
+
years = 365.2422 * days # (year) in s
|
|
29
|
+
#print('years:',years)
|
|
30
|
+
#print('type(years):',type(years))
|
|
31
|
+
ILt = 1e30 * years # infinite Large time
|
|
32
|
+
ISt = 1.e-30 # infinite Short time
|
|
33
|
+
HTvsl = 1e-3 # half-time for very short live nuclei
|
|
34
|
+
HTsl = hours # half-time for short live nuclei
|
|
35
|
+
|
|
36
|
+
def stable_fit(Zmin = 1, Zmax = 120):
|
|
37
|
+
Z = np.linspace(start=Zmin, stop=Zmax, num=1+Zmax-Zmin, dtype = int )
|
|
38
|
+
N = np.array( Z + 6.e-3*Z*Z, dtype = int )
|
|
39
|
+
return N, Z
|
|
40
|
+
|
|
41
|
+
def be_exp_tables():
|
|
42
|
+
"""
|
|
43
|
+
Return a list of the tables available in this toolkit for the experimental masses and
|
|
44
|
+
print them all on the prompt. These tables are the following
|
|
45
|
+
ones: 'AME'.
|
|
46
|
+
|
|
47
|
+
:return: The list of tables.
|
|
48
|
+
:rtype: list[str].
|
|
49
|
+
"""
|
|
50
|
+
#
|
|
51
|
+
if nuda.env.verb: print("\nEnter be_exp_tables()")
|
|
52
|
+
#
|
|
53
|
+
tables = [ 'AME' ]
|
|
54
|
+
#
|
|
55
|
+
#print('tables available in the toolkit:',tables)
|
|
56
|
+
tables_lower = [ item.lower() for item in tables ]
|
|
57
|
+
#print('tables available in the toolkit:',tables_lower)
|
|
58
|
+
#
|
|
59
|
+
if nuda.env.verb: print("Exit be_exp_tables()")
|
|
60
|
+
#
|
|
61
|
+
return tables, tables_lower
|
|
62
|
+
|
|
63
|
+
def be_exp_versions( table ):
|
|
64
|
+
"""
|
|
65
|
+
Return a list of versions of tables available in
|
|
66
|
+
this toolkit for a given model and print them all on the prompt.
|
|
67
|
+
|
|
68
|
+
:param table: The table for which there are different versions.
|
|
69
|
+
:type table: str.
|
|
70
|
+
:return: The list of versions. \
|
|
71
|
+
If table == 'AME': '2020', '2016', '2012'.
|
|
72
|
+
:rtype: list[str].
|
|
73
|
+
"""
|
|
74
|
+
#
|
|
75
|
+
if nuda.env.verb: print("\nEnter be_exp_versions()")
|
|
76
|
+
#
|
|
77
|
+
if table.lower()=='ame':
|
|
78
|
+
versions= [ '2020', '2016', '2012' ]
|
|
79
|
+
#
|
|
80
|
+
#print('Versions available in the toolkit:',versions)
|
|
81
|
+
versions_lower = [ item.lower() for item in versions ]
|
|
82
|
+
#
|
|
83
|
+
if nuda.env.verb: print("Exit be_exp_tables_versions()")
|
|
84
|
+
#
|
|
85
|
+
return versions, versions_lower
|
|
86
|
+
|
|
87
|
+
def plot_shells(axs):
|
|
88
|
+
#
|
|
89
|
+
# plot shells for isotopes and isotones
|
|
90
|
+
#
|
|
91
|
+
axs.plot( [0,40], [7,7], linestyle='dotted', linewidth=1, color='gray')
|
|
92
|
+
axs.plot( [0,40], [9,9], linestyle='dotted', linewidth=1, color='gray')
|
|
93
|
+
axs.plot( [6,60], [19,19], linestyle='dotted', linewidth=1, color='gray')
|
|
94
|
+
axs.plot( [6,60], [21,21], linestyle='dotted', linewidth=1, color='gray')
|
|
95
|
+
axs.plot( [12,90], [27,27], linestyle='dotted', linewidth=1, color='gray')
|
|
96
|
+
axs.plot( [12,90], [29,29], linestyle='dotted', linewidth=1, color='gray')
|
|
97
|
+
axs.plot( [34,138], [49,49], linestyle='dotted', linewidth=1, color='gray')
|
|
98
|
+
axs.plot( [34,138], [51,51], linestyle='dotted', linewidth=1, color='gray')
|
|
99
|
+
axs.plot( [76,170], [81,81], linestyle='dotted', linewidth=1, color='gray')
|
|
100
|
+
axs.plot( [76,170], [83,83], linestyle='dotted', linewidth=1, color='gray')
|
|
101
|
+
axs.plot( [126,190], [127,127], linestyle='dotted', linewidth=1, color='gray')
|
|
102
|
+
axs.plot( [126,190], [129,129], linestyle='dotted', linewidth=1, color='gray')
|
|
103
|
+
#
|
|
104
|
+
# plot shells for isotones
|
|
105
|
+
#
|
|
106
|
+
axs.plot( [7,7], [0,24], linestyle='dotted', linewidth=1, color='gray')
|
|
107
|
+
axs.plot( [9,9], [0,24], linestyle='dotted', linewidth=1, color='gray')
|
|
108
|
+
axs.plot( [19,19], [4,40], linestyle='dotted', linewidth=1, color='gray')
|
|
109
|
+
axs.plot( [21,21], [4,40], linestyle='dotted', linewidth=1, color='gray')
|
|
110
|
+
axs.plot( [27,27], [4,46], linestyle='dotted', linewidth=1, color='gray')
|
|
111
|
+
axs.plot( [29,29], [4,46], linestyle='dotted', linewidth=1, color='gray')
|
|
112
|
+
axs.plot( [49,49], [14,60], linestyle='dotted', linewidth=1, color='gray')
|
|
113
|
+
axs.plot( [51,51], [14,60], linestyle='dotted', linewidth=1, color='gray')
|
|
114
|
+
axs.plot( [81,81], [20,86], linestyle='dotted', linewidth=1, color='gray')
|
|
115
|
+
axs.plot( [83,83], [20,86], linestyle='dotted', linewidth=1, color='gray')
|
|
116
|
+
axs.plot( [127,127], [40,132], linestyle='dotted', linewidth=1, color='gray')
|
|
117
|
+
axs.plot( [129,129], [40,132], linestyle='dotted', linewidth=1, color='gray')
|
|
118
|
+
#
|
|
119
|
+
return axs
|
|
120
|
+
|
|
121
|
+
class setupBEExp():
|
|
122
|
+
"""
|
|
123
|
+
Instantiate the experimental nuclear masses from AME mass table.
|
|
124
|
+
|
|
125
|
+
This choice is defined in the variables `table` and `version`.
|
|
126
|
+
|
|
127
|
+
`table` can chosen among the following ones: 'AME'.
|
|
128
|
+
|
|
129
|
+
`version` can be chosen among the following choices: '2020', '2016', '2012'.
|
|
130
|
+
|
|
131
|
+
:param table: Fix the name of `table`. Default value: 'AME'.
|
|
132
|
+
:type table: str, optional.
|
|
133
|
+
:param version: Fix the name of `version`. Default value: 2020'.
|
|
134
|
+
:type version: str, optional.
|
|
135
|
+
|
|
136
|
+
**Attributes:**
|
|
137
|
+
"""
|
|
138
|
+
def __init__(self, table = 'AME', version = '2020'):
|
|
139
|
+
#
|
|
140
|
+
if nuda.env.verb: print("Enter setupBEExp()")
|
|
141
|
+
#
|
|
142
|
+
tables, tables_lower = be_exp_tables()
|
|
143
|
+
if table.lower() not in tables_lower:
|
|
144
|
+
print('Table ',table,' is not in the list of tables.')
|
|
145
|
+
print('list of tables:',tables)
|
|
146
|
+
print('-- Exit the code --')
|
|
147
|
+
exit()
|
|
148
|
+
self.table = table
|
|
149
|
+
if nuda.env.verb: print("table:",table)
|
|
150
|
+
#
|
|
151
|
+
versions, versions_lower = be_exp_versions( table = table )
|
|
152
|
+
if version.lower() not in versions_lower:
|
|
153
|
+
print('Version ',version,' is not in the list of versions.')
|
|
154
|
+
print('list of versions:',versions)
|
|
155
|
+
print('-- Exit the code --')
|
|
156
|
+
exit()
|
|
157
|
+
self.version = version
|
|
158
|
+
if nuda.env.verb: print("version:",version)
|
|
159
|
+
#
|
|
160
|
+
#: Attribute A (mass of the nucleus).
|
|
161
|
+
self.nucA = []
|
|
162
|
+
#: Attribute Z (charge of the nucleus).
|
|
163
|
+
self.nucZ = []
|
|
164
|
+
#: Attribute symb (symbol) of the element, e.g., Fe.
|
|
165
|
+
self.nucSymb = []
|
|
166
|
+
#: Attribute N (number of neutrons of the nucleus).
|
|
167
|
+
self.nucN = []
|
|
168
|
+
#: Attribute I.
|
|
169
|
+
self.flagI = []
|
|
170
|
+
#: Attribute Interp (interpolation). Interp='y' is the nucleus\
|
|
171
|
+
#: has not been measured but is in the table based on interpolation expressions.\
|
|
172
|
+
#: otherwise Interp = 'n' for nuclei produced in laboratory and measured.
|
|
173
|
+
self.flagInterp = []
|
|
174
|
+
#: Attribute stbl. stbl='y' if the nucleus is stable (according to the table). Otherwise stbl = 'n'.
|
|
175
|
+
self.nucStbl = [] # ='y' if stable nucleus
|
|
176
|
+
#: Attribute HT (half-Time) of the nucleus.
|
|
177
|
+
self.nucHT = [] # half-time in s
|
|
178
|
+
#: Attribute year of the discovery of the nucleus.
|
|
179
|
+
self.nucYear = []
|
|
180
|
+
#: Attribute BE (Binding Energy) of the nucleus.
|
|
181
|
+
self.nucBE = []
|
|
182
|
+
#: Attribute uncertainty in the BE (Binding Energy) of the nucleus.
|
|
183
|
+
self.nucBE_err = []
|
|
184
|
+
#: Attribute Zmax: maximum charge of nuclei present in the table.
|
|
185
|
+
self.Zmax=0
|
|
186
|
+
#
|
|
187
|
+
if table.lower()=='ame':
|
|
188
|
+
if version=='2012':
|
|
189
|
+
file_in = nuda.param.path_data+'nuclei/masses/AME/2012_nubase.mas12.txt'
|
|
190
|
+
nbLine_skip = 3 # lines in the header to skip
|
|
191
|
+
cbe = 18 # column giving the binding energy
|
|
192
|
+
cdbe = 29 # column giving the uncertainty in the binding energy
|
|
193
|
+
cdbee = 38 # column ??
|
|
194
|
+
cyear=105 # column for the discovery year
|
|
195
|
+
elif version=='2016':
|
|
196
|
+
file_in = nuda.param.path_data+'nuclei/masses/AME/2016_nubase2016.txt'
|
|
197
|
+
nbLine_skip = 0
|
|
198
|
+
cbe = 18
|
|
199
|
+
cdbe = 29
|
|
200
|
+
cdbee = 38
|
|
201
|
+
cyear=105 # column for the discovery year
|
|
202
|
+
elif version=='2020':
|
|
203
|
+
file_in = nuda.param.path_data+'nuclei/masses/AME/2020_nubase_4.mas20.txt'
|
|
204
|
+
nbLine_skip = 26
|
|
205
|
+
cbe = 18
|
|
206
|
+
cdbe = 31
|
|
207
|
+
cdbee = 42
|
|
208
|
+
cyear=114 # column for the discovery year
|
|
209
|
+
#: Attribute providing the full reference to the paper to be citted.
|
|
210
|
+
self.ref='F.G. Kondev, M. Wang, W.J. Huang, S. Naimi, and G. Audi, Chin. Phys. C45, 030001 (2021)'
|
|
211
|
+
#: Attribute providing the label the data is references for figures.
|
|
212
|
+
self.label = 'AME-2020'
|
|
213
|
+
#: Attribute providing additional notes about the data.
|
|
214
|
+
self.note = "write here notes about this table."
|
|
215
|
+
#
|
|
216
|
+
# read the AME table
|
|
217
|
+
#
|
|
218
|
+
nbLine = 0
|
|
219
|
+
nbNuc = 0
|
|
220
|
+
#
|
|
221
|
+
self.ind_min = 10000
|
|
222
|
+
self.ind_max = 0
|
|
223
|
+
self.year_min = 3000
|
|
224
|
+
self.year_max = 1600
|
|
225
|
+
#
|
|
226
|
+
with open(file_in,'r') as file:
|
|
227
|
+
for line in file:
|
|
228
|
+
nbLine = nbLine + 1
|
|
229
|
+
# skip the header of the file
|
|
230
|
+
if nbLine < nbLine_skip: continue
|
|
231
|
+
if (nuda.env.verb): print('line:'+str(nbLine)+':'+line[0:-2])
|
|
232
|
+
# if '#' in line[14:40]: continue
|
|
233
|
+
# Read input file:
|
|
234
|
+
AA=int(line[0:3])
|
|
235
|
+
#if nucA < int(Amin): continue
|
|
236
|
+
#if int(A) != 0 and nucA != int(A): continue
|
|
237
|
+
ZZ=int(line[4:7])
|
|
238
|
+
#if nucZ < int(Zmin): continue
|
|
239
|
+
#if int(Z) != 0 and nucZ != int(Z): continue
|
|
240
|
+
NN = AA - ZZ
|
|
241
|
+
if (nuda.env.verb): print(' nucleus:',AA,ZZ,NN)
|
|
242
|
+
#if ZZ == 20: print(' nucleus:',AA,ZZ,NN)
|
|
243
|
+
flagI=int(line[7:8]) # if nuci==0: ground-state (GS)
|
|
244
|
+
if (nuda.env.verb): print(' flagI:'+str(flagI))
|
|
245
|
+
# select only GS by skiping all contributions from other states (flagI = 0)
|
|
246
|
+
#if flagI != 0: continue
|
|
247
|
+
#
|
|
248
|
+
name=line[11:16]
|
|
249
|
+
if ( name[0:3].isdigit() ):
|
|
250
|
+
symb=name[3:5]
|
|
251
|
+
elif ( name[0:2].isdigit() ):
|
|
252
|
+
symb=name[2:4]
|
|
253
|
+
else:
|
|
254
|
+
symb=name[1:3]
|
|
255
|
+
if nuda.env.verb: print(' Symbol:',symb)
|
|
256
|
+
isomer=line[16:17]
|
|
257
|
+
if nuda.env.verb: print(' Isomer:',isomer)
|
|
258
|
+
stbl = 'n'
|
|
259
|
+
ht=line[69:78]
|
|
260
|
+
htu=line[78:80]
|
|
261
|
+
#print('ht:',ht,' unit:',htu)
|
|
262
|
+
fac = 1.0
|
|
263
|
+
if 'stbl' in ht:
|
|
264
|
+
stbl = 'y'
|
|
265
|
+
ht = ILt
|
|
266
|
+
elif 'p-unst' in ht:
|
|
267
|
+
stbl = 'n'
|
|
268
|
+
ht = ISt
|
|
269
|
+
elif ht==' '*9: # be carefull: there is no time associated, so it gives a short time by default
|
|
270
|
+
stbl = 'n'
|
|
271
|
+
ht = ISt
|
|
272
|
+
elif '\n' in ht: # be carefull: there is no data given here, so it gives short time by default
|
|
273
|
+
stbl = 'n'
|
|
274
|
+
ht = ISt
|
|
275
|
+
elif '>' in ht and '#' in ht: # be carefull: there is only upper limit for the half-time, so it gives it by default
|
|
276
|
+
stbl = 'n'
|
|
277
|
+
ht = float( ht.replace('#','').replace('>','') )
|
|
278
|
+
elif '<' in ht and '#' in ht: # be carefull: there is only upper limit for the half-time, so it gives it by default
|
|
279
|
+
stbl = 'n'
|
|
280
|
+
ht = float( ht.replace('#','').replace('<','') )
|
|
281
|
+
elif '>' in ht: # be carefull: there is only lower limit for the half-time, so it gives it by default
|
|
282
|
+
stbl = 'n'
|
|
283
|
+
ht = float( ht.replace('>','') )
|
|
284
|
+
elif '<' in ht: # be carefull: there is only upper limit for the half-time, so it gives it by default
|
|
285
|
+
stbl = 'n'
|
|
286
|
+
ht = float( ht.replace('<','') )
|
|
287
|
+
elif '#' in ht: # be carefull: there is only upper limit for the half-time, so it gives it by default
|
|
288
|
+
stbl = 'n'
|
|
289
|
+
ht = float( ht.replace('#','') )
|
|
290
|
+
elif '~' in ht: # be carefull: there is only upper limit for the half-time, so it gives it by default
|
|
291
|
+
stbl = 'n'
|
|
292
|
+
ht = float( ht.replace('~','') )
|
|
293
|
+
else:
|
|
294
|
+
stbl = 'n'
|
|
295
|
+
ht = float( ht )
|
|
296
|
+
if htu=='ys':
|
|
297
|
+
fac = 1.e-24 #print('yoctoseconds (1.e-24)')
|
|
298
|
+
elif htu=='zs':
|
|
299
|
+
fac = 1.e-21 # print('zeptoseconds (1.e-21)')
|
|
300
|
+
elif htu=='as':
|
|
301
|
+
fac = 1.e-18 # print('attoseconds (1.e-18)')
|
|
302
|
+
elif htu=='fs':
|
|
303
|
+
fac = 1.e-15 # print('femtosecond (1.e-15)')
|
|
304
|
+
elif htu=='ps':
|
|
305
|
+
fac = 1.e-12 # print('picoseconds (1.e-12)')
|
|
306
|
+
elif htu=='ns':
|
|
307
|
+
fac = 1.e-9 # print('nano-second (1.e-9)')
|
|
308
|
+
elif htu=='us':
|
|
309
|
+
fac = 1.e-6 # print('us (microsecond?) (1.e-6)')
|
|
310
|
+
elif htu=='ms':
|
|
311
|
+
fac = 1.e-3 # print('milliseconds (1.e-3)')
|
|
312
|
+
elif htu==' s':
|
|
313
|
+
fac = 1.0 # print('second')
|
|
314
|
+
elif htu==' h':
|
|
315
|
+
fac = hours # print('hours')
|
|
316
|
+
elif htu==' d':
|
|
317
|
+
fac = days # print('day')
|
|
318
|
+
elif htu==' m':
|
|
319
|
+
fac = months # print('month')
|
|
320
|
+
elif htu==' y':
|
|
321
|
+
fac = years # print('year')
|
|
322
|
+
elif htu=='ky':
|
|
323
|
+
fac = 1e3 * years # print('Kiloyears (1e3)')
|
|
324
|
+
elif htu=='My':
|
|
325
|
+
fac = 1e6 * years # print('Megayears (1e6)')
|
|
326
|
+
elif htu=='Gy':
|
|
327
|
+
fac = 1e9 * years # print('Gigayears (1e9)')
|
|
328
|
+
elif htu=='Ty':
|
|
329
|
+
fac = 1e12 * years # print('Terayears (1e12)')
|
|
330
|
+
elif htu=='Py':
|
|
331
|
+
fac = 1e15 * years # print('Petayears (1e15)')
|
|
332
|
+
elif htu=='Ey':
|
|
333
|
+
fac = 1e18 * years # print('Exayears (1e18)')
|
|
334
|
+
elif htu=='Zy':
|
|
335
|
+
fac = 1e21 * years # print('Zettayears (1e21)')
|
|
336
|
+
elif htu=='Yy':
|
|
337
|
+
fac = 1e24 * years # print('Yottayears (1e24)')
|
|
338
|
+
else:
|
|
339
|
+
print('unknown lifetime unit')
|
|
340
|
+
print('ht:',ht,' unit:',htu)
|
|
341
|
+
print('Exit()')
|
|
342
|
+
exit()
|
|
343
|
+
hts = ht * fac
|
|
344
|
+
year=line[cyear:cyear+4]
|
|
345
|
+
if nuda.env.verb: print(' year:',year)
|
|
346
|
+
# check if there is '#' in the string or if the value is absent:
|
|
347
|
+
#if ' '*11 in line[18:31]: continue
|
|
348
|
+
#print(" test:",line[cbe:cdbe],".",(cdbe-cbe))
|
|
349
|
+
#if '#' in line[cbe:cdbe]:
|
|
350
|
+
# check that there is a data for the measured mass:
|
|
351
|
+
if line[cbe:cdbe] == ' '*(cdbe-cbe): continue
|
|
352
|
+
if '#' in line[cbe:cdbe]:
|
|
353
|
+
ME=float(line[cbe:cdbe].replace('#',''))
|
|
354
|
+
ME_err=float(line[cdbe:cdbee].replace('#',''))
|
|
355
|
+
interp = 'y'
|
|
356
|
+
year=int(version)+10 # define a fake year which is after the table release
|
|
357
|
+
else:
|
|
358
|
+
ME=float(line[cbe:cdbe])
|
|
359
|
+
ME_err=float(line[cdbe:cdbee])
|
|
360
|
+
interp = 'n'
|
|
361
|
+
#print('type(year):',type(year))
|
|
362
|
+
#print('len(year):',len(year))
|
|
363
|
+
#nucYear=int(year)
|
|
364
|
+
if len(year) == 4 and year != ' '*4:
|
|
365
|
+
year=int(year)
|
|
366
|
+
else:
|
|
367
|
+
year=int(version)+10
|
|
368
|
+
#if year != ' '*4: nucYear=int(year)
|
|
369
|
+
if (nuda.env.verb): print(" ME:",ME,' +- ',ME_err,' keV')
|
|
370
|
+
# date could be missing even if the mass measurement exists
|
|
371
|
+
#if ( len(year) == 4 and year == ' '*4 and nucInterp == 'n' ): continue # to be checked
|
|
372
|
+
#
|
|
373
|
+
# Additional options: analyze the year of discovery
|
|
374
|
+
#
|
|
375
|
+
#print(nucA,nucZ,nucName)
|
|
376
|
+
#if ( len(yearStr) == 4 and yearStr == ' '*4 and nucInterp == 'n' ):
|
|
377
|
+
# print('issue with:',nucA,nucZ,nucName)
|
|
378
|
+
#yearInt = 0
|
|
379
|
+
#yearInt=int(yearStr)
|
|
380
|
+
#
|
|
381
|
+
# When all tests passed sucessfully: the new line can be stored
|
|
382
|
+
#
|
|
383
|
+
#yearFull.append(yearInt)
|
|
384
|
+
#yearInd=int((yearInt-yearMin)/10)
|
|
385
|
+
#if (env.verb): print(' year:'+str(yearInt)+',index:'+str(yearInd))
|
|
386
|
+
#
|
|
387
|
+
if year > self.year_max:
|
|
388
|
+
self.year_max = year
|
|
389
|
+
#self.i_max = nbNuc
|
|
390
|
+
if year < self.year_min:
|
|
391
|
+
self.year_min = year
|
|
392
|
+
#self.i_min = nbNuc
|
|
393
|
+
#print('nucYear:',nucYear,self.year_min)
|
|
394
|
+
#
|
|
395
|
+
Mass = AA * CST_AtmMass + ME / 1000.0 # conversion to MeV
|
|
396
|
+
Mass_err = ME_err / 1000.0
|
|
397
|
+
# nucBE = ( nucMass - nucZ * ( CST_mpc2 + CST_mec2 ) - nucN * CST_mnc2 )
|
|
398
|
+
BE = ME / 1000.0 - ZZ * CST_mHc2 - NN * CST_mnc2
|
|
399
|
+
BE_err = math.sqrt( Mass_err**2 + ZZ * CST_dmHc2**2 + NN * CST_dmnc2**2 )
|
|
400
|
+
if (nuda.env.verb): print(" BE:",BE,' +- ',BE_err)
|
|
401
|
+
# add nucleus to the table
|
|
402
|
+
self.nucA.append( AA )
|
|
403
|
+
self.nucZ.append( ZZ )
|
|
404
|
+
if ZZ > self.Zmax: self.Zmax = ZZ
|
|
405
|
+
self.nucN.append( NN )
|
|
406
|
+
self.nucSymb.append( symb )
|
|
407
|
+
self.flagI.append( flagI )
|
|
408
|
+
self.flagInterp.append( interp )
|
|
409
|
+
self.nucStbl.append( stbl )
|
|
410
|
+
self.nucHT.append( hts )
|
|
411
|
+
self.nucYear.append( year )
|
|
412
|
+
self.nucBE.append( BE )
|
|
413
|
+
self.nucBE_err.append( BE_err )
|
|
414
|
+
nbNuc = nbNuc + 1
|
|
415
|
+
if self.year_max > int(version): self.year_max = int(version)
|
|
416
|
+
#: Attribute with the number of line in the file.
|
|
417
|
+
self.nbLine = nbLine
|
|
418
|
+
#: Attribute with the number of nuclei read in the file.
|
|
419
|
+
self.nbNuc = nbNuc
|
|
420
|
+
print('Oldest discovery is from: ',self.year_min)
|
|
421
|
+
print('Most recent discovery is from: ',self.year_max)
|
|
422
|
+
#
|
|
423
|
+
# clasify per year of discovery discovered
|
|
424
|
+
#
|
|
425
|
+
dist_nyear = 20
|
|
426
|
+
#mas = nuda.SetupMasses( table = table, version = '2020' )
|
|
427
|
+
#: attribute distribution of years
|
|
428
|
+
self.dist_year = int(self.year_min/10) + np.arange(dist_nyear)
|
|
429
|
+
#: attribute number of nuclei discovered per year
|
|
430
|
+
self.dist_nbNuc = np.zeros( (dist_nyear) )
|
|
431
|
+
for i in range(self.nbNuc):
|
|
432
|
+
i_year = int( (self.nucYear[i]-self.year_min)/10 )
|
|
433
|
+
self.dist_nbNuc[i_year] += 1
|
|
434
|
+
print( 'dist:',self.dist_nbNuc )
|
|
435
|
+
#
|
|
436
|
+
if nuda.env.verb: print("Exit SetupNucBEExp()")
|
|
437
|
+
#
|
|
438
|
+
#
|
|
439
|
+
def print_outputs( self ):
|
|
440
|
+
"""
|
|
441
|
+
Method which print outputs on terminal's screen.
|
|
442
|
+
"""
|
|
443
|
+
print("")
|
|
444
|
+
#
|
|
445
|
+
if nuda.env.verb: print("Enter print_outputs()")
|
|
446
|
+
#
|
|
447
|
+
print("- Print output:")
|
|
448
|
+
print(" table: ",self.table)
|
|
449
|
+
print(" version:",self.version)
|
|
450
|
+
print(" ref: ",self.ref)
|
|
451
|
+
print(" label: ",self.label)
|
|
452
|
+
print(" note: ",self.note)
|
|
453
|
+
if any(self.nucZ): print(f" Z: {self.nucZ[0:-1:10]}")
|
|
454
|
+
if any(self.nucA): print(f" A: {self.nucA[0:-1:10]}")
|
|
455
|
+
#
|
|
456
|
+
if nuda.env.verb: print("Exit print_outputs()")
|
|
457
|
+
#
|
|
458
|
+
def select(self, Amin = 0, Zmin = 0, interp = 'n', state= 'gs', nucleus = 'unstable', every = 1):
|
|
459
|
+
"""
|
|
460
|
+
Method which select some nuclei from the table according to some criteria.
|
|
461
|
+
|
|
462
|
+
:param interp: If interp='n', exclude the interpolated nuclei from the selected ones. \
|
|
463
|
+
If interp='y' consider them in the table, in addition to the others.
|
|
464
|
+
:type interp: str, optional. Default = 'n'.
|
|
465
|
+
:param state: select the kind of state. If state='gs', select nuclei measured in their ground state.
|
|
466
|
+
:type state: str, optional. Default 'gs'.
|
|
467
|
+
:param nucleus: 'unstable'.
|
|
468
|
+
:type nucleus: str, optional. Default 'unstable'. \
|
|
469
|
+
It can be set to 'stable', 'longlive' (with LT>10 min), 'shortlive' (with 10min>LT>1 ns), \
|
|
470
|
+
'veryshortlive' (with LT< 1ns)
|
|
471
|
+
:param every: consider only 1 out of `every` nuclei in the table.
|
|
472
|
+
:type every: int, optional. Default every = 1.
|
|
473
|
+
|
|
474
|
+
**Attributes:**
|
|
475
|
+
"""
|
|
476
|
+
|
|
477
|
+
#
|
|
478
|
+
if nuda.env.verb: print("Enter select()")
|
|
479
|
+
#
|
|
480
|
+
if interp.lower() not in [ 'y', 'n' ]:
|
|
481
|
+
print('Interp ',interp,' is not "y" or "n".')
|
|
482
|
+
print('-- Exit the code --')
|
|
483
|
+
exit()
|
|
484
|
+
self.nucInterp = interp
|
|
485
|
+
if nuda.env.verb: print("interp:",interp)
|
|
486
|
+
#
|
|
487
|
+
if state.lower() not in [ 'gs' ]:
|
|
488
|
+
print('State ',state,' is not "gs".')
|
|
489
|
+
print('-- Exit the code --')
|
|
490
|
+
exit()
|
|
491
|
+
self.state = state
|
|
492
|
+
if nuda.env.verb: print("state:",state)
|
|
493
|
+
#
|
|
494
|
+
nuclei = [ 'stable', 'unstable', 'longlive', 'shortlive', 'veryshortlive' ]
|
|
495
|
+
#
|
|
496
|
+
if nucleus.lower() not in nuclei:
|
|
497
|
+
print('Nucleus ',nucleus,' is not in the list: ',nuclei)
|
|
498
|
+
print('-- Exit the code --')
|
|
499
|
+
exit()
|
|
500
|
+
self.nucleus = nucleus
|
|
501
|
+
if nuda.env.verb: print("nucleus:",nucleus)
|
|
502
|
+
#
|
|
503
|
+
nbNucTot = 0
|
|
504
|
+
nbNucSta = 0
|
|
505
|
+
nbNucSel = 0
|
|
506
|
+
#
|
|
507
|
+
#: Attribute sel_A (mass of the selected nuclei).
|
|
508
|
+
self.sel_nucA = []
|
|
509
|
+
#: Attribute sel_Z (charge of the selected nuclei).
|
|
510
|
+
self.sel_nucZ = []
|
|
511
|
+
#: Attribute sel_symb (symbol of the selected nuclei).
|
|
512
|
+
self.sel_nucSymb = []
|
|
513
|
+
self.sel_nucN = []
|
|
514
|
+
self.sel_flagI = []
|
|
515
|
+
self.sel_flagInterp = []
|
|
516
|
+
self.sel_nucHT = [] # half-time in s
|
|
517
|
+
self.sel_nucYear = []
|
|
518
|
+
self.sel_nucBE = []
|
|
519
|
+
self.sel_nucBE_err = []
|
|
520
|
+
#
|
|
521
|
+
self.sel_Zmax = 0
|
|
522
|
+
#
|
|
523
|
+
for ind in range(self.nbNuc):
|
|
524
|
+
#
|
|
525
|
+
nucA = self.nucA[ind]
|
|
526
|
+
nucZ = self.nucZ[ind]
|
|
527
|
+
nucN = self.nucN[ind]
|
|
528
|
+
flagI = self.flagI[ind]
|
|
529
|
+
nucSymb = self.nucSymb[ind]
|
|
530
|
+
flagInterp = self.flagInterp[ind]
|
|
531
|
+
nucStbl = self.nucStbl[ind]
|
|
532
|
+
nucHT = self.nucHT[ind]
|
|
533
|
+
nucYear = self.nucYear[ind]
|
|
534
|
+
nucBE = self.nucBE[ind]
|
|
535
|
+
nucBE_err = self.nucBE_err[ind]
|
|
536
|
+
#print('select:',ind,nucA,nucZ,nucN,nucSymb)
|
|
537
|
+
# skip nuclei below Amin and Zmin:
|
|
538
|
+
if nucA < Amin or nucZ < Zmin:
|
|
539
|
+
continue
|
|
540
|
+
#
|
|
541
|
+
if nucleus.lower() == 'stable' and nucStbl == 'y':
|
|
542
|
+
pass
|
|
543
|
+
elif nucleus.lower() == 'unstable' and nucStbl == 'n':
|
|
544
|
+
pass
|
|
545
|
+
elif nucleus.lower() == 'longlive' and nucStbl == 'n' and nucHT > HTsl:
|
|
546
|
+
pass
|
|
547
|
+
elif nucleus.lower() == 'shortlive' and nucStbl == 'n' and nucHT < HTsl and nucHT > HTvsl:
|
|
548
|
+
pass
|
|
549
|
+
elif nucleus.lower() == 'veryshortlive' and nucStbl == 'n' and nucHT < HTvsl:
|
|
550
|
+
pass
|
|
551
|
+
else:
|
|
552
|
+
continue
|
|
553
|
+
#
|
|
554
|
+
nbNucTot = nbNucTot + 1
|
|
555
|
+
# skip nucleus if interpolated data
|
|
556
|
+
if flagInterp == 'y':
|
|
557
|
+
continue
|
|
558
|
+
# skip nuclei not in GS
|
|
559
|
+
if state == 'gs' and flagI != 0:
|
|
560
|
+
continue
|
|
561
|
+
nbNucSta = nbNucSta + 1
|
|
562
|
+
# skip nuclei depending on every:
|
|
563
|
+
if nbNucSta % every != 0 :
|
|
564
|
+
continue
|
|
565
|
+
nbNucSel = nbNucSel + 1
|
|
566
|
+
self.sel_nucA.append( nucA )
|
|
567
|
+
self.sel_nucZ.append( nucZ )
|
|
568
|
+
if nucZ > self.sel_Zmax: self.sel_Zmax = nucZ
|
|
569
|
+
self.sel_nucN.append( nucN )
|
|
570
|
+
self.sel_nucSymb.append( nucSymb )
|
|
571
|
+
self.sel_flagI.append( flagI )
|
|
572
|
+
self.sel_flagInterp.append( flagInterp )
|
|
573
|
+
self.sel_nucHT.append( nucHT )
|
|
574
|
+
self.sel_nucYear.append( nucYear )
|
|
575
|
+
self.sel_nucBE.append( nucBE )
|
|
576
|
+
self.sel_nucBE_err.append( nucBE_err )
|
|
577
|
+
self.sel_nbNucTot = nbNucTot
|
|
578
|
+
self.sel_nbNucSta = nbNucSta
|
|
579
|
+
self.sel_nbNucSel = nbNucSel
|
|
580
|
+
print('number of nuclei(Tot):',self.sel_nbNucTot)
|
|
581
|
+
print('number of nuclei(Sta):',self.sel_nbNucSta)
|
|
582
|
+
print('number of nuclei(Sel):',self.sel_nbNucSel)
|
|
583
|
+
#
|
|
584
|
+
if nuda.env.verb: print("Exit select()")
|
|
585
|
+
#
|
|
586
|
+
return self
|
|
587
|
+
#
|
|
588
|
+
def isotopes(self, Zmin = 1, Zmax = 95 ):
|
|
589
|
+
"""
|
|
590
|
+
Method which find the first and last isotopes for each Zmin<Z<Zmax.
|
|
591
|
+
|
|
592
|
+
:param Zmin: Fix the minimum charge for the search of isotopes.
|
|
593
|
+
:type Zmin: int, optional. Default: 1.
|
|
594
|
+
:param Zmax: Fix the maximum charge for the search of isotopes.
|
|
595
|
+
:type Zmax: int, optional. Default: 95.
|
|
596
|
+
|
|
597
|
+
**Attributes:**
|
|
598
|
+
"""
|
|
599
|
+
#
|
|
600
|
+
if nuda.env.verb: print("Enter drip()")
|
|
601
|
+
#
|
|
602
|
+
if Zmin > Zmax:
|
|
603
|
+
print('In isotopes attribute function of setup_be_exp.py:')
|
|
604
|
+
print('Bad definition of Zmin and Zmax')
|
|
605
|
+
print('It is expected that Zmin<=Zmax')
|
|
606
|
+
print('Zmin,Zmax:',Zmin,Zmax)
|
|
607
|
+
print('exit')
|
|
608
|
+
exit()
|
|
609
|
+
#
|
|
610
|
+
Nstable, Zstable = stable_fit( Zmin = Zmin, Zmax = Zmax )
|
|
611
|
+
#
|
|
612
|
+
self.isotopes_Z = []
|
|
613
|
+
self.isotopes_Nmin = []
|
|
614
|
+
self.isotopes_Nmax = []
|
|
615
|
+
#
|
|
616
|
+
for ind,Z in enumerate(Zstable):
|
|
617
|
+
#
|
|
618
|
+
#print('ind,Z, Nstable:',ind,Z,Nstable[ind])
|
|
619
|
+
#
|
|
620
|
+
if Z > Zmax :
|
|
621
|
+
break
|
|
622
|
+
if Z < Zmin :
|
|
623
|
+
continue
|
|
624
|
+
#
|
|
625
|
+
Nmin = Nstable[ind]
|
|
626
|
+
Nmax = Nstable[ind]
|
|
627
|
+
#
|
|
628
|
+
#print('sel_Z:',self.sel_Z)
|
|
629
|
+
#exit()
|
|
630
|
+
for ind2 in range(self.sel_nbNucSel):
|
|
631
|
+
#if self.sel_Z[ind] == Z:
|
|
632
|
+
# print('sel_Z:',self.sel_Z)
|
|
633
|
+
# exit()
|
|
634
|
+
#print('ind:',ind,Z,self.sel_Zmax,self.sel_Z[ind2],Nmin,Nmax)
|
|
635
|
+
#print('sel_N:',self.sel_N[ind2])
|
|
636
|
+
if self.sel_nucZ[ind2] == Z and self.sel_nucN[ind2] < Nmin:
|
|
637
|
+
Nmin = self.sel_nucN[ind2]
|
|
638
|
+
if self.sel_nucZ[ind2] == Z and self.sel_nucN[ind2] > Nmax:
|
|
639
|
+
Nmax = self.sel_nucN[ind2]
|
|
640
|
+
self.isotopes_Z.append( Z )
|
|
641
|
+
self.isotopes_Nmin.append( Nmin )
|
|
642
|
+
self.isotopes_Nmax.append( Nmax )
|
|
643
|
+
#print('drip: Z',self.drip_Z)
|
|
644
|
+
#print('drip: Nmin:',self.drip_Nmin)
|
|
645
|
+
#print('drip: Nmax:',self.drip_Nmax)
|
|
646
|
+
#
|
|
647
|
+
if nuda.env.verb: print("Exit drip()")
|
|
648
|
+
#
|
|
649
|
+
return self
|
|
650
|
+
#
|
|
651
|
+
def select_year(self, year_min=1940, year_max=1960, state= 'gs'):
|
|
652
|
+
"""
|
|
653
|
+
Method which select some nuclei from the table according to the discovery year.
|
|
654
|
+
|
|
655
|
+
:param year_min:
|
|
656
|
+
:type year_min:
|
|
657
|
+
:param year_max:
|
|
658
|
+
:type year_max:
|
|
659
|
+
:param state: select the kind of state. If state='gs', select nuclei measured in their ground state.
|
|
660
|
+
:type state: str, optional. Default 'gs'.
|
|
661
|
+
|
|
662
|
+
**Attributes:**
|
|
663
|
+
"""
|
|
664
|
+
#
|
|
665
|
+
if self.year is None:
|
|
666
|
+
print('There is no year in the experimental mass table')
|
|
667
|
+
print('Table:',self.table)
|
|
668
|
+
print('Version:',self.version)
|
|
669
|
+
print('Exit()')
|
|
670
|
+
exit()
|
|
671
|
+
if year_min > int(self.version) or year_max < yearMin:
|
|
672
|
+
print('year_min or year_max is not well defined')
|
|
673
|
+
print('year_min:',year_min,' >? ',int(self.version))
|
|
674
|
+
print('year_max:',year_max,' <? ',yearMin)
|
|
675
|
+
print('-- Exit the code --')
|
|
676
|
+
exit()
|
|
677
|
+
self.year_min = year_min
|
|
678
|
+
self.year_max = year_max
|
|
679
|
+
#
|
|
680
|
+
if state.lower() not in [ 'gs' ]:
|
|
681
|
+
print('State ',state,' is not "gs".')
|
|
682
|
+
print('-- Exit the code --')
|
|
683
|
+
exit()
|
|
684
|
+
self.state = state
|
|
685
|
+
#
|
|
686
|
+
nbNucTot = 0
|
|
687
|
+
nbNucSta = 0
|
|
688
|
+
nbNucSel = 0
|
|
689
|
+
#
|
|
690
|
+
#: Attribute sel_A (mass of the selected nuclei).
|
|
691
|
+
self.sel_A = []
|
|
692
|
+
#: Attribute sel_Z (charge of the selected nuclei).
|
|
693
|
+
self.sel_Z = []
|
|
694
|
+
#: Attribute sel_symb (symbol of the selected nuclei).
|
|
695
|
+
self.sel_symb = []
|
|
696
|
+
self.sel_N = []
|
|
697
|
+
self.sel_I = []
|
|
698
|
+
self.sel_Interp = []
|
|
699
|
+
self.sel_HT = [] # half-time in s
|
|
700
|
+
self.sel_year = []
|
|
701
|
+
self.sel_BE = []
|
|
702
|
+
self.sel_BE_err = []
|
|
703
|
+
#
|
|
704
|
+
self.sel_Zmax = 0
|
|
705
|
+
for ind in range(self.nbNuc):
|
|
706
|
+
#
|
|
707
|
+
nucA = self.nucA[ind]
|
|
708
|
+
nucZ = self.nucZ[ind]
|
|
709
|
+
nucN = self.nucN[ind]
|
|
710
|
+
nucI = self.flagI[ind]
|
|
711
|
+
nucSymb = self.nucSymb[ind]
|
|
712
|
+
nucInterp = self.flagInterp[ind]
|
|
713
|
+
nucStbl = self.nucStbl[ind]
|
|
714
|
+
nucHT = self.nucHT[ind]
|
|
715
|
+
nucYear = self.nucYear[ind]
|
|
716
|
+
nucBE = self.nucBE[ind]
|
|
717
|
+
nucdBE = self.nucBE_err[ind]
|
|
718
|
+
# skip nuclei out of the year range:
|
|
719
|
+
if nucYear < year_min or nucYear >= year_max:
|
|
720
|
+
continue
|
|
721
|
+
#
|
|
722
|
+
#print('discovery year:',nucYear)
|
|
723
|
+
nbNucTot = nbNucTot + 1
|
|
724
|
+
# skip nucleus if interpolated data
|
|
725
|
+
if flagInterp == 'y':
|
|
726
|
+
continue
|
|
727
|
+
# skip nuclei not in GS
|
|
728
|
+
if state == 'gs' and nucI != 0:
|
|
729
|
+
continue
|
|
730
|
+
nbNucSta = nbNucSta + 1
|
|
731
|
+
nbNucSel = nbNucSel + 1
|
|
732
|
+
self.sel_A.append( nucA )
|
|
733
|
+
self.sel_Z.append( nucZ )
|
|
734
|
+
if nucZ > self.sel_Zmax: self.sel_Zmax = nucZ
|
|
735
|
+
self.sel_N.append( nucN )
|
|
736
|
+
self.sel_symb.append( nucSymb )
|
|
737
|
+
self.sel_I.append( flagI )
|
|
738
|
+
self.sel_Interp.append( flagInterp )
|
|
739
|
+
self.sel_HT.append( nucHT )
|
|
740
|
+
self.sel_year.append( nucYear )
|
|
741
|
+
self.sel_BE.append( nucBE )
|
|
742
|
+
self.sel_BE_err.append( nucBE_err )
|
|
743
|
+
self.sel_nbNucTot = nbNucTot
|
|
744
|
+
self.sel_nbNucSta = nbNucSta
|
|
745
|
+
self.sel_nbNucSel = nbNucSel
|
|
746
|
+
print('number of nuclei(Tot):',self.sel_nbNucTot)
|
|
747
|
+
print('number of nuclei(Sta):',self.sel_nbNucSta)
|
|
748
|
+
print('number of nuclei(Sel):',self.sel_nbNucSel)
|
|
749
|
+
#
|
|
750
|
+
if nuda.env.verb: print("Exit select()")
|
|
751
|
+
#
|
|
752
|
+
return self
|
|
753
|
+
#
|
|
754
|
+
def S2n( self, Zmin = 1, Zmax = 95 ):
|
|
755
|
+
"""
|
|
756
|
+
Compute the two-neutron separation energy (S2n)
|
|
757
|
+
S2n = E(Z,N)-E(Z,N-2)
|
|
758
|
+
"""
|
|
759
|
+
#
|
|
760
|
+
if nuda.env.verb: print("Enter S2n()")
|
|
761
|
+
#
|
|
762
|
+
if Zmin > Zmax:
|
|
763
|
+
print('In S2n attribute function of setup_be_exp.py:')
|
|
764
|
+
print('Bad definition of Zmin and Zmax')
|
|
765
|
+
print('It is expected that Zmin<=Zmax')
|
|
766
|
+
print('Zmin,Zmax:',Zmin,Zmax)
|
|
767
|
+
print('exit')
|
|
768
|
+
exit()
|
|
769
|
+
#
|
|
770
|
+
S2n_Z = []
|
|
771
|
+
S2n_N = []
|
|
772
|
+
S2n = []
|
|
773
|
+
#
|
|
774
|
+
for ind,Z in enumerate(self.nucZ):
|
|
775
|
+
#
|
|
776
|
+
if Z > Zmax :
|
|
777
|
+
continue
|
|
778
|
+
if Z < Zmin :
|
|
779
|
+
continue
|
|
780
|
+
#
|
|
781
|
+
if self.flagI[ind] != 0:
|
|
782
|
+
continue
|
|
783
|
+
if self.flagInterp[ind] == 'y':
|
|
784
|
+
continue
|
|
785
|
+
N = self.nucN[ind]
|
|
786
|
+
#
|
|
787
|
+
#print('For Z,N:',Z,N)
|
|
788
|
+
#
|
|
789
|
+
# search index for Z,N+2
|
|
790
|
+
#
|
|
791
|
+
flag_find = 0
|
|
792
|
+
for ind2,Z2 in enumerate(self.nucZ):
|
|
793
|
+
if Z == Z2 and self.nucN[ind2] == N-2 and self.flagI[ind2] == 0 and self.flagInterp[ind2] == 'n':
|
|
794
|
+
flag_find = 1
|
|
795
|
+
break
|
|
796
|
+
if flag_find == 1:
|
|
797
|
+
N2 = self.nucN[ind2]
|
|
798
|
+
#print('N,N2:',N,N2,'ind,ind2:',ind,ind2)
|
|
799
|
+
S2n_Z.append( self.nucZ[ind] )
|
|
800
|
+
S2n_N.append( self.nucN[ind] )
|
|
801
|
+
S2n.append( self.nucBE[ind2] - self.nucBE[ind] )
|
|
802
|
+
self.S2n_N = np.array( S2n_N, dtype = int )
|
|
803
|
+
self.S2n_Z = np.array( S2n_Z, dtype = int )
|
|
804
|
+
self.S2n = np.array( S2n, dtype = float )
|
|
805
|
+
#print('Z:',self.S2n_Z)
|
|
806
|
+
#print('N:',self.S2n_N)
|
|
807
|
+
#print('S2n:',self.S2n)
|
|
808
|
+
#print('Z:',self.S2n_Z)
|
|
809
|
+
#
|
|
810
|
+
if nuda.env.verb: print("Exit S2n()")
|
|
811
|
+
#
|
|
812
|
+
return self
|
|
813
|
+
#
|
|
814
|
+
def S2p( self, Nmin = 1, Nmax = 95 ):
|
|
815
|
+
"""
|
|
816
|
+
Compute the two-proton separation energy (S2n)
|
|
817
|
+
S2p = E(Z,N)-E(Z-2,N)
|
|
818
|
+
"""
|
|
819
|
+
#
|
|
820
|
+
if nuda.env.verb: print("Enter S2p()")
|
|
821
|
+
#
|
|
822
|
+
if Nmin > Nmax:
|
|
823
|
+
print('In S2p attribute function of setup_be_exp.py:')
|
|
824
|
+
print('Bad definition of Nmin and Nmax')
|
|
825
|
+
print('It is expected that Nmin<=Nmax')
|
|
826
|
+
print('Nmin,Nmax:',Nmin,Nmax)
|
|
827
|
+
print('exit')
|
|
828
|
+
exit()
|
|
829
|
+
#
|
|
830
|
+
S2p_Z = []
|
|
831
|
+
S2p_N = []
|
|
832
|
+
S2p = []
|
|
833
|
+
#
|
|
834
|
+
for ind,N in enumerate(self.nucN):
|
|
835
|
+
#
|
|
836
|
+
if N > Nmax :
|
|
837
|
+
continue
|
|
838
|
+
if N < Nmin :
|
|
839
|
+
continue
|
|
840
|
+
#
|
|
841
|
+
if self.flagI[ind] != 0:
|
|
842
|
+
continue
|
|
843
|
+
if self.flagInterp[ind] == 'y':
|
|
844
|
+
continue
|
|
845
|
+
Z = self.nucZ[ind]
|
|
846
|
+
#
|
|
847
|
+
#print('For Z,N:',Z,N)
|
|
848
|
+
#
|
|
849
|
+
# search index for Z-2,N
|
|
850
|
+
#
|
|
851
|
+
flag_find = 0
|
|
852
|
+
for ind2,N2 in enumerate(self.nucN):
|
|
853
|
+
if N == N2 and self.nucZ[ind2] == Z-2 and self.flagI[ind2] == 0 and self.flagInterp[ind2] == 'n':
|
|
854
|
+
flag_find = 1
|
|
855
|
+
break
|
|
856
|
+
if flag_find == 1:
|
|
857
|
+
Z2 = self.nucZ[ind2]
|
|
858
|
+
#print('N,N2:',N,N2,'ind,ind2:',ind,ind2)
|
|
859
|
+
S2p_Z.append( self.nucZ[ind] )
|
|
860
|
+
S2p_N.append( self.nucN[ind] )
|
|
861
|
+
S2p.append( self.nucBE[ind2] - self.nucBE[ind] )
|
|
862
|
+
self.S2p_N = np.array( S2p_N, dtype = int )
|
|
863
|
+
self.S2p_Z = np.array( S2p_Z, dtype = int )
|
|
864
|
+
self.S2p = np.array( S2p, dtype = float )
|
|
865
|
+
#print('Z:',self.S2n_Z)
|
|
866
|
+
#print('N:',self.S2n_N)
|
|
867
|
+
#print('S2n:',self.S2n)
|
|
868
|
+
#print('Z:',self.S2n_Z)
|
|
869
|
+
#
|
|
870
|
+
if nuda.env.verb: print("Exit S2p()")
|
|
871
|
+
#
|
|
872
|
+
return self
|
|
873
|
+
#
|
|
874
|
+
def D3p_n( self, Zmin = 1, Zmax = 95 ):
|
|
875
|
+
"""
|
|
876
|
+
Compute the three-points odd-even mass staggering (D3p_n)
|
|
877
|
+
D_3p^N = (-)**N * ( 2*E(Z,N)-E(Z,N+1)-E(Z,N-1) ) / 2
|
|
878
|
+
"""
|
|
879
|
+
#
|
|
880
|
+
if nuda.env.verb: print("Enter D3p_n()")
|
|
881
|
+
#
|
|
882
|
+
if Zmin > Zmax:
|
|
883
|
+
print('In D3p_n attribute function of setup_be_exp.py:')
|
|
884
|
+
print('Bad definition of Zmin and Zmax')
|
|
885
|
+
print('It is expected that Zmin<=Zmax')
|
|
886
|
+
print('Zmin,Zmax:',Zmin,Zmax)
|
|
887
|
+
print('exit')
|
|
888
|
+
exit()
|
|
889
|
+
#
|
|
890
|
+
D3p_n_Z_even = []
|
|
891
|
+
D3p_n_Z_odd = []
|
|
892
|
+
D3p_n_N_even = []
|
|
893
|
+
D3p_n_N_odd = []
|
|
894
|
+
D3p_n_even = []
|
|
895
|
+
D3p_n_odd = []
|
|
896
|
+
#
|
|
897
|
+
for ind,Z in enumerate(self.nucZ):
|
|
898
|
+
#
|
|
899
|
+
if Z > Zmax :
|
|
900
|
+
continue
|
|
901
|
+
if Z < Zmin :
|
|
902
|
+
continue
|
|
903
|
+
#
|
|
904
|
+
if self.flagI[ind] != 0:
|
|
905
|
+
continue
|
|
906
|
+
if self.flagInterp[ind] == 'y':
|
|
907
|
+
continue
|
|
908
|
+
#
|
|
909
|
+
N = self.nucN[ind]
|
|
910
|
+
#
|
|
911
|
+
if N % 2 == 0:
|
|
912
|
+
sign = 1.0 #even
|
|
913
|
+
else:
|
|
914
|
+
sign = -1.0 # odd
|
|
915
|
+
#
|
|
916
|
+
#print('For Z,N:',Z,N)
|
|
917
|
+
#
|
|
918
|
+
# search index for Z,N+2
|
|
919
|
+
#
|
|
920
|
+
flag_find1 = 0
|
|
921
|
+
for ind1,Z1 in enumerate(self.nucZ):
|
|
922
|
+
if Z == Z1 and self.nucN[ind1] == N+1 and self.flagI[ind1] == 0 and self.flagInterp[ind1] == 'n':
|
|
923
|
+
flag_find1 = 1
|
|
924
|
+
break
|
|
925
|
+
flag_find2 = 0
|
|
926
|
+
for ind2,Z2 in enumerate(self.nucZ):
|
|
927
|
+
if Z == Z2 and self.nucN[ind2] == N-1 and self.flagI[ind2] == 0 and self.flagInterp[ind2] == 'n':
|
|
928
|
+
flag_find2 = 1
|
|
929
|
+
break
|
|
930
|
+
if flag_find1*flag_find2 == 1:
|
|
931
|
+
if sign > 0: #even
|
|
932
|
+
D3p_n_Z_even.append( self.nucZ[ind] )
|
|
933
|
+
D3p_n_N_even.append( self.nucN[ind] )
|
|
934
|
+
D3p_n_even.append( sign/2.0*( -2*self.nucBE[ind] + self.nucBE[ind1] + self.nucBE[ind2] ) )
|
|
935
|
+
else:
|
|
936
|
+
D3p_n_Z_odd.append( self.nucZ[ind] )
|
|
937
|
+
D3p_n_N_odd.append( self.nucN[ind] )
|
|
938
|
+
D3p_n_odd.append( sign/2.0*( -2*self.nucBE[ind] + self.nucBE[ind1] + self.nucBE[ind2] ) )
|
|
939
|
+
self.D3p_n_N_even = np.array( D3p_n_N_even, dtype = int )
|
|
940
|
+
self.D3p_n_N_odd = np.array( D3p_n_N_odd, dtype = int )
|
|
941
|
+
self.D3p_n_Z_even = np.array( D3p_n_Z_even, dtype = int )
|
|
942
|
+
self.D3p_n_Z_odd = np.array( D3p_n_Z_odd, dtype = int )
|
|
943
|
+
self.D3p_n_even = np.array( D3p_n_even, dtype = float )
|
|
944
|
+
self.D3p_n_odd = np.array( D3p_n_odd, dtype = float )
|
|
945
|
+
#
|
|
946
|
+
if nuda.env.verb: print("Exit D3p_n()")
|
|
947
|
+
#
|
|
948
|
+
return self
|
|
949
|
+
#
|
|
950
|
+
#
|
|
951
|
+
def D3p_p( self, Nmin = 1, Nmax = 95 ):
|
|
952
|
+
"""
|
|
953
|
+
Compute the three-points odd-even mass staggering (D3p_p)
|
|
954
|
+
D_3p^P = (-)**Z * ( 2*E(Z,N)-E(Z+1,N)-E(Z-1,N) ) / 2
|
|
955
|
+
"""
|
|
956
|
+
#
|
|
957
|
+
if nuda.env.verb: print("Enter D3p_p()")
|
|
958
|
+
#
|
|
959
|
+
if Nmin > Nmax:
|
|
960
|
+
print('In D3p_p attribute function of setup_be_exp.py:')
|
|
961
|
+
print('Bad definition of Nmin and Nmax')
|
|
962
|
+
print('It is expected that Nmin<=Nmax')
|
|
963
|
+
print('Nmin,Nmax:',Nmin,Nmax)
|
|
964
|
+
print('exit')
|
|
965
|
+
exit()
|
|
966
|
+
#
|
|
967
|
+
D3p_p_Z_even = []
|
|
968
|
+
D3p_p_Z_odd = []
|
|
969
|
+
D3p_p_N_even = []
|
|
970
|
+
D3p_p_N_odd = []
|
|
971
|
+
D3p_p_even = []
|
|
972
|
+
D3p_p_odd = []
|
|
973
|
+
#
|
|
974
|
+
for ind,N in enumerate(self.nucN):
|
|
975
|
+
#
|
|
976
|
+
if N > Nmax :
|
|
977
|
+
continue
|
|
978
|
+
if N < Nmin :
|
|
979
|
+
continue
|
|
980
|
+
#
|
|
981
|
+
if self.flagI[ind] != 0:
|
|
982
|
+
continue
|
|
983
|
+
if self.flagInterp[ind] == 'y':
|
|
984
|
+
continue
|
|
985
|
+
#
|
|
986
|
+
Z = self.nucZ[ind]
|
|
987
|
+
#
|
|
988
|
+
if Z % 2 == 0:
|
|
989
|
+
sign = 1.0 #even
|
|
990
|
+
else:
|
|
991
|
+
sign = -1.0 # odd
|
|
992
|
+
#
|
|
993
|
+
#print('For Z,N:',Z,N)
|
|
994
|
+
#
|
|
995
|
+
# search index for Z,N+2
|
|
996
|
+
#
|
|
997
|
+
flag_find1 = 0
|
|
998
|
+
for ind1,N1 in enumerate(self.nucN):
|
|
999
|
+
if N == N1 and self.nucZ[ind1] == Z+1 and self.flagI[ind1] == 0 and self.flagInterp[ind1] == 'n':
|
|
1000
|
+
flag_find1 = 1
|
|
1001
|
+
break
|
|
1002
|
+
flag_find2 = 0
|
|
1003
|
+
for ind2,N2 in enumerate(self.nucN):
|
|
1004
|
+
if N == N2 and self.nucZ[ind2] == Z-1 and self.flagI[ind2] == 0 and self.flagInterp[ind2] == 'n':
|
|
1005
|
+
flag_find2 = 1
|
|
1006
|
+
break
|
|
1007
|
+
if flag_find1*flag_find2 == 1:
|
|
1008
|
+
if sign > 0: #even
|
|
1009
|
+
D3p_p_Z_even.append( self.nucZ[ind] )
|
|
1010
|
+
D3p_p_N_even.append( self.nucN[ind] )
|
|
1011
|
+
D3p_p_even.append( sign/2.0*( -2*self.nucBE[ind] + self.nucBE[ind1] + self.nucBE[ind2] ) )
|
|
1012
|
+
else:
|
|
1013
|
+
D3p_p_Z_odd.append( self.nucZ[ind] )
|
|
1014
|
+
D3p_p_N_odd.append( self.nucN[ind] )
|
|
1015
|
+
D3p_p_odd.append( sign/2.0*( -2*self.nucBE[ind] + self.nucBE[ind1] + self.nucBE[ind2] ) )
|
|
1016
|
+
self.D3p_p_N_even = np.array( D3p_p_N_even, dtype = int )
|
|
1017
|
+
self.D3p_p_N_odd = np.array( D3p_p_N_odd, dtype = int )
|
|
1018
|
+
self.D3p_p_Z_even = np.array( D3p_p_Z_even, dtype = int )
|
|
1019
|
+
self.D3p_p_Z_odd = np.array( D3p_p_Z_odd, dtype = int )
|
|
1020
|
+
self.D3p_p_even = np.array( D3p_p_even, dtype = float )
|
|
1021
|
+
self.D3p_p_odd = np.array( D3p_p_odd, dtype = float )
|
|
1022
|
+
#
|
|
1023
|
+
if nuda.env.verb: print("Exit D3p_p()")
|
|
1024
|
+
#
|
|
1025
|
+
return self
|
|
1026
|
+
#
|