nucleardatapy 0.2.1__py3-none-any.whl → 1.0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. nucleardatapy/__init__.py +3 -1
  2. nucleardatapy/astro/setup_gw.py +18 -18
  3. nucleardatapy/astro/setup_mr.py +123 -33
  4. nucleardatapy/astro/setup_mup.py +10 -10
  5. nucleardatapy/corr/setup_EsymDen.py +0 -5
  6. nucleardatapy/corr/setup_EsymLsym.py +50 -17
  7. nucleardatapy/corr/setup_KsatQsat.py +170 -69
  8. nucleardatapy/create_folder.py +2 -2
  9. nucleardatapy/crust/setup_crust.py +364 -126
  10. nucleardatapy/data/astro/HESS/J1731-347.dat +4 -0
  11. nucleardatapy/data/astro/NICER/J0030+0451.dat +6 -6
  12. nucleardatapy/data/astro/NICER/J0437-4715.dat +4 -3
  13. nucleardatapy/data/astro/NICER/J0614-3329.dat +4 -0
  14. nucleardatapy/data/astro/NICER/J0740+6620.dat +5 -4
  15. nucleardatapy/data/hnuclei/1991-2L-Yamamoto.csv +6 -0
  16. nucleardatapy/data/hnuclei/2013-2L-Ahn.csv +1 -1
  17. nucleardatapy/data/hnuclei/2019-2L-Ekawa.csv +7 -0
  18. nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-Av18-E2A-NM.dat +8 -8
  19. nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-414-E2A.dat +21 -0
  20. nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-414-TD.dat +22 -0
  21. nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-450-E2A.dat +20 -0
  22. nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-450-TD.dat +22 -0
  23. nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-500-E2A.dat +23 -0
  24. nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-500-TD.dat +22 -0
  25. nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-414-E2A.dat +15 -0
  26. nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-414-TD.dat +21 -0
  27. nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-450-E2A.dat +15 -0
  28. nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-450-TD.dat +21 -0
  29. nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-500-E2A.dat +20 -0
  30. nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-500-TD.dat +20 -0
  31. nucleardatapy/data/matter/micro/2024-ABI-NM-DeltaNNLO450.dat +28 -0
  32. nucleardatapy/data/matter/micro/2024-ABI-NM-DeltaNNLO500.dat +28 -0
  33. nucleardatapy/data/matter/micro/2024-ABI-NM-DeltaNNLOgo394.dat +28 -0
  34. nucleardatapy/data/matter/micro/2024-ABI-NM-DeltaNNLOgo450.dat +28 -0
  35. nucleardatapy/data/matter/micro/2024-ABI-NM-NNLOsat.dat +28 -0
  36. nucleardatapy/data/matter/micro/2024-ABI-SM-DeltaNNLO450.dat +28 -0
  37. nucleardatapy/data/matter/micro/2024-ABI-SM-DeltaNNLO500.dat +28 -0
  38. nucleardatapy/data/matter/micro/2024-ABI-SM-DeltaNNLOgo394.dat +28 -0
  39. nucleardatapy/data/matter/micro/2024-ABI-SM-DeltaNNLOgo450.dat +28 -0
  40. nucleardatapy/data/matter/micro/2024-ABI-SM-NNLOsat.dat +28 -0
  41. nucleardatapy/data/matter/nep/NEPESkyrme.dat +2 -3
  42. nucleardatapy/data/matter/nep/NEPGSkyrme.dat +7 -0
  43. nucleardatapy/data/matter/nep/NEPSkyrme.dat +4 -2
  44. nucleardatapy/data/matter/nep/NEPxEFT.dat +8 -0
  45. nucleardatapy/data/matter/nep/best67DDSkyrme.dat +28 -0
  46. nucleardatapy/data/matter/nep/best90DDSkyrme.dat +46 -0
  47. nucleardatapy/data/matter/nep/best95DDSkyrme.dat +54 -0
  48. nucleardatapy/data/matter/pheno/ESkyrme/BSk31-NM.dat +996 -996
  49. nucleardatapy/data/matter/pheno/ESkyrme/BSk31-SM.dat +991 -991
  50. nucleardatapy/data/matter/pheno/ESkyrme/BSkG4-NM.dat +1002 -0
  51. nucleardatapy/data/matter/pheno/ESkyrme/BSkG4-SM.dat +1002 -0
  52. nucleardatapy/data/matter/pheno/Skyrme/BSkG1-NM.dat +102 -0
  53. nucleardatapy/data/matter/pheno/Skyrme/BSkG1-SM.dat +102 -0
  54. nucleardatapy/data/matter/pheno/Skyrme/BSkG2-NM.dat +102 -0
  55. nucleardatapy/data/matter/pheno/Skyrme/BSkG2-SM.dat +102 -0
  56. nucleardatapy/env.py +1 -1
  57. nucleardatapy/eos/__init__.py +4 -3
  58. nucleardatapy/eos/setupCC.py +429 -0
  59. nucleardatapy/eos/setup_am.py +39 -14
  60. nucleardatapy/eos/setup_am_Beq.py +40 -15
  61. nucleardatapy/eos/setup_am_Leq.py +40 -15
  62. nucleardatapy/fig/__init__.py +24 -15
  63. nucleardatapy/fig/astro_setupGW_fig.py +9 -7
  64. nucleardatapy/fig/astro_setupMR_fig.py +26 -18
  65. nucleardatapy/fig/astro_setupMasses_fig.py +8 -6
  66. nucleardatapy/fig/astro_setupMtov_fig.py +10 -6
  67. nucleardatapy/fig/astro_setupMup_fig.py +9 -7
  68. nucleardatapy/fig/corr_setupEsymDen_fig.py +22 -9
  69. nucleardatapy/fig/corr_setupEsymLsym_fig.py +25 -8
  70. nucleardatapy/fig/corr_setupKsatQsat_fig.py +23 -17
  71. nucleardatapy/fig/crust_setupCrust_fig.py +11 -9
  72. nucleardatapy/fig/eos_setupAMBeq_fig.py +641 -156
  73. nucleardatapy/fig/eos_setupAMLeq_fig.py +53 -50
  74. nucleardatapy/fig/eos_setupAM_asy_lep_fig.py +373 -0
  75. nucleardatapy/fig/eos_setupAM_asy_nuc_fig.py +346 -0
  76. nucleardatapy/fig/eos_setupAM_asy_tot_fig.py +352 -0
  77. nucleardatapy/fig/eos_setupAM_fig.py +519 -0
  78. nucleardatapy/fig/eos_setupCC_fig.py +270 -0
  79. nucleardatapy/fig/hnuc_setupChart_fig.py +19 -16
  80. nucleardatapy/fig/hnuc_setupRE1LExp_fig.py +15 -5
  81. nucleardatapy/fig/matter_all_fig.py +971 -0
  82. nucleardatapy/fig/matter_setupCheck_fig.py +106 -0
  83. nucleardatapy/fig/matter_setupFFGLep_fig.py +74 -0
  84. nucleardatapy/fig/matter_setupFFGNuc_fig.py +286 -115
  85. nucleardatapy/fig/matter_setupHIC_fig.py +107 -67
  86. nucleardatapy/fig/matter_setupMicroEsym_fig.py +259 -73
  87. nucleardatapy/fig/matter_setupMicro_LP_fig.py +185 -82
  88. nucleardatapy/fig/matter_setupMicro_band_fig.py +126 -53
  89. nucleardatapy/fig/matter_setupMicro_effmass_fig.py +253 -77
  90. nucleardatapy/fig/matter_setupMicro_err_NM_fig.py +45 -20
  91. nucleardatapy/fig/matter_setupMicro_fig.py +317 -77
  92. nucleardatapy/fig/matter_setupMicro_gap_fig.py +237 -100
  93. nucleardatapy/fig/matter_setupNEPStats_fig.py +106 -0
  94. nucleardatapy/fig/matter_setupPhenoEsym_fig.py +204 -65
  95. nucleardatapy/fig/matter_setupPheno_fig.py +395 -93
  96. nucleardatapy/fig/nuc_setupBEExp_chart_fig.py +93 -73
  97. nucleardatapy/fig/nuc_setupBEExp_fig.py +97 -87
  98. nucleardatapy/fig/nuc_setupBETheo_fig.py +114 -81
  99. nucleardatapy/fig/nuc_setupISGMRExp_fig.py +12 -15
  100. nucleardatapy/fig/nuc_setupRchExp_fig.py +14 -22
  101. nucleardatapy/fig/nuc_setupRchTheo_fig.py +37 -40
  102. nucleardatapy/fig/nuc_setupRnpExp_fig.py +86 -106
  103. nucleardatapy/fig/nuc_setupRnpTheo_fig.py +105 -94
  104. nucleardatapy/hello.py +6 -0
  105. nucleardatapy/hnuc/setup_re1L_exp.py +6 -6
  106. nucleardatapy/hnuc/setup_re1Xi_exp.py +5 -5
  107. nucleardatapy/hnuc/setup_re2L_exp.py +36 -13
  108. nucleardatapy/matter/__init__.py +14 -14
  109. nucleardatapy/matter/setup_check.py +6 -6
  110. nucleardatapy/matter/setup_ffg.py +66 -39
  111. nucleardatapy/matter/setup_hic.py +91 -74
  112. nucleardatapy/matter/setup_micro.py +2033 -1007
  113. nucleardatapy/matter/setup_micro_band.py +6 -6
  114. nucleardatapy/matter/setup_micro_esym.py +56 -54
  115. nucleardatapy/matter/setup_micro_gap.py +24 -17
  116. nucleardatapy/matter/setup_micro_lp.py +2 -2
  117. nucleardatapy/matter/setup_nep.py +175 -92
  118. nucleardatapy/matter/{setup_nep_model_dist.py → setup_nep_stat_model.py} +13 -8
  119. nucleardatapy/matter/{setup_nep_dist.py → setup_nep_stat_models.py} +12 -8
  120. nucleardatapy/matter/setup_pheno.py +129 -49
  121. nucleardatapy/matter/setup_pheno_esym.py +22 -19
  122. nucleardatapy/nuc/setup_be_exp.py +306 -292
  123. nucleardatapy/nuc/setup_be_theo.py +288 -105
  124. nucleardatapy/nuc/setup_isgmr_exp.py +4 -4
  125. nucleardatapy/nuc/setup_rnp_exp.py +1 -0
  126. nucleardatapy/nuc/setup_rnp_theo.py +2 -1
  127. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.1.dist-info}/METADATA +48 -16
  128. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.1.dist-info}/RECORD +157 -124
  129. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.1.dist-info}/WHEEL +1 -1
  130. tests/test_corr_setupKsatQsat.py +3 -1
  131. tests/test_matter_setupMicro.py +37 -10
  132. nucleardatapy/data/matter/pheno/ESkyrme/BSkG1-NM.dat +0 -1002
  133. nucleardatapy/data/matter/pheno/ESkyrme/BSkG1-SM.dat +0 -1002
  134. nucleardatapy/data/matter/pheno/ESkyrme/BSkG2-NM.dat +0 -1002
  135. nucleardatapy/data/matter/pheno/ESkyrme/BSkG2-SM.dat +0 -1002
  136. nucleardatapy/fig/eos_setupAM_e_asy_lep_fig.py +0 -125
  137. nucleardatapy/fig/eos_setupAM_e_asy_nuc_fig.py +0 -115
  138. nucleardatapy/fig/eos_setupAM_e_asy_tot_fig.py +0 -117
  139. nucleardatapy/fig/eos_setupAM_e_fig.py +0 -173
  140. nucleardatapy/fig/matter_ENM_fig.py +0 -128
  141. nucleardatapy/fig/matter_ESM_fig.py +0 -140
  142. nucleardatapy/fig/matter_Esym_fig.py +0 -134
  143. nucleardatapy/fig/matter_cs2_fig.py +0 -83
  144. nucleardatapy/fig/matter_preNM_fig.py +0 -146
  145. nucleardatapy/fig/matter_preSM_fig.py +0 -144
  146. nucleardatapy/fig/matter_setupNEPModelDist_fig.py +0 -68
  147. /nucleardatapy/data/LandauParameters/micro/{2006-IBHF-NM-AV18.dat → 2006-EBHF-NM-AV18.dat} +0 -0
  148. /nucleardatapy/data/LandauParameters/micro/{2006-IBHF-SM-AV18.dat → 2006-EBHF-SM-AV18.dat} +0 -0
  149. /nucleardatapy/data/crust/{2022-crustGMRS-BSK14.dat → 2022-GMRS-BSK14.dat} +0 -0
  150. /nucleardatapy/data/crust/{2022-crustGMRS-BSK16.dat → 2022-GMRS-BSK16.dat} +0 -0
  151. /nucleardatapy/data/crust/{2022-crustGMRS-DHSL59.dat → 2022-GMRS-DHSL59.dat} +0 -0
  152. /nucleardatapy/data/crust/{2022-crustGMRS-DHSL69.dat → 2022-GMRS-DHSL69.dat} +0 -0
  153. /nucleardatapy/data/crust/{2022-crustGMRS-F0.dat → 2022-GMRS-F0.dat} +0 -0
  154. /nucleardatapy/data/crust/{2022-crustGMRS-H1.dat → 2022-GMRS-H1.dat} +0 -0
  155. /nucleardatapy/data/crust/{2022-crustGMRS-H2.dat → 2022-GMRS-H2.dat} +0 -0
  156. /nucleardatapy/data/crust/{2022-crustGMRS-H3.dat → 2022-GMRS-H3.dat} +0 -0
  157. /nucleardatapy/data/crust/{2022-crustGMRS-H4.dat → 2022-GMRS-H4.dat} +0 -0
  158. /nucleardatapy/data/crust/{2022-crustGMRS-H5.dat → 2022-GMRS-H5.dat} +0 -0
  159. /nucleardatapy/data/crust/{2022-crustGMRS-H7.dat → 2022-GMRS-H7.dat} +0 -0
  160. /nucleardatapy/data/crust/{2022-crustGMRS-LNS5.dat → 2022-GMRS-LNS5.dat} +0 -0
  161. /nucleardatapy/data/crust/{2022-crustGMRS-RATP.dat → 2022-GMRS-RATP.dat} +0 -0
  162. /nucleardatapy/data/crust/{2022-crustGMRS-SGII.dat → 2022-GMRS-SGII.dat} +0 -0
  163. /nucleardatapy/data/crust/{2022-crustGMRS-SLY5.dat → 2022-GMRS-SLY5.dat} +0 -0
  164. /nucleardatapy/data/matter/micro/{2013-QMC-NM.dat → 2013-MBPT-NM.dat} +0 -0
  165. /nucleardatapy/data/{NeutronSkin/ddrhNskin-208Pb.dat → rnp/ddrhrnp-208Pb.dat} +0 -0
  166. /nucleardatapy/data/{NeutronSkin/ddrhNskin-48Ca.dat → rnp/ddrhrnp-48Ca.dat} +0 -0
  167. /nucleardatapy/data/{NeutronSkin/nlrhNskin-208Pb.dat → rnp/nlrhrnp-208Pb.dat} +0 -0
  168. /nucleardatapy/data/{NeutronSkin/nlrhNskin-48Ca.dat → rnp/nlrhrnp-48Ca.dat} +0 -0
  169. /nucleardatapy/data/{NeutronSkin/skyrmeNskin-208Pb.dat → rnp/skyrmernp-208Pb.dat} +0 -0
  170. /nucleardatapy/data/{NeutronSkin/skyrmeNskin-48Ca.dat → rnp/skyrmernp-48Ca.dat} +0 -0
  171. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.1.dist-info}/licenses/LICENSE +0 -0
  172. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.1.dist-info}/top_level.txt +0 -0
@@ -5,22 +5,23 @@ import numpy as np # 1.15.0
5
5
 
6
6
  import nucleardatapy as nuda
7
7
 
8
- def delta_emp( A, Z, formula ):
9
- if formula == 'classic':
10
- return 12.0 / A**0.5
11
- elif formula == 'Vogel':
12
- return ( 7.2 - 44.0 * ( 1.0 - 2.0 * Z / A )**2 ) / A**0.3333
13
- else:
14
- print('setup_be_theo: formula is badly defined ',formula)
15
- print('setup_be_theo: exit')
16
- exit()
8
+ def delta_emp( N, Z, formula ):
9
+ A = N + Z
10
+ if formula == 'classic':
11
+ return 12.0 / A**0.5
12
+ elif formula == 'Vogel':
13
+ return ( 7.2 - 44.0 * ( 1.0 - 2.0 * Z / A )**2 ) / A**0.3333
14
+ else:
15
+ print('setup_be_theo: formula is badly defined ',formula)
16
+ print('setup_be_theo: exit')
17
+ exit()
17
18
 
18
19
  def be_theo_tables():
19
20
  """
20
21
  Return a list of the tables available in this toolkit for the masses
21
22
  predicted by theoretical approaches and print them all on the prompt.
22
23
  These tables are the following ones: \
23
- [ '1988-MJ', '1995-DZ', '1995-ETFSI', '1995-FRDM', \
24
+ [ '1988-GK', '1988-MJ', '1995-DZ', '1995-ETFSI', '1995-FRDM', \
24
25
  '2005-KTUY', '2007-HFB14', '2010-WS*', '2010-HFB21', '2011-WS3', '2013-HFB22', \
25
26
  '2013-HFB23', '2013-HFB24', '2013-HFB25', '2013-HFB26', '2021-BSkG1', \
26
27
  '2022-BSkG2', '2023-BSkG3', '2025-BSkG4' ]
@@ -31,7 +32,7 @@ def be_theo_tables():
31
32
  #
32
33
  if nuda.env.verb: print("\nEnter be_theo_tables()")
33
34
  #
34
- tables = [ '1988-MJ', '1995-DZ', '1995-ETFSI', '1995-FRDM', \
35
+ tables = [ '1988-GK', '1988-MJ', '1995-DZ', '1995-ETFSI', '1995-FRDM', \
35
36
  '2005-KTUY', '2007-HFB14', '2010-WS*', '2010-HFB21','2011-WS3', '2013-HFB22', \
36
37
  '2013-HFB23', '2013-HFB24', '2013-HFB25', '2013-HFB26', '2021-BSkG1', \
37
38
  '2022-BSkG2', '2023-BSkG3', '2025-BSkG4' ]
@@ -62,7 +63,7 @@ class setupBETheo():
62
63
  This choice is defined in the variable `table`.
63
64
 
64
65
  `table` can chosen among the following ones: \
65
- [ '1988-MJ', '1995-DZ', '1995-ETFSI', '1995-FRDM', \
66
+ [ '1988-GK', '1988-MJ', '1995-DZ', '1995-ETFSI', '1995-FRDM', \
66
67
  '2005-KTUY', '2007-HFB14', '2010-WS*', '2010-HFB21','2011-WS3', '2013-HFB26', '2021-BSkG1', \
67
68
  '2022-BSkG2', '2023-BSkG3', '2025-BSkG4' ]
68
69
 
@@ -488,6 +489,7 @@ class setupBETheo():
488
489
  self.nucBE2A = self.nucBE / self.nucA
489
490
  self.Zmax = int( max( self.nucZ ) )
490
491
  #
492
+ self.nucI = ( self.nucN - self.nucZ ) / self.nucA
491
493
  #
492
494
  if nuda.env.verb: print("Exit setupBETheo()")
493
495
  #
@@ -511,118 +513,179 @@ class setupBETheo():
511
513
  #
512
514
  if nuda.env.verb: print("Exit print_outputs()")
513
515
  #
514
- def S2n( self, Zmin = 1, Zmax = 95 ):
516
+ def isotopes(self, Zref = 50 ):
517
+ """
518
+ Method which find the first and last isotopes for Z=Zref.
519
+
520
+ :param Zref: Fix the charge for the search of isotopes.
521
+ :type Zref: int, optional. Default: 50.
522
+
523
+ **Attributes:**
524
+ """
525
+ #
526
+ if nuda.env.verb: print("Enter isotopes()")
527
+ #
528
+ if Zref < 0:
529
+ print('setup_be_exp.py: issue with the function isotopes.')
530
+ print('setup_be_exp.py: Bad definition for Zref')
531
+ print('setup_be_exp.py: It is expected that Zref>0')
532
+ print('setup_be_exp.py: Zref:',Zref)
533
+ print('setup_be_exp.py: exit')
534
+ exit()
535
+ #
536
+ Nstable, Zstable = nuda.nuc.stable_fit_Z( Zmin = Zref, Zmax = Zref )
537
+ #
538
+ nucNmin = Nstable[0]
539
+ nucNmax = Nstable[0]
540
+ #
541
+ for ind,A in enumerate(self.nucA):
542
+ if self.nucZ[ind] == Zref and self.nucN[ind] < nucNmin:
543
+ nucNmin = self.nucN[ind]
544
+ if self.nucZ[ind] == Zref and self.nucN[ind] > nucNmax:
545
+ nucNmax = self.nucN[ind]
546
+ self.itp_nucZ = Zref
547
+ self.itp_nucNmin = nucNmin
548
+ self.itp_nucNmax = nucNmax
549
+ #
550
+ if nuda.env.verb: print("Exit isotopes()")
551
+ #
552
+ return self
553
+ #
554
+ def isotones(self, Nref = 50 ):
555
+ """
556
+ Method which find the first and last isotones for N=Nref.
557
+
558
+ :param Nref: Fix the neutron number for the search of isotones.
559
+ :type Nref: int, optional. Default: 50.
560
+
561
+ **Attributes:**
562
+ """
563
+ #
564
+ if nuda.env.verb: print("Enter isotones()")
565
+ #
566
+ if Nref < 0:
567
+ print('setup_be_exp.py: issue with the function isotones.')
568
+ print('setup_be_exp.py: Bad definition for Nref')
569
+ print('setup_be_exp.py: It is expected that Nref>0')
570
+ print('setup_be_exp.py: Nref:',Nref)
571
+ print('setup_be_exp.py: exit')
572
+ exit()
573
+ #
574
+ Nstable, Zstable = nuda.nuc.stable_fit_N( Nmin = Nref, Nmax = Nref )
575
+ #
576
+ nucZmin = Zstable[0]
577
+ nucZmax = Zstable[0]
578
+ #
579
+ for ind,A in enumerate(self.nucA):
580
+ if self.nucN[ind] == Nref and self.nucZ[ind] < nucZmin:
581
+ nucZmin = self.nucZ[ind]
582
+ if self.nucN[ind] == Nref and self.nucZ[ind] > nucZmax:
583
+ nucZmax = self.nucZ[ind]
584
+ self.itn_nucN = Nref
585
+ self.itn_nucZmin = nucZmin
586
+ self.itn_nucZmax = nucZmax
587
+ #
588
+ if nuda.env.verb: print("Exit isotones()")
589
+ #
590
+ return self
591
+ #
592
+ def S2n( self, Zref = 50 ):
515
593
  """
516
594
  Compute the two-neutron separation energy (S2n)
517
- S2n = E(Z,N)-E(Z,N+2)
595
+ S2n = E(Z,N)-E(Z,N-2)
518
596
  """
519
597
  #
520
598
  if nuda.env.verb: print("Enter S2n()")
521
599
  #
522
- if Zmin > Zmax:
600
+ if Zref < 0:
523
601
  print('setup_be_theo: In S2n attribute function of setup_be_theo.py:')
524
- print('setup_be_theo: Bad definition of Zmin and Zmax')
525
- print('setup_be_theo: It is expected that Zmin<=Zmax')
526
- print('setup_be_theo: Zmin,Zmax:',Zmin,Zmax)
602
+ print('setup_be_theo: Bad definition of Zref')
603
+ print('setup_be_theo: It is expected that Zref>=0')
604
+ print('setup_be_theo: Zref:',Zref)
527
605
  print('setup_be_theo: exit')
528
606
  exit()
529
607
  #
530
- S2n_Z = []
531
608
  S2n_N = []
532
- S2n = []
609
+ S2n_E = []
610
+ S2n_Z = []
533
611
  #
534
- for ind,Z in enumerate(self.nucZ):
535
- #
536
- if Z > Zmax :
537
- break
538
- if Z < Zmin :
539
- continue
540
- #
541
- N = self.nucN[ind]
542
- #
543
- #print('For Z,N:',Z,N)
544
- #
545
- # search index for Z,N+2
546
- #
547
- flag_find = 0
548
- for ind2,Z2 in enumerate(self.nucZ):
549
- if Z == Z2 and self.nucN[ind2] == N-2:
550
- flag_find = 1
551
- break
552
- if flag_find == 1:
553
- N2 = self.nucN[ind2]
554
- #print('N,N2:',N,N2,'ind,ind2:',ind,ind2)
555
- S2n_Z.append( self.nucZ[ind] )
556
- S2n_N.append( self.nucN[ind] )
557
- S2n.append( self.nucBE[ind2] - self.nucBE[ind] )
612
+ Nmin=self.itp_nucNmin
613
+ Nmax=self.itp_nucNmax
614
+ #
615
+ for N in range(Nmin+2,Nmax+1):
616
+ #
617
+ flagN = False; flagNm2 = False;
618
+ #
619
+ for ind,Z in enumerate(self.nucZ):
620
+ #
621
+ if Z == Zref and self.nucN[ind] == N:
622
+ indN = ind
623
+ flagN = True
624
+ if Z == Zref and self.nucN[ind] == N-2:
625
+ indNm2 = ind
626
+ flagNm2 = True
627
+ #
628
+ if flagN and flagNm2:
629
+ S2n_N.append( N )
630
+ S2n_Z.append( Zref )
631
+ S2n_E.append( self.nucBE[indN] - self.nucBE[indNm2] )
558
632
  self.S2n_N = np.array( S2n_N, dtype = int )
559
633
  self.S2n_Z = np.array( S2n_Z, dtype = int )
560
- self.S2n = np.array( S2n, dtype = float )
561
- #print('Z:',self.S2n_Z)
562
- #print('N:',self.S2n_N)
563
- #print('S2n:',self.S2n)
634
+ self.S2n_E = np.array( S2n_E, dtype = float )
564
635
  #
565
636
  if nuda.env.verb: print("Exit S2n()")
566
637
  #
567
638
  return self
568
- #
569
- def S2p( self, Nmin = 1, Nmax = 95 ):
639
+ #
640
+ def S2p( self, Nref = 50 ):
570
641
  """
571
- Compute the two-proton separation energy (S2n)
572
- S2p = E(Z,N)-E(Z-2,N)
642
+ Compute the two-proton separation energy (S2p)
643
+ S2p(Z,Nref) = E(Z,Nref)-E(Z-2,Nref)
573
644
  """
574
645
  #
575
646
  if nuda.env.verb: print("Enter S2p()")
576
647
  #
577
- if Nmin > Nmax:
578
- print('setup_be_theo: In S2p attribute function of setup_be_exp.py:')
579
- print('setup_be_theo: Bad definition of Nmin and Nmax')
580
- print('setup_be_theo: It is expected that Nmin<=Nmax')
581
- print('setup_be_theo: Nmin,Nmax:',Nmin,Nmax)
582
- print('setup_be_theo: exit')
648
+ if Nref < 0:
649
+ print('setup_be_exp.py: In S2p attribute function of setup_be_exp.py:')
650
+ print('setup_be_exp.py: Bad definition of Nref')
651
+ print('setup_be_exp.py: It is expected that Nref>=0')
652
+ print('setup_be_exp.py: Nref:',Nref)
653
+ print('setup_be_exp.py: exit')
583
654
  exit()
584
655
  #
585
656
  S2p_Z = []
657
+ S2p_E = []
586
658
  S2p_N = []
587
- S2p = []
588
659
  #
589
- for ind,N in enumerate(self.nucN):
590
- #
591
- if N > Nmax :
592
- continue
593
- if N < Nmin :
594
- continue
595
- #
596
- Z = self.nucZ[ind]
597
- #
598
- #print('For Z,N:',Z,N)
599
- #
600
- # search index for Z-2,N
601
- #
602
- flag_find = 0
603
- for ind2,N2 in enumerate(self.nucN):
604
- if N == N2 and self.nucZ[ind2] == Z-2:
605
- flag_find = 1
606
- break
607
- if flag_find == 1:
608
- Z2 = self.nucZ[ind2]
609
- #print('N,N2:',N,N2,'ind,ind2:',ind,ind2)
610
- S2p_Z.append( self.nucZ[ind] )
611
- S2p_N.append( self.nucN[ind] )
612
- S2p.append( self.nucBE[ind2] - self.nucBE[ind] )
613
- self.S2p_N = np.array( S2p_N, dtype = int )
660
+ Zmin=self.itn_nucZmin
661
+ Zmax=self.itn_nucZmax
662
+ #
663
+ for Z in range(Zmin+2,Zmax+1):
664
+ #
665
+ flagZ = False; flagZm2 = False;
666
+ #
667
+ for ind,N in enumerate(self.nucN):
668
+ #
669
+ if N == Nref and self.nucZ[ind] == Z:
670
+ indZ = ind
671
+ flagZ = True
672
+ if N == Nref and self.nucZ[ind] == Z-2:
673
+ indZm2 = ind
674
+ flagZm2 = True
675
+ #
676
+ if flagZ and flagZm2:
677
+ S2p_Z.append( Z )
678
+ S2p_N.append( Nref )
679
+ S2p_E.append( self.nucBE[indZ] - self.nucBE[indZm2] )
614
680
  self.S2p_Z = np.array( S2p_Z, dtype = int )
615
- self.S2p = np.array( S2p, dtype = float )
616
- #print('Z:',self.S2n_Z)
617
- #print('N:',self.S2n_N)
618
- #print('S2n:',self.S2n)
619
- #print('Z:',self.S2n_Z)
681
+ self.S2p_N = np.array( S2p_N, dtype = int )
682
+ self.S2p_E = np.array( S2p_E, dtype = float )
620
683
  #
621
684
  if nuda.env.verb: print("Exit S2p()")
622
685
  #
623
686
  return self
624
- #
625
- def drip_S2n(self, Zmin = 1, Zmax = 95 ):
687
+ #
688
+ def drip_S2n(self, Zref=50):
626
689
  """
627
690
  Method which find the drip-line nuclei from S2n (neutron side).
628
691
 
@@ -636,13 +699,13 @@ class setupBETheo():
636
699
  #
637
700
  if nuda.env.verb: print("Enter drip_S2n()")
638
701
  #
639
- if Zmin > Zmax:
640
- print('setup_be_theo: In drip_S2n attribute function of setup_be_theo.py:')
641
- print('setup_be_theo: Bad definition of Zmin and Zmax')
642
- print('setup_be_theo: It is expected that Zmin<=Zmax')
643
- print('setup_be_theo: Zmin,Zmax:',Zmin,Zmax)
644
- print('setup_be_theo: exit')
645
- exit()
702
+ # if Zmin > Zmax:
703
+ # print('setup_be_theo: In drip_S2n attribute function of setup_be_theo.py:')
704
+ # print('setup_be_theo: Bad definition of Zmin and Zmax')
705
+ # print('setup_be_theo: It is expected that Zmin<=Zmax')
706
+ # print('setup_be_theo: Zmin,Zmax:',Zmin,Zmax)
707
+ # print('setup_be_theo: exit')
708
+ # exit()
646
709
  #
647
710
  if not any(self.S2n_Z):
648
711
  print('setup_be_theo: In drip_S2n attribute function of setup_be_theo.py:')
@@ -655,12 +718,13 @@ class setupBETheo():
655
718
  self.drip_S2n_Z = []
656
719
  self.drip_S2n_N = []
657
720
  #
721
+ print("S2n_Z:",self.S2n_Z)
658
722
  for ind,Z in enumerate(self.S2n_Z):
659
723
  #
660
- if Z > Zmax :
661
- break
662
- if Z < Zmin :
663
- continue
724
+ # if Z > Zmax :
725
+ # break
726
+ # if Z < Zref :
727
+ # continue
664
728
  #
665
729
  #Nmax = Nstable[ind]
666
730
  Nmax = 0
@@ -726,8 +790,127 @@ class setupBETheo():
726
790
  #
727
791
  return self
728
792
  #
729
- #
730
- def D3n( self, Zmin = 1, Zmax = 95 ):
793
+ def D3n( self, Zref = 50 ):
794
+ """
795
+ Compute the three-points odd-even mass staggering (D3n)
796
+ D3n = (-)**N * ( 2*E(Z,N)-E(Z,N+1)-E(Z,N-1) ) / 2
797
+ """
798
+ #
799
+ if nuda.env.verb: print("Enter D3n()")
800
+ #
801
+ if Zref < 0:
802
+ print('setup_be_theo: In D3n attribute function of setup_be_theo.py:')
803
+ print('setup_be_theo: Bad definition of Zref')
804
+ print('setup_be_theo: It is expected that Zref>=0')
805
+ print('setup_be_theo: Zref:',Zref)
806
+ print('setup_be_theo: exit')
807
+ exit()
808
+ #
809
+ D3n_N_even = []
810
+ D3n_E_even = []
811
+ D3n_N_odd = []
812
+ D3n_E_odd = []
813
+ #
814
+ Nmin=self.itp_nucNmin
815
+ Nmax=self.itp_nucNmax
816
+ #
817
+ for N in range(Nmin+1,Nmax+1):
818
+ #
819
+ flagN = False; flagNm1 = False; flagNp1 = False;
820
+ #
821
+ for ind,Z in enumerate(self.nucZ):
822
+ #
823
+ if Z == Zref and self.nucN[ind] == N:
824
+ indN = ind
825
+ flagN = True
826
+ if N % 2:
827
+ sign = -1.0 # odd
828
+ else:
829
+ sign = 1.0 # even
830
+ if Z == Zref and self.nucN[ind] == N-1:
831
+ indNm1 = ind
832
+ flagNm1 = True
833
+ if Z == Zref and self.nucN[ind] == N+1:
834
+ indNp1 = ind
835
+ flagNp1 = True
836
+ #
837
+ if flagN and flagNm1 and flagNp1:
838
+ if sign > 0.0: #even
839
+ D3n_N_even.append( N )
840
+ D3n_E_even.append( sign/2.0*( -2*self.nucBE[indN] + self.nucBE[indNm1] + self.nucBE[indNp1] ) )
841
+ else:
842
+ D3n_N_odd.append( N )
843
+ D3n_E_odd.append( sign/2.0*( -2*self.nucBE[indN] + self.nucBE[indNm1] + self.nucBE[indNp1] ) )
844
+ self.D3n_N_even = np.array( D3n_N_even, dtype = int )
845
+ self.D3n_E_even = np.array( D3n_E_even, dtype = float )
846
+ self.D3n_N_odd = np.array( D3n_N_odd, dtype = int )
847
+ self.D3n_E_odd = np.array( D3n_E_odd, dtype = float )
848
+ #
849
+ if nuda.env.verb: print("Exit D3n()")
850
+ #
851
+ return self
852
+ #
853
+ def D3p( self, Nref = 50 ):
854
+ """
855
+ Compute the three-points odd-even mass staggering (D3n)
856
+ D3p = (-)**Z * ( 2*E(Z,N)-E(Z+1,N)-E(Z-1,N) ) / 2
857
+ """
858
+ #
859
+ if nuda.env.verb: print("Enter D3p()")
860
+ #
861
+ if Nref < 0:
862
+ print('setup_be_theo: In D3p attribute function of setup_be_theo.py:')
863
+ print('setup_be_theo: Bad definition of Nref')
864
+ print('setup_be_theo: It is expected that Nref>=0')
865
+ print('setup_be_theo: Nref:',Nref)
866
+ print('setup_be_theo: exit')
867
+ exit()
868
+ #
869
+ D3p_Z_even = []
870
+ D3p_E_even = []
871
+ D3p_Z_odd = []
872
+ D3p_E_odd = []
873
+ #
874
+ Zmin=self.itn_nucZmin
875
+ Zmax=self.itn_nucZmax
876
+ #
877
+ for Z in range(Zmin+1,Zmax+1):
878
+ #
879
+ flagZ = False; flagZm1 = False; flagZp1 = False;
880
+ #
881
+ for ind,N in enumerate(self.nucN):
882
+ #
883
+ if N == Nref and self.nucZ[ind] == Z:
884
+ indZ = ind
885
+ flagZ = True
886
+ if Z % 2:
887
+ sign = -1.0 # odd
888
+ else:
889
+ sign = 1.0 # even
890
+ if N == Nref and self.nucZ[ind] == Z-1:
891
+ indZm1 = ind
892
+ flagZm1 = True
893
+ if N == Nref and self.nucZ[ind] == Z+1:
894
+ indZp1 = ind
895
+ flagZp1 = True
896
+ #
897
+ if flagZ and flagZm1 and flagZp1:
898
+ if sign > 0.0: #even
899
+ D3p_Z_even.append( Z )
900
+ D3p_E_even.append( sign/2.0*( -2*self.nucBE[indZ] + self.nucBE[indZm1] + self.nucBE[indZp1] ) )
901
+ else:
902
+ D3p_Z_odd.append( Z )
903
+ D3p_E_odd.append( sign/2.0*( -2*self.nucBE[indZ] + self.nucBE[indZm1] + self.nucBE[indZp1] ) )
904
+ self.D3p_Z_even = np.array( D3p_Z_even, dtype = int )
905
+ self.D3p_E_even = np.array( D3p_E_even, dtype = float )
906
+ self.D3p_Z_odd = np.array( D3p_Z_odd, dtype = int )
907
+ self.D3p_E_odd = np.array( D3p_E_odd, dtype = float )
908
+ #
909
+ if nuda.env.verb: print("Exit D3p()")
910
+ #
911
+ return self
912
+ #
913
+ def D3n_old( self, Zmin = 1, Zmax = 95 ):
731
914
  """
732
915
  Compute the three-points odd-even mass staggering (D3n)
733
916
  D3N = (-)**N * ( 2*E(Z,N)-E(Z,N+1)-E(Z,N-1) ) / 2
@@ -798,7 +981,7 @@ class setupBETheo():
798
981
  #
799
982
  return self
800
983
  #
801
- def D3p( self, Nmin = 1, Nmax = 95 ):
984
+ def D3p_old( self, Nmin = 1, Nmax = 95 ):
802
985
  """
803
986
  Compute the three-points odd-even mass staggering (D3p)
804
987
  D3Z = (-)**Z * ( 2*E(Z,N)-E(Z+1,N)-E(Z-1,N) ) / 2
@@ -20,7 +20,7 @@ def isgmr_exp_tables():
20
20
  #
21
21
  if nuda.env.verb: print("\nEnter isgmr_exp_tables()")
22
22
  #
23
- tables = [ '2010-ISGMR-LI', '2018-ISGMR-GARG', '2018-ISGMR-GARG-LATEX', '2022-ISGMR-average' ]
23
+ tables = [ '2010-ISGMR-LI', '2018-ISGMR-GARG', '2018-ISGMR-GARG-few', '2022-ISGMR-average' ]
24
24
  #print('tables available in the toolkit:',tables)
25
25
  tables_lower = [ item.lower() for item in tables ]
26
26
  #print('tables available in the toolkit:',tables_lower)
@@ -100,12 +100,12 @@ class setupISGMRExp():
100
100
  nucM32M1.append( None ); nucM32M1_errp.append( None ); nucM32M1_errm.append( None )
101
101
  nuc = len( nucZ ); nbk = nuc
102
102
  #
103
- elif table.lower() == '2018-isgmr-garg':
103
+ elif table.lower() == '2018-isgmr-garg-few':
104
104
  #
105
105
  file_in = os.path.join(nuda.param.path_data,'nuclei/isgmr/2018-ISGMR-Garg.dat')
106
106
  if nuda.env.verb: print('Reads file:',file_in)
107
107
  self.ref = 'U. Garg and G. Colo, Prog. Part. Nucl. Phys. 101, 55 (2018)'
108
- self.label = 'Garg-Colo-2018'
108
+ self.label = 'Garg-Colo-2018-few'
109
109
  self.note = "write here notes about this table."
110
110
  nucZ, nucA, nucM12Mm1, nucM12Mm1_errp, nucM12Mm1_errm = \
111
111
  np.loadtxt( file_in, usecols=(0,1,2,3,4), comments='#', unpack = True )
@@ -122,7 +122,7 @@ class setupISGMRExp():
122
122
  nucM32M1.append( None ); nucM32M1_errp.append( None ); nucM32M1_errm.append( None )
123
123
  nuc = len( nucZ ); nbk = nuc
124
124
  #
125
- elif table.lower() == '2018-isgmr-garg-latex':
125
+ elif table.lower() == '2018-isgmr-garg':
126
126
  #
127
127
  file_in = os.path.join(nuda.param.path_data,'nuclei/isgmr/2018-ISGMR-Garg.tex')
128
128
  if nuda.env.verb: print('Reads file:',file_in)
@@ -1,3 +1,4 @@
1
+ import numpy as np
1
2
  import math
2
3
  #import numpy as np # 1.15.0
3
4
 
@@ -1,4 +1,5 @@
1
1
  import numpy as np # 1.15.0
2
+ import os
2
3
  from scipy.interpolate import CubicSpline
3
4
 
4
5
  import nucleardatapy as nuda
@@ -149,7 +150,7 @@ class setupRnpTheo():
149
150
  # #
150
151
  if model.lower() == 'skyrme':
151
152
  #
152
- file_in1 = os.path.join(nuda.param.path_data,'Neutrornp/skyrmernp-'+nucleus+'.dat')
153
+ file_in1 = os.path.join(nuda.param.path_data,'rnp/skyrmernp-'+nucleus+'.dat')
153
154
  if nuda.env.verb: print('Reads file1:',file_in1)
154
155
  name = np.loadtxt( file_in1, usecols=(0), comments='#', unpack = True, dtype=str )
155
156
  Rn, Rp, Rnp = np.loadtxt( file_in1, usecols=(1,2,3), comments='#', unpack = True )