nucleardatapy 0.2.0__py3-none-any.whl → 0.2.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 (88) hide show
  1. nucleardatapy/crust/setup_crust.py +46 -1
  2. nucleardatapy/data/crust/2018-PCPFDDG-BSK22.dat +83 -0
  3. nucleardatapy/data/crust/2018-PCPFDDG-BSK24.dat +74 -0
  4. nucleardatapy/data/crust/2018-PCPFDDG-BSK25.dat +130 -0
  5. nucleardatapy/data/crust/2018-PCPFDDG-BSK26.dat +81 -0
  6. nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-Av18-effmass-SM.dat +11 -0
  7. nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-Av18-effmass-beta0.2.dat +11 -0
  8. nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-Av18-effmass-beta0.4.dat +11 -0
  9. nucleardatapy/data/nuclei/masses/Theory/2023-BSkG3.txt +0 -4
  10. nucleardatapy/data/nuclei/masses/Theory/2025-BSkG4.txt +0 -1
  11. nucleardatapy/eos/setup_am.py +43 -31
  12. nucleardatapy/eos/setup_am_Beq.py +18 -12
  13. nucleardatapy/eos/setup_am_Leq.py +53 -47
  14. nucleardatapy/fig/__init__.py +15 -2
  15. nucleardatapy/fig/crust_setupCrust_fig.py +3 -3
  16. nucleardatapy/fig/eos_setupAMBeq_fig.py +866 -49
  17. nucleardatapy/fig/eos_setupAMLeq_fig.py +185 -53
  18. nucleardatapy/fig/eos_setupAM_e_asy_lep_fig.py +125 -0
  19. nucleardatapy/fig/eos_setupAM_e_asy_nuc_fig.py +115 -0
  20. nucleardatapy/fig/eos_setupAM_e_asy_tot_fig.py +117 -0
  21. nucleardatapy/fig/eos_setupAM_e_fig.py +173 -0
  22. nucleardatapy/fig/hnuc_setupRE1LExp_fig.py +1 -1
  23. nucleardatapy/fig/matter_ENM_fig.py +50 -41
  24. nucleardatapy/fig/matter_ESM_fig.py +60 -39
  25. nucleardatapy/fig/matter_Esym_fig.py +48 -36
  26. nucleardatapy/fig/matter_cs2_fig.py +83 -0
  27. nucleardatapy/fig/matter_preNM_fig.py +146 -0
  28. nucleardatapy/fig/matter_preSM_fig.py +144 -0
  29. nucleardatapy/fig/matter_setupFFGNuc_fig.py +2 -1
  30. nucleardatapy/fig/matter_setupMicroEsym_fig.py +50 -19
  31. nucleardatapy/fig/matter_setupMicro_band_fig.py +1 -0
  32. nucleardatapy/fig/matter_setupMicro_effmass_fig.py +59 -4
  33. nucleardatapy/fig/matter_setupMicro_fig.py +81 -79
  34. nucleardatapy/fig/matter_setupPhenoEsym_fig.py +28 -26
  35. nucleardatapy/fig/matter_setupPheno_fig.py +34 -24
  36. nucleardatapy/fig/nuc_setupBEExp_chart_fig.py +275 -0
  37. nucleardatapy/fig/nuc_setupBEExp_fig.py +225 -70
  38. nucleardatapy/fig/nuc_setupBETheo_fig.py +316 -0
  39. nucleardatapy/fig/nuc_setupISGMRExp_fig.py +59 -0
  40. nucleardatapy/fig/nuc_setupRchExp_fig.py +139 -0
  41. nucleardatapy/fig/nuc_setupRchTheo_fig.py +142 -0
  42. nucleardatapy/fig/nuc_setupRnpExp_fig.py +120 -0
  43. nucleardatapy/fig/nuc_setupRnpTheo_fig.py +134 -0
  44. nucleardatapy/hnuc/__init__.py +3 -3
  45. nucleardatapy/matter/__init__.py +1 -0
  46. nucleardatapy/matter/setup_check.py +97 -0
  47. nucleardatapy/matter/setup_ffg.py +15 -8
  48. nucleardatapy/matter/setup_micro.py +144 -79
  49. nucleardatapy/matter/setup_micro_band.py +6 -1
  50. nucleardatapy/matter/setup_micro_effmass.py +55 -2
  51. nucleardatapy/matter/setup_micro_esym.py +37 -30
  52. nucleardatapy/matter/setup_micro_gap.py +3 -3
  53. nucleardatapy/matter/setup_micro_lp.py +18 -17
  54. nucleardatapy/matter/setup_pheno.py +2 -2
  55. nucleardatapy/matter/setup_pheno_esym.py +13 -13
  56. nucleardatapy/nuc/__init__.py +2 -2
  57. nucleardatapy/nuc/setup_be_exp.py +90 -90
  58. nucleardatapy/nuc/setup_be_theo.py +112 -100
  59. nucleardatapy/nuc/setup_rch_exp.py +49 -6
  60. nucleardatapy/nuc/setup_rch_theo.py +72 -3
  61. nucleardatapy/nuc/{setup_nskin_exp.py → setup_rnp_exp.py} +58 -65
  62. nucleardatapy/nuc/{setup_nskin_theo.py → setup_rnp_theo.py} +34 -39
  63. nucleardatapy-0.2.1.dist-info/METADATA +521 -0
  64. {nucleardatapy-0.2.0.dist-info → nucleardatapy-0.2.1.dist-info}/RECORD +86 -65
  65. {nucleardatapy-0.2.0.dist-info → nucleardatapy-0.2.1.dist-info}/WHEEL +1 -1
  66. nucleardatapy/fig/eos_setupAM_fig.py +0 -81
  67. nucleardatapy-0.2.0.dist-info/METADATA +0 -115
  68. /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-E2A-AM.dat → 2006-BHF-Av18-E2A-AM.dat} +0 -0
  69. /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-E2A-NM.dat → 2006-BHF-Av18-E2A-NM.dat} +0 -0
  70. /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-E2A-SM.dat → 2006-BHF-Av18-E2A-SM.dat} +0 -0
  71. /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-Esym2-SM.dat → 2006-BHF-Av18-Esym2-SM.dat} +0 -0
  72. /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-GAP-NM-FreeSpectrum.dat → 2006-BHF-Av18-GAP-NM-FreeSpectrum.dat} +0 -0
  73. /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-GAP-NM-SelfEnergy.dat → 2006-BHF-Av18-GAP-NM-SelfEnergy.dat} +0 -0
  74. /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-GAP-SM-FreeSpectrum.dat → 2006-BHF-Av18-GAP-SM-FreeSpectrum.dat} +0 -0
  75. /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-GAP-SM-SelfEnergy.dat → 2006-BHF-Av18-GAP-SM-SelfEnergy.dat} +0 -0
  76. /nucleardatapy/data/matter/micro/{2020-MBPT-NM-DHSL59.dat → 2019-MBPT-NM-DHSL59.dat} +0 -0
  77. /nucleardatapy/data/matter/micro/{2020-MBPT-NM-DHSL69.dat → 2019-MBPT-NM-DHSL69.dat} +0 -0
  78. /nucleardatapy/data/matter/micro/{2020-MBPT-SM-DHSL59.dat → 2019-MBPT-SM-DHSL59.dat} +0 -0
  79. /nucleardatapy/data/matter/micro/{2020-MBPT-SM-DHSL69.dat → 2019-MBPT-SM-DHSL69.dat} +0 -0
  80. /nucleardatapy/data/matter/micro/{2023-MBPT-NM.csv → 2020-MBPT-NM.csv} +0 -0
  81. /nucleardatapy/data/matter/micro/{2023-MBPT-SM.csv → 2020-MBPT-SM.csv} +0 -0
  82. /nucleardatapy/data/nuclei/{nskin → rnp}/208Pb.dat +0 -0
  83. /nucleardatapy/data/nuclei/{nskin → rnp}/48Ca.dat +0 -0
  84. /nucleardatapy/hnuc/{setup_be1L_exp.py → setup_re1L_exp.py} +0 -0
  85. /nucleardatapy/hnuc/{setup_be1Xi_exp.py → setup_re1Xi_exp.py} +0 -0
  86. /nucleardatapy/hnuc/{setup_be2L_exp.py → setup_re2L_exp.py} +0 -0
  87. {nucleardatapy-0.2.0.dist-info → nucleardatapy-0.2.1.dist-info/licenses}/LICENSE +0 -0
  88. {nucleardatapy-0.2.0.dist-info → nucleardatapy-0.2.1.dist-info}/top_level.txt +0 -0
@@ -25,97 +25,109 @@ def matter_Esym_fig( pname, micro_mbs, pheno_models, band ):
25
25
  #
26
26
  print(f'Plot name: {pname}')
27
27
  #
28
+ matter = 'Esym'
29
+ #
28
30
  fig, axs = plt.subplots(1,2)
29
31
  #fig.tight_layout() # Or equivalently, "plt.tight_layout()"
30
32
  fig.subplots_adjust(left=0.10, bottom=0.12, right=None, top=0.9, wspace=0.05, hspace=0.3 )
31
33
  #
32
34
  axs[0].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)')
33
- axs[0].set_ylabel(r'$e_\text{sym}(n)$')
34
- axs[0].set_xlim([0, 0.33])
35
+ axs[0].set_ylabel(r'$e_\text{sym}(n_\text{nuc})$')
36
+ axs[0].set_xlim([0, 0.34])
35
37
  axs[0].set_ylim([0, 60])
36
38
  #
37
39
  axs[1].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)')
38
40
  #axs[1].set_ylabel(r'$e_{sym}(n)$')
39
- axs[1].set_xlim([0, 0.33])
41
+ axs[1].set_xlim([0, 0.34])
40
42
  axs[1].set_ylim([0, 60])
41
43
  axs[1].tick_params('y', labelleft=False)
42
44
  #
43
45
  mb_check = []
44
- k = 0
45
46
  #
46
- for mb in micro_mbs:
47
+ for kmb,mb in enumerate(micro_mbs):
47
48
  #
48
49
  models, models_lower = nuda.matter.micro_esym_models_mb( mb )
49
50
  #
50
51
  for model in models:
51
52
  #
52
- esym = nuda.matter.setupMicroEsym( model = model )
53
+ micro = nuda.matter.setupMicroEsym( model = model )
54
+ if nuda.env.verb: micro.print_outputs( )
55
+ #
56
+ check = nuda.matter.setupCheck( eos = micro, band = band )
57
+ #
58
+ if check.isInside:
59
+ lstyle = 'solid'
60
+ else:
61
+ lstyle = 'dashed'
53
62
  #
54
- if esym.esym is not None:
63
+ if micro.esym is not None:
55
64
  print('mb:',mb,'model:',model)
56
65
  if mb in mb_check:
57
- if esym.marker:
58
- if esym.err:
59
- axs[0].errorbar( esym.den, esym.esym, yerr=esym.esym_err, marker=esym.marker, linestyle=None, errorevery=esym.every, color=nuda.param.col[k] )
66
+ if micro.marker:
67
+ if micro.err:
68
+ axs[0].errorbar( micro.den, micro.esym, yerr=micro.esym_err, marker=micro.marker, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
60
69
  else:
61
- axs[0].plot( esym.den, esym.esym, marker=esym.marker, linestyle=None, markevery=esym.every, color=nuda.param.col[k] )
70
+ axs[0].plot( micro.den, micro.esym, marker=micro.marker, linestyle=lstyle, markevery=micro.every, color=nuda.param.col[kmb] )
62
71
  else:
63
- if esym.err:
64
- axs[0].errorbar( esym.den, esym.esym, yerr=esym.esym_err, marker=esym.marker, linestyle=esym.linestyle, errorevery=esym.every, color=nuda.param.col[k] )
72
+ if micro.err:
73
+ axs[0].errorbar( micro.den, micro.esym, yerr=micro.esym_err, marker=micro.marker, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
65
74
  else:
66
- axs[0].plot( esym.den, esym.esym, marker=esym.marker, linestyle=esym.linestyle, markevery=esym.every, color=nuda.param.col[k] )
75
+ axs[0].plot( micro.den, micro.esym, marker=micro.marker, linestyle=lstyle, markevery=micro.every, color=nuda.param.col[kmb] )
67
76
  else:
68
77
  mb_check.append(mb)
69
- k += 1
70
- if esym.marker:
71
- if esym.err:
72
- axs[0].errorbar( esym.den, esym.esym, yerr=esym.esym_err, marker=esym.marker, linestyle=None, label=mb, errorevery=esym.every, color=nuda.param.col[k] )
78
+ if micro.marker:
79
+ if micro.err:
80
+ axs[0].errorbar( micro.den, micro.esym, yerr=micro.esym_err, marker=micro.marker, linestyle=lstyle, label=mb, errorevery=micro.every, color=nuda.param.col[kmb] )
73
81
  else:
74
- axs[0].plot( esym.den, esym.esym, marker=esym.marker, linestyle=None, label=mb, markevery=esym.every, color=nuda.param.col[k] )
82
+ axs[0].plot( micro.den, micro.esym, marker=micro.marker, linestyle=lstyle, label=mb, markevery=micro.every, color=nuda.param.col[kmb] )
75
83
  else:
76
- if esym.err:
77
- axs[0].errorbar( esym.den, esym.esym, yerr=esym.esym_err, marker=esym.marker, linestyle=esym.linestyle, label=mb, errorevery=esym.every, color=nuda.param.col[k] )
84
+ if micro.err:
85
+ axs[0].errorbar( micro.den, micro.esym, yerr=micro.esym_err, marker=micro.marker, linestyle=lstyle, label=mb, errorevery=micro.every, color=nuda.param.col[kmb] )
78
86
  else:
79
- axs[0].plot( esym.den, esym.esym, marker=esym.marker, linestyle=esym.linestyle, label=mb, markevery=esym.every, color=nuda.param.col[k] )
80
- #axs[0].plot( esym.den, esym.esym, color=nuda.param.col[k], label=mb )
81
- if nuda.env.verb: esym.print_outputs( )
87
+ axs[0].plot( micro.den, micro.esym, marker=micro.marker, linestyle=lstyle, label=mb, markevery=micro.every, color=nuda.param.col[kmb] )
88
+ # end of model
89
+ # end of mb
82
90
  axs[0].fill_between( band.den, y1=(band.e2a-band.e2a_std), y2=(band.e2a+band.e2a_std), color=band.color, alpha=band.alpha, visible=True )
83
91
  axs[0].plot( band.den, (band.e2a-band.e2a_std), color='k', linestyle='dashed' )
84
92
  axs[0].plot( band.den, (band.e2a+band.e2a_std), color='k', linestyle='dashed' )
85
93
  axs[0].text(0.05,5,'microscopic models',fontsize='10')
86
- #axs[0].legend(loc='upper left',fontsize='8', ncol=3)
87
94
  #
88
95
  model_check = []
89
- k = 0
90
96
  #
91
- for model in pheno_models:
97
+ for kmodel,model in enumerate(pheno_models):
92
98
  #
93
99
  params, params_lower = nuda.matter.pheno_params( model = model )
94
100
  #
95
101
  for param in params:
96
102
  #
97
- esym = nuda.matter.setupPhenoEsym( model = model, param = param )
103
+ pheno = nuda.matter.setupPhenoEsym( model = model, param = param )
104
+ if nuda.env.verb: pheno.print_outputs( )
98
105
  #
99
- if esym.esym is not None:
106
+ check = nuda.matter.setupCheck( eos = pheno, band = band )
107
+ #
108
+ if check.isInside:
109
+ lstyle = 'solid'
110
+ else:
111
+ lstyle = 'dashed'
112
+ #
113
+ if pheno.esym is not None:
100
114
  print('model:',model,' param:',param)
101
115
  if model in model_check:
102
- axs[1].plot( esym.den, esym.esym, color=nuda.param.col[k] )
116
+ axs[1].plot( pheno.den, pheno.esym, linestyle=lstyle, color=nuda.param.col[kmodel] )
103
117
  else:
104
118
  model_check.append(model)
105
- k += 1
106
- axs[1].plot( esym.den, esym.esym, color=nuda.param.col[k], label=model )
107
- #pheno.label=None
108
- #axs[1].plot( esym.den, esym.esym, label=esym.label )
109
- if nuda.env.verb: esym.print_outputs( )
119
+ axs[1].plot( pheno.den, pheno.esym, linestyle=lstyle, color=nuda.param.col[kmodel], label=model )
120
+ # end of param
121
+ # end of model
110
122
  axs[1].fill_between( band.den, y1=(band.e2a-band.e2a_std), y2=(band.e2a+band.e2a_std), color=band.color, alpha=band.alpha, visible=True )
111
123
  axs[1].plot( band.den, (band.e2a-band.e2a_std), color='k', linestyle='dashed' )
112
124
  axs[1].plot( band.den, (band.e2a+band.e2a_std), color='k', linestyle='dashed' )
113
125
  axs[1].text(0.05,5,'phenomenological models',fontsize='10')
126
+ #
114
127
  #axs[1].legend(loc='upper left',fontsize='8', ncol=2)
115
128
  #axs[0,1].legend(loc='upper left',fontsize='xx-small', ncol=2)
116
129
  fig.legend(loc='upper left',bbox_to_anchor=(0.2,1.0),columnspacing=2,fontsize='8',ncol=4,frameon=False)
117
130
  #
118
- #plt.tight_layout()
119
131
  if pname is not None:
120
132
  plt.savefig(pname, dpi=200)
121
133
  plt.close()
@@ -0,0 +1,83 @@
1
+ import numpy as np
2
+ import matplotlib.pyplot as plt
3
+
4
+ import nucleardatapy as nuda
5
+
6
+ def matter_cs2_fig( pname, micro_models, pheno_models, band ):
7
+ """
8
+ Plot nuclear chart (N versus Z).\
9
+ The plot is 1x1 with:\
10
+ [0]: nuclear chart.
11
+
12
+ :param pname: name of the figure (*.png)
13
+ :type pname: str.
14
+ :param table: table.
15
+ :type table: str.
16
+ :param version: version of table to run on.
17
+ :type version: str.
18
+ :param theo_tables: object instantiated on the reference band.
19
+ :type theo_tables: object.
20
+
21
+ """
22
+ #
23
+ print(f'Plot name: {pname}')
24
+ #
25
+ fig, axs = plt.subplots(1,2)
26
+ fig.tight_layout() # Or equivalently, "plt.tight_layout()"
27
+ fig.subplots_adjust(left=0.10, bottom=0.12, right=None, top=0.98, wspace=0.3, hspace=0.3 )
28
+ #
29
+ axs[0].set_xlabel(r'n (fm$^{-3}$)')
30
+ axs[0].set_ylabel(r'$c_{s,NM}^2(n)$')
31
+ axs[0].set_xlim([0, 0.3])
32
+ axs[0].set_ylim([0, 0.5])
33
+ #
34
+ axs[1].set_xlabel(r'n (fm$^{-3}$)')
35
+ axs[1].set_ylabel(r'$c_{s,NM}^2(n)$')
36
+ axs[1].set_xlim([0, 0.3])
37
+ axs[1].set_ylim([0, 0.5])
38
+ #
39
+ for model in micro_models:
40
+ #
41
+ mic = nuda.matter.setupMicro( model = model )
42
+ if mic.nm_cs2 is not None:
43
+ print('model:',model)
44
+ if mic.marker:
45
+ if mic.err:
46
+ axs[0].errorbar( mic.nm_den, mic.nm_cs2, yerr=mic.nm_cs2_err, marker=mic.marker, linestyle=None, label=mic.label, errorevery=mic.every )
47
+ else:
48
+ axs[0].plot( mic.nm_den, mic.nm_cs2, marker=mic.marker, linestyle=None, label=mic.label, markevery=mic.every )
49
+ else:
50
+ if mic.err:
51
+ axs[0].errorbar( mic.nm_den, mic.nm_cs2, yerr=mic.nm_cs2_err, marker=mic.marker, linestyle=mic.linestyle, label=mic.label, errorevery=mic.every )
52
+ else:
53
+ axs[0].plot( mic.nm_den, mic.nm_cs2, marker=mic.marker, linestyle=mic.linestyle, label=mic.label, markevery=mic.every )
54
+ if nuda.env.verb: mic.print_outputs( )
55
+ #axs[0].fill_between( band.den, y1=(band.pre-band.pre_std), y2=(band.pre+band.pre_std), color=band.color, alpha=band.alpha, visible=True )
56
+ #axs[0].plot( band.den, (band.pre-band.pre_std), color='k', linestyle='dashed' )
57
+ #axs[0].plot( band.den, (band.pre+band.pre_std), color='k', linestyle='dashed' )
58
+ axs[0].text(0.01,0.4,'microscopic models',fontsize='10')
59
+ axs[0].legend(loc='upper left',fontsize='8', ncol=3)
60
+ #
61
+ for model in pheno_models:
62
+ #
63
+ params, params_lower = nuda.matter.pheno_params( model = model )
64
+ #
65
+ for param in params:
66
+ #
67
+ pheno = nuda.matter.setupPheno( model = model, param = param )
68
+ if pheno.nm_pre is not None:
69
+ print('model:',model,' param:',param)
70
+ #pheno.label=None
71
+ axs[1].plot( pheno.nm_den, pheno.nm_cs2, label=pheno.label )
72
+ if nuda.env.verb: pheno.print_outputs( )
73
+ #axs[1].fill_between( band.den, y1=(band.e2a-band.e2a_std), y2=(band.e2a+band.e2a_std), color=band.color, alpha=band.alpha, visible=True )
74
+ #axs[1].plot( band.den, (band.e2a-band.e2a_std), color='k', linestyle='dashed' )
75
+ #axs[1].plot( band.den, (band.e2a+band.e2a_std), color='k', linestyle='dashed' )
76
+ axs[1].text(0.01,0.4,'phenomenological models',fontsize='10')
77
+ #axs[1].legend(loc='upper left',fontsize='8', ncol=2)
78
+ #axs[0,1].legend(loc='upper left',fontsize='xx-small', ncol=2)
79
+ #
80
+ if pname is not None:
81
+ plt.savefig(pname, dpi=200)
82
+ plt.close()
83
+ #
@@ -0,0 +1,146 @@
1
+ import numpy as np
2
+ import matplotlib.pyplot as plt
3
+
4
+ import nucleardatapy as nuda
5
+
6
+ def matter_preNM_fig( pname, micro_mbs, pheno_models, band ):
7
+ """
8
+ Plot nucleonic pressure in NM.\
9
+ The plot is 1x2 with:\
10
+ [0,0]: E/A versus den (micro). [0,1]: E/A versus den (pheno).\
11
+
12
+ :param pname: name of the figure (*.png)
13
+ :type pname: str.
14
+ :param micro_mbs: many-body (mb) approach considered.
15
+ :type micro_mbs: str.
16
+ :param pheno_models: models to run on.
17
+ :type pheno_models: array of str.
18
+ :param band: object instantiated on the reference band.
19
+ :type band: object.
20
+
21
+ """
22
+ #
23
+ print(f'Plot name: {pname}')
24
+ #
25
+ p_den = 0.32
26
+ p_cen = 23.0
27
+ p_std = 14.5
28
+ p_micro_cen = 15.0
29
+ p_micro_std = 6.5
30
+ p_pheno_cen = 23.0
31
+ p_pheno_std = 14.5
32
+ #
33
+ fig, axs = plt.subplots(1,2)
34
+ #fig.tight_layout() # Or equivalently, "plt.tight_layout()"
35
+ fig.subplots_adjust(left=0.10, bottom=0.12, right=None, top=0.9, wspace=0.05, hspace=0.3 )
36
+ #
37
+ axs[0].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)')
38
+ axs[0].set_ylabel(r'$p_\text{NM}(n_\text{nuc})$')
39
+ axs[0].set_xlim([0, 0.35])
40
+ axs[0].set_ylim([-2, 45])
41
+ #
42
+ axs[1].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)')
43
+ #axs[1].set_ylabel(r'$e_{sym}(n)$')
44
+ axs[1].set_xlim([0, 0.35])
45
+ axs[1].set_ylim([-2, 45])
46
+ axs[1].tick_params('y', labelleft=False)
47
+ #
48
+ mb_check = []
49
+ #
50
+ for kmb,mb in enumerate(micro_mbs):
51
+ #
52
+ models, models_lower = nuda.matter.micro_models_mb( mb )
53
+ #
54
+ for model in models:
55
+ #
56
+ micro = nuda.matter.setupMicro( model = model )
57
+ if nuda.env.verb: micro.print_outputs( )
58
+ #
59
+ check = nuda.matter.setupCheck( eos = micro, band = band )
60
+ #
61
+ if check.isInside:
62
+ lstyle = 'solid'
63
+ else:
64
+ lstyle = 'dashed'
65
+ #continue
66
+ #
67
+ print('model:',model)
68
+ print('err:',micro.p_err)
69
+ print('den:',micro.nm_den)
70
+ print('pre:',micro.nm_pre)
71
+ print('pre_err:',micro.nm_pre_err)
72
+ if micro.nm_pre is not None:
73
+ print('mb:',mb,'model:',model)
74
+ if mb in mb_check:
75
+ if micro.marker:
76
+ if micro.p_err:
77
+ axs[0].errorbar( micro.nm_den, micro.nm_pre, yerr=micro.nm_pre_err, marker=micro.marker, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
78
+ else:
79
+ axs[0].plot( micro.nm_den, micro.nm_pre, marker=micro.marker, linestyle=lstyle, markevery=micro.every, color=nuda.param.col[kmb] )
80
+ else:
81
+ if micro.p_err:
82
+ axs[0].errorbar( micro.nm_den, micro.nm_pre, yerr=micro.nm_pre_err, marker=micro.marker, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
83
+ else:
84
+ axs[0].plot( micro.nm_den, micro.nm_pre, marker=micro.marker, linestyle=lstyle, markevery=micro.every, color=nuda.param.col[kmb] )
85
+ else:
86
+ mb_check.append(mb)
87
+ if micro.marker:
88
+ if micro.p_err:
89
+ axs[0].errorbar( micro.nm_den, micro.nm_pre, yerr=micro.nm_pre_err, marker=micro.marker, linestyle=lstyle, label=mb, errorevery=micro.every, color=nuda.param.col[kmb] )
90
+ else:
91
+ axs[0].plot( micro.nm_den, micro.nm_pre, marker=micro.marker, linestyle=lstyle, label=mb, markevery=micro.every, color=nuda.param.col[kmb] )
92
+ else:
93
+ if micro.p_err:
94
+ axs[0].errorbar( micro.nm_den, micro.nm_pre, yerr=micro.nm_pre_err, marker=micro.marker, linestyle=lstyle, label=mb, errorevery=micro.every, color=nuda.param.col[kmb] )
95
+ else:
96
+ axs[0].plot( enm.nm_den, enm.nm_pre, marker=enm.marker, linestyle=lstyle, label=mb, markevery=micro.every, color=nuda.param.col[kmb] )
97
+ # end of model
98
+ # end of mb
99
+ axs[0].errorbar( p_den, p_cen, yerr=p_std, color='k' )
100
+ axs[0].errorbar( p_den+0.005, p_micro_cen, yerr=p_micro_std, color='r' )
101
+ axs[0].text(0.02,40,'microscopic models',fontsize='10')
102
+ #
103
+ model_check = []
104
+ #
105
+ for kmodel,model in enumerate(pheno_models):
106
+ #
107
+ params, params_lower = nuda.matter.pheno_params( model = model )
108
+ #
109
+ for param in params:
110
+ #
111
+ pheno = nuda.matter.setupPheno( model = model, param = param )
112
+ if nuda.env.verb: pheno.print_outputs( )
113
+ #
114
+ check = nuda.matter.setupCheck( eos = pheno, band = band )
115
+ #
116
+ if check.isInside:
117
+ lstyle = 'solid'
118
+ else:
119
+ lstyle = 'dashed'
120
+ #continue
121
+ #
122
+ if pheno.nm_pre is not None:
123
+ print('model:',model,' param:',param)
124
+ if model in model_check:
125
+ axs[1].plot( pheno.nm_den, pheno.nm_pre, linestyle=lstyle, color=nuda.param.col[kmodel] )
126
+ else:
127
+ model_check.append(model)
128
+ axs[1].plot( pheno.nm_den, pheno.nm_pre, linestyle=lstyle, color=nuda.param.col[kmodel], label=model )
129
+ # end of param
130
+ # end of model
131
+ axs[1].errorbar( p_den, p_cen, yerr=p_std, color='k' )
132
+ axs[1].errorbar( p_den+0.005, p_pheno_cen, yerr=p_pheno_std, color='r' )
133
+ #axs[1].fill_between( band.den, y1=(band.e2a-band.e2a_std), y2=(band.e2a+band.e2a_std), color=band.color, alpha=band.alpha, visible=True )
134
+ #axs[1].plot( band.den, (band.e2a-band.e2a_std), color='k', linestyle='dashed' )
135
+ #axs[1].plot( band.den, (band.e2a+band.e2a_std), color='k', linestyle='dashed' )
136
+ axs[1].text(0.02,40,'phenomenological models',fontsize='10')
137
+ #
138
+ #axs[1].legend(loc='upper left',fontsize='8', ncol=2)
139
+ #axs[0,1].legend(loc='upper left',fontsize='xx-small', ncol=2)
140
+ fig.legend(loc='upper left',bbox_to_anchor=(0.15,1.0),columnspacing=2,fontsize='8',ncol=5,frameon=False)
141
+ #
142
+ #plt.tight_layout()
143
+ if pname is not None:
144
+ plt.savefig(pname, dpi=200)
145
+ plt.close()
146
+ #
@@ -0,0 +1,144 @@
1
+ import numpy as np
2
+ import matplotlib.pyplot as plt
3
+
4
+ import nucleardatapy as nuda
5
+
6
+ def matter_preSM_fig( pname, micro_mbs, pheno_models, band ):
7
+ """
8
+ Plot nucleonic pressure in SM.\
9
+ The plot is 1x2 with:\
10
+ [0,0]: E/A versus den (micro). [0,1]: E/A versus den (pheno).\
11
+
12
+ :param pname: name of the figure (*.png)
13
+ :type pname: str.
14
+ :param micro_mbs: many-body (mb) approach considered.
15
+ :type micro_mbs: str.
16
+ :param pheno_models: models to run on.
17
+ :type pheno_models: array of str.
18
+ :param band: object instantiated on the reference band.
19
+ :type band: object.
20
+ :param matter: variable `matter`employed to define the band.
21
+ :type matter: str.
22
+
23
+ """
24
+ #
25
+ print(f'Plot name: {pname}')
26
+ #
27
+ p_den = 0.32
28
+ p_cen = 11.5
29
+ p_std = 5.5
30
+ p_micro_cen = 9.0
31
+ p_micro_std = 3.0
32
+ p_pheno_cen = 14.5
33
+ p_pheno_std = 2.5
34
+ #
35
+ fig, axs = plt.subplots(1,2)
36
+ #fig.tight_layout() # Or equivalently, "plt.tight_layout()"
37
+ fig.subplots_adjust(left=0.10, bottom=0.12, right=None, top=0.9, wspace=0.05, hspace=0.3 )
38
+ #
39
+ axs[0].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)')
40
+ axs[0].set_ylabel(r'$p_\text{SM}(n_\text{nuc})$')
41
+ axs[0].set_xlim([0, 0.35])
42
+ axs[0].set_ylim([-2, 45])
43
+ #
44
+ axs[1].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)')
45
+ #axs[1].set_ylabel(r'$e_{sym}(n)$')
46
+ axs[1].set_xlim([0, 0.35])
47
+ axs[1].set_ylim([-2, 45])
48
+ axs[1].tick_params('y', labelleft=False)
49
+ #
50
+ mb_check = []
51
+ #
52
+ for kmb,mb in enumerate(micro_mbs):
53
+ #
54
+ models, models_lower = nuda.matter.micro_models_mb( mb )
55
+ #
56
+ for model in models:
57
+ #
58
+ micro = nuda.matter.setupMicro( model = model )
59
+ if nuda.env.verb: micro.print_outputs( )
60
+ #
61
+ check = nuda.matter.setupCheck( eos = micro, band = band )
62
+ #
63
+ if check.isInside:
64
+ lstyle = 'solid'
65
+ else:
66
+ lstyle = 'dashed'
67
+ #continue
68
+ #
69
+ print('model:',model)
70
+ print('err:',micro.p_err)
71
+ print('den:',micro.sm_den)
72
+ print('pre:',micro.sm_pre)
73
+ print('pre_err:',micro.sm_pre_err)
74
+ if micro.sm_pre is not None:
75
+ print('mb:',mb,'model:',model)
76
+ if mb in mb_check:
77
+ if micro.marker:
78
+ if micro.p_err:
79
+ axs[0].errorbar( micro.sm_den, micro.sm_pre, yerr=micro.sm_pre_err, marker=micro.marker, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
80
+ else:
81
+ axs[0].plot( micro.sm_den, micro.sm_pre, marker=micro.marker, linestyle=lstyle, markevery=micro.every, color=nuda.param.col[kmb] )
82
+ else:
83
+ if micro.p_err:
84
+ axs[0].errorbar( micro.sm_den, micro.sm_pre, yerr=micro.sm_pre_err, marker=micro.marker, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
85
+ else:
86
+ axs[0].plot( micro.sm_den, micro.sm_pre, marker=micro.marker, linestyle=lstyle, markevery=micro.every, color=nuda.param.col[kmb] )
87
+ else:
88
+ mb_check.append(mb)
89
+ if micro.marker:
90
+ if micro.p_err:
91
+ axs[0].errorbar( esm.sm_den, micro.sm_pre, yerr=micro.sm_pre_err, marker=micro.marker, linestyle=lstyle, label=mb, errorevery=micro.every, color=nuda.param.col[kmb] )
92
+ else:
93
+ axs[0].plot( micro.sm_den, micro.sm_pre, marker=micro.marker, linestyle=lstyle, label=mb, markevery=micro.every, color=nuda.param.col[kmb] )
94
+ else:
95
+ if micro.p_err:
96
+ axs[0].errorbar( micro.sm_den, micro.sm_pre, yerr=micro.sm_pre_err, marker=micro.marker, linestyle=lstyle, label=mb, errorevery=micro.every, color=nuda.param.col[kmb] )
97
+ else:
98
+ axs[0].plot( micro.sm_den, esm.sm_pre, marker=esm.marker, linestyle=lstyle, label=mb, markevery=micro.every, color=nuda.param.col[kmb] )
99
+ # end of model
100
+ # end of mb
101
+ axs[0].errorbar( p_den, p_cen, yerr=p_std, color='k' )
102
+ axs[0].errorbar( p_den+0.005, p_micro_cen, yerr=p_micro_std, color='r' )
103
+ axs[0].text(0.02,40,'microscopic models',fontsize='10')
104
+ #
105
+ model_check = []
106
+ #
107
+ for kmodel,model in enumerate(pheno_models):
108
+ #
109
+ params, params_lower = nuda.matter.pheno_params( model = model )
110
+ #
111
+ for param in params:
112
+ #
113
+ pheno = nuda.matter.setupPheno( model = model, param = param )
114
+ if nuda.env.verb: pheno.print_outputs( )
115
+ #
116
+ check = nuda.matter.setupCheck( eos = pheno, band = band )
117
+ #
118
+ if check.isInside:
119
+ lstyle = 'solid'
120
+ else:
121
+ lstyle = 'dashed'
122
+ #continue
123
+ #
124
+ if pheno.sm_pre is not None:
125
+ print('model:',model,' param:',param)
126
+ if model in model_check:
127
+ axs[1].plot( pheno.sm_den, pheno.sm_pre, linestyle=lstyle, color=nuda.param.col[kmodel] )
128
+ else:
129
+ model_check.append(model)
130
+ axs[1].plot( pheno.sm_den, pheno.sm_pre, linestyle=lstyle, color=nuda.param.col[kmodel], label=model )
131
+ # end of param
132
+ # end of model
133
+ axs[1].errorbar( p_den, p_cen, yerr=p_std, color='k' )
134
+ axs[1].errorbar( p_den+0.005, p_pheno_cen, yerr=p_pheno_std, color='r' )
135
+ axs[1].text(0.02,40,'phenomenological models',fontsize='10')
136
+ #
137
+ #axs[1].legend(loc='upper left',fontsize='8', ncol=2)
138
+ #axs[0,1].legend(loc='upper left',fontsize='xx-small', ncol=2)
139
+ fig.legend(loc='upper left',bbox_to_anchor=(0.15,1.0),columnspacing=2,fontsize='8',ncol=5,frameon=False)
140
+ #
141
+ if pname is not None:
142
+ plt.savefig(pname, dpi=200)
143
+ plt.close()
144
+ #
@@ -1,7 +1,8 @@
1
1
 
2
2
  import numpy as np
3
+ import matplotlib as mpl
3
4
  import matplotlib.pyplot as plt
4
-
5
+ mpl.use("Agg") # Use a non-interactive backend
5
6
  import nucleardatapy as nuda
6
7
 
7
8
  def matter_setupFFGNuc_EP_fig( pname, mss = [ 1.0 ], den = np.linspace(0.01,0.35,10), kfn = np.linspace(0.5,2.0,10) ):
@@ -3,7 +3,7 @@ import matplotlib.pyplot as plt
3
3
 
4
4
  import nucleardatapy as nuda
5
5
 
6
- def matter_setupMicroEsym_fig( pname, models, band ):
6
+ def matter_setupMicroEsym_fig( pname, mbs, band ):
7
7
  """
8
8
  Plot nuclear chart (N versus Z).\
9
9
  The plot is 1x2 with:\
@@ -34,7 +34,7 @@ def matter_setupMicroEsym_fig( pname, models, band ):
34
34
  axs[0,1].set_ylim([0, 50])
35
35
  #
36
36
  axs[1,0].set_ylabel(r'$E_\mathrm{sym}/E_\mathrm{sym, FFG, NR}$')
37
- axs[1,0].set_xlabel(r'n (fm$^{-3}$)')
37
+ axs[1,0].set_xlabel(r'$n_\mathrm{nuc}$ (fm$^{-3}$)')
38
38
  axs[1,0].set_xlim([0, 0.3])
39
39
  axs[1,0].set_ylim([1, 4])
40
40
  #
@@ -42,27 +42,58 @@ def matter_setupMicroEsym_fig( pname, models, band ):
42
42
  axs[1,1].set_xlim([0.5, 2.0])
43
43
  axs[1,1].set_ylim([1, 4])
44
44
  #
45
- for ind,model in enumerate(models):
45
+ mb_check = []
46
+ #
47
+ for kmb,mb in enumerate(mbs):
46
48
  #
47
- print('in Sample: model',model)
48
- esym = nuda.matter.setupMicroEsym( model = model )
49
+ models, models_lower = nuda.matter.micro_models_mb( mb )
49
50
  #
50
- if esym.esym is not None:
51
- if '2024-BHF' in model and (ind % 4 != 0.0): continue
52
- if esym.esym_err is not None:
53
- axs[0,0].errorbar( esym.den, esym.esym, yerr=esym.esym_err, marker=esym.marker, markevery=esym.every, linestyle='none', errorevery=esym.every, label=esym.label )
54
- axs[0,1].errorbar( esym.kf, esym.esym, yerr=esym.esym_err, marker=esym.marker, markevery=esym.every, linestyle='none', errorevery=esym.every )
55
- axs[1,0].errorbar( esym.den, esym.esym/nuda.esymffg_nr(esym.kf), yerr=esym.esym_err/nuda.esymffg_nr(esym.kf), marker=esym.marker, markevery=esym.every, linestyle='none', errorevery=esym.every )
56
- axs[1,1].errorbar( esym.kf, esym.esym/nuda.esymffg_nr(esym.kf), yerr=esym.esym_err/nuda.esymffg_nr(esym.kf), marker=esym.marker, markevery=esym.every, linestyle='none', errorevery=esym.every )
51
+ for model in models:
52
+ #
53
+ print('in Sample: model',model)
54
+ #
55
+ micro = nuda.matter.setupMicroEsym( model = model )
56
+ if nuda.env.verb: micro.print_outputs( )
57
+ #
58
+ micro = nuda.matter.setupMicroEsym( model = model )
59
+ if nuda.env.verb_output: micro.print_outputs( )
60
+ #
61
+ check = nuda.matter.setupCheck( eos = micro, band = band )
62
+ #
63
+ if check.isInside:
64
+ lstyle = 'solid'
57
65
  else:
58
- axs[0,0].plot( esym.den, esym.esym, marker=esym.marker, markevery=esym.every, linestyle='none', label=esym.label )
59
- axs[0,1].plot( esym.kf, esym.esym, marker=esym.marker, markevery=esym.every, linestyle='none' )
60
- axs[1,0].plot( esym.den, esym.esym/nuda.esymffg_nr(esym.kf), marker=esym.marker, markevery=esym.every, linestyle='none' )
61
- axs[1,1].plot( esym.kf, esym.esym/nuda.esymffg_nr(esym.kf), marker=esym.marker, markevery=esym.every, linestyle='none' )
62
- if nuda.env.verb_output: esym.print_outputs( )
66
+ lstyle = 'dashed'
67
+ #
68
+ if micro.esym is not None:
69
+ #if '2024-BHF' in model and (kmb % 4 != 0.0): continue
70
+ if mb in mb_check:
71
+ if micro.esym_err is None:
72
+ axs[0,0].plot( micro.den, micro.esym, marker=micro.marker, markevery=micro.every, linestyle=lstyle, color=nuda.param.col[kmb] )
73
+ axs[0,1].plot( micro.kf, micro.esym, marker=micro.marker, markevery=micro.every, linestyle=lstyle, color=nuda.param.col[kmb] )
74
+ axs[1,0].plot( micro.den, micro.esym/nuda.esymffg_nr(micro.kf), marker=micro.marker, markevery=micro.every, linestyle=lstyle, color=nuda.param.col[kmb] )
75
+ axs[1,1].plot( micro.kf, micro.esym/nuda.esymffg_nr(micro.kf), marker=micro.marker, markevery=micro.every, linestyle=lstyle, color=nuda.param.col[kmb] )
76
+ else:
77
+ axs[0,0].errorbar( micro.den, micro.esym, yerr=micro.esym_err, marker=micro.marker, markevery=micro.every, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
78
+ axs[0,1].errorbar( micro.kf, micro.esym, yerr=micro.esym_err, marker=micro.marker, markevery=micro.every, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
79
+ axs[1,0].errorbar( micro.den, micro.esym/nuda.esymffg_nr(micro.kf), yerr=micro.esym_err/nuda.esymffg_nr(micro.kf), marker=micro.marker, markevery=micro.every, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
80
+ axs[1,1].errorbar( micro.kf, micro.esym/nuda.esymffg_nr(micro.kf), yerr=micro.esym_err/nuda.esymffg_nr(micro.kf), marker=micro.marker, markevery=micro.every, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
81
+ else:
82
+ mb_check.append(mb)
83
+ if micro.esym_err is None:
84
+ axs[0,0].plot( micro.den, micro.esym, marker=micro.marker, markevery=micro.every, linestyle=lstyle, color=nuda.param.col[kmb], label=mb )
85
+ axs[0,1].plot( micro.kf, micro.esym, marker=micro.marker, markevery=micro.every, linestyle=lstyle, color=nuda.param.col[kmb] )
86
+ axs[1,0].plot( micro.den, micro.esym/nuda.esymffg_nr(micro.kf), marker=micro.marker, markevery=micro.every, linestyle=lstyle, color=nuda.param.col[kmb] )
87
+ axs[1,1].plot( micro.kf, micro.esym/nuda.esymffg_nr(micro.kf), marker=micro.marker, markevery=micro.every, linestyle=lstyle, color=nuda.param.col[kmb] )
88
+ else:
89
+ axs[0,0].errorbar( micro.den, micro.esym, yerr=micro.esym_err, marker=micro.marker, markevery=micro.every, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb], label=mb )
90
+ axs[0,1].errorbar( micro.kf, micro.esym, yerr=micro.esym_err, marker=micro.marker, markevery=micro.every, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
91
+ axs[1,0].errorbar( micro.den, micro.esym/nuda.esymffg_nr(micro.kf), yerr=micro.esym_err/nuda.esymffg_nr(micro.kf), marker=micro.marker, markevery=micro.every, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
92
+ axs[1,1].errorbar( micro.kf, micro.esym/nuda.esymffg_nr(micro.kf), yerr=micro.esym_err/nuda.esymffg_nr(micro.kf), marker=micro.marker, markevery=micro.every, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
93
+
63
94
  #
64
- axs[0,0].plot( esym.den, nuda.esymffg_nr(esym.kf), linestyle='dashed' )
65
- axs[0,1].plot( esym.kf, nuda.esymffg_nr(esym.kf), linestyle='dashed' )
95
+ axs[0,0].plot( micro.den, nuda.esymffg_nr(micro.kf), linestyle='dotted' )
96
+ axs[0,1].plot( micro.kf, nuda.esymffg_nr(micro.kf), linestyle='dotted' )
66
97
 
67
98
  axs[0,0].fill_between( band.den, y1=(band.e2a-band.e2a_std), y2=(band.e2a+band.e2a_std), color=band.color, alpha=band.alpha, visible=True )
68
99
  axs[0,0].plot( band.den, (band.e2a-band.e2a_std), color='k', linestyle='dashed', visible=True )
@@ -50,6 +50,7 @@ def matter_setupMicro_band_fig( pname, models, den, matter ):
50
50
  #
51
51
  mic = nuda.matter.setupMicro( model = model )
52
52
  if nuda.env.verb_output: mic.print_outputs( )
53
+ #
53
54
  if mic.nm_e2a is not None:
54
55
  print('model:',model)
55
56
  if matter.lower() == 'nm':